/*
Theme Name: Porto Child 2
Theme URI: https://www.portotheme.com/wordpress/porto
Description: Porto Child Theme for CWFD
Author: CWFD
Author URI: https://cwfd.com.au/
Template: porto
Version: 1.3.5
Text Domain: porto-child-2
*/

/* =====================================================
   CWFD PREMIUM CUSTOM CSS
   Optimized for Responsiveness, Modern Typography, and Frosty Frozen Fruits B2B Branding
===================================================== */

:root{--cwfd-blue:#003e7d;--cwfd-blue-dark:#00254c;--cwfd-blue-bright:#0070f3;--cwfd-blue-light:#f0f7ff;--cwfd-accent-frost:#00b4d8;--cwfd-accent-berry:#d90429;--cwfd-ink:#0f172a;--cwfd-text:#334155;--cwfd-muted:#64748b;--cwfd-border:#e2e8f0;--cwfd-border-glow:rgba(0, 112, 243, 0.15);--cwfd-bg-soft:#f8fafc;--cwfd-bg-cream:#fffdf5;--cwfd-bg-warm:#fafaf9;--cwfd-amber:#f59e0b;--cwfd-white:#ffffff;--cwfd-container:1480px;--cwfd-radius-sm:8px;--cwfd-radius:12px;--cwfd-radius-lg:20px;--cwfd-radius-pill:9999px;--cwfd-shadow-sm:0 4px 12px rgba(0, 0, 0, 0.03);--cwfd-shadow-md:0 10px 25px -5px rgba(0, 62, 125, 0.08), 0 8px 16px -6px rgba(0, 62, 125, 0.05);--cwfd-shadow-lg:0 20px 35px -10px rgba(0, 62, 125, 0.12), 0 10px 20px -8px rgba(0, 62, 125, 0.06);--cwfd-shadow-cta:0 10px 20px rgba(0, 62, 125, 0.22);--cwfd-shadow-cta-hover:0 15px 30px rgba(0, 62, 125, 0.32);--cwfd-grad-cta:linear-gradient(135deg, var(--cwfd-blue-bright) 0%, var(--cwfd-blue) 100%);--cwfd-grad-cta-hover:linear-gradient(135deg, #0080ff 0%, var(--cwfd-blue-dark) 100%);--cwfd-grad-soft:linear-gradient(180deg, var(--cwfd-bg-soft) 0%, #ffffff 100%);--cwfd-grad-frost:linear-gradient(135deg, rgba(240, 247, 255, 0.85) 0%, rgba(255, 255, 255, 0.95) 100%);--cwfd-ease:cubic-bezier(0.16, 1, 0.3, 1);--cwfd-trans-fast:0.2s var(--cwfd-ease);--cwfd-trans-base:0.35s var(--cwfd-ease);--cwfd-font:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--cwfd-font-headings:"Outfit", var(--cwfd-font);--cwfd-input-h:48px;--cwfd-tap:44px;--cwfd-bottom-nav-h:70px;--cwfd-safe-bottom:env(safe-area-inset-bottom, 0px);--cwfd-page-gutter:32px;--cwfd-page-gutter-tablet:20px;--cwfd-page-gutter-mobile:14px;--cwfd-banner-height:460px;--cwfd-banner-height-tablet:340px;--cwfd-banner-height-mobile:220px;--cwfd-pad-y:clamp(40px, 5.5vw, 72px);--cwfd-grid-gap:clamp(16px, 2.2vw, 24px);--cwfd-fs-h2:clamp(20px, 2.5vw, 26px);--cwfd-fs-eyebrow:11px;--cwfd-fs-lead:14px}html{max-width:100%;overflow-x:hidden;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{max-width:100%;overflow-x:hidden;background:var(--cwfd-bg-soft);color:var(--cwfd-text);font-family:var(--cwfd-font)!important;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body *,body *::before,body *::after{box-sizing:border-box}h1,h2,h3,h4{font-family:var(--cwfd-font-headings)!important;color:var(--cwfd-blue);font-weight:700;letter-spacing:-.02em}p,input,select,textarea,button{font-family:var(--cwfd-font)!important}img,iframe,svg{max-width:100%;height:auto;vertical-align:middle}a{color:var(--cwfd-blue-bright);transition:color var(--cwfd-trans-fast)}a:hover{color:var(--cwfd-blue-dark)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.button:focus-visible,.btn:focus-visible{outline:3px solid rgb(0 112 243 / .4);outline-offset:2px}:is(.container,.container-fluid,.row){max-width:100%}table{max-width:100%;border-collapse:collapse}:is(.mini-cart-counter,.header-contact .minicart-icon .cart-items,#header .mini-cart .cart-items,.cart-qty){min-width:20px!important;height:20px!important;color:#fff!important;font-size:10px!important;font-weight:700!important;line-height:18px!important;background:var(--cwfd-grad-cta)!important;border:1px solid #fff!important;border-radius:50%!important;box-shadow:0 3px 8px rgb(0 62 125 / .3)!important}:is(.minicart-icon,.porto-icon-shopping-cart,.porto-icon-user-2,.porto-icon-wishlist-2){color:var(--cwfd-blue)!important;font-size:clamp(22px, 2.2vw, 26px)!important;transition:transform var(--cwfd-trans-fast)}:is(.minicart-icon,.porto-icon-shopping-cart,.porto-icon-user-2,.porto-icon-wishlist-2):hover{transform:translateY(-2px)}#header .searchform button.btn-special{color:#fff!important;background:var(--cwfd-grad-cta)!important;border-radius:0 var(--cwfd-radius-sm) var(--cwfd-radius-sm) 0!important;transition:background var(--cwfd-trans-fast),box-shadow var(--cwfd-trans-fast)}#header .searchform button.btn-special:hover{background:var(--cwfd-blue-dark)!important;box-shadow:inset 0 0 100px rgb(0 0 0 / .1)!important}#header .main-menu{margin:0!important}.cwfd-section{width:100%!important;max-width:100%!important;margin:0!important;padding:var(--cwfd-pad-y) 0!important;color:var(--cwfd-text);background:var(--cwfd-grad-soft);position:relative;overflow:hidden}.cwfd-section--cream{background:var(--cwfd-bg-cream)}.cwfd-section--warm{background:var(--cwfd-bg-warm)}.cwfd-section--white{background:#fff}.cwfd-section--soft{background:var(--cwfd-bg-soft)}.cwfd-section__inner,.cwfd-footer__inner,.cwfd-footer__trust,.cwfd-footer__bottom,.cwfd-slider,.cwfd-slider-wrap{box-sizing:border-box;width:min(calc(100% - (var(--cwfd-page-gutter) * 2)), var(--cwfd-container))!important;max-width:var(--cwfd-container)!important;margin-left:auto!important;margin-right:auto!important;padding-left:0!important;padding-right:0!important}:is(.cwfd-section.vc_row,.cwfd-section.row,.cwfd-section.wpb_row){max-width:100%!important}:is(.cwfd-section.vc_column_container,.cwfd-section.wpb_column,.cwfd-section[class*="col-"]){min-width:0!important}.cwfd-section-head{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;width:100%;margin:0 0 clamp(20px, 3vw, 32px);overflow:visible}.cwfd-section-head>:is(.cwfd-section-title,.cwfd-section-head__title,h1,h2,h3,h4){flex:1 1 auto;min-width:0}.cwfd-section-head>:is(.cwfd-btn,.button,.btn,a.button,a.btn){flex:0 0 auto;margin-left:auto}.cwfd-section .cwfd-section-head+*{margin-top:clamp(16px, 2.5vw, 24px)}.cwfd-section-title,.cwfd-section-title:is(h1,h2,h3,h4){text-align:left!important;background:none!important;border:0!important;padding:0!important}.cwfd-section-title:is(h1,h2,h3,h4)::before,.cwfd-section-title:is(h1,h2,h3,h4)::after,.cwfd-section-title:is(.porto-heading-line,.vc_sep_holder){display:none!important;content:none!important}.cwfd-section-title{position:relative;display:flex;align-items:center;min-width:0;margin:0;color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:var(--cwfd-fs-h2)!important;font-weight:800!important;line-height:1.25!important;letter-spacing:-0.01em!important;text-transform:none!important}.cwfd-section-title::before{display:inline-block;flex:0 0 5px;width:5px;height:1.25em;margin-right:14px;content:"";background:var(--cwfd-grad-cta);border-radius:4px}.cwfd-section-intro{max-width:720px;margin:0 auto clamp(32px, 4vw, 48px);text-align:center}.cwfd-section-intro__eyebrow{display:inline-block;padding:6px 14px;margin-bottom:12px;color:var(--cwfd-blue);font-size:var(--cwfd-fs-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;background:var(--cwfd-blue-light);border-radius:var(--cwfd-radius-pill)}.cwfd-section-intro__title{margin:0;color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:var(--cwfd-fs-h2)!important;font-weight:800!important;line-height:1.25!important}.cwfd-section-intro__lead{margin:12px 0 0;color:var(--cwfd-text);font-size:var(--cwfd-fs-lead);line-height:1.6;opacity:.9}.cwfd-section-intro__lead strong{color:var(--cwfd-ink)}.cwfd-btn,.cwfd-cat-card__cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 24px;color:#ffffff!important;font-family:var(--cwfd-font)!important;font-size:13px;font-weight:700;line-height:1.2;letter-spacing:.02em;text-align:center;text-decoration:none!important;white-space:nowrap;cursor:pointer;background:var(--cwfd-grad-cta);border:0;border-radius:var(--cwfd-radius-pill);box-shadow:var(--cwfd-shadow-sm);transition:all 0.3s var(--cwfd-ease)}.cwfd-btn:hover,.cwfd-cat-card:hover .cwfd-cat-card__cta{color:#ffffff!important;background:var(--cwfd-grad-cta-hover);box-shadow:var(--cwfd-shadow-md);transform:translateY(-2px)}.cwfd-btn--ghost{padding:8px 22px;color:var(--cwfd-blue)!important;background:#fff0;border:2px solid var(--cwfd-blue);box-shadow:none}.cwfd-btn--ghost:hover{color:#ffffff!important;background:var(--cwfd-blue);border-color:var(--cwfd-blue)}.cwfd-cat-card,.cwfd-testimonial,.cwfd-blog-card,.cwfd-blog.post,.cwfd-blog.post-item,article.cwfd-blog.post,.cwfd-blog .vc_grid-item-mini_inner{position:relative;display:flex;overflow:hidden;flex-direction:column;color:inherit;text-decoration:none;background:#fff;border:1px solid rgb(0 62 125 / .06);border-radius:var(--cwfd-radius-lg);box-shadow:var(--cwfd-shadow-sm);transition:transform 0.4s var(--cwfd-ease),box-shadow 0.4s var(--cwfd-ease),border-color 0.4s var(--cwfd-ease)}.cwfd-cat-card:hover,.cwfd-testimonial:hover,.cwfd-blog-card:hover,.cwfd-blog.post:hover,.cwfd-blog.post-item:hover,article.cwfd-blog.post:hover,.cwfd-blog .vc_grid-item-mini_inner:hover{border-color:var(--cwfd-border-glow);box-shadow:var(--cwfd-shadow-lg);transform:translateY(-6px)}.cwfd-section ul.products,.cwfd-section .products{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--cwfd-grid-gap)!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}.cwfd-promotions ul.products,.cwfd-promotions .products,.cwfd-featured ul.products,.cwfd-featured .products{grid-template-columns:repeat(4,minmax(0,1fr))!important}.cwfd-promotions ul.products li.product .product-image,.cwfd-promotions ul.products li.product .thumb-info-wrapper,.cwfd-featured ul.products li.product .product-image,.cwfd-featured ul.products li.product .thumb-info-wrapper{height:220px!important}.cwfd-promotions ul.products li.product .product-image img,.cwfd-promotions ul.products li.product .thumb-info-wrapper img,.cwfd-featured ul.products li.product .product-image img,.cwfd-featured ul.products li.product .thumb-info-wrapper img{max-height:200px!important}.cwfd-section ul.products::before,.cwfd-section ul.products::after{display:none!important;content:none!important}.cwfd-section ul.products li.product,.cwfd-section ul.products li.product-category{float:none!important;width:auto!important;max-width:100%!important;min-width:0!important;margin:0!important;padding:0!important}:is(.porto-product-category,.products .product-category .thumb-info,.porto-product-category .thumb-info-wrapper,.products .product-category .thumb-info-wrapper){display:flex!important;overflow:hidden!important;flex-direction:column!important;align-items:center!important;width:100%!important;height:100%!important;padding:24px 20px!important;background:#ffffff!important;border:1px solid rgb(0 62 125 / .06)!important;border-radius:var(--cwfd-radius-lg)!important;box-shadow:none!important;transition:transform 0.4s var(--cwfd-ease),border-color 0.4s var(--cwfd-ease)!important}.thumb-info-wrapper::after{display:none!important}:is(.products .product-category .thumb-info-title,.thumb-info-title){position:relative!important;inset:auto!important;width:100%!important;padding:12px 0 0!important;text-align:center!important;background:transparent!important;transform:none!important}:is(.porto-product-category,.products .product-category) img{display:block!important;width:auto!important;max-width:100%!important;max-height:160px!important;margin:0 auto 12px!important;object-fit:contain!important;transition:transform 0.5s var(--cwfd-ease)}:is(.porto-product-category,.products .product-category) h3{min-height:44px;margin:8px 0!important;overflow:visible!important;color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:clamp(14px, 1.4vw, 16px)!important;font-weight:700!important;line-height:1.3!important;text-align:center!important;text-transform:uppercase!important;letter-spacing:0.02em!important;white-space:normal!important}:is(.porto-product-category .count,.products .product-category .thumb-info-type){position:relative!important;display:inline-block!important;padding:6px 14px!important;color:var(--cwfd-blue)!important;font-size:11px!important;font-weight:700!important;background:var(--cwfd-blue-light)!important;border-radius:var(--cwfd-radius-pill)!important;opacity:1!important}:is(.porto-product-category,.products .product-category .thumb-info):hover{border-color:var(--cwfd-border-glow)!important;box-shadow:none!important;transform:translateY(-6px)!important}:is(.porto-product-category,.products .product-category .thumb-info):hover img{transform:scale(1.06) rotate(1deg)}.vc_grid-item{overflow:hidden;background:#fff;border:1px solid rgb(0 62 125 / .05)!important;border-radius:var(--cwfd-radius-lg)!important;box-shadow:var(--cwfd-shadow-sm)!important;transition:transform 0.4s var(--cwfd-ease),box-shadow 0.4s var(--cwfd-ease)!important}.vc_grid-item:hover{box-shadow:var(--cwfd-shadow-lg)!important;transform:translateY(-8px)}:is(.vc_gitem-animated-block,.vc_gitem-zone-img,.products li.product .thumb-info-wrapper){background:#ffffff!important}.vc_gitem-animated-block{display:flex!important;align-items:center!important;justify-content:center;height:230px!important;padding:16px!important}:is(.woocommerce-loop-product__title,.product-title,.vc_grid-item h4){display:block!important;min-height:44px;height:auto!important;overflow:visible!important;line-height:1.4!important;white-space:normal!important;-webkit-line-clamp:initial!important}.products .price{font-size:16px!important;font-weight:700!important}.cwfd-section ul.products li.product,body.home ul.products li.product{position:relative!important;display:flex!important;flex-direction:column!important;height:100%!important;padding:16px 14px 14px!important;background:#ffffff!important;border:1px solid rgb(0 62 125 / .06)!important;border-radius:var(--cwfd-radius-lg)!important;box-shadow:none!important;transition:transform 0.35s var(--cwfd-ease),border-color 0.35s var(--cwfd-ease)!important}.cwfd-section ul.products li.product:hover,body.home ul.products li.product:hover{border-color:rgb(0 112 243 / .18)!important;transform:translateY(-4px)!important}.cwfd-section ul.products li.product .product-inner,body.home ul.products li.product .product-inner{display:flex!important;flex-direction:column!important;flex-grow:1!important;width:100%!important}.cwfd-section ul.products li.product .product-image,.cwfd-section ul.products li.product .thumb-info-wrapper,body.home ul.products li.product .product-image,body.home ul.products li.product .thumb-info-wrapper{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:180px!important;margin:0 0 12px!important;padding:0!important;background:transparent!important;border-radius:var(--cwfd-radius)!important;overflow:hidden!important}.cwfd-section ul.products li.product .product-image img,.cwfd-section ul.products li.product .thumb-info-wrapper img,body.home ul.products li.product .product-image img,body.home ul.products li.product .thumb-info-wrapper img{width:auto!important;max-width:100%!important;height:auto!important;max-height:160px!important;object-fit:contain!important}.cwfd-section ul.products li.product .woocommerce-loop-product__title,.cwfd-section ul.products li.product .product-title,body.home ul.products li.product .woocommerce-loop-product__title,body.home ul.products li.product .product-title{display:-webkit-box!important;min-height:42px!important;margin:6px 0 4px!important;text-align:center!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;overflow:hidden!important}.cwfd-section ul.products li.product .price,body.home ul.products li.product .price{margin:4px 0 14px!important;text-align:center!important}.cwfd-section ul.products li.product .onsale,body.home ul.products li.product .onsale{position:absolute!important;top:12px!important;left:12px!important;z-index:2!important;padding:4px 10px!important;color:#fff!important;font-size:11px!important;font-weight:800!important;line-height:1.2!important;background:var(--cwfd-accent-berry)!important;border-radius:var(--cwfd-radius-pill)!important;box-shadow:0 2px 8px rgb(217 4 41 / .2)}.cwfd-section ul.products li.product .yith-wcwl-add-to-wishlist,body.home ul.products li.product .yith-wcwl-add-to-wishlist{position:absolute!important;top:12px!important;right:12px!important;z-index:2!important}.cwfd-section ul.products li.product .quantity-button-row,body.home ul.products li.product .quantity-button-row{display:flex!important;align-items:stretch!important;gap:0!important;margin-top:auto!important;overflow:hidden!important;background:#ffffff!important;border:1px solid rgb(0 62 125 / .1)!important;border-radius:8px!important}.cwfd-section ul.products li.product .quantity,body.home ul.products li.product .quantity{flex:0 0 auto!important;margin:0!important;border:0!important;border-right:1px solid rgb(0 62 125 / .1)!important;border-radius:0!important}.cwfd-section ul.products li.product .add_to_cart_button,.cwfd-section ul.products li.product a.ezq-add-cart,body.home ul.products li.product .add_to_cart_button,body.home ul.products li.product a.ezq-add-cart{flex:1 1 auto!important;border-radius:0 var(--cwfd-radius-sm) var(--cwfd-radius-sm) 0!important}.cwfd-section ul.products li.product.sale,body.home ul.products li.product.sale{background:linear-gradient(180deg,#fff5f6 0%,#ffffff 60%)!important;border-color:rgb(217 4 41 / .12)!important}.cwfd-slider,.cwfd-slider-wrap{overflow:hidden!important;border-radius:var(--cwfd-radius-lg)!important;box-shadow:var(--cwfd-shadow-md)!important}.cwfd-slider__viewport,.cwfd-slide,.cwfd-slide__image-wrap,.cwfd-slide__media{min-height:var(--cwfd-banner-height)!important}.cwfd-slide-image,.cwfd-slider img{width:100%!important;height:var(--cwfd-banner-height)!important;max-height:var(--cwfd-banner-height)!important;object-fit:cover!important;object-position:center center!important}.cwfd-testimonial__name{color:var(--cwfd-blue);font-family:var(--cwfd-font-headings);font-weight:700}.cwfd-testimonials__cta{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.cwfd-categories__grid,.cwfd-testimonials__grid,.cwfd-blog-grid{width:100%!important;max-width:100%!important;margin-left:0!important;margin-right:0!important}.cwfd-categories__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--cwfd-grid-gap)}.cwfd-cat-card__media{position:relative;overflow:hidden;aspect-ratio:1 / 1;background:#fff}.cwfd-cat-card__media img{width:100%;height:100%;padding:20px;object-fit:contain;transition:transform 0.6s var(--cwfd-ease)}.cwfd-cat-card:hover .cwfd-cat-card__media img{transform:scale(1.07)}.cwfd-cat-card__ribbon{position:absolute;top:14px;left:-46px;z-index:2;display:flex;flex-direction:column;width:160px;padding:6px 0;color:#fff;line-height:1.1;text-align:center;background:var(--cwfd-grad-cta);box-shadow:0 4px 10px rgb(0 62 125 / .2);transform:rotate(-45deg)}.cwfd-cat-card__ribbon small{font-size:8px;letter-spacing:.18em;text-transform:uppercase;opacity:.85}.cwfd-cat-card__ribbon strong{font-size:12px;font-weight:700;letter-spacing:.04em}.cwfd-cat-card__body{display:flex;flex-direction:column;flex-grow:1;padding:24px 20px;text-align:center}.cwfd-cat-card__title{position:relative;padding-bottom:12px;margin:0 0 10px;color:var(--cwfd-blue);font-family:var(--cwfd-font-headings);font-size:16px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.cwfd-cat-card__title::after{position:absolute;bottom:0;left:50%;width:40px;height:2px;content:"";background:var(--cwfd-blue-bright);border-radius:2px;transform:translateX(-50%)}.cwfd-cat-card__desc{flex-grow:1;margin:12px 0 20px;color:var(--cwfd-text);font-size:13px;line-height:1.6;opacity:.9}.cwfd-cat-card__cta{align-self:center}.cwfd-cat-card__cta svg{width:14px;height:14px;transition:transform var(--cwfd-trans-fast)}.cwfd-cat-card:hover .cwfd-cat-card__cta svg{transform:translateX(4px)}.cwfd-testimonials__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--cwfd-grid-gap)}.cwfd-testimonial{padding:32px 24px 24px}.cwfd-testimonial::before{position:absolute;top:-6px;left:20px;color:var(--cwfd-blue-bright);font-family:Georgia,serif;font-size:90px;line-height:1;content:"\201C";opacity:.1;pointer-events:none}.cwfd-testimonial--featured{background:linear-gradient(180deg,#ffffff 0%,var(--cwfd-blue-light) 100%);border-color:var(--cwfd-blue-bright)}.cwfd-testimonial__badge{position:absolute;top:16px;right:16px;padding:4px 10px;color:#fff;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--cwfd-blue-bright);border-radius:var(--cwfd-radius-pill)}.cwfd-testimonial__rating{margin-bottom:14px;color:var(--cwfd-amber);font-size:14px;letter-spacing:3px}.cwfd-testimonial__quote{flex-grow:1;padding:0;margin:0 0 20px;color:var(--cwfd-ink);font-size:13.5px;font-style:normal;line-height:1.65;border:0;opacity:.9;quotes:none}.cwfd-testimonial__meta{display:flex;align-items:center;gap:12px;padding-top:16px;border-top:1px solid var(--cwfd-border)}.cwfd-testimonial__avatar{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:40px;height:40px;color:#fff;font-size:12px;font-weight:700;background:var(--cwfd-grad-cta);border-radius:50%;box-shadow:0 2px 8px rgb(0 62 125 / .2)}.cwfd-testimonial__person{display:flex;flex-direction:column;line-height:1.35}.cwfd-testimonial__name{font-size:13.5px;font-style:normal}.cwfd-testimonial__role{margin-top:2px;color:var(--cwfd-muted);font-size:11.5px}.cwfd-testimonials__cta{margin-top:clamp(32px, 4.5vw, 48px)}.cwfd-blog-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--cwfd-grid-gap)}.cwfd-blog-card{min-width:0}.cwfd-blog-card__media,.cwfd-blog:is(.post-image,.post-thumbnail,.vc_gitem-zone-img){display:block;position:relative;overflow:hidden;aspect-ratio:16 / 10;margin:0!important;background:#eef3f8;border-radius:0!important}.cwfd-blog-card__media img,.cwfd-blog:is(.post-image,.post-thumbnail,.vc_gitem-zone-img) img{display:block;width:100%!important;height:100%!important;object-fit:cover!important;border-radius:0!important;transition:transform 0.5s var(--cwfd-ease)}.cwfd-blog-card:hover .cwfd-blog-card__media img,.cwfd-blog.post:hover:is(.post-image,.post-thumbnail) img{transform:scale(1.06)}.cwfd-blog-card__placeholder{display:grid;place-items:center;width:100%;height:100%;color:var(--cwfd-blue);font-size:42px;font-weight:800;background:var(--cwfd-blue-light)}.cwfd-blog-card__body,.cwfd-blog:is(.post-content,.post-body,.post-summary,.vc_gitem-zone-mini){display:flex;flex-direction:column;flex-grow:1;padding:20px 20px 22px!important}.cwfd-blog-card__meta,.cwfd-blog:is(.post-meta,.post-date,.post-categories){margin:0 0 10px!important;color:var(--cwfd-blue-bright)!important;font-size:11px!important;font-weight:700;letter-spacing:.08em;line-height:1.3;text-transform:uppercase}.cwfd-blog-card__title,.cwfd-blog:is(.post-title,.entry-title,h2.post-title,h3.post-title,.vc_gitem-post-data-source-post_title){display:-webkit-box;margin:0 0 10px!important;overflow:hidden;color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:16px!important;font-weight:700!important;line-height:1.4!important;letter-spacing:0!important;text-transform:none!important;-webkit-box-orient:vertical;-webkit-line-clamp:3}.cwfd-blog-card__title a,.cwfd-blog:is(.post-title,.entry-title) a{color:inherit!important;text-decoration:none}.cwfd-blog-card__title a:hover,.cwfd-blog:is(.post-title,.entry-title) a:hover{color:var(--cwfd-blue-bright)!important}.cwfd-blog-card__excerpt,.cwfd-blog:is(.post-excerpt,.entry-summary,.post-summary p){display:-webkit-box;flex-grow:1;margin:0 0 16px!important;overflow:hidden;color:var(--cwfd-text)!important;font-size:13px!important;line-height:1.6!important;opacity:.95;-webkit-box-orient:vertical;-webkit-line-clamp:3}.cwfd-blog-card__link,.cwfd-blog:is(a.btn-link){display:inline-flex;align-items:center;align-self:flex-start;gap:6px;padding:0!important;margin-top:auto;color:var(--cwfd-blue)!important;font-size:12px!important;font-weight:800!important;letter-spacing:.06em;text-decoration:none!important;text-transform:uppercase;background:transparent!important;border:0!important;transition:all var(--cwfd-trans-fast)}.cwfd-blog-card__link::after{content:"→";font-weight:400;transition:transform var(--cwfd-trans-fast)}.cwfd-blog-card__link:hover{color:var(--cwfd-blue-bright)!important}.cwfd-blog-card__link:hover::after{transform:translateX(4px)}.cwfd-blog:is(.post-comments,.post-author-avatar){display:none!important}.cwfd-section-head--center{justify-content:center;text-align:center}.cwfd-section-head--center .cwfd-section-title{flex:0 1 auto}.cwfd-porto-gallery-wrap{overflow:hidden;padding:8px 0}.cwfd-porto-gallery-wrap .vc_single_image-wrapper{display:flex!important;align-items:center!important;justify-content:center!important;min-height:104px;padding:24px 32px!important;background:#fff;border:1px solid rgb(0 62 125 / .05);border-radius:var(--cwfd-radius-lg);box-shadow:var(--cwfd-shadow-sm);transition:transform var(--cwfd-trans-base),box-shadow var(--cwfd-trans-base),border-color var(--cwfd-trans-base)}.cwfd-porto-gallery-wrap .vc_single_image-wrapper:hover{border-color:var(--cwfd-border-glow);box-shadow:var(--cwfd-shadow-lg);transform:translateY(-4px)}.cwfd-porto-gallery-wrap img{display:block!important;width:auto!important;max-width:180px!important;max-height:58px!important;object-fit:contain!important;filter:grayscale(100%);opacity:.65;transition:all var(--cwfd-trans-base)}.cwfd-porto-gallery-wrap .vc_single_image-wrapper:hover img{filter:grayscale(0);opacity:1;transform:scale(1.05)}.cwfd-porto-gallery-wrap:is(.porto-image-gallery,.porto-carousel,.owl-carousel,.owl-stage-outer){width:100%}.cwfd-porto-gallery-wrap:is(.owl-stage,.porto-carousel){display:flex;align-items:center}.cwfd-porto-gallery-wrap:is(.porto-carousel-item,.owl-item,.wpb_single_image,.vc_single_image-wrapper){display:flex!important;align-items:center!important;justify-content:center!important}.cwfd-porto-gallery-wrap:is(.owl-nav button,.owl-prev,.owl-next){color:var(--cwfd-blue)!important}.cwfd-porto-gallery-wrap:is(.owl-dots .owl-dot.active span){background:var(--cwfd-blue)!important}.cwfd-footer{--footer-bg:var(--cwfd-blue);--footer-bg-dark:var(--cwfd-blue-dark);--footer-accent:var(--cwfd-amber);--footer-text:#ffffff;--footer-soft:rgba(255, 255, 255, 0.8);--footer-muted:rgba(255, 255, 255, 0.55);--footer-border:rgba(255, 255, 255, 0.12);position:relative;overflow:hidden;color:var(--footer-text);background:linear-gradient(180deg,var(--footer-bg-dark) 0%,var(--footer-bg) 100%)}.cwfd-footer::before{position:absolute;top:0;right:0;left:0;height:4px;content:"";background:linear-gradient(90deg,transparent,var(--footer-accent),transparent)}.cwfd-footer *{box-sizing:border-box}.cwfd-footer__inner{padding:clamp(48px, 6vw, 80px) 0 36px}.cwfd-footer__grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.35fr);gap:clamp(24px, 4vw, 48px);align-items:start}.cwfd-footer a{transition:all var(--cwfd-trans-fast)}.cwfd-footer__bottom a:hover{color:var(--footer-accent)}.cwfd-footer h3{position:relative;padding-bottom:12px;margin:0 0 20px;color:var(--footer-accent);font-family:var(--cwfd-font-headings)!important;font-size:12px;font-weight:800;line-height:1.25;letter-spacing:.15em;text-transform:uppercase}.cwfd-footer h3::after{position:absolute;bottom:0;left:0;width:32px;height:2px;content:"";background:var(--footer-accent);border-radius:2px}.cwfd-footer .wpforms-container{max-width:100%!important;margin:0!important}.cwfd-footer .wpforms-field{padding:0 0 12px!important}.cwfd-footer .wpforms-field input,.cwfd-footer .wpforms-field textarea{width:100%!important;min-height:46px!important;padding:12px 14px!important;color:#ffffff!important;font-size:14px!important;background:rgb(0 0 0 / .25)!important;border:1px solid var(--footer-border)!important;border-radius:10px!important;box-shadow:none!important;transition:all 0.3s var(--cwfd-ease)}.cwfd-footer .wpforms-field input:focus,.cwfd-footer .wpforms-field textarea:focus{background:rgb(0 0 0 / .35)!important;border-color:var(--footer-accent)!important;outline:none!important;box-shadow:0 0 0 3px rgb(245 158 11 / .2)!important}.cwfd-footer .wpforms-field input::placeholder,.cwfd-footer .wpforms-field textarea::placeholder{color:var(--footer-muted)!important}.cwfd-footer .wpforms-submit-container{padding:0!important;margin:0!important}.cwfd-footer .wpforms-submit{width:100%!important;min-height:46px!important;padding:12px 20px!important;color:var(--footer-bg-dark)!important;font-weight:800!important;font-size:14px!important;letter-spacing:0.05em!important;text-transform:uppercase!important;background:var(--footer-accent)!important;border:0!important;border-radius:10px!important;cursor:pointer!important;transition:all 0.3s var(--cwfd-ease)!important}.cwfd-footer .wpforms-submit:hover{background:#ffffff!important;color:var(--cwfd-blue-dark)!important;box-shadow:0 4px 15px rgb(255 255 255 / .2)!important}.cwfd-footer__trust{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 28px;padding:20px 0;border-top:1px solid var(--footer-border)}.cwfd-footer__trust span{color:var(--footer-soft);font-size:12.5px;font-weight:700}.cwfd-footer__bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:20px 0;color:var(--footer-muted);font-size:12.5px;border-top:1px solid var(--footer-border)}.cwfd-footer__bottom p{margin:0;color:var(--footer-muted)}.cwfd-footer__bottom nav{display:flex;flex-wrap:wrap;gap:20px}.cwfd-footer__bottom a{color:var(--footer-soft);text-decoration:none}a.ezq-add-cart.button{display:block!important;flex:1 1 auto!important;height:38px!important;padding:0 14px!important;margin:0!important;color:#ffffff!important;font-size:13px!important;font-weight:700!important;line-height:36px!important;text-align:center!important;text-transform:uppercase;background:var(--cwfd-blue)!important;border:1px solid var(--cwfd-blue)!important;border-radius:0 var(--cwfd-radius-sm) var(--cwfd-radius-sm) 0!important;transition:all var(--cwfd-trans-fast)}a.ezq-add-cart.button:hover{background:var(--cwfd-blue-dark)!important;border-color:var(--cwfd-blue-dark)!important}:is(.woocommerce-checkout #place_order,.woocommerce-page #place_order,.wc-proceed-to-checkout a.checkout-button,a.checkout-button.button.alt.wc-forward,.checkout-button){position:relative!important;inset:auto!important;z-index:5!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:10px;width:100%!important;max-width:100%!important;min-height:58px!important;height:auto!important;padding:16px 28px!important;margin:16px 0 12px!important;overflow:visible!important;clip:auto!important;color:#ffffff!important;font-family:var(--cwfd-font-headings)!important;font-size:clamp(14px, 1.6vw, 17px)!important;font-weight:800!important;line-height:1.2!important;letter-spacing:0.05em!important;text-align:center!important;text-decoration:none!important;text-transform:uppercase!important;cursor:pointer!important;visibility:visible!important;pointer-events:auto!important;background:var(--cwfd-grad-cta)!important;border:0!important;border-radius:var(--cwfd-radius)!important;box-shadow:var(--cwfd-shadow-cta)!important;opacity:1!important;transform:none!important;clip-path:none!important;appearance:none!important;-webkit-appearance:none!important;touch-action:manipulation;transition:transform var(--cwfd-trans-fast),box-shadow var(--cwfd-trans-fast),background 0.25s var(--cwfd-ease)!important}:is(.wc-proceed-to-checkout a.checkout-button,a.checkout-button.button.alt.wc-forward,.checkout-button):hover{background:var(--cwfd-grad-cta-hover)!important;box-shadow:var(--cwfd-shadow-cta-hover)!important;transform:translateY(-2px)!important}:is(.checkout-button):active{transform:translateY(0) scale(.99)!important}.wc-proceed-to-checkout,.wc-proceed-to-checkout.sticky-checkout-bottom,.sticky-checkout-bottom,div.sticky-checkout-bottom,.form-row.place-order.sticky-checkout-bottom,.place-order.sticky-checkout-bottom{position:relative!important;inset:auto!important;z-index:5!important;display:block!important;width:100%!important;max-width:100%!important;padding:0!important;margin:16px 0 0!important;clip:auto!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;visibility:visible!important;pointer-events:auto!important;opacity:1!important;transform:none!important;clip-path:none!important}:is(.add_to_cart_button,.product_type_simple,.single_add_to_cart_button,.product-inner .button,form.cart .single_add_to_cart_button){display:inline-flex!important;align-items:center;justify-content:center;min-height:var(--cwfd-tap);line-height:1.2!important;text-align:center;white-space:normal;cursor:pointer!important;border-radius:var(--cwfd-radius-sm)!important;touch-action:manipulation}body.woocommerce-checkout:not(.woocommerce-order-received):is(#payment,.woocommerce-checkout-payment,.woocommerce-checkout-review-order,#order_review,.sticky-checkout-bottom),body.woocommerce-cart:is(.cart-collaterals,.cart_totals,.wc-proceed-to-checkout,.sticky-checkout-bottom),body.woocommerce-account:is(#b2bking_myaccount_bulkorder_container,.b2bking_bulkorder_form_container,.b2bking_bulkorder_form_container_content,.b2bking_bulkorder_form_container_bottom,.b2bking_bulkorder_form_container_bottom_indigo,.b2bking_bulkorder_form_container_bottom_cream){overflow:visible!important;visibility:visible!important;opacity:1!important}.cwfd-slide__panel{width:min(25em, 92%)!important}.page-id-7926:is(.woocommerce-ordering,.woocommerce-viewing){margin-bottom:18px}:is(input#b2bking_field_7120,.page-top ul.breadcrumb){display:none}.cwfd-cat-banner-active:is(.main-content,.page-content,.porto-page-content,#content,#main){padding-top:0!important}.woocommerce-loop-product__title,.woocommerce-loop-product__title a,.products .product .woocommerce-loop-product__title,.products li.product .product-title,.products li.product .product-title a,.products li.product h2,.products li.product h2 a,.products li.product h3,.products li.product h3 a,.products li.product .name,.products li.product .name a,.product-name,.product-name a,.product-inner .product-title,.product-inner .product-title a,.vc_grid-item h4,.vc_grid-item h4 a,.vc_grid-item .vc_gitem-post-data-source-post_title,.vc_grid-item .vc_gitem-post-data-source-post_title a,.related .product-title,.related .product-title a,.upsells .product-title,.upsells .product-title a,.cross-sells .product-title,.cross-sells .product-title a,.widget_shopping_cart_content .mini_cart_item a:not(.remove),.widget_shopping_cart_content .product_list_widget a:not(.remove),.cart_list a:not(.remove),.product_list_widget a:not(.remove),.cart_item .product-name,.cart_item .product-name a,.shop_table .product-name,.shop_table .product-name a,.woocommerce-mini-cart__item,.woocommerce-mini-cart__item a,.search-results .product-title,.search-results .product-title a,.search-results .woocommerce-loop-product__title,.search-results .woocommerce-loop-product__title a{color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:15px!important;font-weight:600!important;line-height:1.4!important;letter-spacing:0!important;text-transform:none!important;text-decoration:none!important}body:not(.single-product) .product_title{color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:clamp(28px, 3.4vw, 44px)!important;font-weight:800!important;line-height:1.2!important;letter-spacing:-0.01em!important;text-transform:none!important;margin:0 0 16px!important}.woocommerce-loop-product__title a:hover,.products li.product .product-title a:hover,.products li.product h2 a:hover,.products li.product h3 a:hover,.product-name a:hover,.product-inner .product-title a:hover,.vc_grid-item h4 a:hover,.vc_grid-item .vc_gitem-post-data-source-post_title a:hover,.related .product-title a:hover,.upsells .product-title a:hover,.cross-sells .product-title a:hover,.widget_shopping_cart_content .mini_cart_item a:not(.remove):hover,.widget_shopping_cart_content .product_list_widget a:not(.remove):hover,.cart_list a:not(.remove):hover,.product_list_widget a:not(.remove):hover,.cart_item .product-name a:hover,.shop_table .product-name a:hover,.woocommerce-mini-cart__item a:hover,.search-results .product-title a:hover{color:var(--cwfd-blue-bright)!important}.cwfd-pc-grid ul.products{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:clamp(34px, 3.5vw, 52px) clamp(28px, 3.5vw, 52px)!important;justify-items:center!important;align-items:start!important;margin:0!important;padding:8px 0 4px!important;list-style:none!important}.cwfd-pc-grid ul.products::before,.cwfd-pc-grid ul.products::after{display:none!important;content:none!important}.cwfd-pc-grid ul.products li.product-category{width:100%!important;max-width:180px!important;margin:0!important;padding:0!important;float:none!important;list-style:none!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category .thumb-info,.porto-product-category .thumb-info-wrapper,.products .product-category .thumb-info-wrapper){display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;width:100%!important;padding:0!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}.cwfd-popular-categories .porto-product-category a,.cwfd-pc-grid .product-category a,.cwfd-pc-grid .porto-product-category a{display:flex!important;flex-direction:column!important;align-items:center!important;gap:28px!important;width:100%!important;text-decoration:none!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category) img{display:block!important;width:clamp(104px, 11vw, 150px)!important;height:clamp(104px, 11vw, 150px)!important;max-width:100%!important;max-height:none!important;border-radius:50%!important;object-fit:cover!important;background:var(--cwfd-bg-soft);aspect-ratio:1 / 1;box-shadow:0 12px 26px -10px rgb(0 62 125 / .22),0 4px 10px -4px rgb(0 0 0 / .06);transition:transform 0.45s var(--cwfd-ease),box-shadow 0.45s var(--cwfd-ease)!important}.cwfd-pc-grid :is(.porto-product-category h3,.products .product-category h3,.products .product-category h2,.product-category .woocommerce-loop-category__title,.product-category .thumb-info-title){display:block!important;position:static!important;inset:auto!important;width:100%!important;min-height:0!important;margin:0!important;padding:0!important;background:transparent!important;color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:clamp(14px, 1.25vw, 17px)!important;font-weight:700!important;line-height:1.4!important;letter-spacing:0.02em!important;text-transform:uppercase!important;text-align:center!important;text-overflow:clip!important;white-space:normal!important;transform:none!important}.cwfd-pc-grid .product-category :is(mark.count,.count,.category-count,.products-count,.thumb-info-type){display:none!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category .thumb-info,.products .product-category .thumb-info-wrapper):hover{transform:translateY(-6px)!important;background:transparent!important;border:0!important;box-shadow:none!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category):hover img{transform:scale(1.05)!important;box-shadow:0 18px 34px -10px rgb(0 62 125 / .32),0 8px 16px -6px rgb(0 0 0 / .08)!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category):hover :is(h3,.woocommerce-loop-category__title){color:var(--cwfd-blue-bright)!important}@media (max-width:1199px){.cwfd-pc-grid ul.products{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:30px 16px!important}}@media (max-width:900px){.cwfd-pc-grid ul.products{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:26px 14px!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category) img{width:120px!important;height:120px!important}.cwfd-popular-categories .porto-product-category a,.cwfd-pc-grid .product-category a,.cwfd-pc-grid .porto-product-category a{gap:22px!important}}@media (max-width:600px){.cwfd-pc-grid ul.products{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:22px 10px!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category) img{width:clamp(92px, 28vw, 110px)!important;height:clamp(92px, 28vw, 110px)!important}.cwfd-popular-categories .porto-product-category a,.cwfd-pc-grid .product-category a,.cwfd-pc-grid .porto-product-category a{gap:16px!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category .thumb-info):hover{transform:none!important}.cwfd-pc-grid :is(.porto-product-category,.products .product-category):hover img{transform:none!important}}@media (min-width:1700px){#header #menu-primary-menu{margin:0!important;padding-left:9em!important;display:flex!important;align-items:center!important}#header #menu-primary-menu>li>a{min-height:52px!important;padding:0 18px!important;display:inline-flex!important;align-items:center!important}}@media (max-width:1199px){.cwfd-section__inner,.cwfd-footer__inner,.cwfd-footer__trust,.cwfd-footer__bottom,.cwfd-slider,.cwfd-slider-wrap{width:min(calc(100% - (var(--cwfd-page-gutter-tablet) * 2)), var(--cwfd-container))!important}.cwfd-slider__viewport,.cwfd-slide,.cwfd-slide__image-wrap,.cwfd-slide__media{min-height:var(--cwfd-banner-height-tablet)!important}.cwfd-slide-image,.cwfd-slider img{height:var(--cwfd-banner-height-tablet)!important;max-height:var(--cwfd-banner-height-tablet)!important}.cwfd-section ul.products{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px!important}.cwfd-promotions ul.products,.cwfd-featured ul.products{grid-template-columns:repeat(3,minmax(0,1fr))!important}:is(.porto-product-category,.products .product-category) img{max-height:130px!important}.vc_gitem-animated-block{height:200px!important}}@media (min-width:992px) and (max-width:1199px){.cwfd-v2-core>.wpb_wrapper{display:grid!important;grid-template-columns:140px minmax(280px,1fr) auto;align-items:center!important;gap:12px!important;max-width:100%!important}.cwfd-v2-logo{width:140px!important}.cwfd-standalone-search{flex:initial!important;width:100%!important;max-width:none!important;min-width:0!important;margin:0!important}.cwfd-v2-util{display:flex!important;grid-column:1 / -1;flex-wrap:wrap!important;justify-content:flex-end!important;gap:10px!important;width:100%!important;max-width:100%!important}#mini-cart{justify-self:end!important;margin:0!important}#menu-primary-menu{flex-wrap:wrap!important;row-gap:6px!important}}@media (max-width:1024px){body{padding-bottom:0!important}.cwfd-tabbar,.cwfd-mh-bottom{display:none!important}body.woocommerce-page,body.archive.woocommerce,body.tax-product_cat{max-width:100%!important;overflow-x:hidden!important}body.woocommerce-page ul.products,body.archive.woocommerce ul.products,body.tax-product_cat ul.products{display:grid!important;grid-template-columns:1fr!important;gap:16px!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0 12px!important;overflow:visible!important}body.woocommerce-page ul.products::before,body.woocommerce-page ul.products::after,body.archive.woocommerce ul.products::before,body.archive.woocommerce ul.products::after,body.tax-product_cat ul.products::before,body.tax-product_cat ul.products::after{display:none!important;content:none!important}body.woocommerce-page ul.products li.product,body.archive.woocommerce ul.products li.product,body.tax-product_cat ul.products li.product{float:none!important;display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;margin:0!important;padding:0!important}body.woocommerce-page ul.products li.product .product-inner,body.archive.woocommerce ul.products li.product .product-inner,body.tax-product_cat ul.products li.product .product-inner{width:100%!important;max-width:100%!important;min-width:0!important;margin:0!important;overflow:hidden!important}body.woocommerce-page ul.products li.product .product-image,body.archive.woocommerce ul.products li.product .product-image,body.tax-product_cat ul.products li.product .product-image{display:flex!important;align-items:center!important;justify-content:center!important;min-height:140px!important;max-height:150px!important;overflow:hidden!important}body.woocommerce-page ul.products li.product img,body.archive.woocommerce ul.products li.product img,body.tax-product_cat ul.products li.product img{display:block!important;width:auto!important;max-width:100%!important;height:auto!important;max-height:130px!important;object-fit:contain!important;margin:0 auto!important}}@media (max-width:991px){:is(#header,.header-wrapper){height:auto!important;min-height:0!important}.cwfd-blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px}.cwfd-section ul.products{grid-template-columns:repeat(3,minmax(0,1fr))}.cwfd-v2-row{display:block!important;background:#ffffff!important;border-bottom:1px solid #e6eef7!important}.cwfd-v2-row>.porto-wrap-container{width:100%!important;max-width:100%!important;padding:0 16px!important}.cwfd-v2-core>.wpb_wrapper{display:grid!important;grid-template-columns:auto 1fr auto auto;align-items:center!important;gap:12px!important;min-height:76px!important;padding:10px 0!important}.cwfd-v2-logo img{display:block!important;width:100px!important;max-width:100px!important;height:auto!important}.cwfd-standalone-search{grid-column:1 / -1;order:2;width:100%!important;max-width:none!important;min-width:0!important;margin:0!important}.cwfd-standalone-search:is(.searchform,.searchform-fields){display:flex!important;width:100%!important}.cwfd-standalone-search input:is([type="search"],[type="text"]){width:100%!important;min-width:0!important}.cwfd-v2-util{display:flex!important;justify-content:flex-end!important;gap:10px!important}:is(.cwfd-v2-help,.cwfd-v2-cta,.cwfd-v2-acct__info,.cwfd-v2-acct__caret){display:none!important}:is(.cwfd-v2-acct,#mini-cart){width:44px!important;min-width:44px!important;margin:0!important}:is(.cwfd-v2-acct__btn,.cwfd-v2-acct__av,#mini-cart .cart-head){display:flex!important;align-items:center!important;justify-content:center!important;width:44px!important;height:44px!important;padding:0!important}.cwfd-v2-menu-row{display:block!important;overflow:hidden!important}#menu-primary-menu{display:flex!important;flex-wrap:nowrap!important;gap:10px!important;padding:10px 14px!important;margin:0!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch}#menu-primary-menu>li{flex:0 0 auto!important}#menu-primary-menu>li>a{display:flex!important;align-items:center!important;min-height:42px!important;padding:8px 16px!important;color:var(--cwfd-blue)!important;font-weight:600!important;white-space:nowrap!important;background:#f1f5f9!important;border-radius:var(--cwfd-radius-pill)!important}#menu-primary-menu:is(.popup,.sub-menu){display:none!important}.cwfd-slider__viewport{overflow:hidden!important}.cwfd-slide{flex:0 0 100%!important;max-width:100%!important}:is(#side-nav-panel,.mobile-nav-wrap){background:#ffffff!important}.mobile-nav li a{color:var(--cwfd-blue)!important;font-weight:600}input:is([type="text"],[type="number"],[type="email"],[type="tel"],[type="password"],[type="search"]),.qty,.input-text,select,textarea{font-size:16px!important;line-height:normal!important}.quantity:is(.minus,.plus){width:var(--cwfd-tap)!important;height:var(--cwfd-tap)!important;font-size:18px!important}:is(.quantity input.qty,#header .searchform input[type="search"]){min-height:var(--cwfd-tap)!important;height:var(--cwfd-tap)!important}body.woocommerce-checkout:is(.col2-set,.col-1,.col-2,#order_review,#order_review_heading,.woocommerce-billing-fields,.woocommerce-shipping-fields){float:none!important;width:100%!important}body.woocommerce-checkout:is(.form-row,.form-row-first,.form-row-last){float:none!important;clear:both;width:100%!important}body.woocommerce-checkout:is(input.input-text,select,textarea){width:100%;min-height:48px;font-size:16px}body .cwfd-footer,body #footer,body .footer,body .footer-wrapper,body .footer-main{width:100%!important;max-width:100%!important;margin:0!important;overflow:hidden!important}body .cwfd-footer *{box-sizing:border-box!important}body .cwfd-footer__inner,body .cwfd-footer__trust,body .cwfd-footer__bottom{width:calc(100% - 32px)!important;max-width:calc(100% - 32px)!important;margin-left:auto!important;margin-right:auto!important;padding-left:0!important;padding-right:0!important}body .cwfd-footer__grid{display:grid!important;grid-template-columns:1fr!important;gap:28px!important;width:100%!important;max-width:100%!important}body .cwfd-footer .wpforms-container,body .cwfd-footer form,body .cwfd-footer .wpforms-form,body .cwfd-footer .wpforms-field,body .cwfd-footer .wpforms-submit-container{width:100%!important;max-width:100%!important;min-width:0!important;margin-left:0!important;margin-right:0!important;overflow:hidden!important}body .cwfd-footer input,body .cwfd-footer textarea,body .cwfd-footer select,body .cwfd-footer button,body .cwfd-footer .wpforms-submit{width:100%!important;max-width:100%!important;min-width:0!important}body .cwfd-footer iframe,body .cwfd-footer .cf-turnstile,body .cwfd-footer [class*="turnstile"],body .cwfd-footer [class*="captcha"],body .cwfd-footer .wpforms-recaptcha-container{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;overflow:hidden!important}body .cwfd-footer .wpforms-recaptcha-container iframe,body .cwfd-footer .cf-turnstile iframe{max-width:100%!important;transform-origin:left top!important}}@media (max-width:767px){body.home{padding-bottom:86px!important;background:#f1f5f9!important}body.home .page-wrapper,body.home #main,body.home .main-content,body.home .page-content,body.home .porto-page-content,body.home .wpb-content-wrapper,body.home .vc_row,body.home .wpb_row,body.home .row,body.home .container,body.home .container-fluid{width:100%!important;max-width:100%!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important;left:auto!important;right:auto!important;transform:none!important;overflow-x:hidden!important}body.home .cwfd-section{width:100%!important;max-width:100%!important;margin:0!important;padding:32px 0!important;overflow:hidden!important}.cwfd-section__inner,.cwfd-footer__inner,.cwfd-footer__trust,.cwfd-footer__bottom,.cwfd-slider,.cwfd-slider-wrap{width:calc(100% - (var(--cwfd-page-gutter-mobile) * 2))!important;max-width:calc(100% - (var(--cwfd-page-gutter-mobile) * 2))!important}.cwfd-section-head{flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;gap:12px!important;margin-bottom:18px!important}.cwfd-section-head>:is(.cwfd-section-title,.cwfd-section-head__title,h1,h2,h3,h4){flex:1 1 100%}.cwfd-section-head>:is(.cwfd-btn,.button,.btn,a.button,a.btn){margin-left:0}.cwfd-section-title{width:100%!important;max-width:100%!important;overflow:visible!important}.cwfd-section-title,.cwfd-section-title:is(h1,h2,h3,h4){font-size:24px!important;line-height:1.25!important;color:var(--cwfd-ink)!important}.cwfd-section-title::before{width:4px!important;height:24px!important;margin-right:12px!important;border-radius:999px!important}.cwfd-btn,.cwfd-section-head:is(.cwfd-btn,a.cwfd-btn,.button,a.button){position:relative!important;display:inline-flex!important;width:auto!important;max-width:100%!important;min-height:40px!important;padding:10px 20px!important;margin:0!important;overflow:visible!important;clip:auto!important;clip-path:none!important;white-space:nowrap!important;opacity:1!important;visibility:visible!important;transform:none!important}.cwfd-slider,.cwfd-slider-wrap{height:230px!important;min-height:230px!important;max-height:230px!important;margin:12px auto 24px!important;border:1px solid rgb(0 112 243 / .1)!important;border-radius:var(--cwfd-radius)!important;background:var(--cwfd-blue-light)!important;box-shadow:0 8px 24px rgb(0 62 125 / .1)!important}.cwfd-slider__viewport,.cwfd-slides,.cwfd-slide,.cwfd-slide__media{display:block!important;width:100%!important;height:230px!important;min-height:230px!important;max-height:230px!important;overflow:hidden!important}.cwfd-slides{display:flex!important}.cwfd-slide{flex:0 0 100%!important;min-width:100%!important;max-width:100%!important}.cwfd-slide-image,.cwfd-slide img.cwfd-slide-image,.cwfd-slider img{display:block!important;width:100%!important;height:230px!important;min-height:230px!important;max-height:230px!important;object-fit:cover!important;object-position:center center!important;transform:none!important}.cwfd-slide.is-active .cwfd-slide-image{transform:none!important}.cwfd-slide__content,.cwfd-slide__media::before,.cwfd-slide--content .cwfd-slide__media::before{display:none!important;content:none!important}.cwfd-slider__chrome{left:12px!important;right:12px!important;bottom:10px!important;z-index:8!important;display:flex!important;justify-content:center!important;pointer-events:none!important}.cwfd-slider__meta{display:flex!important;padding:6px 14px!important;background:rgb(255 255 255 / .95)!important;border-radius:var(--cwfd-radius-pill)!important;box-shadow:0 6px 18px rgb(0 0 0 / .08)!important;pointer-events:auto!important;backdrop-filter:blur(4px)}.cwfd-slider__nav{display:none!important}.cwfd-categories__grid,.cwfd-testimonials__grid,.cwfd-blog-grid{grid-template-columns:1fr!important;gap:14px!important}.cwfd-cat-card__body{padding:20px 16px}.cwfd-cat-card__title{font-size:15px}.cwfd-cat-card__desc{font-size:12.5px}.cwfd-testimonial{padding:28px 20px 20px;border-radius:var(--cwfd-radius)!important}.cwfd-porto-gallery-wrap .vc_single_image-wrapper{min-height:84px;padding:16px 20px!important;border-radius:var(--cwfd-radius)!important}.cwfd-porto-gallery-wrap img{max-width:135px!important;max-height:46px!important}.cwfd-section ul.products,.cwfd-section .products,body.home ul.products{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;overflow:visible!important}.cwfd-section ul.products li.product,.cwfd-section ul.products li.product-category,body.home ul.products li.product,body.home ul.products li.product-category{float:none!important;clear:none!important;display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;margin:0!important;padding:0!important}.products li.product .product-inner,.products li.product-category .thumb-info,.products .product-category .thumb-info,.porto-product-category,.products .product-category .thumb-info-wrapper{width:100%!important;max-width:100%!important;min-height:0!important;padding:14px!important;margin:0!important;background:#ffffff!important;border:1px solid rgb(0 62 125 / .05)!important;border-radius:var(--cwfd-radius)!important;box-shadow:0 6px 16px rgb(0 62 125 / .05)!important;overflow:hidden!important;transform:none!important}.products li.product .product-image,.products li.product .thumb-info-wrapper,.products li.product-category .thumb-info-wrapper,.vc_gitem-animated-block{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:150px!important;min-height:150px!important;max-height:150px!important;padding:10px!important;margin:0!important;background:#ffffff!important;border-radius:var(--cwfd-radius-sm)!important;overflow:hidden!important}.products li.product img,.products li.product-category img,.products .product-category img,.porto-product-category img,.vc_gitem-animated-block img{display:block!important;width:auto!important;max-width:100%!important;height:auto!important;max-height:125px!important;margin:0 auto!important;object-fit:contain!important;object-position:center!important;transform:none!important}.products li.product-category h3,.products .product-category h3{display:block!important;min-height:38px!important;height:auto!important;margin:12px 0 6px!important;padding:0!important;color:var(--cwfd-blue)!important;font-family:var(--cwfd-font-headings)!important;font-size:13px!important;font-weight:700!important;line-height:1.35!important;text-align:center!important;white-space:normal!important;overflow:visible!important;text-transform:none!important}.products li.product :is(h2,h3,.woocommerce-loop-product__title,.product-title){display:block!important;min-height:38px!important;height:auto!important;margin:12px 0 6px!important;padding:0!important;text-align:center!important;white-space:normal!important;overflow:visible!important}.products li.product .price{display:block!important;margin:6px 0 10px!important;color:var(--cwfd-ink)!important;font-size:14px!important;font-weight:700!important;text-align:center!important}.products li.product :is(.button,a.button,.add_to_cart_button):not(.ezq-add-cart){width:100%!important;min-height:40px!important;height:auto!important;padding:10px 12px!important;margin-top:8px!important;border-radius:8px!important;font-size:12px!important;font-weight:800!important;line-height:1.2!important;text-align:center!important;background:var(--cwfd-blue)!important;color:#ffffff!important}.header-wrapper .logo img{max-height:38px!important}:is(#footer,.footer,.footer-wrapper,.footer-main){max-width:100%;overflow:hidden}:is(#footer,.footer,.footer-main).container{padding-right:16px;padding-left:16px}:is(#footer,.footer,.footer-main) [class*="col-"]{flex:0 0 100%!important;width:100%!important;max-width:100%!important}:is(#footer,.footer) a{display:inline-flex;align-items:center;min-height:36px;overflow-wrap:anywhere}.back-to-top{bottom:92px!important;right:18px!important;z-index:50!important}body .cwfd-footer__inner{padding-top:40px!important;padding-bottom:28px!important}body .cwfd-footer h3{font-size:12px!important}body .cwfd-footer .wpforms-field input,body .cwfd-footer .wpforms-field textarea{min-height:46px!important;font-size:16px!important}body .cwfd-footer .wpforms-submit{min-height:48px!important;font-size:15px!important}body .cwfd-footer__bottom{display:flex!important;flex-direction:column!important;align-items:center!important;text-align:center!important;gap:12px!important;padding-bottom:calc(20px + env(safe-area-inset-bottom, 0px))!important}body .cwfd-footer__bottom nav{justify-content:center!important;gap:14px!important}}@media (min-width:481px) and (max-width:767px){:is(.home ul.products,.archive.woocommerce ul.products,.woocommerce-page ul.products){grid-template-columns:1fr!important}}@media (max-width:560px){.cwfd-footer__grid{grid-template-columns:1fr!important}.cwfd-footer__bottom{justify-content:center;text-align:center}.cwfd-footer__bottom nav{justify-content:center}}@media (max-width:480px){body.home .cwfd-section__inner,body.home .cwfd-footer__inner,body.home .cwfd-footer__trust,body.home .cwfd-footer__bottom,body.home .cwfd-slider,body.home .cwfd-slider-wrap{width:calc(100% - 20px)!important;max-width:calc(100% - 20px)!important}body.home .cwfd-section-title,body.home .cwfd-section-title h1,body.home .cwfd-section-title h2,body.home .cwfd-section-title h3{font-size:22px!important}body.home .cwfd-slider,body.home .cwfd-slider-wrap,body.home .cwfd-slider__viewport,body.home .cwfd-slides,body.home .cwfd-slide,body.home .cwfd-slide__media,body.home .cwfd-slide-image,body.home .cwfd-slider img{height:195px!important;min-height:195px!important;max-height:195px!important}body.home ul.products li.product .product-image,body.home ul.products li.product .thumb-info-wrapper,body.home ul.products li.product-category .thumb-info-wrapper,body.home .vc_grid-item .vc_gitem-animated-block{height:135px!important;min-height:135px!important;max-height:135px!important}body.home ul.products li.product img,body.home ul.products li.product-category img,body.home .products .product-category img,body.home .porto-product-category img{max-height:110px!important}}@media (max-width:479px){.cwfd-section-title:is(h1,h2,h3),.cwfd-section-title{font-size:22px!important}.cwfd-section-title::before{width:3px;margin-right:10px}.cwfd-cat-card__media{aspect-ratio:16 / 10}.cwfd-cat-card__media img{padding:14px}:is(.main-content,#main,.site-main){padding-right:0;padding-left:0}:is(.add_to_cart_button,.single_add_to_cart_button,.product-inner .button){width:100%}}@media (max-width:420px){.cwfd-section__inner,.cwfd-footer__inner,.cwfd-footer__trust,.cwfd-footer__bottom,.cwfd-slider,.cwfd-slider-wrap{width:calc(100% - 20px)!important;max-width:calc(100% - 20px)!important}.cwfd-section ul.products,.cwfd-section .products,body.home ul.products{grid-template-columns:1fr!important;gap:12px!important}.products li.product .product-image,.products li.product .thumb-info-wrapper,.products li.product-category .thumb-info-wrapper,.vc_gitem-animated-block{height:130px!important;min-height:130px!important;max-height:130px!important}.products li.product img,.products li.product-category img,.products .product-category img,.porto-product-category img{max-height:105px!important}}@media (max-width:390px){body .cwfd-footer__inner,body .cwfd-footer__trust,body .cwfd-footer__bottom{width:calc(100% - 20px)!important;max-width:calc(100% - 20px)!important}body .cwfd-footer .cf-turnstile iframe,body .cwfd-footer .wpforms-recaptcha-container iframe{transform:scale(.92)!important;width:326px!important;max-width:none!important}}@media (max-width:380px){.cwfd-slider,.cwfd-slider-wrap,.cwfd-slider__viewport,.cwfd-slides,.cwfd-slide,.cwfd-slide__media,.cwfd-slide-image,.cwfd-slide img.cwfd-slide-image,.cwfd-slider img{height:180px!important;min-height:180px!important;max-height:180px!important}}@media (max-width:360px){body.woocommerce-cart :is(.main-content,.woocommerce,.featured-box,.featured-box .box-content){padding-right:4px!important;padding-left:4px!important}:is(.wc-proceed-to-checkout a.checkout-button,.checkout-button){min-height:46px!important;padding:10px 14px!important;font-size:14px!important}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:0.01ms!important;transition-duration:0.01ms!important}}.cwfd-how__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px}.cwfd-how__step{position:relative;background:var(--cwfd-white);border:1px solid var(--cwfd-border);border-radius:var(--cwfd-radius-lg);padding:36px 28px 32px;text-align:center;font-family:var(--cwfd-font);transition:transform var(--cwfd-trans-base),box-shadow var(--cwfd-trans-base),border-color var(--cwfd-trans-base)}.cwfd-how__step:hover{transform:translateY(-4px);box-shadow:var(--cwfd-shadow-lg);border-color:rgb(0 112 243 / .25)}.cwfd-how__num{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--cwfd-grad-cta);color:var(--cwfd-white);font-family:var(--cwfd-font-headings);font-size:20px;font-weight:700;margin-bottom:18px;box-shadow:0 8px 18px rgb(0 62 125 / .22)}.cwfd-how__icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:14px;background:var(--cwfd-blue-light);color:var(--cwfd-blue);margin-bottom:18px}.cwfd-how__icon svg{width:28px;height:28px}.cwfd-how__step-title{font-family:var(--cwfd-font-headings);font-size:19px;font-weight:700;color:var(--cwfd-ink);margin:0 0 8px}.cwfd-how__step-desc{font-size:14.5px;line-height:1.55;color:var(--cwfd-muted);margin:0 0 16px}.cwfd-how__step-meta{display:inline-block;font-family:var(--cwfd-font-headings);font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--cwfd-accent-frost);padding:5px 12px;border-radius:var(--cwfd-radius-pill);background:rgb(0 180 216 / .1)}.cwfd-how__cta{text-align:center;margin-top:44px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.cwfd-how-btn{display:inline-block;min-height:var(--cwfd-tap);padding:14px 28px;border-radius:var(--cwfd-radius-sm);font-family:var(--cwfd-font-headings);font-weight:600;font-size:15px;text-decoration:none;transition:transform var(--cwfd-trans-fast),box-shadow var(--cwfd-trans-fast),background var(--cwfd-trans-fast)}.cwfd-how-btn--primary{background:var(--cwfd-grad-cta);color:var(--cwfd-white);box-shadow:var(--cwfd-shadow-cta)}.cwfd-how-btn--primary:hover{background:var(--cwfd-grad-cta-hover);box-shadow:var(--cwfd-shadow-cta-hover);transform:translateY(-2px);color:var(--cwfd-white)}.cwfd-how-btn--ghost{background:#fff0;color:var(--cwfd-blue);border:1.5px solid var(--cwfd-blue)}.cwfd-how-btn--ghost:hover{background:var(--cwfd-blue);color:var(--cwfd-white);transform:translateY(-2px)}.cwfd-marquee__viewport{position:relative;overflow:hidden;padding:8px 0;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 30px,#000 calc(100% - 30px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 30px,#000 calc(100% - 30px),transparent 100%)}.cwfd-marquee__track{display:flex;align-items:center;gap:48px;width:max-content;animation:cwfd-marquee-scroll 60s linear infinite}.cwfd-marquee__viewport:hover .cwfd-marquee__track{animation-play-state:paused}.cwfd-marquee__logo{flex:0 0 auto;height:64px;width:auto;max-width:180px;object-fit:contain;filter:grayscale(100%) contrast(.95);opacity:.85;transition:filter 0.35s var(--cwfd-ease),opacity 0.35s var(--cwfd-ease),transform 0.35s var(--cwfd-ease)}.cwfd-marquee__logo:hover{filter:grayscale(0) contrast(1);opacity:1;transform:scale(1.08)}.cwfd-marquee__meta{text-align:center;margin-top:28px;font-family:var(--cwfd-font);font-size:14px;color:var(--cwfd-muted)}.cwfd-marquee__meta strong{font-family:var(--cwfd-font-headings);font-weight:700;color:var(--cwfd-ink)}.cwfd-marquee__cta{display:inline-block;margin-left:8px;font-family:var(--cwfd-font-headings);font-weight:600;color:var(--cwfd-blue-bright);text-decoration:none;border-bottom:1.5px solid #fff0;transition:border-color 0.2s,color 0.2s}.cwfd-marquee__cta:hover{color:var(--cwfd-blue);border-bottom-color:var(--cwfd-blue)}.cwfd-marquee .cwfd-section-intro{margin-bottom:28px}.cwfd-marquee .cwfd-section-intro__eyebrow{background:transparent!important;padding:0!important;border-radius:0!important}.cwfd-marquee .cwfd-section-intro__title{font-size:clamp(22px, 2.4vw, 28px);margin-bottom:10px}.cwfd-marquee .cwfd-section-intro__lead{font-size:15px}@keyframes cwfd-marquee-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}@media (max-width:768px){.cwfd-marquee__track{gap:40px;animation-duration:45s}.cwfd-marquee__logo{height:44px;max-width:130px}}@media (prefers-reduced-motion:reduce){.cwfd-marquee__track{animation:none;transform:translateX(0);flex-wrap:wrap;justify-content:center}}@media (min-width:1024px){html{scrollbar-gutter:stable}}body{overflow-x:clip}@media (min-width:768px){.main-content .container,.main-content .container-fluid,.main-content .vc_row,.page-wrapper>.container,.page-wrapper>.vc_row{padding-left:15px!important;padding-right:15px!important;margin-left:auto!important;margin-right:auto!important;max-width:100%}}@media (max-width:767px){.main-content .vc_row,.page-wrapper>.vc_row,.main-content .container{padding-left:14px!important;padding-right:14px!important;margin-left:0!important;margin-right:0!important;max-width:100%}.cwfd-section__inner{padding-left:14px!important;padding-right:14px!important}}body>*:not(footer):not(.site-footer):not(.footer):not(#footer){max-width:100vw;overflow-x:clip}#footer,.footer,.footer-wrapper{position:relative!important;width:100vw!important;max-width:100vw!important;margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;padding-left:0!important;padding-right:0!important;left:0!important;right:0!important}#footer>*,.footer>*{max-width:1480px;margin-left:auto;margin-right:auto;padding-left:30px;padding-right:30px;box-sizing:border-box}@media (max-width:767px){#footer>*,.footer>*{padding-left:16px;padding-right:16px}}[class*="cwfd-footer-v"]>*{max-width:100%!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}.cwfd-footer-v2{font-family:"Plus Jakarta Sans",system-ui,sans-serif;color:#fff}.cwfd-footer-v2__inner{max-width:1480px;margin:0 auto;padding:0 30px;box-sizing:border-box}.cwfd-footer-v2__cta-band{background:linear-gradient(135deg,#0070f3 0%,#003e7d 100%);padding:36px 0}.cwfd-footer-v2__cta-inner{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}.cwfd-footer-v2__cta-band h2{font-family:"Outfit",sans-serif;font-size:clamp(22px, 2.4vw, 28px);font-weight:700;color:#fff;margin:0 0 6px}.cwfd-footer-v2__cta-band p{margin:0;color:rgb(255 255 255 / .85);font-size:15px}.cwfd-footer-v2__cta-actions{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.cwfd-footer-v2__btn{display:inline-block;padding:14px 26px;border-radius:8px;font-family:"Outfit",sans-serif;font-weight:700;font-size:15px;text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s}.cwfd-footer-v2__btn--primary{background:#f59e0b;color:#00254c;box-shadow:0 10px 24px rgb(245 158 11 / .3)}.cwfd-footer-v2__btn--primary:hover{background:#fbbf24;transform:translateY(-2px);color:#00254c}.cwfd-footer-v2__phone-cta{display:flex;flex-direction:column;text-decoration:none;color:#fff;line-height:1.2;transition:color .2s}.cwfd-footer-v2__phone-cta span{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:rgb(255 255 255 / .75)}.cwfd-footer-v2__phone-cta strong{font-family:"Outfit",sans-serif;font-size:22px;font-weight:700;color:#fff;margin-top:2px}.cwfd-footer-v2__phone-cta:hover{color:#f59e0b}.cwfd-footer-v2__phone-cta:hover strong{color:#f59e0b}.cwfd-footer-v2__main{background:#00254c;padding:clamp(48px, 6vw, 80px) 0}.cwfd-footer-v2__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:48px}.cwfd-footer-v2__logo{height:44px;width:auto;margin-bottom:20px}.cwfd-footer-v2__tagline{font-size:14px;line-height:1.6;color:rgb(255 255 255 / .75);margin:0 0 22px;max-width:360px}.cwfd-footer-v2__contact{list-style:none;margin:0;padding:0;font-size:14px;color:rgb(255 255 255 / .85)}.cwfd-footer-v2__contact li{display:flex;align-items:flex-start;gap:10px;padding:6px 0;line-height:1.5}.cwfd-footer-v2__contact svg{flex-shrink:0;width:16px;height:16px;margin-top:3px;color:#f59e0b}.cwfd-footer-v2__contact a{color:rgb(255 255 255 / .85);text-decoration:none;transition:color .2s}.cwfd-footer-v2__contact a:hover{color:#f59e0b}.cwfd-footer-v2__heading{font-family:"Outfit",sans-serif;font-size:14px;font-weight:700;color:#f59e0b;letter-spacing:1.5px;text-transform:uppercase;margin:0 0 20px;padding-bottom:12px;border-bottom:2px solid rgb(245 158 11 / .25);display:inline-block}.cwfd-footer-v2__links{list-style:none;margin:0;padding:0}.cwfd-footer-v2__links li{padding:6px 0}.cwfd-footer-v2__links a{font-size:14px;color:rgb(255 255 255 / .85);text-decoration:none;transition:color .2s,padding-left .2s}.cwfd-footer-v2__links a:hover{color:#f59e0b;padding-left:4px}.cwfd-footer-v2__newsletter-lead{font-size:14px;line-height:1.55;color:rgb(255 255 255 / .85);margin:0 0 14px}.cwfd-footer-v2__newsletter input[type="email"],.cwfd-footer-v2__newsletter input[type="text"]{background:rgb(255 255 255 / .08)!important;border:1px solid rgb(255 255 255 / .15)!important;color:#fff!important;border-radius:8px}.cwfd-footer-v2__newsletter input[type="submit"]{background:#f59e0b!important;color:#00254c!important;font-family:"Outfit",sans-serif;font-weight:700;border-radius:8px;padding:12px 24px;border:none}.cwfd-footer-v2__trust{background:#001a36;padding:18px 0;border-top:1px solid rgb(245 158 11 / .15)}.cwfd-footer-v2__trust-inner{display:flex;flex-wrap:wrap;gap:12px 18px;justify-content:center;align-items:center;font-size:13px;color:rgb(255 255 255 / .7)}.cwfd-footer-v2__trust strong{color:#fff}.cwfd-footer-v2__trust-dot{color:rgb(245 158 11 / .5)}.cwfd-footer-v2__bottom{background:#001530;padding:18px 0}.cwfd-footer-v2__bottom-inner{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center;font-size:13px;color:rgb(255 255 255 / .65)}.cwfd-footer-v2__bottom p{margin:0}.cwfd-footer-v2__legal{list-style:none;margin:0;padding:0;display:flex;gap:24px}.cwfd-footer-v2__legal a{font-size:13px;color:rgb(255 255 255 / .65);text-decoration:none;transition:color .2s}.cwfd-footer-v2__legal a:hover{color:#f59e0b}@media (max-width:1024px){.cwfd-footer-v2__grid{grid-template-columns:1fr 1fr;gap:40px}.cwfd-footer-v2__col--brand{grid-column:span 2}}@media (max-width:768px){.cwfd-footer-v2__inner{padding:0 16px}.cwfd-footer-v2__cta-inner{flex-direction:column;text-align:center}.cwfd-footer-v2__phone-cta{align-items:center}.cwfd-footer-v2__bottom-inner{flex-direction:column;text-align:center}.cwfd-footer-v2__legal{justify-content:center;flex-wrap:wrap;gap:12px}}@media (max-width:600px){.cwfd-footer-v2__grid{grid-template-columns:1fr;gap:36px}.cwfd-footer-v2__col--brand{grid-column:span 1}}.cwfd-shop-cats .cwfd-section__inner{padding:3rem 1.5rem;max-width:1280px;margin:0 auto}.cwfd-shop-cats .cwfd-section-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1.5rem;margin-bottom:3rem;padding-bottom:1.25rem;border-bottom:1px solid rgb(0 0 0 / .06)}.cwfd-shop-cats .cwfd-section-title{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;text-align:left}.cwfd-shop-cats .cwfd-section-title::before,.cwfd-shop-cats .cwfd-section-title::after,.cwfd-shop-cats .cwfd-eyebrow::before,.cwfd-shop-cats .cwfd-eyebrow::after{display:none!important;content:none!important}.cwfd-shop-cats .cwfd-eyebrow{font-size:.78rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--cwfd-blue);opacity:.85}.cwfd-shop-cats .cwfd-section-title h2{margin:0!important;font-family:var(--cwfd-font-headings)!important;font-size:clamp(1.75rem, 3.2vw, 2.5rem)!important;font-weight:700!important;line-height:1.15!important;letter-spacing:-0.02em!important;color:var(--cwfd-ink)!important;position:relative;display:inline-block;text-align:left;text-transform:none!important}.cwfd-shop-cats .cwfd-section-title h2::after{content:"";display:block;width:56px;height:3px;margin:.65rem 0 0 0;border-radius:999px;background:linear-gradient(90deg,var(--cwfd-blue) 0%,var(--cwfd-accent-berry) 100%)}.cwfd-shop-cats .cwfd-btn--pill{display:inline-flex!important;align-items:center;gap:.6rem;min-height:auto!important;padding:.85rem 1.6rem!important;background:var(--cwfd-ink)!important;color:#fff!important;border-radius:999px!important;font-size:0.95rem!important;font-weight:600!important;letter-spacing:0.02em!important;text-decoration:none!important;box-shadow:0 6px 20px rgb(11 31 58 / .18)!important;transition:transform 0.25s ease,box-shadow 0.25s ease,background 0.25s ease!important;white-space:nowrap}.cwfd-shop-cats .cwfd-btn--pill svg{transition:transform 0.3s ease}.cwfd-shop-cats .cwfd-btn--pill:hover{background:var(--cwfd-accent-berry)!important;transform:translateY(-2px);box-shadow:0 10px 26px rgb(217 4 41 / .32)!important}.cwfd-shop-cats .cwfd-btn--pill:hover svg{transform:translateX(4px)}.cwfd-shop-cats .cwfd-btn--pill:focus-visible{outline:2px solid var(--cwfd-accent-berry);outline-offset:3px}@media (max-width:640px){.cwfd-shop-cats .cwfd-section-head{align-items:flex-start;gap:1rem}.cwfd-shop-cats .cwfd-btn--pill{width:100%;justify-content:center}}.cwfd-how .cwfd-section-intro,.cwfd-how .cwfd-how__intro{max-width:100%!important;margin:0 0 clamp(32px, 4vw, 48px)!important;padding-bottom:1.25rem!important;text-align:left!important;border-bottom:1px solid rgb(0 0 0 / .06)!important}.cwfd-how .cwfd-section-intro__eyebrow,.cwfd-how .cwfd-how__eyebrow{display:inline-block!important;margin:0 0 14px 0!important;padding:0!important;background:transparent!important;border-radius:0!important;font-family:var(--cwfd-font)!important;font-size:0.78rem!important;font-weight:600!important;letter-spacing:0.18em!important;text-transform:uppercase!important;color:var(--cwfd-blue)!important;opacity:0.85!important;text-align:left!important}.cwfd-how .cwfd-section-intro__title,.cwfd-how .cwfd-how__title{position:relative!important;display:inline-block!important;margin:0!important;font-family:var(--cwfd-font-headings)!important;font-size:clamp(1.75rem, 3.2vw, 2.5rem)!important;font-weight:700!important;line-height:1.15!important;letter-spacing:-0.02em!important;color:var(--cwfd-ink)!important;text-align:left!important;text-transform:none!important}.cwfd-how .cwfd-section-intro__title::after,.cwfd-how .cwfd-how__title::after{content:""!important;display:block!important;width:56px!important;height:3px!important;margin:.65rem 0 0 0!important;border-radius:999px!important;background:linear-gradient(90deg,var(--cwfd-blue) 0%,var(--cwfd-accent-berry) 100%)!important}.cwfd-how .cwfd-section-intro__lead,.cwfd-how .cwfd-how__lead{max-width:720px!important;margin:16px 0 0 0!important;padding:0!important;font-size:15px!important;line-height:1.65!important;color:var(--cwfd-text)!important;text-align:left!important;opacity:0.9!important}

/* =====================================================
   CWFD TYPOGRAPHY & RESPONSIVE REFINEMENT  —  v1.1.0
   Additive layer, appended last so it wins the cascade.
   Presentation only: nothing is hidden, no selector above
   is deleted, no script hook or WooCommerce markup relies
   on anything set here.
   ===================================================== */

/* ---------------------------------------------------------------
   1. Fluid type scale
   The scale below is a single viewport-driven ramp, so text grows
   smoothly instead of snapping at each breakpoint. Retuning the
   three tokens the stylesheet already consumes (--cwfd-fs-h2,
   --cwfd-fs-lead, --cwfd-fs-eyebrow) lifts every section heading
   that was built on them, with no new selectors and no !important
   fights against the rules above.
   --------------------------------------------------------------- */
:root {
	/* Retuned existing tokens: section headings were topping out at
	   26px while the newer .cwfd-how / .cwfd-shop-cats sections ran to
	   40px. One ramp now covers both. */
	--cwfd-fs-h2: clamp(23px, 1.6vw + 16px, 36px);
	--cwfd-fs-lead: clamp(14.5px, 0.3vw + 13.5px, 17px);
	--cwfd-fs-eyebrow: clamp(11px, 0.15vw + 10.5px, 12.5px);

	/* New scale, available for future sections. */
	--cwfd-fs-2xs: clamp(10.5px, 0.16vw + 10px, 12px);
	--cwfd-fs-xs: clamp(11.5px, 0.22vw + 10.8px, 13px);
	--cwfd-fs-sm: clamp(13px, 0.25vw + 12.2px, 14.5px);
	--cwfd-fs-base: clamp(15px, 0.25vw + 14.2px, 16px);
	--cwfd-fs-md: clamp(16px, 0.4vw + 14.7px, 18px);
	--cwfd-fs-lg: clamp(18px, 0.6vw + 16.1px, 22px);
	--cwfd-fs-xl: clamp(21px, 1.1vw + 17.5px, 28px);
	--cwfd-fs-2xl: clamp(26px, 1.9vw + 19px, 40px);
	--cwfd-fs-3xl: clamp(30px, 2.8vw + 21px, 52px);

	/* Line heights and optical tracking, tightening as size grows. */
	--cwfd-lh-display: 1.1;
	--cwfd-lh-tight: 1.2;
	--cwfd-lh-snug: 1.35;
	--cwfd-lh-body: 1.65;
	--cwfd-lh-relaxed: 1.75;
	--cwfd-ls-display: -0.025em;
	--cwfd-ls-heading: -0.015em;
	--cwfd-ls-body: 0;
	--cwfd-ls-label: 0.08em;
	--cwfd-ls-caps: 0.16em;

	/* Comfortable measure for prose blocks. */
	--cwfd-measure: 68ch;

	/* Fluid outer gutter above 1199px, so wide screens breathe
	   instead of sitting on a fixed 32px rail. */
	--cwfd-page-gutter: clamp(24px, 2.2vw, 48px);
}

/* ---------------------------------------------------------------
   2. Base typography
   --------------------------------------------------------------- */
body {
	font-size: var(--cwfd-fs-base);
	line-height: var(--cwfd-lh-body);
	font-optical-sizing: auto;
	font-synthesis-weight: none;
	text-rendering: optimizeLegibility;
}

/* h5 and h6 were falling back to Porto's stack, so headings changed
   typeface partway down the page. */
h5, h6 {
	font-family: var(--cwfd-font-headings) !important;
	color: var(--cwfd-blue);
	font-weight: 700;
}

h1, h2, h3, h4, h5, h6 {
	font-optical-sizing: auto;
	text-wrap: balance;
	overflow-wrap: break-word;
}

/* Optical tracking: -0.02em reads well at display sizes but muddies
   small headings, so it now eases off as the heading shrinks. */
h1 { line-height: var(--cwfd-lh-display); letter-spacing: var(--cwfd-ls-display); }
h2 { line-height: var(--cwfd-lh-tight); letter-spacing: var(--cwfd-ls-heading); }
h3 { line-height: var(--cwfd-lh-tight); letter-spacing: var(--cwfd-ls-heading); }
h4 { line-height: var(--cwfd-lh-snug); letter-spacing: -0.005em; }
h5, h6 { line-height: var(--cwfd-lh-snug); letter-spacing: 0; }

/* Ragged last lines and orphaned words are the loudest "unfinished"
   signal in body copy. */
p, li, dd, blockquote, figcaption, .cwfd-section-intro__lead {
	text-wrap: pretty;
}

/* Keep long prose to a readable measure without touching grid or
   product-card layout. */
.entry-content > p,
.post-content > p,
.woocommerce-product-details__short-description p,
.cwfd-how__step-desc,
.cwfd-blog-card__excerpt {
	max-width: var(--cwfd-measure);
}

/* ---------------------------------------------------------------
   3. Numerals
   Proportional figures make prices and totals jitter as they update
   or wrap in a column. Tabular figures line them up.
   --------------------------------------------------------------- */
.price,
.amount,
.woocommerce-Price-amount,
.product .price,
.products .price,
.cart_totals .amount,
.order-total .amount,
.woocommerce-orders-table td,
.woocommerce-table--order-details td,
.shop_table td,
.quantity input.qty,
.cart-qty,
.mini-cart-counter,
.cwfd-cat-card__ribbon,
.cwfd-testimonial__rating {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
}

/* Prices read as the same object everywhere: the loop was rendering
   them at 14px in one rule and 16px in another. */
.products li.product .price,
.cwfd-section ul.products li.product .price,
body.home ul.products li.product .price {
	font-size: var(--cwfd-fs-md) !important;
	font-weight: 800 !important;
	letter-spacing: -0.01em !important;
	line-height: 1.3 !important;
}

.products li.product .price del,
.products li.product .price .from {
	font-size: 0.78em !important;
	font-weight: 600 !important;
	opacity: 0.65;
}

/* ---------------------------------------------------------------
   4. Product and category titles
   --------------------------------------------------------------- */
.products li.product :is(h2, h3, .woocommerce-loop-product__title, .product-title),
.cwfd-section ul.products li.product .woocommerce-loop-product__title,
.cwfd-section ul.products li.product .product-title {
	font-family: var(--cwfd-font-headings) !important;
	font-size: var(--cwfd-fs-sm) !important;
	font-weight: 600 !important;
	line-height: 1.4 !important;
	letter-spacing: -0.005em !important;
	color: var(--cwfd-ink) !important;
	overflow-wrap: break-word;
}

/* ---------------------------------------------------------------
   5. Small labels
   8px and 9px badge text is below the point where a weight-700
   uppercase label stays legible. Raising the floor and opening the
   tracking keeps the same badge footprint but reads cleanly.
   --------------------------------------------------------------- */
.cwfd-cat-card__ribbon small {
	font-size: 10px;
	letter-spacing: var(--cwfd-ls-label);
}

.cwfd-testimonial__badge {
	font-size: 10px;
	letter-spacing: var(--cwfd-ls-label);
}

.cwfd-blog-card__meta,
.cwfd-blog:is(.post-meta, .post-date, .post-categories) {
	font-size: var(--cwfd-fs-xs) !important;
	letter-spacing: var(--cwfd-ls-label) !important;
	text-transform: uppercase;
	font-weight: 700 !important;
}

:is(.porto-product-category .count, .products .product-category .thumb-info-type) {
	font-size: var(--cwfd-fs-xs) !important;
	letter-spacing: var(--cwfd-ls-label) !important;
}

/* Uppercase runs need extra tracking to stop reading as a solid block. */
.cwfd-section-intro__eyebrow,
.cwfd-shop-cats .cwfd-eyebrow,
.cwfd-how .cwfd-section-intro__eyebrow,
.cwfd-how .cwfd-how__eyebrow,
.cwfd-footer-v2__heading,
.cwfd-footer h3 {
	letter-spacing: var(--cwfd-ls-caps) !important;
	font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------------
   6. Overflow safety
   Long SKUs, hyphen-free product names and pasted URLs are the usual
   cause of a stray horizontal scrollbar on narrow screens.
   --------------------------------------------------------------- */
.cwfd-section-title,
.cwfd-section-intro__title,
.cwfd-cat-card__title,
.cwfd-blog-card__title,
.product_title,
.entry-title,
.woocommerce-loop-product__title,
.shop_table td,
.shop_table th,
.woocommerce-orders-table td,
.breadcrumb li,
.cwfd-footer-v2__contact a,
.cwfd-footer a {
	overflow-wrap: break-word;
	word-break: normal;
	min-width: 0;
}

/* ---------------------------------------------------------------
   7. Responsive
   --------------------------------------------------------------- */

/* Tablet: the single-column heading ramp reaches its cap around
   1440px, so nothing extra is needed here beyond a slightly tighter
   measure. */
@media (max-width: 1024px) {
	:root {
		--cwfd-measure: 62ch;
	}
}

@media (max-width: 991px) {
	/* The horizontally scrolling primary menu had a visible native
	   scrollbar and no snap, which reads as a broken row rather than
	   a deliberate one. Same markup, same scroll behaviour. */
	#menu-primary-menu {
		scroll-snap-type: x proximity;
		scrollbar-width: none;
		scroll-padding-left: 14px;
		overscroll-behavior-x: contain;
	}

	#menu-primary-menu::-webkit-scrollbar {
		display: none;
	}

	#menu-primary-menu > li {
		scroll-snap-align: start;
	}

	#menu-primary-menu > li > a {
		font-size: var(--cwfd-fs-sm) !important;
		letter-spacing: 0.01em !important;
	}
}

