PageSourceSearch

https://liquidlab.ro/en

html liquidlab.ro collected 2026-10-04 19:16:47 UTC 68,164 bytes, 434 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" />
6    <meta name="x-prerendered" content="/en">
7    
7<script>
8      // Runs before anything renders.
9      // 1. Root URL: a visitor who chose Romanian goes straight to /ro. Everyone
10      //    else gets the English homepage that is prerendered at / itself (see
11      //    the "/" route in src/App.tsx), so there is no redirect after the
12      //    JavaScript has loaded.
13      // 2. This file is also the SPA fallback for paths that have no
14      //    prerendered file of their own (404s, old links). Their markup
15      //    belongs to another page, so keep it off screen until React has
16      //    rendered the right one (src/main.tsx clears it).
17      (function () {
18        var LEGACY_ROUTES = {"/hyva":["/en/hyva","/ro/hyva"],"/elasticsuite":["/en/elasticsuite","/ro/elasticsuite"],"/hypernode":["/en/hypernode","/ro/hypernode"],"/liquid-framework":["/en/liquid-framework","/ro/liquid-framework"],"/services":["/en/services","/ro/servicii"],"/services/custom-project":["/en/services/custom-project","/ro/servicii/proiect-personalizat"],"/services/prototyping":["/en/services/prototyping","/ro/servicii/prototipare"],"/services/takeover":["/en/services/takeover","/ro/servicii/preluare"],"/services/support-development":["/en/services/support-development","/ro/servicii/suport-dezvoltare"],"/services/advice":["/en/services/advice","/ro/servicii/consultanta"],"/services/advice/code-review":["/en/services/advice/code-review","/ro/servicii/consultanta/analiza-cod"],"/services/advice/website-analysis":["/en/services/advice/website-analysis","/ro/servicii/consultanta/analiza-website"],"/services/advice/telephone-advice":["/en/services/advice/telephone-advice","/ro/servicii/consultanta/consultanta-telefonica"],"/comparison":["/en/comparison","/ro/comparison"],"/contact":["/en/contact","/ro/contact"],"/migrate/shopify":["/en/migrate/shopify","/ro/migrare/shopify"],"/migrate/woocommerce":["/en/migrate/woocommerce","/ro/migrare/woocommerce"],"/case-study":["/en/case-study","/ro/studii-de-caz"],"/case-study/vitacom":["/en/case-study/vitacom","/ro/studii-de-caz/vitacom"],"/case-study/equitana":["/en/case-study/equitana","/ro/studii-de-caz/equitana"],"/liquid-framework/modules":["/en/liquid-framework/modules","/ro/liquid-framework/module"],"/algolia":["/en/algolia","/ro/algolia"],"/jobs":["/en/jobs","/ro/cariere"],"/privacy":["/en/privacy","/ro/confidentialitate"],"/terms":["/en/terms","/ro/termeni"],"/cookie":["/en/cookie","/ro/cookie"],"/slack-code-of-conduct":["/en/slack-code-of-conduct","/ro/slack-cod-de-conduita"]};
19        var path = location.pathname.length > 1 ? location.pathname.replace(/\/+$/, '') : location.pathname;
20        var preferred = 'en';
21        try {
22          if (localStorage.getItem('liquidlab-language-preference') === 'ro') preferred = 'ro';
23        } catch (e) {}
24        if (path === '/') {
25          if (preferred === 'ro') {
26            location.replace('/ro' + location.search + location.hash);
27            return;
28          }
29        } else if (typeof LEGACY_ROUTES !== 'undefined' && LEGACY_ROUTES[path]) {
30          // 3. Old links without a language prefix (/contact): straight to the
31          //    prerendered page in the preferred language, the same rule as
32          //    SmartLanguageRedirect in App.tsx, without waiting for the app.
33          location.replace(LEGACY_ROUTES[path][preferred === 'ro' ? 1 : 0] + location.search + location.hash);
34          return;
35        }
36        var prerendered = document.querySelector('meta[name="x-prerendered"]');
37        if (prerendered && prerendered.getAttribute('content') !== path) {
38          document.documentElement.classList.add('prerender-mismatch');
39        }
40      })();
41    </script>
41
42    <style>html.prerender-mismatch #root { display: none; }</style>
43    
44    <title>Magento Development Agency | Hyvä Theme Experts | LIQUIDLAB</title>
45    <meta name="description" content="Expert Magento 2 &amp; Hyvä agency building blazing-fast stores with top PageSpeed scores. Custom development and support.">
46    <meta name="author" content="LIQUIDLAB" />
47    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
48    <meta name="googlebot" content="index, follow" />
49    <meta name="google" content="notranslate" />
50    
51    <!-- hreflang tags for language alternatives -->
52    <!-- Open Graph / Facebook -->
53    <meta property="og:type" content="website" />
54    <meta property="og:image" content="https://liquidlab.ro/og-image.jpg">
55    <meta property="og:site_name" content="LIQUIDLAB" />
56    
57    <!-- Twitter -->
58    <meta name="twitter:card" content="summary_large_image" />
59    <meta name="twitter:image" content="https://liquidlab.ro/og-image.jpg">
60    
61    <!-- Canonical URL -->
62    <!-- Favicons -->
63    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
64    <link rel="apple-touch-icon" href="/assets/icons/apple-touch-icon-alt.png">
65    <link rel="manifest" href="/site.webmanifest">
66    <!-- Explicit icon links so browsers fetch a 2 KB PNG instead of probing
67         /favicon.ico (which is now a 16/32/48 multi-size file for the rest). -->
68    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
69    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
70    <link rel="icon" href="/favicon.ico" sizes="48x48">
71    
72    <!-- Fonts are self-hosted (src/assets/fonts, declared in src/index.css).
73         Vite rewrites these hrefs to the hashed files. Both subsets are
74         preloaded: latin (24 KB) covers the English text, latin-ext (20 KB)
75         holds the Romanian diacritics, which every page needs (the hero on
76         /ro pages, the footer address on all of them). Left to unicode-range
77         alone, latin-ext was only requested after the CSS had been parsed
78         and the text laid out, so Romanian heroes painted in the fallback
79         font first and swapped. -->
80    <link rel="preload" as="font" type="font/woff2" crossorigin href="/assets/space-grotesk-latin-DPT1xrvW.woff2">
81    <link rel="preload" as="font" type="font/woff2" crossorigin href="/assets/space-grotesk-latin-ext-wJGaI8U0.woff2">
82
83    <!-- Critical CSS (inline above-the-fold styles) -->
84    <style>
85      /* Critical CSS for above-the-fold content */
86      *,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}
87      html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-feature-settings:normal}
88      body{margin:0;line-height:inherit;font-family:"Space Grotesk","Space Grotesk Fallback",sans-serif}
89      h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;font-family:"Space Grotesk","Space Grotesk Fallback",sans-serif}
90      .bg-background{background-color:hsl(var(--background))}
91      .text-foreground{color:hsl(var(--foreground))}
92      :root{--background:0 0% 100%;--foreground:222.2 84% 4.9%;--card:0 0% 100%;--card-foreground:222.2 84% 4.9%;--popover:0 0% 100%;--popover-foreground:222.2 84% 4.9%;--primary:221.2 83.2% 53.3%;--primary-foreground:210 40% 98%;--secondary:210 40% 96%;--secondary-foreground:222.2 84% 4.9%;--muted:210 40% 96%;--muted-foreground:215.4 16.3% 46.9%;--accent:210 40% 96%;--accent-foreground:222.2 84% 4.9%;--destructive:0 84.2% 60.2%;--destructive-foreground:210 40% 98%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--ring:221.2 83.2% 53.3%;--radius:0.75rem}
93      .dark{--background:222.2 84% 4.9%;--foreground:210 40% 98%;--card:222.2 84% 4.9%;--card-foreground:210 40% 98%;--popover:222.2 84% 4.9%;--popover-foreground:210 40% 98%;--primary:217.2 91.2% 59.8%;--primary-foreground:222.2 84% 4.9%;--secondary:217.2 32.6% 17.5%;--secondary-foreground:210 40% 98%;--muted:217.2 32.6% 17.5%;--muted-foreground:215 20.2% 65.1%;--accent:217.2 32.6% 17.5%;--accent-foreground:210 40% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:210 40% 98%;--border:217.2 32.6% 17.5%;--input:217.2 32.6% 17.5%;--ring:224.3 76.3% 94.1%}
94      #root{width:100%;margin:0;padding:0;text-align:left}
95    </style>
96    
97    <!-- Hero card image preload: homepage only, desktop only. On phones the
98         card sits below the fold, and a high-priority preload there only
99         delays the JavaScript that paints the hero text (the mobile LCP
100         element). The srcset placeholder is filled in at build time with the
101         hashed asset names (heroPreloadPlugin in vite-plugin-seo-injection.ts).
102         Keep sizes in sync with src/components/HeroBusinessResults.tsx. -->
103    
103<script>
104      (function () {
105        var path = window.location.pathname.replace(/\/$/, '');
106        if (path !== '' && path !== '/en' && path !== '/ro') return;
107        if (!window.matchMedia || !window.matchMedia('(min-width: 768px)').matches) return;
108        var link = document.createElement('link');
109        link.rel = 'preload';
110        link.as = 'image';
111        link.type = 'image/webp';
112        link.setAttribute('imagesrcset', '/assets/vitacom-building-512-DwNKDQym.webp 512w, /assets/vitacom-building-672-CjEJ9Kw-.webp 672w, /assets/vitacom-building-768-0SdxrcyE.webp 768w, /assets/vitacom-building-1024-B0e81DCu.webp 1024w');
113        link.setAttribute('imagesizes', '(min-width: 768px) 512px, calc(100vw - 32px)');
114        link.setAttribute('fetchpriority', 'high');
115        document.head.appendChild(link);
116      })();
117    </script>
117
118
119    <!-- The one business entity. Every page references it by @id
120         (https://liquidlab.ro/#business); the name, address and phone must
121         match the Google Business Profile and the footer exactly. -->
122    
122<script type="application/ld+json">
123      {
124        "@context": "https://schema.org",
125        "@graph": [
126          {
127            "@type": "ProfessionalService",
128            "@id": "https://liquidlab.ro/#business",
129            "name": "LIQUIDLAB",
130            "legalName": "Ecommerce Made Happy S.R.L.",
131            "url": "https://liquidlab.ro/ro",
132            "logo": "https://liquidlab.ro/assets/logos/liquidlab-logo.png",
133            "image": "https://liquidlab.ro/og-image.jpg",
134            "description": "LIQUIDLAB is a Magento agency in Constanța, Romania. We build, take over and maintain Magento 2 stores, with Hyvä as the default frontend on every project. Romania's first Hyvä partner.",
135            "telephone": "+40723767271",
136            "email": "[email protected]",
137            "address": {
138              "@type": "PostalAddress",
139              "streetAddress": "Strada Dumbrava Roșie 80",
140              "addressLocality": "Constanța",
141              "postalCode": "900613",
142              "addressCountry": "RO"
143            },
144            "geo": {
145              "@type": "GeoCoordinates",
146              "latitude": 44.1877216,
147              "longitude": 28.6455565
148            },
149            "hasMap": "https://maps.app.goo.gl/MjV8KbAsbNarYdU77",
150            "openingHoursSpecification": [
151              {
152                "@type": "OpeningHoursSpecification",
153                "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
154                "opens": "09:00",
155                "closes": "18:00"
156              }
157            ],
158            "areaServed": [
159              { "@type": "City", "name": "Constanța" },
160              { "@type": "Country", "name": "România" }
161            ],
162            "knowsAbout": ["Magento 2", "Magento Open Source", "Adobe Commerce", "Hyvä Themes", "Hyvä Checkout", "ElasticSuite", "Mage-OS"],
163            "contactPoint": {
164              "@type": "ContactPoint",
165              "telephone": "+40723767271",
166              "email": "[email protected]",
167              "contactType": "customer service",
168              "availableLanguage": ["Romanian", "English"]
169            },
170            "sameAs": [
171              "https://www.linkedin.com/company/liquid-lab-agency",
172              "https://github.com/liquidlab-agency",
173              "https://www.hyva.io/find-an-agency#Romania"
174            ]
175          },
176          {
177            "@type": "WebSite",
178            "@id": "https://liquidlab.ro/#website",
179            "name": "LIQUIDLAB",
180            "url": "https://liquidlab.ro",
181            "inLanguage": ["en", "ro"],
182            "publisher": { "@id": "https://liquidlab.ro/#business" }
183          }
184        ]
185      }
186    </script>
186
187    
187<script type="module" crossorigin src="/assets/index-SB0Atacq.js"></script>
187
188  <link rel="stylesheet" crossorigin href="/assets/index-DSEjhXvt.css">
189<link rel="canonical" href="https://liquidlab.ro/en">
190  <link rel="alternate" hreflang="en" href="https://liquidlab.ro/en">
191  <link rel="alternate" hreflang="ro" href="https://liquidlab.ro/ro">
192  <link rel="alternate" hreflang="x-default" href="https://liquidlab.ro/en">
193  <meta name="keywords" content="magento development agency, hyva theme development, magento 2 development, magento support services, hire magento developers, magento ecommerce solutions, custom magento development, magento performance optimization, magento consulting services, adobe commerce development">
194  <meta property="og:title" content="Magento Development Agency | Hyvä Theme Experts | LIQUIDLAB">
195  <meta property="og:description" content="Expert Magento 2 &amp; Hyvä agency building blazing-fast stores with top PageSpeed scores. Custom development and support.">
196  <meta property="og:url" content="https://liquidlab.ro/en">
197  <meta property="og:locale" content="en_US">
198  <meta property="og:locale:alternate" content="ro_RO">
199<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
199<meta name="twitter:title" content="Magento Development Agency | Hyvä Theme Experts | LIQUIDLAB"><meta name="twitter:description" content="Expert Magento 2 &amp;amp; Hyvä agency building blazing-fast stores with top PageSpeed scores. Custom development and support."></head>
200
201  <body>
202    <div id="root"><style>
203    /* Critical above-the-fold styles */
204    .section-container {
205      max-width: 1200px;
206      margin: 0 auto;
207      padding: 2rem 1rem;
208    }
209    
210    .chip {
211      display: inline-block;
212      padding: 0.5rem 1rem;
213      border-radius: 9999px;
214      background-color: hsl(210 40% 96%);
215      color: hsl(207 72% 58%);
216      font-size: 0.875rem;
217      font-weight: 500;
218    }
219    
220    .text-gradient {
221      background: linear-gradient(to bottom, #4a90e2, rgba(74, 144, 226, 0.7));
222      -webkit-background-clip: text;
223      -webkit-text-fill-color: transparent;
224      background-clip: text;
225    }
226    
227    .animate-fade-in {
228      animation: fadeIn 0.6s ease-out forwards;
229      opacity: 0;
230    }
231    
232    @keyframes fadeIn {
233      from {
234        opacity: 0;
235        transform: translateY(20px);
236      }
237      to {
238        opacity: 1;
239        transform: translateY(0);
240      }
241    }
242    
243    .animate-float {
244      animation: float 3s ease-in-out infinite;
245    }
246    
247    @keyframes float {
248      0%, 100% { transform: translateY(0px); }
249      50% { transform: translateY(-10px); }
250    }
251    
252    /* Prevent layout shift */
253    .hero-container {
254      min-height: 100vh;
255      display: flex;
256      align-items: center;
257      justify-content: center;
258    }
259  </style><button class="fixed bottom-6 right-6 z-50 bg-liquid-accent text-white p-3 rounded-full shadow-cta transition-all duration-300 hover:bg-liquid-blue hover:shadow-lg transform hover:-translate-y-1 opacity-0 scale-75 pointer-events-none" aria-label="Scroll to top"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up"><path d="m18 15-6-6-6 6"></path></svg></button><!--$--><div class="min-h-screen w-full">
259<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is Hyvä and why should I use it?","acceptedAnswer":{"@type":"Answer","text":"Hyvä is a modern frontend for Magento 2 that replaces the default Luma theme. It's significantly faster, more developer-friendly, and provides a better user experience. Our Liquid themes are built on Hyvä to deliver exceptional performance."}},{"@type":"Question","name":"How does your SaaS model work?","acceptedAnswer":{"@type":"Answer","text":"Our SaaS model includes theme licensing, hosting, maintenance, and regular updates for a single monthly fee. This means you get all the benefits of Magento without the technical overhead."}},{"@type":"Question","name":"Can I customize the Liquid theme?","acceptedAnswer":{"@type":"Answer","text":"Absolutely! While our themes are designed to work great out of the box, we can customize any aspect to match your brand and specific requirements."}},{"@type":"Question","name":"How long does implementation take?","acceptedA
259nswer":{"@type":"Answer","text":"Implementation time varies depending on your specific requirements, but typically ranges from 4-8 weeks. We'll provide a detailed timeline during our initial consultation."}},{"@type":"Question","name":"Do you offer support after launch?","acceptedAnswer":{"@type":"Answer","text":"Yes. Every plan includes ongoing support and maintenance, with a contractual SLA: critical incidents (store down or payments broken) get a response within 2 working hours and a fix within 1 working day. Support runs Monday to Friday, in working hours."}},{"@type":"Question","name":"Can I migrate from my current Magento store?","acceptedAnswer":{"@type":"Answer","text":"Yes, we offer comprehensive migration services from older Magento versions or other platforms. We ensure a smooth transition with minimal disruption to your business."}}]}</script>
259<header class="fixed top-0 left-0 right-0 z-50 transition-all duration-300 py-1 bg-transparent"><nav class="section-container !py-2 px-4"><div class="flex justify-between items-center"><div class="flex items-center max-lg:min-w-0"><a class="flex items-center max-lg:min-w-0 text-liquid-blue" href="/en"><svg viewBox="0 0 1136.91 199.95" fill="currentColor" role="img" aria-label="LIQUIDLAB" focusable="false" class="h-7 w-auto max-lg:max-w-full"><path d="M38.56,165.45V8.72H58.13V147.61h74v17.84Z" transform="translate(-38.56 -6.78)"></path><path d="M182,165.45H162.4V8.72H182Z" transform="translate(-38.56 -6.78)"></path><path d="M295.49,167.38v24.73h29.67v14.62H293.55c-13.11,0-16.77-6.45-16.77-16.56V167c-39.77-4.3-62.35-33.1-62.35-79.76,0-25.37,6.45-45.15,19.35-59.12,12.9-14.19,31-21.29,54-21.29s41.06,7.1,54,21.29c12.9,14,19.35,33.75,19.35,59.12C361.06,135.14,337.41,164.16,295.49,167.38ZM235.07,97.94c0,32.68,20.64,52,52.68,52,33.32,0,52.67-20.21,52.67-52V76c0-16.12-4.73-28.81-14.4-37.84-9.46-9.24-22.15-13.76-38.27-13.76-33.33,0-52.68,20-52.68,51.6Z" transform="translate(-38.56 -6.78)"></path><path d="M392.24,8.72h19.35v97c0,27.52,16.77,43.86,43.43,43.86s43.64-16.34,43.64-43.86v-97h19.13V107.4q0,27.42-16.77,43.86c-11.18,11-26.44,16.34-46,16.34-19.78,0-35.26-5.38-46.23-16.34s-16.55-25.58-16.55-43.86Z" transform="translate(-38.56 -6.78)"></path><path d="M580.79,165.45H561.23V8.72h19.56Z" transform="translate(-38.56 -6.78)"></path><path d="M625.3,165.45V8.72h63.42c46.65,0,65.79,26.87,65.79,78.47,0,51.82-19.35,78.26-65.79,78.26Zm19.56-17.84H688.5c31,0,45.37-14.19,45.37-47.52V74.29c0-33.75-15-47.73-45.37-47.73H644.86Z" transform="translate(-38.56 -6.78)"></path><path d="M787,165.45V8.72h19.57V147.61h74v17.84Z" transform="translate(-38.56 -6.78)"></path><path d="M1009.93,165.45l-13.76-37h-72l-13.76,37H890L949.08,8.72h22.36L1031,165.45Zm-79.77-53.1h60l-9.89-26.88-19.35-57h-1.08l-19.78,57Z" transform="translate(-38.56 -6.78)"></path><path d="M1054.86,165.45V8.72H1129c27.73,0,42.35,15.05,42.35,39.77,0,16.56-8,29.89-22.36,35.26v1.72c17.63,4.52,26.44,17.42,26.44,38.49,0,25.15-18,41.49-48.15,41.49Zm19.35-87.93h53.54c14.62,0,23.65-8,23.65-20.86v-11c0-12.69-8.6-20.43-23.87-20.43h-53.32Zm0,71.38H1126c17.41,0,28.81-8.39,28.81-21.5V116c0-14-9.89-22.14-25.59-22.14h-55Z" transform="translate(-38.56 -6.78)"></path></svg></a></div><div class="hidden lg:flex items-center gap-3"><div class="relative"><div class="flex items-center justify-center"><div class="flex items-center justify-center relative z-40"><button type="button" class="group flex items-center gap-1 px-3 py-2 text-sm font-medium transition-colors text-liquid-blue hover:text-liquid-accent" aria-expanded="false" aria-haspopup="menu"><span>Services</span><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down transition-transform duration-200 group-hover:translate-y-[1px]" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="group flex items-center gap-1 px-3 py-2 text-sm font-medium transition-colors text-liquid-blue hover:text-liquid-accent" aria-expanded="false" aria-haspopup="menu"><span>Partners</span><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down transition-transform duration-200 group-hover:translate-y-[1px]" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="group flex items-center gap-1 px-3 py-2 text-sm font-medium transition-colors text-liquid-blue hover:text-liquid-accent" aria-expanded="false" aria-haspopup="menu"><span>Migrate to Magento</span><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down transition-transform duration-200 group-hover:translate-y-[1px]" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><a class="relative cursor-pointer px-3 py-2 text-sm font-medium text-liquid-blue hover:text-liquid-accent transition-colors" href="/en/case-study">Case Studies</a><a class="relative cursor-pointer px-3 py-2 text-sm font-medium text-liquid-blue hover:text-liquid-accent transition-colors" href="/en/jobs">Jobs</a><a class="relative cursor-pointer px-3 py-2 text-sm font-medium text-liquid-blue hover:text-liquid-accent transition-colors" href="/en/blog">Blog</a></div></div><div class="absolute left-1/2 top-full z-50 -translate-x-1/2 pt-2"><div class="pointer-events-auto h-2 w-full"></div></div></div><div class="relative">
259<button class="justify-center whitespace-nowrap text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 border bg-background h-9 rounded-md px-3 flex items-center gap-2 text-liquid-darkGray hover:text-liquid-blue hover:bg-liquid-blue/5 transition-all duration-300 hover:shadow-lg font-medium border-liquid-blue/20" type="button" aria-haspopup="menu" aria-expanded="false"><span>🇬🇧 EN</span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down transition-transform duration-300 rotate-0"><path d="m6 9 6 6 6-6"></path></svg></button></div><a href="/en/contact"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 h-9 rounded-md px-3 bg-liquid-accent text-white hover:bg-liquid-blue transition-all duration-300 hover:shadow-lg font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle mr-2"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"></path></svg>Contact Us</button></a></div><div class="lg:hidden flex shrink-0 items-center gap-2 ml-3"><a aria-label="Contact Us" href="/en/contact"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 h-9 rounded-md px-3 bg-liquid-accent text-white hover:bg-liquid-blue transition-all duration-300 hover:shadow-lg font-medium" aria-label="Contact Us"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"></path></svg></button></a><div class="relative"><button class="justify-center whitespace-nowrap text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 border bg-background h-9 rounded-md px-3 flex items-center gap-2 text-liquid-darkGray hover:text-liquid-blue hover:bg-liquid-blue/5 transition-all duration-300 hover:shadow-lg font-medium border-liquid-blue/20" type="button" aria-haspopup="menu" aria-expanded="false"><span>🇬🇧 EN</span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down transition-transform duration-300 rotate-0"><path d="m6 9 6 6 6-6"></path></svg></button></div><button class="focus:outline-none text-liquid-blue" aria-label="Open menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div></div><div class="lg:hidden mt-4 bg-white rounded-lg shadow-lg p-4 animate-fade-in max-h-[80vh] overflow-y-auto hidden"><div class="flex flex-col space-y-2"><div class="border-b border-gray-100 pb-2"><button type="button" aria-expanded="false" class="flex w-full items-center justify-between text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-2"><span>Services</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></button><div class="pl-4 py-2 space-y-4 hidden"><div class="space-y-2"><p class="font-medium text-gray-500 text-sm mb-1">Development Services</p><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/liquid-framework">Liquid Framework</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/takeover">Magento Takeover</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/prototyping">Magento Prototyping</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/support-development">Support &amp; Development</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/custom-project">Custom Project</a></div><div class="space-y-2"><p class="font-medium text-gray-500 text-sm mb-1">Consulting Services</p><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/advice">Magento Advice</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/advice/telephone-advice">Telephone Advice</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/advice/website-analysis">Website Analysis</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/services/advice/code-review">Code Review</a></div></div></div><div class="border-b border-gray-100 pb-2"><button type="button" aria-expanded="false" class="flex w-full items-center justify-between text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-2"><span>Migrate to Magento</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></button><div class="pl-4 py-2 space-y-2 hidden"><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/migrate/shopify">From Shopify</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/migrate/woocommerce">From WooCommerce</a></div></div><div class="border-b border-gray-100 pb-2"><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-2" href="/en/case-study">Case Studies</a></div><div class="border-b border-gray-100 pb-2"><button type="button" aria-expanded="false" class="flex w-full items-center justify-between text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-2"><span>About</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></button><div class="pl-4 py-2 space-y-2 hidden"><p class="font-medium text-gray-500 text-sm mb-1">Partners</p><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/hyva">About Hyvä</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/elasticsuite">About ElasticSuite</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/hypernode">
259About Hypernode</a><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-1" href="/en/algolia">About Algolia</a></div></div><div class="border-b border-gray-100 pb-2"><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-2" href="/en/jobs">Jobs</a></div><div class="pb-2"><a class="block text-liquid-darkGray hover:text-liquid-blue transition-colors duration-200 py-2" href="/en/blog">Blog</a></div></div></div></nav></header><div class="relative"><div class="absolute left-0 right-0 z-40 w-full"></div></div><main><p class="sr-only">LIQUIDLAB is Romania&#x27;s first full-service Hyvä agency, specializing in Magento 2 development and performance optimization. We transform slow e-commerce stores into blazing-fast, high-converting platforms with guaranteed 90+ PageSpeed scores. Our expert team delivers custom Hyvä implementations, store migrations, and rescue projects for businesses ready to scale their online presence.</p><section class="min-h-0 pt-12 pb-4 md:min-h-screen md:py-0 flex items-center justify-center relative overflow-x-clip" aria-label="Main hero section"><div class="text-card-foreground shadow-sm w-full h-auto md:min-h-screen bg-white relative overflow-visible border-0 rounded-none flex flex-col justify-center"><div class="pointer-events-none absolute inset-0 z-0 h-72 w-72 opacity-80 -top-40 left-0 md:left-60 md:-top-20"><div class="absolute -inset-24 rounded-full" style="background:radial-gradient(closest-side, rgba(74, 161, 243, 0.15), transparent)"></div></div><div class="section-container flex flex-col md:grid md:grid-cols-2 gap-8 items-center h-full relative z-10 !pt-12 !pb-24 md:!py-24"><div class="text-center md:text-left w-full"><div class="mb-8"><span class="chip inline-block px-4 py-1 rounded-full bg-liquid-gray text-liquid-blue text-sm font-medium mb-4">CERTIFIED MAGENTO 2 &amp; HYVÄ EXPERTS. Romania&#x27;s First Full-Service Hyvä Agency</span></div><h1 class="text-4xl md:text-5xl lg:text-6xl font-bold mb-6 leading-tight"><span class="bg-clip-text text-transparent bg-gradient-to-b from-liquid-blue to-liquid-blue/70">Your Slow Magento Store Is Costing You Sales Every Day</span></h1><p class="text-lg md:text-xl text-liquid-darkGray mb-8 whitespace-pre-line">Lost revenue. Poor mobile experience. Security risks keeping you up at night. We rescue technically troubled Magento projects and turn them into fast, secure, perfectly optimized Hyvä stores.
260Romania&#x27;s best performance team. We&#x27;ve got the numbers to prove it.</p><div class="space-y-6 mb-8"><div class="flex flex-col sm:flex-row items-center justify-center md:justify-start gap-4"><button type="button" class="group relative rounded-full bg-gradient-to-r from-liquid-accent/30 via-liquid-lightBlue/30 via-40% to-liquid-blue/30 p-1 text-white transition-transform hover:scale-110 active:scale-105"><div class="relative z-10 flex items-center justify-center gap-2 rounded-full bg-gradient-to-r from-liquid-accent via-liquid-lightBlue via-40% to-liquid-blue px-6 py-3 text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle size-5 -translate-y-0.5 animate-sparkle fill-white"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute bottom-2.5 left-3.5 z-20 size-2 rotate-12 animate-sparkle fill-white" style="animation-delay:1s"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute left-5 top-2.5 size-1 -rotate-12 animate-sparkle fill-white" style="animation-delay:1.5s;animation-duration:2.5s"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute left-3 top-3 size-1.5 animate-sparkle fill-white" style="animation-delay:0.5s;animation-duration:2.5s"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><span class="font-medium">Book Free Strategy Call</span></div><span aria-hidden="true" class="pointer-events-none absolute -inset-4 z-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute fill-liquid-lightBlue text-liquid-lightBlue opacity-0 group-hover:animate-sparkle-burst motion-reduce:group-hover:animate-none size-2" style="left:6%;top:18%;animation-delay:0ms;--tx:-14px;--ty:-18px"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute fill-liquid-lightBlue text-liquid-lightBlue opacity-0 group-hover:animate-sparkle-burst motion-reduce:group-hover:animate-none size-1.5" style="left:20%;top:72%;animation-delay:150ms;--tx:-10px;--ty:16px"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute fill-liquid-lightBlue text-liquid-lightBlue opacity-0 group-hover:animate-sparkle-burst motion-reduce:group-hover:animate-none size-2" style="left:48%;top:8%;animation-delay:300ms;--tx:4px;--ty:-20px"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute fill-liquid-lightBlue text-liquid-lightBlue opacity-0 group-hover:animate-sparkle-burst motion-reduce:group-hover:animate-none size-1.5" style="left:70%;top:80%;animation-delay:450ms;--tx:12px;--ty:18px"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute fill-liquid-lightBlue text-liquid-lightBlue opacity-0 group-hover:animate-sparkle-burst motion-reduce:group-hover:animate-none size-2" style="left:92%;top:28%;animation-delay:600ms;--tx:18px;--ty:-12px"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkle absolute fill-liquid-lightBlue text-liquid-lightBlue opacity-0 group-hover:animate-sparkle-burst motion-reduce:group-hover:animate-none size-1" style="left:36%;top:50%;animation-delay:750ms;--tx:-6px;--ty:-24px"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg></span></button></div></div></div><div class="relative flex items-center justify-center px-0 md:px-4 w-full"><div class="rounded-lg border text-card-foreground p-0 bg-white shadow-lg w-full md:max-w-lg overflow-hidden"><div class="w-full"><picture><source type="image/webp" srcSet="/assets/vitacom-building-512-DwNKDQym.webp 512w, /assets/vitacom-building-672-CjEJ9Kw-.webp 672w, /assets/vitacom-building-768-0SdxrcyE.webp 768w, /assets/vitacom-building-1024-B0e81DCu.webp 1024w" sizes="(min-width: 768px) 512px, calc(100vw - 32px)"/><img src="/assets/vitacom-building-768-D9uSpNZx.jpg" alt="Vitacom" class="w-full h-44 md:h-40 object-cover" loading="eager" fetchPriority="high" decoding="async" width="768" height="384"/></picture></div><div class="p-4"><div class="mb-3"><h3 class="text-lg font-bold text-liquid-blue mb-0.5">Vitacom</h3><p class="text-xs text-liquid-darkGray">Magento &amp; Hyvä performance rescue</p></div><div class="grid grid-cols-3 gap-2 md:gap-3 mb-3"><div class="flex flex-col"><div class="text-blue-600 mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gauge w-5 h-5 md:w-6 md:h-6"><path d="m12 14 4-4"></path><path d="M3.34 19a10 10 0 1 1 17.32 0"></path></svg></div>
260<div class="text-[10px] md:text-xs text-liquid-darkGray mb-0.5">PageSpeed</div><div class="text-sm md:text-lg font-bold text-liquid-blue">12 → 100</div></div><div class="flex flex-col"><div class="text-green-600 mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap w-5 h-5 md:w-6 md:h-6"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg></div><div class="text-[10px] md:text-xs text-liquid-darkGray mb-0.5">TTFB</div><div class="text-sm md:text-lg font-bold text-liquid-blue">16s → 12ms</div></div><div class="flex flex-col"><div class="text-purple-600 mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server w-5 h-5 md:w-6 md:h-6"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg></div><div class="text-[10px] md:text-xs text-liquid-darkGray mb-0.5">Hardware</div><div class="text-sm md:text-lg font-bold text-liquid-blue">8x less</div></div></div><div class="pt-3 border-t"><a class="block w-full text-[10px] md:text-xs text-liquid-blue hover:text-liquid-blue/80 font-medium transition-colors whitespace-normal text-left" href="/en/case-study/vitacom">View Full Case Study →</a></div></div></div></div></div><div class="absolute bottom-0 left-0 right-0 pb-2 flex justify-center w-full z-20"><a href="#next-section" class="bg-liquid-gray/50 backdrop-blur-sm rounded-full p-2 shadow-md animate-float cursor-pointer hover:bg-liquid-gray/70 transition-colors" aria-label="Discover more"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down text-liquid-blue" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></a></div></div></section><div class=" contain-content"><div class="h-[800px] section-container bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div><div class=" contain-content"><div class="h-96 section-container bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div><div class=" contain-content"><div class="h-96 section-container bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div><div class=" contain-content"><div class="h-screen w-full bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div><div class=" contain-content"><div class="h-96 section-container bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div><div class=" contain-content"><div class="h-64 section-container bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div><div class=" contain-content"><div class="h-48 w-full bg-muted/20 rounded-lg"><div class="p-8 space-y-4"><div class="h-8 bg-muted/40 rounded w-3/4 mx-auto animate-pulse"></div><div class="h-4 bg-muted/30 rounded w-1/2 mx-auto animate-pulse [animation-delay:0.2s]"></div><div class="space-y-2 pt-4"><div class="h-4 bg-muted/30 rounded w-full animate-pulse [animation-delay:0.4s]"></div><div class="h-4 bg-muted/30 rounded w-5/6 animate-pulse [animation-delay:0.6s]"></div><div class="h-4 bg-muted/30 rounded w-4/6 animate-pulse [animation-delay:0.8s]"></div></div></div></div></div></main><footer class="bg-liquid-blue text-white pt-16 pb-8"><div class="section-container px-4"><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-12 mb-16"><div><h3 class="text-xl font-bold mb-4">LIQUIDLAB</h3><p class="text-gray-300 mb-6">Leading Magento development agency specializing in high-performance solutions with Hyvä themes.</p><div class="flex space-x-4"><a href="#" class="bg-white/10 hover:bg-white/20 p-2 rounded-full transition-colors" target="_blank" rel="noopener noreferrer" aria-label="Facebook"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-facebook"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a><a href="#" class="bg-white/10 hover:bg-white/20 p-2 rounded-full transition-colors" target="_blank" rel="noopener noreferrer" aria-label="Twitter"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-twitter"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg></a><a href="#" class="bg-white/10 hover:bg-white/20 p-2 rounded-full transition-colors" target="_blank" rel="noopener noreferrer" aria-label="Instagram"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a><a href="#" class="bg-white/10 hover:bg-white/20 p-2 rounded-full transition-colors" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle></svg></a></div></div><div><h4 class="text-lg font-semibold mb-4">Quick Links</h4><ul class="space-y-3"><li><a class="text-gray-300 hover:text-white transition-colors" href="/en">Home</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/liquid-framework">Framework</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/case-study">Case Studies</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/hyva">What is Hyvä?</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/contact">Contact Us</a></li></ul></div><div><h4 class="text-lg font-semibold mb-4">Our Services</h4><ul class="space-y-3"><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/services/takeover">Magento Takeover</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/services/prototyping">Magento Prototyping</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/services/support-development">Support &amp; Development</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/services/custom-project">Custom Project</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/services/advice">Magento Advice</a></li></ul></div><div><h4 class="text-lg font-semibold mb-4">Contact Us</h4><ul class="space-y-3"><li class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin flex-shrink-0 mt-1"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="https://maps.app.goo.gl/MjV8KbAsbNarYdU77" target="_blank" rel="noopener noreferrer" class="text-gray-300 hover:text-white transition-colors">Strada Dumbrava Roșie 80, Constanța 900613, <!-- -->Romania</a></li><li class="flex items-center gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path></svg><span class="text-gray-300"><a href="tel:+40723767271">+40 723 767 271</a></span></li><li class="flex items-center gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail"><rect width="20" height="16" x="2" y="4" rx="2"></rect><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path></svg><span class="text-gray-300"><a href="mailto:[email protected]">[email protected]</a></span></li></ul></div></div><div class="border-t border-gray-700 pt-12 pb-8"><div class="flex flex-wrap justify-center items-center gap-8"><a href="https://www.hyva.io/find-an-agency#Romania" target="_blank" rel="noopener noreferrer" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/[email protected]" alt="Hyva Bronze Partner" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="766" height="228" loading="lazy"/></a><a class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group" href="/en/algolia"><img src="/assets/algolia-logo-BPCoiGTx.svg" alt="Algolia" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="2196" height="500" loading="lazy"/></a>
260<a href="https://www.hypernode.com/" target="_blank" rel="noopener noreferrer" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/hypernode-D0PvnJCO.png" alt="Hypernode" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="423" height="119" loading="lazy"/></a><a href="https://www.elasticsuite.io/" target="_blank" rel="noopener noreferrer" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/elasticsuite-logo-B5jl2x9H.jpg" alt="Elasticsuite" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="150" height="85" loading="lazy"/></a><a href="https://themarketer.com/hire-an-expert/6821d68d09a8ecf7da0db4b9/Liquidlab" target="_blank" rel="noopener noreferrer" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/themarketer-C_r4b1Xt.svg" alt="TheMarketer" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="985" height="435" loading="lazy"/></a><a href="https://www.n-vision.ro/" target="_blank" rel="noopener noreferrer" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/nvision-logo-fsGMOVtM.png" alt="Nvision" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="122" height="55" loading="lazy"/></a><a href="https://www.euplatesc.ro/" target="_blank" rel="noopener noreferrer" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/euplatesc-logo-DyqLDqA4.svg" alt="EuPlătesc.ro" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="845" height="205" loading="lazy"/></a><a href="https://www.connectif.ai/" target="_blank" rel="noopener noreferrer" aria-label="Connectif" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/connectif-logo-CTedfqYl.svg" alt="Connectif" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="1000" height="89" loading="lazy"/></a><a href="https://www.mollie.com/" target="_blank" rel="noopener noreferrer" aria-label="Mollie" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/mollie-logo-Cr_xBl-r.svg" alt="Mollie" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="320" height="94" loading="lazy"/></a><a href="https://oct8ne.com/" target="_blank" rel="noopener noreferrer" aria-label="Oct8ne" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/oct8ne-logo-DVXgQ_eR.png" alt="Oct8ne" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="240" height="56" loading="lazy"/></a><a href="https://qoliber.com/" target="_blank" rel="noopener noreferrer" aria-label="Qoliber" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/qoliber-logo-D0xkDP0J.svg" alt="Qoliber" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="397" height="140" loading="lazy"/></a><a href="https://innoship.com/" target="_blank" rel="noopener noreferrer" aria-label="Innoship" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/innoship-logo-BZkLu2Hc.svg" alt="Innoship" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="405" height="156" loading="lazy"/></a><a href="https://corporate.payu.com/" target="_blank" rel="noopener noreferrer" aria-label="PayU" class="bg-white hover:bg-gray-100 p-4 rounded-lg transition-all duration-300 flex items-center justify-center border border-gray-600 hover:border-gray-400 group"><img src="/assets/payu-logo-kFofYeO_.svg" alt="PayU" class="h-16 w-auto max-w-[250px] object-contain transition-transform duration-300 group-hover:scale-105" width="303" height="152" loading="lazy"/></a></div></div><div class="border-t border-gray-700 pt-8"><div class="flex flex-col md:flex-row justify-between items-center gap-4 text-gray-400 text-sm"><p>© 2026 LIQUIDLAB. All rights reserved.</p><div class="flex flex-col md:flex-row items-center gap-4"><ul class="flex space-x-6"><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/privacy">Privacy Policy</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/terms">Terms of Service</a></li><li><a class="text-gray-300 hover:text-white transition-colors" href="/en/cookie">Cookie Policy</a></li></ul></div></div></div></div></footer></div><!--/$--></div>
261
262    <!-- Consent initialization (moved from head to avoid render-blocking) -->
263    
263<script>
264      window.dataLayer = window.dataLayer || [];
265      function gtag(){dataLayer.push(arguments);}
266      gtag('consent', 'default', {
267        'ad_storage': 'denied',
268        'analytics_storage': 'denied',
269        'ad_user_data': 'denied',
270        'ad_personalization': 'denied'
271      });
272    </script>
272
273
274    <!-- Route-based SEO meta tags. The per-route table used to be inlined here,
275         40 KB in every HTML document. Every marketing route is now prerendered
276         with its own head (scripts/prerender-marketing.ts marks those files
277         with meta[name="x-prerendered"]), so the table is only fetched when it
278         is needed: on client-side navigation, or on the first load of a route
279         that has no prerendered file. vite-plugin-seo-injection.ts fills in
280         SEO_ROUTES_URL with the hashed JSON asset. -->
281    
281<script>
282      (function() {
283        var SEO_ROUTES_URL = "/assets/seo-routes-654a8fc5.json";
284
285        var routesPromise = null;
286        function loadRoutes() {
287          if (!routesPromise) {
288            routesPromise = fetch(SEO_ROUTES_URL)
289              .then(function (response) { return response.ok ? response.json() : {}; })
290              .catch(function () { return {}; });
291          }
292          return routesPromise;
293        }
294
295        function cleanPathOf(path) {
296          return path.length > 1 ? path.replace(/\/$/, '') : path;
297        }
298
299        // Canonical is set for EVERY page, including blog pages, so it has to
300        // happen before the blog early-return below.
301        //
302        // Paginated and category-filtered listings self-canonicalise.
303        // robots.txt deliberately lets crawlers reach ?page= and ?category=,
304        // because that is how blog posts past the first page are discovered.
305        // Canonicalising all of them back to page 1 would tell Google to crawl
306        // those pages and then ignore them.
307        //
308        // Only these two params pass through. Anything else, ?q= above all,
309        // must never reach a canonical: search result pages are thin and
310        // robots-blocked.
311        function updateCanonical(path) {
312          var canonicalEl = document.querySelector('link[rel="canonical"]');
313          if (!canonicalEl) return;
314          var incoming = new URLSearchParams(window.location.search);
315          var kept = new URLSearchParams();
316          ['category', 'page'].forEach(function (key) {
317            var v = incoming.get(key);
318            if (v && !(key === 'page' && v === '1')) kept.set(key, v);
319          });
320          var qs = kept.toString();
321          // The root URL renders the English homepage in place; its canonical
322          // is /en, the same as the static tag it ships with.
323          var canonicalPath = path === '/' ? '/en' : cleanPathOf(path);
324          canonicalEl.setAttribute(
325            'href',
326            'https://liquidlab.ro' + canonicalPath + (qs ? '?' + qs : '')
327          );
328        }
329
330        function applyMeta(path, seoRoutes) {
331          var routeData = seoRoutes[path] || seoRoutes[cleanPathOf(path)];
332          // The root URL renders the English homepage in place.
333          if (!routeData && path === '/') routeData = seoRoutes['/en'];
334          // Every real route has an entry. A path without one is a 404: the
335          // NotFound page sets its own title and a noindex, and giving it the
336          // homepage title is what made unknown URLs read as soft 404s.
337          if (!routeData) return;
338
339          var lang = routeData.locale === 'ro_RO' ? 'ro' : 'en';
340          document.documentElement.lang = lang;
341          window.DETECTED_LANGUAGE = lang;
342          document.title = routeData.title;
343
344          var metaUpdates = {
345            'description': routeData.description,
346            'keywords': routeData.keywords,
347            'og:title': routeData.ogTitle || routeData.title,
348            'og:description': routeData.description,
349            'og:locale': routeData.locale,
350            'twitter:title': routeData.title,
351            'twitter:description': routeData.description
352          };
353
354          Object.keys(metaUpdates).forEach(function(key) {
355            var selector = key.includes(':') ?
356              'meta[property="' + key + '"]' :
357              'meta[name="' + key + '"]';
358            var element = document.querySelector(selector);
359
360            if (element) {
361              element.setAttribute('content', metaUpdates[key]);
362            } else {
363              var newMeta = document.createElement('meta');
364              if (key.includes(':')) {
365                newMeta.setAttribute('property', key);
366              } else {
367                newMeta.setAttribute('name', key);
368              }
369              newMeta.setAttribute('content', metaUpdates[key]);
370              document.head.appendChild(newMeta);
371            }
372          });
373        }
374
375        // The route whose meta is already in the document. React Router calls
376        // replaceState while it boots and on every state update, so without
377        // this every first load would still fetch the table.
378        var appliedPath = null;
379
380        function applySeoForPath(pathname, isInitialLoad) {
381          var path = pathname;
382          var lang = path.indexOf('/ro') === 0 ? 'ro' : 'en';
383          document.documentElement.lang = lang;
384          window.DETECTED_LANGUAGE = lang;
385
386          updateCanonical(path);
387
388          // Blog pages are prerendered by scripts/prerender-blog.ts with their
389          // own per-post title, description and OG tags. Do not overwrite those
390          // with the fallback home metadata, which is what would happen
391          // because /en/blog has no seoKeywords entry.
392          if (/^\/(en|ro)\/blog(\/|$)/.test(path)) return;
393
394          var cleanPath = cleanPathOf(path);
395          if (cleanPath === appliedPath) return;
396          appliedPath = cleanPath;
397
398          if (isInitialLoad) {
399            var prerendered = document.querySelector('meta[name="x-prerendered"]');
400            if (prerendered && prerendered.getAttribute('content') === cleanPath) return;
401          }
402
403          loadRoutes().then(function (seoRoutes) {
404            // Ignore a late response if the visitor has already moved on.
405            if (window.location.pathname !== pathname) return;
406            applyMeta(path, seoRoutes);
407          });
408        }
409
410        applySeoForPath(window.location.pathname, true);
411
412        var originalPushState = history.pushState;
413        var originalReplaceState = history.replaceState;
414
415        history.pushState = function() {
416          originalPushState.apply(this, arguments);
417          applySeoForPath(window.location.pathname, false);
418        };
419
420        history.replaceState = function() {
421          originalReplaceState.apply(this, arguments);
422          applySeoForPath(window.location.pathname, false);
423        };
424
425        window.addEventListener('popstate', function() {
426          applySeoForPath(window.location.pathname, false);
427        });
428      })();
429    </script>
429
430
431    <!-- IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT! -->
432    
433  </body>
434</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.