PageSourceSearch

https://portugaltextile.com/

html portugaltextile.com collected 2026-10-08 07:57:50 UTC 180,835 bytes, 3,503 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
6    <title>Portugal Textile - Sustainable Clothing Manufacturer Group</title>
7<meta name="description" content="Portugal Textile offers sustainable clothing manufacturing with a focus on quality for brands and influencers.">
8
9    <link rel="icon" href="./assets/imgs/favicon.webp" sizes="32x32" />
10<link  rel="icon" href="./assets/imgs/favicon.webp" sizes="192x192" />
11<link rel="apple-touch-icon" href="./assets/imgs/favicon.webp" />
12<meta name="msapplication-TileImage" content="./assets/imgs/favicon.webp" />
13    <!-- Fonts -->
14<link media="print" onload="this.media='all'"  rel="preconnect" href="https://fonts.googleapis.com">
15<link media="print" onload="this.media='all'" rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
16<link media="print" onload="this.media='all'" href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
17
18
19    <!-- Google Tag Manager -->
20<script>
vendor: 327 bytes, lines 20-24
20(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
21new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
22j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
23'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
24})(window,document,'script','dataLayer','
24GTM-NWRT6VNV
vendor: 3 bytes, line 24
24');
24</script>
24
25<!-- End Google Tag Manager -->
26
27
28    <!-- Font Awesome for icons -->
29    <link  media="print" onload="this.media='all'" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
30    <!-- GSAP Libraries -->
31    
31<script async src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
31
32    
32<script async src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
32
33    <!-- Cookie Consent Script -->
34    <!-- SEO Meta Tags -->
35
36    <meta name="keywords" content="sustainable clothing, textile manufacturing, Portugal textile, fashion brand development, eco-friendly clothing production, sustainable fashion, clothing collection development">
37
38    <!-- Open Graph / Facebook -->
39    <meta property="og:type" content="website">
40    <meta property="og:url" content="https://www.portugaltextile.com/">
41    <meta property="og:title" content="Portugal Textile - Premium Sustainable Clothing Manufacturers Group">
42    <meta property="og:description" content="Create sustainable clothing collections with Portugal Textile. We are manufacturers, focusing on eco-friendly materials and ethical production since 2007.">
43    <meta property="og:image" content="https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_4722-q7inb2fsiq7bfx6xszbf2fe3a3dmzw7fgbyplmo9po.png?v=1.0">
44    <meta property="og:image:width" content="1140" />
45    <meta property="og:image:height" content="600" />
46
47    <!-- Twitter Card -->
48    <meta name="twitter:card" content="summary_large_image">
49    <meta name="twitter:url" content="https://www.portugaltextile.com/">
50    <meta name="twitter:title" content="Portugal Textile - Premium Sustainable Clothing Manufacturers Group">
51    <meta name="twitter:description" content="Portugal Textile produces for fashion brands with premium Portuguese manufacturers, offering sustainable clothing development services with a focus on eco-friendly materials. From design to production, we manage your entire clothing collection creation process with quality and environmental responsibility.">
52    <meta name="twitter:image" content="https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_4722-q7inb2fsiq7bfx6xszbf2fe3a3dmzw7fgbyplmo9po.png?v=1.0">
53
54    <!-- Canonical URL -->
55    <link rel="canonical" href="https://portugaltextile.com/">
56
57    <!-- Robots Meta Tag -->
58    <meta name="robots" content="index, follow">
59
60    <!-- Geo Tags -->
61    <meta name="geo.region" content="PT">
62    <meta name="geo.placename" content="Portugal">
63    <meta name="geo.position" content="39.5501;-8.1452">
64    <meta name="ICBM" content="39.5501, -8.1452">
65    
65<script>
66        function supportsWebP(callback) {
67          let img = new Image();
68          img.onload = img.onerror = function () {
69            callback(img.width === 1);
70          };
71          img.src =
72            "data:image/webp;base64,UklGRhoAAABXRUJQVlA4TAYAAAAvAAAAFQAAQUxQSAEAAAABAAEAAABQSwA=";
73        }
74
75        supportsWebP(function (supported) {
76          if (supported) {
77            document.querySelectorAll("img").forEach((img) => {
78              let webpSrc = img.src.replace(/\.(jpg|png)$/, ".webp");
79              img.src = webpSrc;
80            });
81          }
82        });
83      </script>
83
84
85    <!-- Schema.org Organizational Markup -->
86    
86<script type="application/ld+json">
87{
88  "@context": "https://schema.org",
89  "@type": "Organization",
90  "name": "Portugal Textile",
91  "url": "https://www.portugaltextile.com",
92  "logo": "https://portugaltextile.com/wp-content/uploads/2023/05/cropped-slogan_update-1-ai4.png",
93  "description": "Sustainable clothing development group creating fashion brands with premium Portuguese manufacturers since 2007.",
94  "foundingDate": "2007",
95  "founder": {
96    "@type": "Person",
97    "name": "Paulo Silva"
98  },
99  "address": {
100    "@type": "PostalAddress",
101    "addressCountry": "PT"
102  },
103  "contactPoint": {
104    "@type": "ContactPoint",
105    "telephone": "+351 915 085 106",
106    "contactType": "Customer Service",
107    "availableLanguage": ["en", "pt"]
108  },
109  "sameAs": [
110    "https://www.facebook.com/portugaltextile/",
111    "https://www.instagram.com/portugaltextile/",
112    "https://www.linkedin.com/portugaltextile",
113    "https://pt.pinterest.com/portugaltextile/"
114  ],
115  "offers": {
116    "@type": "Offer",
117    "itemOffered": {
118      "@type": "Service",
119      "name": "Clothing Manufacturing",
120      "description": "End-to-end sustainable clothing manufacturing, including design, sourcing, sampling, production, and quality control."
121    }
122  },
123  "areaServed": {
124    "@type": "Country",
125    "name": "Worldwide"
126  },
127"award": [
128  "Award of Exportation and Internationalization",
129  "Top 1000 Companies"
130]
131}
132</script>
132
133
134 
134<script type="application/ld+json">
135{
136  "@context": "https://schema.org",
137  "@type": "FAQPage",
138  "mainEntity": [
139    {
140      "@type": "Question",
141      "name": "How can I work with you?",
142      "acceptedAnswer": {
143        "@type": "Answer",
144        "text": "To begin working with us, you just need to contact us, sending your request about the project through this form or email. You send us your tech packs as well as the quantities per style color, price targets and deadline of the collection. Then, our commercial department will analyze the project to understand your vision, what the brand is looking for and how we can fulfill all your needs."
145      }
146    },
147    {
148      "@type": "Question",
149      "name": "How can I do a tech pack and submit it for you?",
150      "acceptedAnswer": {
151        "@type": "Answer",
152        "text": "A Tech Pack is a framework for sharing your ideas in a structured way. Tech Packs are illustrated designs and specifications of your garment design. A Tech Pack is often required to obtain a quote from a manufacturer or agency, and to ensure that people understand how to make your design and its specifications. You can submit your designs, tech packs, sketches or image references to us via our contact form. Alternatively, you can also email us at [email protected]. Note: If you don't have a tech pack, you can always send us physical samples from similar styles for what you want to produce."
153      }
154    },
155    {
156      "@type": "Question",
157      "name": "What are your minimum order quantities?",
158      "acceptedAnswer": {
159        "@type": "Answer",
160        "text": "Our minimum order quantities (MOQs) are customized for each project and may vary based on style and color requirements. Send us your project at [email protected] or at www.portugaltextile.com/create-your-collection."
161      }
162    },
163    {
164      "@type": "Question",
165      "name": "What is your production lead times?",
166      "acceptedAnswer": {
167        "@type": "Answer",
168        "text": "The project timeline is dependent on your specific needs. Send us your project at [email protected] or at www.portugaltextile.com/create-your-collection."
169      }
170    },
171    {
172      "@type": "Question",
173      "name": "What types of materials are you able to source?",
174      "acceptedAnswer": {
175        "@type": "Answer",
176        "text": "We can source all type of materials for textile development, sustainable materials included, for examples: organic cotton, EcoVero, Tencel, cactus leather, grape leather, etc. See here some of the innovative options."
177      }
178    },
179    {
180      "@type": "Question",
181      "name": "Do you do the quality control?",
182      "acceptedAnswer": {
183        "@type": "Answer",
184        "text": "Yes! We have an internal team dedicated to the quality control of all the stages of the process. Every material is inspected before and after any procedure. Our quality controller team will measure, check flaws, test quality, functionality, comfort, durability, and any other important detail for you."
185      }
186    },
187    {
188      "@type": "Question",
189      "name": "How do you take care of the packaging?",
190      "acceptedAnswer": {
191        "@type": "Answer",
192        "text": "We provide sustainable, recycled, and biodegradable custom labels, tags, packaging and accessories to create a fully branded product. You should send us your requirements (size, material, colors, etc.) and artworks, and we will make it happen."
193      }
194    },
195    {
196      "@type": "Question",
197      "name": "How do you take care of transport/delivery of the collection?",
198      "acceptedAnswer": {
199        "@type": "Answer",
200        "text": "We work with several transport companies with land, air, and sea shipments, in order to send the collection to any destination in the world. For each place we have references to provide you the best solutions."
201      }
202    }
203  ]
204}
205</script>
205
206<link media="print" onload="this.media='all'" rel="stylesheet" href="./assets/css/main.css">
207<script src="./assets/js/cookie-consent.js"></script>
vendor: 1 bytes, line 207
207
208<script src="./assets/js/safarimenu.js"></script>
208
209    <style>
210        /* Global Reset and Variables */
211       :root{--primary-gradient:linear-gradient(300deg,#E4A644 0%,#C14ADC 100%);--color-gold:#E4A644;--color-purple:#C14ADC;--color-black:#000000;--color-white:#FFFFFF;--color-light-gray:#f9f9f9;--color-dark-gray:#666}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:'Montserrat',sans-serif;line-height:1.6;color:var(--color-black);overscroll-behavior-x:none}img{max-width:100%;height:auto}ul{list-style:none}a{text-decoration:none;color:inherit}.container{max-width:1200px;margin:0 auto;padding:0 20px}.section{padding:80px 0;position:relative}.section-title{text-align:center;margin-bottom:40px;font-size:2.5rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.btn{display:inline-block;padding:12px 25px;border-radius:8px;font-weight:500;cursor:pointer;transition:all .3s ease}.btn-primary{background:var(--primary-gradient);color:var(--color-white);border:none}.btn-secondary{border:2px solid var(--color-black);color:var(--color-black);background:transparent}.btn:hover{transform:translateY(-5px);box-shadow:0 10px 20px rgba(0,0,0,0.1)}.header{position:fixed;width:100%;top:0;background:white;box-shadow:0 2px 10px rgba(0,0,0,0.1);z-index:1000;transition:all .3s ease}.header .container{display:flex;justify-content:space-between;align-items:center}.logo img{margin-top:3px}.nav-menu{display:flex;align-items:center;gap:30px}.nav-link{text-decoration:none;color:var(--color-black);position:relative;transition:color .3s ease;font-weight:500}.nav-link::after{content:'';position:absolute;width:0;height:2px;bottom:-5px;left:0;background:var(--primary-gradient);transition:width .3s ease}.nav-link:hover::after{width:100%}.mobile-toggle{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-black)}.mobiledivtoggle{position:relative;z-index:999;display:none}.mobile-menu-header,.mobile-menu-content,.mobile-menu-social{display:none}.footer-logo-bottom{display:block;margin:20px auto 0;max-width:140px}.hero{padding:180px 0 120px;background:linear-gradient(135deg,rgba(228,166,68,0.1) 0%,rgba(193,74,220,0.1) 100%);position:relative;overflow:hidden}.hero-container{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.hero-content{max-width:650px}.hero-title{font-size:3rem;margin-bottom:25px;color:var(--color-black);line-height:1.2}.hero-subtitle{font-size:2rem;color:var(--color-black);margin-bottom:25px;font-weight:500}.hero-text{font-size:1.2rem;color:var(--color-dark-gray);margin-bottom:35px}.hero-cta{display:flex;gap:25px}.hero-video{width:100%;height:auto;border-radius:20px;box-shadow:0 25px 60px rgba(0,0,0,0.15);overflow:hidden}#background-video{width:100%;height:auto;display:block}.clients{background-color:white;padding:40px 0;overflow:hidden}.clients-title{text-align:center;margin-bottom:0;font-size:2rem;color:var(--color-black)}.clients-autoscroll-container{width:100%;position:relative;overflow:hidden;padding:20px 0}.clients-autoscroll{display:flex;animation:scrollLogos 20s linear infinite;width:max-content}@keyframes scrollLogos{0%{transform:translateX(0)}100%{transform:translateX(calc(-250px * 3))}}.client-logo{width:250px;height:180px;margin:0 50px;flex-shrink:0;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:all .4s ease}.client-logo img{max-width:200px;max-height:120px;object-fit:contain;filter:grayscale(100%);opacity:.7;transition:all .4s ease;margin-bottom:15px}.client-logo:hover img{filter:grayscale(0%);opacity:1;transform:scale(1.05)}.client-name{font-weight:500;color:var(--color-dark-gray);margin-top:10px;text-align:center}.process{background-color:var(--color-light-gray);padding:80px 0}.process-title{text-align:center;margin-bottom:15px;font-size:2.5rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.process-subtitle{text-align:center;color:var(--color-dark-gray);margin-bottom:60px;font-size:1.2rem}.process-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.process-card{background-color:white;border-radius:20px;padding:40px 30px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,0.05);transition:all .3s ease;opacity:1!important;transform:translateY(0)!important}.process-card:hover{transform:translateY(-10px)!important;box-shadow:0 15px 40px rgba(0,0,0,0.1)}.process-number{width:80px;height:80px;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;background:var(--primary-gradient);border-radius:50%;color:white;font-size:2rem;font-weight:bold}.process-card-title{margin-bottom:15px;font-size:1.5rem}.process-card-text{color:var(--color-dark-gray);line-height:1.6}.about{padding:80px 0;background-color:white}.about-container{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.about-image{width:100%;height:auto;border-radius:20px;box-shadow:0 20px 50px rgba(0,0,0,0.1);object-fit:cover;opacity:1!important;transform:translateX(0)!important}.about-content{opacity:1!important;transform:translateX(0)!important}.about-content h2{margin-bottom:20px;font-size:2.5rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.about-content h3{margin-bottom:20px;font-size:1.5rem;color:var(--color-black)}.about-content p{margin-bottom:20px;color:var(--color-dark-gray);line-height:1.8}.about-btn{text-align:center;display:inline-block;text-decoration:none;padding:12px 30px;border:2px solid var(--color-black);color:var(--color-black);border-radius:8px;font-weight:500;transition:all .3s ease}.about-btn:hover{background:var(--primary-gradient);color:white;border-color:transparent;transform:translateY(-5px);box-shadow:0 10px 20px rgba(0,0,0,0.1)}
211.benefits{background-color:var(--color-light-gray);padding:80px 0}.benefits-subtitle{text-align:center;color:var(--color-dark-gray);margin-bottom:60px;font-size:1.2rem}.benefits-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:30px}.benefit-card{background-color:white;border-radius:20px;padding:30px;transition:all .3s ease;box-shadow:0 10px 30px rgba(0,0,0,0.05);opacity:1!important;transform:translateY(0)!important}.benefit-card:hover{transform:translateY(-10px)!important;box-shadow:0 15px 40px rgba(0,0,0,0.1)}.benefit-header{display:flex;align-items:center;margin-bottom:20px;gap:15px}.benefit-icon{width:50px;height:50px;display:flex;align-items:center;justify-content:center;background:var(--primary-gradient);border-radius:50%}.benefit-icon img{width:25px;height:25px;filter:brightness(0) invert(1)}.benefit-title{font-size:1.3rem;margin:0}.benefit-text{color:var(--color-dark-gray);line-height:1.6}.workflow{padding:80px 0;background-color:var(--color-light-gray)}.workflow-container{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.workflow-content{opacity:1!important;transform:translateX(0)!important}.workflow-content h2{margin-bottom:20px;font-size:2.5rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.workflow-content h3{margin-bottom:20px;font-size:1.5rem;color:var(--color-black)}.workflow-content p{margin-bottom:20px;color:var(--color-dark-gray);line-height:1.8}.workflow-slider{position:relative;overflow:hidden;border-radius:20px;box-shadow:0 20px 50px rgba(0,0,0,0.1);opacity:1!important;transform:translateX(0)!important}.workflow-track{display:flex;transition:transform .5s ease}.workflow-slide{min-width:100%;position:relative}.workflow-image{width:100%;height:500px;display:block;object-fit:cover}.workflow-caption{position:absolute;bottom:0;left:0;right:0;padding:20px;background:white;color:var(--color-black);text-align:center;border-top:1px solid #eee}.workflow-caption h3{margin-bottom:5px;font-size:1.2rem}.workflow-navigation{display:flex;justify-content:center;margin:20px;gap:10px}.workflow-dot{width:12px;height:12px;border-radius:50%;background-color:#ddd;cursor:pointer;transition:all .3s ease}.workflow-dot.active{background:var(--primary-gradient);width:24px;border-radius:10px}.workflow-arrows{display:flex;justify-content:space-between;position:absolute;top:50%;transform:translateY(-50%);width:100%;padding:0 20px;z-index:5;pointer-events:none}.workflow-arrow{width:40px;height:40px;background:var(--color-white);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 5px 15px rgba(0,0,0,0.1);pointer-events:auto;color:var(--color-black);font-size:1.2rem;border:none;transition:all .3s ease}.workflow-arrow:hover{background:var(--primary-gradient);color:var(--color-white)}.materials{background-color:white;padding:80px 0}.materials-title{text-align:center;margin-bottom:20px;font-size:2.5rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.materials-subtitle{text-align:center;color:var(--color-dark-gray);margin-bottom:60px;font-size:1.2rem}.materials-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.material-card{background-color:white;border-radius:20px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,0.05);transition:all .3s ease;height:100%;opacity:1!important;transform:translateY(0)!important}.material-card:hover{transform:translateY(-10px)!important;box-shadow:0 15px 40px rgba(0,0,0,0.1)}.material-image{width:100%;height:200px;object-fit:cover}.material-content{padding:20px}.material-name{font-size:1.3rem;margin-bottom:10px;color:var(--color-black)}.material-description{color:var(--color-dark-gray);font-size:.9rem;line-height:1.6}.accessories{padding:80px 0;background-color:white}.accessories-title{text-align:center;margin-bottom:20px;font-size:2.5rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.accessories-subtitle{text-align:center;color:var(--color-dark-gray);margin-bottom:60px;font-size:1.2rem}.accessories-container{max-width:1200px;margin:0 auto}.accessories-card{display:flex;background:var(--color-light-gray);border-radius:20px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,0.07);margin-bottom:30px;transition:all .3s ease}.accessories-card:hover{transform:translateY(-10px);box-shadow:0 15px 40px rgba(0,0,0,0.12)}.accessories-image{width:40%;min-height:300px;object-fit:cover}.accessories-content{width:60%;padding:40px;
211display:flex;flex-direction:column;justify-content:center}.accessories-content h3{font-size:1.8rem;margin-bottom:15px;color:var(--color-black)}.accessories-content p{color:var(--color-dark-gray);line-height:1.7;margin-bottom:20px}.material-badge{display:inline-block;background:var(--primary-gradient);color:white;font-size:.9rem;padding:5px 15px;border-radius:20px;width:fit-content;margin-bottom:15px}.accessories-btn{display:inline-block;padding:10px 25px;background:transparent;border:2px solid var(--color-black);color:var(--color-black);border-radius:8px;font-weight:500;transition:all .3s ease;margin-top:10px;align-self:flex-start}.accessories-btn:hover{background:var(--primary-gradient);color:white;border-color:transparent}.testimonials{background-color:var(--color-light-gray);padding:80px 0}.testimonials-header{text-align:center;margin-bottom:60px}.testimonials-title{font-size:2.5rem;margin-bottom:20px;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.testimonials-subtitle{font-size:1.1rem;max-width:800px;margin:0 auto;color:var(--color-dark-gray)}.testimonials-slider{position:relative;overflow:hidden;padding:30px 0}.testimonials-container{display:flex;transition:transform .5s ease}.testimonial-item{flex:0 0 100%;padding:0 20px}.testimonial-card{background:white;border-radius:15px;padding:30px;box-shadow:0 10px 30px rgba(0,0,0,0.05)}.testimonial-content{position:relative;padding:20px 0;margin-bottom:20px;font-size:1.1rem;line-height:1.8;color:var(--color-dark-gray)}.testimonial-content::before{content:'"';position:absolute;top:-20px;left:-10px;font-size:5rem;color:rgba(0,0,0,0.1);line-height:1}.testimonial-author{display:flex;align-items:center}.author-image{width:60px;height:60px;border-radius:50%;object-fit:cover;margin-right:15px}.author-info h4{font-size:1.1rem;margin-bottom:5px;color:var(--color-black)}.author-info p{font-size:.9rem;color:var(--color-dark-gray)}.slider-nav{display:flex;justify-content:center;margin-top:30px;gap:10px}.slider-dot{width:12px;height:12px;border-radius:50%;background:rgba(0,0,0,0.2);cursor:pointer;transition:background .3s ease}.slider-dot.active{background:var(--color-purple);display:none}.cta{padding:80px 0;background-color:white}.cta-container{max-width:900px;margin:0 auto;text-align:center;opacity:1!important;transform:translateY(0)!important}.cta-title{font-size:2.5rem;margin-bottom:20px;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.cta-subtitle{font-size:1.5rem;color:var(--color-black);margin-bottom:30px}.cta-text{color:var(--color-dark-gray);margin-bottom:40px;max-width:700px;margin-left:auto;margin-right:auto;padding:0 20px}.cta-button{display:inline-block;text-decoration:none;padding:15px 40px;background:var(--primary-gradient);color:white;border-radius:8px;font-weight:500;transition:all .3s ease}.cta-button:hover{transform:translateY(-5px);box-shadow:0 10px 30px rgba(0,0,0,0.1)}footer{background-color:var(--color-light-gray);padding:80px 0 40px}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}.footer-logo{margin-bottom:20px}.footer-logo img{max-height:50px;width:200px}.footer-about{color:var(--color-dark-gray);margin-bottom:20px;line-height:1.6}.footer-social{display:flex;gap:15px}.social-icon{width:40px;height:40px;border-radius:50%;background:var(--primary-gradient);display:flex;align-items:center;justify-content:center;color:white;text-decoration:none;transition:transform .3s ease}.social-icon:hover{transform:translateY(-5px)}.footer-column h3{color:var(--color-black);margin-bottom:20px;font-size:1.2rem}.footer-links{list-style:none}.footer-links li{margin-bottom:10px}.footer-links a{color:var(--color-dark-gray);text-decoration:none;transition:color .3s ease}.footer-links a:hover{color:var(--color-purple)}#mc_embed_signup{width:100%}#mc_embed_signup_scroll h3{color:var(--color-black);margin-bottom:20px;font-size:1.2rem}.newsletter-input{width:100%;padding:12px;border:1px solid #ddd;border-radius:8px;margin-bottom:15px}.mc-field-group{margin-bottom:15px}.newsletter-button{width:100%;padding:12px;background:var(--primary-gradient);color:white;border:none;border-radius:8px;
211cursor:pointer;transition:transform .3s ease}.newsletter-button:hover{transform:translateY(-3px)}.checkbox.subfield{display:flex;align-items:center;gap:8px;margin-bottom:15px}.footer-bottom{text-align:center;margin-top:60px;padding-top:20px;border-top:1px solid #ddd;color:var(--color-dark-gray)}#consent-popup{position:fixed;bottom:20px;left:20px;background:white;padding:20px;border-radius:10px;box-shadow:0 5px 20px rgba(0,0,0,0.1);z-index:1000;max-width:400px;display:none}#consent-popup h3{margin-bottom:10px}#consent-popup p{margin-bottom:15px;color:var(--color-dark-gray)}#consent-buttons{display:flex;gap:10px}#consent-buttons button{padding:8px 15px;border:none;border-radius:5px;cursor:pointer}#accept-consent{background:var(--primary-gradient);color:white}#deny-consent{background:#eee;color:var(--color-black)}.modal-link{color:var(--color-purple);text-decoration:underline;cursor:pointer;display:block;margin-bottom:15px}.hero-video{position:relative;width:100%;aspect-ratio:1/1;border-radius:20px;overflow:hidden;box-shadow:0 25px 60px rgba(0,0,0,0.15);cursor:pointer}#background-video{width:100%;height:100%;object-fit:cover}.video-controls{position:absolute;bottom:15px;left:15px;right:15px;display:flex;justify-content:space-between;background:rgba(0,0,0,0.5);border-radius:30px;padding:10px 15px;z-index:10;transition:opacity .3s ease;backdrop-filter:blur(10px);opacity:0}.video-controls-left,.video-controls-right{display:flex;align-items:center;gap:15px}.video-btn{background:none;border:none;color:white;font-size:1.2rem;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.video-btn::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(300deg,#E4A644 0%,#C14ADC 100%);opacity:0;transition:opacity .3s ease;z-index:-1;border-radius:8px}.video-btn:hover::before{opacity:.2}.video-btn:hover{transform:scale(1.1);color:white}.volume-slider{width:100px;margin-left:10px;appearance:none;height:5px;background:rgba(255,255,255,0.3);outline:none;opacity:.7;transition:opacity .2s;border-radius:5px}.about-image{aspect-ratio:1/1;object-position:center}.volume-slider::-webkit-slider-thumb{appearance:none;width:15px;height:15px;background:linear-gradient(300deg,#E4A644 0%,#C14ADC 100%);cursor:pointer;border-radius:50%}.volume-slider::-moz-range-thumb{width:15px;height:15px;background:linear-gradient(300deg,#E4A644 0%,#C14ADC 100%);cursor:pointer;border-radius:50%;border:none}.video-progress{position:absolute;bottom:0;left:0;right:0;height:5px;background:rgba(255,255,255,0.3)}.video-progress-filled{height:100%;background:linear-gradient(300deg,#E4A644 0%,#C14ADC 100%);width:0}.hero-video:hover .video-controls{opacity:1}.brand-nav{background-color:#f9f7fc;padding:6px 20px;display:flex;align-items:center}.brand-divider{color:#ddd;margin:0 10px;font-size:14px}.current-site{opacity:1}.other-site{opacity:.65;transition:opacity .3s ease}.other-site:hover{opacity:1}.brand-logo{height:18px;width:auto}.absologo{height:17px}.mobile-menu-cta2{display:none}@media (max-width:1024px){.hero-title{font-size:3.5rem}.process-grid{grid-template-columns:repeat(3,1fr)}.benefits-grid{grid-template-columns:repeat(2,1fr)}.workflow-container,.about-container{grid-template-columns:1fr;gap:40px}.about-content,.workflow-content{order:2}.materials-grid{grid-template-columns:repeat(3,1fr)}.footer-grid{grid-template-columns:1fr}.accessories-card{flex-direction:column}.accessories-image,.accessories-content{width:100%}.accessories-image{height:300px}@keyframes scrollLogos{0%{transform:translateX(0)}100%{transform:translateX(calc(-220px * 3))}}.client-logo{width:220px;height:160px;margin:0 30px}.client-logo img{max-width:180px;max-height:100px}.hero-container{grid-template-columns:1fr}.header .container{padding:0 15px}.mobile-toggle{z-index:1002}.mobiledivtoggle{display:flex}.mobiledivtoggle>.btn-primary{font-size:.9rem;margin:0 10px;z-index:999}.nav-menu{position:fixed;top:0;left:0;right:0;bottom:0;background:white;flex-direction:column;padding:100px 0 80px;box-shadow:0 5px 10px rgba(0,0,0,0.1);transform:translateY(-100%);opacity:0;pointer-events:none;transition:all .4s ease;gap:30px;align-items:center;justify-content:center;height:100vh;width:100vw;z-index:1001;overflow-y:auto}.nav-menu.active{transform:translateY(0);opacity:1;pointer-events:auto;z-index:1001;background-color:var(--color-light-gray)}.mobile-menu-cta2{display:block}.mobile-menu-header{display:block;position:absolute;top:0;left:0;right:0;padding:30px 20px;text-align:center;border-bottom:1px solid #f1f1f1;width:100%;background:white}.mobile-menu-logo{max-height:40px}.mobile-menu-social{display:flex;position:absolute;bottom:0;left:0;right:0;padding:25px 20px;justify-content:center;gap:15px;background:white;border-top:1px solid #f1f1f1}.mobile-social-icon{width:36px;height:36px;border-radius:50%;background:var(--primary-gradient);display:flex;align-items:center;justify-content:center;color:white;font-size:.9rem;transition:transform .3s ease}.mobile-social-icon:hover{transform:translateY(-3px)}}@media (max-width:768px){.brand-nav{padding:4px 15px}.clients{padding:20px 0}.clients-title{font-size:1.4rem}.brand-divider{margin:0 8px;font-size:12px}.brand-logo{height:12px}.absologo{height:12px}.hero{padding:120px 0 80px}.hero-container{grid-template-columns:1fr;gap:0}.hero-content{text-align:center;margin-bottom:40px}.hero-title{font-size:3rem;margin-bottom:15px}.hero-subtitle{font-size:1.6rem;margin-bottom:15px}.hero-text{font-size:1.1rem;margin-bottom:20px}.hero-cta{justify-content:center}.video-controls{opacity:0}
211.hero-video.controls-visible .video-controls{opacity:1}@keyframes scrollLogos{0%{transform:translateX(0)}100%{transform:translateX(calc(-180px * 3))}}.client-logo{width:180px;height:150px;margin:0 20px}.client-logo img{max-width:150px;max-height:90px}.process-grid{grid-template-columns:1fr}.benefits-grid{grid-template-columns:1fr}.materials-grid{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr;gap:30px}.accessories-content{padding:25px}.accessories-content h3{font-size:1.5rem}.nav-link{font-size:1.2rem}.mobile-menu-logo{max-height:30px}}@media (max-width:576px){.section{padding:60px 0}.section-title{font-size:2rem}.hero-title{font-size:1.8rem}.hero-subtitle{font-size:1.5rem}.hero-btn{width:100%}.hero-cta{flex-direction:column;width:100%;gap:15px}.hero-video{aspect-ratio:16/9}.process-card,.benefit-card,.testimonial-card{padding:20px}.process-number{width:60px;height:60px;font-size:1.5rem}.about-content h2,.workflow-content h2{font-size:2rem}.footer-social{justify-content:center}@keyframes scrollLogos{0%{transform:translateX(0)}100%{transform:translateX(calc(-160px * 3))}}.client-logo{width:160px;height:140px;margin:0 15px}.client-logo img{max-width:130px;max-height:80px}.mobiledivtoggle>.btn-primary{font-size:.8rem;padding:8px 15px;margin:0 5px}.header .container{padding:10px 12px}.mobile-toggle{font-size:1.3rem}}.scroll-progress-container{position:absolute;left:0;bottom:0;width:100%;height:3px;z-index:1000;pointer-events:none;overflow:hidden}.scroll-progress-bar{position:absolute;left:0;top:0;height:100%;width:0;background:linear-gradient(to right,#E4A644,#C14ADC);transition:width .1s ease}@media (min-width:769px) and (max-width:1024px){.hero-video{aspect-ratio:16/9;max-height:500px}.hero-container{grid-template-columns:1fr;align-items:center}.hero-content{order:1}.hero-video{order:2}}.cookie-settings{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:1001;display:none;align-items:center;justify-content:center}.cookie-settings-content{background-color:white;border-radius:10px;width:90%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 10px 30px rgba(0,0,0,0.2);padding:25px}.cookie-settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.cookie-settings-header h3{margin:0;font-size:1.5rem}.close-settings{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-dark-gray);transition:color .3s ease}.close-settings:hover{color:var(--color-black)}.cookie-options{margin:25px 0}.cookie-option{border:1px solid #eee;border-radius:8px;padding:15px;margin-bottom:15px}.cookie-option-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.cookie-label{display:flex;align-items:center;gap:10px;cursor:pointer}.cookie-name{font-weight:600}.cookie-status{font-size:.8rem;color:var(--color-purple)}.cookie-description{font-size:.9rem;color:var(--color-dark-gray);margin:0}.cookie-settings-footer{display:flex;justify-content:flex-end}.save-preferences{background:var(--primary-gradient);color:white;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-weight:500;transition:all .3s ease}.save-preferences:hover{transform:translateY(-3px);box-shadow:0 5px 15px rgba(0,0,0,0.1)}.cookie-label input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:20px;height:20px;border:2px solid #ddd;border-radius:4px;outline:none;cursor:pointer;position:relative;transition:all .2s ease}.cookie-label input[type="checkbox"]:checked{background:var(--primary-gradient);border-color:transparent}.cookie-label input[type="checkbox"]:checked::after{content:'✓';position:absolute;color:white;font-size:14px;top:50%;left:50%;transform:translate(-50%,-50%)}.cookie-label input[type="checkbox"]:disabled{opacity:.7;cursor:not-allowed}.header{position:fixed;width:100%;top:0;background:white;box-shadow:0 2px 10px rgba(0,0,0,0.1);z-index:10000;transition:all .3s ease}.brand-nav{position:relative;z-index:10001}.header .container,.logo,.mobiledivtoggle,.mobile-toggle{position:relative;z-index:10001}.nav-menu{z-index:9999}.scroll-progress-container{position:absolute;
211left:0;bottom:0;width:100%;height:3px;z-index:9500;pointer-events:none;overflow:hidden}@media (max-width:1024px){.nav-menu{position:fixed;top:0;left:0;right:0;bottom:0;background:white;flex-direction:column;padding-top:120px;padding-bottom:80px;box-shadow:0 5px 10px rgba(0,0,0,0.1);transform:translateY(-100%);opacity:0;pointer-events:none;transition:all .4s ease;gap:30px;align-items:flex-start;justify-content:center;height:100vh;width:100vw;z-index:9999;overflow-y:auto}.nav-menu.active{transform:translateY(0);opacity:1;pointer-events:auto}}.header{position:fixed;width:100%;top:0;background:white;box-shadow:0 2px 10px rgba(0,0,0,0.1);z-index:9999;transition:all .3s ease}.header .container,.logo,.mobiledivtoggle,.mobile-toggle{position:relative;z-index:9999}.nav-menu{z-index:9998}.scroll-progress-container{z-index:10000}@media (max-width:1024px){.mobiledivtoggle{display:flex}.mobile-menu-header{display:none!important}.about-image{aspect-ratio:16/9;object-position:bottom}.nav-menu{position:fixed;top:0;left:0;right:0;bottom:0;background:white;flex-direction:column;padding-top:120px;padding-bottom:80px;box-shadow:0 5px 10px rgba(0,0,0,0.1);transform:translateY(-100%);opacity:0;pointer-events:none;transition:all .4s ease;gap:30px;align-items:center;justify-content:center;height:100vh;width:100vw;z-index:9998;overflow-y:auto}.nav-menu.active{transform:translateY(0);opacity:1;pointer-events:auto}}.header .container.header-container{display:flex;justify-content:space-between;align-items:center;position:relative}.header-left{display:flex;align-items:center;gap:20px}.header-right{display:flex;align-items:center}.header-cta{display:inline-block;white-space:nowrap}@media (max-width:1024px){.nav-menu.active{display:flex;flex-direction:column}.header-left{gap:15px}.header-right{position:absolute;right:15px;top:50%;transform:translateY(-50%);z-index:9999}.header-cta{font-size:.9rem;padding:8px 15px}}@media (max-width:768px){.header-left{gap:10px}.about-image{aspect-ratio:1/1;object-position:center}.header-cta{font-size:.8rem;padding:6px 12px}}@media (max-width:576px){.header-left{gap:10px}.logo img{max-height:35px}.header-cta{font-size:.75rem;padding:6px 10px}}@media (min-width:1024px){.mobile-toggle{display:none!important}.header-container{justify-content:space-between}.nav-menu{display:flex!important;align-items:center;gap:30px}}.mobile-menu-cta{display:block;margin:20px auto;text-align:center;font-size:1rem;padding:12px 20px;background:var(--primary-gradient);color:white;border-radius:8px;text-decoration:none;transition:transform .3s ease}.mobile-menu-cta:hover{transform:translateY(-5px);box-shadow:0 10px 20px rgba(0,0,0,0.1)}@media (min-width:1025px){.header-right{display:none}}@media (max-width:1024px){.nav-menu{background:white;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:center;padding:100px 20px 80px;gap:40px;height:100vh;pointer-events:auto!important}.nav-menu.active{display:flex!important;flex-direction:column!important}.nav-menu .nav-link{color:var(--color-black);font-size:1.1rem;font-weight:600;position:relative;transition:all .3s ease;opacity:.8}.nav-menu .nav-link::after{content:'';position:absolute;width:0;height:3px;bottom:-8px;left:50%;background:var(--primary-gradient);transition:all .3s ease;transform:translateX(-50%)}.nav-menu .nav-link:hover{transform:scale(1.05);color:var(--color-purple);opacity:1}.nav-menu .nav-link:hover::after{width:100%}.mobile-menu-cta{max-width:400px;margin:0;font-size:1.2rem;padding:15px 25px;background:var(--primary-gradient);color:white;border-radius:10px;transition:all .3s ease}.mobile-menu-cta2{max-width:400px;margin:0;font-size:1.2rem;padding:15px 25px;border-radius:10px;transition:all .3s ease}.mobile-menu-cta:hover{transform:translateY(-5px);box-shadow:0 10px 20px rgba(0,0,0,0.1)}.mobile-menu-social{display:flex;justify-content:center;gap:20px;margin-top:40px}.mobile-social-icon{width:50px;height:50px;border-radius:50%;background:var(--primary-gradient);color:white;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:transform .3s ease}.mobile-social-icon:hover{transform:translateY(-5px)}.mobile-menu-header{display:flex;justify-content:center;position:absolute;top:40px;left:0;right:0}.mobile-menu-logo{max-height:50px;opacity:.8}}@media (max-width:1024px){.nav-menu{background:white;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:center;gap:40px;height:100vh;overflow-y:auto}.mobile-menu-social{display:flex;justify-content:center;gap:20px;margin-top:30px;padding-bottom:60px;width:100%}.mobile-social-icon{width:50px;height:50px;border-radius:50%;background:var(--primary-gradient);color:white;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:transform .3s ease}.mobile-social-icon:hover{transform:translateY(-5px)}.nav-menu{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}}@media (max-width:1024px){.nav-menu .nav-link{font-size:1.5rem!important;text-align:center!important;width:100%!important;display:block!important}.nav-menu{align-items:center!important;text-align:center!important;padding:120px 30px 80px!important}}
211.cookie-settings{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:99999!important;display:none;align-items:center;justify-content:center}.cookie-settings-content{position:relative;z-index:100000!important}@media (max-width:768px){.benefit-icon{width:45px;height:45px;aspect-ratio:1/1;min-width:45px;min-height:45px}.benefit-icon img{width:22px;height:22px;object-fit:contain;max-width:100%;max-height:100%}}@media (max-width:1024px){@supports (-webkit-touch-callout:none){.nav-menu{padding-top:80px;padding-bottom:100px;gap:20px}.nav-menu .nav-link{font-size:1.1rem!important;margin-bottom:5px!important}.mobile-menu-cta,.mobile-menu-cta2{padding:10px 15px!important;font-size:1rem!important;margin:5px auto!important}.mobile-social-icon{width:40px!important;height:40px!important}.nav-menu.active{max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.mobile-menu-social{padding-bottom:120px!important}}}@media (max-width:376px){.nav-menu{gap:10px!important;padding:60px 15px 50px!important}.nav-menu .nav-link{font-size:1rem!important;margin-bottom:0!important;padding:5px 0!important}.mobile-menu-cta,.mobile-menu-cta2{padding:6px 12px!important;font-size:.85rem!important;margin:2px auto!important;width:90%!important}.mobile-social-icon{width:30px!important;height:30px!important;font-size:.8rem!important}.mobile-menu-social{gap:10px;margin-top:15px;padding-bottom:25px}.nav-menu>div{gap:8px!important}}@media (max-width:600px){.nav-menu .nav-link{font-size:1.2rem!important;text-align:center!important;width:100%!important;display:block!important;margin-bottom:1px!important}.mobile-menu-cta,.mobile-menu-cta2{padding:10px 20px!important;font-size:1.2rem!important;width:100%!important}.mobile-social-icon{width:50px!important;height:50px!important;font-size:1.2rem!important}.mobile-menu-social{gap:20px!important;margin-top:30px!important;padding-bottom:60px!important}}@media (min-width:360px){.nav-menu .nav-link{font-size:1rem!important}.mobile-menu-cta,.mobile-menu-cta2{font-size:1rem!important}}.logo-container{position:relative;display:inline-flex;align-items:center}.external-icon{font-size:12px;margin-left:4px;color:#999;transition:color .3s ease}.other-site:hover .external-icon{color:var(--color-purple)}@media (max-width:768px){.external-icon{font-size:10px;margin-left:2px}}.notification-bar{background:var(--primary-gradient);color:var(--color-white);padding:0px 0;text-align:center;position:relative;z-index:10002;transition:transform .3s ease,opacity .3s ease}.notification-bar.hidden{transform:translateY(-100%);opacity:0}.notification-bar .container{display:flex;justify-content:center;align-items:center;padding:0}.notification-bar p{margin:0;font-weight:500;font-size:10px;letter-spacing:.3px}.notification-cta{font-weight:700;margin-left:5px;text-decoration:underline;cursor:pointer}body.has-notification .header{top:45px!important;}body.has-notification .hero{padding-top:220px}@media (max-width:768px){.notification-bar p{font-size:.5rem}body.has-notification .hero{padding-top:150px}}@media (max-width:480px){.notification-bar{padding:0px 0}.notification-cta{display:inline}}.video-play-button{cursor:pointer;pointer-events:auto!important}.video-paused .video-overlay{opacity:1;pointer-events:auto}.video-paused .video-play-button{opacity:1;transform:scale(1)}.video-overlay.hover-overlay{opacity:0;transition:opacity .3s ease;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.5))}.hero-video:not(.video-paused):hover .video-overlay.hover-overlay{opacity:1}.video-pause-button{width:80px;height:80px;background:linear-gradient(300deg,#E4A644 0%,#C14ADC 100%);border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 10px 20px rgba(0,0,0,0.2);transform:scale(.8);transition:transform .3s ease,opacity .3s ease;opacity:0}.hero-video:not(.video-paused):hover .video-pause-button{opacity:1;transform:scale(1)}.video-pause-button i{color:white;font-size:30px}.hero-video{position:relative;z-index:1}.video-overlay{z-index:5}#background-video{pointer-events:none}.hero-badges{display:flex;flex-wrap:wrap;gap:1.2rem;margin-bottom:2.4rem}.hero-badge{font-size:10px!important;padding:.8rem 1.6rem;background:white;border-radius:100px;font-size:1.4rem;font-weight:600;
211box-shadow:var(--box-shadow-sm);color:var(--color-black);position:relative;overflow:hidden}@media (max-width:1024px){.hero-badges{justify-content:center}}@media (max-width:768px){.hero-badges{gap:.8rem;margin-bottom:1.8rem;justify-content:center}.hero-badge{padding:.6rem 1.2rem;font-size:1.2rem}}@media (max-width:576px){.hero-badges{gap:.6rem;margin-bottom:1.5rem}}@media (max-width:375px){.hero-badge{padding:.5rem 1rem;font-size:1.1rem}.hero-badge::before{width:3px}}.hero{padding:140px 0 80px!important}body.has-notification .hero{padding-top:160px!important}.hero-container{padding:0 20px}@media (max-width:768px){.hero-badges{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;margin-bottom:1.5rem;width:100%;overflow-x:auto;max-width:100%;padding-bottom:5px;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-right:15px!important;margin-left:15px!important}.hero-badges::-webkit-scrollbar{display:none}.hero-badge{padding:.3rem .7rem;font-size:.85rem!important;white-space:nowrap;flex:0 0 auto;transform:scale(.95)}.hero-badge i{margin-right:4px!important}.hero{padding-top:130px!important}body.has-notification .hero{padding-top:150px!important}}@media (max-width:480px){.hero-badge{padding:.25rem .5rem;font-size:.6rem!important;transform:scale(.9)}.hero{padding-top:110px!important}body.has-notification .hero{padding-top:130px!important}.hero-badge i{font-size:.75rem;margin-right:3px!important}.hero-badges{gap:.3rem}}.trust-badges{display:flex;justify-content:center;align-items:center;gap:3rem;flex-wrap:wrap;margin-top:3rem}.trust-badge{display:flex;align-items:center;gap:.3rem;color:gray;font-size:1.2rem}.trust-badge i{font-size:2rem;color:var(--color-gold)}@media (max-width:768px){.trust-badges{gap:0;margin-top:2rem}.trust-badge{display:flex;align-items:center;color:gray;font-size:.7rem;padding:10px}}.categories-section{padding:80px 0;background-color:var(--color-light-gray)}.categories-header{text-align:center;margin-bottom:50px}.categories-header h2{font-size:2.5rem;margin-bottom:15px;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.categories-header p{font-size:1.2rem;color:var(--color-dark-gray);max-width:700px;margin:0 auto}.categories-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;max-width:1200px;margin:0 auto}.category-card{background-color:white;border-radius:12px;overflow:hidden;box-shadow:0 10px 20px rgba(0,0,0,0.08);transition:transform .3s ease,box-shadow .3s ease}.category-card:hover{transform:translateY(-10px);box-shadow:0 15px 30px rgba(0,0,0,0.12)}.category-image-container{position:relative;overflow:hidden;height:250px}.category-image{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.category-card:hover .category-image{transform:scale(1.05)}.category-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.category-card:hover .category-overlay{opacity:1}.category-link{display:inline-block;padding:10px 25px;background:var(--primary-gradient);color:white;border-radius:30px;font-weight:500;text-decoration:none;transform:translateY(20px);transition:transform .3s ease}.category-card:hover .category-link{transform:translateY(0)}.category-info{padding:25px}.category-name{font-size:1.4rem;margin-bottom:10px;color:var(--color-black)}.category-desc{color:var(--color-dark-gray);font-size:.95rem;line-height:1.6}.faq-section{background-color:white;padding:100px 0}.accordion{max-width:800px;margin:0 auto}.accordion-item{margin-bottom:20px;border-radius:10px;overflow:hidden;box-shadow:0 5px 15px rgba(0,0,0,0.05);transition:all .3s ease}.accordion-item:hover{box-shadow:0 10px 30px rgba(0,0,0,0.1)}.accordion-header{background-color:white;padding:20px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.accordion-header h3{font-size:1.2rem;margin:0;transition:color .3s ease}.accordion-icon{transition:transform .3s ease}.accordion-item.active .accordion-icon{transform:rotate(180deg)}.accordion-item.active .accordion-header h3{color:var(--color-purple)}.accordion-body{max-height:0;overflow:hidden;transition:max-height .5s ease;background-color:white}.accordion-item.active .accordion-body{max-height:500px}.accordion-content{padding:0 20px 20px;color:var(--color-dark-gray);line-height:1.6}.accordion-content a{color:var(--color-purple);text-decoration:underline}@media (max-width:1024px){.categories-grid{grid-template-columns:repeat(2,1fr);gap:25px}}@media (max-width:768px){.categories-section{padding:60px 0}.categories-header h2{font-size:2rem}.categories-header p{font-size:1rem}
211.category-image-container{height:220px}.category-name{font-size:1.2rem}}@media (max-width:576px){.categories-grid{grid-template-columns:1fr;max-width:400px}.category-image-container{height:200px}.categories-header h2{font-size:1.8rem}.category-info{padding:20px}}.faq-section{display:block!important;background-color:white;padding:80px 0}.accordion{max-width:800px;margin:0 auto}.accordion-item{margin-bottom:20px;border-radius:10px;overflow:hidden;box-shadow:0 5px 15px rgba(0,0,0,0.05);transition:all .3s ease;display:block!important}.accordion-header{background-color:white;padding:20px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.accordion-body{max-height:0;overflow:hidden;transition:max-height .5s ease;background-color:white}.accordion-item.active .accordion-body{max-height:500px}.accordion-content{padding:0 20px 20px;color:var(--color-dark-gray);line-height:1.6}.accordion-icon i{transition:transform .3s ease}.accordion-item.active .accordion-icon i{transform:rotate(180deg)}.faq-section{display:block!important;visibility:visible!important;opacity:1!important;height:auto!important}.accordion{display:block!important;max-width:800px!important;margin:0 auto!important;visibility:visible!important;opacity:1!important}.accordion-item{display:block!important;margin-bottom:20px!important;border-radius:10px!important;overflow:hidden!important;box-shadow:0 5px 15px rgba(0,0,0,0.05)!important;transition:all .3s ease!important;visibility:visible!important;opacity:1!important;background-color:white!important}.accordion-header{background-color:white!important;padding:20px!important;cursor:pointer!important;display:flex!important;justify-content:space-between!important;align-items:center!important}.accordion-body{max-height:0!important;overflow:hidden!important;transition:max-height .5s ease!important;background-color:white!important}.accordion-item.active .accordion-body{max-height:800px!important}.accordion-content{padding:20px!important;color:#666!important;line-height:1.6!important}.accordion-icon i{transition:transform .3s ease!important}.accordion-item.active .accordion-icon i{transform:rotate(180deg)!important}.accordion-header h3{margin:0!important;font-size:1.2rem!important;color:#000!important}.accordion-item.active .accordion-header h3{color:#C14ADC!important}
212       /* Blog Section Styles */
213.blog-section {
214    background-color: white;
215    padding: 80px 0;
216    position: relative;
217}
218
219.blog-subtitle {
220    text-align: center;
221    color: var(--color-dark-gray);
222    margin-bottom: 50px;
223    font-size: 1.2rem;
224    max-width: 800px;
225    margin-left: auto;
226    margin-right: auto;
227}
228
229.blog-grid {
230    display: grid;
231    grid-template-columns: repeat(3, 1fr);
232    gap: 30px;
233    margin-bottom: 50px;
234}
235
236.blog-card {
237    background-color: white;
238    border-radius: 15px;
239    overflow: hidden;
240    box-shadow: 0 10px 25px rgba(0,0,0,0.08);
241    transition: all 0.3s ease;
242    height: 100%;
243    display: flex;
244    flex-direction: column;
245}
246
247.blog-card:hover {
248    transform: translateY(-10px);
249    box-shadow: 0 15px 35px rgba(0,0,0,0.12);
250}
251
252.blog-image-container {
253    position: relative;
254    overflow: hidden;
255}
256
257.blog-image {
258    width: 100%;
259    height: 220px;
260    object-fit: cover;
261    transition: transform 0.5s ease;
262}
263
264.blog-card:hover .blog-image {
265    transform: scale(1.05);
266}
267
268.blog-date {
269    position: absolute;
270    top: 15px;
271    right: 15px;
272    background: var(--primary-gradient);
273    color: white;
274    padding: 10px;
275    border-radius: 8px;
276    text-align: center;
277    line-height: 1.1;
278    font-weight: 600;
279    display: flex;
280    flex-direction: column;
281    min-width: 60px;
282}
283
284.date-day {
285    font-size: 1.2rem;
286}
287
288.date-month {
289    font-size: 0.9rem;
290    text-transform: uppercase;
291}
292
293.blog-content {
294    padding: 25px;
295    display: flex;
296    flex-direction: column;
297    flex-grow: 1;
298}
299
300.blog-title {
301    font-size: 1.3rem;
302    margin-bottom: 15px;
303    line-height: 1.4;
304    color: var(--color-black);
305}
306
307.blog-excerpt {
308    color: var(--color-dark-gray);
309    font-size: 0.95rem;
310    line-height: 1.7;
311    margin-bottom: 20px;
312    flex-grow: 1;
313}
314
315.blog-meta {
316    display: flex;
317    justify-content: space-between;
318    color: var(--color-dark-gray);
319    font-size: 0.85rem;
320    margin-bottom: 15px;
321}
322
323.blog-category i,
324.blog-read-time i {
325    margin-right: 5px;
326    color: var(--color-purple);
327}
328
329.blog-read-more {
330    align-self: flex-start;
331    color: var(--color-purple);
332    font-weight: 500;
333    display: inline-flex;
334    align-items: center;
335    transition: all 0.3s ease;
336    text-decoration: none;
337    position: relative;
338    padding-bottom: 3px;
339}
340
341.blog-read-more::after {
342    content: '';
343    position: absolute;
344    width: 0;
345    height: 2px;
346    bottom: 0;
347    left: 0;
348    background: var(--primary-gradient);
349    transition: width 0.3s ease;
350}
351
352.blog-read-more:hover::after {
353    width: 100%;
354}
355
356.blog-read-more i {
357    margin-left: 8px;
358    transition: transform 0.3s ease;
359}
360
361.blog-read-more:hover i {
362    transform: translateX(5px);
363}
364
365.blog-cta-container {
366    text-align: center;
367    margin-top: 40px;
368}
369
370.blog-view-all {
371    display: inline-block;
372    padding: 12px 30px;
373    background: var(--primary-gradient);
374    color: white;
375    font-weight: 500;
376    border-radius: 8px;
377    text-decoration: none;
378    transition: all 0.3s ease;
379    box-shadow: 0 8px 20px rgba(0,0,0,0.1);
380}
381
382.blog-view-all:hover {
383    transform: translateY(-5px);
384    box-shadow: 0 12px 25px rgba(0,0,0,0.15);
385}
386
387.blog-view-all i {
388    margin-left: 8px;
389    transition: transform 0.3s ease;
390}
391
392.blog-view-all:hover i {
393    transform: translateX(5px);
394}
395
396/* Media Queries */
397@media (max-width: 1024px) {
398    .blog-grid {
399        grid-template-columns: repeat(2, 1fr);
400    }
401}
402
403@media (max-width: 768px) {
404    .blog-section {
405        padding: 60px 0;
406    }
407
408    .blog-grid {
409        grid-template-columns: 1fr;
410        gap: 25px;
411    }
412
413    .blog-image {
414        height: 200px;
415    }
416}
417
418@media (max-width: 576px) {
419    .blog-section {
420        padding: 40px 0;
421    }
422
423    .blog-subtitle {
424        font-size: 1rem;
425        margin-bottom: 30px;
426    }
427
428    .blog-content {
429        padding: 20px;
430    }
431
432    .blog-title {
433        font-size: 1.2rem;
434    }
435
436    .blog-date {
437        top: 10px;
438        right: 10px;
439        padding: 8px;
440        min-width: 50px;
441    }
442
443    .date-day {
444        font-size: 1rem;
445    }
446
447    .date-month {
448        font-size: 0.8rem;
449    }
450}
451
452/* Adjust testimonial logo size for mobile devices */
453@media (max-width: 768px) {
454    .author-image-container {
455        width: 120px;  /* Smaller width for mobile (from 180px) */
456        height: 120px; /* Smaller height for mobile */
457        margin-bottom: 10px; /* Slightly reduced margin */
458    }
459}
460
461/* For very small screens, make it even smaller */
462@media (max-width: 480px) {
463    .author-image-container {
464        width: 90px;   /* Even smaller for very small screens */
465        height: 90px;
466    }
467}
468
469.category-arrow {
470    position: absolute;
471    bottom: 15px;
472    right: 15px;
473    background: linear-gradient(300deg, #E4A644 0%, #C14ADC 100%);
474    color: white;
475    width: 40px;
476    height: 40px;
477    border-radius: 50%;
478    display: flex;
479    align-items: center;
480    justify-content: center;
481    box-shadow: 0 5px 15px rgba(0,0,0,0.1);
482    transition: transform 0.3s ease, box-shadow 0.3s ease;
483    z-index: 10;
484}
485
486.category-arrow:hover {
487    transform: translateY(-5px) scale(1.05);
488    box-shadow: 0 10px 20px rgba(0,0,0,0.15);
489}
490
491.category-info {
492    position: relative;
493    padding-bottom: 30px;
494}
495
496/* Catalog Notification */
497.catalog-notification {
498    position: fixed;
499    bottom: 30px;
500    left: 50%;
501    transform: translateX(-50%);
502    background: var(--primary-gradient);
503    color: white;
504    padding: 15px 30px;
505    border-radius: 8px;
506    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
507    z-index: 9999;
508    text-align: center;
509    font-weight: 500;
510    animation: slideUp 0.3s ease forwards;
511
512}
513
514@keyframes slideUp {
515    from {
516        opacity: 0;
517        transform: translate(-50%, 20px);
518    }
519    to {
520        opacity: 1;
521        transform: translate(-50%, 0);
522    }
523}
524
525.catalog-notification.fade-out {
526    animation: fadeOut 0.5s ease forwards;
527}
528
529@keyframes fadeOut {
530    from {
531        opacity: 1;
532        transform: translate(-50%, 0);
533    }
534    to {
535        opacity: 0;
536        transform: translate(-50%, -20px);
537    }
538}
539
540/* Categories Section Styles */
541.categories-section {
542    padding: 80px 0;
543    background-color: var(--color-light-gray);
544}
545
546.categories-header {
547    text-align: center;
548    margin-bottom: 50px;
549}
550
551.categories-header h2 {
552    font-size: 2.5rem;
553    margin-bottom: 15px;
554    background: var(--primary-gradient);
555    -webkit-background-clip: text;
556    -webkit-text-fill-color: transparent;
557}
558
559.categories-header p {
560    font-size: 1.2rem;
561    color: var(--color-dark-gray);
562    max-width: 700px;
563    margin: 0 auto;
564}
565
566.categories-grid {
567    display: grid;
568    grid-template-columns: repeat(3, 1fr);
569    gap: 30px;
570    max-width: 1200px;
571    margin: 0 auto;
572}
573
574.category-card {
575    background-color: white;
576    border-radius: 12px;
577    overflow: hidden;
578    box-shadow: 0 10px 20px rgba(0,0,0,0.08);
579    transition: transform 0.3s ease, box-shadow 0.3s ease;
580}
581
582.category-card:hover {
583    transform: translateY(-10px);
584    box-shadow: 0 15px 30px rgba(0,0,0,0.12);
585}
586
587.category-image-container {
588    position: relative;
589    overflow: hidden;
590    height: 250px;
591}
592
593.category-image {
594    width: 100%;
595    height: 100%;
596    object-fit: cover;
597    transition: transform 0.5s ease;
598}
599
600.category-card:hover .category-image {
601    transform: scale(1.05);
602}
603
604.category-overlay {
605    position: absolute;
606    top: 0;
607    left: 0;
608    right: 0;
609    bottom: 0;
610    background: rgba(0,0,0,0.4);
611    display: flex;
612    align-items: center;
613    justify-content: center;
614    opacity: 0;
615    transition: opacity 0.3s ease;
616}
617
618.category-card:hover .category-overlay {
619    opacity: 1;
620}
621
622.category-link {
623    display: inline-block;
624    padding: 10px 25px;
625    background: var(--primary-gradient);
626    color: white;
627    border-radius: 30px;
628    font-weight: 500;
629    text-decoration: none;
630    transform: translateY(20px);
631    transition: transform 0.3s ease;
632}
633
634.category-card:hover .category-link {
635    transform: translateY(0);
636}
637
638.category-info {
639    padding: 25px;
640}
641
642.category-name {
643    font-size: 1.4rem;
644    margin-bottom: 10px;
645    color: var(--color-black);
646}
647
648.category-desc {
649    color: var(--color-dark-gray);
650    font-size: 0.95rem;
651    line-height: 1.6;
652}
653
654/* Responsive Adjustments */
655@media (max-width: 1024px) {
656    .categories-grid {
657        grid-template-columns: repeat(2, 1fr);
658        gap: 25px;
659    }
660}
661
662@media (max-width: 768px) {
663    .categories-section {
664        padding: 60px 0;
665    }
666
667    .categories-header h2 {
668        font-size: 2rem;
669    }
670
671    .categories-header p {
672        font-size: 1rem;
673    }
674
675    .category-image-container {
676        height: 220px;
677    }
678
679    .category-name {
680        font-size: 1.2rem;
681    }
682}
683
684@media (max-width: 576px) {
685    .categories-grid {
686        grid-template-columns: 1fr;
687        max-width: 400px;
688    }
689
690    .category-image-container {
691        height: 200px;
692    }
693
694    .categories-header h2 {
695        font-size: 1.8rem;
696    }
697
698    .category-info {
699        padding: 20px;
700    }
701}
702
703.sr-only {
704  position: absolute;
705  width: 1px;
706  height: 1px;
707  padding: 0;
708  margin: -1px;
709  overflow: hidden;
710  clip: rect(0, 0, 0, 0);
711  white-space: nowrap;
712  border-width: 0;
713}
714
715
716
717
718
719/* Estilos para a nova estrutura de lista de navegação */
720
721/* 1. Reset básico da lista e configuração flex para o novo <ul> */
722.nav-menu .nav-list {
723  display: flex;
724  align-items: center;
725  gap: 30px; /* Mantém o espaçamento original entre os links */
726  list-style: none;
727  margin: 0;
728  padding: 0;
729}
730
731/* 2. Ocultar o container dos botões apenas para móvel na versão desktop */
732.mobile-only-cta-container {
733}
734
735/* 3. Ajustes para a visualização móvel */
736@media (max-width: 1024px) {
737  /* Torna o <ul> um container flex vertical */
738  .nav-menu .nav-list {
739    flex-direction: column;
740    width: 100%;
741    align-items: center; /* Centraliza os itens como no design original */
742    gap: 40px; /* Mantém o espaçamento móvel original */
743  }
744
745  /* Garante que os itens da lista ocupem toda a largura */
746  .nav-menu .nav-list .nav-item {
747    width: 100%;
748  }
749
750  /* Exibe o container dos botões apenas para móvel */
751  .mobile-only-cta-container {
752    display: block;
753    width: 100%;
754  }
755}
756    </style>
757
758    <meta name="msvalidate.01" content="72E555E85FFCC10015D252685F65AFE1" />
759
760</head>
761<body>
762    <!-- Header -->
763 <!-- Header -->
764<!-- Updated Header Structure -->
765<div class="notification-bar" id="notification-bar">
766    <div class="container">
767        <a href='https://www.portugaltextile.com/launchlab'>
768            <p>Meet Launch Lab: A low-risk approach for your brand <span class="notification-cta">Click to learn more!<i style="color: white;" class="fas fa-external-link-alt external-icon"></i></span></p>
769        </a>
770    </div>
771</div>
772
773<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 773-774
773
774<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
774GTM-NWRT6VNV
vendor: 83 bytes, lines 774-775
774"
775height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
776<!-- End Google Tag Manager (noscript) -->
777
778<!-- Completely separate the brand nav from the notification bar -->
779<div class="brand-nav" style="position: relative; z-index: 10003;">
780    <a target="_blank" href="https://www.portugalshoes.com/" class="other-site" onclick="event.stopPropagation();">
781        <div class="logo-container">
782            <img loading="lazy" class="brand-logo" src="https://portugalshoes.com/assets/imgs/logoshoes.png" alt="Portugal Textile Logo">
783            <i class="fas fa-external-link-alt external-icon"></i>
784        </div>
785    </a>
786    <span class="brand-divider">|</span>
787    <a target="_blank" href="https://www.absolutarget.com/" class="other-site" onclick="event.stopPropagation();">
788        <div class="logo-container">
789            <img loading="lazy" class="brand-logo absologo" src="https://portugalshoes.com/assets/imgs/absologo.png" alt="Absolutarget Logo">
790            <i class="fas fa-external-link-alt external-icon"></i>
791        </div>
792    </a>
793</div>
794<header class="header">
795    <div class="container header-container">
796        <div class="header-left">
797            <!-- Mobile only: Hamburger menu on the left -->
798            <button id="mobileToggle" class="mobile-toggle" aria-label="Toggle menu">
799                <i class="fas fa-bars"></i>
800            </button>
801
802            <!-- Logo -->
803            <a href="/" class="logo">
804                <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2023/05/cropped-slogan_update-1-ai4.png" alt="Portugal Textile Logo">
805            </a>
806        </div>
807
808        <!-- Navigation menu -->
809   <!-- Updated Navigation Menu Structure -->
810<nav class="nav-menu" id="navMenu">
811    <ul class="nav-list" role="menubar" aria-label="Main Navigation">
812    <li class="nav-item" role="none"><a href="./about/index.html" class="nav-link" role="menuitem">About</a></li>
813 <li class="nav-item" role="none"><a href="./services/index.html" class="nav-link" role="menuitem">Services</a></li>
814 <li class="nav-item" role="none"><a href="./portfolio/index.html" class="nav-link" role="menuitem">Portfolio</a></li>
815 <li class="nav-item" role="none"><a href="https://www.portugaltextile.com/influencers/" class="nav-link" role="menuitem">Influencers</a></li>
816 <li class="nav-item" role="none"><a href="./sustainability/index.html" class="nav-link" role="menuitem">Sustainability</a></li>
817 <li class="nav-item" role="none"><a href="./certifications/index.html" class="nav-link" role="menuitem">Certifications</a></li>
818
819        <li class="nav-item mobile-only-cta-container">
820            <div style="display: flex; justify-content: center; align-items: center; flex-direction: column; gap: 20px; width: 100%;">
821                <a style="width: 100%; max-width: 100%;" href="https://www.portugaltextile.com/create-your-collection" class="btn btn-primary mobile-menu-cta">Create My Collection</a>
822                <a style="width: 100%; max-width: 100%;" href="./services/index.html" class="btn btn-secondary mobile-menu-cta2">Explore Our Process</a>
823            </div>
824        </li>
825    </ul>
826
827    <div class="mobile-menu-header">
828        <img loading='lazy' src="https://portugalshoes.com/assets/imgs/logoshoes.png" alt="Portugal Shoes Logo" class="mobile-menu-logo">
829    </div>
830</nav>
831
832        <div class="header-right">
833            <!-- CTA Button - Always visible and on the right -->
834            <a href="https://www.portugaltextile.com/create-your-collection" class="btn btn-primary header-cta">Create My Collection</a>
835        </div>
836    </div>
837    <!-- Progress bar -->
838    <div class="scroll-progress-container">
839        <div class="scroll-progress-bar"></div>
840    </div>
841</header>
842
843    <!-- Hero Section - ADJUSTED FOR MOBILE -->
844    <section class="hero">
845        <div class="container hero-container">
846            <div>
847            <div class="hero-badges">
848                    <div class="hero-badge"><i class="fas fa-check-circle" style="color: var(--color-purple); margin-right: 8px;"></i>Apparel Manufacturer</div>
849                    <div class="hero-badge"><i class="fas fa-check-circle" style="color: var(--color-purple); margin-right: 8px;"></i>Sustainable Clothes</div>
850
851                </div>
852            <div style="margin-bottom:80px;" class="hero-content">
853                <h1 class="hero-title">Clothing manufacturer group from Portugal </h1>
854                <h2 class="hero-subtitle">We develop sustainable clothing                </h2>
855                <p class="hero-text">Sustainable clothing development and manufacturing for fashion brands & influencers                </p>
856                <div class="hero-cta">
857                    <a href="https://www.portugaltextile.com/create-your-collection" class="btn btn-primary">Create My Collection</a>
858                    <a href="./services/index.html" class="btn btn-secondary">Explore Our Process</a>
859                </div>
860
861            </div>
862            </div>
863            <div class="hero-video" id="heroVideo">
864    <video fetchpriority='high'  preload="none" id="background-video" poster="https://portugaltextile.com//wp-content/uploads/2023/01/videothumbnail.png" playsinline loop autoplay muted>
865        <source src="https://portugaltextile.com/fianl-textile-site.webm" type="video/webm">
866    </video>
867
868    <!-- Play button overlay - shown when video is paused -->
869    <div class="video-overlay">
870        <div class="video-play-button">
871            <i class="fas fa-play"></i>
872        </div>
873    </div>
874
875    <!-- Pause button overlay - shown on hover when video is playing -->
876    <div class="video-overlay hover-overlay">
877        <div class="video-pause-button">
878            <i class="fas fa-pause"></i>
879        </div>
880    </div>
881
882    <div class="video-progress">
883        <div id="progress-filled" class="video-progress-filled"></div>
884    </div>
885</div>
886        </div>
887    </section>
888
889    <!-- Clients Section - UPDATED with AUTO-SCROLLING and COMPANY NAMES -->
890    <section class="clients">
891        <div class="container">
892            <h2 class="clients-title">Some of our clients:</h2>
893            <div class="clients-autoscroll-container">
894                <div class="clients-autoscroll">
895                    <!-- First set of logos -->
896                    <div class="client-logo">
897                        <img  loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2023/09/310234733_490573683082919_4878952062882500090_n.png" alt="Client 1">
898                    </div>
899                    <div class="client-logo">
900                        <img loading="lazy" src="https://portugaltextile.com/test-static/assets/imgs/malina%20logo.webp" alt="Client 2">
901                    </div>
902                    <div class="client-logo">
903                        <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/image-4-qkke1d98wlrhb7dv0uo720rgbe7nkpluhs9cu4fobs.png" alt="Client 3">
904                    </div>
905
906                    <!-- Duplicated logos for continuous scrolling -->
907                    <div class="client-logo">
908                        <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2023/09/310234733_490573683082919_4878952062882500090_n.png" alt="Client 1">
909                    </div>
910                    <div class="client-logo">
911                        <img loading="lazy" src="https://portugaltextile.com/test-static/assets/imgs/malina%20logo.webp" alt="Client 2">
912                    </div>
913                    <div class="client-logo">
914                        <img loading='lazy' src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/image-4-qkke1d98wlrhb7dv0uo720rgbe7nkpluhs9cu4fobs.png" alt="Client 3">
915                    </div>
916                </div>
917            </div>
918        </div>
919    </section>
920
921    <!-- Process Section - FIXED VISIBILITY -->
922    <section class="process" id="process">
923        <div class="container">
924            <h2 class="process-title">Step by Step</h2>
925            <p class="process-subtitle">Do it sustainable and easily with Portugal Textile            </p>
926            <div class="process-grid">
927                <div class="process-card">
928                    <div class="process-number">1</div>
929                    <h3 class="process-card-title">You request...</h3>
930                    <p class="process-card-text">You send us your request for the project and share your technical sheets or products as a reference for what you want to develop for your clothing collection.                    </p>
931                </div>
932                <div class="process-card">
933                    <div class="process-number">2</div>
934                    <h3 class="process-card-title">We analyze...</h3>
935                    <p class="process-card-text">Our commercial department will analyze your project and get back to you as soon as possible.                    </p>
936                </div>
937                <div class="process-card">
938                    <div class="process-number">3</div>
939                    <h3 class="process-card-title">Let's go!</h3>
940                    <p class="process-card-text">When we are all in the same page is time to start working together on your textile collection!                    </p>
941                </div>
942            </div>
943        </div>
944    </section>
945<!--
946  Static slider solution - no JavaScript required
947  Copy this entire block into your HTML where the slider should appear
948-->
949
950    <!-- About Section - FIXED VISIBILITY -->
951    <section class="about" id="about">
952        <div class="container about-container">
953            <div class="about-content">
954                <h2>Our approach</h2>
955                <h3>Portugal based textile manufacturer group founded in 2007                </h3>
956                <p>During our years working in the textile industry, at Portugal Textile, our team acquired a huge know-how of the market, as well as a large network of manufacturers in Portugal.
957
958                </p>
959                <p>Working in this industry since 2007 and helping international fashion brands placing their clothing productions at the right factories in Portugal, Paulo Silva, the founder identified a lack in the fashion market. So, in 2007 he created Portugal Textile, a sustainable clothing development and manufacturer group that helps influencers & fashion brands producing in Portugal.
960
961                </p>
962                <a href="./about/index.html" class="about-btn">Tell me more</a>
963            </div>
964            <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_8631-scaled-qww8zcjkecms10g9ai2bapnjz97zwffxxozf0gc3n4.webp" alt="Portugal Shoes Team" class="about-image">
965        </div>
966    </section>
967
968    <!-- Benefits Section - FIXED VISIBILITY -->
969    <section class="benefits" id="benefits">
970        <div class="container">
971            <h2 class="section-title">Why Choose Us</h2>
972            <p class="benefits-subtitle">Discover some of the strengths of working with us</p>
973            <div class="benefits-grid">
974                <div class="benefit-card">
975                    <div class="benefit-header">
976                        <div class="benefit-icon">
977                            <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/2022/11/handshake_FILL0_wght400_GRAD0_opsz48.svg" alt="Handshake Icon">
978                        </div>
979                        <h3 class="benefit-title">Reliable partner</h3>
980                    </div>
981                    <p class="benefit-text">We are committed to build trustworthy business relationships with all the stakeholders, while we provide the best customer experience possible to our clients.</p>
982                </div>
983                <div class="benefit-card">
984                    <div class="benefit-header">
985                        <div class="benefit-icon">
986                            <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/2022/12/favorite_FILL0_wght700_GRAD-25_opsz48.svg" alt="Made in Portugal Icon">
987                        </div>
988                        <h3 class="benefit-title">Made in Portugal</h3>
989                    </div>
990                    <p class="benefit-text">The "made in Portugal" label has achieved an international reputation and notoriety that currently places the clothing industry among the best performing manufacturing industries in the world. In terms of fair production and ethical practices Portugal is a leader.</p>
991                </div>
992                <div class="benefit-card">
993                    <div class="benefit-header">
994                        <div class="benefit-icon">
995                            <img loading="lazy" src="./assets/imgs/white-molecule-file.svg" alt="Contact Icon">
996                        </div>
997                        <h3 class="benefit-title">One point of contact</h3>
998                    </div>
999                    <p class="benefit-text">You can forget all the struggles of being in touch with many people and services during the process. Our team is going to be your one and only point of contact. Each step of product development process benefits from a close follow up, so that everything is in place and runs smoothly.</p>
1000                </div>
1001                <div class="benefit-card">
1002                    <div class="benefit-header">
1003                        <div class="benefit-icon">
1004                            <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/2022/11/eco_FILL0_wght400_GRAD0_opsz48.svg" alt="Sustainability Icon">
1005                        </div>
1006                        <h3 class="benefit-title">Sustainable oriented process</h3>
1007                    </div>
1008                    <p class="benefit-text">Our innovative service provides a sustainable solution that has in mind all the supply chain. We work with more than 20 factories. Our team will select the right manufacturer according to your needs, having in mind meeting your deadlines and quality standards.</p>
1009                </div>
1010            </div><br><br>
1011                            <a style="width: fit-content;" href="https://www.portugaltextile.com/create-your-collection" class="btn btn-primary mobile-menu-cta">Create My Collection</a>
1012
1013        </div>
1014
1015
1016
1017
1018    </section>
1019    <section class="materials" id="sustainability">
1020        <div class="container">
1021            <h2 class="materials-title">Develop your clothing collection with sustainable materials            </h2>
1022            <p class="materials-subtitle">See the innovative options:</p>
1023            <div class="materials-grid">
1024                <div class="material-card">
1025                    <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_8175-1-scaled-qrom0ph4bltrbmocxdc9bu5is9d5ouo07l2nzyruzk.webp" alt="Recycled Tire" class="material-image">
1026                    <div class="material-content">
1027                        <h3 class="material-name">Organic Cotton</h3>
1028                        <p class="material-description">Innovative material made from recycled tires, creating durable and eco-friendly soles for your footwear.</p>
1029                    </div>
1030                </div>
1031                <div class="material-card">
1032                    <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/recycled-pet-plastic-scaled-qotpgnct1c
1032hfbpevd0t0wsk4yju45ilics3k9qzrfk.jpg" alt="Pet Plastic" class="material-image">
1033                    <div class="material-content">
1034                        <h3 class="material-name">PET Plastic</h3>
1035                        <p class="material-description">Sustainable materials created from recycled plastic bottles, reducing waste while providing quality footwear components.</p>
1036                    </div>
1037                </div>
1038                <div class="material-card">
1039                    <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/wouter-supardi-salari-HE_MjmWh9eQ-unsplash-q0i3a22yccrguxoj3l6barjeuvnctdup18tf4i6bvk.jpg" alt="Corn" class="material-image">
1040                    <div class="material-content">
1041                        <h3 class="material-name">Corn</h3>
1042                        <p class="material-description">Plant-based material derived from corn, offering a renewable and biodegradable alternative for sustainable footwear.</p>
1043                    </div>
1044                </div>
1045                <div class="material-card">
1046                    <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/Novo-Projeto46-q0quca7k2hexvkgrgtsp13dkwp9f2ipas1t4tay080.png" alt="Cork" class="material-image">
1047                    <div class="material-content">
1048                        <h3 class="material-name">Cork</h3>
1049                        <p class="material-description">Natural cork harvested sustainably from Portuguese cork oak trees, creating comfortable and eco-friendly footwear components.</p>
1050                    </div>
1051                </div>
1052                <div class="material-card">
1053                    <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/adrienne-leonard-KUFKZ1EXh6c-unsplash1-scaled-qotpggrxpi8f2fofffymxc7wsuqjnmvdzvj5wt9in4.jpg" alt="Cactus Leather" class="material-image">
1054                    <div class="material-content">
1055                        <h3 class="material-name">Cactus Leather</h3>
1056                        <p class="material-description">Innovative vegan leather alternative made from cactus plants, offering a sustainable and cruelty-free option.</p>
1057                    </div>
1058                </div>
1059                <div class="material-card">
1060                    <img loading="lazy" src="https://portugalshoes.com/wp-content/uploads/elementor/thumbs/matheus-cenali-wXuzS9xR49M-unsplash-q0i3h7mqcyk183afboi39yjpmgdxeg95cnkgmbkgio.jpg" alt="Apple Leather" class="material-image">
1061                    <div class="material-content">
1062                        <h3 class="material-name">Apple Leather</h3>
1063                        <p class="material-description">Eco-friendly leather alternative created from apple industry waste, providing a luxurious feel with minimal environmental impact.</p>
1064                    </div>
1065                </div>
1066            </div>
1067            <div style='display:flex; justify-content:center;width:100%; align-content:center;padding:60px;'>
1068            <a href="./services/index.html" class="about-btn">Explore our services</a>
1069            </div>
1070        </div>
1071    </section>
1072    <!-- Workflow Section - FIXED VISIBILITY -->
1073    <section class="workflow" id="services">
1074        <div class="container workflow-container">
1075            <div class="workflow-slider">
1076                <div class="workflow-track" id="workflowTrack">
1077                    <!-- Initial slide loaded here -->
1078                </div>
1079                <div class="workflow-arrows">
1080                    <button class="workflow-arrow prev" id="prevSlide">
1081                        <i class="fas fa-chevron-left"></i>
1082                    </button>
1083                    <button class="workflow-arrow next" id="nextSlide">
1084                        <i class="fas fa-chevron-right"></i>
1085                    </button>
1086                </div>
1087                <div class="workflow-navigation" id="workflowDots">
1088                    <!-- Dots generated by JS -->
1089                </div>
1090            </div>
1091            <div class="workflow-content">
1092                <h2>Our service</h2>
1093                <h3>Here are a few things we can do for you</h3>
1094
1095                <p>We provide an innovative service to fulfill all your needs during the development of your current fashion brand or among the process of building your new one.</p>
1096                <p>Our fashion business solution will help you dealing with every process easily. This will enable you to meet your deadlines, and take off the stress involved in bringing a footwear collection to life.</p>
1097                <a href="./services/index.html" class="about-btn">Explore our process</a>
1098            </div>
1099        </div>
1100    </section>
1101
1102<style>
1103  .slider-container {
1104    width: 100%;
1105    background: linear-gradient(135deg, rgba(228,166,68,0.1) 0%, rgba(193,74,220,0.1) 100%);
1106    padding: 20px 0;
1107    overflow: hidden;
1108    position: relative;
1109    font-family: 'Montserrat', sans-serif;
1110  }
1111
1112  .slider-container::before,
1113  .slider-container::after {
1114    content: '';
1115    position: absolute;
1116    top: 0;
1117    width: 100px;
1118    height: 100%;
1119    z-index: 2;
1120    pointer-events: none;
1121  }
1122
1123  .slider-container::before {
1124    left: 0;
1125    background: linear-gradient(to right, rgba(228,166,68,0.1), transparent);
1126  }
1127
1128  .slider-container::after {
1129    right: 0;
1130    background: linear-gradient(to left, rgba(193,74,220,0.1), transparent);
1131  }
1132
1133  .keywords-slider {
1134    display: flex;
1135    white-space: nowrap;
1136    animation: marquee 25s linear infinite;
1137  }
1138
1139  @keyframes marquee {
1140    0% { transform: translateX(20%); }
1141    100% { transform: translateX(-100%); }
1142  }
1143
1144  .keyword {
1145    display: inline-block;
1146    font-size: 1rem;
1147    font-weight: 600;
1148    margin: 0 40px;
1149    color: #000000;
1150    letter-spacing: 1px;
1151  }
1152
1153  @media (max-width: 1024px) {
1154    .keyword {
1155      font-size: 1.5rem;
1156    }
1157  }
1158
1159  @media (max-width: 768px) {
1160    .keyword {
1161      font-size: 1.2rem;
1162      margin: 0 30px;
1163    }
1164  }
1165
1166  @media (max-width: 576px) {
1167    .keyword {
1168      font-size: 1rem;
1169      margin: 0 25px;
1170    }
1171  }
1172</style>
1173
1174<div class="slider-container">
1175  <div class="keywords-slider">
1176    <div class="keyword">Luxury Clothing Manufacturers</div>
1177    <div class="keyword">Clothes Manufacturer</div>
1178    <div class="keyword">Garment Manufacturer</div>
1179    <div class="keyword">Custom Clothing Manufacturers</div>
1180    <div class="keyword">Brand</div>
1181    <div class="keyword">Portugal Factory</div>
1182    <div class="keyword">Woven Supplier</div>
1183    <div class="keyword">Clothing Supplier</div>
1184    <!-- Duplicate keywords for continuous effect -->
1185    <div class="keyword">Luxury Clothing Manufacturers</div>
1186    <div class="keyword">Clothes Manufacturer</div>
1187    <div class="keyword">Garment Manufacturer</div>
1188    <div class="keyword">Custom Clothing Manufacturers</div>
1189    <div class="keyword">Brand</div>
1190    <div class="keyword">Portugal Factory</div>
1191    <div class="keyword">Woven Supplier</div>
1192    <div class="keyword">Clothing Supplier</div>
1193  </div>
1194</div>
1195    <!-- Materials Section - FIXED VISIBILITY -->
1196   <section class="categories-section">
1197    <div class="container">
1198        <div class="categories-header">
1199            <h2 class="section-title">Clothing Categories</h2>
1200            <p>Explore our expertise across various apparel categories</p>
1201        </div>
1202
1203        <div class="categories-grid">
1204            <!-- Category 1 -->
1205            <div class="category-card">
1206                <div class="category-image-container">
1207                    <img  loading="lazy" src="./assets/basics.webp" alt="Basics Collection" class="category-image">
1208                </div>
1209                <div class="category-info">
1210                    <h3 class="category-name">Basics</h3>
1211                    <p class="category-desc">Create versatile collections with timeless essentials such as t-shirts, hoodies, shorts, and joggers, designed for everyday style.</p>
1212                </div>
1213            </div>
1214
1215            <!-- Category 2 -->
1216            <div class="category-card">
1217                <div class="category-image-container">
1218                    <img  loading="lazy" src="./assets/activewear.webp" alt="Activewear Collection" class="category-image">
1219                </div>
1220                <div class="category-info">
1221                    <h3 class="category-name">Activewear</h3>
1222                    <p class="category-desc">Develop high-performance activewear collections using breathable, flexible fabrics that support movement and athletic performance.</p>
1223                </div>
1224            </div>
1225
1226            <!-- Category 3 -->
1227            <div class="category-card">
1228                <div class="category-image-container">
1229                    <img  loading="lazy" src="./assets/swimwear.webp" alt="Swimwear Collection" class="category-image">
1230                </div>
1231                <div class="category-info">
1232                    <h3 class="category-name">Swimwear</h3>
1233                    <p class="category-desc">Offer swimwear collections featuring bikinis, swimsuits, and shorts, crafted from durable materials to ensure both style and lasting performance in the water.</p>
1234                </div>
1235            </div>
1236
1237            <!-- Category 4 -->
1238            <div class="category-card">
1239                <div class="category-image-container">
1240                    <img  loading="lazy" src="./assets/denim.webp" alt="Denim Collection" class="category-image">
1241                </div>
1242                <div class="category-info">
1243                    <h3 class="category-name">Denim</h3>
1244                    <p class="category-desc">Build a denim collection that combines classic cuts and modern fits, offering a variety of jeans, jackets, and skirts with multiple wash options.</p>
1245                </div>
1246            </div>
1247
1248            <!-- Category 5 -->
1249            <div class="category-card">
1250                <div class="category-image-container">
1251                    <img  loading="lazy" src="./assets/loungewear.webp" alt="Loungewear Collection" class="category-image">
1252                </div>
1253                <div class="category-info">
1254                    <h3 class="category-name">Loungewear</h3>
1255                    <p class="category-desc">Design relaxed and stylish loungewear collections, including robes, pajamas, and accessories, ideal for relaxed at-home days.</p>
1256                </div>
1257            </div>
1258
1259            <!-- Category 6 -->
1260            <div class="category-card">
1261                <div class="category-image-container">
1262                    <img  loading="lazy" src="./assets/underwear.webp" style='object-position:top;' alt="Underwear Collection" class="category-image">
1263                </div>
1264                <div class="category-info">
1265                    <h3 class="category-name">Underwear</h3>
1266                    <p class="category-desc">Develop a collection of high-quality bras, briefs, boxers, and lingerie, focused on comfort, fit, and support for everyday wear.</p>
1267                </div>
1268            </div>
1269
1270            <!-- Category 7 -->
1271            <div class="category-card">
1272                <div class="category-image-container">
1273                    <img  loading="lazy" src="./assets/outerwear.webp" style='object-position:top;' alt="Outerwear Collection" class="category-image">
1274                </div>
1275                <div class="category-info">
1276                    <h3 class="category-name">Outerwear</h3>
1277                    <p class="category-desc">Add jackets, coats, trenchcoats, and parkas to your brand, offering both weather protection and trendy designs.</p>
1278                </div>
1279            </div>
1280
1281            <!-- Category 8 -->
1282            <div class="category-card">
1283                <div class="category-image-container">
1284                    <img  loading="lazy" src="./assets/kidswear.webp" style='object-position:top;' alt="Kidswear Collection" class="category-image">
1285                </div>
1286                <div class="category-info">
1287                    <h3 class="category-name">Kidswear</h3>
1288                    <p class="category-desc">
1288For babies and children, create a collection with comfortable pieces featuring playful prints, vibrant colors, and easy-to-wear fits.</p>
1289                </div>
1290            </div>
1291
1292            <!-- Category 9 -->
1293            <div class="category-card">
1294                <div class="category-image-container">
1295                    <img  loading="lazy" src="./assets/suits.webp" style='object-position:top;' alt="Suits Collection" class="category-image">
1296                </div>
1297                <div class="category-info">
1298                    <h3 class="category-name">Suits</h3>
1299                    <p class="category-desc">Craft finely tailored blazers, trousers, and skirts, with structured cuts and premium fabrics for formal, casual or professional occasions.</p>
1300                </div>
1301            </div>
1302        </div>
1303    </div>
1304</section>
1305
1306    <!-- Beyond Footwear Section - REDESIGNED -->
1307    <section class="accessories" id="portfolio">
1308        <div class="container">
1309            <h2 class="accessories-title">Beyond Clothing</h2>
1310            <p class="accessories-subtitle">Discover our sustainable accessories collection</p>
1311            <div class="accessories-container">
1312                <div class="accessories-card">
1313                    <img  loading="lazy" src="./assets/imgs/bedding.jpg" alt="Luxury Bags" class="accessories-image">
1314                    <div class="accessories-content">
1315                        <h3>Bedding</h3>
1316                        <p>Complete your home textiles collection with our bedding range, which includes pillowcases, duvet covers, and blankets. Made from high-quality materials, it can be the ideal complement to your loungewear lines.</p>
1317                        <a href="https://www.portugaltextile.com/bedding" class="accessories-btn">Explore More</a>
1318                    </div>
1319                </div>
1320                <div class="accessories-card">
1321                    <img  loading="lazy" src="./assets/imgs/robe.jpg" alt="Designer Belts" class="accessories-image">
1322                    <div class="accessories-content">
1323                        <h3>Homeware</h3>
1324                        <p>Create the perfect collection of home essentials. From kitchen accessories like aprons and gloves to table decoration such as towels and placemats. Complete your selection with cozy robes and sleep masks, or everyday makeup bags and organizers.</p>
1325                        <a  href="https://www.portugaltextile.com/homeware" class="accessories-btn">Explore More</a>
1326                    </div>
1327                </div>
1328                <div class="accessories-card">
1329                    <img  loading="lazy" src="./assets/imgs/tote-bag.jpg" alt="Eco Backpacks" class="accessories-image">
1330                    <div class="accessories-content">
1331                        <h3>Accessories</h3>
1332                        <p> No outfit is ready without accessories: we also offer textile accessories such as tote bags, scarves, gloves and s
1332ocks. And for the hair? Scrunchies and headbands add the finishing touch.</p>
1333                        <a  href="https://www.portugaltextile.com/accessories" class="accessories-btn">Explore More</a>
1334                    </div>
1335                </div>
1336
1337                 <div class="accessories-card">
1338                    <img loading='lazy' src="./assets/imgs/jewels.jpg" alt="Eco Backpacks" class="accessories-image">
1339                  <div class="accessories-content">
1340    <h3>Jewelry</h3>
1341    <p>We manufacture high-quality jewelry designed to stand out. From minimalist pieces to bold designs, we produce earrings, rings, bracelets, and necklaces tailored to your brand. Made with care. Made to impress.</p>
1342    <a href="https://www.portugaltextile.com/jewelry" class="accessories-btn">Explore More</a>
1343</div>
1344
1345                </div>
1346            </div>
1347        </div>
1348    </section>
1349
1350    <!-- Testimonials Section - REDESIGNED using influencer page style -->
1351
1352         <section class="testimonials" id="testimonials">
1353    <div class="container">
1354        <div class="testimonials-header">
1355            <h2 class="testimonials-title">We worked with the best brands</h2>
1356            <p class="testimonials-subtitle">Testimonials from our clients</p>
1357        </div>
1358        <div class="testimonials-slider">
1359            <div class="testimonials-container" id="testimonialsContainer">
1360                <div class="testimonial-item">
1361                    <div class="testimonial-card">
1362                        <div class="testimonial-content">
1363                            To work with Portugal Textile has really been such an important part of our journey to where we are as a company today. They were our first partner in producing our items and they are a great partner to us still four years later. Their personal service and engagement is a constant help in our work and we can wholeheartedly recommend them as a partner in the textile business.
1364                        </div>
1365                        <div class="testimonial-author">
1366                            <div class="author-image-container">
1367                                <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2023/09/310234733_490573683082919_4878952062882500090_n.png" alt="Djerf Avenue" class="author-image">
1368                            </div>
1369                            <div class="author-info">
1370                                <h3>Matilda Djerf</h3>
1371                                <p>CEO & Founder</p>
1372                            </div>
1373                        </div>
1374                    </div>
1375                </div>
1376            </div>
1377            <div class="slider-nav" id="sliderNav">
1378                <div class="slider-dot active" data-index="0"></div>
1379                <div class="slider-dot" data-index="1"></div>
1380            </div>
1381        </div>
1382    </div>
1383</section>
1384
1385<style>
1386/* Modified testimonial card layout */
1387.testimonial-card {
1388    background: white;
1389    border-radius: 15px;
1390    padding: 30px;
1391    box-shadow: 0 10px 30px rgba(0,0,0,0.05);
1392    display: flex;
1393    flex-direction: row;
1394    align-items: center;
1395    gap: 30px;
1396}
1397
1398.testimonial-content {
1399    flex: 1;
1400    position: relative;
1401    padding: 20px 0;
1402    font-size: 1.1rem;
1403    line-height: 1.8;
1404    color: var(--color-dark-gray);
1405    margin-bottom: 0;
1406}
1407
1408.testimonial-content::before {
1409    content: '"';
1410    position: absolute;
1411    top: -20px;
1412    left: -10px;
1413    font-size: 5rem;
1414    color: rgba(0,0,0,0.1);
1415    line-height: 1;
1416}
1417
1418.testimonial-author {
1419    min-width: 260px;
1420    display: flex;
1421    flex-direction: column;
1422    align-items: center;
1423    text-align: center;
1424}
1425
1426/* Round image with gradient border */
1427.author-image-container {
1428    position: relative;
1429    width: 180px;
1430    height: 180px; /* Make it square to ensure perfect circle */
1431    margin-bottom: 15px;
1432}
1433
1434.author-image-container::before {
1435    content: '';
1436    position: absolute;
1437    top: -4px;
1438    left: -4px;
1439    right: -4px;
1440    bottom: -4px;
1441    background: linear-gradient(300deg, #E4A644 0%, #C14ADC 100%);
1442    border-radius: 50%; /* Make it circular */
1443    z-index: 0;
1444}
1445
1446.author-image {
1447    position: relative;
1448    display: block;
1449    width: 100%;
1450    height: 100%;
1451    border-radius: 50%; /* Make it circular */
1452    z-index: 1;
1453    object-fit: cover; /* Ensures the image covers the area without distortion */
1454}
1455
1456.author-info h4 {
1457    font-size: 1.1rem;
1458    margin-bottom: 5px;
1459    color: var(--color-black);
1460}
1461
1462.author-info p {
1463    font-size: .9rem;
1464    color: var(--color-dark-gray);
1465}
1466
1467/* Responsive styles for mobile */
1468@media (max-width: 768px) {
1469    .testimonial-card {
1470        flex-direction: column;
1471    }
1472
1473    .testimonial-content {
1474        padding-right: 0;
1475        margin-bottom: 20px;
1476    }
1477
1478    .testimonial-author {
1479        width: 100%;
1480    }
1481}
1482</style>
1483        </div>
1484    </section>
1485<section class="faq-section section" id="faq-section">
1486    <div class="container">
1487        <h2 class="section-title">Frequently Asked Questions</h2>
1488        <div class="accordion">
1489            <div class="accordion-item">
1490                <div class="accordion-header">
1491                    <h3>How can I work with you?</h3>
1492                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1493                </div>
1494                <div class="accordion-body">
1495                    <div class="accordion-content">
1496
1497                        <p>To begin working with us, you just need to contact us, sending your request about the project through <a href="https://portugaltextile.com/create-my-collection">this form</a> or <a href="mailto:[email protected]">email</a>. You send us your tech packs as well as the quantities per style color, price targets and deadline of the collection. Then, our commercial department will analyze the project to understand your vision, what the brand is looking for and how we can fulfill all your needs.</p>
1498
1499
1500
1501                    </div>
1502                </div>
1503            </div>
1504
1505            <div class="accordion-item">
1506                <div class="accordion-header">
1507                    <h3>How can I do a tech pack and submit it for you?</h3>
1508                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1509                </div>
1510                <div class="accordion-body">
1511                    <div class="accordion-content">
1512                        <p>A Tech Pack is a framework for sharing your ideas in a structured way. Tech Packs are illustrated designs and specifications of your garment design. A Tech Pack is often required to obtain a quote from a manufacturer or agency, and to ensure that people understand how to make your design and its specifications.</p>
1513                        <br><p>You can submit your designs, tech packs, sketches or image references to us via our <a href="https://portugaltextile.com/create-my-collection">contact form</a>. Alternatively, you can also email us at <a href="mailto:[email protected]">[email protected]</a></p>
1514                        <p>Note: If you don't have a tech pack, you can always send us physical samples from similar styles for what you want to produce.</p>
1515                    </div>
1516                </div>
1517            </div>
1518
1519            <div class="accordion-item">
1520                <div class="accordion-header">
1521                    <h3>What are your minimum order quantities?</h3>
1522                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1523                </div>
1524                <div class="accordion-body">
1525                    <div class="accordion-content">
1526                        <p>Our minimum order quantities (MOQs) are customized for each project and may vary based on style and color requirements. Send us your project at <a href='mailto:[email protected]'>[email protected]</a> or at <a href='https://www.portugaltextile.com/create-your-collection'>www.portugaltextile.com/create-your-collection</a>.</p>
1527                    </div>
1528                </div>
1529            </div>
1530
1531            <div class="accordion-item">
1532                <div class="accordion-header">
1533                    <h3>What is your production lead times?</h3>
1534                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1535                </div>
1536                <div class="accordion-body">
1537                    <div class="accordion-content">
1538                        <p>The project timeline is dependent on your specific needs. Send us your project at <a href='mailto:[email protected]'>[email protected]</a> or at <a href='https://www.portugaltextile.com/create-your-collection'>www.portugaltextile.com/create-your-collection</a>.</p>
1539                    </div>
1540                </div>
1541            </div>
1542
1543            <div class="accordion-item">
1544                <div class="accordion-header">
1545                    <h3>What types of materials are you able to source?</h3>
1546                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1547                </div>
1548                <div class="accordion-body">
1549                    <div class="accordion-content">
1550                        <p>We can source all type of materials for textile development, sustainable materials included, for examples: organic cotton, EcoVero, Tencel, cactus leather, grape leather, etc. <a href="./sustainability/index.html">
1550See here some of the innovative options.</a></p>
1551                    </div>
1552                </div>
1553            </div>
1554
1555            <div class="accordion-item">
1556                <div class="accordion-header">
1557                    <h3>Do you do the quality control?</h3>
1558                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1559                </div>
1560                <div class="accordion-body">
1561                    <div class="accordion-content">
1562                        <p>Yes! We have an internal team dedicated to the quality control of all the stages of the process. Every material is inspected before and after any procedure. Our quality controller team will measure, check flaws, test quality, functionality, comfort, durability, and any other important detail for you.</p>
1563                    </div>
1564                </div>
1565            </div>
1566
1567            <div class="accordion-item">
1568                <div class="accordion-header">
1569                    <h3>How do you take care of the packaging?</h3>
1570                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1571                </div>
1572                <div class="accordion-body">
1573                    <div class="accordion-content">
1574                        <p>We provide sustainable, recycled, and biodegradable custom labels, tags, packaging and accessories to create a fully branded product. You should send us your requirements (size, material, colors, etc.) and artworks, and we will make it happen.</p>
1575                    </div>
1576                </div>
1577            </div>
1578
1579            <div class="accordion-item">
1580                <div class="accordion-header">
1581                    <h3>How do you take care of transport/delivery of the collection?</h3>
1582                    <span class="accordion-icon"><i class="fas fa-chevron-down"></i></span>
1583                </div>
1584                <div class="accordion-body">
1585                    <div class="accordion-content">
1586                        <p>We work with several transport companies with land, air, and sea shipments, in order to send the collection to any destination in the world. For each place we have references to provide you the best solutions.</p>
1587                    </div>
1588                </div>
1589            </div>
1590        </div>
1591    </div>
1592</section>
1593<!-- Blog Section -->
1594<section class="blog-section" id="blog">
1595    <div class="container">
1596        <h2 class="section-title">Latest From Our Blog</h2>
1597        <p class="blog-subtitle">Insights and updates from the sustainable fashion world</p>
1598
1599        <div class="blog-grid">
1600            <!-- Blog Post 1 -->
1601            <div class="blog-card">
1602                <div class="blog-image-container">
1603                    <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2024/09/Design-sem-nome-54.png" alt="Sustainable Materials in Textile Production" class="blog-image">
1604                    <div class="blog-date">
1605                        <span class="date-day">24</span>
1606                        <span class="date-month">Sep</span>
1607                    </div>
1608                </div>
1609                <div class="blog-content">
1610                    <h3 class="blog-title">What Makes Portugal a Good Location for Fashion Manufacturing?</h3>
1611                    <p class="blog-excerpt">Many fashion brands believe that manufacturing high-quality clothing means choosing big-name countries like Italy or France…
1612
1613But what if I told you they've been overlooking a hidden gem in the fashion world? A place where tradition, craftsmanship, and cutting-edge technology meet in perfect harmony?</p>
1614                    <div class="blog-meta">
1615                        <span class="blog-category"><i class="fas fa-tag"></i> Sustainability</span>
1616                        <span class="blog-read-time"><i class="fas fa-clock"></i> 7 min read</span>
1617                    </div>
1618                    <a href="https://portugaltextile.com/what-makes-portugal-a-good-location-for-fashion-manufacturing/" class="blog-read-more">Read More <i class="fas fa-arrow-right"></i></a>
1619                </div>
1620            </div>
1621
1622            <!-- Blog Post 2 -->
1623            <div class="blog-card">
1624                <div class="blog-image-container">
1625                    <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2025/01/cwa4MhJpStqPZEIt2WcmlQ-1.webp" alt="Ethical Manufacturing Practices" class="blog-image">
1626                    <div class="blog-date">
1627                        <span class="date-day">15</span>
1628                        <span class="date-month">Apr</span>
1629                    </div>
1630                </div>
1631                <div class="blog-content">
1632                    <h3 class="blog-title">Why Choosing a Textile Factory in Portugal?</h3>
1633                    <p class="blog-excerpt">When sourcing high-quality, sustainable, and ethically produced textiles, more brands are turning their eyes to Europe—and one country continues to lead the charge: Portugal. From luxury fashion labels to up-and-coming startups, brands across the globe are tapping into the expertise and innovation that a textile factory in Portugal can offer.</p>
1634                    <div class="blog-meta">
1635                        <span class="blog-category"><i class="fas fa-tag"></i> Manufacturing</span>
1636                        <span class="blog-read-time"><i class="fas fa-clock"></i> 4 min read</span>
1637                    </div>
1638                    <a href="https://portugaltextile.com/why-choosing-a-textile-factory-in-portugal/" class="blog-read-more">Read More <i class="fas fa-arrow-right"></i></a>
1639                </div>
1640            </div>
1641
1642            <!-- Blog Post 3 -->
1643            <div class="blog-card">
1644                <div class="blog-image-container">
1645                    <img loading="lazy" src="https://portugaltextile.com/wp-content/uploads/2025/01/Novo-Projeto-7.png" alt="Manufacturing a Fashion Brand" class="blog-image">
1646                    <div class="blog-date">
1647                        <span class="date-day">24</span>
1648                        <span class="date-month">Apr</span>
1649                    </div>
1650                </div>
1651                <div class="blog-content">
1652                    <h3 class="blog-title">Portugal: The Epicenter of Clothing Manufacturing Excellence</h3>
1653                    <p class="blog-excerpt">Portugal has not only built a legacy on its centuries-old textile tradition, but it has also evolved into a modern powerhouse of innovation, quality, and sustainability. For any brand on the hunt for an outstanding clothing manufacturer in Portugal, the country's advanced production methods, ethical manufacturing practices, and customer-centric approach set the ideal stage for creative excellence.</p>
1654                    <div class="blog-meta">
1655                        <span class="blog-category"><i class="fas fa-tag"></i>Manufacturing</span>
1656                        <span class="blog-read-time"><i class="fas fa-clock"></i> 6 min read</span>
1657                    </div>
1658                    <a href="https://portugaltextile.com/clothing-manufacturer-portugal/" class="blog-read-more">Read More <i class="fas fa-arrow-right"></i></a>
1659                </div>
1660            </div>
1661        </div>
1662
1663        <div class="blog-cta-container">
1664            <a href="https://portugaltextile.com/blog/" class="blog-view-all">View All Articles <i class="fas fa-long-arrow-alt-right"></i></a>
1665        </div>
1666    </div>
1667</section>
1668
1669    <!-- CTA Section - FIXED VISIBILITY -->
1670    <section class="cta" id="contact">
1671        <div class="cta-container">
1672            <h2 class="cta-title">Ready to elevate your clothing brand?</h2>
1673            <h3 class="cta-subtitle">Let's collaborate to create exceptional clothing.</h3>
1674            <p class="cta-text">Contact us today to discuss your project requirements, explore customization options, and discover how Portugal Textile can help you elevate your brand. We look forward to hearing from you!</p>
1675
1676                        <div class="trust-badges">
1677                <div class="trust-badge">
1678                    <i class="fas fa-check-circle"></i>
1679                    <span>Free Technical Consultation</span>
1680                </div>
1681                <div class="trust-badge">
1682                    <i class="fas fa-check-circle"></i>
1683                    <span>Transparent Pricing</span>
1684                </div>
1685                <div class="trust-badge">
1686                    <i class="fas fa-check-circle"></i>
1687                    <span>No Commitment Required</span>
1688                </div>
1689            </div>
1690
1691            <a style="margin-top:40px;" href="https://www.portugaltextile.com/create-your-collection" class="cta-button">Get a quote →</a>
1692        </div>
1693    </section>
1694
1695    <!-- Footer -->
1696    <footer>
1697        <div class="container">
1698            <div class="footer-grid">
1699                <div class="footer-column">
1700                 <a href="#">  <div class="footer-logo">
1701                        <img loading='lazy' src="https://portugaltextile.com/wp-content/uploads/2023/05/cropped-slogan_update-1-ai4.png" alt="Portugal Textile Logo">
1702                    </div></a>
1703                    <p class="footer-about">Portugal Textile works with the best sustainable clothing manufacturers in Portugal, producing high-quality garments for international fashion brands since 2007.
1704<br>
1705We provide comprehensive manufacturing solutions with a focus on eco-friendly materials and ethical production processes. </p>
1706                    <div class="footer-social">
1707                        <a href="https://www.facebook.com/portugaltextile/" class="social-icon">
1708                            <i class="fab fa-facebook-f"></i>
1709                        </a>
1710                        <a href="https://www.instagram.com/portugaltextile/" class="social-icon">
1711                            <i class="fab fa-instagram"></i>
1712                        </a>
1713                        <a href="https://www.linkedin.com/company/portugaltextile" class="social-icon">
1714                            <i class="fab fa-linkedin-in"></i>
1715                        </a>
1716
1717                        <a href="https://api.whatsapp.com/send?phone=351915085106" class="social-icon">
1718                            <i class="fab fa-whatsapp"></i>
1719                        </a>
1720                        <a href="https://pt.pinterest.com/portugaltextile/" class="social-icon">
1721                            <i class="fab fa-pinterest-p"></i>
1722                        </a>
1723                    </div>
1724                </div>
1725                <div class="footer-column">
1726                    <h3>Company</h3>
1727                    <ul class="footer-links">
1728                        <li><a href="./about/index.html">About</a></li>
1729                        <li><a href="./services/index.html">Services</a></li>
1730                        <li><a href="./influencers/index.html">Influencers</a></li>
1731                                                <li><a href="./brands/index.html">Brands</a></li>
1732
1733                        <li><a href="./portfolio/index.html">Portfolio</a></li>
1734                        <li><a href="./certifications/index.html">Certifications</a></li>
1735                        <li><a href="./sustainability/index.html">Sustainability</a></li>
1736                        <li><a href="https://www.portugaltextile.com/fairs/">Fairs</a></li>
1737
1738                         <li><a href="./uniforms-and-merchandise/">Uniforms & Merchandise</a></li>
1739
1740                        <li><a href="https://portugaltextile.com/blog/">Blog</a></li>
1741                    </ul>
1742                </div>
1743                <div class="footer-column">
1744                    <h3>Help</h3>
1745                    <ul class="footer-links">
1746                        <li><a href="https://portugaltextile.com/contact-us/">Contact Us</a></li>
1747                        <li><a href="./about/index.html#faq-section">FAQs</a></li>
1748                        <li><a href="./private-policy/index.html">Private Policy</a></li>
1749                        <li><a href="./terms-and-conditions/index.html">Terms and Conditions</a></li>
1750                        <li><a href="./portfolio/index.html">Portfolio</a></li>
1751                        <li><a href="./accessibility-statement/index.html">Accessibility Statement</a></li>
1752                        <li><a href="https://absolutarget.com/wp-content/uploads/2024/11/Absolutarget_CODE-OF-ETHICS-AND-CONDUCT.pdf">Code of Conduct</a></li>
1753                    </ul>
1754                </div>
1755                <!-- Mailchimp Newsletter Integration -->
1756                <div class="footer-column">
1757                    <div id="mc_embed_signup">
1758                        <form action="https://portugaltextile.us15.list-manage.com/subscribe/post?u=c198d3e32d44a21ce33633123&amp;id=fd6f2eaaa5&amp;f_id=00669de1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank">
1759                            <div id="mc_embed_signup_scroll">
1760                                <h3>Subscribe to our newsletter</h3>
1761                                <p class="footer-about">Get the latest updates about the fashion industry and our business.</p>
1762                                <div class="mc-field-group">
1763                                    <input type="email" name="EMAIL" class="newsletter-input required email" id="mce-EMAIL" placeholder="Your email address" required>
1764                                </div>
1765                                <div id="mergeRow-gdpr" class="mergeRow gdpr-mergeRow content__gdprBlock mc-field-group">
1766                                    <div class="content__gdpr">
1767                                        <fieldset  style="border: none;" class="mc_fieldset gdprRequired mc-field-group" name="interestgroup_field">
1768                                            <legend class="sr-only">Marketing Agreement</legend>
1769                                            <label class="checkbox subfield" for="gdpr28278">
1770                                                <input type="checkbox" id="gdpr_28278" name="gdpr[28278]" class="gdpr" value="Y" required>
1771                                                <span>Agree with <a href="./terms-and-conditions/index.html" style="text-decoration: underline;">Terms and Conditions</a></span>
1772                                            </label>
1773                                        </fieldset>
1774                                    </div>
1775                                </div>
1776                                <div class="clear">
1777                                    <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="newsletter-button" value="Subscribe">
1778                                </div>
1779                            </div>
1780                        </form>
1781                    </div>
1782                </div>
1783            </div>
1784            <div class="footer-bottom">
1785                <p>&copy; 2026 Portugal Textile. All rights reserved. <br><br> Made with 💚 for sustainable clothing.</p>
1786                <!-- Added the new logo at the bottom of the footer -->
1787                 <div style="    display: flex
1788                 ;
1789                     width: 100%;
1790                     justify-content: center;
1791                     align-items: center;
1792                     flex-wrap: wrap;" >
1793                <img loading="lazy" style="margin: 10px;" src="https://portugaltextile.com/wp-content/uploads/2024/02/Novo-Projeto-2-pdf-4.png" alt="GOTS Logo" class="footer-logo-bottom">
1794            </div>
1795            </div>
1796        </div>
1797    </footer>
1798
1799    <!-- Cookie Consent -->
1800    <div id="consent-popup">
1801        <h3>
1801Cookie Consent</h3>
1802        <p>We use cookies to enhance your browsing experience and analyze our traffic.</p>
1803        <a href="#" class="modal-link" id="open-preferences">Cookie Settings</a>
1804        <div id="consent-buttons">
1805            <button id="deny-consent">Deny All</button>
1806            <button id="accept-consent">Accept All</button>
1807        </div>
1808    </div>
1809    <div id="cookie-settings" class="cookie-settings">
1810        <div class="cookie-settings-content">
1811            <div class="cookie-settings-header">
1812                <h3>Cookie Settings</h3>
1813                <button id="close-settings" class="close-settings">&times;</button>
1814            </div>
1815            <p>Customize your cookie preferences. Essential cookies are always enabled as they are necessary for the website to function properly.</p>
1816
1817            <div class="cookie-options">
1818                <div class="cookie-option">
1819                    <div class="cookie-option-header">
1820                        <label class="cookie-label">
1821                            <input type="checkbox" id="essential-cookies" checked disabled>
1822                            <span class="cookie-name">Essential Cookies</span>
1823                        </label>
1824                        <span class="cookie-status">Always Active</span>
1825                    </div>
1826                    <p class="cookie-description">These cookies are necessary for the website to function and cannot be switched off.</p>
1827                </div>
1828
1829                <div class="cookie-option">
1830                    <div class="cookie-option-header">
1831                        <label class="cookie-label">
1832                            <input type="checkbox" id="analytics-cookies">
1833                            <span class="cookie-name">Analytics Cookies</span>
1834                        </label>
1835                    </div>
1836                    <p class="cookie-description">These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site.</p>
1837                </div>
1838
1839                <div class="cookie-option">
1840                    <div class="cookie-option-header">
1841                        <label class="cookie-label">
1842                            <input type="checkbox" id="marketing-cookies">
1843                            <span class="cookie-name">Marketing Cookies</span>
1844                        </label>
1845                    </div>
1846                    <p class="cookie-description">These cookies may be set through our site by our advertising partners to build a profile of your interests.</p>
1847                </div>
1848
1849                <div class="cookie-option">
1850                    <div class="cookie-option-header">
1851                        <label class="cookie-label">
1852                            <input type="checkbox" id="preferences-cookies">
1853                            <span class="cookie-name">Preferences Cookies</span>
1854                        </label>
1855                    </div>
1856                    <p class="cookie-description">These cookies enable the website to provide enhanced functionality and personalization.</p>
1857                </div>
1858            </div>
1859
1860            <div class="cookie-settings-footer">
1861                <button id="save-preferences" class="save-preferences">Save Preferences</button>
1862            </div>
1863        </div>
1864    </div>
1865    
1865<script>
1866// Video Controls Script
1867document.addEventListener('DOMContentLoaded', () => {
1868  const video = document.getElementById('background-video');
1869  const heroVideo = document.getElementById('heroVideo');
1870
1871  if (!video || !heroVideo) {
1872    console.error("Video elements not found");
1873    return;
1874  }
1875
1876  // Get or create overlay elements
1877  let playOverlay = heroVideo.querySelector('.video-overlay:not(.hover-overlay)');
1878  let playButton = playOverlay?.querySelector('.video-play-button');
1879  let hoverOverlay = heroVideo.querySelector('.video-overlay.hover-overlay');
1880  let pauseButton = hoverOverlay?.querySelector('.video-pause-button');
1881
1882  // Create missing elements if needed
1883  if (!playOverlay) {
1884    playOverlay = document.createElement('div');
1885    playOverlay.className = 'video-overlay';
1886    heroVideo.appendChild(playOverlay);
1887  }
1888
1889  if (!playButton) {
1890    playButton = document.createElement('div');
1891    playButton.className = 'video-play-button';
1892    playButton.innerHTML = '<i class="fas fa-play"></i>';
1893    playOverlay.appendChild(playButton);
1894  }
1895
1896  if (!hoverOverlay) {
1897    hoverOverlay = document.createElement('div');
1898    hoverOverlay.className = 'video-overlay hover-overlay';
1899    heroVideo.appendChild(hoverOverlay);
1900  }
1901
1902  if (!pauseButton) {
1903    pauseButton = document.createElement('div');
1904    pauseButton.className = 'video-pause-button';
1905    pauseButton.innerHTML = '<i class="fas fa-pause"></i>';
1906    hoverOverlay.appendChild(pauseButton);
1907  }
1908
1909  // Check if device is mobile
1910  const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
1911
1912  // Initial state setup based on video status
1913  updateVideoState(video.paused);
1914
1915  // Main function to update the video's visual state
1916  function updateVideoState(isPaused) {
1917    if (isPaused) {
1918      heroVideo.classList.add('video-paused');
1919      heroVideo.classList.remove('video-playing');
1920      playOverlay.style.opacity = '1';
1921      playOverlay.style.pointerEvents = 'auto';
1922      hoverOverlay.style.opacity = '0';
1923      hoverOverlay.style.pointerEvents = 'none';
1924    } else {
1925      heroVideo.classList.remove('video-paused');
1926      heroVideo.classList.add('video-playing');
1927      playOverlay.style.opacity = '0';
1928      playOverlay.style.pointerEvents = 'none';
1929
1930      if (isMobile) {
1931        hoverOverlay.style.opacity = '0';
1932        hoverOverlay.style.pointerEvents = 'none';
1933      } else {
1934        hoverOverlay.style.opacity = '';
1935        hoverOverlay.style.pointerEvents = '';
1936      }
1937    }
1938  }
1939
1940  // Video container click
1941  heroVideo.addEventListener('click', (e) => {
1942    if (e.target.closest('.video-play-button') || e.target.closest('.video-pause-button')) {
1943      return;
1944    }
1945
1946    togglePlayState();
1947
1948    if (isMobile && !video.paused) {
1949      hoverOverlay.style.opacity = '1';
1950      hoverOverlay.style.pointerEvents = 'auto';
1951
1952      setTimeout(() => {
1953        if (!video.paused) {
1954          hoverOverlay.style.opacity = '0';
1955          hoverOverlay.style.pointerEvents = 'none';
1956        }
1957      }, 3000);
1958    }
1959  });
1960
1961  // Play button click
1962  playButton.addEventListener('click', (e) => {
1963    e.stopPropagation();
1964    playVideo();
1965  });
1966
1967  // Pause button click
1968  pauseButton.addEventListener('click', (e) => {
1969    e.stopPropagation();
1970    pauseVideo();
1971  });
1972
1973  // Video event handlers
1974  video.addEventListener('play', () => updateVideoState(false));
1975  video.addEventListener('pause', () => updateVideoState(true));
1976  video.addEventListener('ended', () => {
1977    if (!video.loop) updateVideoState(true);
1978  });
1979
1980  // Helper functions
1981  function togglePlayState() {
1982    if (video.paused) {
1983      playVideo();
1984    } else {
1985      pauseVideo();
1986    }
1987  }
1988
1989  function playVideo() {
1990    const playPromise = video.play();
1991    if (playPromise !== undefined) {
1992      playPromise
1993        .then(() => updateVideoState(false))
1994        .catch(error => {
1995          console.error("Video play error:", error);
1996          updateVideoState(true);
1997        });
1998    }
1999  }
2000
2001  function pauseVideo() {
2002    video.pause();
2003    updateVideoState(true);
2004  }
2005
2006  // Progress bar
2007  const progressFilled = document.getElementById('progress-filled');
2008  if (progressFilled) {
2009    video.addEventListener('timeupdate', () => {
2010      const progress = (video.currentTime / video.duration) * 100;
2011      progressFilled.style.width = `${progress}%`;
2012    });
2013  }
2014
2015  // Desktop hover effects
2016  if (!isMobile) {
2017    heroVideo.addEventListener('mouseenter', () => {
2018      if (!video.paused) {
2019        hoverOverlay.style.opacity = '1';
2020        hoverOverlay.style.pointerEvents = 'auto';
2021      }
2022    });
2023
2024    heroVideo.addEventListener('mouseleave', () => {
2025      hoverOverlay.style.opacity = '0';
2026      hoverOverlay.style.pointerEvents = 'none';
2027    });
2028  }
2029
2030  // Add additional styles to ensure overlays work correctly
2031  const styleEl = document.createElement('style');
2032  styleEl.textContent = `
2033    /* Enhanced video overlay styling */
2034    .hero-video {
2035      position: relative;
2036      overflow: hidden;
2037      z-index: 1;
2038    }
2039
2040    .video-overlay {
2041      position: absolute;
2042      top: 0;
2043      left: 0;
2044      width: 100%;
2045      height: 100%;
2046      display: flex;
2047      justify-content: center;
2048      align-items: center;
2049      transition: opacity 0.3s ease;
2050      z-index: 5;
2051      background: linear-gradient(transparent, rgba(0,0,0,0.3));
2052    }
2053
2054    .video-paused .video-overlay:not(.hover-overlay) {
2055      opacity: 1;
2056      pointer-events: auto;
2057    }
2058
2059    /* Hover state for playing video - only used for non-mobile */
2060    .hero-video.video-playing:hover .video-overlay.hover-overlay {
2061      opacity: 1;
2062      pointer-events: auto;
2063    }
2064
2065    /* Default state for hover overlay */
2066    .video-overlay.hover-overlay {
2067      opacity: 0;
2068      pointer-events: none;
2069      transition: opacity 0.3s ease;
2070    }
2071
2072    .video-play-button, .video-pause-button {
2073      width: 80px;
2074      height: 80px;
2075      background: linear-gradient(300deg, #E4A644 0%, #C14ADC 100%);
2076      border-radius: 50%;
2077      display: flex;
2078      justify-content: center;
2079      align-items: center;
2080      cursor: pointer;
2081      box-shadow: 0 10px 20px rgba(0,0,0,0.2);
2082      transition: transform 0.3s ease;
2083    }
2084
2085    .video-play-button:hover, .video-pause-button:hover {
2086      transform: scale(1.1);
2087    }
2088
2089    .video-play-button i, .video-pause-button i {
2090      color: white;
2091      font-size: 30px;
2092    }
2093
2094    #background-video {
2095      display: block;
2096      width: 100%;
2097      height: 100%;
2098      object-fit: cover;
2099    }
2100  `;
2101  document.head.appendChild(styleEl);
2102});
2103
2104// WebP Support Detection
2105function supportsWebP(callback) {
2106  let img = new Image();
2107  img.onload = img.onerror = function () {
2108    callback(img.width === 1);
2109  };
2110  img.src = "data:image/webp;base64,UklGRhoAAABXRUJQVlA4TAYAAAAvAAAAFQAAQUxQSAEAAAABAAEAAABQSwA=";
2111}
2112
2113supportsWebP(function (supported) {
2114  if (supported) {
2115    document.querySelectorAll("img").forEach((img) => {
2116      let webpSrc = img.src.replace(/\.(jpg|png)$/, ".webp");
2117      img.src = webpSrc;
2118    });
2119  }
2120});
2121
2122// MAIN DOCUMENT READY FUNCTION
2123document.addEventListener('DOMContentLoaded', () => {
2124    // ===== MOBILE MENU LOGIC =====
2125    const mobileToggle = document.getElementById('mobileToggle');
2126    const navMenu = document.getElementById('navMenu');
2127    const scrollProgressBar = document.querySelector('.scroll-progress-bar');
2128    let originalProgressWidth = '';
2129
2130    if (mobileToggle && navMenu) {
2131        mobileToggle.addEventListener('click', () => {
2132            navMenu.classList.toggle('active');
2133            document.body.style.overflow = navMenu.classList.contains('active') ? 'hidden' : '';
2134            mobileToggle.innerHTML = navMenu.classList.contains('active')
2135                ? '<i class="fas fa-times"></i>'
2136                : '<i class="fas fa-bars"></i>';
2137
2138            if (scrollProgressBar) {
2139                if (navMenu.classList.contains('active')) {
2140                    originalProgressWidth = scrollProgressBar.style.width;
2141                    scrollProgressBar.style.width = '0%';
2142                } else {
2143                    if (originalProgressWidth) {
2144                        scrollProgressBar.style.width = originalProgressWidth;
2145                    } else {
2146                        const scrollTop = window.scrollY;
2147                        const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
2148                        const progress = (scrollTop / scrollHeight) * 100;
2149                        scrollProgressBar.style.width = `${progress}%`;
2150                    }
2151                }
2152            }
2153        });
2154    }
2155
2156    // Close mobile menu when clicking on a link
2157    const navLinks = document.querySelectorAll('.nav-link, .nav-menu .btn-primary');
2158    navLinks.forEach(link => {
2159        link.addEventListener('click', () => {
2160            if (navMenu && navMenu.classList.contains('active')) {
2161                navMenu.classList.remove('active');
2162                document.body.style.overflow = '';
2163                if (mobileToggle) {
2164                    mobileToggle.innerHTML = '<i class="fas fa-bars"></i>';
2165                }
2166
2167                if (scrollProgressBar) {
2168                    if (originalProgressWidth) {
2169                        scrollProgressBar.style.width = originalProgressWidth;
2170                    } else {
2171                        const scrollTop = window.scrollY;
2172                        const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
2173                        const progress = (scrollTop / scrollHeight) * 100;
2174                        scrollProgressBar.style.width = `${progress}%`;
2175                    }
2176                }
2177            }
2178        });
2179    });
2180
2181    // ===== GSAP ANIMATIONS =====
2182    if (typeof gsap !== 'undefined') {
2183        if (gsap.registerPlugin && typeof ScrollTrigger !== 'undefined') {
2184            gsap.registerPlugin(ScrollTrigger);
2185        }
2186
2187        if (typeof ScrollTrigger !== 'undefined') {
2188            // Process cards
2189            gsap.utils.toArray('.process-card').forEach((card, i) => {
2190                gsap.from(card, {
2191                    scrollTrigger: { trigger: card, start: "top 80%", toggleActions: "play none none none" },
2192                    y: 50, opacity: 0, duration: 0.8, delay: i * 0.2, ease: "power2.out"
2193                });
2194            });
2195
2196            // About section
2197            gsap.from('.about-image', {
2198                scrollTrigger: { trigger: '.about-image', start: "top 80%", toggleActions: "play none none none" },
2199                x: -50, opacity: 0, duration: 1, ease: "power2.out"
2200            });
2201
2202            gsap.from('.about-content', {
2203                scrollTrigger: { trigger: '.about-content', start: "top 80%", toggleActions: "play none none none" },
2204                x: 50, opacity: 0, duration: 1, ease: "power2.out"
2205            });
2206
2207            // Benefits cards
2208            gsap.utils.toArray('.benefit-card').forEach((card, i) => {
2209                gsap.from(card, {
2210                    scrollTrigger: { trigger: card, start: "top 80%", toggleActions: "play none none none" },
2211                    y: 50, opacity: 0, duration: 0.8, delay: i * 0.15, ease: "power2.out"
2212                });
2213            });
2214
2215            // Material cards
2216            gsap.utils.toArray('.material-card').forEach((card, i) => {
2217                gsap.from(card, {
2218                    scrollTrigger: { trigger: card, start: "top 80%", toggleActions: "play none none none" },
2219                    y: 50, opacity: 0, duration: 0.8, delay: i * 0.1, ease: "power2.out"
2220                });
2221            });
2222
2223            // Accessories cards
2224            gsap.utils.toArray('.accessories-card').forEach((card, i) => {
2225                gsap.from(card, {
2226                    scrollTrigger: { trigger: card, start: "top 80%", toggleActions: "play none none none" },
2227                    y: 30, opacity: 0, duration: 0.8, delay: i * 0.2, ease: "power2.out"
2228                });
2229            });
2230
2231            // CTA section
2232            gsap.from('.cta-container', {
2233                scrollTrigger: { trigger: '.cta-container', start: "top 80%", toggleActions: "play none none none" },
2234                y: 50, opacity: 0, duration: 1, ease: "power3.out"
2235            });
2236
2237            // Categories section
2238            gsap.from('.categories-header', {
2239                scrollTrigger: { trigger: '.categories-section', start: 'top 80%' },
2240                opacity: 0, y: 30, duration: 0.8, ease: 'power3.out'
2241            });
2242
2243            gsap.from('.category-card', {
2244                scrollTrigger: { trigger: '.categories-section', start: 'top 70%' },
2245                opacity: 0, y: 40, stagger: 0.15, duration: 0.7, ease: 'power3.out'
2246            });
2247
2248            // FAQ section
2249            gsap.from('.accordion-item', {
2250                scrollTrigger: { trigger: '.faq-section', start: 'top 80%' },
2251                opacity: 0, y: 30, stagger: 0.1, duration: 0.6, ease: 'power3.out'
2252            });
2253        }
2254    }
2255
2256    // Header scroll effect
2257    window.addEventListener('scroll', () => {
2258        const header = document.querySelector('.header');
2259        if (header) {
2260            if (window.scrollY > 50) {
2261                header.style.background = 'rgba(255,255,255,0.9)';
2262                header.style.backdropFilter = 'blur(10px)';
2263            } else {
2264                header.style.background = 'white';
2265                header.style.backdropFilter = 'none';
2266            }
2267        }
2268    });
2269
2270    // ===== WORKFLOW SLIDER WITH FIXED DRAG FUNCTIONALITY =====
2271    const materialsSlides = [
2272        {
2273          image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_8175-1-scaled-qrom0ph4bltrbmocxdc9bu5is9d5ouo07l2nzyruzk.webp",
2274          title: "Organic Cotton",
2275          description: "Cotton grown without synthetic pesticides or fertilizers, using methods that have a lower impact on the environment. Organic farming practices promote biodiversity and healthier soil."
2276        },
2277        {
2278          image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/Instagram-story-64-qrohe6ehi9uyeokjcdxqkuzm0q63zbjzbc7t55otcw.webp",
2279          title: "Cupro",
2280          description: "A regenerated cellulose fiber made from cotton linter (the short fibers adhering to cotton seeds after ginning). Considered a by-product of the cotton industry with silk-like properties."
2281        },
2282        {
2283          image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/Novo-Projeto-28-qrojdbsott9b837yvn43temorphbmj0jfhxxw670dc.png",
2284          title: "Lyocell",
2285          description: "A sustainable fiber made from wood pulp, typically eucalyptus, using an environmentally responsible closed-loop process that reuses solvents. Known for its exceptional softness."
2286        },
2287        {
2288          image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_8175-2-scaled-qrom7qbpe1fw2qh2wwmwgkcikwqw7fjsucka3ecyhs.webp",
2289          title: "Ecovero",
2290          description: "A type of viscose fiber derived from sustainable wood sources with EU Ecolabel certification. Ecovero has up to 50% lower emissions and water impact than conventional viscose."
2291        },
2292        {
2293          image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/Novo-Projeto-qrtipi5arz9zjt9jccyby7nqzjt54dl5qlrnvtk2ow.webp",
2294          title: "Recycled Wool",
2295          description: "Wool fibers reclaimed from pre-consumer or post-consumer textile waste, processed, and respun into new yarn. This reduces the need for virgin wool production and diverts textile waste."
2296        },
2297        {
2298          image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/Novo-Projeto-30-1-qrtjc617k6avhccf05mi2hrum03qpnk66s14fzyco0.png",
2299          title: "Biodegradable polyester",
2300          description: "An innovative alternative to conventional polyester that maintains performance properties while being designed to break down at the end of its lifecycle, reducing long-term plastic pollution."
2301        }
2302    ];
2303
2304    const slides = materialsSlides;
2305
2306    // Update workflow content
2307    const workflowContent = document.querySelector('.workflow-content');
2308    if (workflowContent) {
2309        workflowContent.innerHTML = `
2310            <h2>Sustainable Materials</h2>
2311            <h3>Develop your clothing collection with sustainable materials</h3>
2312            <p>We offer a variety of innovative, eco-friendly materials for your clothing collection that reduce environmental impact while maintaining quality and style.</p>
2313            <p>Our sustainable options include recycled, plant-based, and innovative alternatives to traditional materials, perfect for conscious brands looking to make a positive impact.</p>
2314            <a href="./sustainability/index.html" class="about-btn">Explore our materials</a>
2315        `;
2316    }
2317
2318    // Slider elements
2319    const slider = document.querySelector('.workflow-slider');
2320    const track = document.getElementById('workflowTrack');
2321    const dotsContainer = document.getElementById('workflowDots');
2322    const prevSlideBtn = document.getElementById('prevSlide');
2323    const nextSlideBtn = document.getElementById('nextSlide');
2324
2325    // Drag variables
2326    let isDragging = false;
2327    let startPos = 0;
2328    let currentTranslate = 0;
2329    let prevTranslate = 0;
2330    let animationID = 0;
2331    let currentSlide = 0;
2332
2333    if (slider && track && slides.length > 0) {
2334        // Add enhanced drag styles with proper centering and mobile navigation
2335        const dragStyles = document.createElement('style');
2336        dragStyles.textContent = `
2337            .workflow-slider {
2338                cursor: grab;
2339                user-select: none;
2340                -webkit-user-select: none;
2341                -moz-user-select: none;
2342                -ms-user-select: none;
2343                overflow: hidden;
2344                position: relative;
2345                width: 100%;
2346            }
2347
2348            .workflow-slider.grabbing {
2349                cursor: grabbing;
2350            }
2351
2352            .workflow-track {
2353                display: flex;
2354                transition: transform 0.3s ease-out;
2355                will-change: transform;
2356                width: 100%;
2357            }
2358
2359            .workflow-slide {
2360                min-width: 100%;
2361                flex-shrink: 0;
2362                position: relative;
2363                display: flex;
2364                flex-direction: column;
2365                align-items: center;
2366                justify-content: center;
2367            }
2368
2369            .workflow-image {
2370                pointer-events: none;
2371                user-select: none;
2372                -webkit-user-drag: none;
2373                -webkit-user-select: none;
2374                -moz-user-select: none;
2375                -ms-user-select: none;
2376                width: 100%;
2377                height: 500px;
2378                object-fit: cover;
2379                display: block;
2380            }
2381
2382            .workflow-caption {
2383                position: absolute;
2384                bottom: 0;
2385                left: 0;
2386                right: 0;
2387                padding: 20px;
2388                background: white;
2389                color: var(--color-black);
2390                text-align: center;
2391                border-top: 1px solid #eee;
2392            }
2393
2394            .workflow-caption h3 {
2395                margin-bottom: 5px;
2396                font-size: 1.2rem;
2397            }
2398
2399            /* Enhanced mobile navigation */
2400            .workflow-arrow {
2401                pointer-events: auto !important;
2402                touch-action: manipulation;
2403                -webkit-tap-highlight-color: transparent;
2404                position: relative;
2405                z-index: 10;
2406            }
2407
2408            .workflow-dot {
2409                pointer-events: auto !important;
2410                touch-action: manipulation;
2411                -webkit-tap-highlight-color: transparent;
2412                position: relative;
2413                z-index: 10;
2414                min-width: 14px;
2415                min-height: 14px;
2416                display: flex;
2417                align-items: center;
2418                justify-content: center;
2419            }
2420
2421            .workflow-navigation {
2422                pointer-events: auto !important;
2423                z-index: 10;
2424                position: relative;
2425            }
2426
2427            /* Mobile optimizations */
2428            @media (max-width: 768px) {
2429                .workflow-slider {
2430                    touch-action: pan-y pinch-zoom;
2431                    -webkit-overflow-scrolling: touch;
2432                }
2433
2434                .workflow-slide {
2435                    display: flex;
2436                    flex-direction: column;
2437                    align-items: center;
2438                    justify-content: center;
2439                    text-align: center;
2440                }
2441
2442                .workflow-image {
2443                    height: 500px;
2444                    width: 100%;
2445                    object-fit: cover;
2446                    object-position: center;
2447                    margin: 0 auto;
2448                    display: block;
2449                }
2450
2451                .workflow-caption {
2452                    padding: 15px;
2453                    width: 100%;
2454                    box-sizing: border-box;
2455                }
2456
2457                .workflow-caption h3 {
2458                    font-size: 1.1rem;
2459                }
2460
2461                .workflow-arrow {
2462                    width: 50px !important;
2463                    height: 50px !important;
2464                    font-size: 1.4rem !important;
2465                }
2466
2467                .workflow-dot {
2468                    width: 3px !important;
2469                    height: 3px !important;
2470                    min-width: 4px;
2471                    min-height: 4px;
2472                    margin: 0 4px;
2473                }
2474            }
2475
2476            @media (max-width: 576px) {
2477                .workflow-slide {
2478                    display: flex;
2479                    flex-direction: column;
2480                    align-items: center;
2481                    justify-content: center;
2482                    text-align: center;
2483                    width: 100%;
2484                }
2485
2486                .workflow-image {
2487                    height: 450px;
2488                    width: 100%;
2489                    object-fit: cover;
2490                    object-position: center;
2491                    margin: 0 auto;
2492                    display: block;
2493                }
2494
2495                .workflow-caption {
2496                    padding: 12px;
2497                    width: 100%;
2498                    box-sizing: border-box;
2499                }
2500
2501                .workflow-arrow {
2502                    width: 45px !important;
2503                    height: 45px !important;
2504                    font-size: 1.2rem !important;
2505                }
2506
2507                .workflow-dot {
2508                    width: 10px !important;
2509                    height: 10px !important;
2510                    min-width: 10px;
2511                    min-height: 10px;
2512                    margin: 0 3px;
2513                }
2514            }
2515        `;
2516        document.head.appendChild(dragStyles);
2517
2518        // Create all slides
2519        function createAllSlides() {
2520            track.innerHTML = slides.map(slide => `
2521                <div class="workflow-slide">
2522                    <img src="${slide.image}" alt="${slide.title}" class="workflow-image">
2523                    <div class="workflow-caption">
2524                        <h3>${slide.title}</h3>
2525                        <p>${slide.description}</p>
2526                    </div>
2527                </div>
2528            `).join('');
2529
2530            setSliderPosition();
2531        }
2532
2533        // Set slider position
2534        function setSliderPosition() {
2535            track.style.transform = `translateX(${currentTranslate}px)`;
2536        }
2537
2538        // Animation function
2539        function animation() {
2540            setSliderPosition();
2541            if (isDragging) requestAnimationFrame(animation);
2542        }
2543
2544        // Set position by index
2545        function setPositionByIndex() {
2546            currentTranslate = currentSlide * -slider.offsetWidth;
2547            prevTranslate = currentTranslate;
2548            setSliderPosition();
2549            updateDots();
2550        }
2551
2552        // Update dots
2553        function updateDots() {
2554            const dots = document.querySelectorAll('.workflow-dot');
2555            dots.forEach((dot, i) => {
2556                dot.classList.toggle('active', i === currentSlide);
2557            });
2558        }
2559
2560        // Drag event handlers with proper mobile button handling
2561        function dragStart(e) {
2562            // Don't start drag if clicking on navigation elements
2563            if (e.target.closest('.workflow-arrow') ||
2564                e.target.closest('.workflow-dot') ||
2565                e.target.closest('.workflow-navigation')) {
2566                return;
2567            }
2568
2569            e.preventDefault();
2570
2571            if (e.type.includes('mouse')) {
2572                startPos = e.clientX;
2573            } else {
2574                startPos = e.touches[0].clientX;
2575            }
2576
2577            isDragging = true;
2578            animationID = requestAnimationFrame(animation);
2579            slider.classList.add('grabbing');
2580            track.style.transition = 'none';
2581        }
2582
2583        function dragMove(e) {
2584            if (!isDragging) return;
2585
2586            // Don't prevent default if touching navigation elements
2587            if (!e.target.closest('.workflow-arrow') &&
2588                !e.target.closest('.workflow-dot') &&
2589                !e.target.closest('.workflow-navigation')) {
2590                e.preventDefault();
2591            }
2592
2593            let currentPosition;
2594            if (e.type.includes('mouse')) {
2595                currentPosition = e.clientX;
2596            } else {
2597                currentPosition = e.touches[0].clientX;
2598            }
2599
2600            const diff = currentPosition - startPos;
2601            currentTranslate = prevTranslate + diff;
2602
2603            // Boundary resistance
2604            const maxTranslate = 0;
2605            const minTranslate = -(slides.length - 1) * slider.offsetWidth;
2606
2607            if (currentTranslate > maxTranslate) {
2608                currentTranslate = maxTranslate + (currentTranslate - maxTranslate) * 0.3;
2609            } else if (currentTranslate < minTranslate) {
2610                currentTranslate = minTranslate + (currentTranslate - minTranslate) * 0.3;
2611            }
2612        }
2613
2614        function dragEnd(e) {
2615            if (!isDragging) return;
2616
2617            isDragging = false;
2618            cancelAnimationFrame(animationID);
2619            slider.classList.remove('grabbing');
2620            track.style.transition = 'transform 0.3s ease-out';
2621
2622            const moved = currentTranslate - prevTranslate;
2623            const threshold = slider.offsetWidth * 0.2;
2624
2625            if (moved < -threshold && currentSlide < slides.length - 1) {
2626                currentSlide += 1;
2627            } else if (moved > threshold && currentSlide > 0) {
2628                currentSlide -= 1;
2629            }
2630
2631            setPositionByIndex();
2632        }
2633
2634        // Add event listeners with proper exclusions
2635        slider.addEventListener('mousedown', dragStart);
2636        slider.addEventListener('mouseup', dragEnd);
2637        slider.addEventListener('mouseleave', dragEnd);
2638        slider.addEventListener('mousemove', dragMove);
2639
2640        // Touch events with careful handling
2641        slider.addEventListener('touchstart', function(e) {
2642            // Allow normal touch behavior for navigation elements
2643            if (e.target.closest('.workflow-arrow') ||
2644                e.target.closest('.workflow-dot') ||
2645                e.target.closest('.workflow-navigation')) {
2646                return;
2647            }
2648            dragStart(e);
2649        }, { passive: false });
2650
2651        slider.addEventListener('touchend', dragEnd);
2652        slider.addEventListener('touchmove', dragMove, { passive: false });
2653        slider.addEventListener('contextmenu', e => e.preventDefault());
2654
2655        // Create dots with enhanced mobile support
2656        if (dotsContainer) {
2657            dotsContainer.innerHTML = '';
2658            slides.forEach((_, index) => {
2659                const dot = document.createElement('div');
2660                dot.classList.add('workflow-dot');
2661                if (index === 0) dot.classList.add('active');
2662
2663                // Click events
2664                dot.addEventListener('click', (e) => {
2665                    e.preventDefault();
2666                    e.stopPropagation();
2667                    currentSlide = index;
2668                    setPositionByIndex();
2669                });
2670
2671                // Touch events for mobile
2672                dot.addEventListener('touchend', (e) => {
2673                    e.preventDefault();
2674                    e.stopPropagation();
2675                    currentSlide = index;
2676                    setPositionByIndex();
2677                });
2678
2679                dotsContainer.appendChild(dot);
2680            });
2681        }
2682
2683        // Button handlers with enhanced mobile support
2684        if (prevSlideBtn) {
2685            // Mouse/click events
2686            prevSlideBtn.addEventListener('click', (e) => {
2687                e.preventDefault();
2688                e.stopPropagation();
2689                if (currentSlide > 0) {
2690                    currentSlide--;
2691                    setPositionByIndex();
2692                }
2693            });
2694
2695            // Touch events for mobile
2696            prevSlideBtn.addEventListener('touchend', (e) => {
2697                e.preventDefault();
2698                e.stopPropagation();
2699                if (currentSlide > 0) {
2700                    currentSlide--;
2701                    setPositionByIndex();
2702                }
2703            });
2704        }
2705
2706        if (nextSlideBtn) {
2707            // Mouse/click events
2708            nextSlideBtn.addEventListener('click', (e) => {
2709                e.preventDefault();
2710                e.stopPropagation();
2711                if (currentSlide < slides.length - 1) {
2712                    currentSlide++;
2713                    setPositionByIndex();
2714                }
2715            });
2716
2717            // Touch events for mobile
2718            nextSlideBtn.addEventListener('touchend', (e) => {
2719                e.preventDefault();
2720                e.stopPropagation();
2721                if (currentSlide < slides.length - 1) {
2722                    currentSlide++;
2723                    setPositionByIndex();
2724                }
2725            });
2726        }
2727
2728        // Window resize handler
2729        window.addEventListener('resize', () => {
2730            setPositionByIndex();
2731        });
2732
2733        // Initialize
2734        createAllSlides();
2735        setPositionByIndex();
2736
2737        // Auto-advance with proper pause on interaction
2738        let slideInterval = setInterval(() => {
2739            if (currentSlide < slides.length - 1) {
2740                currentSlide++;
2741            } else {
2742                currentSlide = 0;
2743            }
2744            setPositionByIndex();
2745        }, 5000);
2746
2747        // Pause on any interaction (hover, touch, or click)
2748        function pauseAutoAdvance() {
2749            clearInterval(slideInterval);
2750        }
2751
2752        function resumeAutoAdvance() {
2753            slideInterval = setInterval(() => {
2754                if (currentSlide < slides.length - 1) {
2755                    currentSlide++;
2756                } else {
2757                    currentSlide = 0;
2758                }
2759                setPositionByIndex();
2760            }, 5000);
2761        }
2762
2763        // Desktop events
2764        slider.addEventListener('mouseenter', pauseAutoAdvance);
2765        slider.addEventListener('mouseleave', resumeAutoAdvance);
2766
2767        // Mobile events
2768        slider.addEventListener('touchstart', pauseAutoAdvance);
2769
2770        // Resume after touch interaction ends
2771        let touchEndTimer;
2772        slider.addEventListener('touchend', () => {
2773            clearTimeout(touchEndTimer);
2774            touchEndTimer = setTimeout(resumeAutoAdvance, 3000); // Resume after 3 seconds of no touch
2775        });
2776    }
2777
2778    // Update materials section
2779    const materialsSection = document.getElementById('sustainability');
2780    if (materialsSection) {
2781        const title = materialsSection.querySelector('.materials-title');
2782        const subtitle = materialsSection.querySelector('.materials-subtitle');
2783
2784        if (title) title.textContent = "Our services";
2785        if (subtitle) subtitle.textContent = "Here are a few things we can do for you";
2786
2787        const materialsGrid = materialsSection.querySelector('.materials-grid');
2788        if (materialsGrid) {
2789            const workflowSlides = [
2790                { image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_8631-3-scaled-qwwadthld3q1f951ktg5oh5k92gi7ct37i0zobi3jk.webp", title: "Fashion Designs + Sketch & Tech Pack", description: "Our team can provide you fashion designs." },
2791                { image: "https://portugaltextile.com/wp-content/uploads/2025/03/sourcing-of-materials.webp", title: "Sourcing", description: "Our sourcing team will start searching for the right materials." },
2792                { image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_4714-q7ih6a4m9axreaan2ts2oc88p84xmpqh50xsvc8dbk.png", title: "Sampling", description: "For each order we create a prototype for your approval." },
2793                { image: "https://portugaltextile.com/wp-content/uploads/2025/05/women-sewing-clothes-1-e1746802850595.webp", title: "Production", description: "Clothing production is where your ideas come to life." },
2794                { image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/IMG_4722-q7inb2fvkd6egxl9u9hccmhzvfwpna8q5tfmz4vbsg.png", title: "Quality Control", description: "All stages are quality checked to ensure the highest standards." },
2795                { image: "https://portugaltextile.com/wp-content/uploads/elementor/thumbs/unnamed-file-q7iofqwfc8v4xei2aui39cy5drekrpqj35u4o8jyi8.png", title: "Labels, tags, packaging", description: "We offer sustainable customized labels, tags and packaging." }
2796            ];
2797
2798            materialsGrid.innerHTML = workflowSlides.map(slide => `
2799                <div class="material-card">
2800                    <img src="${slide.image}" alt="${slide.title}" class="material-image">
2801                    <div class="material-content">
2802                        <h3 class="material-name">${slide.title}</h3>
2803                        <p class="material-description">${slide.description}</p>
2804                    </div>
2805                </div>
2806            `).join('');
2807        }
2808    }
2809
2810    // ===== TESTIMONIALS SLIDER =====
2811    const testimonialsContainer = document.getElementById('testimonialsContainer');
2812    const sliderDots = document.querySelectorAll('.slider-dot');
2813    const testimonialItems = document.querySelectorAll('.testimonial-item');
2814    const slideCount = testimonialItems.length;
2815
2816    if (sliderDots.length > 0) {
2817        sliderDots.forEach((dot, i) => {
2818            if (i >= slideCount) {
2819                dot.style.display = 'none';
2820            } else {
2821                dot.addEventListener('click', () => {
2822                    const index = parseInt(dot.getAttribute('data-index'));
2823                    showTestimonial(index);
2824                });
2825                dot.classList.toggle('active', i === 0);
2826            }
2827        });
2828    }
2829
2830    function showTestimonial(index) {
2831        if (!testimonialsContainer || index >= slideCount) return;
2832
2833        testimonialsContainer.style.transform = `translateX(-${index * 100}%)`;
2834
2835        sliderDots.forEach((dot, i) => {
2836            if (i < slideCount) {
2837                dot.classList.toggle('active', i === index);
2838            }
2839        });
2840    }
2841
2842    showTestimonial(0);
2843
2844    // ===== ACCORDION FUNCTIONALITY =====
2845    const accordionItems = document.querySelectorAll('.accordion-item');
2846
2847    accordionItems.forEach(item => {
2848        const header = item.querySelector('.accordion-header');
2849        if (header) {
2850            header.addEventListener('click', () => {
2851                accordionItems.forEach(otherItem => {
2852                    if (otherItem !== item) {
2853                        otherItem.classList.remove('active');
2854                    }
2855                });
2856                item.classList.toggle('active');
2857            });
2858        }
2859    });
2860
2861    if (accordionItems.length > 0) {
2862        accordionItems[0].classList.add('active');
2863    }
2864
2865    // ===== SCROLL PROGRESS BAR =====
2866    window.addEventListener('scroll', () => {
2867        const scrollTop = window.scrollY;
2868        const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
2869        const progress = (scrollTop / scrollHeight) * 100;
2870
2871        if (scrollProgressBar && (!navMenu || !navMenu.classList.contains('active'))) {
2872            scrollProgressBar.style.width = `${progress}%`;
2873        }
2874    });
2875});
2876
2877// Notification bar handling
2878document.addEventListener('DOMContentLoaded', function() {
2879    const notificationBar = document.getElementById('notification-bar');
2880    const body = document.body;
2881
2882    if (notificationBar) {
2883        body.classList.add('has-notification');
2884
2885        notificationBar.addEventListener('click', function() {
2886            window.location.href = 'https://www.portugaltextile.com/launchlab';
2887        });
2888
2889        let scrollThreshold = 0;
2890        let lastScrollTop = 0;
2891
2892        window.addEventListener('scroll', function() {
2893            let scrollTop = window.pageYOffset || document.documentElement.scrollTop;
2894
2895            if (scrollTop > scrollThreshold && !notificationBar.classList.contains('hidden')) {
2896                notificationBar.classList.add('hidden');
2897                body.classList.remove('has-notification');
2898            }
2899
2900            if (scrollTop < 50 && lastScrollTop > scrollTop && notificationBar.classList.contains('hidden')) {
2901                notificationBar.classList.remove('hidden');
2902                body.classList.add('has-notification');
2903            }
2904
2905            lastScrollTop = scrollTop;
2906        });
2907    }
2908});
2909
2910// Enhanced iOS Mobile Menu Fix
2911window.addEventListener('load', () => {
2912    const mobileToggle = document.getElementById('mobileToggle');
2913    const navMenu = document.getElementById('navMenu');
2914    const body = document.body;
2915
2916    if (mobileToggle && navMenu && !window.menuEnhanced) {
2917        window.menuEnhanced = true;
2918
2919        const newToggle = mobileToggle.cloneNode(true);
2920        mobileToggle.parentNode.replaceChild(newToggle, mobileToggle);
2921
2922        let scrollPosition = 0;
2923        const scrollProgressBar = document.querySelector('.scroll-progress-bar');
2924        let originalProgressWidth = '';
2925
2926        const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) ||
2927                     (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
2928
2929        newToggle.addEventListener('click', () => {
2930            const menuActive = navMenu.classList.contains('active');
2931
2932            if (!menuActive) {
2933                scrollPosition = window.pageYOffset;
2934                body.classList.add('menu-open');
2935                navMenu.classList.add('active');
2936                newToggle.innerHTML = '<i class="fas fa-times"></i>';
2937
2938                if (scrollProgressBar) {
2939                    originalProgressWidth = scrollProgressBar.style.width;
2940                    scrollProgressBar.style.width = '0%';
2941                }
2942
2943                if (isIOS) {
2944                    body.style.top = `-${scrollPosition}px`;
2945                    body.style.width = '100%';
2946                    body.style.position = 'fixed';
2947                } else {
2948                    body.style.overflow = 'hidden';
2949                }
2950            } else {
2951                body.classList.remove('menu-open');
2952                navMenu.classList.remove('active');
2953                newToggle.innerHTML = '<i class="fas fa-bars"></i>';
2954
2955                if (scrollProgressBar) {
2956                    if (originalProgressWidth) {
2957                        scrollProgressBar.style.width = originalProgressWidth;
2958                    } else {
2959                        const scrollTop = window.scrollY;
2960                        const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
2961                        const progress = (scrollTop / scrollHeight) * 100;
2962                        scrollProgressBar.style.width = `${progress}%`;
2963                    }
2964                }
2965
2966                if (isIOS) {
2967                    body.style.position = '';
2968                    body.style.top = '';
2969                    body.style.width = '';
2970                    window.scrollTo(0, scrollPosition);
2971                } else {
2972                    body.style.overflow = '';
2973                }
2974            }
2975        });
2976
2977        function setMobileMenuHeight() {
2978            if (isIOS) {
2979                document.documentElement.style.setProperty(
2980                    '--mobile-menu-height',
2981                    `${window.innerHeight}px`
2982                );
2983
2984                if (!document.getElementById('ios-height-fix')) {
2985                    const style = document.createElement('style');
2986                    style.id = 'ios-height-fix';
2987                    style.textContent = `
2988                        .nav-menu.active {
2989                            height: var(--mobile-menu-height, 100vh) !important;
2990                        }
2991                    `;
2992                    document.head.appendChild(style);
2993                }
2994            }
2995        }
2996
2997        setMobileMenuHeight();
2998        window.addEventListener('resize', setMobileMenuHeight);
2999
3000        // Menu links handler
3001        const navLinks = document.querySelectorAll('.nav-link, .nav-menu .btn-primary');
3002        navLinks.forEach(link => {
3003            link.addEventListener('click', () => {
3004                if (navMenu.classList.contains('active')) {
3005                    body.classList.remove('menu-open');
3006                    navMenu.classList.remove('active');
3007                    newToggle.innerHTML = '<i class="fas fa-bars"></i>';
3008
3009                    if (scrollProgressBar) {
3010                        if (originalProgressWidth) {
3011                            scrollProgressBar.style.width = originalProgressWidth;
3012                        } else {
3013                            const scrollTop = window.scrollY;
3014                            const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
3015                            const progress = (scrollTop / scrollHeight) * 100;
3016                            scrollProgressBar.style.width = `${progress}%`;
3017                        }
3018                    }
3019
3020                    if (isIOS) {
3021                        body.style.position = '';
3022                        body.style.top = '';
3023                        body.style.width = '';
3024                        window.scrollTo(0, scrollPosition);
3025                    } else {
3026                        body.style.overflow = '';
3027                    }
3028                }
3029            });
3030        });
3031    }
3032});
3033
3034// Cookie consent functionality
3035document.addEventListener('DOMContentLoaded', function() {
3036    const consentPopup = document.getElementById('consent-popup');
3037    const acceptConsent = document.getElementById('accept-consent');
3038    const denyConsent = document.getElementById('deny-consent');
3039    const openPreferences = document.getElementById('open-preferences');
3040    const cookieSettings = document.getElementById('cookie-settings');
3041    const closeSettings = document.getElementById('close-settings');
3042    const savePreferences = document.getElementById('save-preferences');
3043
3044    if (!localStorage.getItem('cookieConsent')) {
3045        setTimeout(() => {
3046            if (consentPopup) consentPopup.style.display = 'block';
3047        }, 2000);
3048    }
3049
3050    if (acceptConsent) {
3051        acceptConsent.addEventListener('click', () => {
3052            localStorage.setItem('cookieConsent', 'accepted');
3053            localStorage.setItem('analyticsCookies', 'true');
3054            localStorage.setItem('marketingCookies', 'true');
3055            localStorage.setItem('preferencesCookies', 'true');
3056            if (consentPopup) consentPopup.style.display = 'none';
3057        });
3058    }
3059
3060    if (denyConsent) {
3061        denyConsent.addEventListener('click', () => {
3062            localStorage.setItem('cookieConsent', 'denied');
3063            localStorage.setItem('analyticsCookies', 'false');
3064            localStorage.setItem('marketingCookies', 'false');
3065            localStorage.setItem('preferencesCookies', 'false');
3066            if (consentPopup) consentPopup.style.display = 'none';
3067        });
3068    }
3069
3070    if (openPreferences) {
3071        openPreferences.addEventListener('click', (e) => {
3072            e.preventDefault();
3073            if (cookieSettings) cookieSettings.style.display = 'flex';
3074
3075            const analyticsCookies = document.getElementById('analytics-cookies');
3076            const marketingCookies = document.getElementById('marketing-cookies');
3077            const preferencesCookies = document.getElementById('preferences-cookies');
3078
3079            if (analyticsCookies) {
3080                analyticsCookies.checked = localStorage.getItem('analyticsCookies') === 'true';
3081            }
3082
3083            if (marketingCookies) {
3084                marketingCookies.checked = localStorage.getItem('marketingCookies') === 'true';
3085            }
3086
3087            if (preferencesCookies) {
3088                preferencesCookies.checked = localStorage.getItem('preferencesCookies') === 'true';
3089            }
3090        });
3091    }
3092
3093    if (closeSettings) {
3094        closeSettings.addEventListener('click', () => {
3095            if (cookieSettings) cookieSettings.style.display = 'none';
3096        });
3097    }
3098
3099    if (savePreferences) {
3100        savePreferences.addEventListener('click', () => {
3101            const analyticsCookies = document.getElementById('analytics-cookies');
3102            const marketingCookies = document.getElementById('marketing-cookies');
3103            const preferencesCookies = document.getElementById('preferences-cookies');
3104
3105            localStorage.setItem('cookieConsent', 'customized');
3106
3107            if (analyticsCookies) {
3108                localStorage.setItem('analyticsCookies', analyticsCookies.checked.toString());
3109            }
3110
3111            if (marketingCookies) {
3112                localStorage.setItem('marketingCookies', marketingCookies.checked.toString());
3113            }
3114
3115            if (preferencesCookies) {
3116                localStorage.setItem('preferencesCookies', preferencesCookies.checked.toString());
3117            }
3118
3119            if (cookieSettings) cookieSettings.style.display = 'none';
3120            if (consentPopup) consentPopup.style.display = 'none';
3121        });
3122    }
3123});
3124
3125// Brand navigation scroll behavior
3126document.addEventListener("DOMContentLoaded", function() {
3127    const brandNavs = document.querySelectorAll('.brand-nav, .flex-h.fleeee');
3128
3129    if (brandNavs.length === 0) return;
3130
3131    let lastScrollPosition = window.scrollY;
3132    let scrollThreshold = 50;
3133
3134    brandNavs.forEach(nav => {
3135        nav.style.transition = 'transform 0.3s ease, opacity 0.3s ease';
3136    });
3137
3138    function handleScroll() {
3139        const currentScrollPosition = window.scrollY;
3140
3141        if (currentScrollPosition > lastScrollPosition && currentScrollPosition > scrollThreshold) {
3142            brandNavs.forEach(nav => {
3143                nav.style.transform = 'translateY(-100%)';
3144                nav.style.opacity = '0';
3145            });
3146        }
3147        else if (currentScrollPosition < scrollThreshold || currentScrollPosition < lastScrollPosition) {
3148            brandNavs.forEach(nav => {
3149                nav.style.transform = 'translateY(0)';
3150                nav.style.opacity = '1';
3151            });
3152        }
3153
3154        lastScrollPosition = currentScrollPosition;
3155    }
3156
3157    let ticking = false;
3158    window.addEventListener('scroll', function() {
3159        if (!ticking) {
3160            window.requestAnimationFrame(function() {
3161                handleScroll();
3162                ticking = false;
3163            });
3164            ticking = true;
3165        }
3166    });
3167});
3168
3169// OVERLAY BUTTON MENU HANDLER - Additional mobile menu fix
3170(function() {
3171    document.addEventListener('DOMContentLoaded', function() {
3172        const originalToggle = document.getElementById('mobileToggle');
3173        const navMenu = document.getElementById('navMenu');
3174
3175        if (!originalToggle || !navMenu) return;
3176
3177        const overlayButton = document.createElement('div');
3178        overlayButton.id = 'overlay-menu-button';
3179        overlayButton.style.cssText = `
3180            position: absolute;
3181            top: 0;
3182            left: 0;
3183            width: 60px;
3184            height: 60px;
3185            z-index: 99999;
3186            cursor: pointer;
3187            background: transparent;
3188        `;
3189
3190        function positionOverlay() {
3191            const rect = originalToggle.getBoundingClientRect();
3192            overlayButton.style.position = 'fixed';
3193            overlayButton.style.left = rect.left + 'px';
3194            overlayButton.style.top = rect.top + 'px';
3195            overlayButton.style.width = rect.width + 'px';
3196            overlayButton.style.height = rect.height + 'px';
3197        }
3198
3199        positionOverlay();
3200
3201        window.addEventListener('resize', positionOverlay);
3202        window.addEventListener('scroll', positionOverlay);
3203
3204        document.body.appendChild(overlayButton);
3205
3206        overlayButton.addEventListener('click', function(e) {
3207            e.preventDefault();
3208            e.stopPropagation();
3209
3210            const isOpen = navMenu.classList.contains('active');
3211
3212            if (!isOpen) {
3213                navMenu.classList.add('active');
3214                document.body.style.overflow = 'hidden';
3215                originalToggle.innerHTML = '<i class="fas fa-times"></i>';
3216            } else {
3217                navMenu.classList.remove('active');
3218                document.body.style.overflow = '';
3219                originalToggle.innerHTML = '<i class="fas fa-bars"></i>';
3220            }
3221
3222            return false;
3223        }, {
3224            capture: true,
3225            passive: false
3226        });
3227
3228        document.querySelectorAll('.nav-link, .nav-menu .btn-primary').forEach(function(link) {
3229            link.addEventListener('click', function() {
3230                if (navMenu.classList.contains('active')) {
3231                    navMenu.classList.remove('active');
3232                    document.body.style.overflow = '';
3233                    originalToggle.innerHTML = '<i class="fas fa-bars"></i>';
3234                }
3235            });
3236        });
3237
3238        const style = document.createElement('style');
3239        style.textContent = `
3240            .nav-menu.active {
3241                transform: translateY(0) !important;
3242                opacity: 1 !important;
3243                pointer-events: auto !important;
3244            }
3245        `;
3246        document.head.appendChild(style);
3247
3248        originalToggle.addEventListener('click', function(e) {
3249            e.preventDefault();
3250            e.stopPropagation();
3251            return false;
3252        }, {
3253            capture: true,
3254            passive: false
3255        });
3256
3257        console.log('Overlay button menu handler active');
3258    });
3259})();
3260
3261// FAQ ACCORDION FIX - Enhanced accordion functionality
3262(function() {
3263    function initAccordion() {
3264        try {
3265            console.log("FAQ Accordion Fix: Initializing");
3266
3267            const accordionItems = document.querySelectorAll('.accordion-item');
3268            console.log("FAQ Accordion Fix: Found " + accordionItems.length + " accordion items");
3269
3270            if (accordionItems.length > 0) {
3271                accordionItems.forEach(function(item, index) {
3272                    const header = item.querySelector('.accordion-header');
3273                    const body = item.querySelector('.accordion-body');
3274
3275                    if (!header || !body) {
3276                        console.error("FAQ Accordion Fix: Missing header or body in item", item);
3277                        return;
3278                    }
3279
3280                    const newHeader = header.cloneNode(true);
3281                    header.parentNode.replaceChild(newHeader, header);
3282
3283                    newHeader.addEventListener('click', function() {
3284                        const wasActive = item.classList.contains('active');
3285
3286                        accordionItems.forEach(function(otherItem) {
3287                            otherItem.classList.remove('active');
3288                            const otherBody = otherItem.querySelector('.accordion-body');
3289                            if (otherBody) {
3290                                otherBody.style.maxHeight = "0px";
3291                            }
3292                        });
3293
3294                        if (!wasActive) {
3295                            item.classList.add('active');
3296                            if (body) {
3297                                body.style.maxHeight = body.scrollHeight + "px";
3298                            }
3299                        }
3300                    });
3301                });
3302
3303                if (!accordionItems[0].classList.contains('active')) {
3304                    accordionItems[0].classList.add('active');
3305                    const firstBody = accordionItems[0].querySelector('.accordion-body');
3306                    if (firstBody) {
3307                        firstBody.style.maxHeight = firstBody.scrollHeight + "px";
3308                    }
3309                }
3310
3311                console.log("FAQ Accordion Fix: Initialization complete");
3312            } else {
3313                console.error("FAQ Accordion Fix: No accordion items found");
3314            }
3315        } catch (error) {
3316            console.error("FAQ Accordion Fix: Error initializing accordion", error);
3317        }
3318    }
3319
3320    if (document.readyState === 'loading') {
3321        document.addEventListener('DOMContentLoaded', initAccordion);
3322    } else {
3323        initAccordion();
3324    }
3325
3326    setTimeout(initAccordion, 500);
3327})();
3328
3329// FINAL SCROLL POSITION FIX - Force scroll position restoration for mobile menu
3330(function() {
3331    window.addEventListener('load', function() {
3332        console.log("🔧 Installing forced scroll position fix...");
3333
3334        const mobileToggle = document.getElementById('mobileToggle');
3335        const navMenu = document.getElementById('navMenu');
3336
3337        if (!mobileToggle || !navMenu) {
3338            console.log("❌ Critical elements not found");
3339            return;
3340        }
3341
3342        window._savedScrollPosition = 0;
3343
3344        const styleEl = document.createElement('style');
3345        styleEl.id = 'scroll-fix-styles';
3346        styleEl.textContent = `
3347            body.menu-is-active {
3348                position: fixed;
3349                width: 100%;
3350                overflow: hidden;
3351            }
3352        `;
3353        document.head.appendChild(styleEl);
3354
3355        window.addEventListener('scroll', function() {
3356            if (!navMenu.classList.contains('active')) {
3357                window._savedScrollPosition = window.pageYOffset;
3358            }
3359        }, { passive: true });
3360
3361        function replaceMenuToggle() {
3362            const newToggle = mobileToggle.cloneNode(true);
3363            mobileToggle.parentNode.replaceChild(newToggle, mobileToggle);
3364
3365            newToggle.addEventListener('click', function(e) {
3366                e.preventDefault();
3367                e.stopPropagation();
3368
3369                if (navMenu.classList.contains('active')) {
3370                    navMenu.classList.remove('active');
3371                    document.body.classList.remove('menu-is-active');
3372                    newToggle.innerHTML = '<i class="fas fa-bars"></i>';
3373
3374                    setTimeout(function() {
3375                        window.scrollTo(0, window._savedScrollPosition);
3376                        console.log("📜 Restored scroll position:", window._savedScrollPosition);
3377                    }, 400);
3378
3379                } else {
3380                    window._savedScrollPosition = window.pageYOffset;
3381                    console.log("📜 Saved scroll position:", window._savedScrollPosition);
3382
3383                    document.body.classList.add('menu-is-active');
3384                    document.body.style.top = `-${window._savedScrollPosition}px`;
3385
3386                    navMenu.classList.add('active');
3387                    newToggle.innerHTML = '<i class="fas fa-times"></i>';
3388                }
3389
3390                return false;
3391            }, { capture: true });
3392
3393            console.log("✅ Menu toggle replacement complete");
3394        }
3395
3396        function fixMenuLinks() {
3397            const menuLinks = navMenu.querySelectorAll('a');
3398
3399            menuLinks.forEach(link => {
3400                const newLink = link.cloneNode(true);
3401                if (link.parentNode) {
3402                    link.parentNode.replaceChild(newLink, link);
3403                }
3404
3405                newLink.addEventListener('click', function() {
3406                    if (navMenu.classList.contains('active')) {
3407                        navMenu.classList.remove('active');
3408                        document.body.classList.remove('menu-is-active');
3409
3410                        if (mobileToggle) {
3411                            mobileToggle.innerHTML = '<i class="fas fa-bars"></i>';
3412                        }
3413
3414                        setTimeout(function() {
3415                            window.scrollTo(0, window._savedScrollPosition);
3416                            console.log("📜 Restored scroll position after link click:", window._savedScrollPosition);
3417                        }, 400);
3418                    }
3419                });
3420            });
3421
3422            console.log("✅ Menu links fixed");
3423        }
3424
3425        try {
3426            const overlayBtn = document.getElementById('overlay-menu-button');
3427            if (overlayBtn) {
3428                overlayBtn.remove();
3429                console.log("🗑️ Removed overlay menu button");
3430            }
3431
3432            replaceMenuToggle();
3433            fixMenuLinks();
3434
3435            console.log("✅ Forced scroll position fix installed successfully");
3436        } catch (error) {
3437            console.error("❌ Error installing scroll fix:", error);
3438        }
3439
3440        if (navMenu.classList.contains('active')) {
3441            navMenu.classList.remove('active');
3442            document.body.classList.remove('menu-is-active');
3443            window.scrollTo(0, window._savedScrollPosition);
3444        }
3445    });
3446})();
3447</script>
vendor: 1 bytes, line 3447
3447
3448<script>
3449document.addEventListener("DOMContentLoaded", function() {
3450    // Find brand navigation bars (works for both sites)
3451    const brandNavs = document.querySelectorAll('.brand-nav, .flex-h.fleeee');
3452
3453    if (brandNavs.length === 0) return;
3454
3455    // Initial position
3456    let lastScrollPosition = window.scrollY;
3457    let scrollThreshold = 50; // How many pixels to scroll before hiding
3458
3459    // Add smooth transition to brand nav bars
3460    brandNavs.forEach(nav => {
3461        nav.style.transition = 'transform 0.3s ease, opacity 0.3s ease';
3462    });
3463
3464    // Function to handle scroll events
3465    function handleScroll() {
3466        const currentScrollPosition = window.scrollY;
3467
3468        // If scrolled down more than threshold
3469        if (currentScrollPosition > lastScrollPosition && currentScrollPosition > scrollThreshold) {
3470            // Hide the brand nav
3471            brandNavs.forEach(nav => {
3472                nav.style.transform = 'translateY(-100%)';
3473                nav.style.opacity = '0';
3474            });
3475        }
3476        // If scrolled back to top or scrolling up
3477        else if (currentScrollPosition < scrollThreshold || currentScrollPosition < lastScrollPosition) {
3478            // Show the brand nav
3479            brandNavs.forEach(nav => {
3480                nav.style.transform = 'translateY(0)';
3481                nav.style.opacity = '1';
3482            });
3483        }
3484
3485        lastScrollPosition = currentScrollPosition;
3486    }
3487
3488    // Throttle scroll events for better performance
3489    let ticking = false;
3490    window.addEventListener('scroll', function() {
3491        if (!ticking) {
3492            window.requestAnimationFrame(function() {
3493                handleScroll();
3494                ticking = false;
3495            });
3496            ticking = true;
3497        }
3498    });
3499});
3500</script>
3500
3501
3502</body>
3503</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.