@media (max-width: 767px) {
	:root {
		--cwfd-measure: 100%;
		/* Body copy stays at 15px on phones — the ramp already floors
		   there — but headings tighten so a three-word title does not
		   take three lines. */
		--cwfd-lh-body: 1.6;
	}

	h1 { letter-spacing: -0.02em; }
	h2, h3 { letter-spacing: -0.01em; }

	/* Buttons and links keep a 44px target; only the label is retuned. */
	.cwfd-btn,
	.cwfd-how-btn,
	.cwfd-footer-v2__btn,
	:is(.add_to_cart_button, .single_add_to_cart_button, .product-inner .button) {
		font-size: var(--cwfd-fs-sm) !important;
		letter-spacing: 0.01em !important;
	}

	/* Uppercase micro-labels lose tracking on small screens so they
	   fit the badge without shrinking further. */
	.cwfd-section-intro__eyebrow,
	.cwfd-shop-cats .cwfd-eyebrow,
	.cwfd-how .cwfd-how__eyebrow {
		letter-spacing: 0.12em !important;
	}
}

@media (max-width: 479px) {
	/* Below 480px the existing rules already pin section titles to
	   22px; matching the line height keeps two-line titles compact. */
	.cwfd-section-title:is(h1, h2, h3),
	.cwfd-section-title {
		line-height: 1.25 !important;
	}

	/* Tables are the one place a phone still needs to scroll. Giving
	   the wrapper its own scroller keeps the page itself from
	   scrolling sideways. */
	.shop_table,
	.woocommerce-orders-table,
	.woocommerce-table--order-details,
	.cart_totals table {
		font-size: var(--cwfd-fs-xs);
	}
}

