<!doctype html>
<html
class="no-js"
lang="en"
dir="ltr">
<head>
<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
<script>
(function () {
var OFFICIAL = 'https://flybaby.berlin';
var host = window.location.hostname.toLowerCase().replace(/^www\./, '');
// Our official storefront (apex + any subdomain) is always allowed.
var isOfficial = host === 'flybaby.berlin' || host.endsWith('.flybaby.berlin');
// Clone signature: "flybaby" as a domain label directly followed by a
// TLD, e.g. flybaby.cfd, shop.flybaby.xyz, flybaby.co.uk.
var isClone = /(^|\.)flybaby\.[a-z.]+$/.test(host);
if (!isOfficial && isClone) {
window.location.replace(OFFICIAL);
}
})();
</script>
<script>
window.addEventListener('load', function () {
/* >> [Heatmap.com](http://heatmap.com/) :: Snippet << */ (function (h, e, a, t, m, ap) {
(h._heatmap_paq = []).push(['setTrackerUrl', (h.heatUrl = e) + a]);
h.hErrorLogs = h.hErrorLogs || [];
ap = t.createElement('script');
ap.src = h.heatUrl + 'preprocessor.min.js?sid=' + m;
ap.defer = true;
t.head.appendChild(ap);
['error', 'unhandledrejection'].forEach(function (ty) {
h.addEventListener(ty, function (et) {
h.hErrorLogs.push({ type: ty, event: et });
});
});
})(window, 'https://dashboard.heatmap.com/', 'heatmap.php', document, 5046);
});
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=5.0">
<title>
Flybaby
</title><meta name="description" content="Flybaby produces lightweight and easy-to-use 3D knitted baby carriers. An innovative brand tailored to the needs of parents and their babies."><link rel="canonical" href="https://flybaby.berlin/en-fr"><!-- Adds a Liquid snippet to provide a correct en-GB (UK) hreflang alternate for the UK Shopify store. See snippets/mu-hreflang-uk-override.liquid for mapping logic. --><link
rel="alternate"
hreflang="en-GB"
href="https://uk.flybaby.berlin/"><link rel="shortcut icon" href="//flybaby.berlin/cdn/shop/files/Flybaby_Favicon_84fc6868-1921-4b1a-a59a-0f4a14ebf44e.png?v=1715867210&width=96">
<link rel="apple-touch-icon" href="//flybaby.berlin/cdn/shop/files/Flybaby_Favicon_84fc6868-1921-4b1a-a59a-0f4a14ebf44e.png?v=1715867210&width=180"><link
rel="preconnect"
href="https://fonts.shopifycdn.com"
crossorigin><link
rel="preload"
href="//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n5.1ce463e1cc056566f977610764d93d4704464858.woff2"
as="font"
type="font/woff2"
crossorigin><link
rel="preload"
href="//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n4.db86542ae5e1596dbdb28c279ae6c2086c4c5bfa.woff2"
as="font"
type="font/woff2"
crossorigin><meta property="og:type" content="website">
<meta property="og:title" content="Flybaby"><meta property="og:image" content="http://flybaby.berlin/cdn/shop/files/290930_FLY_Social_Sharing_Image.png?v=1727684759&width=2048">
<meta property="og:image:secure_url" content="https://flybaby.berlin/cdn/shop/files/290930_FLY_Social_Sharing_Image.png?v=1727684759&width=2048">
<meta property="og:image:width" content="1000">
<meta property="og:image:height" content="628"><meta property="og:description" content="Flybaby produces lightweight and easy-to-use 3D knitted baby carriers. An innovative brand tailored to the needs of parents and their babies."><meta property="og:url" content="https://flybaby.berlin/en-fr">
<meta property="og:site_name" content="Flybaby"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Flybaby">
<meta name="twitter:description" content="Flybaby produces lightweight and easy-to-use 3D knitted baby carriers. An innovative brand tailored to the needs of parents and their babies."><meta name="twitter:image" content="https://flybaby.berlin/cdn/shop/files/290930_FLY_Social_Sharing_Image.png?crop=center&height=1200&v=1727684759&width=1200">
<meta name="twitter:image:alt" content="">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://flybaby.berlin"
}]
}
</script>
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Flybaby",
"url": "https:\/\/flybaby.berlin",
"potentialAction": {
"@type": "SearchAction",
"target": "https:\/\/flybaby.berlin\/en-fr\/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
},
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Flybaby","logo": "https:\/\/flybaby.berlin\/cdn\/shop\/files\/Flybaby_Logo.svg?v=1678185479\u0026width=240","sameAs": ["https:\/\/www.instagram.com\/flybaby_babycarrier","https:\/\/www.tiktok.com\/@flybaby_babycarrier","https:\/\/www.youtube.com\/@FlybabyBerlin"],"url": "https:\/\/flybaby.berlin"
}
]
</script><style>/* Typography (heading) */
@font-face {
font-family: "Instrument Sans";
font-weight: 500;
font-style: normal;
font-display: fallback;
src: url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n5.1ce463e1cc056566f977610764d93d4704464858.woff2") format("woff2"),
url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n5.9079eb7bba230c9d8d8d3a7d101aa9d9f40b6d14.woff") format("woff");
}
@font-face {
font-family: "Instrument Sans";
font-weight: 500;
font-style: italic;
font-display: fallback;
src: url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_i5.d2033775d4997e4dcd0d47ebdd5234b5c14e3f53.woff2") format("woff2"),
url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_i5.8e3cfa86b65acf809ce72bc4f9b58f185ef6b8c7.woff") format("woff");
}
/* Typography (body) */
@font-face {
font-family: "Instrument Sans";
font-weight: 400;
font-style: normal;
font-display: fallback;
src: url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n4.db86542ae5e1596dbdb28c279ae6c2086c4c5bfa.woff2") format("woff2"),
url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n4.510f1b081e58d08c30978f465518799851ef6d8b.woff") format("woff");
}
@font-face {
font-family: "Instrument Sans";
font-weight: 400;
font-style: italic;
font-display: fallback;
src: url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_i4.028d3c3cd8d085648c808ceb20cd2fd1eb3560e5.woff2") format("woff2"),
url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_i4.7e90d82df8dee29a99237cd19cc529d2206706a2.woff") format("woff");
}
@font-face {
font-family: "Instrument Sans";
font-weight: 700;
font-style: normal;
font-display: fallback;
src: url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n7.e4ad9032e203f9a0977786c356573ced65a7419a.woff2") format("woff2"),
url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_n7.b9e40f166fb7639074ba34738101a9d2990bb41a.woff") format("woff");
}
@font-face {
font-family: "Instrument Sans";
font-weight: 700;
font-style: italic;
font-display: fallback;
src: url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_i7.d6063bb5d8f9cbf96eace9e8801697c54f363c6a.woff2") format("woff2"),
url("//flybaby.berlin/cdn/fonts/instrument_sans/instrumentsans_i7.ce33afe63f8198a3ac4261b826b560103542cd36.woff") format("woff");
}
:root {
/* Container */
--container-max-width: 100%;
--container-xxs-max-width: 27.5rem;
/* 440px */
--container-xs-max-width: 42.5rem;
/* 680px */
--container-sm-max-width: 61.25rem;
/* 980px */
--container-md-max-width: 71.875rem;
/* 1150px */
--container-lg-max-width: 78.75rem;
/* 1260px */
--container-xl-max-width: 85rem;
/* 1360px */
--container-gutter: 1.25rem;
--section-vertical-spacing: 4rem;
--section-vertical-spacing-tight:2.5rem;
--section-stack-gap:2.5rem;
--section-stack-gap-tight:2.25rem;
/* Form settings */
--form-gap: 1.25rem;
/* Gap between fieldset and submit button */
--fieldset-gap: 1rem;
/* Gap between each form input within a fieldset */
--form-control-gap: 0.625rem;
/* Gap between input and label (ignored for floating label) */
--checkbox-control-gap: 0.75rem;
/* Horizontal gap between checkbox and its associated label */
--input-padding-block: 0.65rem;
/* Vertical padding for input, textarea and native select */
--input-padding-inline: 0.8rem;
/* Horizontal padding for input, textarea and native select */
--checkbox-size: 0.875rem;
/* Size (width and height) for checkbox */
/* Other sizes */
--sticky-area-height: calc(var(--announcement-bar-is-sticky, 0) * var(--announcement-bar-height, 0px) + var(--header-is-sticky, 0) * var(--header-is-visible, 1) * var(--header-height, 0px));
/* RTL support */
--transform-logical-flip: 1;
--transform-origin-start: left;
--transform-origin-end: right;
/**
* ---------------------------------------------------------------------
* TYPOGRAPHY
* ---------------------------------------------------------------------
*/
/* Font properties */
--heading-font-family: "Fold Bold";
--heading-font-weight: 500;
--heading-font-style: normal;
--heading-text-transform: normal;
--heading-letter-spacing: 0.0
em;
--text-font-family: "Fold";
--text-font-weight: 400;
--text-font-style: normal;
--text-letter-spacing: 0.0
em;
--button-font: var(--heading-font-style) var(--heading-font-weight) var(--text-sm) / 1.65 var(--heading-font-family);
--button-text-transform: uppercase;
--button-letter-spacing: 0.1em;
/* Font sizes */--text-heading-size-factor: 1.3;
--text-h1: max(0.6875rem, clamp(1.375rem, 1.146341463414634rem + 0.975609756097561vw, 2rem) * var(--text-heading-size-factor));
--text-h2: max(0.6875rem, clamp(1.25rem, 1.0670731707317074rem + 0.7804878048780488vw, 1.75rem) * var(--text-heading-size-factor));
--text-h3: max(0.6875rem, clamp(1.125rem, 1.0335365853658536rem + 0.3902439024390244vw, 1.375rem) * var(--text-heading-size-factor));
--text-h4: max(0.6875rem, clamp(1rem, 0.9542682926829268rem + 0.1951219512195122vw, 1.125rem) * var(--text-heading-size-factor));
--text-h5: calc(0.875rem * var(--text-heading-size-factor));
--text-h6: calc(0.75rem * var(--text-heading-size-factor));
--text-xs: 0.875rem;
--text-sm: 0.9375rem;
--text-base: 1.0rem;
--text-lg: 1.125rem;
--text-xl: 1.25rem;
/* Rounded variables (used for border radius) */
--rounded-full: 9999px;
--button-border-radius: 3.75rem;
--input-border-radius: 0.0rem;
/* Box shadow */
--shadow-sm: 0 2px 8px rgb(0 0 0 / 0.05);
--shadow: 0 5px 15px rgb(0 0 0 / 0.05);
--shadow-md: 0 5px 30px rgb(0 0 0 / 0.05);
--shadow-block: pxpx
px rgb(var(--text-primary) / 0.0);
/**
* ---------------------------------------------------------------------
* OTHER
* ---------------------------------------------------------------------
*/
--checkmark-svg-url: url('//flybaby.berlin/cdn/shop/t/88/assets/checkmark.svg?v=77552481021870063511761837130');
--cursor-zoom-in-svg-url: url('//flybaby.berlin/cdn/shop/t/88/assets/cursor-zoom-in.svg?v=112480252220988712521779177798');
}
[dir="rtl"]:root {
/* RTL support */
--transform-logical-flip: -1;
--transform-origin-start: right;
--transform-origin-end: left;
}
@media screen and (min-width: 700px) {
:root {
/* Typography (font size) */
--text-xs: 1.0rem;
--text-sm: 1.0625rem;
--text-base: 1.125rem;
--text-lg: 1.25rem;
--text-xl: 1.375rem;
/* Spacing settings */
--container-gutter: 2rem;
}
}
@media screen and (min-width: 1000px) {
:root {
/* Spacing settings */
--container-gutter: 3rem;
--section-vertical-spacing: 7rem;
--section-vertical-spacing-tight: 4rem;
--section-stack-gap:4rem;
--section-stack-gap-tight:4rem;
}
}:root {/* Overlay used for modal */
--page-overlay: 0 0 0 / 0.1;
/* We use the first scheme background as default */
--page-background: ;
/* Product colors */
--on-sale-text: 193 0 7;
--on-sale-badge-background: 146 15 15;
--on-sale-badge-text: 255 255 255;
--sold-out-badge-background: 239 239 239;
--sold-out-badge-text: 0 0 0 / 0.65;
--custom-badge-background: 28 28 28;
--custom-badge-text: 255 255 255;
--star-color: 28 28 28;
/* Status colors */
--success-background: 212 227 203;
--success-text: 48 122 7;
--warning-background: 253 241 224;
--warning-text: 237 138 0;
--error-background: 243 204 204;
--error-text: 203 43 43;
}.color-scheme--scheme-1 {
/* Color settings */--accent: 28 28 28;
--text-color: 28 28 28;
--background: 255 255 255
/1.0;
--background-without-opacity: 255 255 255;
--background-gradient: ;--border-color: 221 221 221;/* Button colors */
--button-background: 28 28 28;
--button-text-color: 255 255 255;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-54922f2e920ba8346f6dc0fba343d673) + .shopify-section:has(.section-spacing.color-scheme--bg-54922f2e920ba8346f6dc0fba343d673:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-2 {
/* Color settings */--accent: 28 28 28;
--text-color: 28 28 28;
--background: 250 247 246
/1.0;
--background-without-opacity: 250 247 246;
--background-gradient: ;--border-color: 217 214 213;/* Button colors */
--button-background: 28 28 28;
--button-text-color: 255 255 255;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-26877278ebd778e2cac755e21e3facad) + .shopify-section:has(.section-spacing.color-scheme--bg-26877278ebd778e2cac755e21e3facad:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-3 {
/* Color settings */--accent: 255 255 255;
--text-color: 255 255 255;
--background: 28 28 28
/1.0;
--background-without-opacity: 28 28 28;
--background-gradient: ;--border-color: 62 62 62;/* Button colors */
--button-background: 255 255 255;
--button-text-color: 28 28 28;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44) + .shopify-section:has(.section-spacing.color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-4 {
/* Color settings */--accent: 255 255 255;
--text-color: 255 255 255;
--background: 0 0 0
/0.0;
--background-without-opacity: 0 0 0;
--background-gradient: ;--border-color: 255 255 255;/* Button colors */
--button-background: 255 255 255;
--button-text-color: 28 28 28;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-3671eee015764974ee0aef1536023e0f) + .shopify-section:has(.section-spacing.color-scheme--bg-3671eee015764974ee0aef1536023e0f:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-d1f41f03-2a61-4788-bf21-ce4886af7bd0 {
/* Color settings */--accent: 255 255 255;
--text-color: 255 255 255;
--background: 121 60 47
/1.0;
--background-without-opacity: 121 60 47;
--background-gradient: ;--border-color: 141 89 78;/* Button colors */
--button-background: 255 255 255;
--button-text-color: 28 28 28;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-692764c91eeab431eea2fd6115798863) + .shopify-section:has(.section-spacing.color-scheme--bg-692764c91eeab431eea2fd6115798863:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-5478505f-9f22-4068-bc2b-63aaf22383d9 {
/* Color settings */--accent: 255 255 255;
--text-color: 255 255 255;
--background: 189 92 22
/1.0;
--background-without-opacity: 189 92 22;
--background-gradient: ;--border-color: 199 116 57;/* Button colors */
--button-background: 255 255 255;
--button-text-color: 28 28 28;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-c4c6ad0bb5ca19fbc0e7931ad7472483) + .shopify-section:has(.section-spacing.color-scheme--bg-c4c6ad0bb5ca19fbc0e7931ad7472483:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-29e49cce-082b-4c62-9160-c0b5b43754ca {
/* Color settings */--accent: 28 28 28;
--text-color: 28 28 28;
--background: 28 28 28
/1.0;
--background-without-opacity: 28 28 28;
--background-gradient: ;--border-color: 28 28 28;/* Button colors */
--button-background: 28 28 28;
--button-text-color: 255 255 255;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44) + .shopify-section:has(.section-spacing.color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--scheme-deea0802-fc43-4238-9f2c-bcd74bd2f6f8 {
/* Color settings */--accent: 28 28 28;
--text-color: 28 28 28;
--background: 83 201 39
/1.0;
--background-without-opacity: 83 201 39;
--background-gradient: ;--border-color: 75 175 37;/* Button colors */
--button-background: 28 28 28;
--button-text-color: 255 255 255;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}.shopify-section:has(.section-spacing.color-scheme--bg-615c1ebda3d4a179f37e119ca92a7a64) + .shopify-section:has(.section-spacing.color-scheme--bg-615c1ebda3d4a179f37e119ca92a7a64:not(.bordered-section)) .section-spacing {
padding-block-start: 0;
}.color-scheme--dialog {
/* Color settings */--accent: 28 28 28;
--text-color: 28 28 28;
--background: 250 247 246
/1.0;
--background-without-opacity: 250 247 246;
--background-gradient: ;--border-color: 217 214 213;/* Button colors */
--button-background: 28 28 28;
--button-text-color: 255 255 255;
/* Circled buttons */
--circle-button-background: 255 255 255;
--circle-button-text-color: 28 28 28;
}
</style><style>
:root {
/* ---- Semantic colors ---- */
--fig-semantic-bg-inverse: #1c1c1c;
--fig-semantic-text-inverse: #ffffff;
--fig-semantic-bg-glass: rgba(255, 255, 255, 0.1);
--fig-semantic-border-inverse: #ffffff;
--fig-semantic-text-primary: #1c1c1c;
--fig-semantic-border-subtle: #ebebeb;
--fig-semantic-border-bright: #ffffff;
--fig-semantic-border-strong: #1c1c1c;
--fig-semantic-text-secondary: #ae8b75;
--fig-semantic-bg-brand-beige-medium: #f5f1e9;
--fig-semantic-bg-brand-beige-dark: #ae8b75;
/* ---- Components ---- */
--fig-button-bg-primary: #1c1c1c;
--fig-button-fg-primary: #ffffff;
--fig-button-bg-secondary: #ffffff;
--fig-button-fg-secondary: #1c1c1c;
--fig-button-height-md: 50px;
/* ---- Radius ---- */
--fig-radius-md: 8px;
--fig-radius-full: 999px;
/* ---- Dimension scale (Number Scale/dimension/*) ---- */
--fig-dimension-04: 8px;
--fig-dimension-11: 48px;
--fig-dimension-full: 999px;
/* ---- Size scale (size/*) ---- */
--fig-size-3xs: 6px;
--fig-size-2xs: 12px;
--fig-size-xs: 16px;
--fig-size-sm: 20px;
--fig-size-md: 24px;
--fig-size-lg: 32px;
--fig-size-xl: 40px;
--fig-size-2xl: 48px;
--fig-size-3xl: 56px;
--fig-size-4xl: 64px;
--fig-size-5xl: 90px;
--fig-size-6xl: 80px;
--fig-size-7xl: 112px;
--fig-size-9xl: 144px;
/* ---- Spacing-only values (where the Figma `spacing/*` scale diverges
from `size/*`). Most spacing values match `size/*` and reuse those. ---- */
--fig-spacing-5xl: 72px;
/* ---- Font families (theme already loads these faces) ----
"Fold Bold" = fold-grotesque-medium-pro (Figma: Medium)
"Fold" = fold-grotesque-regular-pro (Figma: Regular) */
--fig-font-medium: var(--heading-font-family, "Fold Bold"), sans-serif;
--fig-font-regular: var(--text-font-family, "Fold"), sans-serif;
/* ---- Type styles: size / line-height / letter-spacing ---- */
/* Label/Medium */
--fig-text-label-md-size: 16px;
--fig-text-label-md-lh: 28px;
--fig-text-label-md-ls: 0.04em;
/* Desktop Display/md/Medium */
--fig-text-display-md-size: 46px;
--fig-text-display-md-lh: 50px;
--fig-text-display-md-ls: 0;
/* Desktop Display/lg/Medium */
--fig-text-display-lg-size: 62px;
--fig-text-display-lg-lh: 62.4px;
--fig-text-display-lg-ls: 0;
/* Text sm/Regular */
--fig-text-sm-size: 16px;
--fig-text-sm-lh: 23px;
--fig-text-sm-ls: 0.01em;
/* Text sm/Medium */
--fig-text-sm-medium-size: 16px;
--fig-text-sm-medium-lh: 27.2px;
--fig-text-sm-medium-ls: 0.04em;
/* Text lg/Medium */
--fig-text-lg-size: 20px;
--fig-text-lg-lh: 32px;
--fig-text-lg-ls: 0.04em;
/* Text md/Medium */
--fig-text-md-medium-size: 18px;
--fig-text-md-medium-lh: 30px;
--fig-text-md-medium-ls: 0.04em;
/* Text xs/Regular */
--fig-text-xs-size: 14px;
--fig-text-xs-lh: 24px;
--fig-text-xs-ls: 0.01em;
/* Mobile Display/sm/Medium */
--fig-text-display-sm-size: 28px;
--fig-text-display-sm-lh: 30px;
--fig-text-display-sm-ls: 0;
/* Desktop Display/sm/Medium */
--fig-text-desktop-display-sm-size: 41px;
--fig-text-desktop-display-sm-lh: 44px;
--fig-text-desktop-display-sm-ls: 0;
/* Desktop Display/stage/Regular */
--fig-text-display-stage-size: 72px;
--fig-text-display-stage-lh: 74px;
--fig-text-display-stage-ls: 0;
/* Desktop Display/xs/Regular */
--fig-text-display-xs-size: 32px;
--fig-text-display-xs-lh: 38px;
--fig-text-display-xs-ls: 0;
/* Button/Medium + Button/sm (letterSpacing is px, not %) */
--fig-text-button-md-size: 16px;
--fig-text-button-md-lh: 28px;
--fig-text-button-md-ls: 1.7px;
--fig-text-button-sm-size: 14px;
--fig-text-button-sm-lh: 24px;
--fig-text-button-sm-ls: 1.7px;
}
/* ##########################################################################
Typography utility classes — mirror the Figma text styles.
Apply directly in markup, e.g. class="fig-display-md". Responsive styles
use a `desktop:` variant that applies at >=1000px (the layout breakpoint),
e.g. class="fig-display-sm desktop:fig-display-md".
These set font-family / weight / size / line-height / letter-spacing only;
color, margin and text-transform stay with the section/element.
########################################################################## */
.fig-label-md {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-label-md-size);
line-height: var(--fig-text-label-md-lh);
letter-spacing: var(--fig-text-label-md-ls);
}
.fig-display-md {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-display-md-size);
line-height: var(--fig-text-display-md-lh);
letter-spacing: var(--fig-text-display-md-ls);
}
.fig-display-lg {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-display-lg-size);
line-height: var(--fig-text-display-lg-lh);
letter-spacing: var(--fig-text-display-lg-ls);
}
.fig-display-sm {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-display-sm-size);
line-height: var(--fig-text-display-sm-lh);
letter-spacing: var(--fig-text-display-sm-ls);
}
.fig-desktop-display-sm {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-desktop-display-sm-size);
line-height: var(--fig-text-desktop-display-sm-lh);
letter-spacing: var(--fig-text-desktop-display-sm-ls);
}
.fig-display-stage {
font-family: var(--fig-font-regular);
font-weight: normal;
font-size: var(--fig-text-display-stage-size);
line-height: var(--fig-text-display-stage-lh);
letter-spacing: var(--fig-text-display-stage-ls);
}
.fig-display-xs {
font-family: var(--fig-font-regular);
font-weight: normal;
font-size: var(--fig-text-display-xs-size);
line-height: var(--fig-text-display-xs-lh);
letter-spacing: var(--fig-text-display-xs-ls);
}
.fig-text-lg {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-lg-size);
line-height: var(--fig-text-lg-lh);
letter-spacing: var(--fig-text-lg-ls);
}
.fig-text-md-medium {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-md-medium-size);
line-height: var(--fig-text-md-medium-lh);
letter-spacing: var(--fig-text-md-medium-ls);
}
.fig-text-sm {
font-family: var(--fig-font-regular);
font-weight: normal;
font-size: var(--fig-text-sm-size);
line-height: var(--fig-text-sm-lh);
letter-spacing: var(--fig-text-sm-ls);
}
.fig-text-sm-medium {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-sm-medium-size);
line-height: var(--fig-text-sm-medium-lh);
letter-spacing: var(--fig-text-sm-medium-ls);
}
.fig-text-xs {
font-family: var(--fig-font-regular);
font-weight: normal;
font-size: var(--fig-text-xs-size);
line-height: var(--fig-text-xs-lh);
letter-spacing: var(--fig-text-xs-ls);
}
.fig-button-md {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-button-md-size);
line-height: var(--fig-text-button-md-lh);
letter-spacing: var(--fig-text-button-md-ls);
text-transform: uppercase;
}
.fig-button-sm {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-button-sm-size);
line-height: var(--fig-text-button-sm-lh);
letter-spacing: var(--fig-text-button-sm-ls);
text-transform: uppercase;
}
/* Primary CTA links — 50px height; pair with fig-button-md or fig-button-sm */
.fig-cta-md {
box-sizing: border-box;
display: inline-flex;
align-items: center;
justify-content: center;
height: var(--fig-button-height-md);
min-height: var(--fig-button-height-md);
padding-block: 0;
padding-inline: var(--fig-size-lg);
border-radius: var(--fig-radius-full);
line-height: 1;
text-decoration: none;
}
.fig-cta-md.fig-button-md,
.fig-cta-md.fig-button-sm {
line-height: 1;
}
/* Responsive desktop variants (>=1000px) */
@media screen and (min-width: 1000px) {
.desktop\:fig-display-md {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-display-md-size);
line-height: var(--fig-text-display-md-lh);
letter-spacing: var(--fig-text-display-md-ls);
}
.desktop\:fig-desktop-display-sm {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-desktop-display-sm-size);
line-height: var(--fig-text-desktop-display-sm-lh);
letter-spacing: var(--fig-text-desktop-display-sm-ls);
}
.desktop\:fig-display-stage {
font-family: var(--fig-font-regular);
font-weight: normal;
font-size: var(--fig-text-display-stage-size);
line-height: var(--fig-text-display-stage-lh);
letter-spacing: var(--fig-text-display-stage-ls);
}
.desktop\:fig-display-lg {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-display-lg-size);
line-height: var(--fig-text-display-lg-lh);
letter-spacing: var(--fig-text-display-lg-ls);
}
.desktop\:fig-text-sm {
font-family: var(--fig-font-regular);
font-weight: normal;
font-size: var(--fig-text-sm-size);
line-height: var(--fig-text-sm-lh);
letter-spacing: var(--fig-text-sm-ls);
}
.desktop\:fig-button-md {
font-family: var(--fig-font-medium);
font-weight: normal;
font-size: var(--fig-text-button-md-size);
line-height: var(--fig-text-button-md-lh);
letter-spacing: var(--fig-text-button-md-ls);
text-transform: uppercase;
}
.fig-cta-md.desktop\:fig-button-md {
line-height: 1;
}
}
</style>
<script>
document.documentElement.classList.replace('no-js', 'js');
// This allows to expose several variables to the global scope, to be used in scripts
window.themeVariables = {
settings: {
showPageTransition: false,
pageType: "index",
moneyFormat: "€{{amount_with_comma_separator}}",
moneyWithCurrencyFormat: "€{{amount_with_comma_separator}} EUR",
currencyCodeEnabled: false,
cartType: "drawer",
staggerMenuApparition: true
},
strings: {
addToCartButton: "Add to cart",
soldOutButton: "Sold out",
preOrderButton: "Pre-order",
unavailableButton: "Unavailable",
addedToCart: "Added to your cart!",
closeGallery: "Close gallery",
zoomGallery: "Zoom picture",
errorGallery: "Image cannot be loaded",
soldOutBadge: "Sold out",
discountBadge: "-@@",
sku: "SKU:",
shippingEstimatorNoResults: "Sorry, we do not ship to your address.",
shippingEstimatorOneResult: "There is one shipping rate for your address:",
shippingEstimatorMultipleResults: "There are several shipping rates for your address:",
shippingEstimatorError: "One or more error occurred while retrieving shipping rates:",
next: "Next",
previous: "Previous"
},
mediaQueries: {
'sm': 'screen and (min-width: 700px)',
'md': 'screen and (min-width: 1000px)',
'lg': 'screen and (min-width: 1150px)',
'xl': 'screen and (min-width: 1400px)',
'2xl': 'screen and (min-width: 1600px)',
'sm-max': 'screen and (max-width: 699px)',
'md-max': 'screen and (max-width: 999px)',
'lg-max': 'screen and (max-width: 1149px)',
'xl-max': 'screen and (max-width: 1399px)',
'2xl-max': 'screen and (max-width: 1599px)',
'motion-safe': '(prefers-reduced-motion: no-preference)',
'motion-reduce': '(prefers-reduced-motion: reduce)',
'supports-hover': 'screen and (pointer: fine)',
'supports-touch': 'screen and (hover: none)'
}
};</script><script>
if (!(HTMLScriptElement.supports && HTMLScriptElement.supports('importmap'))) {
const importMapPolyfill = document.createElement('script');
importMapPolyfill.async = true;
importMapPolyfill.src = "//flybaby.berlin/cdn/shop/t/88/assets/es-module-shims.min.js?v=163628956881225179081761837068";
document.head.appendChild(importMapPolyfill);
}
</script>
<script type="importmap">{
"imports": {
"vendor": "//flybaby.berlin/cdn/shop/t/88/assets/vendor.min.js?v=55120211853256353121761837082",
"theme": "//flybaby.berlin/cdn/shop/t/88/assets/theme.js?v=136925551775108332041761837081",
"photoswipe": "//flybaby.berlin/cdn/shop/t/88/assets/photoswipe.min.js?v=20290624223189769891761837078"
}
}
</script>
<script type="module" src="//flybaby.berlin/cdn/shop/t/88/assets/vendor.min.js?v=55120211853256353121761837082"></script>
<script type="module" src="//flybaby.berlin/cdn/shop/t/88/assets/theme.js?v=136925551775108332041761837081"></script>
<script src="//flybaby.berlin/cdn/shop/t/88/assets/main.js" type="module" crossorigin="anonymous"></script>
<!-- START SCRIPT -->
<script
id="wgs-scripttag-prod"
src="/apps/ap/static/scripts/dist/wgs.bundle.js?shop=flybaby-8798.myshopify.com&app_proxy=true&cart_attr_disabled=false&enable_sps=false&line_items_disabled=false&wgs_config_id=2"
async="true"></script>
<style>
#customerReferenceId {
display: none;
}
</style>
<!-- END SCRIPT -->
<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta name="facebook-domain-verification" content="wituclfhcafve7ix59vuosubiliena">
<meta name="google-site-verification" content="KuoXJJGKYWYyFdg7P7Xe9vf0ITVaKnKiewBPtmhSYJ0">
<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/55613129044/digital_wallets/dialog">
<meta name="shopify-checkout-api-token" content="33c3dcbc59698de7ff2cff07d7326ca9">
<meta id="in-context-paypal-metadata" data-shop-id="55613129044" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="EUR">
<link rel="alternate" hreflang="x-default" href="https://flybaby.berlin/">
<link rel="alternate" hreflang="de" href="https://flybaby.berlin/">
<link rel="alternate" hreflang="en" href="https://flybaby.berlin/en">
<link rel="alternate" hreflang="fr" href="https://flybaby.berlin/fr">
<link rel="alternate" hreflang="es" href="https://flybaby.berlin/es">
<link rel="alternate" hreflang="it" href="https://flybaby.berlin/it">
<link rel="alternate" hreflang="nl" href="https://flybaby.berlin/nl">
<link rel="alternate" hreflang="pl" href="https://flybaby.berlin/pl">
<link rel="alternate" hreflang="en-BG" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-BG" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-BG" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-BG" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-BG" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-BG" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-HR" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-HR" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-HR" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-HR" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-HR" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-HR" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-CZ" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-CZ" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-CZ" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-CZ" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-CZ" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-CZ" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-DK" href="https://flybaby.berlin/en-dk">
<link rel="alternate" hreflang="fr-DK" href="https://flybaby.berlin/fr-dk">
<link rel="alternate" hreflang="de-DK" href="https://flybaby.berlin/de-dk">
<link rel="alternate" hreflang="it-DK" href="https://flybaby.berlin/it-dk">
<link rel="alternate" hreflang="es-DK" href="https://flybaby.berlin/es-dk">
<link rel="alternate" hreflang="nl-DK" href="https://flybaby.berlin/nl-dk">
<link rel="alternate" hreflang="en-EE" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-EE" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-EE" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-EE" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-EE" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-EE" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-FI" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-FI" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-FI" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-FI" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-FI" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-FI" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-GR" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-GR" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-GR" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-GR" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-GR" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-GR" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-HU" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-HU" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-HU" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-HU" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-HU" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-HU" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="it-IT" href="https://flybaby.berlin/it-it">
<link rel="alternate" hreflang="en-IT" href="https://flybaby.berlin/en-it">
<link rel="alternate" hreflang="en-LV" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-LV" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-LV" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-LV" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-LV" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-LV" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-LT" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-LT" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-LT" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-LT" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-LT" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-LT" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-MT" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-MT" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-MT" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-MT" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-MT" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-MT" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-PL" href="https://flybaby.berlin/en-pl">
<link rel="alternate" hreflang="fr-PL" href="https://flybaby.berlin/fr-pl">
<link rel="alternate" hreflang="de-PL" href="https://flybaby.berlin/de-pl">
<link rel="alternate" hreflang="it-PL" href="https://flybaby.berlin/it-pl">
<link rel="alternate" hreflang="es-PL" href="https://flybaby.berlin/es-pl">
<link rel="alternate" hreflang="nl-PL" href="https://flybaby.berlin/nl-pl">
<link rel="alternate" hreflang="en-RO" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-RO" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-RO" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-RO" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-RO" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-RO" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-SK" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-SK" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-SK" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-SK" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-SK" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-SK" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-SI" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-SI" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-SI" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-SI" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-SI" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-SI" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="en-ES" href="https://flybaby.berlin/en-es">
<link rel="alternate" hreflang="fr-ES" href="https://flybaby.berlin/fr-es">
<link rel="alternate" hreflang="de-ES" href="https://flybaby.berlin/de-es">
<link rel="alternate" hreflang="it-ES" href="https://flybaby.berlin/it-es">
<link rel="alternate" hreflang="es-ES" href="https://flybaby.berlin/es-es">
<link rel="alternate" hreflang="nl-ES" href="https://flybaby.berlin/nl-es">
<link rel="alternate" hreflang="en-SE" href="https://flybaby.berlin/en-se">
<link rel="alternate" hreflang="fr-SE" href="https://flybaby.berlin/fr-se">
<link rel="alternate" hreflang="de-SE" href="https://flybaby.berlin/de-se">
<link rel="alternate" hreflang="it-SE" href="https://flybaby.berlin/it-se">
<link rel="alternate" hreflang="es-SE" href="https://flybaby.berlin/es-se">
<link rel="alternate" hreflang="nl-SE" href="https://flybaby.berlin/nl-se">
<link rel="alternate" hreflang="en-NO" href="https://flybaby.berlin/en-eu">
<link rel="alternate" hreflang="fr-NO" href="https://flybaby.berlin/fr-eu">
<link rel="alternate" hreflang="de-NO" href="https://flybaby.berlin/de-eu">
<link rel="alternate" hreflang="it-NO" href="https://flybaby.berlin/it-eu">
<link rel="alternate" hreflang="es-NO" href="https://flybaby.berlin/es-eu">
<link rel="alternate" hreflang="nl-NO" href="https://flybaby.berlin/nl-eu">
<link rel="alternate" hreflang="de-AT" href="https://flybaby.berlin/de-at">
<link rel="alternate" hreflang="en-AT" href="https://flybaby.berlin/en-at">
<link rel="alternate" hreflang="fr-AT" href="https://flybaby.berlin/fr-at">
<link rel="alternate" hreflang="it-AT" href="https://flybaby.berlin/it-at">
<link rel="alternate" hreflang="es-AT" href="https://flybaby.berlin/es-at">
<link rel="alternate" hreflang="nl-AT" href="https://flybaby.berlin/nl-at">
<link rel="alternate" hreflang="nl-NL" href="https://flybaby.berlin/nl-nl">
<link rel="alternate" hreflang="fr-NL" href="https://flybaby.berlin/fr-nl">
<link rel="alternate" hreflang="de-NL" href="https://flybaby.berlin/de-nl">
<link rel="alternate" hreflang="it-NL" href="https://flybaby.berlin/it-nl">
<link rel="alternate" hreflang="es-NL" href="https://flybaby.berlin/es-nl">
<link rel="alternate" hreflang="en-NL" href="https://flybaby.berlin/en-nl">
<link rel="alternate" hreflang="fr-BE" href="https://flybaby.berlin/fr-be">
<link rel="alternate" hreflang="en-BE" href="https://flybaby.berlin/en-be">
<link rel="alternate" hreflang="de-BE" href="https://flybaby.berlin/de-be">
<link rel="alternate" hreflang="it-BE" href="https://flybaby.berlin/it-be">
<link rel="alternate" hreflang="es-BE" href="https://flybaby.berlin/es-be">
<link rel="alternate" hreflang="nl-BE" href="https://flybaby.berlin/nl-be">
<link rel="alternate" hreflang="fr-LU" href="https://flybaby.berlin/fr-lu">
<link rel="alternate" hreflang="en-LU" href="https://flybaby.berlin/en-lu">
<link rel="alternate" hreflang="de-LU" href="https://flybaby.berlin/de-lu">
<link rel="alternate" hreflang="it-LU" href="https://flybaby.berlin/it-lu">
<link rel="alternate" hreflang="es-LU" href="https://flybaby.berlin/es-lu">
<link rel="alternate" hreflang="nl-LU" href="https://flybaby.berlin/nl-lu">
<link rel="alternate" hreflang="de-CH" href="https://flybaby.berlin/de-ch">
<link rel="alternate" hreflang="en-CH" href="https://flybaby.berlin/en-ch">
<link rel="alternate" hreflang="fr-CH" href="https://flybaby.berlin/fr-ch">
<link rel="alternate" hreflang="it-CH" href="https://flybaby.berlin/it-ch">
<link rel="alternate" hreflang="es-CH" href="https://flybaby.berlin/es-ch">
<link rel="alternate" hreflang="nl-CH" href="https://flybaby.berlin/nl-ch">
<link rel="alternate" hreflang="fr-FR" href="https://flybaby.berlin/fr-fr">
<link rel="alternate" hreflang="en-FR" href="https://flybaby.berlin/en-fr">
<link rel="alternate" hreflang="de-FR" href="https://flybaby.berlin/de-fr">
<link rel="alternate" hreflang="it-FR" href="https://flybaby.berlin/it-fr">
<link rel="alternate" hreflang="es-FR" href="https://flybaby.berlin/es-fr">
<link rel="alternate" hreflang="nl-FR" href="https://flybaby.berlin/nl-fr">
<link rel="alternate" hreflang="en-IE" href="https://flybaby.berlin/en-ie">
<link rel="alternate" hreflang="fr-IE" href="https://flybaby.berlin/fr-ie">
<link rel="alternate" hreflang="de-IE" href="https://flybaby.berlin/de-ie">
<link rel="alternate" hreflang="it-IE" href="https://flybaby.berlin/it-ie">
<link rel="alternate" hreflang="es-IE" href="https://flybaby.berlin/es-ie">
<link rel="alternate" hreflang="nl-IE" href="https://flybaby.berlin/nl-ie">
<link rel="alternate" hreflang="de-LI" href="https://flybaby.berlin/de-li">
<link rel="alternate" hreflang="en-LI" href="https://flybaby.berlin/en-li">
<link rel="alternate" hreflang="fr-LI" href="https://flybaby.berlin/fr-li">
<link rel="alternate" hreflang="it-LI" href="https://flybaby.berlin/it-li">
<link rel="alternate" hreflang="es-LI" href="https://flybaby.berlin/es-li">
<link rel="alternate" hreflang="nl-LI" href="https://flybaby.berlin/nl-li">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-FR&default_configuration_id=128418132"></script>
<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-FR&default_configuration_id=128418132&shop_id=55613129044" crossorigin="anonymous"></script>
<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":55613129044,"countryCode":"DE","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/55613129044","merchantName":"Flybaby","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex"],"total":{"type":"pending","label":"Flybaby","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
<script id="shopify-features" type="application/json">{"accessToken":"33c3dcbc59698de7ff2cff07d7326ca9","betas":["rich-media-storefront-analytics"],"domain":"flybaby.berlin","predictiveSearch":true,"shopId":55613129044,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "flybaby-8798.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"EUR","rate":"1.0"};
Shopify.country = "FR";
Shopify.theme = {"name":"Flybaby Live","id":188653994324,"schema_name":"Prestige","schema_version":"9.3.0","theme_store_id":null,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "flybaby.berlin/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/en-fr/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
Shopify.SignInWithShop = Shopify.SignInWithShop || {};
Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
Shopify.SignInWithShop.User.recognized = false;</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
<script>
window.ShopifyPay = window.ShopifyPay || {};
window.ShopifyPay.apiHost = "shop.app\/pay";
window.ShopifyPay.redirectState = null;
</script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.01 };
window.Shopify.SignInWithShop.eligible = true;
</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
<script defer="defer" async type="module" src="//flybaby.berlin/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
<script type="module">
await import("//flybaby.berlin/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
</script>
<script>
window.Shopify = window.Shopify || {};
if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
window.Shopify.featureAssets['shop-js'] = {"listener":["modules/v2/loader.listener.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"],"avatar":["modules/v2/loader.avatar.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"]};
</script>
<script id="__st">var __st={"a":55613129044,"offset":7200,"reqid":"de34a9c9-7fe2-40de-9f0c-eac662eed3fc-1783365684","pageurl":"flybaby.berlin\/en-fr","u":"e547f2c56a21","p":"home"};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!1,!0)}();</script>
<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//flybaby.berlin/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//flybaby.berlin/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script><script crossorigin="anonymous" defer="defer" src="//flybaby.berlin/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812"></script>
<script id="shopify-origin-trials" async="async" integrity="sha256-mqQjA+yhr1DtPsW5MhDIq3zDu+LghfjNT49r/ttG3eY=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-5059b83f.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
<script id='scb4127' type='text/javascript' async='' src='https://flybaby.berlin/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script><link rel="stylesheet" media="screen" href="//flybaby.berlin/cdn/shop/t/88/compiled_assets/styles.css?v=106165068994953732801781795776">
<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
<link href="//flybaby.berlin/cdn/shop/t/88/assets/theme.css?v=37976891084030393201779264597" rel="stylesheet" type="text/css" media="all" /><link
rel="preload"
as="style"
href="//flybaby.berlin/cdn/shop/t/88/assets/main.css?v=38838344154646139221781611112"
onload="this.onload=null;this.rel='stylesheet'">
<noscript><link href="//flybaby.berlin/cdn/shop/t/88/assets/main.css?v=38838344154646139221781611112" rel="stylesheet" type="text/css" media="all" /></noscript>
<!-- Ablyft -->
<script src="https://cdn.ablyft.com/s/39059475.js" defer></script>
<!-- BEGIN app block: shopify://apps/triplewhale/blocks/triple_pixel_snippet/483d496b-3f1a-4609-aea7-8eee3b6b7a2a --><link rel='preconnect dns-prefetch' href='https://api.config-security.com/' crossorigin />
<link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin />
<script>
/* >> TriplePixel :: start*/
window.TriplePixelData={TripleName:"flybaby-8798.myshopify.com",ver:"2.16",plat:"SHOPIFY",isHeadless:false,src:'SHOPIFY_EXT',product:{id:"",name:``,price:"",variant:"",av:{ }},search:"",collection:"",cart:"drawer",template:"index",curr:"EUR" || "EUR"},function(W,H,A,L,E,_,B,N){function O(U,T,P,H,R){void 0===R&&(R=!1),H=new XMLHttpRequest,P?(H.open("POST",U,!0),H.setRequestHeader("Content-Type","text/plain")):H.open("GET",U,!0),H.send(JSON.stringify(P||{})),H.onreadystatechange=function(){4===H.readyState&&200===H.status?(R=H.responseText,U.includes("/first")?eval(R):P||(N[B]=R)):(299<H.status||H.status<200)&&T&&!R&&(R=!0,O(U,T-1,P))}}if(N=window,!N[H+"sn"]){N[H+"sn"]=1,L=function(){return Date.now().toString(36)+"_"+Math.random().toString(36)};try{A.setItem(H,1+(0|A.getItem(H)||0)),(E=JSON.parse(A.getItem(H+"U")||"[]")).push({u:location.href,r:document.referrer,t:Date.now(),id:L()}),A.setItem(H+"U",JSON.stringify(E))}catch(e){}var i,m,p;A.getItem('"!nC`')||(_=A,A=N,A[H]||(E=A[H]=function(t,e,i){return void 0===i&&(i=[]),"State"==t?E.s:(W=L(),(E._q=E._q||[]).push([W,t,e].concat(i)),W)},E.s="Installed",E._q=[],E.ch=W,B="configSecurityConfModel",N[B]=1,O("https://conf.config-security.com/model",5),i=L(),m=A[atob("c2NyZWVu")],_.setItem("di_pmt_wt",i),p={id:i,action:"profile",avatar:_.getItem("auth-security_rand_salt_"),time:m[atob("d2lkdGg=")]+":"+m[atob("aGVpZ2h0")],host:A.TriplePixelData.TripleName,plat:A.TriplePixelData.plat,url:window.location.href.slice(0,500),ref:document.referrer,ver:A.TriplePixelData.ver},O("https://api.config-security.com/event",5,p),O("https://api.config-security.com/first?host=".concat(p.host,"&plat=").concat(p.plat),5)))}}("","TriplePixel",localStorage);
/* << TriplePixel :: end*/
</script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/preorder-now-pre-order-pq/blocks/app-embed/551fab2c-3af6-4a8f-ba21-736a71cb4540 --><script>
window.prequik_config = {
page_type: "index",
};
</script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
<script async src="https://static.klaviyo.com/onsite/js/Tuq4Ad/klaviyo.js?company_id=Tuq4Ad"></script>
<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
<script>
window.klaviyoReviewsProductDesignMode = false
</script>
<!-- END app block --><script src="https://cdn.shopify.com/extensions/019db995-e0f3-7d2a-b131-a67c37afbd6c/preorder-manager-prequik-36/assets/prequik.js" type="text/javascript" defer="defer"></script>
<link href="https://cdn.shopify.com/extensions/019db995-e0f3-7d2a-b131-a67c37afbd6c/preorder-manager-prequik-36/assets/cx-prequik.css" rel="stylesheet" type="text/css" media="all">
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 55613129044,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "index"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
<script>
window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
</script>
<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,r=/bytedance/i;function o(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var r=0,o=e.split(";");r<o.length;r++){var d=o[r],n=d.indexOf("=");if(-1!==n){var t=d.slice(0,n).trim();if(t){var i=void 0;try{i=decodeURIComponent(t)}catch(e){i=t}if("_shopify_s"===i){var a=d.slice(n+1).trim();try{return decodeURIComponent(a)}catch(e){return a}}}}}return}catch(e){return}}return function(d,n,t,i){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!Boolean(null==(l=null==(s=window.Shopify)?void 0:s.analytics)?void 0:l.replayQueue)){var s,l;window.Shopify=window.Shopify||{};var c=window.Shopify;c.analytics=c.analytics||{};var u=c.analytics;u.replayQueue=[],u.publish=function(e,r,o){return u.replayQueue.push([e,r,o]),!0};try{self.performance.mark("wpm:start")}catch(e){}var p,h,f,m,g,y,v,w=(h=(p={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,f=p.legacy,(m=navigator.userAgent).match(e)?"bot":m.match(h)?"modern":m.match(f)?"legacy":m.match(r)?"bot":"unknown"),b="modern"===w?"modern":"legacy",P=(null!=i?i:{modern:"",legacy:""})[b],S=[(g={baseUrl:n,hashVersion:t,buildTarget:b}).baseUrl,"/wpm","/b",g.hashVersion,"modern"===g.buildTarget?"m":"l",".js"].join(""),C=function(e){var r=e.version,d=e.browserTarget,n=e.surface,t=e.shopId,i=e.monorailEndpoint,a=window.location.href;return{emit:function(e){var s=e.status,l=e.errorMsg,c=(new Date).getTime(),u=JSON.stringify({metadata:{event_sent_at_ms:c},events:[{schema_id:"web_pixels_manager_load/3.2",payload:{version:r,bundle_target:d,page_url:a,status:s,surface:n,error_msg:l,shop_id:t,visit_token:o()},metadata:{event_created_at_ms:c}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,u)}catch(e){}var p=new XMLHttpRequest;try{return p.open("POST",i,!0),p.setRequestHeader("Content-Type","text/plain"),p.send(u),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:t,browserTarget:w,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});try{a.browserTarget=w,function(e){var r=e.src,o=e.async,d=void 0===o||o,n=e.onload,t=e.onerror,i=e.sri,a=e.scriptDataAttributes,s=void 0===a?{}:a,l=document.createElement("script"),c=document.querySelector("head"),u=document.querySelector("body");if(l.async=d,l.src=r,i&&(l.integrity=i,l.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{l.dataset[p]=s[p]}catch(e){}if(n&&l.addEventListener("load",n),t&&l.addEventListener("error",t),c)c.appendChild(l);else{if(!u)throw new Error("Did not find a head or body element to append the script");u.appendChild(l)}}({src:S,async:!0,onload:function(){if(!function(){var e,r;return Boolean(null==(r=null==(e=window.Shopify)?void 0:e.analytics)?void 0:r.initialized)}()){var e=window.webPixelsManager.init(d)||void 0;if(e){var r=window.Shopify.analytics;r.replayQueue.forEach(function(r){var o=r[0],d=r[1],n=r[2];e.publishCustomEvent(o,d,n)}),r.replayQueue=[],r.publish=e.publishCustomEvent,r.visitor=e.visitor,r.initialized=!0}}},onerror:function(){return C.emit({status:"failed",errorMsg:"".concat(S," has failed to load")})},sri:(y=P,v=/^sha384-[A-Za-z0-9+/=]+$/,"string"==typeof y&&v.test(y)?P:""),scriptDataAttributes:a}),C.emit({status:"loading"})}catch(e){C.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}}}();wpmLoader({shopId: 55613129044,storefrontBaseUrl: "https://flybaby.berlin",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["d5bdd5d0"],webPixelsConfigList: [{"id":"3016491348","configuration":"{\"accountID\":\"Tuq4Ad\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"524f6c1ee37bacdca7657a665bdca589","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2974744916","configuration":"{\"accountID\":\"44818ca8-06c5-41a2-a534-a1a822f28edf\",\"endpoint\":\"https:\/\/m.moast.io\/apps\/moast\/event\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"345e35a02be7df8d69de8614a5842b80","type":"APP","apiClientId":108560121857,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2421227860","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\",\\\"GT-WBZT9KHK\\\",\\\"GT-NFJZD3X6\\\"],\\\"target_country\\\":\\\"DE\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/3KI8CLWKsd4ZEIilorA9\\\",\\\"AW-16475787912\\\/jKNkCM3t4ecZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/95GQCK-Ksd4ZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-PQVGMNQP95\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/KF_MCKyKsd4ZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-PQVGMNQP95\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/Z8f6CKaKsd4ZEIilorA9\\\",\\\"AW-16475787912\\\/LpJUCMft4ecZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/eEKjCKmKsd4ZEIilorA9\\\",\\\"AW-16475787912\\\/VmKzCNDt4ecZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-PQVGMNQP95\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/lAnnCLiKsd4ZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-PQVGMNQP95\\\",\\\"AW-16475787912\\\/VLa0CLKKsd4ZEIilorA9\\\",\\\"AW-16475787912\\\/dUZVCMrt4ecZEIilorA9\\\",\\\"MC-1N2F67FSSR\\\",\\\"MC-XV0P8KNS8G\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-PQVGMNQP95\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"20a1a395175a780fd37f04940f5b4db5","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2249589076","configuration":"{\"shopId\":\"flybaby-8798.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b86194809e9bbe0b74334b13c8bf4709","type":"APP","apiClientId":2753413,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"356352340","configuration":"{\"pixel_id\":\"275336158545181\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"abff2a8add143ccb04deb20f0ebd74a9","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"191758676","configuration":"{\"tagID\":\"2612793732700\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"565fe5dd5db699c5a32547ff5c1df3c8","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":[]},"dataSharingState":"optimized"},{"id":"133792084","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"],"name":"Mable Pixel"},{"id":"240779604","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":[],"name":"ABlyft Tracking"},{"id":"268468564","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"UET Tag"},{"id":"281608532","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Heatmap"},{"id":"323387732","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Klar Pixel"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0490","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0490","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Flybaby","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"flybaby-8798.myshopify.com","countryCode":"DE","storefrontUrl":"https:\/\/flybaby.berlin\/en-fr"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"15487787467092","handle":"flybaby-toddler-carrier","title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"56011290313044","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9842694848852","handle":"flybaby-carrier","title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50470894436692","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"11839797690708","handle":"flybaby-bag-1","title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51354243596628","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"12470648799572","handle":"flybaby-neck-warmer","title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53432896553300","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"12470649323860","handle":"flybaby-weather-cover","title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53432902746452","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://flybaby.berlin/cdn","884e51e7w4ac0e82ap522bb270m20c07008",{"modern":"","legacy":""},{"trekkieShim":true,"apiClientId":"580111","themeId":"188653994324","pageType":"home","shopId":"55613129044","storefrontBaseUrl":"https:\/\/flybaby.berlin","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"d5bdd5d0\"]","isMerchantRequest":"false","hashVersion":"884e51e7w4ac0e82ap522bb270m20c07008","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script><script>
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'EUR';
var meta = {"page":{"pageType":"home","requestId":"de34a9c9-7fe2-40de-9f0c-eac662eed3fc-1783365684"}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
</script>
<script class="analytics">
(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var hasLoggedConversion = function(token) {
if (token) {
return document.cookie.indexOf('loggedConversion=' + token) !== -1;
}
return false;
}
var setCookieIfConversion = function(token) {
if (token) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
window.ShopifyAnalytics.lib.trekkie = window.trekkie;
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
if (window.__TREKKIE_SHIM_QUEUE && (method == 'track' || method == 'page')) {
try {
window.__TREKKIE_SHIM_QUEUE.push({
from: 'trekkie-stub',
method: method,
args: args.slice(1)
});
} catch (e) {
// no-op
}
}
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config || {};
trekkie.config.initialDocumentCookie = document.cookie;
var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
var scriptFallback = document.createElement('script');
scriptFallback.type = 'text/javascript';
scriptFallback.onerror = function(error) {
var Monorail = {
produce: function produce(monorailDomain, schemaId, payload) {
var currentMs = new Date().getTime();
var event = {
schema_id: schemaId,
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
};
return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
},
sendRequest: function sendRequest(endpointUrl, payload) {
// Try the sendBeacon API
if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
var blobData = new window.Blob([payload], {
type: 'text/plain'
});
if (window.navigator.sendBeacon(endpointUrl, blobData)) {
return true;
} // sendBeacon was not successful
} // XHR beacon
var xhr = new XMLHttpRequest();
try {
xhr.open('POST', endpointUrl);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send(payload);
} catch (e) {
console.log(e);
}
return false;
},
isIos12: function isIos12() {
return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
}
};
Monorail.produce('monorail-edge.shopifysvc.com',
'trekkie_storefront_load_errors/1.1',
{shop_id: 55613129044,
theme_id: 188653994324,
app_name: "storefront",
context_url: window.location.href,
source_url: "//flybaby.berlin/cdn/s/trekkie.storefront.370ef8ffef154dc56bb5a814fea4666724353464.min.js"});
};
scriptFallback.async = true;
scriptFallback.src = '//flybaby.berlin/cdn/s/trekkie.storefront.370ef8ffef154dc56bb5a814fea4666724353464.min.js';
first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//flybaby.berlin/cdn/s/trekkie.storefront.370ef8ffef154dc56bb5a814fea4666724353464.min.js';
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":55613129044,"isMerchantRequest":null,"themeId":188653994324,"themeCityHash":"6738199770377444205","contentLanguage":"en","currency":"EUR","eventMetadataId":"9dcc73e9-3ab7-42cf-b28b-8a83626903fd"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["b5387b81","d5bdd5d0"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
window.ShopifyAnalytics.lib.page(null,{"pageType":"home","requestId":"de34a9c9-7fe2-40de-9f0c-eac662eed3fc-1783365684","shopifyEmitted":true});
var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
var token = match? match[1]: undefined;
if (!hasLoggedConversion(token)) {
setCookieIfConversion(token);
}
});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src = "//flybaby.berlin/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script
defer
src="https://flybaby.berlin/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.6.1.min.js"
data-application="storefront-renderer"
data-shop-id="55613129044"
data-render-region="gcp-europe-west1"
data-page-type="index"
data-theme-instance-id="188653994324"
data-theme-name="Prestige"
data-theme-version="9.3.0"
data-monorail-region="shop_domain"
data-resource-timing-sampling-rate="10"
data-shs="true"
data-shs-beacon="true"
data-shs-export-with-fetch="true"
data-shs-logs-sample-rate="1"
data-shs-beacon-endpoint="https://flybaby.berlin/api/collect"
></script>
</head>
<div class="muun-OverscrollShield"></div>
<body class="features--zoom-image color-scheme color-scheme--scheme-1">
<template id="drawer-default-template">
<div part="base">
<div part="overlay"></div>
<div part="content">
<header part="header">
<slot name="header"></slot>
<button type="button" is="dialog-close-button" part="close-button tap-area" aria-label="Close"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="14"
class="icon icon-close"
viewbox="0 0 16 16"
>
<path d="m1 1 14 14M1 15 15 1" stroke="currentColor" stroke-width="1.5"/>
</svg>
</button>
</header>
<div part="body">
<slot></slot>
</div>
<footer part="footer">
<slot name="footer"></slot>
</footer>
</div>
</div>
</template><template id="modal-default-template">
<div part="base">
<div part="overlay"></div>
<div part="content">
<header part="header">
<slot name="header"></slot>
<button type="button" is="dialog-close-button" part="close-button tap-area" aria-label="Close"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="14"
class="icon icon-close"
viewbox="0 0 16 16"
>
<path d="m1 1 14 14M1 15 15 1" stroke="currentColor" stroke-width="1.5"/>
</svg>
</button>
</header>
<div part="body">
<slot></slot>
</div>
</div>
</div>
</template><template id="popover-default-template">
<div part="base">
<div part="overlay"></div>
<div part="content">
<header part="header">
<slot name="header"></slot>
<button type="button" is="dialog-close-button" part="close-button tap-area" aria-label="Close"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="14"
class="icon icon-close"
viewbox="0 0 16 16"
>
<path d="m1 1 14 14M1 15 15 1" stroke="currentColor" stroke-width="1.5"/>
</svg>
</button>
</header>
<div part="body">
<slot></slot>
</div>
</div>
</div>
</template><template id="header-search-default-template">
<div part="base">
<div part="overlay"></div>
<div part="content">
<slot></slot>
</div>
</div>
</template><template id="video-media-default-template">
<slot></slot>
<svg part="play-button" fill="none" width="48" height="48" viewbox="0 0 48 48">
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 24c0 13.255-10.745 24-24 24S0 37.255 0 24 10.745 0 24 0s24 10.745 24 24Zm-18 0-9-6.6v13.2l9-6.6Z" fill="var(--play-button-background, #ffffff)"/>
</svg>
</template><loading-bar class="loading-bar" aria-hidden="true"></loading-bar>
<a
href="#main"
allow-hash-change
class="skip-to-content sr-only">Skip to content</a>
<span id="header-scroll-tracker" style="position: absolute; width: 1px; height: 1px; top: var(--header-scroll-tracker-offset, 10px); left: 0;"></span><!-- BEGIN sections: header-group -->
<header id="shopify-section-sections--26724539072852__header" class="shopify-section shopify-section-group-header-group shopify-section--header"><style>
:root {
--header-is-sticky: 1;
}
#shopify-section-sections--26724539072852__header {
--header-grid: "primary-nav logo secondary-nav" / minmax(0, 1fr) auto minmax(0, 1fr);
--header-padding-block: 1rem;
--header-transparent-header-text-color: 255 255 255;
--header-separation-border-color: 0 0 0 / 0;
position: relative;
z-index: 4;
}
@media screen and (min-width: 700px) {
#shopify-section-sections--26724539072852__header {
--header-padding-block: 1.6rem;
}
}
@media screen and (min-width: 1000px) {
#shopify-section-sections--26724539072852__header {}
}#shopify-section-sections--26724539072852__header {
position: sticky;
top: 0;
}
.shopify-section--announcement-bar ~ #shopify-section-sections--26724539072852__header {
top: calc(var(--announcement-bar-is-sticky, 0) * var(--announcement-bar-height, 0px));
}#shopify-section-sections--26724539072852__header {
--header-logo-width: 130px;
}
@media screen and (min-width: 700px) {
#shopify-section-sections--26724539072852__header {
--header-logo-width: 150px;
}
}</style>
<height-observer variable="header">
<x-header hide-on-scroll class="header color-scheme color-scheme--scheme-1"><h1 class="header__logo">
<a href="/en-fr"><span class="sr-only">Flybaby</span><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Logo.svg?v=1678185479&width=240" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Logo.svg?v=1678185479&width=240 240w, //flybaby.berlin/cdn/shop/files/Flybaby_Logo.svg?v=1678185479&width=240 240w" width="240" height="24" sizes="150px" class="header__logo-image"><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Logo_Weiss.svg?v=1685908758&width=240" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Logo_Weiss.svg?v=1685908758&width=240 240w, //flybaby.berlin/cdn/shop/files/Flybaby_Logo_Weiss.svg?v=1685908758&width=240 240w" width="240" height="24" sizes="150px" class="header__logo-image header__logo-image--transparent"></a>
</h1>
<nav class="header__primary-nav" aria-label="Primary navigation">
<button type="button" aria-controls="sidebar-menu" class="md:hidden">
<span class="sr-only">Open navigation menu</span><svg
aria-hidden="true"
fill="none"
focusable="false"
width="24"
class="header__nav-icon icon icon-hamburger"
viewbox="0 0 24 24"
>
<path d="M1 19h22M1 12h22M1 5h22" stroke="currentColor" stroke-width="1.5" stroke-linecap="square"/>
</svg></button><ul class="contents unstyled-list md-max:hidden">
<li class="header__primary-nav-item" data-title="Shop"><a href="/en-fr/collections/flybaby-baby-carrier" class="block h6" >Shop</a></li>
<li class="header__primary-nav-item" data-title="About Flybaby"><a href="/en-fr/pages/uber-uns" class="block h6" >About Flybaby</a></li>
<li class="header__primary-nav-item" data-title="Discover"><details is="dropdown-menu-disclosure" class="header__menu-disclosure" follow-summary-link trigger="hover">
<summary data-follow-link="/en-fr" class="h6">Discover</summary><ul class="header__dropdown-menu header__dropdown-menu--restrictable unstyled-list" role="list"><li><a href="/en-fr/pages/faq" class="link-faded-reverse" >Frequently asked questions</a></li><li><a href="/en-fr/pages/how-to" class="link-faded-reverse" >How to</a></li><li><a href="/en-fr/pages/babys-tragen" class="link-faded-reverse" >Carrying babys</a></li><li><a href="/en-fr/pages/sicherheits-und-pflegehinweise" class="link-faded-reverse" >Safety and Care</a></li></ul></details></li></ul></nav><nav class="header__secondary-nav" aria-label="Secondary navigation"><a href="https://flybaby.berlin/customer_authentication/redirect?locale=en®ion_country=FR" class="sm-max:hidden">
<span class="sr-only">Open account page</span><svg
aria-hidden="true"
fill="none"
focusable="false"
width="24"
class="header__nav-icon icon icon-account"
viewbox="0 0 24 24"
>
<path d="M16.125 8.75c-.184 2.478-2.063 4.5-4.125 4.5s-3.944-2.021-4.125-4.5c-.187-2.578 1.64-4.5 4.125-4.5 2.484 0 4.313 1.969 4.125 4.5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.017 20.747C3.783 16.5 7.922 14.25 12 14.25s8.217 2.25 8.984 6.497" stroke="currentColor" stroke-width="1.5" stroke-miterlimit="10"/>
</svg></a><a href="/en-fr/cart" class="relative" aria-controls="cart-drawer">
<span class="sr-only">Open cart</span><svg
aria-hidden="true"
fill="none"
focusable="false"
width="24"
class="header__nav-icon icon icon-cart"
viewbox="0 0 24 24"
><path d="M4.75 8.25A.75.75 0 0 0 4 9L3 19.125c0 1.418 1.207 2.625 2.625 2.625h12.75c1.418 0 2.625-1.149 2.625-2.566L20 9a.75.75 0 0 0-.75-.75H4.75Zm2.75 0v-1.5a4.5 4.5 0 0 1 4.5-4.5v0a4.5 4.5 0 0 1 4.5 4.5v1.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
<cart-dot class="header__cart-dot"></cart-dot>
</a>
</nav><template id="header-sidebar-template">
<div part="base">
<div part="overlay"></div>
<div part="content">
<header part="header">
<button type="button" is="dialog-close-button" part="close-button tap-area" aria-label="Close"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="16"
class="icon icon-close"
viewbox="0 0 16 16"
>
<path d="m1 1 14 14M1 15 15 1" stroke="currentColor" stroke-width="1.5"/>
</svg>
</button>
</header>
<div part="panel-list">
<slot name="main-panel"></slot><slot name="collapsible-panel"></slot></div>
</div>
</div>
</template>
<header-sidebar id="sidebar-menu" class="header-sidebar drawer drawer--sm color-scheme color-scheme--scheme-2" template="header-sidebar-template" open-from="left"><div class="header-sidebar__main-panel" slot="main-panel">
<div class="header-sidebar__scroller">
<ul class="header-sidebar__linklist divide-y unstyled-list" role="list"><li><a href="/en-fr/collections/flybaby-baby-carrier" class="header-sidebar__linklist-button h6">Shop</a></li><li><a href="/en-fr/pages/uber-uns" class="header-sidebar__linklist-button h6">About Flybaby</a></li><li><button type="button" class="header-sidebar__linklist-button h6" aria-controls="header-panel-3" aria-expanded="false">Discover<svg
aria-hidden="true"
focusable="false"
fill="none"
width="12"
class="icon icon-chevron-right icon--direction-aware"
viewbox="0 0 10 10"
>
<path d="m3 9 4-4-4-4" stroke="currentColor" stroke-linecap="square"/>
</svg></button></li></ul>
</div><div class="header-sidebar__footer"><a href="https://flybaby.berlin/customer_authentication/redirect?locale=en®ion_country=FR" class="text-with-icon smallcaps sm:hidden"><svg
aria-hidden="true"
fill="none"
focusable="false"
width="20"
class="icon icon-account"
viewbox="0 0 24 24"
>
<path d="M16.125 8.75c-.184 2.478-2.063 4.5-4.125 4.5s-3.944-2.021-4.125-4.5c-.187-2.578 1.64-4.5 4.125-4.5 2.484 0 4.313 1.969 4.125 4.5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.017 20.747C3.783 16.5 7.922 14.25 12 14.25s8.217 2.25 8.984 6.497" stroke="currentColor" stroke-width="1.5" stroke-miterlimit="10"/>
</svg>Login</a></div></div><header-sidebar-collapsible-panel class="header-sidebar__collapsible-panel" slot="collapsible-panel">
<div class="header-sidebar__scroller"><div id="header-panel-3" class="header-sidebar__sub-panel" hidden>
<button type="button" class="header-sidebar__back-button link-faded is-divided text-with-icon h6 md:hidden" data-action="close-panel"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="12"
class="icon icon-chevron-left icon--direction-aware"
viewbox="0 0 10 10"
>
<path d="M7 1 3 5l4 4" stroke="currentColor" stroke-linecap="square"/>
</svg>Discover</button>
<ul class="header-sidebar__linklist divide-y unstyled-list" role="list"><li><a href="/en-fr/pages/faq" class="header-sidebar__linklist-button h6">Frequently asked questions</a></li><li><a href="/en-fr/pages/how-to" class="header-sidebar__linklist-button h6">How to</a></li><li><a href="/en-fr/pages/babys-tragen" class="header-sidebar__linklist-button h6">Carrying babys</a></li><li><a href="/en-fr/pages/sicherheits-und-pflegehinweise" class="header-sidebar__linklist-button h6">Safety and Care</a></li></ul></div></div>
</header-sidebar-collapsible-panel></header-sidebar></x-header>
</height-observer>
<script>
document.documentElement.style.setProperty('--header-height', `${document.getElementById('shopify-section-sections--26724539072852__header').clientHeight.toFixed(2)}px`);
</script>
</header><aside id="shopify-section-sections--26724539072852__announcement-bar" class="shopify-section shopify-section-group-header-group shopify-section--announcement-bar"></aside>
<!-- END sections: header-group --><!-- BEGIN sections: overlay-group -->
<section id="shopify-section-sections--26724539105620__cart-drawer" class="shopify-section shopify-section-group-overlay-group shopify-section--cart-drawer"><cart-drawer
id="cart-drawer"
class="cart-drawer drawer muun-cart-drawer muun-social-proof-slider muun-usp-slider muun-delivery-summary drawer--center-body color-scheme color-scheme--scheme-1"
initial-focus="false"
handle-editor-events>
<div class="tw-flex tw-flex-row tw-justify-between tw-items-center tw-w-full" slot="header">
<h4 class="h4">Cart</h4></div><p class="h5 text-center">Your cart is empty</p></cart-drawer>
<script>
// Sync checkout price with delivery price
(() => {
const formatCents = (cents) => {
if (typeof formatMoney === 'function') {
return formatMoney(cents).trim();
}
const activeCurrency = window.Shopify?.currency?.active || 'EUR';
const locale = document.documentElement.lang || undefined;
return new Intl.NumberFormat(locale, {
style: 'currency',
currency: activeCurrency
}).format(cents / 100);
};
const updateCheckoutPriceWithDelivery = () => {
const drawer = document.querySelector('cart-drawer.muun-cart-drawer');
if (!drawer) {
return;
}
const checkoutPrice = drawer.querySelector('.cart-drawer__button-price');
const deliveryPrice = drawer.querySelector('.mu-cart-delivery-cost');
if (!checkoutPrice || !deliveryPrice) {
return;
}
const cartTotalCents = Number(checkoutPrice.dataset.cartTotalCents);
const deliveryCents = Number(deliveryPrice.dataset.deliveryCents);
if (!Number.isFinite(cartTotalCents) || !Number.isFinite(deliveryCents)) {
return;
}
checkoutPrice.textContent = formatCents(cartTotalCents + deliveryCents);
};
const scheduleUpdate = () => window.requestAnimationFrame(updateCheckoutPriceWithDelivery);
if (!window.__muCartDeliveryCheckoutSyncBound) {
window.__muCartDeliveryCheckoutSyncBound = true;
document.addEventListener('cart:change', scheduleUpdate);
document.addEventListener('cart:refresh', scheduleUpdate);
document.addEventListener('DOMContentLoaded', scheduleUpdate);
}
scheduleUpdate();
})();
</script>
<style>
cart-drawer:not(.muun-cart-drawer) {
.muun-dependency {
display: none;
}
}
cart-drawer.muun-cart-drawer {
/* Overlaying the REVIEWS.IO floating widget */
z-index: 100000;
.muun-exclusion {
display: none;
}
&::part(body) {
padding-block-end: 42px;
}
&::part(content) {
max-width: 534px;
background-color: #FBF9F7;
}
&::part(footer) {
background-color: #F4EFE9 !important;
padding-block-start: 0px !important;
border-top: none !important;
padding-inline-start: 0px;
padding-inline-end: 0px;
padding-block-end: 24px !important;
}
.cart-drawer__footer {
gap: 0px !important;
}
.cart-drawer__checkout-stack {
padding-inline: 24px;
}
.cart-drawer__footer .button-group {
margin-top: 16px;
}
&::part(header) {
margin-inline: 24px;
padding-inline: 12px;
padding-block-end: 18px;
padding-block-start: 32px;
@media (max-width: 768px) {
flex-direction: row-reverse;
border-bottom: none;
padding-inline-end: 0px;
}
}
.cart-drawer__items {
padding-block: 0px;
gap: 0px;
}
.cart-drawer__items .line-item-stack--muun-divider {
border-top: 1px solid #E5DFD7;
}
.cart-drawer__items .line-item {
align-items: flex-start;
column-gap: 9px;
padding-block: 12px;
}
.cart-drawer__items .line-item__media {
width: 91px;
height: 123px;
object-fit: cover;
}
.cart-drawer__items .line-item-info {
padding-block-start: 10px;
}
.cart-drawer__items .line-item-info,
.cart-drawer__items .line-item__details {
width: 100%;
}
.cart-drawer__items .line-item__details {
position: relative;
}
.cart-drawer__items .line-item__top-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
width: 100%;
padding-right: 0px;
}
.cart-drawer__items .line-item__title-group {
min-width: 0;
gap: 8px;
}
.cart-drawer__items .line-item__title-group a,
.cart-drawer__items .line-item__title-group p {
font-size: 14px;
font-weight: 500;
line-height: 1.4;
color: #131313;
}
.cart-drawer__items .line-item__remove-icon {
color: #131313;
line-height: 1;
flex-shrink: 0;
text-decoration: none;
}
.cart-drawer__items .line-item__remove-icon--muun {
position: absolute;
top: 3px;
right: 11px;
}
.cart-drawer__items .line-item__remove-icon svg {
width: 14px;
height: 14px;
opacity: 0.6;
&:hover {
opacity: 1;
}
}
.cart-drawer__items .line-item__color {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 14px;
line-height: 1.4;
color: #131313;
}
.cart-drawer__items .line-item__color-swatch {
width: 17px;
height: 17px;
border-radius: 9999px;
background-color: var(--line-item-swatch-color, #2b2025);
border: 1px solid rgba(19, 19, 19, 0.12);
flex-shrink: 0;
}
.cart-drawer__items .line-item__quantity-row {
width: 100%;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-top: 8px;
}
.cart-drawer__items .line-item__quantity-row .quantity-selector--sm {
--quantity-selector-height: 1rem;
--quantity-selector-input-width: 1.3rem;
column-gap: 12px;
grid-template-columns: auto auto auto;
border: none;
}
.cart-drawer__items .line-item__quantity-row .quantity-selector__button {
width: 16px;
height: 16px;
color: #131313;
}
.cart-drawer__items .line-item__quantity-row .quantity-selector__button svg {
width: 12px;
path {
stroke-width: 1 !important;
}
}
.cart-drawer__items .line-item__quantity-row .quantity-selector__input {
font-size: 14px;
line-height: 1;
color: #131313;
text-align: center;
padding: 0;
}
.cart-drawer__items .line-item__price-muted .price-list {
justify-content: flex-end;
text-align: right;
}
.cart-drawer__items .line-item__price-muted .price {
font-size: 14px;
font-weight: 500;
line-height: 1.4;
color: #131313;
}
.cart-drawer__button-price:before {
width: 8px;
height: 2px;
border-radius: 0px;
margin-inline-end: 8px;
}
.button-group > * {
gap: 8px;
}
/* Force text color on sale price on muun mode */
sale-price {
color: var(--text-color);
}
@media screen and (min-width: 768px) {
.cart-drawer__checkout-stack {
padding-inline: 40px;
}
}
@media screen and (max-width: 768px) {
&::part(header) {
margin-inline: 24px;
padding-inline: 0px;
}
&::part(footer) {
padding-inline-start: 0px;
padding-inline-end: 0px;
}
}
}
</style>
</section>
<!-- END sections: overlay-group --><main id="main" class="anchor">
<section id="shopify-section-template--26724538253652__slideshow" class="shopify-section shopify-section--slideshow"><slideshow-carousel id="carousel-template--26724538253652__slideshow" class="slideshow" allow-swipe allow-transparent-header cell-selector=".slideshow__slide" role="region" style="--background: 0 0 0 ; background-color: rgb(var(--background));--border-color: var(--text-color) / 0.15;"><div class="slideshow__slide is-selected" media-type="video" reveal-on-scroll="true" role="group" ><div class="content-over-media content-over-media--lg" style="--content-over-media-content-max-width: 500px; --content-over-media-gradient-overlay: linear-gradient(180deg, rgba(54, 54, 54, 0.2), rgba(4, 4, 4, 0.65) 100%)"><video-media
class="hidden sm:block"
type="video"
autoplay
style="--aspect-ratio: 1.775; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/41bcc1b0f09b4f85b6dbd7e51a50a351.thumbnail.0000000000_400x.jpg?v=1758891385"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/41bcc1b0f09b4f85b6dbd7e51a50a351/41bcc1b0f09b4f85b6dbd7e51a50a351.HD-1080p-7.2Mbps-58325096.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/41bcc1b0f09b4f85b6dbd7e51a50a351.thumbnail.0000000000_400x.jpg?v=1758891385"></video></video-media><video-media
class="sm:hidden"
type="video"
autoplay
style="--aspect-ratio: 0.8; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/808d8206875b429c8a81e2f70aa14722.thumbnail.0000000000_400x.jpg?v=1758891525"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/808d8206875b429c8a81e2f70aa14722/808d8206875b429c8a81e2f70aa14722.HD-1080p-7.2Mbps-58325228.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/808d8206875b429c8a81e2f70aa14722.thumbnail.0000000000_400x.jpg?v=1758891525"></video></video-media>
<div class="slideshow__slide-content place-self-end-start text-start sm:place-self-end-start sm:text-start" style="--text-color: 255 255 255; color: rgb(var(--text-color));--border-color: var(--text-color) / 0.15;">
<div class="prose"><p class="h1">It doesn't get any easier. The baby carrier made of 3D knit.</p><div class="button-group justify-start sm:justify-start">
<a class="button">SHOP</a></div></div>
</div>
</div></div></slideshow-carousel>
</section><section id="shopify-section-template--26724538253652__rich_text_zAaki6" class="shopify-section shopify-section--rich-text"><div class="color-scheme color-scheme--scheme-d1f41f03-2a61-4788-bf21-ce4886af7bd0 color-scheme--bg-692764c91eeab431eea2fd6115798863 section-spacing">
<div class="container container--xs">
<div class="prose text-start"><p class="h3" >Our baby carrier provides active parents with babies maximum freedom with minimal weight. Breathable, snug, and without any pressure points from seams, the Flybaby baby carrier offers closeness and security for your baby from birth.</p></div>
</div>
</div>
</section><section id="shopify-section-template--26724538253652__scrolling_content_qeDAbF" class="shopify-section shopify-section--scrolling-content"><style>
#shopify-section-template--26724538253652__scrolling_content_qeDAbF {
--section-vertical-spacing: clamp(18px, calc(18px + (14 - 18) * ((100vw - 375px) / (1400 - 375))), 14px);
--scrolling-content-content-gap: clamp(25px, calc(25px + (100 - 25) * ((100vw - 375px) / (1400 - 375))), 100px);
font-size: clamp(18px, calc(18px + (18 - 18) * ((100vw - 375px) / (1400 - 375))), 18px);
}
</style><div class="section-spacing color-scheme color-scheme--bg-54922f2e920ba8346f6dc0fba343d673 bordered-section" style="--border-color: var(--text-color) / 0.15;">
<marquee-text speed="0.1" direction="left" pause-on-hover class="scrolling-content">
<div class="scrolling-content__item"><p class="scrolling-content__text heading" >30-day return policy</p></div>
</marquee-text>
</div></section><div id="shopify-section-template--26724538253652__17605106063426e4ab" class="shopify-section">
</div><section id="shopify-section-template--26724538253652__mu_home_assortment_hV9KPN" class="shopify-section">
<style data-shopify>
#shopify-section-template--26724538253652__mu_home_assortment_hV9KPN .mu-home-assortment {
--mu-home-assortment-bg: #f7f3f2;
--mu-home-assortment-text: #1c1c1c;
}
</style>
<section class="mu-home-assortment" id="mu-home-assortment-template--26724538253652__mu_home_assortment_hV9KPN"><div class="mu-home-assortment__header"><p class="mu-home-assortment__eyebrow">Flybaby Collection</p><h2 class="mu-home-assortment__heading fig-display-sm desktop:fig-display-sm">Accompanies every stage.</h2></div><div class="mu-home-assortment__track" data-home-assortment-track><article class="mu-home-assortment__card" ><a href="/en-fr/products/flybaby-toddler-carrier" class="mu-home-assortment__card-link" data-instant><img src="//flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_1_56011290313044.jpg?v=1780931978&width=1200" alt="Toddler Carrier" srcset="//flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_1_56011290313044.jpg?v=1780931978&width=256 256w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_1_56011290313044.jpg?v=1780931978&width=420 420w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_1_56011290313044.jpg?v=1780931978&width=640 640w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_1_56011290313044.jpg?v=1780931978&width=840 840w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_1_56011290313044.jpg?v=1780931978&width=1200 1200w" width="1200" height="1500" loading="lazy" class="mu-home-assortment__img" sizes="(max-width: 999px) 256px, 420px">
<div class="mu-home-assortment__overlay" aria-hidden="true"></div><div class="mu-home-assortment__badge">
<span class="mu-home-assortment__badge-label fig-text-sm">New</span>
</div><div class="mu-home-assortment__footer"><div class="mu-home-assortment__meta"><p class="mu-home-assortment__title fig-text-lg desktop:fig-display-xs">Toddler Carrier</p><p class="mu-home-assortment__price fig-text-sm">From €249,95</p></div><span class="mu-home-assortment__cta fig-button-sm desktop:fig-button-md">Shop now</span></div></a></article>
<article class="mu-home-assortment__card" ><a href="/en-fr/products/flybaby-carrier" class="mu-home-assortment__card-link" data-instant><img src="//flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Terra-Frontansicht-variant_50470894567764.jpg?v=1756915091&width=1200" alt="#farbe_terra#color_terra#couleur_terra#colore_terra#kleur_terra" srcset="//flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Terra-Frontansicht-variant_50470894567764.jpg?v=1756915091&width=256 256w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Terra-Frontansicht-variant_50470894567764.jpg?v=1756915091&width=420 420w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Terra-Frontansicht-variant_50470894567764.jpg?v=1756915091&width=640 640w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Terra-Frontansicht-variant_50470894567764.jpg?v=1756915091&width=840 840w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Terra-Frontansicht-variant_50470894567764.jpg?v=1756915091&width=1200 1200w" width="1200" height="1600" loading="lazy" class="mu-home-assortment__img" sizes="(max-width: 999px) 256px, 420px">
<div class="mu-home-assortment__overlay" aria-hidden="true"></div><div class="mu-home-assortment__footer"><div class="mu-home-assortment__meta"><p class="mu-home-assortment__title fig-text-lg desktop:fig-display-xs">Baby Carrier</p><p class="mu-home-assortment__price fig-text-sm">From €249,95</p></div><span class="mu-home-assortment__cta fig-button-sm desktop:fig-button-md">Buy Now</span></div></a></article>
<article class="mu-home-assortment__card" ><a href="/en-fr/products/flybaby-bag-1" class="mu-home-assortment__card-link" data-instant><img src="//flybaby.berlin/cdn/shop/files/Flybaby-Bag-Creme-variant-51354243596628.jpg?v=1758893922&width=1200" alt="#farbe_creme#color_cream#couleur_creme" srcset="//flybaby.berlin/cdn/shop/files/Flybaby-Bag-Creme-variant-51354243596628.jpg?v=1758893922&width=256 256w, //flybaby.berlin/cdn/shop/files/Flybaby-Bag-Creme-variant-51354243596628.jpg?v=1758893922&width=420 420w, //flybaby.berlin/cdn/shop/files/Flybaby-Bag-Creme-variant-51354243596628.jpg?v=1758893922&width=640 640w, //flybaby.berlin/cdn/shop/files/Flybaby-Bag-Creme-variant-51354243596628.jpg?v=1758893922&width=840 840w, //flybaby.berlin/cdn/shop/files/Flybaby-Bag-Creme-variant-51354243596628.jpg?v=1758893922&width=1200 1200w" width="1200" height="1600" loading="lazy" class="mu-home-assortment__img" sizes="(max-width: 999px) 256px, 420px">
<div class="mu-home-assortment__overlay" aria-hidden="true"></div><div class="mu-home-assortment__footer"><div class="mu-home-assortment__meta"><p class="mu-home-assortment__title fig-text-lg desktop:fig-display-xs">Bag</p><p class="mu-home-assortment__price fig-text-sm">From €29,95</p></div><span class="mu-home-assortment__cta fig-button-sm desktop:fig-button-md">Buy Now</span></div></a></article>
<article class="mu-home-assortment__card" ><a href="/en-fr/products/flybaby-neck-warmer" class="mu-home-assortment__card-link" data-instant><img src="//flybaby.berlin/cdn/shop/files/Sophie_neckwarmer_beige_2_53432896553300.jpg?v=1769079635&width=1200" alt="Flybaby Neck Warmer" srcset="//flybaby.berlin/cdn/shop/files/Sophie_neckwarmer_beige_2_53432896553300.jpg?v=1769079635&width=256 256w, //flybaby.berlin/cdn/shop/files/Sophie_neckwarmer_beige_2_53432896553300.jpg?v=1769079635&width=420 420w, //flybaby.berlin/cdn/shop/files/Sophie_neckwarmer_beige_2_53432896553300.jpg?v=1769079635&width=640 640w, //flybaby.berlin/cdn/shop/files/Sophie_neckwarmer_beige_2_53432896553300.jpg?v=1769079635&width=840 840w, //flybaby.berlin/cdn/shop/files/Sophie_neckwarmer_beige_2_53432896553300.jpg?v=1769079635&width=1200 1200w" width="1200" height="1600" loading="lazy" class="mu-home-assortment__img" sizes="(max-width: 999px) 256px, 420px">
<div class="mu-home-assortment__overlay" aria-hidden="true"></div><div class="mu-home-assortment__footer"><div class="mu-home-assortment__meta"><p class="mu-home-assortment__title fig-text-lg desktop:fig-display-xs">Neck Warmer</p><p class="mu-home-assortment__price fig-text-sm">From €49,95</p></div><span class="mu-home-assortment__cta fig-button-sm desktop:fig-button-md">Shop now</span></div></a></article>
<article class="mu-home-assortment__card" ><a href="/en-fr/products/flybaby-weather-cover" class="mu-home-assortment__card-link" data-instant><img src="//flybaby.berlin/cdn/shop/files/Sophie_cover_beige_6_53432902746452.jpg?v=1769141687&width=1200" alt="Flybaby Weather Cover" srcset="//flybaby.berlin/cdn/shop/files/Sophie_cover_beige_6_53432902746452.jpg?v=1769141687&width=256 256w, //flybaby.berlin/cdn/shop/files/Sophie_cover_beige_6_53432902746452.jpg?v=1769141687&width=420 420w, //flybaby.berlin/cdn/shop/files/Sophie_cover_beige_6_53432902746452.jpg?v=1769141687&width=640 640w, //flybaby.berlin/cdn/shop/files/Sophie_cover_beige_6_53432902746452.jpg?v=1769141687&width=840 840w, //flybaby.berlin/cdn/shop/files/Sophie_cover_beige_6_53432902746452.jpg?v=1769141687&width=1200 1200w" width="1200" height="1600" loading="lazy" class="mu-home-assortment__img" sizes="(max-width: 999px) 256px, 420px">
<div class="mu-home-assortment__overlay" aria-hidden="true"></div><div class="mu-home-assortment__footer"><div class="mu-home-assortment__meta"><p class="mu-home-assortment__title fig-text-lg desktop:fig-display-xs">Weather Cover</p><p class="mu-home-assortment__price fig-text-sm">From €89,95</p></div><span class="mu-home-assortment__cta fig-button-sm desktop:fig-button-md">Shop now</span></div></a></article>
</div>
<div class="mu-home-assortment__controls">
<span class="mu-home-assortment__progress" aria-hidden="true">
<span class="mu-home-assortment__progress-thumb" data-home-assortment-thumb></span>
</span>
<div class="mu-home-assortment__nav">
<button type="button" class="mu-home-assortment__arrow" data-home-assortment-prev aria-label="Vorherige Karte"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="10"
class="icon icon-chevron-left"
viewbox="0 0 10 10"
>
<path d="M7 1 3 5l4 4" stroke="currentColor" stroke-linecap="square"/>
</svg></button>
<button type="button" class="mu-home-assortment__arrow" data-home-assortment-next aria-label="Nächste Karte"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="10"
class="icon icon-chevron-right"
viewbox="0 0 10 10"
>
<path d="m3 9 4-4-4-4" stroke="currentColor" stroke-linecap="square"/>
</svg></button>
</div>
</div></section>
<script>
(function () {
var section = document.getElementById('mu-home-assortment-template--26724538253652__mu_home_assortment_hV9KPN');
if (!section) return;
var track = section.querySelector('[data-home-assortment-track]');
if (!track) return;
var thumb = section.querySelector('[data-home-assortment-thumb]');
var prev = section.querySelector('[data-home-assortment-prev]');
var next = section.querySelector('[data-home-assortment-next]');
var rafId = 0;
// Geometry cached on load / resize — never read inside the scroll handler.
var maxScroll = 0;
var thumbTravel = 0;
function stepWidth() {
var card = track.querySelector('.mu-home-assortment__card');
if (!card) return track.clientWidth * 0.8;
var styles = getComputedStyle(track);
var gap = parseFloat(styles.columnGap || styles.gap) || 0;
return card.getBoundingClientRect().width + gap;
}
function measure() {
var scrollW = track.scrollWidth;
var clientW = track.clientWidth;
maxScroll = Math.max(0, scrollW - clientW);
var visible = scrollW > 0 ? Math.min(1, clientW / scrollW) : 1;
if (thumb) {
thumb.style.width = (visible * 100) + '%';
thumbTravel = visible > 0 ? (100 / visible - 100) : 0;
}
section.classList.toggle('mu-home-assortment--static', maxScroll <= 1);
}
function render() {
rafId = 0;
var scrollable = maxScroll > 1;
if (thumb) {
var ratio = scrollable ? track.scrollLeft / maxScroll : 0;
ratio = ratio < 0 ? 0 : ratio > 1 ? 1 : ratio;
thumb.style.transform = 'translateX(' + (ratio * thumbTravel) + '%)';
}
if (prev) prev.disabled = track.scrollLeft <= 1;
if (next) next.disabled = track.scrollLeft >= maxScroll - 1;
}
function requestRender() {
if (!rafId) rafId = requestAnimationFrame(render);
}
function remeasure() {
measure();
requestRender();
}
if (prev) prev.addEventListener('click', function () { track.scrollBy({ left: -stepWidth(), behavior: 'smooth' }); });
if (next) next.addEventListener('click', function () { track.scrollBy({ left: stepWidth(), behavior: 'smooth' }); });
track.addEventListener('scroll', requestRender, { passive: true });
window.addEventListener('resize', remeasure);
if (typeof ResizeObserver === 'function') {
new ResizeObserver(remeasure).observe(track);
}
remeasure();
})();
</script>
</section><section id="shopify-section-template--26724538253652__mu_home_carrier_MYDg8x" class="shopify-section">
<style data-shopify>
#shopify-section-template--26724538253652__mu_home_carrier_MYDg8x .mu-home-carrier {
--mu-hc-bg: #1C1C1C;
--mu-hc-text: #FFFFFF;
}
</style>
<section
class="mu-home-carrier"
id="mu-home-carrier-template--26724538253652__mu_home_carrier_MYDg8x"
>
<div class="mu-home-carrier__inner"><div class="mu-home-carrier__header"><div class="mu-home-carrier__badge-row" role="text"><span class="mu-home-carrier__badge-new fig-text-xs">New</span><span class="mu-home-carrier__badge-text fig-text-sm">Toddler Carrier</span></div><h2 class="mu-home-carrier__heading fig-display-sm desktop:fig-desktop-display-sm">For the big little years.</h2></div><div class="mu-home-carrier__hero" ><img src="//flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=1800" srcset="//flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=480 480w, //flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=720 720w, //flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=960 960w, //flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=1200 1200w, //flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=1600 1600w, //flybaby.berlin/cdn/shop/files/Toddler_Flybaby_01_h.jpg?v=1780930212&width=1800 1800w" width="1800" height="1349" loading="lazy" class="mu-home-carrier__hero-img" sizes="(max-width: 999px) 100vw, calc(100vw - 96px)">
<div class="mu-home-carrier__hero-overlay" aria-hidden="true"></div>
<div class="mu-home-carrier__hero-content"><div class="mu-home-carrier__hero-pill">
<span class="fig-text-xs">From approx. 9 month/7-20kg</span>
</div><h3 class="mu-home-carrier__hero-heading fig-display-sm desktop:fig-display-md">Toddler Carrier</h3><p class="mu-home-carrier__hero-subtext fig-text-sm">For walkers, wanderers and explorers</p><div class="mu-home-carrier__hero-ctas"><a
href="/en-fr/products/flybaby-toddler-carrier"
class="mu-home-carrier__cta-primary fig-cta-md fig-button-sm"
data-instant
>Shop now</a><a
href="/en-fr/pages/flybaby-toddler-carrier"
class="mu-home-carrier__cta-secondary fig-button-md"
data-instant
>DISCOVER MORE</a></div></div>
</div>
<div
class="mu-home-carrier__feature mu-home-carrier__feature--light"
>
<div class="mu-home-carrier__feature-text"><p class="mu-home-carrier__feature-eyebrow">For the next chapter</p><h3 class="mu-home-carrier__feature-heading fig-display-xs desktop:fig-desktop-display-sm">More curious.
<br />
More on the go.</h3><p class="mu-home-carrier__feature-body fig-text-sm">This baby carrier is perfect for everyday life, travel, and adventures big and small.</p></div>
<div class="mu-home-carrier__feature-media"><img src="//flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_12.jpg?v=1780919786&width=1200" srcset="//flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_12.jpg?v=1780919786&width=400 400w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_12.jpg?v=1780919786&width=600 600w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_12.jpg?v=1780919786&width=800 800w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_12.jpg?v=1780919786&width=1000 1000w, //flybaby.berlin/cdn/shop/files/Toddler_Carrier_Creme_12.jpg?v=1780919786&width=1200 1200w" width="1200" height="1500" loading="lazy" class="mu-home-carrier__feature-img" sizes="(max-width: 999px) 100vw, 55vw">
</div>
</div>
</div>
</section>
</section><section id="shopify-section-template--26724538253652__slideshow_p6njMm" class="shopify-section shopify-section--slideshow"><slideshow-carousel id="carousel-template--26724538253652__slideshow_p6njMm" class="slideshow" allow-swipe allow-transparent-header cell-selector=".slideshow__slide" role="region" style="--background: 0 0 0 ; background-color: rgb(var(--background));--border-color: var(--text-color) / 0.15;"><a href="/en-fr/collections/winter-accessories" class="slideshow__slide is-selected" media-type="video" reveal-on-scroll="true" role="group" ><div class="content-over-media content-over-media--lg" style="--content-over-media-content-max-width: 500px; --content-over-media-gradient-overlay: linear-gradient(180deg, rgba(54, 54, 54, 0.2), rgba(4, 4, 4, 0.65) 100%)"><video-media
type="video"
autoplay
style="--aspect-ratio: 1.775; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/381ef49a2b5e4bb389c1155e9e92c304.thumbnail.0000000000_400x.jpg?v=1780584154"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/381ef49a2b5e4bb389c1155e9e92c304/381ef49a2b5e4bb389c1155e9e92c304.HD-1080p-7.2Mbps-85707165.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/381ef49a2b5e4bb389c1155e9e92c304.thumbnail.0000000000_400x.jpg?v=1780584154"></video></video-media>
<div class="slideshow__slide-content place-self-center text-center sm:place-self-end-center sm:text-center" style="--text-color: 255 255 255; color: rgb(var(--text-color));--border-color: var(--text-color) / 0.15;">
<div class="prose"></div>
</div>
</div></a></slideshow-carousel>
</section><section id="shopify-section-template--26724538253652__mu_discovery_comparison_q9GyQU" class="shopify-section">
<style data-shopify>
#shopify-section-template--26724538253652__mu_discovery_comparison_q9GyQU .mu-cmp {
--mu-cmp-bg: #ffffff;
--mu-cmp-text: #1c1c1c;
}
</style>
<section class="mu-cmp" id="mu-cmp-template--26724538253652__mu_discovery_comparison_q9GyQU"><div class="mu-cmp__header"><p class="mu-cmp__eyebrow">Compare</p><h2 class="mu-cmp__heading fig-display-sm desktop:fig-desktop-display-sm">One carrier. One phase.</h2><p class="mu-cmp__subtext fig-text-sm">From the very first day to the third year of life. Choose the carrier that fits your child — or combine both.</p></div><div class="mu-cmp__slider" id="mu-cmp-slider-template--26724538253652__mu_discovery_comparison_q9GyQU">
<div class="mu-cmp__grid"><article class="mu-cmp__card" >
<div class="mu-cmp__media"><img src="//flybaby.berlin/cdn/shop/files/trage_cbb2cb8f-feff-4199-aa99-9cfee10b5f81.jpg?v=1780490142&width=1000" alt="Baby carrier" srcset="//flybaby.berlin/cdn/shop/files/trage_cbb2cb8f-feff-4199-aa99-9cfee10b5f81.jpg?v=1780490142&width=380 380w, //flybaby.berlin/cdn/shop/files/trage_cbb2cb8f-feff-4199-aa99-9cfee10b5f81.jpg?v=1780490142&width=480 480w, //flybaby.berlin/cdn/shop/files/trage_cbb2cb8f-feff-4199-aa99-9cfee10b5f81.jpg?v=1780490142&width=660 660w, //flybaby.berlin/cdn/shop/files/trage_cbb2cb8f-feff-4199-aa99-9cfee10b5f81.jpg?v=1780490142&width=1000 1000w" width="1000" height="529" loading="lazy" class="mu-cmp__img" sizes="(min-width: 1000px) 660px, 100vw">
</div>
<div class="mu-cmp__content">
<div class="mu-cmp__intro"><div class="mu-cmp__title-block"><h3 class="mu-cmp__title fig-text-lg">Baby carrier</h3><p class="mu-cmp__description fig-text-sm">Made for closeness from birth — a carrier you'll want to wear every day. Seamless, ultra-light and like a second skin. </p></div><ul class="mu-cmp__features"><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/heart_1.png?v=1780488652&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">For newborns up to approximately 15 kg</span>
</li><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/arrows-up-down_2.png?v=1780488652&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">Wear it on your front or back</span>
</li><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/ph_baby-light.png?v=1781167183&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">For everyday life with a baby</span>
</li><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/iconamoon_clock-light.png?v=1780488652&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">Long, intensive wear periods</span>
</li></ul></div><div class="mu-cmp__stats"><div class="mu-cmp__stat">
<div class="mu-cmp__stat-value fig-text-lg">3.2–15 kg</div>
<div class="mu-cmp__stat-label fig-text-sm">Carrying weight</div>
</div><span class="mu-cmp__stat-divider" aria-hidden="true"></span><div class="mu-cmp__stat">
<div class="mu-cmp__stat-value fig-text-lg">From birth</div>
<div class="mu-cmp__stat-label fig-text-sm">Age recommendation</div>
</div></div><a class="mu-cmp__button fig-cta-md fig-button-md" href="/en-fr/products/flybaby-carrier">
View details
</a></div>
</article><article class="mu-cmp__card" >
<div class="mu-cmp__media"><img src="//flybaby.berlin/cdn/shop/files/compare-toddler-carrier-image_e52361eb-61aa-450c-a361-9f7994245138.jpg?v=1781014188&width=1000" alt="Toddler Carrier" srcset="//flybaby.berlin/cdn/shop/files/compare-toddler-carrier-image_e52361eb-61aa-450c-a361-9f7994245138.jpg?v=1781014188&width=380 380w, //flybaby.berlin/cdn/shop/files/compare-toddler-carrier-image_e52361eb-61aa-450c-a361-9f7994245138.jpg?v=1781014188&width=480 480w, //flybaby.berlin/cdn/shop/files/compare-toddler-carrier-image_e52361eb-61aa-450c-a361-9f7994245138.jpg?v=1781014188&width=660 660w, //flybaby.berlin/cdn/shop/files/compare-toddler-carrier-image_e52361eb-61aa-450c-a361-9f7994245138.jpg?v=1781014188&width=1000 1000w" width="1000" height="529" loading="lazy" class="mu-cmp__img" sizes="(min-width: 1000px) 660px, 100vw">
</div>
<div class="mu-cmp__content">
<div class="mu-cmp__intro"><div class="mu-cmp__title-block"><h3 class="mu-cmp__title fig-text-lg">Toddler Carrier</h3><p class="mu-cmp__description fig-text-sm">Built for the on-the-go years — effortless to carry, effortless to wear. Lightweight, liberating and always hands-free.</p></div><ul class="mu-cmp__features"><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/ph_baby-light.png?v=1781167183&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">For toddlers from 9 months</span>
</li><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/arrows-up-down_2.png?v=1780488652&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">Optimised for back carry</span>
</li><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/map_1.png?v=1780488652&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">For travel, trips & outings</span>
</li><li class="mu-cmp__feature">
<span class="mu-cmp__feature-icon"><img
class="mu-cmp__feature-icon-img"
src="//flybaby.berlin/cdn/shop/files/bolt_1.png?v=1780488652&width=42"
alt=""
width="20"
height="20"
loading="lazy"
></span>
<span class="mu-cmp__feature-label fig-text-sm">Spontaneous & quick — the last stretch</span>
</li></ul></div><div class="mu-cmp__stats"><div class="mu-cmp__stat">
<div class="mu-cmp__stat-value fig-text-lg">7–20 kg</div>
<div class="mu-cmp__stat-label fig-text-sm">Carrying weight</div>
</div><span class="mu-cmp__stat-divider" aria-hidden="true"></span><div class="mu-cmp__stat">
<div class="mu-cmp__stat-value fig-text-lg">From approx. 9 months</div>
<div class="mu-cmp__stat-label fig-text-sm">Age recommendation</div>
</div></div><a class="mu-cmp__button fig-cta-md fig-button-md" href="/en-fr/products/flybaby-toddler-carrier">
View details
</a></div>
</article></div>
</div>
<div class="mu-cmp__controls">
<span class="mu-cmp__divider-line" aria-hidden="true"></span>
<div class="mu-cmp__nav">
<button type="button" class="mu-cmp__nav-btn" data-mu-cmp-prev aria-label="Previous"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="10"
class="icon icon-chevron-left"
viewbox="0 0 10 10"
>
<path d="M7 1 3 5l4 4" stroke="currentColor" stroke-linecap="square"/>
</svg></button>
<button type="button" class="mu-cmp__nav-btn" data-mu-cmp-next aria-label="Next"><svg
aria-hidden="true"
focusable="false"
fill="none"
width="10"
class="icon icon-chevron-right"
viewbox="0 0 10 10"
>
<path d="m3 9 4-4-4-4" stroke="currentColor" stroke-linecap="square"/>
</svg></button>
</div>
</div></section><script>
(function () {
var slider = document.getElementById('mu-cmp-slider-template--26724538253652__mu_discovery_comparison_q9GyQU');
if (!slider) return;
var section = slider.closest('section.mu-cmp');
if (!section) return;
var prev = section.querySelector('[data-mu-cmp-prev]');
var next = section.querySelector('[data-mu-cmp-next]');
var scrolling = false;
var scrollTimer;
function cards() {
return slider.querySelectorAll('.mu-cmp__card');
}
function maxScroll() {
return Math.max(0, slider.scrollWidth - slider.clientWidth);
}
function scrollPadding() {
var styles = getComputedStyle(slider);
return {
start: parseFloat(styles.scrollPaddingInlineStart || styles.scrollPaddingLeft || '0') || 0,
end: parseFloat(styles.scrollPaddingInlineEnd || styles.scrollPaddingRight || '0') || 0
};
}
function targetLeft(index) {
var items = cards();
var card = items[index];
if (!card) return 0;
var max = maxScroll();
var pad = scrollPadding();
var left = index === items.length - 1
? card.offsetLeft + card.offsetWidth - slider.clientWidth + pad.end
: card.offsetLeft - pad.start;
return Math.max(0, Math.min(left, max));
}
function activeIndex() {
var items = cards();
if (!items.length) return 0;
var max = maxScroll();
if (slider.scrollLeft <= 1) return 0;
if (slider.scrollLeft >= max - 1) return items.length - 1;
for (var i = items.length - 1; i >= 0; i--) {
if (slider.scrollLeft >= targetLeft(i) - 2) return i;
}
return 0;
}
function update() {
var items = cards();
var index = activeIndex();
if (prev) prev.disabled = scrolling || index <= 0;
if (next) next.disabled = scrolling || index >= items.length - 1;
}
function done() {
if (!scrolling) return;
clearTimeout(scrollTimer);
scrolling = false;
update();
}
function go(direction) {
if (scrolling) return;
var items = cards();
var index = activeIndex() + direction;
if (index < 0 || index >= items.length) return;
scrolling = true;
update();
slider.scrollTo({ left: targetLeft(index), behavior: 'smooth' });
slider.addEventListener('scrollend', done, { once: true });
scrollTimer = setTimeout(done, 600);
}
if (prev) {
prev.addEventListener('click', function () {
go(-1);
});
}
if (next) {
next.addEventListener('click', function () {
go(1);
});
}
slider.addEventListener('scroll', update, { passive: true });
update();
})();
</script>
</section><section id="shopify-section-template--26724538253652__mu_home_carrier_YM7Uib" class="shopify-section">
<style data-shopify>
#shopify-section-template--26724538253652__mu_home_carrier_YM7Uib .mu-home-carrier {
--mu-hc-bg: #f7f3f2;
--mu-hc-text: #1C1C1C;
}
</style>
<section
class="mu-home-carrier mu-home-carrier--light"
id="mu-home-carrier-template--26724538253652__mu_home_carrier_YM7Uib"
>
<div class="mu-home-carrier__inner"><div class="mu-home-carrier__header"><div class="mu-home-carrier__badge-row" role="text"><span class="mu-home-carrier__badge-text fig-text-sm">Baby Carrier</span></div><h2 class="mu-home-carrier__heading fig-display-sm desktop:fig-desktop-display-sm">For a closer connection from day one.</h2></div><div class="mu-home-carrier__hero" ><img src="//flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=1800" srcset="//flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=480 480w, //flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=720 720w, //flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=960 960w, //flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=1200 1200w, //flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=1600 1600w, //flybaby.berlin/cdn/shop/files/DiscoveryHeader.png?v=1780562118&width=1800 1800w" width="1800" height="1029" loading="lazy" class="mu-home-carrier__hero-img" sizes="(max-width: 999px) 100vw, calc(100vw - 96px)">
<div class="mu-home-carrier__hero-overlay" aria-hidden="true"></div>
<div class="mu-home-carrier__hero-content"><div class="mu-home-carrier__hero-pill">
<span class="fig-text-xs">From birth to 15kg</span>
</div><h3 class="mu-home-carrier__hero-heading fig-display-sm desktop:fig-display-md">Baby Carrier</h3><p class="mu-home-carrier__hero-subtext fig-text-sm">For closeness without compromise.</p><div class="mu-home-carrier__hero-ctas"><a
href="/en-fr/products/flybaby-carrier"
class="mu-home-carrier__cta-primary fig-cta-md fig-button-sm"
data-instant
>Shop now</a><a
href="/en-fr/pages/flybaby-carrier"
class="mu-home-carrier__cta-secondary fig-button-md"
data-instant
>DISCOVER MORE</a></div></div>
</div>
<div
class="mu-home-carrier__feature"
>
<div class="mu-home-carrier__feature-text"><p class="mu-home-carrier__feature-eyebrow">For the first chapter</p><h3 class="mu-home-carrier__feature-heading fig-display-xs desktop:fig-desktop-display-sm">More Closeness.
<br />
More Freedom.</h3><p class="mu-home-carrier__feature-body fig-text-sm">Flybaby is by your side throughout the first year with your baby — and in all the moments when closeness matters most.</p></div>
<div class="mu-home-carrier__feature-media"><img src="//flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Schwarz-Von-Geburt-an-variant_50470894600532_32a1740c-7afd-4113-b7cd-cdf4cfafd1ab.jpg?v=1780920256&width=1200" srcset="//flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Schwarz-Von-Geburt-an-variant_50470894600532_32a1740c-7afd-4113-b7cd-cdf4cfafd1ab.jpg?v=1780920256&width=400 400w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Schwarz-Von-Geburt-an-variant_50470894600532_32a1740c-7afd-4113-b7cd-cdf4cfafd1ab.jpg?v=1780920256&width=600 600w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Schwarz-Von-Geburt-an-variant_50470894600532_32a1740c-7afd-4113-b7cd-cdf4cfafd1ab.jpg?v=1780920256&width=800 800w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Schwarz-Von-Geburt-an-variant_50470894600532_32a1740c-7afd-4113-b7cd-cdf4cfafd1ab.jpg?v=1780920256&width=1000 1000w, //flybaby.berlin/cdn/shop/files/Flybaby-Babytrage-Schwarz-Von-Geburt-an-variant_50470894600532_32a1740c-7afd-4113-b7cd-cdf4cfafd1ab.jpg?v=1780920256&width=1200 1200w" width="1200" height="1600" loading="lazy" class="mu-home-carrier__feature-img" sizes="(max-width: 999px) 100vw, 55vw">
</div>
</div>
</div>
</section>
</section><section id="shopify-section-template--26724538253652__rich_text_qUxzrk" class="shopify-section shopify-section--rich-text"><div class="color-scheme color-scheme--scheme-3 color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44 section-spacing">
<div class="container container--sm">
<div class="prose text-center"><p class="h6" >Designed for everyday life</p><p class="h1" >What makes Flybaby different</p></div>
</div>
</div>
</section><section id="shopify-section-template--26724538253652__image-with-text-scroll" class="shopify-section shopify-section--images-with-text-scroll"><style>
#shopify-section-template--26724538253652__image-with-text-scroll {--images-with-text-scroll-master-image-ratio: 1.0;
--images-with-text-scroll-text-alignment: center;--images-with-text-scroll-overlay: 0 0 0 / 0.0;}
</style>
<images-with-text-scroll id="section-carousel-template--26724538253652__image-with-text-scroll" class="images-with-text-scroll color-scheme color-scheme--scheme-3"><div class="images-with-text-scroll__container container container--md"><div class="images-with-text-scroll__item is-selected"><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=1200" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=210 210w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=420 420w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=440 440w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=575 575w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=630 630w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=880 880w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Schultergurt_a8ee67b7-4eed-4970-81bd-a89c75500e6c.jpg?v=1715007960&width=1150 1150w" width="1200" height="1200" loading="lazy" sizes="(max-width: 699px) 210px, (max-width: 999px) 440px, 575px" style="object-position: inherit" class="images-with-text-scroll__image"><div class="images-with-text-scroll__text" >
<div class="prose"><p class="h3">Flexible shoulder straps for perfect weight distribution</p><p>With a stretchable ribbed structure, the knit of the shoulder area adapts flexibly and distributes the baby's weight evenly without losing its shape. This protects the back and relieves the muscles. Thus, tensions that can arise from the localized pressure of standard straps have no chance.</p></div>
</div>
</div><div class="images-with-text-scroll__item"><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=1200" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=210 210w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=420 420w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=440 440w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=575 575w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=630 630w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=880 880w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Detail_Groesse_1414f8a4-f2e5-478b-aaee-0f555cc1d7d4.jpg?v=1715007882&width=1150 1150w" width="1200" height="1200" loading="lazy" sizes="(max-width: 699px) 210px, (max-width: 999px) 440px, 575px" style="object-position: inherit" class="images-with-text-scroll__image"><div class="images-with-text-scroll__text" >
<div class="prose"><p class="h3">Small packing volume</p><p>"Put everything in your pocket! The lightweight and soft carrier, weighing just about 425g, also has a really small packing volume. As a compact pouch measuring 30×10×10cm, it goes everywhere with you and is readily available on-site when needed – a real game changer for travel." </p></div>
</div>
</div><div class="images-with-text-scroll__item"><img src="//flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=1701" alt="" srcset="//flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=210 210w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=420 420w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=440 440w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=575 575w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=630 630w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=880 880w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=1150 1150w, //flybaby.berlin/cdn/shop/files/111A8145_square_s_a929b517-f302-49ac-8992-bd9ddc8d2cd1.jpg?v=1721037446&width=1320 1320w" width="1701" height="1701" loading="lazy" sizes="(max-width: 699px) 210px, (max-width: 999px) 440px, 575px" style="object-position: inherit" class="images-with-text-scroll__image"><div class="images-with-text-scroll__text" >
<div class="prose"><p class="h3">Different zones for a perfect fit</p><p>The manufacturing in 3D knitting technology allows for different zones: a soft hip belt, breathable inserts on the back, and a stabilizing structure in the back area for a perfect fit and comfort.</p></div>
</div>
</div><div class="images-with-text-scroll__item"><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=3845" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=210 210w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=420 420w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=440 440w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=575 575w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=630 630w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=880 880w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=1150 1150w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=1320 1320w, //flybaby.berlin/cdn/shop/files/Flybaby_Magnetschnalle__s.jpg?v=1715672782&width=1725 1725w" width="3845" height="3845" loading="lazy" sizes="(max-width: 699px) 210px, (max-width: 999px) 440px, 575px" style="object-position: inherit" class="images-with-text-scroll__image"><div class="images-with-text-scroll__text" >
<div class="prose"><p class="h3">Practical Magnetic Buckles</p><p>The innovative magnetic buckles allow for effortless handling. Their simple design makes them quick and easy to close. These practical buckles are perfect for parents who value convenience and efficiency without compromising on safety.</p></div>
</div>
</div><div class="images-with-text-scroll__item"><img src="//flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=1984" alt="" srcset="//flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=210 210w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=420 420w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=440 440w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=575 575w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=630 630w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=880 880w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=1150 1150w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=1320 1320w, //flybaby.berlin/cdn/shop/files/111A8437_s.jpg?v=1721051681&width=1725 1725w" width="1984" height="1984" loading="lazy" sizes="(max-width: 699px) 210px, (max-width: 999px) 440px, 575px" style="object-position: inherit" class="images-with-text-scroll__image"><div class="images-with-text-scroll__text" >
<div class="prose"><p class="h3">Airy knit for a pleasant wearing climate</p><p>The breathable knitted fabric from Flybaby prevents parents and child from sweating even on warm summer days. The open mesh structure on the baby's back hugs softly and ensures ideal ventilation.</p></div>
</div>
</div><div class="images-with-text-scroll__item"><img src="//flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=1984" alt="" srcset="//flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=210 210w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=420 420w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=440 440w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=575 575w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=630 630w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=880 880w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=1150 1150w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=1320 1320w, //flybaby.berlin/cdn/shop/files/111A8405_s.jpg?v=1721051770&width=1725 1725w" width="1984" height="1984" loading="lazy" sizes="(max-width: 699px) 210px, (max-width: 999px) 440px, 575px" style="object-position: inherit" class="images-with-text-scroll__image"><div class="images-with-text-scroll__text" >
<div class="prose"><p class="h3">Soft reinforced hip belt</p><p>Just like the shoulders, the hips are also optimally supported in their load-bearing role. For this purpose, the hip belt is pleasantly padded with a soft quilting, so that it does not press or constrict even during long use.</p></div>
</div>
</div><carousel-navigation aria-controls="section-carousel-template--26724538253652__image-with-text-scroll" class="page-dots md:hidden"><button class="tap-area" aria-current="true">
<span class="sr-only">Go to item 1</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 2</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 3</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 4</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 5</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 6</span>
</button></carousel-navigation></div>
</images-with-text-scroll>
</section><section id="shopify-section-template--26724538253652__slideshow_B3VBnK" class="shopify-section shopify-section--slideshow"><slideshow-carousel id="carousel-template--26724538253652__slideshow_B3VBnK" class="slideshow" allow-swipe allow-transparent-header cell-selector=".slideshow__slide" role="region" style="--background: 0 0 0 ; background-color: rgb(var(--background));--border-color: var(--text-color) / 0.15;"><div class="slideshow__slide is-selected" media-type="video" reveal-on-scroll="true" role="group" ><div class="content-over-media content-over-media--lg" style="--content-over-media-content-max-width: 500px; --content-over-media-gradient-overlay: linear-gradient(180deg, rgba(54, 54, 54, 0.2), rgba(4, 4, 4, 0.65) 100%)"><video-media
class="hidden sm:block"
type="video"
autoplay
style="--aspect-ratio: 1.775; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/184b66abfa7345169feaaf2128ab3db7.thumbnail.0000000000_400x.jpg?v=1769081880"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/184b66abfa7345169feaaf2128ab3db7/184b66abfa7345169feaaf2128ab3db7.HD-1080p-7.2Mbps-67521052.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/184b66abfa7345169feaaf2128ab3db7.thumbnail.0000000000_400x.jpg?v=1769081880"></video></video-media><video-media
class="sm:hidden"
type="video"
autoplay
style="--aspect-ratio: 0.8; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/88d6076c3fb94669ba3018e4b0fc791f.thumbnail.0000000000_400x.jpg?v=1769508623"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/88d6076c3fb94669ba3018e4b0fc791f/88d6076c3fb94669ba3018e4b0fc791f.HD-720p-1.6Mbps-68015456.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/88d6076c3fb94669ba3018e4b0fc791f.thumbnail.0000000000_400x.jpg?v=1769508623"></video></video-media>
<div class="slideshow__slide-content place-self-center text-center sm:place-self-center sm:text-center" style="--text-color: 255 255 255; color: rgb(var(--text-color));--border-color: var(--text-color) / 0.15;">
<div class="prose"><p class="h6">Designed for closeness. Made for winter.</p><p class="h1">Flybaby Accessories</p><div class="button-group justify-center sm:justify-center">
<a class="button">View</a></div></div>
</div>
</div></div></slideshow-carousel>
</section><section id="shopify-section-template--26724538253652__multi_column_BFg6Hp" class="shopify-section shopify-section--multi-column"><style>
#shopify-section-template--26724538253652__multi_column_BFg6Hp {
--multi-column-gap: 2.5rem;
--multi-column-column-width: 53vw;
--multi-column-grid: auto / auto-flow var(--multi-column-column-width);
--multi-column-content-alignment: safe center;
}
@media screen and (min-width: 700px) {
#shopify-section-template--26724538253652__multi_column_BFg6Hp {
--multi-column-columns-per-row: 2;
--multi-column-column-width: 38vw;
}
}
@media screen and (min-width: 999px) {
#shopify-section-template--26724538253652__multi_column_BFg6Hp {
--multi-column-gap: 3.125rem;
--multi-column-columns-per-row: 3;
--multi-column-column-width: calc(100% / var(--multi-column-columns-per-row) - var(--multi-column-gap) * ((var(--multi-column-columns-per-row) - 1) / var(--multi-column-columns-per-row)));
--multi-column-grid: auto / repeat(auto-fit, var(--multi-column-column-width));
}
}
</style><div class="section-spacing color-scheme color-scheme--scheme-1 color-scheme--bg-54922f2e920ba8346f6dc0fba343d673">
<div class="container">
<div class="section-stack">
<div class="section-header justify-self-center text-center"><div class="prose"><p class="h6">Topics</p><h2 class="h2">Discover more</h2></div></div><multi-column class="multi-column scroll-area snap-x bleed md:unbleed"><div class="multi-column__item snap-center group" ><a
href="/en-fr/pages/babys-tragen"
class="overflow-hidden"
aria-label="Babies carry in baby carriers"
><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=1200" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=300 300w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=400 400w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=500 500w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=600 600w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=800 800w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=1000 1000w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Ruecken_1.jpg?v=1714481383&width=1200 1200w" width="1200" height="1200" loading="lazy" sizes="(max-width: 699px) 53vw, (max-width: 999px) 38vw, calc((100vw - 3rem * 2) / 3)" class="zoom-image group-hover:zoom"></a><div class="prose text-start"><p class="h3">Babies carry in baby carriers</p><p>What is the Anhock-Spreiz position actually? And why is it important how your baby sits in the baby carrier?</p><a href="/en-fr/pages/babys-tragen" class="link">More on the topic of babywearing</a></div></div><div class="multi-column__item snap-center group" ><a
href="https://flybaby.berlin/pages/uber-uns#ueber-flybaby"
class="overflow-hidden"
aria-label="Flybaby Story"
><img src="//flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=1600" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=300 300w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=400 400w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=500 500w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=600 600w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=800 800w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=1000 1000w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=1200 1200w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=1400 1400w, //flybaby.berlin/cdn/shop/files/Flybaby_About_Prozess_02_595d8044-1115-444a-a41b-c1816f0527c9.jpg?v=1713967043&width=1600 1600w" width="1600" height="1600" loading="lazy" sizes="(max-width: 699px) 53vw, (max-width: 999px) 38vw, calc((100vw - 3rem * 2) / 3)" class="zoom-image group-hover:zoom"></a><div class="prose text-start"><p class="h3">Flybaby Story</p><p>Who we are and how Flybaby was created.</p><a href="https://flybaby.berlin/pages/uber-uns#ueber-flybaby" class="link">More about Flybaby</a></div></div><div class="multi-column__item snap-center group" ><a
href="https://flybaby.berlin/pages/uber-uns#nachhaltigkeit"
class="overflow-hidden"
aria-label="Sustainability"
><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=1200" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=300 300w, //flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=400 400w, //flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=500 500w, //flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=600 600w, //flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=800 800w, //flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=1000 1000w, //flybaby.berlin/cdn/shop/files/Flybaby_Nachhaltigkeit_Teaser.jpg?v=1713967139&width=1200 1200w" width="1200" height="1200" loading="lazy" sizes="(max-width: 699px) 53vw, (max-width: 999px) 38vw, calc((100vw - 3rem * 2) / 3)" class="zoom-image group-hover:zoom"></a><div class="prose text-start"><p class="h3">Sustainability</p><p>How we at Flybaby contribute to reducing our resource consumption.</p><a href="https://flybaby.berlin/pages/uber-uns#nachhaltigkeit" class="link">More on the topic of sustainability</a></div></div></multi-column>
</div>
</div>
</div>
</section><section id="shopify-section-template--26724538253652__slideshow_DRhFcd" class="shopify-section shopify-section--slideshow"><slideshow-carousel id="carousel-template--26724538253652__slideshow_DRhFcd" class="slideshow" allow-swipe cell-selector=".slideshow__slide" autoplay="5" autoplay-pause-on-video role="region" style="--background: 0 0 0 ; background-color: rgb(var(--background));--border-color: var(--text-color) / 0.15;"><div class="slideshow__slide is-selected" media-type="video" role="group" ><div class="content-over-media content-over-media--auto" style="--content-over-media-content-max-width: 600px; --content-over-media-gradient-overlay: linear-gradient(180deg, rgba(54, 54, 54, 0.2), rgba(4, 4, 4, 0.65) 100%)"><video-media
class="hidden sm:block"
type="video"
autoplay
style="--aspect-ratio: 1.775; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/defb8aa9587442cfbcbe42b1298d5ef6.thumbnail.0000000000_400x.jpg?v=1724838032"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/defb8aa9587442cfbcbe42b1298d5ef6/defb8aa9587442cfbcbe42b1298d5ef6.HD-720p-4.5Mbps-33826816.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/defb8aa9587442cfbcbe42b1298d5ef6.thumbnail.0000000000_400x.jpg?v=1724838032"></video></video-media><video-media
class="sm:hidden"
type="video"
autoplay
style="--aspect-ratio: 0.8; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/d8270258dabe4c3e85504c0c7aa25dcc.thumbnail.0000000000_400x.jpg?v=1724847057"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/d8270258dabe4c3e85504c0c7aa25dcc/d8270258dabe4c3e85504c0c7aa25dcc.HD-1080p-7.2Mbps-33838521.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/d8270258dabe4c3e85504c0c7aa25dcc.thumbnail.0000000000_400x.jpg?v=1724847057"></video></video-media>
<div class="slideshow__slide-content place-self-end-start text-start sm:place-self-end-start sm:text-start" style="--text-color: 255 255 255; color: rgb(var(--text-color));--border-color: var(--text-color) / 0.15;">
<div class="prose"><p class="h6">Accessory</p><p class="h1">Flybaby Bag. Because your baby carrier deserves a light and easy bag.</p><div class="button-group justify-start sm:justify-start">
<a class="button">shop</a></div></div>
</div>
</div></div></slideshow-carousel>
</section><section id="shopify-section-template--26724538253652__newsletter" class="shopify-section shopify-section--newsletter"><style>
#shopify-section-template--26724538253652__newsletter {--content-over-media-overlay: 0 0 0 / 0.0;--content-over-media-row-gap: 0px;}
</style><div class="color-scheme color-scheme--scheme-d1f41f03-2a61-4788-bf21-ce4886af7bd0 color-scheme--bg-692764c91eeab431eea2fd6115798863 section-spacing">
<div class="newsletter content-over-media content-over-media--auto"><div class="content section-stack gap-8 text-center">
<div class="section-header justify-self-center text-center"><div class="prose"><p class="h6">newsletter</p><h2 class="h2">Stay up to date</h2><p>Subscribe to our newsletter and enjoy updates and promotions.</p></div></div><form method="post" action="/en-fr/contact#newsletter-form-template--26724538253652__newsletter" id="newsletter-form-template--26724538253652__newsletter" accept-charset="UTF-8" class="form justify-self-center"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><input id="form_tags" type="hidden" name="contact[tags]">
<div class="form-row"><div><div class="form-control" dependency="" ><input id="input--template--26724538253652__newsletter--contactemail" class="input" type="email" dir="ltr" name="contact[email]" placeholder="E-mail"
autocomplete="email"
enterkeyhint="send"
required
>
</fieldset><label for="input--template--26724538253652__newsletter--contactemail" class="sr-only">E-mail</label></div></div>
<div>
<button type="submit" class="button" >Register</button></div>
</div></form></div>
</div>
</div>
<script>
let newsletterForm = document.querySelector(".newsletter form")
newsletterForm.addEventListener("submit", function(e){
localStorage.setItem('scrollPosition', window.scrollY);
let client_tags = "newsletter"
document.querySelectorAll(".newsletter .form-control").forEach((form) => {
let key = form.querySelector("label").textContent
let value = 'NaN'
let inputField = form.querySelector("input, select")
if (inputField.type == "text" && inputField.value != "") {
value = inputField.value
}
if (inputField.type == "checkbox" && inputField.value != "") {
value = inputField.checked
}
if (inputField.classList == "select" && inputField.value != "") {
value = inputField.options[inputField.selectedIndex].text;
}
if (value != "NaN") {
client_tags = client_tags + ", " + key + ": " + value
}
})
document.getElementById('form_tags').value = client_tags;
});
document.querySelectorAll('.newsletter .form-control input[type="checkbox"]').forEach(checkbox => {
const checbkoxLabel = checkbox.placeholder
const allInputs = document.querySelectorAll(".newsletter .form-control")
checkbox.addEventListener("change", () => {
if (checkbox.checked) {
allInputs.forEach(input => {
const dependency = input.getAttribute("dependency")
if(dependency == checbkoxLabel) {
input.style.display = "block"
}
})
} else {
allInputs.forEach(input => {
const dependency = input.getAttribute("dependency")
if(dependency == checbkoxLabel) {
input.style.display = "none"
}
})
}
})
})
</script>
</section><section id="shopify-section-template--26724538253652__slideshow_4XMyED" class="shopify-section shopify-section--slideshow"><slideshow-carousel id="carousel-template--26724538253652__slideshow_4XMyED" class="slideshow" allow-swipe cell-selector=".slideshow__slide" autoplay-pause-on-video role="region" style="--background: 0 0 0 ; background-color: rgb(var(--background));--border-color: var(--text-color) / 0.15;"><div class="slideshow__slide is-selected" media-type="video" reveal-on-scroll="true" role="group" ><div class="content-over-media content-over-media--lg" style="--content-over-media-content-max-width: 780px; --content-over-media-gradient-overlay: linear-gradient(180deg, rgba(54, 54, 54, 0.2), rgba(4, 4, 4, 0.65) 100%)"><video-media
class="hidden sm:block"
type="video"
autoplay
style="--aspect-ratio: 1.775; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/96a654b451ac49e095f58503a5e8fae4.thumbnail.0000000000_400x.jpg?v=1717076959"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/96a654b451ac49e095f58503a5e8fae4/96a654b451ac49e095f58503a5e8fae4.HD-1080p-4.8Mbps-29801474.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/96a654b451ac49e095f58503a5e8fae4.thumbnail.0000000000_400x.jpg?v=1717076959"></video></video-media><video-media
class="sm:hidden"
type="video"
autoplay
style="--aspect-ratio: 0.8; --play-button-background: #ffffff"
><video playsinline="true" autoplay="autoplay" muted="muted" loop="loop" preload="metadata" poster="//flybaby.berlin/cdn/shop/files/preview_images/5c8c8613bddc489ebf2cd2d361b17058.thumbnail.0000000000_400x.jpg?v=1717077066"><source src="//flybaby.berlin/cdn/shop/videos/c/vp/5c8c8613bddc489ebf2cd2d361b17058/5c8c8613bddc489ebf2cd2d361b17058.HD-1080p-2.5Mbps-29801580.mp4?v=0" type="video/mp4"><img src="//flybaby.berlin/cdn/shop/files/preview_images/5c8c8613bddc489ebf2cd2d361b17058.thumbnail.0000000000_400x.jpg?v=1717077066"></video></video-media>
<div class="slideshow__slide-content place-self-center text-center sm:place-self-center sm:text-center" style="--text-color: 255 255 255; color: rgb(var(--text-color));--border-color: var(--text-color) / 0.15;">
<div class="prose"><p class="h6">Technology and Material</p><p class="h1">The first baby carrier made from 3D knitting</p><div class="button-group justify-center sm:justify-center">
<a class="button button--outline">More about the technology</a></div></div>
</div>
</div></div></slideshow-carousel>
</section><section id="shopify-section-template--26724538253652__image_with_text_tcM3nC" class="shopify-section shopify-section--image-with-text"><style>
#shopify-section-template--26724538253652__image_with_text_tcM3nC {
--image-with-text-content-max-width: 430px;
}
</style><div class="color-scheme color-scheme--scheme-2 color-scheme--bg-26877278ebd778e2cac755e21e3facad">
<image-with-text class="image-with-text"><picture><img src="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=1200" alt="" srcset="//flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=200 200w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=300 300w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=400 400w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=500 500w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=600 600w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=700 700w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=800 800w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=900 900w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=1000 1000w, //flybaby.berlin/cdn/shop/files/Flybaby_Babytrage_Gesundheit_Zertifikat_a8910f92-101f-462a-87bb-b2ab980389d1.jpg?v=1713967555&width=1200 1200w" width="1200" height="1600" loading="lazy" sizes="(max-width: 699px) 100vw, 50vw" reveal-on-scroll="false"></picture><div class="prose text-center sm:text-start"><p class="h6" >Health and Safety</p><p class="h2" >Quality standards you can trust</p><div ><p>"Our carrier is designed to benefit babies and their parents by being not only beautiful and functional but also meeting the highest quality standards."</p><p>The Flybaby baby carrier has been tested for maximum safety, the yarn is certified according to OEKO-TEX® STANDARD 100, and the Hip Dysplasia Institute certified its hip-friendliness.</p></div>
<a class="button">Learn more</a>
</div>
</image-with-text>
</div>
</section><section id="shopify-section-template--26724538253652__testimonials_GHkwVG" class="shopify-section shopify-section--testimonials"><style>
#shopify-section-template--26724538253652__testimonials_GHkwVG {
--testimonials-font-size: calc(clamp(1.125rem, 1.064516129032258rem + 0.25806451612903225vw, 1.25rem) * 1.2);
}
</style><div class="section-spacing color-scheme color-scheme--scheme-d1f41f03-2a61-4788-bf21-ce4886af7bd0 color-scheme--bg-692764c91eeab431eea2fd6115798863" style="--border-color: var(--text-color) / 0.15;">
<div class="container">
<div class="section-stack">
<div class="section-header justify-self-center text-center"><div class="prose"><p class="h6">Feedback</p><h2 class="h2">What our customers say</h2><p><a href="https://reviews.io/company-reviews/store/www.flybaby.berlin" title="https://reviews.io/company-reviews/store/www.flybaby.berlin">More reviews</a></p></div></div><div class="testimonial-list"><testimonial-carousel allow-swipe class="testimonial-carousel" id="carousel-template--26724538253652__testimonials_GHkwVG"><div class="testimonial-item text-center is-selected" ><div class="prose"><p>"I don't know what kind of magic thing your carrier is, but since I put her in it for the first time yesterday, my mouse has been so happy to be in a carrier again. It was really difficult the last few weeks and – hocus pocus – suddenly she loves it and so do I! So light and comfortable!"</p></div></div><div class="testimonial-item text-center" ><div class="prose"><p>"Feels great! These magnetic closures are so genius and finally no more complicated wrapping of a carrying cloth!"</p></div></div><div class="testimonial-item text-center" ><div class="prose"><p>"I have already tried countless carriers and with Flybaby I have finally found the perfect carrier! Thank you very much! I hope to be able to use the carrier for a long time."</p></div></div><div class="testimonial-item text-center" ><div class="prose"><p>"My midwife – with over 40 years of experience – saw the Flybaby for the first time today and was very impressed!"</p></div></div><div class="testimonial-item text-center" ><div class="prose"><p>"Thank you so much for the great carrier, dear ones! We've had quite a bit of back pain so far (and that's despite our little one being just a month old)! With the Flybaby Carrier, it just goes so much better, and we only want to carry our treasure again."</p></div></div></testimonial-carousel><carousel-navigation aria-controls="carousel-template--26724538253652__testimonials_GHkwVG" class="page-dots"><button class="tap-area" aria-current="true" aria-label="Go to item 1">
<span class="sr-only">Go to item 1</span>
</button><button class="tap-area" aria-current="false" aria-label="Go to item 2">
<span class="sr-only">Go to item 2</span>
</button><button class="tap-area" aria-current="false" aria-label="Go to item 3">
<span class="sr-only">Go to item 3</span>
</button><button class="tap-area" aria-current="false" aria-label="Go to item 4">
<span class="sr-only">Go to item 4</span>
</button><button class="tap-area" aria-current="false" aria-label="Go to item 5">
<span class="sr-only">Go to item 5</span>
</button></carousel-navigation></div>
</div>
</div>
</div></section>
<!-- BEGIN sections: footer-group -->
<section id="shopify-section-sections--26724539040084__text-with-icons" class="shopify-section shopify-section-group-footer-group shopify-section--text-with-icons"><div class="section-spacing section-spacing--tight color-scheme color-scheme--scheme-3 color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44">
<div class="container">
<div class="v-stack gap-8"><text-with-icons-carousel disabled-on="sm" allow-swipe id="text-with-icons-sections--26724539040084__text-with-icons" class="text-with-icons full-bleed sm:unbleed" role="region" style="--border-color: var(--text-color) / 0.15;"><div class="text-with-icons__item is-selected snap-center" role="group" aria-label="Item 1 of 4" >
<div class="v-stack gap-6 justify-items-center sm:justify-items-center"><div style="--border-color: var(--text-color) / 0.15;"><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="sm:hidden icon icon-picto-delivery-truck"
viewbox="0 0 24 24"
>
<path d="M23.25 13.5V6a1.5 1.5 0 0 0-1.5-1.5h-12A1.5 1.5 0 0 0 8.25 6v6m0 0V6h-3a4.5 4.5 0 0 0-4.5 4.5v6a1.5 1.5 0 0 0 1.5 1.5H3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M.75 12h3a1.5 1.5 0 0 0 1.5-1.5V6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path clip-rule="evenodd" d="M7.5 19.5a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm12 0a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 18h3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="hidden sm:block icon icon-picto-delivery-truck"
viewbox="0 0 24 24"
>
<path d="M23.25 13.5V6a1.5 1.5 0 0 0-1.5-1.5h-12A1.5 1.5 0 0 0 8.25 6v6m0 0V6h-3a4.5 4.5 0 0 0-4.5 4.5v6a1.5 1.5 0 0 0 1.5 1.5H3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M.75 12h3a1.5 1.5 0 0 0 1.5-1.5V6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path clip-rule="evenodd" d="M7.5 19.5a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm12 0a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 18h3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg></div><div class="v-stack gap-2 text-center sm:text-center"><p class="h6">Fair Delivery Conditions</p><div class="prose"><p>"We calculate shipping costs for our orders as fairly as possible."</p></div></div></div>
</div><div class="text-with-icons__item snap-center" role="group" aria-label="Item 2 of 4" >
<div class="v-stack gap-6 justify-items-center sm:justify-items-center"><div style="--border-color: var(--text-color) / 0.15;"><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="sm:hidden icon icon-picto-love"
viewbox="0 0 24 24"
>
<path clip-rule="evenodd" d="m12 21.844-9.588-10a5.672 5.672 0 0 1-1.063-6.551v0a5.673 5.673 0 0 1 9.085-1.474L12 5.384l1.566-1.565a5.673 5.673 0 0 1 9.085 1.474v0a5.673 5.673 0 0 1-1.062 6.548L12 21.844Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="hidden sm:block icon icon-picto-love"
viewbox="0 0 24 24"
>
<path clip-rule="evenodd" d="m12 21.844-9.588-10a5.672 5.672 0 0 1-1.063-6.551v0a5.673 5.673 0 0 1 9.085-1.474L12 5.384l1.566-1.565a5.673 5.673 0 0 1 9.085 1.474v0a5.673 5.673 0 0 1-1.062 6.548L12 21.844Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg></div><div class="v-stack gap-2 text-center sm:text-center"><p class="h6">We want you to be satisfied.</p><div class="prose"><p>"Our goal is for our small and large customers to love our products. To avoid wrong purchases, we are happy to assist you."<br></p></div></div></div>
</div><div class="text-with-icons__item snap-center" role="group" aria-label="Item 3 of 4" >
<div class="v-stack gap-6 justify-items-center sm:justify-items-center"><div style="--border-color: var(--text-color) / 0.15;"><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="sm:hidden icon icon-picto-chat"
viewbox="0 0 24 24"
>
<path clip-rule="evenodd" d="M11.25 18.75a1.5 1.5 0 0 1-1.5-1.5v-7.5a1.5 1.5 0 0 1 1.5-1.5h10.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.5 1.5 0 0 1-1.5 1.5h-1.5v4.5l-4.5-4.5h-4.5Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m6.75 12.75-3 3v-4.5h-1.5a1.5 1.5 0 0 1-1.5-1.5v-7.5a1.5 1.5 0 0 1 1.5-1.5h10.5a1.5 1.5 0 0 1 1.5 1.5v3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="hidden sm:block icon icon-picto-chat"
viewbox="0 0 24 24"
>
<path clip-rule="evenodd" d="M11.25 18.75a1.5 1.5 0 0 1-1.5-1.5v-7.5a1.5 1.5 0 0 1 1.5-1.5h10.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.5 1.5 0 0 1-1.5 1.5h-1.5v4.5l-4.5-4.5h-4.5Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m6.75 12.75-3 3v-4.5h-1.5a1.5 1.5 0 0 1-1.5-1.5v-7.5a1.5 1.5 0 0 1 1.5-1.5h10.5a1.5 1.5 0 0 1 1.5 1.5v3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg></div><div class="v-stack gap-2 text-center sm:text-center"><p class="h6">We support you</p><div class="prose"><p>'If you are unsure or have a question, feel free to check the <a href="/en-fr/pages/faq" title="FAQ">FAQs</a> or send us a message via the contact form or an <a href="mailto:support@flybaby.berlin" title="mailto:support@flybaby.berlin">email</a>.'</p></div></div></div>
</div><div class="text-with-icons__item snap-center" role="group" aria-label="Item 4 of 4" >
<div class="v-stack gap-6 justify-items-center sm:justify-items-center"><div style="--border-color: var(--text-color) / 0.15;"><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="sm:hidden icon icon-picto-credit-card"
viewbox="0 0 24 24"
>
<path clip-rule="evenodd" d="M.75 5.25a1.5 1.5 0 0 1 1.5-1.5h19.5a1.5 1.5 0 0 1 1.5 1.5v13.5a1.5 1.5 0 0 1-1.5 1.5H2.25a1.5 1.5 0 0 1-1.5-1.5V5.25Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M.75 8.25h22.5m-18 4.5h8.25m-8.25 3h5.25" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg><svg
aria-hidden="true"
focusable="false"
fill="none"
stroke-width="1.5"
width="24"
class="hidden sm:block icon icon-picto-credit-card"
viewbox="0 0 24 24"
>
<path clip-rule="evenodd" d="M.75 5.25a1.5 1.5 0 0 1 1.5-1.5h19.5a1.5 1.5 0 0 1 1.5 1.5v13.5a1.5 1.5 0 0 1-1.5 1.5H2.25a1.5 1.5 0 0 1-1.5-1.5V5.25Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M.75 8.25h22.5m-18 4.5h8.25m-8.25 3h5.25" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg></div><div class="v-stack gap-2 text-center sm:text-center"><p class="h6">Secure payment</p><div class="prose"><p>We accept payments with the most common secure payment methods.</p></div></div></div>
</div></text-with-icons-carousel><carousel-navigation aria-controls="text-with-icons-sections--26724539040084__text-with-icons" class="page-dots sm:hidden"><button class="tap-area" aria-current="true">
<span class="sr-only">Go to item 1</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 2</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 3</span>
</button><button class="tap-area" aria-current="false">
<span class="sr-only">Go to item 4</span>
</button></carousel-navigation></div>
</div>
</div></section><footer id="shopify-section-sections--26724539040084__footer" class="shopify-section shopify-section-group-footer-group shopify-section--footer"><style>
#shopify-section-sections--26724539040084__footer {
--footer-content-justify-items: space-between;
}
</style>
<div class="footer color-scheme color-scheme--scheme-3 color-scheme--bg-c1f8cb21047e4797e94d0969dc5d1e44 bordered-section">
<div class="container">
<div class="footer__inner"><div class="footer__block-list"><div class="footer__block footer__block--newsletter" ><div class="v-stack gap-4 sm:gap-5"><p class="h6">newsletter</p><div class="prose text-subdued"><p>Sign up for the newsletter and stay informed.</p></div><form method="post" action="/en-fr/contact#newsletter-form-sections--26724539040084__footer" id="newsletter-form-sections--26724539040084__footer" accept-charset="UTF-8" class="form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="contact[tags]" value="newsletter"><div class="form-control" dependency="" ><input id="input--sections--26724539040084__footer--contactemail" class="input" type="email" dir="ltr" name="contact[email]" placeholder="E-mail"
autocomplete="email"
enterkeyhint="send"
required
>
</fieldset><label for="input--sections--26724539040084__footer--contactemail" class="floating-label text-xs">E-mail</label></div><div class="align-self-start">
<button type="submit" class="button" >Subscribe</button></div></form></div></div><div class="footer__block footer__block--links" ><div class="v-stack gap-4 sm:gap-5"><p class="h6">Menu</p><ul class="v-stack gap-2.5 unstyled-list" role="list"><li>
<a href="/en-fr/pages/faq" class="link-faded">Frequently asked questions</a>
</li><li>
<a href="/en-fr/pages/how-to" class="link-faded">How to</a>
</li><li>
<a href="/en-fr/products/flybaby-geschenkgutschein" class="link-faded">Flybaby Voucher</a>
</li><li>
<a href="/en-fr/pages/contact" class="link-faded">Contact</a>
</li><li>
<a href="/en-fr/pages/flybaby-pro-1" class="link-faded">Flybaby Pro</a>
</li><li>
<a href="/en-fr/policies/terms-of-service" class="link-faded">General Terms and Conditions</a>
</li><li>
<a href="/en-fr/policies/legal-notice" class="link-faded">Legal Notice</a>
</li><li>
<a href="/en-fr/pages/jobs" class="link-faded">Jobs</a>
</li><li>
<a href="/en-fr/policies/privacy-policy" class="link-faded">Privacy policy</a>
</li></ul>
</div></div><div class="footer__block footer__block--links" ><div class="v-stack gap-4 sm:gap-5"><p class="h6">Shipping & Returns</p><ul class="v-stack gap-2.5 unstyled-list" role="list"><li>
<a href="/en-fr/policies/shipping-policy" class="link-faded">Shipment</a>
</li><li>
<a href="/en-fr/pages/rueckgaben" class="link-faded">Returns</a>
</li><li>
<a href="/en-fr/policies/refund-policy" class="link-faded">Right of Withdrawal</a>
</li><li>
<a href="/en-fr/pages/reklamation" class="link-faded">Complaint</a>
</li><li>
<a href="/en-fr/pages/bestellung-widerrufen" class="link-faded">Cancel Order</a>
</li></ul>
</div></div><div class="footer__block footer__block--text" ><div class="v-stack gap-4 sm:gap-5"><p class="h6">About Us</p><div class="prose text-subdued"><p>Flybaby develops ultra-light 3D-knitted baby carriers – by parents for you parents.</p></div></div></div></div><ul class="social-media social-media--list unstyled-list" role="list"><li class="social-media__item branding-colors--instagram">
<a href="https://www.instagram.com/flybaby.berlin/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg
aria-hidden="true"
focusable="false"
width="24"
class="icon icon-instagram"
viewbox="0 0 24 24"
>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/>
</svg></a>
</li><li class="social-media__item branding-colors--youtube">
<a href="https://www.youtube.com/@FlybabyBerlin" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on YouTube"><svg
aria-hidden="true"
focusable="false"
width="24"
class="icon icon-youtube"
viewbox="0 0 24 24"
>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.44 5.243c.929.244 1.66.963 1.909 1.876.451 1.654.451 5.106.451 5.106s0 3.452-.451 5.106a2.681 2.681 0 0 1-1.91 1.876c-1.684.443-8.439.443-8.439.443s-6.754 0-8.439-.443a2.682 2.682 0 0 1-1.91-1.876c-.45-1.654-.45-5.106-.45-5.106s0-3.452.45-5.106a2.681 2.681 0 0 1 1.91-1.876c1.685-.443 8.44-.443 8.44-.443s6.754 0 8.438.443Zm-5.004 6.982L9.792 15.36V9.091l5.646 3.134Z" fill="currentColor"/>
</svg></a>
</li><li class="social-media__item branding-colors--tiktok">
<a href="https://www.tiktok.com/@flybaby_babycarrier" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on TikTok"><svg
aria-hidden="true"
focusable="false"
width="24"
class="icon icon-tiktok"
viewbox="0 0 24 24"
>
<path d="M20.027 10.168a5.125 5.125 0 0 1-4.76-2.294v7.893a5.833 5.833 0 1 1-5.834-5.834c.122 0 .241.011.361.019v2.874c-.12-.014-.237-.036-.36-.036a2.977 2.977 0 0 0 0 5.954c1.644 0 3.096-1.295 3.096-2.94L12.56 2.4h2.75a5.122 5.122 0 0 0 4.72 4.573v3.195" fill="currentColor"/>
</svg></a>
</li></ul><div class="footer__aside"><div class="localization-selectors"><div class="relative">
<button type="button" class="localization-toggle heading text-xxs link-faded" aria-controls="popover-localization--sections--26724539040084__footer-country" aria-expanded="false"><img src="//cdn.shopify.com/static/images/flags/fr.svg?format=jpg&width=60" alt="France" srcset="//cdn.shopify.com/static/images/flags/fr.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>France (EUR €)</span><svg
aria-hidden="true"
focusable="false"
fill="none"
width="10"
class="icon icon-chevron-down"
viewbox="0 0 10 10"
>
<path d="m1 3 4 4 4-4" stroke="currentColor" stroke-linecap="square"/>
</svg></button>
<x-popover id="popover-localization--sections--26724539040084__footer-country" initial-focus="[aria-selected='true']" class="popover popover--top-start color-scheme color-scheme--dialog">
<p class="h4" slot="header">Country</p><form method="post" action="/en-fr/localization" id="localization-form--sections--26724539040084__footer-country" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/en-fr" /><x-listbox class="popover__value-list"><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="AT" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/at.svg?format=jpg&width=60" alt="Austria" srcset="//cdn.shopify.com/static/images/flags/at.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Austria (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="BE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/be.svg?format=jpg&width=60" alt="Belgium" srcset="//cdn.shopify.com/static/images/flags/be.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Belgium (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="BG" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/bg.svg?format=jpg&width=60" alt="Bulgaria" srcset="//cdn.shopify.com/static/images/flags/bg.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Bulgaria (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="HR" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/hr.svg?format=jpg&width=60" alt="Croatia" srcset="//cdn.shopify.com/static/images/flags/hr.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Croatia (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="CY" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/cy.svg?format=jpg&width=60" alt="Cyprus" srcset="//cdn.shopify.com/static/images/flags/cy.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Cyprus (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="CZ" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/cz.svg?format=jpg&width=60" alt="Czechia" srcset="//cdn.shopify.com/static/images/flags/cz.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Czechia (CZK Kč)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="DK" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/dk.svg?format=jpg&width=60" alt="Denmark" srcset="//cdn.shopify.com/static/images/flags/dk.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Denmark (DKK kr.)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="EE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/ee.svg?format=jpg&width=60" alt="Estonia" srcset="//cdn.shopify.com/static/images/flags/ee.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Estonia (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="FI" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/fi.svg?format=jpg&width=60" alt="Finland" srcset="//cdn.shopify.com/static/images/flags/fi.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Finland (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="FR" aria-selected="true"><img src="//cdn.shopify.com/static/images/flags/fr.svg?format=jpg&width=60" alt="France" srcset="//cdn.shopify.com/static/images/flags/fr.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>France (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="DE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/de.svg?format=jpg&width=60" alt="Germany" srcset="//cdn.shopify.com/static/images/flags/de.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Germany (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="GR" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/gr.svg?format=jpg&width=60" alt="Greece" srcset="//cdn.shopify.com/static/images/flags/gr.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Greece (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="HU" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/hu.svg?format=jpg&width=60" alt="Hungary" srcset="//cdn.shopify.com/static/images/flags/hu.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Hungary (HUF Ft)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="IE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/ie.svg?format=jpg&width=60" alt="Ireland" srcset="//cdn.shopify.com/static/images/flags/ie.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Ireland (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="IT" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/it.svg?format=jpg&width=60" alt="Italy" srcset="//cdn.shopify.com/static/images/flags/it.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Italy (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="LV" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/lv.svg?format=jpg&width=60" alt="Latvia" srcset="//cdn.shopify.com/static/images/flags/lv.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Latvia (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="LI" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/li.svg?format=jpg&width=60" alt="Liechtenstein" srcset="//cdn.shopify.com/static/images/flags/li.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Liechtenstein (CHF CHF)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="LT" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/lt.svg?format=jpg&width=60" alt="Lithuania" srcset="//cdn.shopify.com/static/images/flags/lt.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Lithuania (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="LU" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/lu.svg?format=jpg&width=60" alt="Luxembourg" srcset="//cdn.shopify.com/static/images/flags/lu.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Luxembourg (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="MT" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/mt.svg?format=jpg&width=60" alt="Malta" srcset="//cdn.shopify.com/static/images/flags/mt.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Malta (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="MC" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/mc.svg?format=jpg&width=60" alt="Monaco" srcset="//cdn.shopify.com/static/images/flags/mc.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Monaco (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="NL" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/nl.svg?format=jpg&width=60" alt="Netherlands" srcset="//cdn.shopify.com/static/images/flags/nl.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Netherlands (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="NO" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/no.svg?format=jpg&width=60" alt="Norway" srcset="//cdn.shopify.com/static/images/flags/no.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Norway (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="PL" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/pl.svg?format=jpg&width=60" alt="Poland" srcset="//cdn.shopify.com/static/images/flags/pl.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Poland (PLN zł)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="PT" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/pt.svg?format=jpg&width=60" alt="Portugal" srcset="//cdn.shopify.com/static/images/flags/pt.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Portugal (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="RO" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/ro.svg?format=jpg&width=60" alt="Romania" srcset="//cdn.shopify.com/static/images/flags/ro.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Romania (RON Lei)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="SK" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/sk.svg?format=jpg&width=60" alt="Slovakia" srcset="//cdn.shopify.com/static/images/flags/sk.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Slovakia (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="SI" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/si.svg?format=jpg&width=60" alt="Slovenia" srcset="//cdn.shopify.com/static/images/flags/si.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Slovenia (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="ES" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/es.svg?format=jpg&width=60" alt="Spain" srcset="//cdn.shopify.com/static/images/flags/es.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Spain (EUR €)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="SE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/se.svg?format=jpg&width=60" alt="Sweden" srcset="//cdn.shopify.com/static/images/flags/se.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Sweden (SEK kr)</span>
</button><button type="submit" name="country_code" class="h-stack gap-2.5" role="option" value="CH" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/ch.svg?format=jpg&width=60" alt="Switzerland" srcset="//cdn.shopify.com/static/images/flags/ch.svg?format=jpg&width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Switzerland (CHF CHF)</span>
</button></x-listbox></form></x-popover>
</div><div class="relative">
<button type="button" class="localization-toggle heading text-xxs link-faded" aria-controls="popover-localization--sections--26724539040084__footer-locale" aria-expanded="false">English<svg
aria-hidden="true"
focusable="false"
fill="none"
width="10"
class="icon icon-chevron-down"
viewbox="0 0 10 10"
>
<path d="m1 3 4 4 4-4" stroke="currentColor" stroke-linecap="square"/>
</svg></button>
<x-popover id="popover-localization--sections--26724539040084__footer-locale" initial-focus="[aria-selected='true']" class="popover popover--top-start color-scheme color-scheme--dialog">
<p class="h4" slot="header">Language</p><form method="post" action="/en-fr/localization" id="localization-form--sections--26724539040084__footer-locale" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/en-fr" /><x-listbox class="popover__value-list"><button type="submit" name="locale_code" role="option" value="fr" aria-selected="false">Français</button><button type="submit" name="locale_code" role="option" value="en" aria-selected="true">English</button><button type="submit" name="locale_code" role="option" value="de" aria-selected="false">Deutsch</button><button type="submit" name="locale_code" role="option" value="it" aria-selected="false">Italiano</button><button type="submit" name="locale_code" role="option" value="es" aria-selected="false">Español</button><button type="submit" name="locale_code" role="option" value="nl" aria-selected="false">Nederlands</button></x-listbox></form></x-popover>
</div></div><p class="heading text-subdued text-xxs">
© 2026 - Flybaby
Powered by Shopify
</p></div>
</div>
</div>
</div>
<style>
/* Force-hide helpers to avoid any rubberband-scroll peek (no transitions). */
.mu-force-hide {
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
transition: none !important;
transform: none !important;
}
</style>
<script>
//////////////////////////////////////////////////////////////////////////////
// Make the mu-sticky element disappear near the bottom
//////////////////////////////////////////////////////////////////////////////
const bottomVisible = (offset = 20) => {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
const viewportHeight = window.innerHeight;
const docHeight = document.documentElement.scrollHeight;
return docHeight - (scrollTop + viewportHeight) <= offset;
};
const initHideNearFooter = () => {
const muSticky = document.querySelector('#mu-sticky-buy-button-pdp');
const muLauncher = document.querySelector('.R-LauncherButton'); // included through external script
const footerSection = document.getElementById('shopify-section-sections--26724539040084__footer');
if (!muSticky && !muLauncher) return false;
const setHidden = (hidden) => {
if (muSticky) {
muSticky.classList.toggle('mu-force-hide', hidden);
}
if (muLauncher) {
muLauncher.classList.toggle('mu-force-hide', hidden);
}
};
if (footerSection && 'IntersectionObserver' in window) {
const observer = new IntersectionObserver(
([entry]) => {
setHidden(Boolean(entry?.isIntersecting));
},
{
root: null,
threshold: 0,
}
);
observer.observe(footerSection);
} else {
window.addEventListener(
'scroll',
() => {
setHidden(bottomVisible(100));
},
{ passive: true }
);
}
return true;
};
if (!initHideNearFooter() && 'MutationObserver' in window) {
const mo = new MutationObserver(() => {
if (initHideNearFooter()) mo.disconnect();
});
mo.observe(document.documentElement, { childList: true, subtree: true });
}
</script>
</footer>
<!-- END sections: footer-group --></main>
<script src="//flybaby.berlin/cdn/shop/t/88/assets/mu-usp-drawer.js?v=35496156602705430031777019467" defer></script>
<script
type="module"
src="//flybaby.berlin/cdn/shop/t/88/assets/mu-add-to-cart.js?v=89977378395372770881761837072"
defer></script>
<script
type="module"
src="//flybaby.berlin/cdn/shop/t/88/assets/mu-bundle-card.js?v=52010397875119325091761837073"
defer></script>
<script src="//flybaby.berlin/cdn/shop/t/88/assets/klaviyo_onsite_custom.js?v=158427286254351867651761837070" defer></script>
<!-- <script src="https://a.klaviyo.com/media/js/onsite/onsite.js"></script> -->
<script>
var klaviyo = klaviyo || [];
klaviyo.init({
account: 'Tuq4Ad',
platform: 'shopify',
collection_urls: ['/'],
});
klaviyo.enable('backinstock', {
trigger: {
product_page_text: 'Benachrichtigung erstellen 🔔',
product_page_class: 'button',
product_page_text_align: 'center',
product_page_margin: '0px',
replace_anchor: false,
collection_page_class: '',
collection_page_text_align: 'center',
collection_page_text: 'Benachrichtigung erstellen 🔔',
collection_page_padding: 'inherit',
},
modal: {
headline: '{product_name}',
body_content: 'Registriere dich und erhalte eine Benachrichtigung, wenn der Artikel wieder verfügbar ist.',
email_field_label: 'E-Mail',
button_label: 'Benachrichtigung aktivieren',
subscription_success_label:
'Anmeldung erfolgreich. Du erhältst eine Nachricht, wenn das Produkt wieder verfügbar ist.',
footer_content:
'Du wirst durch das abschicken in unser E-Mail System eingetragen und erhältst eine automatische Benachrichtung, wenn das Produkt in dieser Farbe wieder verfügbar ist.',
additional_styles: "@import url('https://fonts.googleapis.com/css2?family=Unica+One&display=swap';",
font_family: "'New Hass Unica, san'",
drop_background_color: '#000',
background_color: '#fff',
text_color: '#222',
button_text_color: '#fff',
button_background_color: '#793d2f',
close_button_color: '#ccc',
error_background_color: '#fcd6d7',
error_text_color: '#C72E2F',
success_background_color: '#d3efcd',
success_text_color: '#1B9500',
},
});
</script>
<script>
document.addEventListener('variant:change', function (event) {
if (!window.location.href.includes('/product')) {
var variant = event.detail.variant;
if (variant.available == false) {
document.getElementsByClassName('klaviyo-product-container')[0].style.display = 'block';
document.getElementsByClassName('klaviyo-button-container')[0].style.display = 'block';
} else {
document.getElementsByClassName('klaviyo-button-container')[0].style.display = 'none';
document.getElementsByClassName('klaviyo-product-container')[0].style.display = 'none';
}
}
});
</script><script src="https://widget.reviews.io/rating-snippet/dist.js" defer></script>
<link rel="stylesheet" href="https://widget.reviews.io/rating-snippet/dist.css">
<script>
window.addEventListener('load', function () {
if (typeof ratingSnippet === 'function') {
ratingSnippet('ruk_rating_snippet', {
store: 'www.flybaby.berlin',
color: '#0E1311',
linebreak: false,
usePolaris: false,
});
}
});
</script>
<script>
var variants = [];
const remove_unwanted = function (prod_id, variants_list) {
variants_list.forEach((el) => {
if (!el.show_variant) {
let deactivate_color = el.title.toLowerCase();
document
.querySelectorAll(`label[for*="main"][for$="${prod_id}-1-${deactivate_color}"]`)
.forEach((el) => (el.style.display = 'none'));
document
.querySelectorAll(`label[for*="featured_product"][for$="${prod_id}-1-${deactivate_color}"]`)
.forEach((el) => (el.style.display = 'none'));
document
.querySelectorAll(`label[for*="product-form-${prod_id}"][for$="option1-${deactivate_color}"]`)
.forEach((el) => (el.style.display = 'none'));
}
});
document.querySelectorAll('.product-card__info').forEach((el) => (el.style.opacity = '1'));
document.querySelectorAll('.variant-picker').forEach((el) => (el.style.opacity = '1'));
};
</script>
<dialog
hidden
class="mu-geo-redirection-banner"
id="mu-geo-redirection-banner"
data-translations="{"US"=>"United States", "CA"=>"Canada", "GB"=>"United Kingdom", "FR"=>"France", "DE"=>"Germany", "IT"=>"Italy", "ES"=>"Spain", "AU"=>"Australia", "NL"=>"Netherlands", "JP"=>"Japan", "AL"=>"Albania", "AD"=>"Andorra", "AM"=>"Armenia", "AT"=>"Austria", "BY"=>"Belarus", "BE"=>"Belgium", "BA"=>"Bosnia and Herzegovina", "BG"=>"Bulgaria", "HR"=>"Croatia", "CY"=>"Cyprus", "CZ"=>"Czechia", "DK"=>"Denmark", "EE"=>"Estonia", "FI"=>"Finland", "GR"=>"Greece", "HU"=>"Hungary", "IS"=>"Iceland", "IE"=>"Ireland", "LV"=>"Latvia", "LI"=>"Liechtenstein", "LT"=>"Lithuania", "LU"=>"Luxembourg", "MT"=>"Malta", "MD"=>"Moldova", "MC"=>"Monaco", "ME"=>"Montenegro", "MK"=>"North Macedonia", "NO"=>"Norway", "PL"=>"Poland", "PT"=>"Portugal", "RO"=>"Romania", "RU"=>"Russia", "SM"=>"San Marino", "RS"=>"Serbia", "SK"=>"Slovakia", "SI"=>"Slovenia", "SE"=>"Sweden", "CH"=>"Switzerland", "TR"=>"Turkey", "UA"=>"Ukraine", "VA"=>"Vatican City"}">
<h3 class="h3">Looks like you are visiting from {}.</h3>
<p class="p">Would you prefer to switch to our store in {}?</p>
<div>
<a href="#" class="decline button">No, thanks</a>
<a href="#" class="button accept">Take me there</a>
</div>
</dialog>
<style> @font-face {font-family: "Fold"; src: urlhttps://cdn.shopify.com/s/files/1/0556/1312/9044/files/fold-grotesque-regular-trial.woff?v=1707468753") format("woff");} </style>
<div id="shopify-block-AV1c1MGppS3Bld2V0Z__1967102994182284862" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: connected_sdk_script --><script src='https://www.paypalobjects.com/pa/js/min/pa.js'></script>
<script
src='https://www.paypal.com/sdk/js?client-id=AbtXlp5R3xc83T9xW_ZXKTK8IVZ-14EMelDioU4VC285IqSuxUI4yotKxjV0sz_X6YsONYi10vSBPNKM&merchant-id=2T6G5PEDQCEZ2&components=messages'
data-namespace='PayPalSDK'
data-partner-attribution-id='JADEDPIXEL_SHOPPINGCART_EC_CA'
></script>
<!-- END app snippet --><!-- BEGIN app snippet: utils --><script>
// ============================================
// Core Utilities
// ============================================
// Setup FPTI Analytics
if (PAYPAL && PAYPAL.analytics) {
PAYPAL.analytics.setup({
data: {
pgrp: 'shopify:messaging:app-embed',
comp: 'shopify-app-embed',
},
});
}
const recordEvent = (event_name, additionalData) => {
PAYPAL.analytics.instance.recordEvent(event_name, {
theme: window?.Shopify?.theme?.name || 'unknown',
shop: window?.Shopify?.shop || 'unknown',
path: window.location.pathname,
flow: 'Shopify - Pay Later',
space_key: 'SKD8GM',
...additionalData,
});
};
// In Theme Editor when using Advanced Settings
// User chooses copy as JS Path from their browser
// The pasted value will be a string that contains "document.querySelector("...")
// Remove document.querySelector(" and ")
// Using JS Path we can ensure the path to the element is accurate
const parseSelector = (selector) => {
try {
// Handle both single and double quotes
return selector
.replace(/document\.querySelector\(["']/g, '')
.replace(/["']\)/g, '');
} catch (e) {
recordEvent('appEmbed:parseSelector:error', { error: e.message });
}
};
// Waits for Element to be rendered
// Uses mutation observer to watch for changes in the DOM
// https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
// On changes, check for the selector again
const waitForElement = (selector) => {
try {
return new Promise((resolve) => {
const existing = document.querySelector(selector);
if (existing) return resolve(existing);
const observer = new MutationObserver(() => {
const el = document.querySelector(selector);
if (el) {
observer.disconnect();
resolve(el);
}
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
});
} catch (e) {
recordEvent('appEmbed:waitForElement:error', { error: e.message });
}
};
// Formats correct cart/drawer subtotal and adds or updates messaging
const addOrUpdateMessagingPriceAttribute = async (price, locator, messaging) => {
try {
// Format price to 2 decimal places ex: 150000 => 1500.00
// Messaging requires price to be in string format
const formattedPrice = Number((price / 100).toFixed(2)).toString();
const messagingId = messaging.id;
const existingMessaging = document.getElementById(messagingId);
if (existingMessaging) {
// Update the data-pp-amount attribute on the existing element
existingMessaging.setAttribute('data-pp-amount', formattedPrice);
} else {
const element = await waitForElement(locator);
const updatedPriceMessaging = messaging.cloneNode();
updatedPriceMessaging.setAttribute('data-pp-amount', formattedPrice);
element.after(updatedPriceMessaging);
}
} catch (e) {
recordEvent('appEmbed:addOrUpdateMessagingPriceAttribute:error', { error: e.message });
}
};
// Fetches cart details from Shopify cart endpoint
const fetchCartDetails = async () => {
try {
const response = await fetch('/cart.js');
const cart = await response.json();
return cart.total_price;
} catch (e) {
recordEvent('appEmbed:fetchCartDetails:error', { error: e.message });
}
};
// Fetches variant details Shopify product endpoint
// https://shopify.dev/docs/api/ajax/reference/product
const fetchVariant = async () => {
try {
// Ex: https://test-store.myshopify.com/products/the-multi-location-snowboard?variant=45268551368883
const urlParams = new URLSearchParams(window.location.search);
const urlVariantId = parseInt(urlParams.get('variant'), 10);
const productHandle = window.location.pathname.split('/products/')[1]?.split('?')[0];
const response = await fetch(`/products/${productHandle}.js`);
const productData = await response.json();
const variants = productData.variants;
const selectedVariant = variants.find(v => v.id === urlVariantId);
if (selectedVariant) {
return selectedVariant;
}
return variants.find(v => v.available) || variants[0];
} catch (e) {
recordEvent('appEmbed:fetchVariant:error', { error: e.message });
}
};
// Get the selected variant ID from URL, form input, or select element
const getSelectedVariantId = () => {
try {
const urlParams = new URLSearchParams(window.location.search);
const urlVariant = urlParams.get('variant');
if (urlVariant) return parseInt(urlVariant, 10);
const formInput = document.querySelector('form[action*="/cart/add"] input[name="id"]');
if (formInput?.value) return parseInt(formInput.value, 10);
const selectInput = document.querySelector('form[action*="/cart/add"] select[name="id"]');
if (selectInput?.value) return parseInt(selectInput.value, 10);
return null;
} catch (e) {
recordEvent('appEmbed:getSelectedVariantId:error', { error: e.message });
return null;
}
};
const getShopifyData = () => {
try {
const selectedVariantId = getSelectedVariantId();
const findVariant = (variants) => {
if (!variants?.length) return null;
if (selectedVariantId) {
const selected = variants.find(v => v.id === selectedVariantId);
if (selected) return selected;
}
return variants.find(v => v.available) || variants[0];
};
if (window.meta?.product) {
const product = window.meta.product;
const variant = findVariant(product.variants);
return {
product: { title: product.title, vendor: product.vendor, type: product.type, id: product.id },
price: variant ? {
priceInCents: variant.price,
compareAtPrice: variant.compare_at_price,
currency: window.Shopify?.currency?.active || 'USD',
variantId: variant.id,
variantTitle: variant.title
} : null
};
}
if (window.ShopifyAnalytics?.meta?.product) {
const product = window.ShopifyAnalytics.meta.product;
const variant = findVariant(product.variants);
return {
product: { title: product.title, vendor: product.vendor, id: product.id },
price: variant ? {
priceInCents: variant.price,
currency: window.Shopify?.currency?.active || 'USD',
variantId: variant.id
} : null
};
}
return null;
} catch (e) {
recordEvent('appEmbed:getShopifyData:error', { error: e.message });
return null;
}
};
// Generic function to watch for changes in the DOM
// and listen for specific API calls made by the Shopify store
// Callback provides specific logic for handling the response
const watchForChanges = (locator, messaging, callback) => {
try {
// Overrides the native `fetch` function to listen for specific API calls.
// Wrapped in an Immediately Invoked Function Expression (IIFE)
// To avoid polluting the global namespace.
(function (window, windowFetch) {
// Check if `fetch` is a function. If not, exit early.
if (typeof fetch !== 'function') return;
window.fetch = function () {
// Call the original `fetch` function with the provided arguments.
const response = windowFetch.apply(this, arguments);
response.then(async (res) => {
if (typeof callback === 'function') {
callback(res, locator, messaging);
}
});
// Return the original `fetch` response.
return response;
};
})(window, window.fetch);
} catch (e) {
recordEvent('appEmbed:watchForChanges:error', { error: e.message });
}
};
// Provides ability to watch for cart changes
// such as increment, decrement, or remove items
// Also handles adding new items which opens Cart Drawer
// and updates the messaging with the new cart total
// This function is used for both Cart Drawer and Cart Page
const watchForCartChanges = (locator, messaging) => {
const cartChangeCallback = async (res, locator, messaging) => {
// Determine the id of messaging div either #paypal-upstream-messaging-cart-{page | drawer}
const messagingId = messaging.id;
// Changes (e.g., increment, decrement, or remove items).
if (res.url.includes('/cart/change')) {
// Clone the response to read its JSON data without consuming the original response.
res
.clone()
.json()
.then((data) => {
addOrUpdateMessagingPriceAttribute(data.total_price, locator, messaging);
});
// Called when adding a new item which opens Cart Drawer
} else if (res.url.includes('/cart/add')) {
// Adding items does not return the updated cart details,
// Fetch the updated cart details (e.g., total_price).
const updatedPrice = await fetchCartDetails();
// Introduce a delay to handle potential race conditions where the cart drawer has not rendered yet.
setTimeout(async () => {
await addOrUpdateMessagingPriceAttribute(updatedPrice, locator, messaging);
}, 500);
}
};
watchForChanges(locator, messaging, cartChangeCallback);
};
// Provides ability to watch for product specific changes
// such as variant selection on product pages
const watchForProductChanges = (locator, messaging) => {
let lastVariantId = new URLSearchParams(window.location.search).get('variant');
const handleVariantChange = async () => {
const currentVariantId = new URLSearchParams(window.location.search).get('variant');
if (currentVariantId && currentVariantId !== lastVariantId) {
lastVariantId = currentVariantId;
const newVariantData = await fetchVariant();
const newPriceInCents = newVariantData?.price;
if (newPriceInCents) {
await addOrUpdateMessagingPriceAttribute(newPriceInCents, locator, messaging);
} else {
recordEvent('appEmbed:watchForProductChanges:error:noNewVariantPrice');
}
}
};
// Shopify themes can either handle variant changes on the client-side or server-side (via variant API calls)
// We will "intercept" and handle variant changes by:
// 1. Watching for URL changes
const _pushState = history.pushState.bind(history);
const _replaceState = history.replaceState.bind(history);
history.pushState = function (...args) {
_pushState(...args);
handleVariantChange();
};
history.replaceState = function (...args) {
_replaceState(...args);
handleVariantChange();
};
// 2. Watching for back/forward browser clicks
window.addEventListener('popstate', handleVariantChange);
// 3. Fallback: Watching for variant API calls
// Future optimization: This fallback could be removed if all Shopify themes can be handled with 1. and 2.
const productChangeCallback = async (res, locator, messaging) => {
if (res.url.includes('/variants')) {
await handleVariantChange();
return;
}
};
watchForChanges(locator, messaging, productChangeCallback);
};
</script>
<!-- END app snippet --><!-- BEGIN app snippet: price-detection --><script>
// ============================================
// Price Detection & Element Scoring
// Depends on: utils.liquid (recordEvent, getShopifyData)
// ============================================
const extractPriceFromText = (text) => {
const match = text.match(/[\d,]+\.?\d*/);
if (!match) return null;
return parseFloat(match[0].replace(/,/g, ''));
};
const textMatchesPrice = (text, knownPriceInCents) => {
const extracted = extractPriceFromText(text);
if (extracted === null) return false;
const knownPrice = knownPriceInCents / 100;
return Math.abs(extracted - knownPrice) < 0.01;
};
const hasStrikethrough = (element) => {
let el = element;
while (el && el !== document.body) {
const style = getComputedStyle(el);
if (style.textDecoration.includes('line-through') ||
style.textDecorationLine?.includes('line-through')) {
return true;
}
if (['S', 'DEL', 'STRIKE'].includes(el.tagName)) {
return true;
}
el = el.parentElement;
}
return false;
};
// Find the add-to-cart button. Result is cached since the button doesn't change per page load.
let _cachedAddToCartButton;
const findAddToCartButton = () => {
if (_cachedAddToCartButton !== undefined) return _cachedAddToCartButton;
try {
const formButton = document.querySelector('form[action*="/cart/add"] button[type="submit"]');
if (formButton) return (_cachedAddToCartButton = formButton);
const buttons = document.querySelectorAll('button');
for (const btn of buttons) {
const text = btn.textContent.toLowerCase();
if (text.includes('add to cart') || text.includes('add to bag') ||
text.includes('buy now') || text.includes('add to basket')) {
return (_cachedAddToCartButton = btn);
}
}
return (_cachedAddToCartButton = null);
} catch (e) {
recordEvent('appEmbed:findAddToCartButton:error', { error: e.message });
return (_cachedAddToCartButton = null);
}
};
// Find element containing specific text (used for product title proximity).
// Result is cached per text string — title is static per page load and scoreElement
// calls this once per candidate, so without caching it's O(candidates) full DOM walks.
let _titleElementCache = {};
const findElementContainingText = (text) => {
if (text in _titleElementCache) return _titleElementCache[text];
try {
const normalizedText = text.toLowerCase().trim();
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
let node;
while (node = walker.nextNode()) {
const nodeText = node.textContent.trim().toLowerCase();
if (nodeText.length > 5 && normalizedText.includes(nodeText.substring(0, 20))) {
const el = node.parentElement;
const rect = el.getBoundingClientRect();
if (rect.width > 0 && rect.height > 0) {
const fontSize = parseFloat(getComputedStyle(el).fontSize);
if (fontSize >= 16) return (_titleElementCache[text] = el);
}
}
}
return (_titleElementCache[text] = null);
} catch (e) {
return null;
}
};
const getViewportThresholds = () => {
const vh = window.innerHeight;
const isMobile = window.innerWidth < 768;
return {
position: [[vh * 0.6, 50], [vh * 1.2, 30], [vh * 2.0, 10]],
fontSize: [
[isMobile ? 18 : 24, 40],
[isMobile ? 14 : 18, 25],
[isMobile ? 12 : 14, 10],
],
proximity: {
close: isMobile ? 60 : 100,
medium: isMobile ? 120 : 200,
far: isMobile ? 240 : 400,
},
};
};
const getTieredScore = (value, tiers, defaultScore = 0) => {
for (const [threshold, points] of tiers) {
if (value < threshold) return points;
}
return defaultScore;
};
// Scores a DOM element on how likely it is to be the product's main price.
// Higher score = better candidate. Factors:
// - Position on page (elements higher up score better)
// - Font size (larger text = more likely a displayed price)
// - Proximity to product title and add-to-cart button
// - Structural exclusions (footer/header/nav/hidden = heavy penalty)
// - Strikethrough detection (compare-at prices = heavy penalty)
const scoreElement = (element, productMeta = null, debug = false) => {
let score = 0;
const breakdown = debug ? {} : null;
const { position, fontSize, proximity } = getViewportThresholds();
const { close, medium, far } = proximity;
const rect = element.getBoundingClientRect();
// POSITION ON PAGE
const absoluteTop = rect.top + window.scrollY;
const posScore = getTieredScore(absoluteTop, position, -30);
score += posScore;
if (debug) breakdown.position = `${posScore >= 0 ? '+' : ''}${posScore} (top ${Math.round(absoluteTop)}px)`;
// FONT SIZE
const fontPx = parseFloat(getComputedStyle(element).fontSize);
const fontScore = fontSize.find(([t]) => fontPx >= t)?.[1] ?? -10;
score += fontScore;
if (debug) breakdown.fontSize = `${fontScore >= 0 ? '+' : ''}${fontScore} (${fontPx}px)`;
// PROXIMITY TO PRODUCT TITLE
if (productMeta?.title) {
const titleElement = findElementContainingText(productMeta.title);
if (titleElement) {
const distance = Math.abs(titleElement.getBoundingClientRect().bottom - rect.top);
const titleScore = getTieredScore(distance, [[close, 40], [medium, 25], [far, 10]], 0);
score += titleScore;
if (debug) breakdown.titleProximity = `+${titleScore} (${Math.round(distance)}px)`;
} else if (debug) {
breakdown.titleProximity = 'title element not found';
}
} else if (debug) {
breakdown.titleProximity = 'no product title';
}
// PROXIMITY TO ADD-TO-CART BUTTON
const addButton = findAddToCartButton();
if (addButton) {
const distance = Math.abs(addButton.getBoundingClientRect().top - rect.top);
const cartScore = getTieredScore(distance, [[close, 30], [medium, 20], [far, 10]], 0);
score += cartScore;
if (debug) breakdown.cartProximity = `+${cartScore} (${Math.round(distance)}px)`;
} else if (debug) {
breakdown.cartProximity = 'add-to-cart not found';
}
// STRUCTURAL EXCLUSIONS
const exclusions = [
['footer, header, nav', 'in footer/header/nav'],
['button, a[href*="/cart"], [type="submit"]', 'in button/link'],
['[aria-hidden="true"], [hidden], .hidden, .visually-hidden', 'hidden'],
];
for (const [selector, reason] of exclusions) {
if (element.closest(selector)) {
score -= 100;
if (debug) breakdown.structural = `-100 (${reason})`;
break;
}
}
if (debug && !breakdown.structural) breakdown.structural = '+0';
// STRIKETHROUGH
if (hasStrikethrough(element)) {
score -= 100;
if (debug) breakdown.strikethrough = '-100 (compare-at price)';
} else if (debug) {
breakdown.strikethrough = '+0';
}
if (debug) {
breakdown.totalScore = score;
breakdown.elementText = element.textContent.trim().substring(0, 30);
breakdown.elementTag = element.tagName;
}
return debug ? { score, breakdown } : score;
};
// Find all elements containing a specific price value
const findElementsWithPrice = (knownPriceInCents, productMeta = null, debug = false, log = () => {}) => {
const candidates = [];
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
let node;
while (node = walker.nextNode()) {
const text = node.textContent.trim();
if (text.length > 30 || !textMatchesPrice(text, knownPriceInCents)) continue;
const element = node.parentElement;
const rect = element.getBoundingClientRect();
if (rect.width === 0 || rect.height === 0 || hasStrikethrough(element)) continue;
const score = scoreElement(element, productMeta, false);
candidates.push({ element, text, score });
}
if (debug && candidates.length > 0) {
candidates.sort((a, b) => b.score - a.score);
log(` Candidates: ${candidates.length}, top: score=${candidates[0].score}, text="${candidates[0].text}"`);
}
return candidates;
};
// Find the /cart/add form by traversing from the price element
// This is more reliable than name-based container detection since all Shopify themes have this form
const findCartFormFromPrice = (priceElement, debug = false, log = () => {}) => {
let el = priceElement;
while (el && el !== document.body) {
if (el.tagName === 'FORM' && el.action?.includes('/cart/add')) {
if (debug) log(` Found /cart/add form (element itself)`);
return el;
}
let sibling = el.nextElementSibling;
while (sibling) {
if (sibling.tagName === 'FORM' && sibling.action?.includes('/cart/add')) {
if (debug) log(` Found /cart/add form as sibling`);
return sibling;
}
// Check if sibling contains the form
const formInSibling = sibling.querySelector('form[action*="/cart/add"]');
if (formInSibling) {
if (debug) log(` Found /cart/add form inside sibling`);
return formInSibling;
}
sibling = sibling.nextElementSibling;
}
el = el.parentElement;
}
if (debug) log(` No /cart/add form found`);
return null;
};
// Fallback: walk up from the price text element to find a suitable wrapper.
// Used when no /cart/add form exists near the price element.
const findPriceContainer = (priceElement) => {
let el = priceElement;
let bestContainer = priceElement;
while (el && el !== document.body) {
// Look for elements with price-related IDs (common Shopify pattern)
if (el.id && /price/i.test(el.id)) {
bestContainer = el;
}
// Look for elements with price-related classes that seem like containers
if (el.className && typeof el.className === 'string') {
const classes = el.className.toLowerCase();
if (/\bprice\b/.test(classes) && !/price-item|price__regular|price__sale/.test(classes)) {
bestContainer = el;
}
}
// Stop at major structural elements
if (el.tagName === 'SECTION' || el.tagName === 'ARTICLE' || el.tagName === 'MAIN') {
break;
}
el = el.parentElement;
}
return bestContainer;
};
// Try common Shopify theme price selectors (Dawn and derivatives)
const findPriceByTemplateSelector = (debug = false, log = () => {}) => {
const selectors = [
'[id*="price-template"]', // Dawn theme pattern
'.price-item--regular:not(s):not(del)',
'[data-product-price]',
];
for (const selector of selectors) {
const el = document.querySelector(selector);
if (el && !hasStrikethrough(el)) {
if (debug) log(`Template selector found: ${selector}`);
return el;
}
}
return null;
};
// Check if we're in an isolated/sandboxed iframe (theme editor)
const isIsolatedContext = () => {
if (window === window.top) return false; // Not in iframe
try {
// Try to access parent - if cross-origin, we're isolated
const test = window.parent.document;
return false; // Can access parent, not isolated
} catch (e) {
return true; // Cross-origin, we're isolated
}
};
// Try to find price element in sibling iframes (theme editor workaround)
const findPriceInSiblingIframes = (knownPriceInCents) => {
const iframes = document.querySelectorAll('iframe');
for (const iframe of iframes) {
try {
const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;
if (!iframeDoc) continue;
const priceElement = iframeDoc.querySelector('.price-item, .price, [data-product-price]');
if (priceElement) {
return { element: priceElement, document: iframeDoc };
}
} catch (e) {
// Cross-origin iframe, skip
}
}
return null;
};
// Helper: Insert messaging near a price element (before cart form or after price container).
// Returns the price container element used as the logical anchor.
const insertMessagingNearPrice = (priceElement, messaging, debug = false, log = () => {}) => {
const cartForm = findCartFormFromPrice(priceElement, debug, log);
const container = findPriceContainer(priceElement);
if (cartForm) {
cartForm.before(messaging.cloneNode());
if (debug) log('Inserted messaging before /cart/add form');
} else {
container.after(messaging.cloneNode());
if (debug) log('Inserted after price container (no form found)');
}
return container;
};
// Insert messaging after price element
const insertMessagingWithRetry = (shopifyData, messaging, debug = false, log = () => {}) => {
// Skip visual preview iframe
if (window.location.search.includes('source=visualPreviewInitialLoad')) return;
if (document.querySelector('#paypal-upstream-messaging-product')) return;
const liquidPriceInCents = shopifyData?.price?.priceInCents;
const isIsolated = isIsolatedContext();
if (debug) {
log('=== Price Detection ===');
log(`Context: ${isIsolated ? 'Theme Editor' : 'Live Storefront'}`);
log(`Price: ${liquidPriceInCents} cents ($${(liquidPriceInCents / 100).toFixed(2)})`);
}
// Priority 1: Template selectors (common theme patterns like Dawn)
const templateElement = findPriceByTemplateSelector(debug, log);
if (templateElement) {
return insertMessagingNearPrice(templateElement, messaging, debug, log);
}
// Priority 2: Scoring-based price detection
const priceElement = findPriceElement(shopifyData, debug, log);
if (priceElement) {
return insertMessagingNearPrice(priceElement, messaging, debug, log);
}
// Priority 3: Sibling iframes (theme editor only)
if (isIsolated) {
const siblingResult = findPriceInSiblingIframes(liquidPriceInCents);
if (siblingResult) {
return insertMessagingNearPrice(siblingResult.element, messaging, debug, log);
}
}
if (!isIsolated) {
log('Could not find price element. Consider using Advanced Settings with a custom selector.');
}
return null;
};
const findPriceElement = (shopifyData = null, debug = false, log = () => {}) => {
try {
const knownPriceInCents = shopifyData?.price?.priceInCents;
const productMeta = shopifyData?.product;
if (debug) log(`findPriceElement: ${knownPriceInCents} cents`);
if (knownPriceInCents) {
const candidates = findElementsWithPrice(knownPriceInCents, productMeta, debug, log);
if (candidates.length > 0) {
candidates.sort((a, b) => b.score - a.score);
if (debug) log(` → FOUND (score=${candidates[0].score})`);
return candidates[0].element;
}
}
if (debug) log(' → null (no candidates)');
return null;
} catch (e) {
if (debug) log(` → Error: ${e.message}`);
recordEvent('appEmbed:findPriceElement:error', { error: e.message });
return null;
}
};
</script>
<!-- END app snippet --><!-- BEGIN app snippet: navigator-panel --><template id="pp-nav-template">
<style>
/* --- Floating placement panel shell --- */
#pp-nav-panel {
position: fixed;
top: 50%;
left: 20px;
transform: translateY(-50%);
background: #fff;
border-radius: 12px;
font-family: system-ui, -apple-system, sans-serif;
font-size: 13px;
z-index: 999999;
width: 340px;
box-shadow: 0 8px 32px rgba(0,0,0,0.18);
overflow: hidden;
transition: transform 0.3s ease, height 0.3s ease;
}
#pp-nav-panel.minimized {
display: none;
}
/* --- Minimized pill button --- */
#pp-nav-pill {
position: fixed;
bottom: 20px;
left: 20px;
background: #003087;
color: #fff;
border: none;
border-radius: 24px;
padding: 10px 18px;
font-family: system-ui, -apple-system, sans-serif;
font-size: 13px;
font-weight: 600;
cursor: pointer;
z-index: 999999;
box-shadow: 0 4px 16px rgba(0,48,135,0.3);
display: none;
align-items: center;
gap: 8px;
transition: box-shadow 0.2s;
}
#pp-nav-pill:hover {
box-shadow: 0 6px 20px rgba(0,48,135,0.45);
}
/* --- Header --- */
.pp-panel-header {
background: #003087;
color: #fff;
padding: 14px 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.pp-panel-title {
font-size: 14px;
font-weight: 700;
margin: 0;
letter-spacing: 0.01em;
}
.pp-minimize-btn {
background: none;
border: none;
color: rgba(255,255,255,0.8);
cursor: pointer;
font-size: 18px;
line-height: 1;
padding: 2px;
border-radius: 4px;
transition: color 0.15s;
}
.pp-minimize-btn:hover {
color: #fff;
}
/* --- Panel body --- */
.pp-panel-content {
padding: 16px;
}
/* --- Step info boxes --- */
.pp-step-box {
border-radius: 8px;
padding: 10px 12px;
font-size: 12px;
line-height: 1.5;
margin-bottom: 12px;
display: flex;
align-items: flex-start;
gap: 8px;
}
.pp-step-box.blue {
background: #e8f4fd;
border: 1px solid #b8dff5;
color: #0a5a96;
}
.pp-step-box.green {
background: #e6f9ee;
border: 1px solid #a3e4b8;
color: #1a7a3a;
}
.pp-step-text {
flex: 1;
}
.pp-step-text p {
margin: 0 0 8px 0;
}
.pp-step-text p:last-child {
margin-bottom: 0;
}
.pp-step-text strong {
display: block;
font-size: 12px;
margin-bottom: 2px;
}
.pp-step-dismiss {
background: none;
border: none;
color: inherit;
opacity: 0.5;
cursor: pointer;
font-size: 16px;
line-height: 1;
padding: 0;
flex-shrink: 0;
}
.pp-step-dismiss:hover {
opacity: 1;
}
/* --- Warning banners --- */
.pp-warning {
background: #fff3cd;
border: 1px solid #ffc107;
border-radius: 8px;
padding: 10px 12px;
margin-bottom: 12px;
font-size: 12px;
color: #856404;
line-height: 1.4;
}
.pp-warning-icon {
margin-right: 4px;
}
/* --- Pick placement + copy actions --- */
.pp-pick-btn {
width: 100%;
padding: 12px;
border: 2px solid #0070ba;
border-radius: 8px;
background: #0070ba;
color: #fff;
cursor: pointer;
font-size: 13px;
font-weight: 600;
transition: all 0.15s;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.pp-pick-btn:hover {
opacity: 0.9;
}
.pp-pick-btn.active {
background: #f0f7ff;
color: #0070ba;
border-color: #b8dff5;
}
.pp-pick-btn.active:hover {
background: #e0efff;
}
/* --- Copy button --- */
#pp-apply-btn {
width: 100%;
background: #28a745;
color: #fff;
border: none;
padding: 12px;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
font-size: 13px;
transition: all 0.2s;
display: none;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: 12px;
}
#pp-apply-btn:hover {
opacity: 0.9;
}
#pp-apply-btn.applied {
background: #28a745;
}
/* --- Step 2 confirmation --- */
#pp-step2 {
display: none;
margin-top: 18px;
}
</style>
<div class='pp-panel-header'>
<div class='pp-panel-title'>PayPal Pay Later Messaging</div>
<button class='pp-minimize-btn' id='pp-collapse-btn' title='Minimize panel'>▾</button>
</div>
<div class='pp-panel-content'>
<div id='pp-warning' class='pp-warning' style='display: none;'></div>
<div id='pp-inspector-warning' class='pp-warning' style='display: none;'></div>
<div class='pp-step-box blue' id='pp-step1'>
<span class='pp-step-text'
><strong>Step 1: Choose message placement</strong>
Click the button below and then hover over your page to select a placement.
</span>
</div>
<button id='pp-pick-btn' class='pp-pick-btn'>◎ Start Picking Placement</button
><button id='pp-apply-btn'>Copy Current Placement</button>
<div id='pp-step2' style='display:none;'>
<div class='pp-step-box green'>
<span class='pp-step-text'
><strong>Step 2: Paste and save</strong>
<p style='margin: 0 0 8px 0;'>
You have copied the placement for the <b id='pp-context-name'>Product Page</b>.
</p>
<p style='margin: 0;'>
Go back to the App Embeds section, and in the Paypal Advanced Settings, paste the copied value into the
<b id='pp-selector-name'>Product Page</b> field and click the 'Save' button in the top right corner.
</p></span
><button class='pp-step-dismiss' id='pp-step2-dismiss' title='Dismiss'>×</button>
</div>
</div>
</div>
</template>
<!-- END app snippet --><!-- BEGIN app snippet: navigator --><script>
// ============================================
// DOM Traversal Controls for Theme Editor
// Depends on: price-detection.liquid (isIsolatedContext)
// ============================================
const OVERLAY_STYLE =
'position:fixed;pointer-events:none;background:rgba(255,152,0,0.12);border:2px solid rgba(255,152,0,0.6);z-index:999998;display:none;';
const OVERLAY_LABEL_STYLE =
'position:absolute;bottom:100%;left:-2px;background:#f57c00;color:#fff;font:10px system-ui;padding:2px 6px;border-radius:3px 3px 0 0;white-space:nowrap;';
const COPY_BUTTON_LABEL = 'Copy Current Placement';
const COPIED_BUTTON_LABEL = 'Placement Copied!';
const isInOverlay = (el) => {
while (el && el !== document.body) {
if (getComputedStyle(el).position === 'fixed') return true;
el = el.parentElement;
}
return false;
};
// Position a fixed overlay to cover a target element
const positionOverlayOnElement = (overlay, el) => {
const rect = el.getBoundingClientRect();
Object.assign(overlay.style, {
top: rect.top + 'px',
left: rect.left + 'px',
width: rect.width + 'px',
height: rect.height + 'px',
display: 'block',
});
};
// Module-level refs for global listeners added by createNavigationPanel.
// Stored here so they can be removed if the panel is re-initialized.
let _panelInspectorActivate = null;
let _panelInspectorDeactivate = null;
let _highlightedElement = null;
let _panelPickModeCleanup = null;
// Detect UID pattern in ID (Shopify's --suffix or long numeric/hex suffixes)
const hasUid = (id) => {
if (!id) return false;
if (/--/.test(id)) return true;
return /[-_](\d{5,}|[a-f0-9]{8,})$/i.test(id);
};
const getIdPrefix = (id) => {
if (id.includes('--')) return id.split('--')[0];
const match = id.match(/^(.+?)[-_](\d{5,}|[a-f0-9]{8,})$/i);
return match ? match[1] : null;
};
const getMeaningfulClasses = (el) => {
if (!el.className || typeof el.className !== 'string') return [];
return el.className.trim().split(/\s+/).filter(c =>
c && !c.startsWith('_') && !c.startsWith('js-') &&
c.length < 30 && !/^[a-f0-9]{6,}$/i.test(c) && !/^[A-Z]/.test(c)
);
};
const isUnique = (selector) => document.querySelectorAll(selector).length === 1;
// Returns null if no unique selector can be generated
const generateSelector = (element) => {
if (!element || element === document.body || element === document.documentElement) {
return null;
}
const classes = getMeaningfulClasses(element);
// Priority 1: Clean ID
if (element.id && !hasUid(element.id)) return `#${element.id}`;
// Priority 2: ID with UID → attribute wildcard selector
if (element.id && hasUid(element.id)) {
const prefix = getIdPrefix(element.id);
if (prefix) {
const selector = `[id^="${prefix}-"]`;
if (isUnique(selector)) return selector;
}
}
// Priority 3: Unique class
for (const cls of classes) {
if (isUnique('.' + cls)) return '.' + cls;
}
// Priority 4: Ancestor + target class combinations (walk up to 5 levels)
if (classes.length > 0) {
let ancestor = element.parentElement;
let depth = 0;
while (ancestor && ancestor !== document.body && ancestor !== document.documentElement && depth < 5) {
const ancClasses = getMeaningfulClasses(ancestor);
if (ancClasses.length > 0) {
const s1 = `.${ancClasses[0]} .${classes[0]}`;
if (isUnique(s1)) return s1;
const s2 = `.${ancClasses[0]} > .${classes[0]}`;
if (isUnique(s2)) return s2;
}
if (ancestor.id && !hasUid(ancestor.id)) {
const s3 = `#${ancestor.id} .${classes[0]}`;
if (isUnique(s3)) return s3;
}
ancestor = ancestor.parentElement;
depth++;
}
}
// NO FALLBACK - return null if no unique selector exists
return null;
};
const hasSpecificSelector = (el) => generateSelector(el) !== null;
const shouldSkipElement = (el) => {
if (!el || el.hidden) return true;
if (['SCRIPT', 'STYLE', 'TEMPLATE'].includes(el.tagName)) return true;
if (
el.closest('#pp-nav-panel') ||
el.closest('#pp-nav-pill') ||
el.closest('#pp-pick-overlay')
)
return true;
if (el.hasAttribute('data-pp-message')) return true;
if (!hasSpecificSelector(el)) return true;
return false;
};
const resolveContextName = (providedContextName, messagingTemplate) => {
if (providedContextName && providedContextName !== 'this area') return providedContextName;
const id = messagingTemplate?.id || '';
if (id.includes('cart-drawer')) return 'Cart Drawer';
if (id.includes('cart')) return 'Cart Page';
if (id.includes('product')) return 'Product Page';
return 'this area';
};
// Called when the cart drawer closes (via IntersectionObserver in cartDrawer.liquid)
// and at the start of createNavigationPanel to tear down any existing instance.
// Cleans up pick mode listeners, DOM elements, highlights, and preview clones.
const destroyNavigationPanel = () => {
if (_panelPickModeCleanup) {
_panelPickModeCleanup();
_panelPickModeCleanup = null;
}
document.getElementById('pp-nav-panel')?.remove();
document.getElementById('pp-nav-pill')?.remove();
const preview = document.querySelector('[id$="-preview"][data-pp-message]');
if (preview) preview.remove();
if (_highlightedElement) {
_highlightedElement.style.outline = '';
_highlightedElement.style.outlineOffset = '';
_highlightedElement = null;
}
if (_panelInspectorActivate) {
document.removeEventListener('shopify:inspector:activate', _panelInspectorActivate);
document.removeEventListener('shopify:inspector:deactivate', _panelInspectorDeactivate);
_panelInspectorActivate = _panelInspectorDeactivate = null;
}
document.documentElement.style.cursor = '';
};
const createNavigationPanel = (
initialElement,
messagingTemplate,
warningMessage = null,
contextName = 'this area',
) => {
let currentTarget = initialElement;
let resolvedContextName = resolveContextName(contextName, messagingTemplate);
destroyNavigationPanel();
const panel = document.createElement('div');
panel.id = 'pp-nav-panel';
const tmpl = document.getElementById('pp-nav-template');
panel.appendChild(tmpl.content.cloneNode(true));
// Create minimized pill button (separate from panel)
const pill = document.createElement('button');
pill.id = 'pp-nav-pill';
pill.innerHTML = 'PayPal Pay Later Messaging';
const applyBtn = panel.querySelector('#pp-apply-btn');
const warningEl = panel.querySelector('#pp-warning');
const step2 = panel.querySelector('#pp-step2');
const step2Dismiss = panel.querySelector('#pp-step2-dismiss');
const contextEl = panel.querySelector('#pp-context-name');
const selectorEl = panel.querySelector('#pp-selector-name');
const updateContextUI = (newContext) => {
resolvedContextName = newContext;
if (contextEl) contextEl.textContent = resolvedContextName;
if (selectorEl) {
selectorEl.textContent = resolvedContextName;
}
};
updateContextUI(resolvedContextName);
const detectContextFromElement = (el) => {
if (el.closest('#CartDrawer, .drawer, .cart-drawer, [id*="cart-drawer"], [class*="cart-drawer"]'))
return 'Cart Drawer';
if (window.location.pathname.endsWith('/cart') || el.closest('.cart, #cart, #main-cart-items, #main-cart-footer'))
return 'Cart Page';
return 'Product Page';
};
// Show warning message if provided
if (warningMessage && warningEl) {
warningEl.innerHTML = `<span class="pp-warning-icon">⚠️</span>${warningMessage}`;
warningEl.style.display = 'block';
}
let isInitialRender = true;
const updateUI = () => {
// Highlight element
highlightElement(currentTarget);
// Update button states
applyBtn.textContent = COPY_BUTTON_LABEL;
applyBtn.classList.remove('applied');
// Reposition messaging — skip on initial render (already placed correctly by auto-detection)
if (!isInitialRender) repositionMessaging();
isInitialRender = false;
};
const highlightElement = (el) => {
if (_highlightedElement) {
_highlightedElement.style.outline = '';
_highlightedElement.style.outlineOffset = '';
}
_highlightedElement = el;
if (el) {
el.style.outline = '2px solid rgba(255,152,0,0.6)';
el.style.outlineOffset = '-1px';
}
};
const repositionMessaging = () => {
if (!currentTarget) return;
const existing = document.getElementById(messagingTemplate.id);
const targetInOverlay = isInOverlay(currentTarget);
const msgInOverlay = existing && isInOverlay(existing);
if (targetInOverlay !== msgInOverlay) {
// Cross-context: reposition messaging in the target's context without touching the original
const allMessaging = document.querySelectorAll('[data-pp-message]');
let contextMsg = null;
for (const el of allMessaging) {
if (isInOverlay(el) === targetInOverlay) { contextMsg = el; break; }
}
if (!contextMsg) {
contextMsg = messagingTemplate.cloneNode(true);
contextMsg.id = messagingTemplate.id + '-preview';
}
contextMsg.remove();
currentTarget.after(contextMsg);
return;
}
if (existing) existing.remove();
const newMessaging = messagingTemplate.cloneNode(true);
currentTarget.after(newMessaging);
};
const collapseBtn = panel.querySelector('#pp-collapse-btn');
const pickBtn = panel.querySelector('#pp-pick-btn');
let pickMode = false;
let pickHoverTarget = null;
let pickOverlay = null;
let pickLabel = null;
let applyBtnResetTimer = null;
let _pickRafId = null;
const enterPickMode = () => {
pickMode = true;
document.documentElement.style.cursor = 'crosshair';
pickBtn.classList.add('active');
pickBtn.innerHTML = '◎ Pick a spot on the page...';
applyBtn.textContent = COPY_BUTTON_LABEL;
applyBtn.classList.remove('applied');
applyBtn.style.display = 'flex';
step2.style.display = 'none';
if (contextEl) contextEl.textContent = resolvedContextName;
// Create overlay for highlighting (pointer-events:none prevents interference)
pickOverlay = document.createElement('div');
pickOverlay.id = 'pp-pick-overlay';
pickOverlay.style.cssText = OVERLAY_STYLE;
pickLabel = document.createElement('div');
pickLabel.style.cssText = OVERLAY_LABEL_STYLE;
pickOverlay.appendChild(pickLabel);
document.body.appendChild(pickOverlay);
document.addEventListener('mousemove', onPickHover, true);
document.addEventListener('click', onPickClick, true);
document.addEventListener('mousedown', onPickSuppressEvent, true);
document.addEventListener('pointerdown', onPickSuppressEvent, true);
};
const exitPickMode = () => {
pickMode = false;
document.documentElement.style.cursor = '';
pickBtn.classList.remove('active');
pickBtn.innerHTML = '◎ Start Picking Placement';
applyBtn.style.display = 'none';
// Remove overlay
const overlay = document.getElementById('pp-pick-overlay');
if (overlay) overlay.remove();
pickOverlay = null;
pickLabel = null;
pickHoverTarget = null;
if (_pickRafId) { cancelAnimationFrame(_pickRafId); _pickRafId = null; }
document.removeEventListener('mousemove', onPickHover, true);
document.removeEventListener('click', onPickClick, true);
document.removeEventListener('mousedown', onPickSuppressEvent, true);
document.removeEventListener('pointerdown', onPickSuppressEvent, true);
};
// Find the nearest visible child element to cursor coordinates
const snapToNearestChild = (parent, cx, cy) => {
const children = parent.children;
if (!children.length) return null;
let best = null;
let bestDist = 30;
for (const child of children) {
if (shouldSkipElement(child)) continue;
const r = child.getBoundingClientRect();
if (r.width === 0 || r.height === 0) continue;
const dx = cx < r.left ? r.left - cx : cx > r.right ? cx - r.right : 0;
const dy = cy < r.top ? r.top - cy : cy > r.bottom ? cy - r.bottom : 0;
const dist = Math.sqrt(dx * dx + dy * dy);
if (dist < bestDist) {
bestDist = dist;
best = child;
}
}
return best;
};
const onPickHover = (e) => {
if (_pickRafId) return;
_pickRafId = requestAnimationFrame(() => {
_pickRafId = null;
let el = document.elementFromPoint(e.clientX, e.clientY);
if (!el || shouldSkipElement(el)) {
document.documentElement.style.cursor = 'not-allowed';
if (pickOverlay) pickOverlay.style.display = 'none';
pickHoverTarget = null;
return;
}
if (el.children.length > 0) {
const snapped = snapToNearestChild(el, e.clientX, e.clientY);
if (snapped) el = snapped;
}
// Skip elements without a unique selector
if (shouldSkipElement(el)) {
document.documentElement.style.cursor = 'not-allowed';
pickHoverTarget = null;
if (pickOverlay) pickOverlay.style.display = 'none';
return;
}
document.documentElement.style.cursor = 'crosshair';
if (el === pickHoverTarget) return;
pickHoverTarget = el;
positionOverlayOnElement(pickOverlay, el);
pickLabel.innerHTML = 'Select this placement';
});
};
const onPickSuppressEvent = (e) => {
if (e.target.closest('#pp-nav-panel')) return;
e.preventDefault();
e.stopPropagation();
};
const onPickClick = (e) => {
if (e.target.closest('#pp-nav-panel')) return;
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
if (pickHoverTarget && !shouldSkipElement(pickHoverTarget)) {
currentTarget = pickHoverTarget;
updateContextUI(detectContextFromElement(currentTarget));
updateUI();
}
};
// --- Pick button ---
pickBtn.addEventListener('click', () => {
if (pickMode) exitPickMode();
else enterPickMode();
});
_panelPickModeCleanup = () => { if (pickMode) exitPickMode(); };
// --- Minimize / expand ---
collapseBtn.addEventListener('click', () => {
if (pickMode) exitPickMode();
panel.classList.add('minimized');
pill.style.display = 'flex';
highlightElement(null);
});
pill.addEventListener('click', () => {
panel.classList.remove('minimized');
pill.style.display = 'none';
highlightElement(currentTarget);
});
// --- Step 2 dismiss ---
step2Dismiss.addEventListener('click', () => {
step2.style.display = 'none';
});
// Handle copy button click
panel.addEventListener('click', async (e) => {
const button = e.target.closest('#pp-apply-btn');
if (!button) return;
// Skip buttons handled separately
if (button.id === 'pp-collapse-btn' || button.id === 'pp-pick-btn' || button.id === 'pp-step2-dismiss') return;
if (button.id === 'pp-apply-btn') {
const selector = generateSelector(currentTarget);
if (!selector) return;
let copied = false;
try {
// Try multiple copy methods (iframe security blocks clipboard API)
if (navigator.clipboard?.writeText) {
await navigator.clipboard.writeText(selector);
copied = true;
}
} catch {}
if (!copied) {
try {
const ta = document.createElement('textarea');
ta.value = selector;
ta.style.position = 'fixed';
ta.style.opacity = '0';
document.body.appendChild(ta);
ta.select();
copied = document.execCommand('copy');
ta.remove();
} catch {}
}
if (copied) {
applyBtn.textContent = COPIED_BUTTON_LABEL;
applyBtn.classList.add('applied');
if (applyBtnResetTimer) clearTimeout(applyBtnResetTimer);
applyBtnResetTimer = setTimeout(() => {
applyBtn.textContent = COPY_BUTTON_LABEL;
applyBtn.classList.remove('applied');
applyBtnResetTimer = null;
}, 1200);
// Show Step 2 confirmation
step2.style.display = 'block';
}
exitPickMode();
}
});
// --- Inspector mode detection ---
const inspectorWarning = panel.querySelector('#pp-inspector-warning');
let inspectorActive = typeof Shopify !== 'undefined' && Shopify.inspectMode;
const isMac = navigator.platform?.startsWith('Mac') || navigator.userAgentData?.platform === 'macOS';
const shortcut = isMac ? '⌘ ⇧ I' : 'Ctrl + Shift + I';
const enableInspectorMode = () => {
inspectorActive = true;
inspectorWarning.innerHTML = `<span class="pp-warning-icon">⚠️</span> For a better experience, press <strong>${shortcut}</strong> to turn off inspector mode`;
inspectorWarning.style.display = 'block';
};
const disableInspectorMode = () => {
inspectorActive = false;
inspectorWarning.style.display = 'none';
};
_panelInspectorActivate = enableInspectorMode;
_panelInspectorDeactivate = disableInspectorMode;
document.addEventListener('shopify:inspector:activate', enableInspectorMode);
document.addEventListener('shopify:inspector:deactivate', disableInspectorMode);
// Prevent panel/pill clicks from closing cart drawer (themes close drawer on outside mousedown)
const stopBubble = (e) => e.stopPropagation();
panel.addEventListener('mousedown', stopBubble);
panel.addEventListener('pointerdown', stopBubble);
pill.addEventListener('mousedown', stopBubble);
pill.addEventListener('pointerdown', stopBubble);
document.body.appendChild(panel);
document.body.appendChild(pill);
if (inspectorActive) enableInspectorMode();
updateUI();
return panel;
};
</script>
<!-- END app snippet --><!-- BEGIN app snippet: cartDrawer --><script>
// Determine correct locator by theme name
const cartDrawerThemeName = window.Shopify.theme.name;
let cartDrawerLocator, cartDrawerNodeToObserve, cartDrawerMutationNode;
switch (cartDrawerThemeName) {
// to support other themes add cases
// default case supports Shopify Free themes
default:
cartDrawerLocator = '.cart-drawer__footer .totals';
cartDrawerNodeToObserve = '#CartDrawer';
cartDrawerMutationNode = 'drawer__inner';
break;
}
// Begin Upstream Messaging Implementation
try {
const cartDrawerMessaging = document.createElement('div');
const price = 0 / 100;
const cartDrawerAttributes = {
'id': 'paypal-upstream-messaging-cart-drawer',
'data-pp-message': '',
'data-pp-placement': 'cart',
'data-pp-style-layout': 'text',
'data-pp-style-text-align': 'right',
'data-pp-style-logo-type': "inline",
'data-pp-style-text-color': "black",
'data-pp-style-text-size': "12",
'data-pp-style-logo-position': "",
'data-pp-amount': price,
};
Object.keys(cartDrawerAttributes).forEach((key) => {
cartDrawerMessaging.setAttribute(key, cartDrawerAttributes[key]);
});
const advancedSettingsEnabled = 'false' === 'true';
const customCartDrawerSelector = ''.trim();
if (advancedSettingsEnabled && customCartDrawerSelector !== '') {
// utils.liquid
cartDrawerLocator = parseSelector(customCartDrawerSelector);
}
if ("enabled" === 'enabled') {
waitForElement(cartDrawerLocator).then(elem => {
elem.after(cartDrawerMessaging.cloneNode());
if (advancedSettingsEnabled && isIsolatedContext() && !document.getElementById('pp-nav-panel')) {
let drawerPanelActive = false;
new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
if (!document.getElementById('pp-nav-panel')) {
setTimeout(() => {
if (!document.getElementById('pp-nav-panel')) {
createNavigationPanel(elem, cartDrawerMessaging, null, 'Cart Drawer');
drawerPanelActive = true;
}
}, 300);
}
} else if (drawerPanelActive) {
destroyNavigationPanel();
drawerPanelActive = false;
}
}, { threshold: 0.1 }).observe(elem);
}
});
// Custom selector not found — show navigator with warning when drawer opens
if (advancedSettingsEnabled && customCartDrawerSelector && !document.querySelector(cartDrawerLocator) && isIsolatedContext() && !document.getElementById('pp-nav-panel')) {
const drawerContainer = document.querySelector(cartDrawerNodeToObserve);
if (drawerContainer) {
let warningPanelActive = false;
const warning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.';
recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartDrawerLocator });
new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
if (!document.getElementById('pp-nav-panel')) {
setTimeout(() => {
if (!document.getElementById('pp-nav-panel')) {
createNavigationPanel(drawerContainer, cartDrawerMessaging, warning, 'Cart Drawer');
warningPanelActive = true;
}
}, 300);
}
} else if (warningPanelActive) {
destroyNavigationPanel();
warningPanelActive = false;
}
}, { threshold: 0.1 }).observe(drawerContainer);
}
}
// utils.liquid
watchForCartChanges(cartDrawerLocator, cartDrawerMessaging);
}
} catch (e) {
// utils.liquid
recordEvent('appEmbed:query-selector-not-found-cart-drawer', { locator: cartDrawerLocator, error: e.message });
}
</script>
<!-- END app snippet -->
</div><div id="shopify-block-AUFcrV0h2SFU3Y1lSb__9108694385781200119" class="shopify-block shopify-app-block"><script type="text/javascript">
window.Moast = window.Moast || {};
window.Moast.accesses = {
removeBranding: true,
widgetCustomization: true,
proAppBlocks: true,
multiProductTagging: true,
increasedVideoUploads: false
};
window.Moast.translations = {"quick_add":{"description":"Description","quantity":"Quantity","add_to_cart":"Add to cart","unavailable":"Unavailable","product_added_to_cart":"{{product}} added to cart"},"products_panel":{"title":"Products"},"caption":{"read_more":"Read more","read_less":"Read less"},"accessibility":{"powered_by_moast":"Powered by Moast (opens in new tab)","previous_slide":"Previous slide","next_slide":"Next slide","stories_carousel":"Stories carousel","media_carousel":"Media carousel","video_progress":"Video progress","toggle_view_mode":"Toggle view mode","close_player":"Close player","user_submitted_image":"User submitted image","media_player":"Media player","user_submitted_video":"User submitted video","autoplays_when_visible":" (autoplays when visible)","video_thumbnail":"Video thumbnail","click_to_view":"Click to view","click_to_open_in_player":"Click to open in player","content_type_image":"Image","content_type_video":"Video","item_of_total":"{{item}} of {{total}}","toggle_mute":"Toggle mute","mute":"Mute","unmute":"Unmute"}};
window.Moast.widgetSettings = {"appearance":{"theme":"dark"},"products":{"action":"add","reviewScore":false},"player":{"likes":false,"share":false,"captions":false,"muted":true,"handles":false},"feeds":{"minimum":1},"video":{"mode":"quality"}};
</script>
</div><div id="shopify-block-AbmZNMkJoZTRRcUIvb__10830403595879607806" class="shopify-block shopify-app-block"><style>
.rio-withoutBranding .FloatingWidget .R-Logo,
.rio-withoutBranding .CarouselWidget .R-ReviewsioLogo,
.rio-withoutBranding .ElementsWidget .footer__reviewsLogo-container,
.rio-withoutBranding .QnaWidget .footer__reviewsLogo-container,
.rio-withoutBranding .MediaGalleryWidget-prefix .R-ReviewsioLogo,
.rio-withoutBranding .RatingBarWidget .R-PlatformIcon {
display: none !important;
}
</style>
<script>
window.__REVIEWS_EDITOR__ = false;
window.__REVIEWS_DEMO_CONFIG__ = {
store: 'ecommerce-demo-store',
sku: 'bunch_of_flowers_sku;blue_flowers_sku;white_flowers_sku;pastel_flowers_sku;summer_selection_sku',
widgetIds: {
nuggets: 'W10cpKyjl72VtHv6',
ugc: '7sG9C5qNeKpvhykZ',
floating: 'GBvqmKV1Zy9H4Mpd',
ratingBar: 'pxNMXi7FTlODgr8Q',
survey: 'uLJcD7bFpGMf1Z0C'
},
surveyCampaignId: '392'
};
var reviewsIoStore = 'www.flybaby.berlin';
var reviewsIoEnableSyndication = false;
var reviewsIoLang = 'en';
</script>
<script defer src="https://cdn.shopify.com/extensions/019f1dcd-2e41-759b-8190-d404bf58416d/reviews-co-uk-product-and-merchant-review-collection-59/assets/reviewsio-preview.js"></script>
</div><div id="shopify-block-AMVRacTJYQmt2RDBQY__16274361319697914395" class="shopify-block shopify-app-block">
<reviewsio-floating data-id="AMVRacTJYQmt2RDBQY__16274361319697914395">
<div class="reviews-io-floating-widget rio-withoutBranding"
data-widget-id="meotHnZKcIElGUs1"
data-store-name="flybaby-8798.myshopify.com"
lang="en"
></div>
<script>
(function () {
function ensureScriptOnce(src, id) {
if (id && document.getElementById(id)) return;
if (id) {
var existing = document.querySelector('script[src="' + src + '"]');
if (existing) return;
}
var script = document.createElement('script');
if (id) script.id = id;
script.setAttribute('src', src);
document.body.appendChild(script);
}
function scheduleEditorReload(srcBase) {
// In Theme Editor, changing settings replaces section DOM, but the
// Reviews.io script may not automatically re-scan. Reload it (debounced).
if (!window.__REVIEWS_EDITOR__) return;
if (window.__reviewsioFloatingReloadTimer) {
window.clearTimeout(window.__reviewsioFloatingReloadTimer);
}
window.__reviewsioFloatingReloadTimer = window.setTimeout(function () {
var script = document.createElement('script');
script.setAttribute('src', srcBase + '?editorReload=' + Date.now());
script.setAttribute('data-reviewsio-editor-reload', 'true');
document.body.appendChild(script);
}, 150);
}
var __reviewsioFloatingInitAttempts = 0;
var MAX_INIT_ATTEMPTS = 25;
var INIT_RETRY_DELAY_MS = 200;
function init() {
var fallbackStore = (window.Shopify && typeof window.Shopify.shop === 'string') ? window.Shopify.shop : '';
var storeFromCore = (typeof reviewsIoStore !== 'undefined' && reviewsIoStore) ? reviewsIoStore : '';
var store = storeFromCore || fallbackStore;
if (!store) {
__reviewsioFloatingInitAttempts += 1;
if (__reviewsioFloatingInitAttempts < MAX_INIT_ATTEMPTS) {
window.setTimeout(init, INIT_RETRY_DELAY_MS);
}
return;
}
var widgets = document.querySelectorAll('.reviews-io-floating-widget');
if (!widgets || !widgets.length) return;
var hasAnyValidWidgetId = false;
var shouldReloadInEditor = false;
widgets.forEach(function (widget) {
var widgetId = (widget.getAttribute('data-widget-id') || '').trim();
if (!widgetId) return;
hasAnyValidWidgetId = true;
var currentStore = (widget.getAttribute('data-store-name') || '').trim();
// Avoid overriding demo preview injection (demo widget id + demo store).
var demo = window.__REVIEWS_DEMO_CONFIG__;
var demoWidgetId = demo && demo.widgetIds ? demo.widgetIds.floating : '';
var isDemoInjected = !!(demo && demo.store && demoWidgetId && widgetId === demoWidgetId && currentStore === demo.store);
if (!currentStore) {
widget.setAttribute('data-store-name', store);
currentStore = (widget.getAttribute('data-store-name') || '').trim();
} else if (!isDemoInjected && storeFromCore && currentStore !== storeFromCore) {
widget.setAttribute('data-store-name', storeFromCore);
currentStore = (widget.getAttribute('data-store-name') || '').trim();
}
if (typeof reviewsIoLang !== 'undefined' && reviewsIoLang) {
widget.setAttribute('lang', reviewsIoLang);
}
if (window.__REVIEWS_EDITOR__) {
var lang = (typeof reviewsIoLang !== 'undefined' && reviewsIoLang) ? reviewsIoLang : '';
var key = widgetId + '|' + currentStore + '|' + lang;
var prevKey = widget.getAttribute('data-reviewsio-init-key') || '';
if (prevKey !== key) {
widget.setAttribute('data-reviewsio-init-key', key);
shouldReloadInEditor = true;
}
}
});
if (!hasAnyValidWidgetId) return;
if (window.__REVIEWS_EDITOR__) {
// If settings changed, re-run the script so it re-scans the page.
if (shouldReloadInEditor) {
scheduleEditorReload('https://widget.reviews.io/modern-widgets/floating.js');
} else {
ensureScriptOnce('https://widget.reviews.io/modern-widgets/floating.js', 'reviewsio-floating-js');
}
return;
}
ensureScriptOnce('https://widget.reviews.io/modern-widgets/floating.js', 'reviewsio-floating-js');
}
window.__reviewsioInitFloatingWidgets = window.__reviewsioInitFloatingWidgets || init;
if (document.readyState === 'loading') {
window.addEventListener('DOMContentLoaded', init);
} else {
init();
}
document.addEventListener('shopify:section:load', init);
document.addEventListener('shopify:block:select', init);
})();
</script>
</reviewsio-floating>
</div><script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
</body>
</html>