{"product_id":"wiwu-essen-travel-pouch-noir","title":"WIWU Essen Travel Pouch - Noir","description":"\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Tajawal:wght@400;500;600;700\u0026display=swap');\n\n\/* =========================================================\n   FONE MARINA · LATEST\n   1 IMAGE + 1 VIDEO\n========================================================= *\/\n\n.fone-marina,\n.fone-marina *{\n  box-sizing:border-box;\n}\n\n.fone-marina{\n  --fm-black:#111214;\n  --fm-text:#61656d;\n  --fm-muted:#969aa1;\n  --fm-line:#ececef;\n  --fm-soft:#f5f5f7;\n  --fm-orange:#ff6b00;\n\n  \/* صورة المنتج *\/\n  --fm-image-fit:cover;\n  --fm-image-position:center;\n\n  width:100%;\n  margin:0;\n  color:var(--fm-black);\n\n  font-family:\n    -apple-system,\n    BlinkMacSystemFont,\n    \"Segoe UI\",\n    Roboto,\n    Arial,\n    sans-serif;\n}\n\n.fone-marina button,\n.fone-marina summary{\n  -webkit-tap-highlight-color:transparent;\n}\n\n\n.fone-marina .fm-media-config{\n  display:none!important;\n}\n\n\/* =========================================================\n   LANGUAGE\n========================================================= *\/\n\n.fone-marina .fm-lang-radio{\n  position:absolute;\n  opacity:0;\n  pointer-events:none;\n}\n\n.fone-marina .fm-fr,\n.fone-marina .fm-ar{\n  display:none!important;\n}\n\n.fone-marina\n#fm-lang-fr:checked\n~ .fm-shell\n.fm-fr{\n  display:block!important;\n}\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-ar{\n  display:block!important;\n}\n\n.fone-marina\n#fm-lang-fr:checked\n~ .fm-shell\nspan.fm-fr{\n  display:inline!important;\n}\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\nspan.fm-ar{\n  display:inline!important;\n}\n\n.fone-marina .fm-ar,\n.fone-marina .fm-ar *{\n  font-family:\n    \"Tajawal\",\n    Tahoma,\n    Arial,\n    sans-serif!important;\n\n  letter-spacing:0!important;\n}\n\n.fone-marina .fm-ar{\n  direction:rtl;\n  text-align:right;\n}\n\n\n\/* =========================================================\n   SHELL\n========================================================= *\/\n\n.fone-marina .fm-shell{\n  width:100%;\n  margin:0;\n  padding:0;\n}\n\n\n\/* =========================================================\n   TOP BAR\n========================================================= *\/\n\n.fone-marina .fm-top{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n\n  gap:16px;\n\n  padding:5px 0 19px;\n}\n\n.fone-marina .fm-top-mark{\n  width:24px;\n  height:2px;\n\n  border-radius:999px;\n\n  background:var(--fm-orange);\n}\n\n.fone-marina .fm-lang-switch{\n  display:inline-flex;\n\n  gap:3px;\n\n  padding:3px;\n\n  border-radius:999px;\n\n  background:#f0f0f2;\n\n  direction:ltr;\n}\n\n.fone-marina .fm-lang-switch label{\n  min-width:43px;\n\n  padding:7px 11px;\n\n  border-radius:999px;\n\n  color:#92969d;\n\n  font-size:10px;\n  font-weight:720;\n\n  line-height:1;\n\n  text-align:center;\n\n  cursor:pointer;\n}\n\n.fone-marina\n#fm-lang-fr:checked\n~ .fm-shell\n.fm-lang-switch\nlabel[for=\"fm-lang-fr\"],\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-lang-switch\nlabel[for=\"fm-lang-ar\"]{\n  color:#fff;\n  background:#111214;\n}\n\n\n\/* =========================================================\n   INTRO\n========================================================= *\/\n\n.fone-marina .fm-intro{\n  padding:\n    25px 0 34px;\n\n  border-top:\n    1px solid\n    var(--fm-line);\n}\n\n.fone-marina .fm-brand{\n  display:flex;\n  align-items:center;\n\n  gap:8px;\n\n  margin-bottom:11px;\n\n  color:#7d8188;\n\n  font-size:8px;\n  font-weight:760;\n\n  letter-spacing:.15em;\n  text-transform:uppercase;\n}\n\n.fone-marina .fm-brand::before{\n  content:\"\";\n\n  width:5px;\n  height:5px;\n\n  flex:0 0 5px;\n\n  border-radius:50%;\n\n  background:var(--fm-orange);\n}\n\n.fone-marina .fm-title{\n  max-width:760px;\n\n  margin:0;\n\n  color:var(--fm-black);\n\n  font-size:\n    clamp(\n      34px,\n      6vw,\n      58px\n    );\n\n  font-weight:730;\n\n  line-height:.98;\n  letter-spacing:-.045em;\n}\n\n.fone-marina .fm-subtitle{\n  margin-top:10px;\n\n  color:#a0a3a8;\n\n  font-size:8px;\n  font-weight:720;\n\n  line-height:1.5;\n  letter-spacing:.13em;\n\n  text-transform:uppercase;\n}\n\n.fone-marina .fm-description{\n  max-width:720px;\n\n  margin:\n    22px 0 0;\n\n  color:var(--fm-text);\n\n  font-size:12px;\n  line-height:1.82;\n}\n\n.fone-marina .fm-description strong{\n  color:#17181a;\n\n  font-weight:650;\n}\n\n.fone-marina .fm-intro-line{\n  width:34px;\n  height:3px;\n\n  margin-top:20px;\n\n  border-radius:999px;\n\n  background:var(--fm-orange);\n}\n\n\n\/* =========================================================\n   IMAGE GALLERY · 1 TO 4 IMAGES · OPTIONAL\n========================================================= *\/\n\n.fone-marina .fm-image-section{\n  display:none;\n\n  margin:\n    4px 0 24px;\n}\n\n.fone-marina .fm-image-section.is-ready{\n  display:block;\n}\n\n.fone-marina .fm-image-frame{\n  position:relative;\n\n  width:100%;\n  max-width:620px;\n\n  aspect-ratio:\n    31 \/ 38;\n\n  margin:0 auto;\n\n  overflow:hidden;\n\n  border-radius:26px;\n\n  background:var(--fm-soft);\n\n  box-shadow:\n    0 14px 38px\n    rgba(17,18,20,.07);\n}\n\n.fone-marina .fm-image-track{\n  display:flex;\n\n  width:100%;\n  height:100%;\n\n  overflow-x:auto;\n  overflow-y:hidden;\n\n  scroll-snap-type:x mandatory;\n  scroll-behavior:smooth;\n\n  overscroll-behavior-x:contain;\n\n  -webkit-overflow-scrolling:touch;\n\n  scrollbar-width:none;\n\n  direction:ltr;\n  touch-action:pan-x pan-y;\n}\n\n.fone-marina\n.fm-image-track::-webkit-scrollbar{\n  display:none;\n}\n\n.fone-marina .fm-image-slide{\n  position:relative;\n\n  flex:\n    0 0 100%;\n\n  width:100%;\n  min-width:100%;\n  height:100%;\n\n  margin:0;\n\n  scroll-snap-align:start;\n  scroll-snap-stop:always;\n\n  background:var(--fm-soft);\n}\n\n.fone-marina .fm-image-slide.is-hidden{\n  display:none;\n}\n\n.fone-marina .fm-image{\n  display:block;\n\n  width:100%;\n  height:100%;\n\n  margin:0;\n\n  object-fit:\n    var(--fm-image-fit);\n\n  object-position:\n    var(--fm-image-position);\n\n  background:var(--fm-soft);\n\n  user-select:none;\n  -webkit-user-drag:none;\n}\n\n.fone-marina\n.fm-image[src*=\"COLLEZ-IMAGE-\"]{\n  visibility:hidden;\n}\n\n.fone-marina .fm-image-frame::after{\n  content:\"\";\n\n  position:absolute;\n\n  left:0;\n  right:0;\n  bottom:0;\n\n  z-index:4;\n\n  height:120px;\n\n  background:\n    linear-gradient(\n      to top,\n      rgba(10,10,11,.38) 0%,\n      rgba(10,10,11,.10) 48%,\n      rgba(10,10,11,0) 100%\n    );\n\n  pointer-events:none;\n}\n\n.fone-marina .fm-image-site{\n  position:absolute;\n\n  left:50%;\n  bottom:15px;\n\n  z-index:6;\n\n  transform:\n    translateX(-50%);\n\n  color:\n    rgba(255,255,255,.96);\n\n  white-space:nowrap;\n\n  font-size:7.5px;\n  font-weight:600;\n\n  letter-spacing:.15em;\n\n  text-shadow:\n    0 1px 4px rgba(0,0,0,.42),\n    0 2px 12px rgba(0,0,0,.22);\n\n  pointer-events:none;\n}\n\n\n\/* COUNTER *\/\n\n.fone-marina .fm-image-counter{\n  position:absolute;\n\n  top:13px;\n  right:13px;\n\n  z-index:7;\n\n  display:none;\n  align-items:center;\n\n  min-width:43px;\n\n  padding:\n    5px 8px;\n\n  border:\n    1px solid\n    rgba(255,255,255,.28);\n\n  border-radius:999px;\n\n  background:\n    rgba(18,19,21,.25);\n\n  color:\n    rgba(255,255,255,.94);\n\n  font-size:7.2px;\n  font-weight:700;\n\n  letter-spacing:.07em;\n\n  backdrop-filter:\n    blur(10px);\n\n  -webkit-backdrop-filter:\n    blur(10px);\n}\n\n.fone-marina\n.fm-image-section.has-multiple\n.fm-image-counter{\n  display:flex;\n}\n\n\n\/* SWIPE HINT *\/\n\n.fone-marina .fm-swipe-hint{\n  position:absolute;\n\n  left:13px;\n  top:13px;\n\n  z-index:7;\n\n  display:none;\n  align-items:center;\n\n  gap:6px;\n\n  padding:\n    5px 8px;\n\n  border:\n    1px solid\n    rgba(255,255,255,.26);\n\n  border-radius:999px;\n\n  background:\n    rgba(18,19,21,.21);\n\n  color:\n    rgba(255,255,255,.90);\n\n  font-size:5.8px;\n  font-weight:700;\n\n  letter-spacing:.10em;\n  text-transform:uppercase;\n\n  backdrop-filter:\n    blur(10px);\n\n  -webkit-backdrop-filter:\n    blur(10px);\n\n  pointer-events:none;\n\n  transition:\n    opacity .28s ease,\n    transform .28s ease;\n}\n\n.fone-marina\n.fm-image-section.has-multiple\n.fm-swipe-hint{\n  display:flex;\n}\n\n.fone-marina\n.fm-image-section.is-used\n.fm-swipe-hint{\n  opacity:0;\n  transform:translateY(-4px);\n}\n\n.fone-marina .fm-swipe-arrow{\n  font-size:11px;\n  line-height:1;\n}\n\n\n\/* DOTS BELOW IMAGE *\/\n\n.fone-marina .fm-image-dots{\n  display:none;\n  align-items:center;\n  justify-content:center;\n\n  gap:7px;\n\n  margin-top:13px;\n\n  direction:ltr;\n}\n\n.fone-marina\n.fm-image-section.has-multiple\n.fm-image-dots{\n  display:flex;\n}\n\n.fone-marina .fm-image-dot{\n  appearance:none;\n  -webkit-appearance:none;\n\n  width:28px;\n  height:4px;\n\n  margin:0;\n  padding:0;\n\n  border:0;\n  border-radius:999px;\n\n  background:#dbdcdf;\n\n  cursor:pointer;\n\n  transition:\n    width .25s ease,\n    background .25s ease;\n}\n\n.fone-marina .fm-image-dot.is-active{\n  width:39px;\n\n  background:\n    var(--fm-orange);\n}\n\n\n\/* =========================================================\n   EDITORIAL FEATURES · 3 KEY STORIES\n========================================================= *\/\n\n.fone-marina .fm-features{\n  margin:\n    2px 0 30px;\n}\n\n.fone-marina .fm-feature{\n  position:relative;\n\n  display:grid;\n\n  grid-template-columns:\n    minmax(112px,.58fr)\n    minmax(0,1.42fr);\n\n  gap:32px;\n\n  padding:\n    21px 0 23px;\n\n  border-top:\n    1px solid\n    var(--fm-line);\n}\n\n.fone-marina .fm-feature:first-child::before{\n  display:none;\n}\n\n.fone-marina .fm-feature-index{\n  margin-bottom:8px;\n\n  color:#b0b3b8;\n\n  font-size:6.8px;\n  font-weight:760;\n\n  letter-spacing:.14em;\n}\n\n.fone-marina .fm-feature-label{\n  color:var(--fm-orange);\n\n  font-size:6.8px;\n  font-weight:790;\n\n  letter-spacing:.15em;\n  text-transform:uppercase;\n}\n\n.fone-marina .fm-feature-title{\n  max-width:560px;\n\n  margin:0 0 8px;\n\n  color:#111214;\n\n  font-size:\n    clamp(\n      22px,\n      3.2vw,\n      32px\n    );\n\n  font-weight:660;\n\n  line-height:1.08;\n  letter-spacing:-.038em;\n}\n\n.fone-marina .fm-feature-text{\n  max-width:590px;\n\n  margin:0;\n\n  color:#7b7f86;\n\n  font-size:10.8px;\n  line-height:1.72;\n}\n\n.fone-marina .fm-feature-text strong{\n  color:#25272b;\n\n  font-weight:650;\n}\n\n.fone-marina .fm-feature-meta{\n  display:flex;\n  flex-wrap:wrap;\n\n  gap:6px 15px;\n\n  margin-top:11px;\n}\n\n.fone-marina .fm-feature-meta span{\n  position:relative;\n\n  padding-left:11px;\n\n  color:#999ca2;\n\n  font-size:6.6px;\n  font-weight:700;\n\n  letter-spacing:.095em;\n  text-transform:uppercase;\n}\n\n.fone-marina .fm-feature-meta span::before{\n  content:\"\";\n\n  position:absolute;\n\n  left:0;\n  top:50%;\n\n  width:4px;\n  height:4px;\n\n  transform:\n    translateY(-50%);\n\n  border-radius:50%;\n\n  background:\n    var(--fm-orange);\n}\n\n.fone-marina .fm-ar .fm-feature-meta span{\n  padding-left:0;\n  padding-right:11px;\n}\n\n.fone-marina .fm-ar .fm-feature-meta span::before{\n  left:auto;\n  right:0;\n}\n\n\/* =========================================================\n   SINGLE VIDEO · OPTIONAL\n========================================================= *\/\n\n.fone-marina .fm-video-section{\n  display:none;\n\n  margin:\n    30px 0 28px;\n}\n\n.fone-marina .fm-video-section.is-ready{\n  display:block;\n}\n\n.fone-marina .fm-video-heading{\n  display:flex;\n  align-items:center;\n\n  gap:8px;\n\n  max-width:420px;\n\n  margin:\n    0 auto 11px;\n\n  color:#858990;\n\n  font-size:7px;\n  font-weight:750;\n\n  letter-spacing:.15em;\n  text-transform:uppercase;\n}\n\n.fone-marina .fm-video-heading::before{\n  content:\"\";\n\n  width:5px;\n  height:5px;\n\n  flex:0 0 5px;\n\n  border-radius:50%;\n\n  background:var(--fm-orange);\n}\n\n.fone-marina .fm-video-frame{\n  position:relative;\n\n  width:100%;\n  max-width:420px;\n\n  aspect-ratio:\n    9 \/ 16;\n\n  margin:0 auto;\n\n  overflow:hidden;\n\n  border-radius:24px;\n\n  background:#111;\n\n  box-shadow:\n    0 16px 40px\n    rgba(17,18,20,.09);\n}\n\n.fone-marina .fm-video,\n.fone-marina .fm-youtube{\n  display:none;\n\n  width:100%;\n  height:100%;\n\n  margin:0;\n\n  background:#111;\n}\n\n.fone-marina .fm-video.is-active,\n.fone-marina .fm-youtube.is-active{\n  display:block;\n}\n\n.fone-marina .fm-video{\n  object-fit:cover;\n  object-position:center;\n\n  pointer-events:none;\n\n  -webkit-user-select:none;\n  user-select:none;\n}\n\n.fone-marina .fm-youtube{\n  border:0;\n\n  pointer-events:none;\n}\n\n.fone-marina .fm-video::-webkit-media-controls,\n.fone-marina .fm-video::-webkit-media-controls-panel,\n.fone-marina .fm-video::-webkit-media-controls-play-button,\n.fone-marina .fm-video::-webkit-media-controls-start-playback-button{\n  display:none!important;\n  opacity:0!important;\n}\n\n.fone-marina .fm-video-frame::after{\n  content:\"\";\n\n  position:absolute;\n\n  left:0;\n  right:0;\n  bottom:0;\n\n  height:115px;\n\n  z-index:2;\n\n  background:\n    linear-gradient(\n      to top,\n      rgba(10,10,11,.48) 0%,\n      rgba(10,10,11,.14) 48%,\n      rgba(10,10,11,0) 100%\n    );\n\n  pointer-events:none;\n}\n\n.fone-marina .fm-video-site{\n  position:absolute;\n\n  left:50%;\n  bottom:15px;\n\n  z-index:4;\n\n  transform:\n    translateX(-50%);\n\n  color:\n    rgba(255,255,255,.96);\n\n  white-space:nowrap;\n\n  font-size:7.5px;\n  font-weight:600;\n\n  letter-spacing:.15em;\n\n  text-shadow:\n    0 1px 4px rgba(0,0,0,.42),\n    0 2px 12px rgba(0,0,0,.22);\n\n  pointer-events:none;\n}\n\n\n\/* =========================================================\n   SOUND BUTTON\n========================================================= *\/\n\n.fone-marina .fm-sound{\n  position:absolute;\n\n  top:14px;\n  right:14px;\n\n  z-index:6;\n\n  display:flex;\n  align-items:center;\n  justify-content:center;\n\n  width:38px;\n  height:38px;\n\n  padding:0;\n\n  border:\n    1px solid\n    rgba(255,255,255,.30);\n\n  border-radius:50%;\n\n  background:\n    rgba(15,15,16,.46);\n\n  color:#fff;\n\n  cursor:pointer;\n\n  backdrop-filter:\n    blur(10px);\n\n  -webkit-backdrop-filter:\n    blur(10px);\n\n  transition:\n    background .2s ease,\n    transform .2s ease;\n}\n\n.fone-marina .fm-sound:hover{\n  background:\n    rgba(15,15,16,.62);\n}\n\n.fone-marina .fm-sound:active{\n  transform:scale(.94);\n}\n\n.fone-marina .fm-sound svg{\n  display:block;\n\n  width:17px;\n  height:17px;\n\n  fill:none;\n  stroke:currentColor;\n\n  stroke-width:1.8;\n  stroke-linecap:round;\n  stroke-linejoin:round;\n}\n\n.fone-marina .fm-icon-on{\n  display:none;\n}\n\n.fone-marina\n.fm-sound.is-on\n.fm-icon-off{\n  display:none;\n}\n\n.fone-marina\n.fm-sound.is-on\n.fm-icon-on{\n  display:block;\n}\n\n\n\/* =========================================================\n   DETAILS\n========================================================= *\/\n\n.fone-marina .fm-details{\n  margin-top:22px;\n}\n\n.fone-marina .fm-tech{\n  border-top:\n    1px solid\n    #dedfe2;\n\n  border-bottom:\n    1px solid\n    #dedfe2;\n}\n\n.fone-marina .fm-tech summary{\n  position:relative;\n\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n\n  min-height:62px;\n\n  padding:\n    0 36px 0 0;\n\n  color:#111214;\n\n  cursor:pointer;\n  list-style:none;\n  user-select:none;\n}\n\n.fone-marina\n.fm-tech\nsummary::-webkit-details-marker{\n  display:none;\n}\n\n.fone-marina\n.fm-tech\nsummary::before,\n\n.fone-marina\n.fm-tech\nsummary::after{\n  content:\"\";\n\n  position:absolute;\n\n  right:3px;\n  top:50%;\n\n  width:14px;\n  height:1.3px;\n\n  border-radius:999px;\n\n  background:#151619;\n\n  transform:\n    translateY(-50%);\n\n  transition:\n    transform .22s ease;\n}\n\n.fone-marina\n.fm-tech\nsummary::after{\n  transform:\n    translateY(-50%)\n    rotate(90deg);\n}\n\n.fone-marina\n.fm-tech[open]\nsummary::after{\n  transform:\n    translateY(-50%);\n}\n\n.fone-marina .fm-tech-label{\n  display:flex;\n  align-items:center;\n\n  gap:9px;\n\n  color:#25272b;\n\n  font-size:8.5px;\n  font-weight:780;\n\n  letter-spacing:.12em;\n  text-transform:uppercase;\n}\n\n.fone-marina .fm-tech-label::before{\n  content:\"\";\n\n  width:5px;\n  height:5px;\n\n  flex:0 0 5px;\n\n  border-radius:50%;\n\n  background:\n    var(--fm-orange);\n}\n\n.fone-marina .fm-specs{\n  padding:\n    2px 0 14px;\n}\n\n.fone-marina .fm-spec{\n  display:grid;\n\n  grid-template-columns:\n    42% 58%;\n\n  gap:12px;\n\n  padding:\n    10px 0;\n\n  border-top:\n    1px solid\n    #f1f1f3;\n}\n\n.fone-marina .fm-spec-name{\n  color:#90949b;\n\n  font-size:9.5px;\n  line-height:1.5;\n}\n\n.fone-marina .fm-spec-value{\n  color:#222326;\n\n  font-size:10px;\n  font-weight:650;\n\n  line-height:1.5;\n\n  text-align:right;\n}\n\n\/* =========================================================\n   AR TECH\n========================================================= *\/\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-tech summary{\n  direction:rtl;\n\n  padding:\n    0 0 0 32px;\n}\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-tech summary::before,\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-tech summary::after{\n  right:auto;\n  left:2px;\n}\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-spec{\n  direction:rtl;\n}\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-spec-name{\n  text-align:right;\n}\n\n.fone-marina\n#fm-lang-ar:checked\n~ .fm-shell\n.fm-spec-value{\n  text-align:left;\n}\n\n\n\/* =========================================================\n   MOBILE\n========================================================= *\/\n\n@media screen and (max-width:749px){\n\n  .fone-marina .fm-top{\n    padding:\n      4px 0 17px;\n  }\n\n  .fone-marina .fm-intro{\n    padding:\n      21px 0 29px;\n  }\n\n  .fone-marina .fm-title{\n    font-size:36px;\n  }\n\n  .fone-marina .fm-description{\n    margin-top:18px;\n\n    font-size:11px;\n    line-height:1.72;\n  }\n\n  .fone-marina .fm-image-section{\n    margin-bottom:22px;\n  }\n\n  .fone-marina .fm-image-frame{\n    width:\n      calc(100% + 28px);\n\n    max-width:none;\n\n    height:520px;\n\n    aspect-ratio:auto;\n\n    margin-right:-14px;\n    margin-left:-14px;\n\n    border-radius:24px;\n  }\n\n  .fone-marina .fm-image-counter{\n    top:11px;\n    right:11px;\n\n    min-width:41px;\n\n    padding:\n      5px 7px;\n\n    font-size:6.9px;\n  }\n\n  .fone-marina .fm-swipe-hint{\n    top:11px;\n    left:11px;\n\n    padding:\n      5px 7px;\n\n    font-size:5.4px;\n  }\n\n  .fone-marina .fm-image-dot{\n    width:25px;\n  }\n\n  .fone-marina .fm-image-dot.is-active{\n    width:35px;\n  }\n\n  .fone-marina .fm-feature{\n    grid-template-columns:1fr;\n\n    gap:7px;\n\n    padding:\n      18px 0 20px;\n  }\n\n  .fone-marina .fm-feature-index{\n    display:inline-block;\n\n    margin:\n      0 9px 0 0;\n  }\n\n  .fone-marina .fm-feature-label{\n    display:inline-block;\n\n    color:var(--fm-orange);\n  }\n\n  .fone-marina .fm-feature-index{\n    color:#b0b3b8;\n  }\n\n  .fone-marina .fm-feature-title{\n    max-width:350px;\n\n    margin-bottom:6px;\n\n    font-size:23px;\n    line-height:1.10;\n  }\n\n  .fone-marina .fm-feature-text{\n    max-width:none;\n\n    font-size:10.1px;\n    line-height:1.68;\n  }\n\n  .fone-marina .fm-feature-meta{\n    margin-top:10px;\n\n    gap:\n      5px 13px;\n  }\n\n  .fone-marina .fm-feature-meta span{\n    font-size:6.7px;\n  }\n\n  .fone-marina .fm-image-site{\n    bottom:13px;\n\n    font-size:7px;\n  }\n\n  .fone-marina .fm-break{\n    grid-template-columns:1fr;\n\n    gap:14px;\n\n    padding:\n      26px 0 29px;\n  }\n\n  .fone-marina .fm-break::before{\n    width:36px;\n  }\n\n  .fone-marina .fm-break-kicker{\n    margin-bottom:9px;\n  }\n\n  .fone-marina .fm-break-title{\n    max-width:330px;\n\n    font-size:29px;\n    line-height:1.06;\n  }\n\n  .fone-marina .fm-break-copy{\n    max-width:none;\n\n    font-size:10.7px;\n    line-height:1.76;\n  }\n\n  .fone-marina .fm-break-note{\n    margin-top:13px;\n\n    font-size:6.7px;\n  }\n\n  .fone-marina .fm-video-section{\n    margin:\n      26px 0 24px;\n  }\n\n  .fone-marina .fm-video-heading{\n    max-width:none;\n\n    margin-bottom:9px;\n\n    font-size:6.8px;\n  }\n\n  .fone-marina .fm-video-frame{\n    width:\n      calc(100% + 28px);\n\n    max-width:none;\n\n    margin-right:-14px;\n    margin-left:-14px;\n\n    border-radius:24px;\n  }\n\n  .fone-marina .fm-video-site{\n    bottom:12px;\n\n    font-size:7px;\n  }\n\n  .fone-marina .fm-sound{\n    top:12px;\n    right:12px;\n\n    width:36px;\n    height:36px;\n  }\n\n  .fone-marina .fm-details{\n    margin-top:14px;\n  }\n\n  .fone-marina .fm-tech summary{\n    min-height:58px;\n  }\n\n  .fone-marina .fm-spec{\n    grid-template-columns:\n      40% 60%;\n\n    gap:8px;\n  }\n\n}\n\n\n\/* =========================================================\n   TABLET\n========================================================= *\/\n\n@media screen and (min-width:750px) and (max-width:1099px){\n\n  .fone-marina .fm-image-frame{\n    max-width:580px;\n\n    height:720px;\n\n    aspect-ratio:auto;\n  }\n\n}\n\n\n\/* =========================================================\n   REDUCED MOTION\n========================================================= *\/\n\n@media (prefers-reduced-motion:reduce){\n\n  .fone-marina *,\n  .fone-marina *::before,\n  .fone-marina *::after{\n    transition-duration:.01ms!important;\n    animation-duration:.01ms!important;\n  }\n\n}\n\u003c\/style\u003e\n\n\n\u003cdiv class=\"fone-marina\"\u003e\n\n  \u003c!-- =====================================================\n       MEDIA LINKS · اختياري\n       يمكنك وضع الروابط هنا، أو مباشرة داخل src لكل صورة.\n       الكود يستعمل الرابط الصحيح تلقائيا.\n       اترك أي رابط غير مستعمل على COLLEZ-...\n  ====================================================== --\u003e\n\n  \u003cdiv class=\"fm-media-config\"\u003e\n    \u003cspan data-fm-key=\"image-1\" data-url=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0761\/3857\/8058\/files\/WIWU_Essen_Travel_Pouch_Organize_Storage_Bag_-_fone_-img3.jpg?v=1792090063\"\u003e\u003c\/span\u003e\n    \u003cspan data-fm-key=\"image-2\" data-url=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0761\/3857\/8058\/files\/WIWU_Essen_Travel_Pouch_Organize_Storage_Bag_-_fone_-img4.png?v=1792090338\"\u003e\u003c\/span\u003e\n    \u003cspan data-fm-key=\"image-3\" data-url=\"COLLEZ-IMAGE-3-ICI\"\u003e\u003c\/span\u003e\n    \u003cspan data-fm-key=\"image-4\" data-url=\"COLLEZ-IMAGE-4-ICI\"\u003e\u003c\/span\u003e\n    \u003cspan data-fm-key=\"video-shopify\" data-url=\"COLLEZ-VIDEO-SHOPIFY-ICI\"\u003e\u003c\/span\u003e\n    \u003cspan data-fm-key=\"video-youtube\" data-url=\"https:\/\/youtube.com\/shorts\/b_5hGntUSGA?feature=share\"\u003e\u003c\/span\u003e\n  \u003c\/div\u003e\n\n\n\n  \u003c!-- =====================================================\n       LANG\n  ====================================================== --\u003e\n\n  \u003cinput class=\"fm-lang-radio\" type=\"radio\" name=\"fm-language\" id=\"fm-lang-fr\" checked\u003e\n\n  \u003cinput class=\"fm-lang-radio\" type=\"radio\" name=\"fm-language\" id=\"fm-lang-ar\"\u003e\n\n\n  \u003cdiv class=\"fm-shell\"\u003e\n\n\n    \u003c!-- =====================================================\n         TOP\n    ====================================================== --\u003e\n\n    \u003cdiv class=\"fm-top\"\u003e\n\n      \u003cdiv class=\"fm-top-mark\" aria-hidden=\"true\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fm-lang-switch\"\u003e\n\n        \u003clabel for=\"fm-lang-fr\"\u003e\n          FR\n        \u003c\/label\u003e\n\n        \u003clabel for=\"fm-lang-ar\"\u003e\n          العربية\n        \u003c\/label\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003c!-- =====================================================\n         INTRO FR\n    ====================================================== --\u003e\n    \u003cdiv class=\"fm-fr\"\u003e\n      \u003csection class=\"fm-intro\"\u003e\n        \u003cdiv class=\"fm-brand\"\u003eWIWU\u003c\/div\u003e\n        \u003ch2 class=\"fm-title\"\u003eESSEN TRAVEL POUCH\u003c\/h2\u003e\n        \u003cdiv class=\"fm-subtitle\"\u003eOrganisation compacte · Résistant à l’eau · Ultra-léger\u003c\/div\u003e\n        \u003cp class=\"fm-description\"\u003e\n          Le \u003cstrong\u003eWIWU Essen Travel Pouch\u003c\/strong\u003e est conçu pour garder vos essentiels bien organisés sans prendre inutilement de place.\n          Son format compact offre une \u003cstrong\u003ecapacité intérieure pratique\u003c\/strong\u003e pour les câbles, chargeurs, power bank, écouteurs, téléphone, documents et petits accessoires du quotidien.\n          Fabriqué en \u003cstrong\u003epolyester 1200D\u003c\/strong\u003e avec détails en PU, il bénéficie d’une surface \u003cstrong\u003erésistante à l’eau\u003c\/strong\u003e, tout en restant léger et facile à transporter grâce à sa poignée intégrée.\n        \u003c\/p\u003e\n        \u003cdiv class=\"fm-intro-line\"\u003e\u003c\/div\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- =====================================================\n         INTRO AR\n    ====================================================== --\u003e\n    \u003cdiv class=\"fm-ar\"\u003e\n      \u003csection class=\"fm-intro\"\u003e\n        \u003cdiv class=\"fm-brand\"\u003eWIWU\u003c\/div\u003e\n        \u003ch2 class=\"fm-title\"\u003eESSEN TRAVEL POUCH\u003c\/h2\u003e\n        \u003cdiv class=\"fm-subtitle\"\u003eتنظيم مدمج · مقاوم للماء · خفيف الوزن\u003c\/div\u003e\n        \u003cp class=\"fm-description\"\u003e\n          صُممت حقيبة \u003cstrong\u003eWIWU Essen Travel Pouch\u003c\/strong\u003e لتنظيم الأساسيات اليومية والسفر بدون أخذ مساحة كبيرة.\n          يوفر الحجم المدمج \u003cstrong\u003eمساحة داخلية عملية\u003c\/strong\u003e للكابلات والشواحن والباور بانك والسماعات والهاتف والوثائق والإكسسوارات الصغيرة.\n          مصنوعة من \u003cstrong\u003ePolyester 1200D\u003c\/strong\u003e مع تفاصيل PU، وبسطح \u003cstrong\u003eمقاوم للماء\u003c\/strong\u003e، مع وزن خفيف ومقبض حمل مدمج لسهولة التنقل.\n        \u003c\/p\u003e\n        \u003cdiv class=\"fm-intro-line\"\u003e\u003c\/div\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- =====================================================\n         IMAGE GALLERY · 1 TO 4 IMAGES\n\n         الروابط موجودة في أعلى الكود داخل fm-media-config.\n         إذا وضعت صورة واحدة فقط: لا تظهر النقاط.\n         إذا وضعت 2 إلى 4 صور: الزبون يسحب يمين \/ يسار.\n    ====================================================== --\u003e\n\n    \u003csection class=\"fm-image-section\" data-fm-image-section\u003e\n\n      \u003cdiv class=\"fm-image-frame\"\u003e\n\n        \u003cdiv class=\"fm-image-track\" data-fm-image-track aria-label=\"Galerie produit\"\u003e\n\n\n          \u003cfigure class=\"fm-image-slide\" data-fm-slide=\"1\"\u003e\n\n            \u003cimg class=\"fm-image\" src=\"COLLEZ-IMAGE-1-ICI\" alt=\"WIWU Essen Travel Pouch · Image 1\" loading=\"eager\"\u003e\n\n          \u003c\/figure\u003e\n\n\n          \u003cfigure class=\"fm-image-slide\" data-fm-slide=\"2\"\u003e\n\n            \u003cimg class=\"fm-image\" src=\"COLLEZ-IMAGE-2-ICI\" alt=\"WIWU Essen Travel Pouch · Image 2\" loading=\"lazy\"\u003e\n\n          \u003c\/figure\u003e\n\n\n          \u003cfigure class=\"fm-image-slide\" data-fm-slide=\"3\"\u003e\n\n            \u003cimg class=\"fm-image\" src=\"COLLEZ-IMAGE-3-ICI\" alt=\"WIWU Essen Travel Pouch · Image 3\" loading=\"lazy\"\u003e\n\n          \u003c\/figure\u003e\n\n\n          \u003cfigure class=\"fm-image-slide\" data-fm-slide=\"4\"\u003e\n\n            \u003cimg class=\"fm-image\" src=\"COLLEZ-IMAGE-4-ICI\" alt=\"WIWU Essen Travel Pouch · Image 4\" loading=\"lazy\"\u003e\n\n          \u003c\/figure\u003e\n\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"fm-swipe-hint\" aria-hidden=\"true\"\u003e\n\n          \u003cspan class=\"fm-swipe-arrow\"\u003e\n            ↔\n          \u003c\/span\u003e\n\n          \u003cspan class=\"fm-fr\"\u003e\n            Faites glisser\n          \u003c\/span\u003e\n\n          \u003cspan class=\"fm-ar\"\u003e\n            اسحب الصور\n          \u003c\/span\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"fm-image-counter\" data-fm-image-counter\u003e\n          01 \/ 01\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"fm-image-site\"\u003e\n          www.fone.ma\n        \u003c\/div\u003e\n\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"fm-image-dots\" data-fm-image-dots aria-label=\"Navigation images\"\u003e\u003c\/div\u003e\n\n\n    \u003c\/section\u003e\n\n\n    \u003c!-- =====================================================\n         EDITORIAL FEATURES · FR\n    ====================================================== --\u003e\n    \u003cdiv class=\"fm-fr\"\u003e\n      \u003csection class=\"fm-features\"\u003e\n        \u003carticle class=\"fm-feature\"\u003e\n          \u003cdiv\u003e\n\u003cdiv class=\"fm-feature-index\"\u003e01\u003c\/div\u003e\n\u003cdiv class=\"fm-feature-label\"\u003eORGANISATION\u003c\/div\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003ch3 class=\"fm-feature-title\"\u003eTout à sa place.\u003c\/h3\u003e\n            \u003cp class=\"fm-feature-text\"\u003eUne capacité intérieure pensée pour ranger proprement vos essentiels : câbles, chargeurs, écouteurs, power bank, smartphone et petits accessoires.\u003c\/p\u003e\n            \u003cdiv class=\"fm-feature-meta\"\u003e\n\u003cspan\u003eGrande capacité\u003c\/span\u003e\u003cspan\u003eRangement intérieur\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"fm-feature\"\u003e\n          \u003cdiv\u003e\n\u003cdiv class=\"fm-feature-index\"\u003e02\u003c\/div\u003e\n\u003cdiv class=\"fm-feature-label\"\u003ePROTECTION\u003c\/div\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003ch3 class=\"fm-feature-title\"\u003ePensé pour bouger.\u003c\/h3\u003e\n            \u003cp class=\"fm-feature-text\"\u003eLe tissu en \u003cstrong\u003epolyester 1200D\u003c\/strong\u003e offre une construction durable, avec une surface \u003cstrong\u003erésistante à l’eau\u003c\/strong\u003e pour mieux protéger le contenu pendant les déplacements.\u003c\/p\u003e\n            \u003cdiv class=\"fm-feature-meta\"\u003e\n\u003cspan\u003ePolyester 1200D\u003c\/span\u003e\u003cspan\u003eRésistant à l’eau\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"fm-feature\"\u003e\n          \u003cdiv\u003e\n\u003cdiv class=\"fm-feature-index\"\u003e03\u003c\/div\u003e\n\u003cdiv class=\"fm-feature-label\"\u003eMOBILITÉ\u003c\/div\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003ch3 class=\"fm-feature-title\"\u003eCompact, léger, toujours prêt.\u003c\/h3\u003e\n            \u003cp class=\"fm-feature-text\"\u003eSon format d’environ \u003cstrong\u003e20 × 11 × 7 cm\u003c\/strong\u003e reste facile à glisser dans un sac, tandis que la \u003cstrong\u003epoignée intégrée\u003c\/strong\u003e facilite le transport au quotidien comme en voyage.\u003c\/p\u003e\n            \u003cdiv class=\"fm-feature-meta\"\u003e\n\u003cspan\u003eUltra-léger\u003c\/span\u003e\u003cspan\u003eFormat compact\u003c\/span\u003e\u003cspan\u003ePoignée intégrée\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/article\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- =====================================================\n         EDITORIAL FEATURES · AR\n    ====================================================== --\u003e\n    \u003cdiv class=\"fm-ar\"\u003e\n      \u003csection class=\"fm-features\"\u003e\n        \u003carticle class=\"fm-feature\"\u003e\n          \u003cdiv\u003e\n\u003cdiv class=\"fm-feature-index\"\u003e01\u003c\/div\u003e\n\u003cdiv class=\"fm-feature-label\"\u003eالتنظيم\u003c\/div\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003ch3 class=\"fm-feature-title\"\u003eكل شيء في مكانه.\u003c\/h3\u003e\n            \u003cp class=\"fm-feature-text\"\u003eمساحة داخلية عملية لتنظيم الكابلات والشواحن والسماعات والباور بانك والهاتف والإكسسوارات الصغيرة بشكل مرتب.\u003c\/p\u003e\n            \u003cdiv class=\"fm-feature-meta\"\u003e\n\u003cspan\u003eسعة داخلية كبيرة\u003c\/span\u003e\u003cspan\u003eتنظيم عملي\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"fm-feature\"\u003e\n          \u003cdiv\u003e\n\u003cdiv class=\"fm-feature-index\"\u003e02\u003c\/div\u003e\n\u003cdiv class=\"fm-feature-label\"\u003eالحماية\u003c\/div\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003ch3 class=\"fm-feature-title\"\u003eمصممة للتنقل.\u003c\/h3\u003e\n            \u003cp class=\"fm-feature-text\"\u003eنسيج \u003cstrong\u003ePolyester 1200D\u003c\/strong\u003e يمنح الحقيبة بنية متينة، مع سطح \u003cstrong\u003eمقاوم للماء\u003c\/strong\u003e للمساعدة على حماية المحتويات أثناء التنقل والسفر.\u003c\/p\u003e\n            \u003cdiv class=\"fm-feature-meta\"\u003e\n\u003cspan\u003ePolyester 1200D\u003c\/span\u003e\u003cspan\u003eمقاوم للماء\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"fm-feature\"\u003e\n          \u003cdiv\u003e\n\u003cdiv class=\"fm-feature-index\"\u003e03\u003c\/div\u003e\n\u003cdiv class=\"fm-feature-label\"\u003eالتنقل\u003c\/div\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003ch3 class=\"fm-feature-title\"\u003eمدمجة، خفيفة، وسهلة الحمل.\u003c\/h3\u003e\n            \u003cp class=\"fm-feature-text\"\u003eبحجم يقارب \u003cstrong\u003e20 × 11 × 7 سم\u003c\/strong\u003e يمكن وضعها بسهولة داخل حقيبة أكبر، بينما يسهل \u003cstrong\u003eمقبض الحمل المدمج\u003c\/strong\u003e استخدامها يوميًا أو أثناء السفر.\u003c\/p\u003e\n            \u003cdiv class=\"fm-feature-meta\"\u003e\n\u003cspan\u003eخفيفة الوزن\u003c\/span\u003e\u003cspan\u003eحجم مدمج\u003c\/span\u003e\u003cspan\u003eمقبض حمل\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/article\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- =====================================================\n         VIDEO · ONE ONLY\n\n         يدعم:\n         Shopify \/ MP4\n         YouTube \/ YouTube Shorts\n\n         ضع الرابط في القسم 05 أو 06 أعلى الكود.\n    ====================================================== --\u003e\n\n    \u003csection class=\"fm-video-section\" data-fm-video-section\u003e\n\n      \u003cdiv class=\"fm-video-heading\"\u003e\n\n        \u003cspan class=\"fm-fr\"\u003e\n          Vidéo produit\n        \u003c\/span\u003e\n\n        \u003cspan class=\"fm-ar\"\u003e\n          فيديو المنتج\n        \u003c\/span\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"fm-video-frame\"\u003e\n\n\n        \u003c!-- SHOPIFY \/ MP4 --\u003e\n        \u003cvideo class=\"fm-video\" data-fm-video-native autoplay muted loop playsinline preload=\"metadata\"\u003e\n        \u003c\/video\u003e\n\n\n        \u003c!-- YOUTUBE --\u003e\n        \u003ciframe class=\"fm-youtube\" data-fm-youtube title=\"Vidéo produit\" allow=\"autoplay; encrypted-media; picture-in-picture\" allowfullscreen\u003e\n        \u003c\/iframe\u003e\n\n\n        \u003cbutton class=\"fm-sound\" type=\"button\" aria-label=\"Activer le son\" data-fm-sound\u003e\n\n          \u003c!-- SOUND OFF --\u003e\n\n          \u003csvg class=\"fm-icon-off\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\n            \u003cpath d=\"M11 5 6.8 8.5H3.5v7h3.3L11 19V5Z\"\u003e\u003c\/path\u003e\n            \u003cpath d=\"m17 9 4 4\"\u003e\u003c\/path\u003e\n            \u003cpath d=\"m21 9-4 4\"\u003e\u003c\/path\u003e\n          \u003c\/svg\u003e\n\n\n          \u003c!-- SOUND ON --\u003e\n\n          \u003csvg class=\"fm-icon-on\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\n            \u003cpath d=\"M11 5 6.8 8.5H3.5v7h3.3L11 19V5Z\"\u003e\u003c\/path\u003e\n            \u003cpath d=\"M15 9.5a4 4 0 0 1 0 5\"\u003e\u003c\/path\u003e\n            \u003cpath d=\"M18 7a7 7 0 0 1 0 10\"\u003e\u003c\/path\u003e\n          \u003c\/svg\u003e\n\n        \u003c\/button\u003e\n\n\n        \u003cdiv class=\"fm-video-site\"\u003e\n          www.fone.ma\n        \u003c\/div\u003e\n\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n    \u003c!-- =====================================================\n         DETAILS\n    ====================================================== --\u003e\n    \u003cdiv class=\"fm-details\"\u003e\n      \u003cdetails class=\"fm-tech\"\u003e\n        \u003csummary\u003e\u003cspan class=\"fm-tech-label fm-fr\"\u003eDétails du produit\u003c\/span\u003e\u003cspan class=\"fm-tech-label fm-ar\"\u003eتفاصيل المنتج\u003c\/span\u003e\u003c\/summary\u003e\n        \u003cdiv class=\"fm-specs\"\u003e\n          \u003cdiv class=\"fm-spec\"\u003e\n\u003cspan class=\"fm-spec-name\"\u003e\u003cspan class=\"fm-fr\"\u003eMarque\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eالعلامة\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"fm-spec-value\"\u003eWIWU\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"fm-spec\"\u003e\n\u003cspan class=\"fm-spec-name\"\u003e\u003cspan class=\"fm-fr\"\u003eMatière\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eالخامة\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"fm-spec-value\"\u003e\u003cspan class=\"fm-fr\"\u003ePolyester 1200D · détails PU\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003ePolyester 1200D · تفاصيل PU\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"fm-spec\"\u003e\n\u003cspan class=\"fm-spec-name\"\u003e\u003cspan class=\"fm-fr\"\u003eDimensions\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eالأبعاد\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"fm-spec-value\"\u003e≈ 20 × 11 × 7 cm\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"fm-spec\"\u003e\n\u003cspan class=\"fm-spec-name\"\u003e\u003cspan class=\"fm-fr\"\u003eProtection\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eالحماية\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"fm-spec-value\"\u003e\u003cspan class=\"fm-fr\"\u003eSurface résistante à l’eau\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eسطح مقاوم للماء\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"fm-spec\"\u003e\n\u003cspan class=\"fm-spec-name\"\u003e\u003cspan class=\"fm-fr\"\u003eFormat\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eالحجم\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"fm-spec-value\"\u003e\u003cspan class=\"fm-fr\"\u003eCompact et ultra-léger\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eمدمج وخفيف الوزن\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"fm-spec\"\u003e\n\u003cspan class=\"fm-spec-name\"\u003e\u003cspan class=\"fm-fr\"\u003eTransport\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eالحمل\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"fm-spec-value\"\u003e\u003cspan class=\"fm-fr\"\u003ePoignée intégrée\u003c\/span\u003e\u003cspan class=\"fm-ar\"\u003eمقبض حمل مدمج\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/details\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n(function(){\n\n\n  document\n  .querySelectorAll(\n    '.fone-marina'\n  )\n  .forEach(\n    function(root){\n\n\n      \/* =====================================================\n         MEDIA CONFIG\n      ====================================================== *\/\n\n      const mediaConfig =\n        root.querySelector(\n          '.fm-media-config'\n        );\n\n\n      function mediaValue(name){\n\n        if(!mediaConfig){\n          return '';\n        }\n\n\n        const mediaItem =\n          mediaConfig.querySelector(\n            '[data-fm-key=\"' + name + '\"]'\n          );\n\n\n        if(mediaItem){\n\n          return (\n            mediaItem.getAttribute(\n              'data-url'\n            )\n            ||\n            ''\n          ).trim();\n\n        }\n\n\n        \/* fallback للنسخ القديمة *\/\n\n        return (\n          mediaConfig.getAttribute(\n            'data-' + name\n          )\n          ||\n          ''\n        ).trim();\n\n      }\n\n\n      \/* =====================================================\n         IMAGE GALLERY · 1 TO 4\n      ====================================================== *\/\n\n      const imageSection =\n        root.querySelector(\n          '[data-fm-image-section]'\n        );\n\n      const imageTrack =\n        root.querySelector(\n          '[data-fm-image-track]'\n        );\n\n      const imageCounter =\n        root.querySelector(\n          '[data-fm-image-counter]'\n        );\n\n      const imageDots =\n        root.querySelector(\n          '[data-fm-image-dots]'\n        );\n\n      const allSlides =\n        Array.from(\n          root.querySelectorAll(\n            '.fm-image-slide'\n          )\n        );\n\n\n      const validSlides =\n        [];\n\n\n      allSlides.forEach(\n        function(slide,index){\n\n          const img =\n            slide.querySelector(\n              '.fm-image'\n            );\n\n          if(!img){\n\n            slide.classList.add(\n              'is-hidden'\n            );\n\n            return;\n\n          }\n\n\n          \/*\n             ROBUST IMAGE SOURCE\n             1) إذا وضعت الرابط في fm-media-config نستعمله.\n             2) إذا بقي COLLEZ... نستعمل src الموجود مباشرة داخل \u003cimg\u003e.\n             3) إذا الاثنين فارغين\/placeholder نخفي الصورة فقط.\n          *\/\n\n          const configuredValue =\n            mediaValue(\n              'image-' + (index + 1)\n            );\n\n\n          const inlineValue =\n            (\n              img.getAttribute(\n                'src'\n              )\n              ||\n              ''\n            ).trim();\n\n\n          const configuredIsValid =\n            configuredValue\n            \u0026\u0026\n            configuredValue.indexOf(\n              'COLLEZ-IMAGE-'\n            ) === -1;\n\n\n          const inlineIsValid =\n            inlineValue\n            \u0026\u0026\n            inlineValue.indexOf(\n              'COLLEZ-IMAGE-'\n            ) === -1;\n\n\n          const value =\n            configuredIsValid\n            ? configuredValue\n            : (\n                inlineIsValid\n                ? inlineValue\n                : ''\n              );\n\n\n          if(!value){\n\n            slide.classList.add(\n              'is-hidden'\n            );\n\n            return;\n\n          }\n\n\n          img.setAttribute(\n            'src',\n            value\n          );\n\n\n          slide.classList.remove(\n            'is-hidden'\n          );\n\n\n          validSlides.push(\n            slide\n          );\n\n\n          img.addEventListener(\n            'error',\n            function(){\n\n              slide.classList.add(\n                'is-hidden'\n              );\n\n              initGallery();\n\n            }\n          );\n\n        }\n      );\n\n\n      let activeSlides =\n        [];\n\n\n      function pad2(value){\n\n        return String(\n          value\n        ).padStart(\n          2,\n          '0'\n        );\n\n      }\n\n\n      function initGallery(){\n\n        if(\n          !imageSection\n          ||\n          !imageTrack\n        ){\n          return;\n        }\n\n\n        activeSlides =\n          allSlides.filter(\n            function(slide){\n\n              return !slide.classList.contains(\n                'is-hidden'\n              );\n\n            }\n          );\n\n\n        const total =\n          activeSlides.length;\n\n\n        if(total === 0){\n\n          imageSection.classList.remove(\n            'is-ready'\n          );\n\n          imageSection.classList.remove(\n            'has-multiple'\n          );\n\n          imageSection.style.display =\n            'none';\n\n          return;\n\n        }\n\n\n        imageSection.style.display =\n          '';\n\n        imageSection.classList.add(\n          'is-ready'\n        );\n\n        imageSection.classList.toggle(\n          'has-multiple',\n          total \u003e 1\n        );\n\n\n        if(imageDots){\n\n          imageDots.innerHTML =\n            '';\n\n\n          if(total \u003e 1){\n\n            activeSlides.forEach(\n              function(slide,index){\n\n                const dot =\n                  document.createElement(\n                    'button'\n                  );\n\n\n                dot.type =\n                  'button';\n\n                dot.className =\n                  'fm-image-dot'\n                  +\n                  (\n                    index === 0\n                    ? ' is-active'\n                    : ''\n                  );\n\n                dot.setAttribute(\n                  'aria-label',\n                  'Image ' + (index + 1)\n                );\n\n\n                dot.addEventListener(\n                  'click',\n                  function(){\n\n                    imageTrack.scrollTo({\n                      left:\n                        activeSlides[index].offsetLeft,\n                      behavior:'smooth'\n                    });\n\n                  }\n                );\n\n\n                imageDots.appendChild(\n                  dot\n                );\n\n              }\n            );\n\n          }\n\n        }\n\n\n        updateGalleryUI(\n          0\n        );\n\n      }\n\n\n      function currentGalleryIndex(){\n\n        if(\n          !imageTrack\n          ||\n          activeSlides.length === 0\n        ){\n          return 0;\n        }\n\n\n        const center =\n          imageTrack.scrollLeft\n          +\n          imageTrack.clientWidth \/ 2;\n\n\n        let closestIndex =\n          0;\n\n        let closestDistance =\n          Infinity;\n\n\n        activeSlides.forEach(\n          function(slide,index){\n\n            const slideCenter =\n              slide.offsetLeft\n              +\n              slide.offsetWidth \/ 2;\n\n\n            const distance =\n              Math.abs(\n                center\n                -\n                slideCenter\n              );\n\n\n            if(\n              distance\n              \u003c\n              closestDistance\n            ){\n\n              closestDistance =\n                distance;\n\n              closestIndex =\n                index;\n\n            }\n\n          }\n        );\n\n\n        return closestIndex;\n\n      }\n\n\n      function updateGalleryUI(index){\n\n        const total =\n          activeSlides.length;\n\n\n        if(\n          total === 0\n        ){\n          return;\n        }\n\n\n        const safeIndex =\n          Math.max(\n            0,\n            Math.min(\n              total - 1,\n              index\n            )\n          );\n\n\n        if(imageCounter){\n\n          imageCounter.textContent =\n            pad2(\n              safeIndex + 1\n            )\n            +\n            ' \/ '\n            +\n            pad2(\n              total\n            );\n\n        }\n\n\n        if(imageDots){\n\n          Array.from(\n            imageDots.querySelectorAll(\n              '.fm-image-dot'\n            )\n          )\n          .forEach(\n            function(dot,dotIndex){\n\n              dot.classList.toggle(\n                'is-active',\n                dotIndex === safeIndex\n              );\n\n            }\n          );\n\n        }\n\n      }\n\n\n      if(imageTrack){\n\n        let galleryTicking =\n          false;\n\n\n        imageTrack.addEventListener(\n          'scroll',\n          function(){\n\n            if(imageSection){\n              imageSection.classList.add(\n                'is-used'\n              );\n            }\n\n            if(galleryTicking){\n              return;\n            }\n\n\n            galleryTicking =\n              true;\n\n\n            requestAnimationFrame(\n              function(){\n\n                updateGalleryUI(\n                  currentGalleryIndex()\n                );\n\n                galleryTicking =\n                  false;\n\n              }\n            );\n\n          },\n          {\n            passive:true\n          }\n        );\n\n      }\n\n\n      initGallery();\n\n\n      \/* =====================================================\n         OPTIONAL VIDEO · SHOPIFY \/ MP4 + YOUTUBE\n         الأولوية: Shopify\/MP4 إذا وُجد، وإلا YouTube\n      ====================================================== *\/\n\n      const videoSection =\n        root.querySelector(\n          '[data-fm-video-section]'\n        );\n\n      const nativeVideo =\n        root.querySelector(\n          '[data-fm-video-native]'\n        );\n\n      const youtubeFrame =\n        root.querySelector(\n          '[data-fm-youtube]'\n        );\n\n      const soundButton =\n        root.querySelector(\n          '[data-fm-sound]'\n        );\n\n\n      if(!videoSection){\n        return;\n      }\n\n\n      const shopifyUrl =\n        mediaValue(\n          'video-shopify'\n        );\n\n      const youtubeUrl =\n        mediaValue(\n          'video-youtube'\n        );\n\n\n      const hasShopify =\n        shopifyUrl\n        \u0026\u0026\n        shopifyUrl.indexOf(\n          'COLLEZ-VIDEO-SHOPIFY-ICI'\n        ) === -1;\n\n\n      const hasYoutube =\n        youtubeUrl\n        \u0026\u0026\n        youtubeUrl.indexOf(\n          'COLLEZ-YOUTUBE-ICI'\n        ) === -1;\n\n\n      function getYoutubeId(url){\n\n        if(!url){\n          return '';\n        }\n\n\n        const value =\n          url.trim();\n\n\n        let match =\n          value.match(\n            \/(?:youtube\\.com\\\/watch\\?v=|youtu\\.be\\\/|youtube\\.com\\\/shorts\\\/|youtube\\.com\\\/embed\\\/)([A-Za-z0-9_-]{6,})\/\n          );\n\n\n        if(match \u0026\u0026 match[1]){\n          return match[1];\n        }\n\n\n        try{\n\n          const parsed =\n            new URL(\n              value\n            );\n\n\n          const v =\n            parsed.searchParams.get(\n              'v'\n            );\n\n\n          if(v){\n            return v;\n          }\n\n        } catch(error){}\n\n\n        return '';\n\n      }\n\n\n      let activeVideoType =\n        '';\n\n\n      function showNativeVideo(){\n\n        if(\n          !nativeVideo\n          ||\n          !hasShopify\n        ){\n          return false;\n        }\n\n\n        nativeVideo.setAttribute(\n          'src',\n          shopifyUrl\n        );\n\n        nativeVideo.classList.add(\n          'is-active'\n        );\n\n\n        if(youtubeFrame){\n\n          youtubeFrame.classList.remove(\n            'is-active'\n          );\n\n          youtubeFrame.removeAttribute(\n            'src'\n          );\n\n        }\n\n\n        nativeVideo.muted =\n          true;\n\n        nativeVideo.defaultMuted =\n          true;\n\n        nativeVideo.playsInline =\n          true;\n\n\n        const promise =\n          nativeVideo.play();\n\n\n        if(\n          promise\n          \u0026\u0026\n          typeof promise.catch ===\n          'function'\n        ){\n          promise.catch(\n            function(){}\n          );\n        }\n\n\n        activeVideoType =\n          'native';\n\n\n        return true;\n\n      }\n\n\n      function showYoutubeVideo(){\n\n        if(\n          !youtubeFrame\n          ||\n          !hasYoutube\n        ){\n          return false;\n        }\n\n\n        const youtubeId =\n          getYoutubeId(\n            youtubeUrl\n          );\n\n\n        if(!youtubeId){\n          return false;\n        }\n\n\n        const embedUrl =\n          'https:\/\/www.youtube.com\/embed\/'\n          +\n          youtubeId\n          +\n          '?autoplay=1'\n          +\n          '\u0026mute=1'\n          +\n          '\u0026loop=1'\n          +\n          '\u0026playlist='\n          +\n          youtubeId\n          +\n          '\u0026playsinline=1'\n          +\n          '\u0026controls=0'\n          +\n          '\u0026rel=0'\n          +\n          '\u0026modestbranding=1'\n          +\n          '\u0026enablejsapi=1';\n\n\n        youtubeFrame.setAttribute(\n          'src',\n          embedUrl\n        );\n\n        youtubeFrame.classList.add(\n          'is-active'\n        );\n\n\n        if(nativeVideo){\n\n          nativeVideo.classList.remove(\n            'is-active'\n          );\n\n          nativeVideo.pause();\n\n          nativeVideo.removeAttribute(\n            'src'\n          );\n\n          nativeVideo.load();\n\n        }\n\n\n        activeVideoType =\n          'youtube';\n\n\n        return true;\n\n      }\n\n\n      let videoReady =\n        false;\n\n\n      if(hasShopify){\n\n        videoReady =\n          showNativeVideo();\n\n      } else if(hasYoutube){\n\n        videoReady =\n          showYoutubeVideo();\n\n      }\n\n\n      if(!videoReady){\n\n        videoSection.classList.remove(\n          'is-ready'\n        );\n\n        videoSection.style.display =\n          'none';\n\n      } else {\n\n        videoSection.style.display =\n          '';\n\n        videoSection.classList.add(\n          'is-ready'\n        );\n\n      }\n\n\n      \/* =====================================================\n         SOUND BUTTON\n      ====================================================== *\/\n\n      let youtubeMuted =\n        true;\n\n\n      function sendYoutubeCommand(command){\n\n        if(\n          !youtubeFrame\n          ||\n          !youtubeFrame.contentWindow\n        ){\n          return;\n        }\n\n\n        youtubeFrame.contentWindow.postMessage(\n          JSON.stringify({\n            event:'command',\n            func:command,\n            args:''\n          }),\n          '*'\n        );\n\n      }\n\n\n      if(soundButton){\n\n        soundButton.addEventListener(\n          'click',\n          function(event){\n\n            event.preventDefault();\n            event.stopPropagation();\n\n\n            let soundOn =\n              false;\n\n\n            if(\n              activeVideoType ===\n              'native'\n              \u0026\u0026\n              nativeVideo\n            ){\n\n              nativeVideo.muted =\n                !nativeVideo.muted;\n\n              soundOn =\n                !nativeVideo.muted;\n\n\n              if(nativeVideo.paused){\n\n                const promise =\n                  nativeVideo.play();\n\n\n                if(\n                  promise\n                  \u0026\u0026\n                  typeof promise.catch ===\n                  'function'\n                ){\n                  promise.catch(\n                    function(){}\n                  );\n                }\n\n              }\n\n            }\n\n\n            if(\n              activeVideoType ===\n              'youtube'\n            ){\n\n              youtubeMuted =\n                !youtubeMuted;\n\n\n              sendYoutubeCommand(\n                youtubeMuted\n                ? 'mute'\n                : 'unMute'\n              );\n\n\n              if(!youtubeMuted){\n\n                sendYoutubeCommand(\n                  'playVideo'\n                );\n\n              }\n\n\n              soundOn =\n                !youtubeMuted;\n\n            }\n\n\n            soundButton.classList.toggle(\n              'is-on',\n              soundOn\n            );\n\n\n            soundButton.setAttribute(\n              'aria-label',\n              soundOn\n              ? 'Couper le son'\n              : 'Activer le son'\n            );\n\n          }\n        );\n\n      }\n\n\n      \/* =====================================================\n         NATIVE VIDEO · PLAY ONLY WHEN VISIBLE\n      ====================================================== *\/\n\n      if(\n        activeVideoType ===\n        'native'\n        \u0026\u0026\n        nativeVideo\n        \u0026\u0026\n        'IntersectionObserver'\n        in window\n      ){\n\n        const observer =\n          new IntersectionObserver(\n            function(entries){\n\n              entries.forEach(\n                function(entry){\n\n                  if(\n                    entry.isIntersecting\n                  ){\n\n                    const promise =\n                      nativeVideo.play();\n\n\n                    if(\n                      promise\n                      \u0026\u0026\n                      typeof promise.catch ===\n                      'function'\n                    ){\n                      promise.catch(\n                        function(){}\n                      );\n                    }\n\n                  } else {\n\n                    nativeVideo.pause();\n\n                  }\n\n                }\n              );\n\n            },\n            {\n              threshold:.22\n            }\n          );\n\n\n        observer.observe(\n          nativeVideo\n        );\n\n      }\n\n\n    }\n  );\n\n\n})();\n\u003c\/script\u003e\n","brand":"fone","offers":[{"title":"Default Title","offer_id":50470791512202,"sku":null,"price":199.0,"currency_code":"MAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0761\/3857\/8058\/files\/wiwu-hand-bag-fone-img1.png?v=1792089448","url":"https:\/\/fone.ma\/products\/wiwu-essen-travel-pouch-noir","provider":"My Store","version":"1.0","type":"link"}