/* Very wide screens: hold the measure rather than letting the ramp
   keep growing past the container. */
@media (min-width: 1700px) {
	:root {
		--cwfd-fs-h2: 36px;
	}
}

/* ---------------------------------------------------------------
   8. Finishing details
   --------------------------------------------------------------- */
::selection {
	background: rgb(0 112 243 / 0.16);
	color: var(--cwfd-ink);
}

/* Anchored jumps from the sticky header no longer land under it. */
:target {
	scroll-margin-top: 96px;
}

/* Print: the gradients and shadows waste toner on a picked order. */
@media print {
	body {
		background: #fff !important;
		color: #000 !important;
		font-size: 12pt;
	}

	.cwfd-footer,
	.cwfd-footer-v2,
	.cwfd-marquee,
	.back-to-top,
	#menu-primary-menu {
		display: none !important;
	}

	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 9pt;
		word-break: break-all;
	}
}

/* =====================================================
   CWFD TYPE SYSTEM  —  v1.2.0
   Serif headings (Newsreader) over a sans body (Plus
   Jakarta Sans). Appended last so it wins the cascade.
   Brand palette (navy / gold / green / ink / border) is
   deliberately left alone; only the two text colours
   named in the brief change.
   ===================================================== */

:root {
	/* Newsreader carries a real optical-size axis, which is why the
	   base layer sets font-optical-sizing:auto — the 36px section
	   titles get the display cut, the 13px product titles get the
	   text cut, from one file. */
	--cwfd-font-headings: "Newsreader", Georgia, "Times New Roman", serif;

	--cwfd-heading: #0e2a52;
	--cwfd-text: #697587;

	/* Serifs need far less negative tracking than a geometric sans;
	   the brief's -0.005em replaces the old -0.015/-0.025 ramp. */
	--cwfd-ls-heading: -0.005em;
	--cwfd-ls-display: -0.005em;
	--cwfd-ls-label: 0.08em;
	--cwfd-ls-caps: 0.08em;

	/* A touch more air than the sans wanted. */
	--cwfd-lh-display: 1.15;
	--cwfd-lh-tight: 1.25;
	--cwfd-lh-snug: 1.4;
}

