{"id":3612,"date":"2026-10-13T16:07:06","date_gmt":"2026-10-13T14:07:06","guid":{"rendered":"https:\/\/vlip.me\/gemeinden-staedte-mit-vlip\/"},"modified":"2026-10-15T22:53:01","modified_gmt":"2026-10-15T20:53:01","slug":"gemeinden-staedte-mit-vlip","status":"publish","type":"page","link":"https:\/\/vlip.me\/en\/municipalities-cities\/","title":{"rendered":"Municipalities &#038; cities with Vlip"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3612\" class=\"elementor elementor-3612\" data-elementor-settings=\"{&quot;scroll_snap&quot;:&quot;yes&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-08ef0ad e-con-full e-flex e-con e-parent\" data-id=\"08ef0ad\" data-element_type=\"container\" data-e-type=\"container\" id=\"background-layer\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d1dcff elementor-widget elementor-widget-html\" data-id=\"5d1dcff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"bg-image\"><\/div>\n  <div class=\"bg-color\"><\/div>\n  <div id=\"nav-dots\"><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<section class=\"elementor-element elementor-element-0ad3901 e-flex e-con-boxed e-con e-parent\" data-id=\"0ad3901\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-1\" data-rotate=\"true\" data-speed=\"3\" data-orbit=\"45deg 65deg 150%\" data-bgcolor=\"#F3E8D8\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4e4c79b e-con-full e-flex e-con e-child\" data-id=\"4e4c79b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6bc06c4 elementor-widget elementor-widget-heading\" data-id=\"6bc06c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">How municipalities and cities put their services in people's hands.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f807604 elementor-widget elementor-widget-text-editor\" data-id=\"f807604\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>With Vlip, municipalities, cities and administrations reach residents right on their smartphones: services, dates and information with a single tap \u2013 no app needed.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-74df5f4 e-con-full e-flex e-con e-child\" data-id=\"74df5f4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-615658e elementor-widget elementor-widget-button\" data-id=\"615658e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/vlip.me\/en\/contact\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Enquire now<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-870d8d9 elementor-widget elementor-widget-button\" data-id=\"870d8d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#section-2\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fc3f341 e-con-full e-flex e-con e-child\" data-id=\"fc3f341\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e75e6fa elementor-widget elementor-widget-html\" data-id=\"e75e6fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script type=\"module\" src=\"https:\/\/unpkg.com\/@google\/model-viewer\/dist\/model-viewer.min.js\"><\/script>\n\n<style>\nmodel-viewer {\n  width: 300px;\n  height: 300px;\n  overflow: hidden;     \n  outline: none;\n  display: block;\n  position: fixed;\n  top:53vh;\n  transform: translateY(-50%);\n  z-index: 3;\n  pointer-events: none;\n  user-select: none;\n}\n\nmodel-viewer::part(progress-bar) {\n  display: none;\n}\nmodel-viewer::part(default-progress-bar) {\n  display: none;\n}\n\n@media (max-width: 768px) {\n  model-viewer#vlipCube {\n  width: 250px;\n  height: 250px;\n    top: 50px;\n    bottom: auto;    \/* Abstand zum unteren Rand *\/\n    left: 50%;\n    transform: translateX(-50%); \/* nur horizontal zentrieren *\/\n    margin-left:0px;\n    margin-top: 0;\n  }\n}\n\n#vlipCube {\n  transition: opacity 0.6s ease;\n}\n#vlipCube.hidden {\n  opacity: 0;\n  pointer-events: none;\n}\n\n\n#background-layer {\n  position: fixed !important;\n  top: 0; left: 0; right: 0; bottom: 0;\n  z-index: -1; \/* immer hinter Content *\/\n  overflow: hidden;\n}\n\n\/* Bild-Layer *\/\n#background-layer .bg-image {\n  position: absolute;\n  top: 0; left: 0; right: 0; bottom: 0;\n  background-size: cover;\n  background-position: center;\n  background-repeat: no-repeat;\n  opacity: 0; \/* initial unsichtbar *\/\n  transition: opacity 1s ease;\n  z-index: 2;\n}\n#background-layer .bg-image.active {\n  opacity: 1;\n  animation: kenburns 20s ease-in-out infinite alternate;\n}\n\n\/* Farb-Layer *\/\n#background-layer .bg-color {\n  position: absolute;\n  top: 0; left: 0; right: 0; bottom: 0;\n  z-index: 1;\n  transition: background-color 0.8s ease;\n}\n\n@keyframes kenburns {\n  from { transform: scale(1) translate(0,0); }\n  to   { transform: scale(1.15) translate(-20px,-20px); }\n}\n#nav-dots {\n  position: fixed;\n  right: 10px;\n  top: 50%;\n  transform: translateY(-50%);\n  display: flex;\n  flex-direction: column;\n  align-items: center; \/* zentriert Punkte *\/\n  gap: 10px;\n  z-index: 10;\n  transition: transform 0.3s ease; \/* f\u00fcr Shift-Animation *\/\n}\n#nav-dots .dot {\n  border-radius: 50%;\n  background: #888;\n  transition: all 0.3s ease;\n}\n#nav-dots .dot.active {\n  background: #fff;\n}\n\/* Scroll-In Effekt *\/\n\/*\nbody:not(.elementor-editor-active) .scroll-in {\n  opacity: 0;\n  transition: all 0.6s ease;\n  transition-delay: 0.3s;\n}\n\n.scroll-in.from-bottom {\n  transform: translateY(40px);\n}\n.scroll-in.from-bottom.active {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.scroll-in.from-top {\n  transform: translateY(-40px);\n}\n.scroll-in.from-top.active {\n  opacity: 1;\n  transform: translateY(0);\n}\n*\/\n<\/style>\n\n<model-viewer id=\"vlipCube\"\n  src=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\"\n  disable-zoom\n  disable-pan\n  interaction-policy=\"none\"\n  environment-image=\"neutral\"\n  shadow-intensity=\"1\">\n<\/model-viewer>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da73688 elementor-widget elementor-widget-html\" data-id=\"da73688\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const cube = document.getElementById(\"vlipCube\");\n\n  \/\/ Background-Layer\n  const bgLayer = document.getElementById(\"background-layer\");\n  const bgImage = bgLayer.querySelector(\".bg-image\"); \/\/ liegt \u00dcBER der Farbe\n  const bgColor = bgLayer.querySelector(\".bg-color\"); \/\/ liegt UNTER dem Bild\n\n  \/\/ Sections\n  const sections = Array.from(document.querySelectorAll(\"[id^='section-']\"));\n  let activeSectionId = null;\n\n  \/\/ Rotation\n  let rotationTimer = null;\n  let angle = 0;\n\n  \/\/ Model Swap\n  let modelSwapTimer = null;\n  let modelSwapIndex = 0;\n\n  \/\/ Nav Dots\n  const navDots = document.createElement(\"div\");\n  navDots.id = \"nav-dots\";\n  document.body.appendChild(navDots);\n\n  \/\/ ---------- Utils ----------\n  function getSectionNumber(id) {\n    const m = id ? id.match(\/section-(\\d+)\/) : null;\n    return m ? parseInt(m[1], 10) : 0;\n  }\n\n  function measureVisibleRatio(el) {\n    const vh = window.innerHeight || document.documentElement.clientHeight;\n    const r = el.getBoundingClientRect();\n    const visible = Math.max(0, Math.min(vh, r.bottom) - Math.max(0, r.top));\n    return visible \/ vh;\n  }\n\n  \/\/ ---------- Cube Rotation ----------\n  function startRotation(startOrbit, speed = 3) {\n    stopRotation();\n    angle = 0;\n    if (startOrbit) cube.cameraOrbit = startOrbit;\n    rotationTimer = setInterval(() => {\n      angle += speed;\n      const orbit = cube.cameraOrbit.split(\" \");\n      cube.cameraOrbit = `${angle}deg ${orbit[1]} ${orbit[2]}`;\n    }, 50);\n  }\n\n  function stopRotation() {\n    if (rotationTimer) {\n      clearInterval(rotationTimer);\n      rotationTimer = null;\n    }\n  }\n\n  \/\/ ---------- Cube Visibility (data-model-visible) ----------\n  function toggleCubeVisibility(section) {\n    const visibleAttr = section.dataset.modelVisible;\n    const isVisible = visibleAttr === undefined || visibleAttr === \"\" || visibleAttr === \"true\";\n    if (isVisible) cube.classList.remove(\"hidden\");\n    else cube.classList.add(\"hidden\");\n  }\n\n  \/\/ ---------- Background ----------\n  function setBackground(section) {\n    const color = section.dataset.bgcolor || \"rgba(0,0,0,1)\";\n    const image = section.dataset.bgimage || \"\";\n    const opacity = isNaN(parseFloat(section.dataset.bgopacity)) ? 1 : parseFloat(section.dataset.bgopacity);\n\n    \/\/ Farbe immer unten setzen\n    bgColor.style.backgroundColor = color;\n\n    if (image) {\n      \/\/ Bild oben dr\u00fcber einblenden\n      bgImage.style.backgroundImage = `url(\"${image}\")`;\n      bgImage.style.opacity = opacity;\n      bgImage.classList.add(\"active\");\n    } else {\n      \/\/ Bild sauber entfernen\/ausblenden\n      bgImage.style.opacity = 0;\n      bgImage.style.backgroundImage = \"none\";\n      bgImage.classList.remove(\"active\");\n\n      \/\/ iOS Repaint-Nudge (hilft, wenn Farbe \u201eh\u00e4ngt\u201c)\n      \/\/ void bgColor.offsetHeight; \/\/ optionaler Reflow\n    }\n  }\n\n  \/\/ ---------- Scroll-In ----------\n  function setScrollIn(section, direction) {\n    section.querySelectorAll(\".scroll-in\").forEach(el => {\n      el.classList.remove(\"active\", \"from-top\", \"from-bottom\");\n      el.classList.add(direction === \"down\" ? \"from-bottom\" : \"from-top\");\n      setTimeout(() => el.classList.add(\"active\"), 300);\n    });\n  }\n\n  \/\/ ---------- Preload BG Images ----------\n  (function preloadImages() {\n    const urls = new Set();\n    sections.forEach(sec => { if (sec.dataset.bgimage) urls.add(sec.dataset.bgimage); });\n    urls.forEach(url => { const img = new Image(); img.src = url; });\n  })();\n\n  \/\/ ---------- Nav Dots ----------\n  function initDots() {\n    navDots.innerHTML = \"\";\n    sections.forEach(() => {\n      const dot = document.createElement(\"div\");\n      dot.classList.add(\"dot\");\n      navDots.appendChild(dot);\n    });\n  }\n\n  function updateDots(activeIndex, direction = \"down\") {\n    const dots = navDots.querySelectorAll(\".dot\");\n    dots.forEach((dot, i) => {\n      const dist = Math.abs(i - activeIndex);\n      let size = 0;\n      if (dist === 0) size = 14;\n      else if (dist === 1) size = 10;\n      else if (dist === 2) size = 6;\n      else size = 0;\n\n      dot.style.width = size ? size + \"px\" : \"0px\";\n      dot.style.height = size ? size + \"px\" : \"0px\";\n      dot.style.opacity = size ? 1 : 0;\n      dot.classList.toggle(\"active\", i === activeIndex);\n    });\n\n    if (direction === \"down\") navDots.style.transform = \"translateY(calc(-50% - 15px))\";\n    else navDots.style.transform = \"translateY(calc(-50% + 15px))\";\n    setTimeout(() => { navDots.style.transform = \"translateY(-50%)\"; }, 300);\n  }\n\n  \/\/ ---------- Cube & Models ----------\n  function handleCube(section, orbit, shouldRotate, speed) {\n    const modelAttr = section.dataset.model || \"\";\n    const mode = section.dataset.modelmode || \"\";\n    const duration = parseInt(section.dataset.modelduration) || 5000;\n\n    if (mode === \"swap\" && modelAttr) {\n      let models = [];\n      try { models = JSON.parse(modelAttr); } catch { models = modelAttr.split(\",\").map(s => s.trim()); }\n\n      if (models.length > 0) {\n        if (modelSwapTimer) clearInterval(modelSwapTimer);\n        modelSwapIndex = 0;\n\n        const switchModel = () => {\n          const newSrc = models[modelSwapIndex];\n          cube.src = newSrc;\n          if (!shouldRotate) {\n            cube.addEventListener(\"load\", () => { stopRotation(); cube.cameraOrbit = orbit; }, { once: true });\n          }\n          modelSwapIndex = (modelSwapIndex + 1) % models.length;\n        };\n\n        switchModel();\n        modelSwapTimer = setInterval(switchModel, duration);\n        if (shouldRotate) startRotation(orbit, speed);\n      }\n    } else {\n      \/\/ Single model \/ keep current\n      if (modelAttr) {\n        const currentSrc = cube.src.split(\"?\")[0];\n        const newSrc = modelAttr.split(\"?\")[0];\n        if (currentSrc !== newSrc) {\n          cube.src = newSrc;\n          cube.addEventListener(\"load\", () => {\n            if (shouldRotate) startRotation(orbit, speed);\n            else { stopRotation(); cube.cameraOrbit = orbit; }\n          }, { once: true });\n        } else {\n          if (shouldRotate) startRotation(orbit, speed);\n          else { stopRotation(); cube.cameraOrbit = orbit; }\n        }\n      } else {\n        if (shouldRotate) startRotation(orbit, speed);\n        else { stopRotation(); cube.cameraOrbit = orbit; }\n      }\n\n      if (modelSwapTimer) { clearInterval(modelSwapTimer); modelSwapTimer = null; }\n    }\n  }\n\n  \/\/ ---------- Aktivierung EINER Section ----------\n  function activateSection(section, direction) {\n    if (!section || section.id === activeSectionId) return;\n    activeSectionId = section.id;\n\n    \/\/ Cube visibility sofort\n    toggleCubeVisibility(section);\n\n    \/\/ Cube Attribute\n    const orbit = section.dataset.orbit || \"0deg 0deg 150%\";\n    const shouldRotate = section.dataset.rotate === \"true\";\n    const speed = parseFloat(section.dataset.speed) || 3;\n\n    \/\/ Cube + BG + ScrollIn + Dots\n    handleCube(section, orbit, shouldRotate, speed);\n    setBackground(section);\n    setScrollIn(section, direction);\n\n    const idx = getSectionNumber(section.id) - 1; \/\/ 0-basiert\n    updateDots(idx, direction);\n  }\n\n  \/\/ ---------- IntersectionObserver + Scroll-Fallback ----------\n  \/\/ Observer meldet Kandidaten; wir k\u00fcren per gr\u00f6\u00dfter Sichtbarkeit\n  const io = new IntersectionObserver((entries) => {\n    entries.forEach(() => scheduleActiveCheck());\n  }, {\n    root: null,\n    rootMargin: \"-10% 0px -10% 0px\",\n    threshold: [0.25, 0.5, 0.75]\n  });\n\n  sections.forEach(sec => io.observe(sec));\n\n  let rafId = null;\n  function scheduleActiveCheck() {\n    if (rafId) return;\n    rafId = requestAnimationFrame(() => {\n      rafId = null;\n      checkActiveByViewport();\n    });\n  }\n\n  function checkActiveByViewport() {\n    \/\/ finde Section mit gr\u00f6\u00dfter sichtbarer H\u00f6he\n    let best = null;\n    let bestRatio = 0;\n    for (const sec of sections) {\n      const ratio = measureVisibleRatio(sec);\n      if (ratio > bestRatio) { bestRatio = ratio; best = sec; }\n    }\n    if (!best) return;\n\n    \/\/ Richtung anhand der Nummer bestimmen\n    const newNum = getSectionNumber(best.id);\n    const oldNum = getSectionNumber(activeSectionId);\n    const direction = !activeSectionId ? \"down\" : (newNum > oldNum ? \"down\" : \"up\");\n\n    activateSection(best, direction);\n  }\n\n  \/\/ auch bei Scroll\/Resize\/OrientationChange pr\u00fcfen (Fallback f\u00fcr Mobile)\n  window.addEventListener(\"scroll\", scheduleActiveCheck, { passive: true });\n  window.addEventListener(\"resize\", scheduleActiveCheck);\n  window.addEventListener(\"orientationchange\", scheduleActiveCheck);\n  document.addEventListener(\"visibilitychange\", () => {\n    if (document.visibilityState === \"visible\") scheduleActiveCheck();\n  });\n\n  \/\/ ---------- Init ----------\n  function getInitialActiveSection() {\n    \/\/ nutze direkt die gr\u00f6\u00dfte Sichtbarkeit\n    let best = null, bestRatio = 0;\n    for (const sec of sections) {\n      const r = measureVisibleRatio(sec);\n      if (r > bestRatio) { bestRatio = r; best = sec; }\n    }\n    return best || sections[0];\n  }\n\n  \/\/ Dots initial\n  initDots();\n\n  const initialSection = getInitialActiveSection();\n  if (initialSection) {\n    \/\/ initial down einblenden\n    activateSection(initialSection, \"down\");\n  }\n\n  \/\/ Sicherheit: direkt nach Init nochmal checken (iOS Safari Layout pass)\n  setTimeout(scheduleActiveCheck, 0);\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-2486ae9 e-flex e-con-boxed e-con e-parent\" data-id=\"2486ae9\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-2\" data-rotate=\"true\" data-speed=\"3\" data-orbit=\"45deg 65deg 150%\" data-bgcolor=\"rgba(0,0,0,1)\" data-bgimage=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/gemeindeamt-ortsplatz-unsplash.webp\" data-bgopacity=\"0.4\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8007fcb e-con-full scroll-in e-flex e-con e-child\" data-id=\"8007fcb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0d0d836 elementor-widget elementor-widget-heading\" data-id=\"0d0d836\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Citizen services with a single tap.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f816895 elementor-widget elementor-widget-text-editor\" data-id=\"f816895\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Opening hours, forms and contacts at the town hall: one side of the cube leads <strong>straight to the right service<\/strong>. That saves trips and calls \u2013 for residents and administration alike.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-16ec7b3 e-con-full c e-flex e-con e-child\" data-id=\"16ec7b3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-74f120b e-flex e-con-boxed e-con e-parent\" data-id=\"74f120b\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-3\" data-rotate=\"false\" data-orbit=\"0deg 0deg 150%\" data-bgcolor=\"rgba(0,0,0,1)\" data-bgimage=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/stadtfest-hauptplatz-unsplash.webp\" data-bgopacity=\"0.4\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6d8eb4c e-con-full scroll-in e-flex e-con e-child\" data-id=\"6d8eb4c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-921bf2c elementor-widget elementor-widget-heading\" data-id=\"921bf2c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Events always up to date.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ca7080 elementor-widget elementor-widget-text-editor\" data-id=\"7ca7080\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Concerts, exhibitions, markets: the <strong>events calendar<\/strong> is just one tap away. Because the content is online, it is always up to date.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-90ba785 e-con-full c e-flex e-con e-child\" data-id=\"90ba785\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-1d71339 e-flex e-con-boxed e-con e-parent\" data-id=\"1d71339\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-4\" data-rotate=\"false\" data-orbit=\"360deg 90deg 150%\" data-bgcolor=\"rgba(0,0,0,1)\" data-bgimage=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/altstadt-festung-salzburg-unsplash.webp\" data-bgopacity=\"0.4\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-906a63f e-con-full scroll-in e-flex e-con e-child\" data-id=\"906a63f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a5db029 elementor-widget elementor-widget-heading\" data-id=\"a5db029\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Local history to listen to.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a0b365 elementor-widget elementor-widget-text-editor\" data-id=\"0a0b365\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Audio guides and walking tours bring <strong>sights to life<\/strong> \u2013 for visitors and for anyone who wants to rediscover their own town.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1f95be0 e-con-full c e-flex e-con e-child\" data-id=\"1f95be0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-f96374e e-flex e-con-boxed e-con e-parent\" data-id=\"f96374e\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-5\" data-rotate=\"false\" data-orbit=\"270deg 90deg 150%\" data-bgcolor=\"rgba(0,0,0,1)\" data-bgimage=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/neue-nachbarn-umzug-unsplash.webp\" data-bgopacity=\"0.4\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-522a9f1 e-con-full scroll-in e-flex e-con e-child\" data-id=\"522a9f1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2daea67 elementor-widget elementor-widget-heading\" data-id=\"2daea67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Welcome to the community.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69d3fdf elementor-widget elementor-widget-text-editor\" data-id=\"69d3fdf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>As a <strong>welcome gift for new residents<\/strong>, Vlip brings together everything important: waste collection, childcare, clubs and contacts \u2013 clearly arranged and always within reach.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7c495b5 e-con-full c e-flex e-con e-child\" data-id=\"7c495b5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-b6fe193 e-flex e-con-boxed e-con e-parent\" data-id=\"b6fe193\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-6\" data-rotate=\"false\" data-orbit=\"90deg 90deg 150%\" data-bgcolor=\"rgba(0,0,0,1)\" data-bgimage=\"https:\/\/vlip.me\/wp-content\/uploads\/2025\/11\/tierpark-haag-lp-vlip.webp\" data-bgopacity=\"0.4\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f04409f e-con-full scroll-in e-flex e-con e-child\" data-id=\"f04409f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9d37bd2 elementor-widget elementor-widget-heading\" data-id=\"9d37bd2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Leisure for the whole family.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae10c81 elementor-widget elementor-widget-text-editor\" data-id=\"ae10c81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Zoo, swimming pool or playground: with Vlip, municipalities showcase their <strong>leisure offers<\/strong> \u2013 with maps, opening hours and interactive content for children.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9d98321 e-con-full c e-flex e-con e-child\" data-id=\"9d98321\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-2cf38a9 e-flex e-con-boxed e-con e-parent\" data-id=\"2cf38a9\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-7\" data-rotate=\"false\" data-orbit=\"180deg 90deg 150%\" data-bgcolor=\"rgba(0,0,0,1)\" data-bgimage=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/tal-ortschaft-alpen-unsplash.webp\" data-bgopacity=\"0.4\" data-model-visible=\"true\" data-model=\"https:\/\/vlip.me\/wp-content\/uploads\/2026\/10\/vlip-wuerfel-wien.glb\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-c561e81 e-con-full scroll-in e-flex e-con e-child\" data-id=\"c561e81\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-51983eb elementor-widget elementor-widget-heading\" data-id=\"51983eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The region at a glance.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-df2771c elementor-widget elementor-widget-text-editor\" data-id=\"df2771c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>For every side of the cube you can see <strong>how often it was tapped<\/strong>. That shows you which information is in demand \u2013 without collecting data about individuals.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f039c94 e-con-full c e-flex e-con e-child\" data-id=\"f039c94\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t<section class=\"elementor-element elementor-element-b5ecc0d e-flex e-con-boxed e-con e-parent\" data-id=\"b5ecc0d\" data-element_type=\"container\" data-e-type=\"container\" id=\"section-8\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\" data-bgcolor=\"#F8F2E9\" data-model-visible=\"false\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-e4bceab e-con-full scroll-in e-flex e-con e-child\" data-id=\"e4bceab\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b7da2ae elementor-widget elementor-widget-heading\" data-id=\"b7da2ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Interested?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8798ed elementor-widget elementor-widget-heading\" data-id=\"a8798ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Let's develop your Vlip concept together<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e3398b1 e-con-full e-flex e-con e-child\" data-id=\"e3398b1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-a70c52e e-con-full e-flex e-con e-child\" data-id=\"a70c52e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4fe2604 elementor-widget elementor-widget-text-editor\" data-id=\"4fe2604\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Region, company or institution \u2013 we&#8217;ll show you how Vlip can work for you.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5186304 elementor-widget elementor-widget-button\" data-id=\"5186304\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/vlip.me\/en\/contact\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Send a no-obligation enquiry<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>So bringen Gemeinden und St\u00e4dte ihre Services in die Hand. Mit Vlip erreichen Gemeinden, St\u00e4dte und Verwaltungen ihre B\u00fcrgerinnen und B\u00fcrger direkt am Smartphone: Services, Termine und Informationen mit einem Tap \u2013 ganz ohne App. Jetzt anfragen Mehr erfahren B\u00fcrgerservice mit einem Tap. \u00d6ffnungszeiten, Formulare und Ansprechpersonen im Amt: Eine W\u00fcrfelseite f\u00fchrt direkt zum richtigen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3612","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/pages\/3612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/comments?post=3612"}],"version-history":[{"count":4,"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/pages\/3612\/revisions"}],"predecessor-version":[{"id":3635,"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/pages\/3612\/revisions\/3635"}],"wp:attachment":[{"href":"https:\/\/vlip.me\/en\/wp-json\/wp\/v2\/media?parent=3612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}