/* ---------------------------------------------------------------
   1. Headings  →  Newsreader 500-600
   --------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--cwfd-font-headings) !important;
	color: var(--cwfd-heading);
	letter-spacing: -0.005em;
	font-optical-sizing: auto;
	text-wrap: balance;
}

h1 { font-weight: 500; line-height: var(--cwfd-lh-display); }
h2 { font-weight: 600; line-height: var(--cwfd-lh-tight); }
h3 { font-weight: 600; line-height: var(--cwfd-lh-tight); }
h4, h5, h6 { font-weight: 600; line-height: var(--cwfd-lh-snug); }

/* The section-title rules above carry !important on weight and
   colour, so these have to match that specificity to land. */
.cwfd-section-title,
.cwfd-section-title:is(h1, h2, h3, h4),
.cwfd-section-intro__title,
.cwfd-shop-cats .cwfd-section-title h2,
.cwfd-how .cwfd-section-intro__title,
.cwfd-how .cwfd-how__title {
	font-family: var(--cwfd-font-headings) !important;
	font-weight: 600 !important;
	color: var(--cwfd-heading) !important;
	letter-spacing: -0.005em !important;
	font-optical-sizing: auto;
}

/* Product and category titles are headings in this system. */
.products li.product :is(h2, h3, .woocommerce-loop-product__title, .product-title),
.cwfd-section ul.products li.product .woocommerce-loop-product__title,
.cwfd-section ul.products li.product .product-title,
.products li.product-category h3,
.products .product-category h3,
.cwfd-cat-card__title,
.cwfd-blog-card__title,
.cwfd-blog:is(.post-title, .entry-title),
.product_title {
	font-family: var(--cwfd-font-headings) !important;
	font-weight: 600 !important;
	color: var(--cwfd-heading) !important;
	letter-spacing: -0.005em !important;
	font-optical-sizing: auto;
}

/* ---------------------------------------------------------------
   2. Everything else  →  Plus Jakarta Sans
   Body, descriptions, prices, buttons, labels and tables all stay
   on the sans so the serif reads as a deliberate heading voice
   rather than a whole-site typeface swap.
   --------------------------------------------------------------- */
body,
p, li, dd, dt, td, th, caption, figcaption, blockquote,
input, select, textarea, button, label,
.price, .amount, .woocommerce-Price-amount,
.button, .btn, a.button, a.btn,
.cwfd-btn, .cwfd-how-btn, .cwfd-btn--pill,
.cwfd-section-intro__lead, .cwfd-how__lead,
.cwfd-cat-card__desc, .cwfd-cat-card__cta,
.cwfd-blog-card__excerpt, .cwfd-blog-card__link,
.cwfd-testimonial__quote, .cwfd-testimonial__role,
.shop_table, .woocommerce-orders-table, .woocommerce-table--order-details,
.cwfd-footer-v2__btn,
.cwfd-footer-v2__phone-cta strong,
.cwfd-footer-v2__newsletter input[type="submit"],
.cwfd-footer-v2__links a,
.cwfd-footer-v2__contact a,
.cwfd-footer-v2__tagline {
	font-family: var(--cwfd-font) !important;
}

body,
p, li, dd, .cwfd-cat-card__desc, .cwfd-blog-card__excerpt {
	color: var(--cwfd-text);
}

/* ---------------------------------------------------------------
   3. Prices and figures  →  Jakarta 800, tabular
   --------------------------------------------------------------- */
.price,
.amount,
.woocommerce-Price-amount,
.products .price,
.products li.product .price,
.cwfd-section ul.products li.product .price,
body.home ul.products li.product .price,
.cart_totals .amount,
.order-total .amount {
	font-family: var(--cwfd-font) !important;
	font-weight: 800 !important;
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
	color: var(--cwfd-heading) !important;
	letter-spacing: -0.01em !important;
}

.products li.product .price del,
.products li.product .price .from {
	font-weight: 600 !important;
	opacity: 0.6;
}

/* Quantities, counters and order tables line up too. */
.quantity input.qty,
.cart-qty,
.mini-cart-counter,
.shop_table td,
.woocommerce-orders-table td,
.woocommerce-table--order-details td {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
}

/* ---------------------------------------------------------------
   4. Mini labels  →  Jakarta 700, uppercase, 0.08em
   Placed after the heading block on purpose: several of these are
   h3/h4 elements and must win the font-family back.
   --------------------------------------------------------------- */
.cwfd-section-intro__eyebrow,
.cwfd-shop-cats .cwfd-eyebrow,
.cwfd-how .cwfd-section-intro__eyebrow,
.cwfd-how .cwfd-how__eyebrow,
.cwfd-marquee .cwfd-section-intro__eyebrow,
.cwfd-footer-v2__heading,
.cwfd-footer h3,
.cwfd-cat-card__ribbon,
.cwfd-cat-card__ribbon small,
.cwfd-testimonial__badge,
.cwfd-blog-card__meta,
.cwfd-blog:is(.post-meta, .post-date, .post-categories),
:is(.porto-product-category .count, .products .product-category .thumb-info-type),
.onsale,
.cwfd-section ul.products li.product .onsale,
.cwfd-footer-v2__trust strong {
	font-family: var(--cwfd-font) !important;
	font-weight: 700 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.08em !important;
}

/* ---------------------------------------------------------------
   5. Responsive
   The serif holds its shape better than the sans did at small
   sizes, so tracking stays put; only the heading rag is retuned.
   --------------------------------------------------------------- */
@media (max-width: 767px) {
	h1, h2, h3, h4, h5, h6,
	.cwfd-section-title,
	.cwfd-section-intro__title {
		letter-spacing: -0.005em !important;
	}

	/* Buttons and labels stay on the sans at phone sizes. */
	.cwfd-btn,
	.cwfd-how-btn,
	.cwfd-footer-v2__btn,
	:is(.add_to_cart_button, .single_add_to_cart_button, .product-inner .button) {
		font-family: var(--cwfd-font) !important;
		letter-spacing: 0.01em !important;
	}
}

@media (max-width: 479px) {
	/* Tighter mini-label tracking so badges still fit their pill. */
	.cwfd-section-intro__eyebrow,
	.cwfd-shop-cats .cwfd-eyebrow,
	.cwfd-how .cwfd-how__eyebrow,
	.cwfd-cat-card__ribbon small,
	.cwfd-testimonial__badge {
		letter-spacing: 0.06em !important;
	}
}

/* ---------------------------------------------------------------
   6. Page-builder sections
   Several homepage sections are raw-HTML widgets that ship their
   own <style> block and hardcode a family. Most of them reference
   var(--cwfd-font*) and so follow the swap automatically; these
   eight elements name Outfit or Poppins directly. Outfit is no
   longer loaded, so without this they would fall back to a system
   sans. All eight are buttons, labels or numbers -> the sans.
   --------------------------------------------------------------- */
html body .bp-section .bp-meta strong,
html body .bp-section a.bp-cta,
html body .cwfd-hs-cta a.cwfd-hs-cta__btn,
html body .cwfd-hs-cta .cwfd-hs-cta__phone-num,
html body .cwfd-footer-news small,
html body .cwfd-footer-bottom nav a {
	font-family: var(--cwfd-font) !important;
}

/* The phone number is a figure, so it gets the lining treatment. */
html body .cwfd-hs-cta .cwfd-hs-cta__phone-num {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
	font-weight: 800 !important;
}

/* These sections declare 800/900 heading weights. The 400..600
   Newsreader clamps them to 600 on its own; setting it explicitly
   keeps the computed value inside the brief's 500-600 range. */
html body :is(.cwfd-hs-h1, .cwfd-mem__title) {
	font-weight: 600 !important;
}

/* ---------------------------------------------------------------
   7. Mobile header and drawer
   The .cwfd-mx-* component ships its own <style> block pinned to
   the system stack, which left 74 elements off the type system on
   phones only — desktop was already clean. Icon elements are
   excluded so nothing swaps out an icon-font glyph.
   --------------------------------------------------------------- */
html body [class*="cwfd-mx"],
html body [class*="cwfd-mx"] :is(a, span, p, li, div, button, input, label, strong, em, small, td, th):not(i):not([class*="icon"]):not([class*="fa-"]) {
	font-family: var(--cwfd-font) !important;
}

html body [class*="cwfd-mx"] :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--cwfd-font-headings) !important;
	font-weight: 600 !important;
	letter-spacing: -0.005em !important;
}

/* =====================================================
   CWFD CARD & LAYOUT REFINEMENT  —  v1.2.2
   ===================================================== */

/* ---- 1. Product titles: three lines on phones ---------------------
   Measured at 430px: line-height 1.4em, and a 2-line clamp gave a
   42px box while the titles scrolled to 56px — so every one lost its
   third line, which is exactly where the pack size sits
   ("...Sorbet 500g"). For a wholesale buyer that is the part that
   separates one SKU from another. Desktop archives are unclamped and
   were never affected, so this is phones only. min-height is pinned
   to three lines so cards stay aligned regardless of title length.
   ------------------------------------------------------------------ */
@media (max-width: 767px) {
	.products li.product :is(.woocommerce-loop-product__title, .product-title),
	.cwfd-section ul.products li.product :is(.woocommerce-loop-product__title, .product-title),
	body.home ul.products li.product :is(.woocommerce-loop-product__title, .product-title) {
		-webkit-line-clamp: 3 !important;
		line-clamp: 3 !important;
		min-height: calc(1.4em * 3) !important;
		overflow-wrap: break-word;
	}
}

/* ---- 2. "Register to view pricing" --------------------------------
   It renders inside the .price slot, so it inherited the price
   treatment — 16.4px, weight 800, underlined — and shouted louder
   than the product name above it. It is still the card's call to
   action, one step quieter than the title. inline-block rather than
   inline-flex keeps the arrow attached to the last word when the
   label wraps; vertical padding holds the tap target.
   ------------------------------------------------------------------ */
.cwfd-register-price-link,
a.cwfd-register-price-link {
	display: inline-block !important;
	min-height: 0 !important;
	padding: 9px 0 !important;
	color: var(--cwfd-blue-bright) !important;
	font-family: var(--cwfd-font) !important;
	font-size: clamp(12px, 0.3vw + 10.7px, 13.5px) !important;
	font-weight: 700 !important;
	line-height: 1.35 !important;
	letter-spacing: 0.01em !important;
	text-decoration: none !important;
	text-underline-offset: 3px;
}

.cwfd-register-price-link::after {
	display: inline;
	content: "\00a0\2192";
}

.cwfd-register-price-link:hover,
.cwfd-register-price-link:focus-visible {
	color: var(--cwfd-blue) !important;
	text-decoration: underline !important;
}

/* The member-side counterpart, printed in the same .price slot when someone is
   signed in but a price still cannot be shown — a group with pricing withheld,
   or an account still waiting on approval. Deliberately quieter than the guest
   link: it is a statement, not a call to action, so there is nothing to click
   and nothing to chase. See frozb_hcpp_member_price_prompt(). */
.cwfd-member-price-note {
	display: inline-block;
	padding: 9px 0;
	color: var(--cwfd-muted);
	font-family: var(--cwfd-font);
	font-size: clamp(12px, 0.3vw + 10.7px, 13.5px);
	font-weight: 600;
	line-height: 1.35;
}

.cwfd-member-price-note.is-pending {
	color: var(--cwfd-amber);
	font-weight: 700;
}

/* ---- 3. Out-of-stock badge ----------------------------------------
   Was a solid white 153x46 band carrying near-black 15.3px text
   across the product shot — larger and brighter than the product
   name, and it blanked out the photo behind it. Now a compact slate
   pill in the corner, using the same mini-label treatment as the
   rest of the system, with the image eased back so the state still
   reads at a glance.
   ------------------------------------------------------------------ */
.products li.product .stock.out-of-stock,
li.product.outofstock .stock.out-of-stock,
.product .stock.out-of-stock {
	top: 10px !important;
	right: auto !important;
	bottom: auto !important;
	left: 10px !important;
	z-index: 3 !important;
	display: inline-flex !important;
	align-items: center;
	width: auto !important;
	max-width: calc(100% - 20px) !important;
	height: auto !important;
	margin: 0 !important;
	padding: 5px 11px !important;
	color: #fff !important;
	font-family: var(--cwfd-font) !important;
	font-size: 10px !important;
	font-weight: 700 !important;
	line-height: 1.4 !important;
	letter-spacing: 0.08em !important;
	text-transform: uppercase !important;
	white-space: nowrap !important;
	background: rgb(15 23 42 / .82) !important;
	border-radius: var(--cwfd-radius-pill) !important;
	box-shadow: 0 2px 8px rgb(0 0 0 / .18) !important;
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}

li.product.outofstock :is(.product-image, .thumb-info-wrapper, .woocommerce-loop-product__link) img {
	opacity: 0.72;
	filter: saturate(0.65);
}

/* ---- 4. Page width: one container for every boxed page ------------
   On screens wider than the 1480px container this site split into two
   behaviours. Page-builder templates (.column1.wide > .container-fluid
   — the homepage, contact) self-constrain: their components sit at
   1480px centred. But the boxed templates (.column1.boxed > .container
   — cart, checkout, my-account, shop, categories, products, blog) had
   their container neutralised by the old `.container{max-width:100%}`
   rule near the top of this file, so they ran edge to edge: 1885px of
   content on a 1905px screen.

   Restoring a max-width on that one container lines every boxed page
   up with the page-builder pages — measured on a 1905px viewport, all
   of them now start at left 193 with ~1480px of content, matching
   .cwfd-section__inner on the homepage exactly.

   Scoped to `.column1 > div.container` on purpose:
     - .container-fluid is untouched, so full-bleed page-builder rows
       and coloured section bands still bleed;
     - header and footer containers are nested deeper and unaffected;
     - below 1520px it is a no-op, so nothing changes on tablet/mobile.
   The +40px covers the 10px padding on the container and on
   .main-content, so the inner content lands on 1480 rather than 1440.
   ------------------------------------------------------------------ */
.column1 > div.container {
	max-width: calc(var(--cwfd-container) + 40px) !important;
	margin-right: auto !important;
	margin-left: auto !important;
}

/* ---- 4b. Shop and category archives: reclaim the phone viewport -----
   Measured on the live shop archive at 375px: the product grid rendered
   235px wide inside a 259px column, and sat 40px left of centre — 38px of
   gutter on the left, 78px on the right. 140px of a 375px screen, 37% of
   the phone, spent on nested padding.

   Two separate faults, stacked:

   1. FOUR GUTTERS FOR ONE. The archive template nests
      .vc_row.porto-inner-container (14px) inside .porto-wrap-container
      (14px) inside .vc_column_container (10px), each adding its own inset
      on top of the page .container's own. On desktop that is 76px out of
      1520 and invisible; on a phone it is a third of the screen.

   2. THE OFF-CENTRE SHIFT. Porto's `.row` uses the Bootstrap negative
      side margins that expect the parent's padding to absorb them, but it
      also carries `max-width: 100%`. The negative margin moves the row
      left while max-width refuses to let it grow, so every nested row
      loses its width on the right only. Two of them in this chain, 20px
      each, is the 40px shift. Zeroing the margins is what re-centres the
      page; without it, widening the containers just makes a wider
      off-centre block.

   Result at 375px: cards go 235px -> 311px with 32px of gutter on both
   sides, matching the hero and the filter card above them. At 768px:
   589px -> 669px, centred. Above 1024px this block does not apply and
   desktop is untouched, verified identical at 1280px.

   Scoped to the three WooCommerce archive body classes so ordinary
   page-builder pages, the cart and the account pages keep their own
   spacing.
   ------------------------------------------------------------------ */
@media (max-width: 1024px) {
	body.post-type-archive-product .row.main-content-wrap,
	body.tax-product_cat .row.main-content-wrap,
	body.archive.woocommerce .row.main-content-wrap {
		margin-right: 0 !important;
		margin-left: 0 !important;
	}

	body.post-type-archive-product .vc_row.porto-inner-container,
	body.tax-product_cat .vc_row.porto-inner-container,
	body.archive.woocommerce .vc_row.porto-inner-container,
	body.post-type-archive-product .porto-wrap-container,
	body.tax-product_cat .porto-wrap-container,
	body.archive.woocommerce .porto-wrap-container,
	body.post-type-archive-product .vc_column_container,
	body.tax-product_cat .vc_column_container,
	body.archive.woocommerce .vc_column_container {
		padding-right: 0 !important;
		padding-left: 0 !important;
	}

	body.post-type-archive-product .porto-wrap-container > .row,
	body.tax-product_cat .porto-wrap-container > .row,
	body.archive.woocommerce .porto-wrap-container > .row {
		margin-right: 0 !important;
		margin-left: 0 !important;
	}
}

/* ---- 5. Product card: quantity stepper + ADD, one aligned control ---
   The stepper and the ADD button are drawn by WC Easy Quantity Grid as two
   halves of a single joined control, but two card rules further up this file
   were catching the ADD link as if it were an ordinary card button:

     · `.products li.product :is(.button,a.button,.add_to_cart_button)` gave it
       `width:100%`, `height:auto` and `margin-top:8px`, so it broke out of the
       row, grew taller than the stepper beside it and sat 8px lower;
     · the homepage/section rule flattened its right-hand corners to 0.

   Both now skip `.ezq-add-cart`, and the pair is sized from one custom property
   so the two halves are always exactly the same height — on the shop grid, in
   Porto carousels, in related/upsell strips and on the homepage sections alike.
   Sizes step down once on small phones, together, so they stay matched.
   ------------------------------------------------------------------ */
.ezq-wrapper {
	--cwfd-ezq-h: 42px;
	--cwfd-ezq-qty-w: 100px;
	display: flex !important;
	flex-direction: row !important;
	align-items: stretch !important;
	gap: 0 !important;
	width: 100% !important;
	margin-top: 10px !important;
	box-sizing: border-box;
}

/* `display:flex` is restated rather than inherited from the quantity plugin's own
   stylesheet: that sheet is enqueued only on WooCommerce, cart, front page and
   ordinary pages, so a product carousel on a search-results or 404 page loses it
   and the -/+ buttons get clipped by the group's overflow. */
.ezq-wrapper .ezq-qty-group {
	display: flex !important;
	align-items: stretch !important;
	flex: 0 0 var(--cwfd-ezq-qty-w) !important;
	width: var(--cwfd-ezq-qty-w) !important;
	height: var(--cwfd-ezq-h) !important;
	min-height: var(--cwfd-ezq-h) !important;
	margin: 0 !important;
	overflow: hidden;
	background: #fff;
	border: 1px solid var(--cwfd-border) !important;
	border-right: 0 !important;
	border-radius: var(--cwfd-radius-sm) 0 0 var(--cwfd-radius-sm) !important;
	box-sizing: border-box;
}

.ezq-wrapper .ezq-btn {
	flex: 0 0 30px !important;
	width: 30px !important;
	height: 100% !important;
	min-height: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	color: var(--cwfd-muted) !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	background: var(--cwfd-bg-soft) !important;
	border: 0 !important;
	border-radius: 0 !important;
	cursor: pointer;
	transition: background var(--cwfd-trans-fast), color var(--cwfd-trans-fast);
}

.ezq-wrapper .ezq-btn:hover {
	color: var(--cwfd-blue) !important;
	background: var(--cwfd-blue-light) !important;
}

/* `flex: 1 1 0` rather than `1 1 auto`: an <input> carries an intrinsic width
   from its size attribute, and with an auto basis it refuses to shrink below it,
   pushing the + button out of the group. A zero basis makes the field take
   whatever is left between the two buttons and nothing more. */
.ezq-wrapper .ezq-input {
	flex: 1 1 0 !important;
	width: auto !important;
	min-width: 0 !important;
	height: 100% !important;
	min-height: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	color: var(--cwfd-ink) !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	text-align: center !important;
	background: #fff !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	-moz-appearance: textfield;
}

.ezq-wrapper .ezq-input:focus {
	outline: none;
	background: var(--cwfd-blue-light) !important;
}

/* The repeated class is load-bearing: it lifts this above the homepage-section
   rule (`.cwfd-section ul.products li.product a.ezq-add-cart`) without having to
   restate that whole selector chain here. */
.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button {
	flex: 1 1 auto !important;
	width: auto !important;
	min-width: 0 !important;
	height: var(--cwfd-ezq-h) !important;
	min-height: var(--cwfd-ezq-h) !important;
	max-height: var(--cwfd-ezq-h) !important;
	padding: 0 12px !important;
	margin: 0 !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	color: #fff !important;
	font-size: 12px !important;
	font-weight: 800 !important;
	letter-spacing: 0.04em !important;
	line-height: 1 !important;
	text-align: center !important;
	text-decoration: none !important;
	text-transform: uppercase !important;
	white-space: nowrap;
	background: var(--cwfd-blue) !important;
	border: 1px solid var(--cwfd-blue) !important;
	border-radius: 0 var(--cwfd-radius-sm) var(--cwfd-radius-sm) 0 !important;
	box-sizing: border-box;
	transition: background var(--cwfd-trans-fast), border-color var(--cwfd-trans-fast);
}

.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button:hover {
	background: var(--cwfd-blue-dark) !important;
	border-color: var(--cwfd-blue-dark) !important;
}

.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button.added,
.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button.loading {
	background: #16a34a !important;
	border-color: #16a34a !important;
}

/* Products that fall back to the plain Woo button keep the full-width shape. */
.ezq-wrapper.simple-btn {
	display: block !important;
}

/* Touch behaviour for the stepper.

   The reported defect: on iPhone and iPad, tapping + or - a few times in a row
   to reach a case quantity left the whole page zoomed in, with no way back out
   short of pinching. Two separate causes, both fixed here rather than in JS.

     · Repeated taps on the same 26px button inside iOS's ~300ms double-tap
       window are indistinguishable from a double-tap, so Safari zoomed to the
       tapped element. `touch-action: manipulation` tells the browser this
       element never participates in double-tap zoom, which also removes the
       300ms click delay. Page-level pinch zoom is untouched — the viewport is
       not locked, so WCAG 1.4.4 still holds.
     · Tapping the number field itself zoomed on focus, because iOS zooms any
       form field whose computed font-size is under 16px and never zooms back.
       The field was deliberately held at 13px (see the note in section 8) to
       keep three digits inside an 86px group. The group is widened on touch
       instead, so 16px and a 999 quantity both fit — measured at 320px, the
       narrowest card on the site, with 0px overflow on the field and on ADD.

   A fast repeat tap also used to start a text selection on the "-" glyph and
   raise the iOS callout; both are suppressed below. */
.ezq-wrapper .ezq-btn,
.ezq-wrapper a.ezq-add-cart.button {
	touch-action: manipulation;
	-webkit-user-select: none;
	user-select: none;
	-webkit-touch-callout: none;
}

/* Touch devices get no hover, so the only feedback that a tap registered is
   :active. Without it a customer who taps + and sees nothing taps again. */
.ezq-wrapper .ezq-btn:active {
	color: var(--cwfd-blue) !important;
	background: var(--cwfd-blue-light) !important;
}

/* `(pointer: coarse)` rather than width alone: a 1024px iPad Pro in portrait is
   past the 991px breakpoint but zooms exactly like a phone. Width is kept as a
   second condition so a narrow desktop window still gets the roomier control. */
@media (pointer: coarse), (max-width: 991px) {
	.ezq-wrapper {
		--cwfd-ezq-h: 44px;
		--cwfd-ezq-qty-w: 132px;
	}

	.ezq-wrapper .ezq-btn {
		flex: 0 0 44px !important;
		width: 44px !important;
		font-size: 18px !important;
	}

	.ezq-wrapper .ezq-input {
		font-size: 16px !important;
	}
}

/* Phones: the card is ~150-220px wide, so the group gives width back to ADD in
   two steps. Buttons stay at or above 36px in both axes and the pair keeps a
   44px height, so the combined target never drops below the platform floor. */
@media (max-width: 575px) {
	.ezq-wrapper {
		--cwfd-ezq-qty-w: 120px;
		margin-top: 8px !important;
	}

	.ezq-wrapper .ezq-btn {
		flex: 0 0 40px !important;
		width: 40px !important;
	}

	.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button {
		padding: 0 6px !important;
		font-size: 11px !important;
		letter-spacing: 0.02em !important;
	}
}

@media (max-width: 360px) {
	.ezq-wrapper {
		--cwfd-ezq-qty-w: 106px;
	}

	.ezq-wrapper .ezq-btn {
		flex: 0 0 36px !important;
		width: 36px !important;
	}
}

/* Sized by the card, not by the screen.

   Every width rule above this point reads the viewport, and the viewport is the
   wrong question. How much room this control gets depends on which grid the card
   landed in, and the two do not move together — measured on the live site:

     · 430px phone, homepage promo grid two-up  -> 142px of card
     · 375px phone, shop archive one-up         -> 205px of card
     · 768px tablet, promo grid three-up        -> 160px of card
     · 1200px desktop, promo grid four-up       -> 208px of card

   So the narrower card is on the *wider* phone. A viewport rule that gives the
   stepper 132px is right for the shop archive and clips ADD down to 22px in the
   promo section on the same device — which is exactly the reported fault.

   Below 200px of real card width there is no honest way to fit a 3-digit field,
   two 44px buttons and a readable ADD on one line, so the control stacks: the
   stepper takes a full-width row, ADD takes another, and both get their corners
   back. Above it, the joined control is unchanged.

   `.ezq-shell` is the query container; see the note in the quantity plugin for
   why the containment lives on its own element. */
.ezq-shell {
	container-type: inline-size;
	container-name: ezq;
	width: 100%;
}

@container ezq (max-width: 200px) {
	.ezq-wrapper {
		flex-wrap: wrap !important;
		row-gap: 6px !important;
	}

	.ezq-wrapper .ezq-qty-group {
		flex: 1 0 100% !important;
		width: 100% !important;
		border-right: 1px solid var(--cwfd-border) !important;
		border-radius: var(--cwfd-radius-sm) !important;
	}

	.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button {
		flex: 1 0 100% !important;
		width: 100% !important;
		border-radius: var(--cwfd-radius-sm) !important;
	}
}

/* Fallback where container queries are unavailable. Flex wrapping cannot know
   the threshold, but a flex basis plus a floor on each half gets the same
   outcome: when the two no longer fit, ADD drops to its own row instead of
   being squeezed to nothing. */
@supports not (container-type: inline-size) {
	.ezq-wrapper {
		flex-wrap: wrap;
		row-gap: 6px;
	}

	.ezq-wrapper .ezq-qty-group {
		min-width: 106px !important;
	}

	.ezq-wrapper a.ezq-add-cart.ezq-add-cart.button {
		min-width: 64px !important;
	}
}

/* ---- 6. Product labels: New / Sale / Hot -------------------------
   Porto ships these as flat rectangles in a heavy, wide-tracked face, and with
   the theme option set to "NEW ARRIVAL" the label was reading louder than the
   product name underneath it. They are now the same compact pill used by the
   out-of-stock state and the plugin's image badges: 10px, tight tracking, in
   the site font, with a soft shadow so they lift off the photo rather than
   punching a hole in it.

   The stack is a column at the top-left with a real gap, so a product that is
   both new and on sale shows two pills under each other instead of one
   overlapping the other. The plugin's Image Badge tags deliberately no longer
   share this corner — they render as chips under the product name instead.
   ------------------------------------------------------------------ */
.products li.product .labels,
.product .labels,
.product-inner .labels {
	position: absolute;
	top: 10px;
	left: 10px;
	right: auto;
	z-index: 4;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 5px;
	max-width: calc(100% - 20px);
	pointer-events: none;
}

.products li.product .labels :is(.onnew, .onsale, .onhot),
.product .labels :is(.onnew, .onsale, .onhot),
.product-inner .labels :is(.onnew, .onsale, .onhot) {
	position: static !important;
	top: auto !important;
	right: auto !important;
	bottom: auto !important;
	left: auto !important;
	display: inline-flex !important;
	align-items: center;
	width: auto !important;
	min-width: 0 !important;
	max-width: 100% !important;
	height: auto !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 5px 11px !important;
	color: #fff !important;
	font-family: var(--cwfd-font) !important;
	font-size: 10px !important;
	font-weight: 700 !important;
	line-height: 1.4 !important;
	letter-spacing: 0.08em !important;
	text-transform: uppercase !important;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	border: 0 !important;
	border-radius: var(--cwfd-radius-pill) !important;
	box-shadow: 0 2px 8px rgb(0 0 0 / .18) !important;
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}

/* New reads as a calm brand-blue statement; Sale and Hot are the loud ones,
   because those are the two that should pull the eye across a grid. */
.products li.product .labels .onnew,
.product .labels .onnew,
.product-inner .labels .onnew {
	background: rgb(0 62 125 / .92) !important;
}

.products li.product .labels .onsale,
.product .labels .onsale,
.product-inner .labels .onsale {
	background: rgb(217 4 41 / .94) !important;
}

.products li.product .labels .onhot,
.product .labels .onhot,
.product-inner .labels .onhot {
	background: rgb(245 158 11 / .96) !important;
	color: #231a05 !important;
}

/* The same discount, twice on one card: Porto's "-25%" corner badge over the
   photo and the plugin's "25% OFF" chip under the price. The chip is the one
   that stays — it sits with the struck-through price it refers to, so the
   number has something to be a percentage *of*.

   Written with :has() so the badge is only suppressed on cards that actually
   carry the chip. Guests see no price and therefore no chip, and on those cards
   the corner badge is the only discount signal there is, so it survives. If the
   chip is ever switched off in the plugin settings the badge comes back on its
   own, rather than leaving the card with no discount marker at all. */
.products li.product:has(.cwfd-chip--off) .labels .onsale,
.product:has(.cwfd-chip--off) .labels .onsale,
.product-inner:has(.cwfd-chip--off) .labels .onsale {
	display: none !important;
}

@media (max-width: 575px) {
	.products li.product .labels,
	.product .labels,
	.product-inner .labels {
		top: 7px;
		left: 7px;
		gap: 4px;
	}

	.products li.product .labels :is(.onnew, .onsale, .onhot),
	.product .labels :is(.onnew, .onsale, .onhot),
	.product-inner .labels :is(.onnew, .onsale, .onhot) {
		padding: 4px 9px !important;
		font-size: 9px !important;
	}
}

/* ---- 7. Out of stock: centred over the photo, not in the corner ---
   The corner pill had two problems. It shared the top-left with the New /
   Sale / Hot labels, so a product that was both hot and unavailable showed two
   stacked pills fighting for the same space; and at 10px in a corner it was
   easy to miss entirely — customers were reading the price, tapping, and only
   then finding out the product could not be bought.

   Centring the state over the product photo is the pattern the large retailers
   converged on (Zara, ASOS, Uniqlo, IKEA all overlay a centred "sold out" plate
   on a de-emphasised image; Woolworths and Coles do the same on grocery tiles).
   It works because the photo is the largest, first-scanned element of the card,
   so the state is read before the price rather than after it — and it hands the
   corner back to the promo labels.

   Three things carry the state together, which is what keeps it legible against
   any product shot: the photo is desaturated and lightened, a soft scrim sits
   over it, and the plate itself is dark with a blur behind it.

   Scoped to `.product-image` — that wrapper only exists on cards, so the single
   product page and the list view keep their own stock treatment.
   ------------------------------------------------------------------ */
.products li.product .product-image,
li.product .product-image {
	position: relative;
}

/* Scrim. Sits above the photo and below the plate, and stays click-through so
   the whole card is still a link to the product page. */
li.product.outofstock .product-image::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
	background: rgb(248 250 252 / .5);
	pointer-events: none;
}

li.product.outofstock .product-image .stock.out-of-stock,
.products li.product.outofstock .product-image .stock.out-of-stock {
	position: absolute !important;
	top: 50% !important;
	right: auto !important;
	bottom: auto !important;
	left: 50% !important;
	z-index: 3 !important;
	transform: translate(-50%, -50%);
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: auto !important;
	max-width: calc(100% - 32px) !important;
	height: auto !important;
	margin: 0 !important;
	padding: 9px 16px !important;
	color: #fff !important;
	font-family: var(--cwfd-font) !important;
	font-size: 11px !important;
	font-weight: 800 !important;
	line-height: 1.4 !important;
	letter-spacing: 0.1em !important;
	text-align: center !important;
	text-transform: uppercase !important;
	white-space: nowrap !important;
	background: rgb(15 23 42 / .84) !important;
	border-radius: var(--cwfd-radius-sm) !important;
	box-shadow: 0 8px 22px -8px rgb(15 23 42 / .55) !important;
	-webkit-backdrop-filter: blur(5px);
	backdrop-filter: blur(5px);
	pointer-events: none;
}

/* Push the photo back so the plate is the thing in focus. Slightly further than
   the old treatment, because the plate now sits on top of the busiest part of
   the shot rather than off in a corner. */
li.product.outofstock :is(.product-image, .thumb-info-wrapper, .woocommerce-loop-product__link) img {
	opacity: 0.6;
	filter: saturate(0.4);
}

/* The card body follows the photo — an unavailable product should not shout its
   price as loudly as the ones next to it that can actually be bought. */
li.product.outofstock .product-content :is(.price, .woocommerce-loop-product__title, .product-title) {
	opacity: 0.72;
}

@media (max-width: 575px) {
	li.product.outofstock .product-image .stock.out-of-stock,
	.products li.product.outofstock .product-image .stock.out-of-stock {
		padding: 7px 12px !important;
		font-size: 10px !important;
		letter-spacing: 0.08em !important;
	}
}

/* ---- 8. App feel: touch behaviour and tap targets -----------------
   Measured on the live site at 375px: 31 interactive controls on the
   homepage and a similar count on the shop grid were under 40px in at least
   one dimension — carousel dots at 9x7, the favourites heart at 36x36, the
   "Register to view pricing" link at 34px tall. Apple's and Google's guidance
   both put the floor at 44px/48dp, and under that a control does not feel
   broken so much as unreliable: it takes two goes, and two goes is what makes
   a site feel like a website rather than an app.

   The rest of this block is the small stuff that separates the two: no blue
   flash on tap, no text inflation on rotate, no rubber-band chaining out of a
   drawer, no hover state that sticks to a card after it has been tapped.
   ------------------------------------------------------------------ */

/* Kill the tap flash. Every control in here draws its own :active state, so
   the system highlight only ever arrives late and lands on the wrong shape. */
html {
	-webkit-tap-highlight-color: transparent;
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

/* Momentum scrolling inside anything that scrolls on its own — carousels, the
   price-break strip, the mega-menu drawer — and no scroll chaining out of it
   to the page behind, which is the single most app-unlike thing a mobile web
   page does. */
/* Containment is per-axis, and the axis matters.

   This rule used to say `overscroll-behavior: contain` — both axes — over a set
   that is almost entirely *horizontal* carousels, and that is what stopped the
   homepage scrolling under the cursor. `contain` blocks a scroll from chaining
   out of the box, and it applies to any scroll container, including one made by
   `overflow: hidden` that the user cannot scroll at all. `.cwfd-clean-viewport`
   is exactly that: the banner's `overflow: hidden` frame. A wheel over the
   banner found a scroll container that could not move vertically and was
   forbidden from handing the scroll to the page, so the page simply stopped.

   Only the horizontal axis was ever meant to be contained — the point was to
   stop a carousel rubber-banding the page sideways at the end of its travel.
   The banner plugin's own stylesheet already gets this right on its track
   (`overscroll-behavior-x: contain`); this rule now matches it.

   The mobile drawer keeps both axes. It is a genuine vertical scroller, and
   scrolling past its end must not start scrolling the page behind it — the one
   case in this list where containing the vertical axis is the intent.

   `.cwfd-clean-viewport` is dropped for the scroller it wraps,
   `.cwfd-clean-track`, since the frame never scrolled in the first place. */
.cwfd-mx-drawer-body {
	-webkit-overflow-scrolling: touch;
	overscroll-behavior: contain;
}

.cwfd-qp__tiles,
.cwfd-clean-track,
.bp-track,
.porto-products .owl-stage-outer,
.woocommerce-tabs .panel {
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-x: contain;
	overscroll-behavior-y: auto;
}

@media (max-width: 991px) {
	/* Touch devices: a card that has been tapped keeps :hover until something
	   else is tapped, so a "hovered" product card sits there looking selected
	   long after the finger has gone. Reserve the effect for real pointers. */
	@media (hover: none) {
		ul.products li.product:hover .product-inner,
		ul.products li.product:hover,
		.cwfd-section ul.products li.product:hover {
			transform: none !important;
		}
	}

	/* Carousel dots: 9x7 hit areas, sitting under the thumb on every banner.
	   The dot stays the size it was drawn; the padding around it does the
	   catching, so nothing about the design changes. */
	.cwfd-clean-dot,
	.bp-dot,
	.owl-dot {
		position: relative;
		min-width: 24px !important;
		min-height: 24px !important;
		padding: 0 !important;
		background-clip: content-box;
	}

	.cwfd-clean-dot::after,
	.bp-dot::after,
	.owl-dot::after {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		width: 44px;
		height: 44px;
		transform: translate(-50%, -50%);
	}

	/* Favourites heart — 36x36 on every card. */
	.cwfd-fav-loop-heart,
	.cwfd-fav-loop-heart a,
	.products li.product .add_to_wishlist,
	.products li.product .yith-wcwl-add-button > a {
		min-width: 44px !important;
		min-height: 44px !important;
		display: inline-flex !important;
		align-items: center !important;
		justify-content: center !important;
	}

	/* Text links that act as buttons — "Register to view pricing", the banner
	   CTAs, the "Explore the full range" link — all measured at 34px.

	   Written as `a.<class>` deliberately. The register link already carries a
	   `min-height: 0 !important` from its own plugin under the selector
	   `a.cwfd-register-price-link`, and a bare class here loses to it on
	   specificity no matter how late it appears in the file.

	   The card ADD button is excluded by name. It is half of a joined control
	   sized against the quantity stepper beside it (section 5), and forcing 44px
	   onto it alone would leave the two halves mismatched — the exact defect
	   section 5 exists to fix. It already clears 38px, and the stepper it is
	   welded to gives the pair a 38px-tall combined target. */
	a.cwfd-register-price-link,
	a.bp-cta,
	a.cwfd-clean-btn,
	.products li.product a.button:not(.ezq-add-cart),
	.woocommerce-pagination a,
	.woocommerce-pagination span {
		min-height: 44px !important;
		display: inline-flex !important;
		align-items: center !important;
		justify-content: center !important;
	}

	/* Footer navigation: 10 links at 36px, stacked close enough that a missed
	   tap lands on the neighbour. Padding rather than min-height, so the extra
	   room goes between the rows instead of inside the text block. */
	.cwfd-footer-col ul li > a,
	.cwfd-footer-contact li > a,
	.cwfd-footer-bottom nav a {
		display: inline-flex !important;
		align-items: center !important;
		min-height: 44px !important;
		padding-top: 2px !important;
		padding-bottom: 2px !important;
	}

	.cwfd-footer-social a {
		min-width: 44px !important;
		min-height: 44px !important;
		display: inline-flex !important;
		align-items: center !important;
		justify-content: center !important;
	}

	/* Nothing readable should sit under 12px on a phone. Below that a customer
	   either zooms or guesses, and both break the flow of an order. */
	.cwfd-v2-help__sub,
	.cwfd-v2-acct__top,
	.cwfd-mem__step-meta,
	.cart-items,
	.products li.product .price small,
	.woocommerce-loop-product__title small {
		font-size: 12px !important;
	}

	/* Inputs at 16px so iOS Safari stops zooming the viewport on focus — the
	   single most jarring thing that happens when placing an order on a phone,
	   because the page never zooms back out on its own.

	   The card quantity field used to be excluded here, held at 13px so three
	   digits would fit inside an 86px group. That exclusion was the reason
	   tapping the field on an iPhone zoomed the page in and stranded it there.
	   The group is widened on touch in section 5 instead, so there is no longer
	   a field on this site that iOS has a reason to zoom. */
	input[type="text"],
	input[type="email"],
	input[type="tel"],
	input[type="url"],
	input[type="number"],
	input[type="password"],
	input[type="search"],
	select,
	textarea {
		font-size: 16px !important;
	}
}

/* Double-tap zoom, everywhere a control is tapped more than once in a row.

   The card stepper is handled in section 5, but it is not the only one: the
   single-product quantity box, the cart quantity, B2BKing's bulk-order rows and
   the favourites quick-order panel all pair a - and a + that customers tap
   repeatedly, and every one of them was zooming the page on the second tap.

   `touch-action: manipulation` opts these elements out of double-tap zoom only.
   It does not lock the viewport, so pinch-to-zoom on the page still works and
   nothing here fails WCAG 1.4.4 — unlike a `user-scalable=no` viewport, which
   is also the reason that approach is not used on this site. */
button,
summary,
[role="button"],
input[type="button"],
input[type="submit"],
input[type="reset"],
a.button,
.button,
.ezq-btn,
.ezq-add-cart,
.quantity .plus,
.quantity .minus,
.quantity .qty-plus,
.quantity .qty-minus,
.cwfd-fav-stepper button,
.b2bking_cream_input_minus_button,
.b2bking_cream_input_plus_button {
	touch-action: manipulation;
}

/* The same 16px floor for every quantity field that lives outside the
   breakpoint block above — B2BKing renders its bulk-order grid at any width,
   and an iPad Pro in portrait is 1024px wide but zooms like a phone. */
@media (pointer: coarse) {
	.ezq-input,
	.quantity input.qty,
	.cwfd-fav-stepper input,
	input.b2bking_bulkorder_qty_input,
	.b2bking_bulkorder_form_container input[type="number"] {
		font-size: 16px !important;
	}

	/* A stepper button is tapped in bursts; without this the second tap selects
	   the glyph and iOS raises the copy/define callout over the control. */
	.quantity .plus,
	.quantity .minus,
	.cwfd-fav-stepper button,
	.b2bking_cream_input_minus_button,
	.b2bking_cream_input_plus_button {
		-webkit-user-select: none;
		user-select: none;
		-webkit-touch-callout: none;
	}
}

/* Respect a reduced-motion preference: the shimmer on the add-to-cart CTA and
   the carousel transitions are decorative, and on a device set to reduce motion
   they read as jitter. */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---- 9. Compliance pages: one typographic standard ----------------
   Audited across the four policy pages linked in the footer. The privacy and
   shipping policies already share a house standard — page title in Newsreader,
   a CONTENTS block, numbered section headings in Newsreader 600 at #003d7a,
   body in Plus Jakarta Sans. The other two had drifted:

     · Terms & Conditions had no headings in the document at all. Its title was
       hidden by the theme and every section label ("Registration", "Payment")
       was a bare <strong> at 16px in body grey, inside the same paragraph as
       the text it introduced. Visually it read as an undifferentiated wall of
       bold-and-grey; structurally there was nothing for search engines or a
       screen reader to navigate by.
     · The FAQ used weight 800 and #143050 where the policies use 600 and
       #003d7a — close enough to look like a mistake rather than a choice.

   This block moves those two onto the existing standard rather than inventing
   a third one, so the policies keep the design they already have.
   ------------------------------------------------------------------ */

/* ── Terms & Conditions ── */

/* The theme hides .entry-title site-wide because most templates supply their
   own hero. The policies do; this page does not, so it was left with no visible
   title whatsoever. Shown only here. */
body.cwfd-legal--terms-conditions .main-content .entry-title {
	display: block !important;
	margin: 0 auto 8px !important;
	color: var(--cwfd-blue) !important;
	font-family: var(--cwfd-font-headings, "Newsreader", Georgia, serif) !important;
	font-size: clamp(28px, 3.4vw, 38px) !important;
	font-weight: 600 !important;
	line-height: 1.15 !important;
}

/* A measure. Paragraphs ran the full 1417px of the content column — measured at
   177 characters a line, more than twice a comfortable measure, and the reason
   the page read as a legal dump rather than a page of the site.

   Stated in pixels rather than `ch` on purpose. The `ch` unit is the width of
   the digit zero, and in Plus Jakarta Sans that is 11.72px against an average
   character width of 7.71px on this page — so `78ch` resolves to 914px, which
   is 119 characters, not 78. `ch` also scales with each element's own font
   size, so the same declaration produced 1810px on the 38px title. 640px is
   ~83 characters at this font, which suits the long words and defined terms
   legal copy is full of. */
body.cwfd-legal--terms-conditions .main-content .wpb_wrapper > *,
body.cwfd-legal--terms-conditions .main-content .entry-title {
	max-width: 640px;
	margin-left: auto;
	margin-right: auto;
}

body.cwfd-legal--terms-conditions .main-content p {
	/* `auto` on the sides, not 0 — this shorthand runs after the measure rule
	   above and a `0` here would silently undo its centring. */
	margin: 0 auto 22px;
	color: var(--cwfd-text) !important;
	font-size: 16px;
	line-height: 1.75 !important;
}

/* Promote the section labels.
   Every one of them is the first child of its paragraph, followed by a <br>
   and then the section text. There is not a single mid-sentence <strong> on
   the page, so first-child is an exact match for "this is a section label"
   here — but it is a match on shape, not meaning. If this page is ever rebuilt,
   rebuild it with real <h2> elements and delete this rule: it makes the labels
   look like headings, it cannot make them be headings, and the SEO and screen
   reader benefit only comes from the real thing. */
body.cwfd-legal--terms-conditions .main-content p > strong:first-child {
	display: block;
	margin: 34px 0 10px;
	color: var(--cwfd-blue) !important;
	font-family: var(--cwfd-font-headings, "Newsreader", Georgia, serif) !important;
	font-size: 22px !important;
	font-weight: 600 !important;
	line-height: 1.25 !important;
	letter-spacing: -0.01em;
}

/* The <br> that followed the label is now a blank line under a block element. */
body.cwfd-legal--terms-conditions .main-content p > strong:first-child + br {
	display: none;
}

/* First label sits directly under the page title, so it does not need the
   separating space the others do. */
body.cwfd-legal--terms-conditions .main-content .wpb_wrapper > p:first-of-type > strong:first-child {
	margin-top: 8px;
}

body.cwfd-legal--terms-conditions .main-content a:not(.button) {
	color: var(--cwfd-blue-bright);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* ── FAQ: match the policy heading treatment ── */
body.cwfd-legal--frequently-asked-questions .main-content h2,
body.cwfd-legal--frequently-asked-questions .main-content h3 {
	color: var(--cwfd-blue) !important;
	font-weight: 600 !important;
}

/* The one exception is the closing help panel, which sets its own white text on
   a dark ground — the rule above would have painted it navy on navy. */
body.cwfd-legal--frequently-asked-questions .main-content [class*="cta"] h2,
body.cwfd-legal--frequently-asked-questions .main-content [class*="help"] h2,
body.cwfd-legal--frequently-asked-questions .main-content [style*="background"] h2 {
	color: #fff !important;
}

@media (max-width: 767px) {
	body.cwfd-legal--terms-conditions .main-content p > strong:first-child {
		margin-top: 26px;
		font-size: 20px !important;
	}

	body.cwfd-legal--terms-conditions .main-content p {
		margin-bottom: 18px;
	}
}

/* ─── .screen-reader-text ────────────────────────────────────────────────
   Nothing on this site defined it. The class is theme boilerplate rather
   than WordPress core CSS, and Porto ships WooCommerce's stylesheets
   dequeued, so the one rule that clips it was never loaded — the only
   element getting clipped was a form label, from a narrower Porto rule.

   Everything WooCommerce writes for assistive tech was therefore printed on
   screen at whatever size its container used: a sale price rendered as
   "$9.00 Original price was: $9.00. $7.65 Current price is: $7.65." in 26px
   inside the product page price box, and the same sentence in the search
   suggestions, on shop cards, in the mini-cart and at checkout.

   This is the standard clip, so the text still reaches a screen reader. The
   :focus rule brings skip links back on screen for keyboard users, which is
   the one case where this text is meant to be seen. */
.screen-reader-text {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	margin: -1px !important;
	padding: 0 !important;
	border: 0 !important;
	overflow: hidden !important;
	clip-path: inset(50%) !important;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	position: static !important;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	padding: 15px 23px 14px !important;
	clip-path: none !important;
	display: block;
	top: 5px;
	left: 5px;
	z-index: 100000;
	color: #2b2b2b;
	background-color: #f1f1f1;
	border-radius: 3px;
	box-shadow: 0 0 2px 2px rgba(0, 0, 0, .6);
	font-size: 14px;
	font-weight: 700;
	line-height: normal;
	text-decoration: none;
}


/* =====================================================
   RECONCILED FROM GIT — 2026-09-25
   Everything below existed only in the theme repo and was never
   deployed. The live file had drifted 3 minor versions ahead of git
   (1.3.4 vs 1.0.8) while git held this marquee work, so neither copy
   could safely overwrite the other. This file is now live + the repo's
   outstanding fixes, and the two finally match.

   Deliberately NOT carried over from git:
   · .add_to_cart_button border-radius:0 — the v1.2.2 stepper section
     above was written specifically to undo that flattening, so
     re-applying it would re-break the joined qty+ADD control.
   · .cwfd-pc-grid gap 48px — live renders 28px, not asked for, and
     changing it is a visible layout change nobody requested.
   ===================================================== */

/* =====================================================
   BRANDS MARQUEE — Premium responsive upgrade
   Polished spacing, typography, fade-mask, hover, mobile-first.
   Scoped tightly to .cwfd-marquee so it does not affect other sections.
===================================================== */
.cwfd-marquee {
  position: relative;
  padding: clamp(48px, 7vw, 96px) 0;
  background:
    radial-gradient(1200px 400px at 50% -120px, rgba(20,93,160,.05), transparent 70%),
    var(--cwfd-white, #fff);
  overflow: hidden;
}
.cwfd-marquee::before,
.cwfd-marquee::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: min(92%, 1200px);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(10,55,99,.10), transparent);
  pointer-events: none;
}
.cwfd-marquee::before { top: 0; }
.cwfd-marquee::after  { bottom: 0; }

.cwfd-marquee .cwfd-section__inner {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 clamp(16px, 4vw, 32px);
}

/* Intro block — title left, refined hierarchy */
.cwfd-marquee .cwfd-section-intro {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 10px;
  max-width: 100% !important;
  margin: 0 0 clamp(28px, 4vw, 44px) !important;
  text-align: left !important;
}
.cwfd-marquee .cwfd-section-intro__eyebrow {
  display: inline-block !important;
  order: 0 !important;
  margin: 0 !important;
  padding: 6px 14px !important;
  font-family: var(--cwfd-font, "Inter", system-ui, sans-serif) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: .16em !important;
  text-transform: uppercase !important;
  color: #145DA0 !important;
  background: linear-gradient(135deg, rgba(20,93,160,.10), rgba(0,180,216,.08)) !important;
  border: 1px solid rgba(20,93,160,.18) !important;
  border-radius: 999px !important;
  opacity: 1 !important;
}
.cwfd-marquee .cwfd-section-intro__title {
  position: relative !important;
  order: -1 !important;
  display: inline-block !important;
  margin: 0 0 4px 0 !important;
  padding: 0 !important;
  font-family: var(--cwfd-font-headings, "Poppins", system-ui, sans-serif) !important;
  font-size: clamp(26px, 4.2vw, 44px) !important;
  font-weight: 800 !important;
  line-height: 1.12 !important;
  letter-spacing: -0.02em !important;
  color: var(--cwfd-ink, #0A3763) !important;
  text-align: left !important;
}
.cwfd-marquee .cwfd-section-intro__title::after {
  content: "" !important;
  display: block !important;
  width: 64px !important;
  height: 3px !important;
  margin: 12px 0 0 !important;
  border-radius: 999px !important;
  background: linear-gradient(90deg, #145DA0 0%, #d92662 100%) !important;
}
.cwfd-marquee .cwfd-section-intro__lead {
  order: 1 !important;
  max-width: 720px !important;
  margin: 6px 0 0 !important;
  font-size: clamp(14.5px, 1.4vw, 16px) !important;
  line-height: 1.65 !important;
  color: #5a6e83 !important;
  opacity: 1 !important;
}

/* Viewport — wider fade mask, premium feel */
.cwfd-marquee__viewport {
  position: relative;
  overflow: hidden;
  padding: clamp(8px, 1.5vw, 16px) 0;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
}
.cwfd-marquee__track {
  display: flex;
  align-items: center;
  gap: clamp(28px, 4vw, 64px);
  width: max-content;
  animation: cwfd-marquee-scroll 60s linear infinite;
  will-change: transform;
}
.cwfd-marquee__viewport:hover .cwfd-marquee__track,
.cwfd-marquee__viewport:focus-within .cwfd-marquee__track {
  animation-play-state: paused;
}

/* Logos — refined hover with subtle lift */
.cwfd-marquee__logo {
  flex: 0 0 auto;
  height: clamp(40px, 5vw, 72px);
  width: auto;
  max-width: clamp(110px, 14vw, 180px);
  object-fit: contain;
  filter: grayscale(100%) contrast(0.92);
  opacity: 0.78;
  transition:
    filter .35s cubic-bezier(.2,.7,.3,1),
    opacity .35s cubic-bezier(.2,.7,.3,1),
    transform .35s cubic-bezier(.2,.7,.3,1);
}
.cwfd-marquee__logo:hover {
  filter: grayscale(0) contrast(1);
  opacity: 1;
  transform: translateY(-2px) scale(1.06);
}

/* Footer meta + CTA — refined */
.cwfd-marquee__meta {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin: clamp(20px, 3vw, 32px) 0 0;
  font-family: var(--cwfd-font, "Inter", system-ui, sans-serif);
  font-size: clamp(13.5px, 1.3vw, 15px);
  color: #6b7f94;
  text-align: center;
}
.cwfd-marquee__meta strong {
  font-family: var(--cwfd-font-headings, "Poppins", system-ui, sans-serif);
  font-weight: 800;
  color: var(--cwfd-ink, #0A3763);
}
.cwfd-marquee__cta {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 4px;
  padding: 4px 2px;
  font-family: var(--cwfd-font-headings, "Poppins", system-ui, sans-serif);
  font-weight: 700;
  color: #145DA0 !important;
  text-decoration: none !important;
  border-bottom: 1.5px solid transparent;
  transition: color .2s ease, border-color .2s ease, transform .2s ease;
}
.cwfd-marquee__cta::after {
  content: "→";
  display: inline-block;
  transition: transform .2s ease;
}
.cwfd-marquee__cta:hover {
  color: #0A3763 !important;
  border-bottom-color: #0A3763;
}
.cwfd-marquee__cta:hover::after { transform: translateX(3px); }
/* Hide native arrow if it was inside text (we render via ::after) */
.cwfd-marquee__cta { font-size: inherit; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
  .cwfd-marquee__track { gap: 44px; animation-duration: 50s; }
}
@media (max-width: 768px) {
  .cwfd-marquee { padding: 56px 0; }
  .cwfd-marquee__viewport {
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 90%, transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 90%, transparent 100%);
  }
  .cwfd-marquee__track { gap: 36px; animation-duration: 42s; }
  .cwfd-marquee__logo  { height: 44px; max-width: 130px; opacity: .9; }
  .cwfd-marquee .cwfd-section-intro__title::after { width: 48px; }
}
@media (max-width: 480px) {
  .cwfd-marquee { padding: 44px 0; }
  .cwfd-marquee__track { gap: 28px; animation-duration: 36s; }
  .cwfd-marquee__logo  { height: 36px; max-width: 110px; }
  .cwfd-marquee__meta  { font-size: 13px; }
  .cwfd-marquee__cta   { margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .cwfd-marquee__track {
    animation: none;
    transform: translateX(0);
    flex-wrap: wrap;
    justify-content: center;
    width: 100%;
  }
  .cwfd-marquee__logo { transition: none; }
}
