{"id":2457,"date":"2026-02-15T14:58:04","date_gmt":"2026-02-15T14:58:04","guid":{"rendered":"https:\/\/vibrastudio.ch\/?page_id=2457"},"modified":"2026-03-01T18:33:50","modified_gmt":"2026-03-01T17:33:50","slug":"2457-2","status":"publish","type":"page","link":"https:\/\/vibrastudio.ch\/?page_id=2457","title":{"rendered":"Services"},"content":{"rendered":"\n<div class=\"wp-block-cover alignwide is-light\" style=\"min-height:154px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div id=\"webgl-shader-container\" style=\"\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  z-index: -1;\n  pointer-events: none;\n\"><\/div>\n\n<div style=\"position: relative; z-index: 1;\"><\/div>\n\n<script type=\"module\">\ndocument.addEventListener('DOMContentLoaded', function () {\n  const container = document.getElementById('webgl-shader-container');\n  if (!container) return;\n\n  const canvas = document.createElement('canvas');\n  canvas.style.cssText = `\n    position: absolute;\n    display: block;\n    left: 0;\n    top: 0;\n  `;\n  container.appendChild(canvas);\n\n  const gl = canvas.getContext('webgl2');\n  if (!gl) {\n    container.style.display = 'none';\n    return;\n  }\n\n  const isMobilePortrait = () => {\n    const isMobile = window.matchMedia && window.matchMedia('(pointer: coarse)').matches;\n    return isMobile && window.innerHeight > window.innerWidth;\n  };\n\n  const applyCanvasLayout = () => {\n    const dpr = window.devicePixelRatio || 1;\n    const w = window.innerWidth;\n    const h = window.innerHeight;\n\n    if (isMobilePortrait()) {\n      \/\/ Render swapped (so the shader sees landscape), then rotate the canvas.\n      canvas.width  = Math.round(h * dpr);\n      canvas.height = Math.round(w * dpr);\n\n      canvas.style.width  = `${h}px`;\n      canvas.style.height = `${w}px`;\n\n      canvas.style.left = '50%';\n      canvas.style.top  = '50%';\n      canvas.style.transformOrigin = 'center';\n      canvas.style.transform = 'translate(-50%, -50%) rotate(90deg)';\n    } else {\n      \/\/ Normal desktop \/ landscape\n      canvas.width  = Math.round(w * dpr);\n      canvas.height = Math.round(h * dpr);\n\n      canvas.style.width  = `${w}px`;\n      canvas.style.height = `${h}px`;\n\n      canvas.style.left = '0';\n      canvas.style.top  = '0';\n      canvas.style.transform = 'none';\n    }\n\n    gl.viewport(0, 0, canvas.width, canvas.height);\n  };\n\n  window.addEventListener('resize', () => requestAnimationFrame(applyCanvasLayout));\n  window.addEventListener('orientationchange', () => setTimeout(applyCanvasLayout, 150));\n  applyCanvasLayout();\n\n  const vertexShader = `#version 300 es\n  in vec2 position;\n  out vec2 v_uv;\n  void main() {\n    gl_Position = vec4(position, 0.0, 1.0);\n    v_uv = position * 0.5 + 0.5;\n  }`;\n\n  \/\/ \u2705 UNCHANGED shader (your original)\n  const fragmentShader = `#version 300 es\n  precision highp float;\n\n  in vec2 v_uv;\n  out vec4 fragColor;\n\n  uniform float u_time;\n  uniform vec2 u_resolution;\n  uniform vec2 u_mouse;\n  uniform vec2 u_mouseDir;\n  uniform float u_mouseSpeed;\n  uniform sampler2D u_texture;\n  uniform float u_lastMouseTime;\n  uniform vec2 u_lastMousePos;\n\n  vec2 hash22(vec2 p) {\n    p = vec2(\n      dot(p, vec2(127.1, 311.7)),\n      dot(p, vec2(269.5, 183.3))\n    );\n    return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);\n  }\n\n  float gnoise(vec2 p) {\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n    vec2 u = f*f*(3.0-2.0*f);\n    return mix(\n      mix(dot(hash22(i + vec2(0.0,0.0)), f - vec2(0.0,0.0)),\n          dot(hash22(i + vec2(1.0,0.0)), f - vec2(1.0,0.0)), u.x),\n      mix(dot(hash22(i + vec2(0.0,1.0)), f - vec2(0.0,1.0)),\n          dot(hash22(i + vec2(1.0,1.0)), f - vec2(1.0,1.0)), u.x),\n      u.y\n    );\n  }\n\n  float fbm(vec2 p){\n    float v = 0.0;\n    float a = 0.5;\n    for(int i = 0; i < 5; i++){\n      v += a * gnoise(p);\n      p = p * 2.0;\n      a *= 0.5;\n    }\n    return v;\n  }\n\n  void main() {\n    ivec2 texSize = textureSize(u_texture, 0);\n    float textureAspect = float(texSize.x) \/ float(texSize.y);\n    float screenAspect = u_resolution.x \/ u_resolution.y;\n\n    vec2 uv = v_uv;\n    float scale = screenAspect \/ textureAspect;\n    uv.y = (uv.y - 0.5) \/ scale + 0.5;\n\n    vec2 p = uv * 2.6;\n\n    float t = u_time * 0.01;\n    vec2 warp = vec2(\n      fbm(p + vec2(0.0, 1.7) + t),\n      fbm(p + vec2(9.2, 3.4) - t)\n    );\n\n    float n = fbm(p + warp * 2.3);\n    float ang = n * 6.2831853;\n    vec2 flow = vec2(cos(ang), sin(ang));\n\n    vec2 totalDisplacement = flow * 0.6;\n\n    if (u_mouse.x > 0.0 && u_mouse.y > 0.0) {\n      vec2 mouse = u_mouse \/ u_resolution;\n      mouse.y = (mouse.y - 0.5) \/ scale + 0.5;\n\n      float brushRadius = 0.1;\n\n      vec2 strokeDir = u_mouseDir;\n      float dirLen = length(strokeDir);\n      if (dirLen < 0.0001) strokeDir = vec2(1.0, 0.0);\n      else strokeDir \/= dirLen;\n\n      vec2 strokeTan = vec2(-strokeDir.y, strokeDir.x);\n\n      vec2 d = uv - mouse;\n      float along  = dot(d, strokeDir);\n      float across = dot(d, strokeTan);\n\n      float ell = (along*along)\/(brushRadius*brushRadius) + (across*across)\/(brushRadius*brushRadius);\n\n      float strokeMask = clamp(1.0 - ell, 0.0, 1.0);\n      strokeMask = pow(strokeMask, 2.2);\n\n      totalDisplacement += strokeDir * strokeMask * 0.4;\n    }\n\n    if (u_lastMousePos.x > 0.0 && u_lastMousePos.y > 0.0) {\n      vec2 lastMouse = u_lastMousePos \/ u_resolution;\n      lastMouse.y = (lastMouse.y - 0.5) \/ scale + 0.5;\n\n      float dist = distance(uv, lastMouse);\n      float brushRadius = .2;\n\n      if (dist < brushRadius) {\n        float normalizedDist = dist \/ brushRadius;\n        float falloff = pow(1.0 - normalizedDist, 1.5);\n\n        float timeSinceLastMouse = u_time - u_lastMouseTime;\n        float fade = clamp(1.0 - timeSinceLastMouse \/ 10.0, 0.0, 1.0);\n\n        if (fade > 0.0) {\n          vec2 dir = normalize(uv - lastMouse);\n          vec2 tangent = vec2(-dir.y, dir.x);\n          totalDisplacement += (dir * 1.0 + tangent * 0.2) * falloff * 0.1 * fade;\n        }\n      }\n    }\n\n    vec2 distortedUV = uv - totalDisplacement;\n    fragColor = texture(u_texture, distortedUV);\n  }`;\n\n  function compileShader(source, type) {\n    const shader = gl.createShader(type);\n    gl.shaderSource(shader, source);\n    gl.compileShader(shader);\n    if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n      console.error('Shader compile error:', gl.getShaderInfoLog(shader));\n      gl.deleteShader(shader);\n      return null;\n    }\n    return shader;\n  }\n\n  const program = gl.createProgram();\n  const vs = compileShader(vertexShader, gl.VERTEX_SHADER);\n  const fs = compileShader(fragmentShader, gl.FRAGMENT_SHADER);\n  gl.attachShader(program, vs);\n  gl.attachShader(program, fs);\n  gl.linkProgram(program);\n\n  if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n    console.error('Program link error:', gl.getProgramInfoLog(program));\n  }\n\n  const vertices = new Float32Array([-1,-1, 1,-1, -1,1, 1,1]);\n  const vertexBuffer = gl.createBuffer();\n  gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);\n  gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n  gl.useProgram(program);\n\n  const positionLoc = gl.getAttribLocation(program, 'position');\n  const timeLoc = gl.getUniformLocation(program, 'u_time');\n  const resolutionLoc = gl.getUniformLocation(program, 'u_resolution');\n  const mouseLoc = gl.getUniformLocation(program, 'u_mouse');\n  const mouseDirLoc = gl.getUniformLocation(program, 'u_mouseDir');\n  const mouseSpeedLoc = gl.getUniformLocation(program, 'u_mouseSpeed');\n  const textureLoc = gl.getUniformLocation(program, 'u_texture');\n  const lastMouseTimeLoc = gl.getUniformLocation(program, 'u_lastMouseTime');\n  const lastMousePosLoc = gl.getUniformLocation(program, 'u_lastMousePos');\n\n  const vao = gl.createVertexArray();\n  gl.bindVertexArray(vao);\n  gl.enableVertexAttribArray(positionLoc);\n  gl.vertexAttribPointer(positionLoc, 2, gl.FLOAT, false, 0, 0);\n\n  const texture = gl.createTexture();\n  gl.bindTexture(gl.TEXTURE_2D, texture);\n  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array([255,255,255,255]));\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n  const image = new Image();\n  image.crossOrigin = 'anonymous';\n  image.onload = function () {\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n  };\n  image.src = 'https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShaderImgMosaic2.jpg';\n\n  let mouseX = 0, mouseY = 0;\n  let lastMouseX = 0, lastMouseY = 0, lastMouseTime = 0;\n  let mouseActive = false;\n\n  let prevMouseX = 0, prevMouseY = 0;\n  let mouseDirX = 1, mouseDirY = 0;\n  let mouseSpeed = 0;\n\n  const DIR_SMOOTH = 0.15;\n  const SPD_SMOOTH = 0.20;\n  const SPEED_SCALE = 1200;\n\n  document.addEventListener('mousemove', (e) => {\n    const dpr = window.devicePixelRatio || 1;\n\n    const newX = e.clientX * dpr;\n    const newY = (window.innerHeight - e.clientY) * dpr;\n\n    const dx = newX - prevMouseX;\n    const dy = newY - prevMouseY;\n\n    prevMouseX = newX;\n    prevMouseY = newY;\n\n    const len = Math.hypot(dx, dy);\n\n    if (len > 0.5) {\n      const ndx = dx \/ len;\n      const ndy = dy \/ len;\n\n      mouseDirX = mouseDirX * (1 - DIR_SMOOTH) + ndx * DIR_SMOOTH;\n      mouseDirY = mouseDirY * (1 - DIR_SMOOTH) + ndy * DIR_SMOOTH;\n\n      const dlen = Math.hypot(mouseDirX, mouseDirY) || 1;\n      mouseDirX \/= dlen;\n      mouseDirY \/= dlen;\n    }\n\n    const instSpeed = Math.min(1, len \/ SPEED_SCALE);\n    mouseSpeed = mouseSpeed * (1 - SPD_SMOOTH) + instSpeed * SPD_SMOOTH;\n\n    mouseX = newX;\n    mouseY = newY;\n\n    lastMouseX = mouseX;\n    lastMouseY = mouseY;\n    lastMouseTime = performance.now() \/ 1000;\n    mouseActive = true;\n  });\n\n  document.addEventListener('mouseleave', () => { mouseActive = false; });\n  document.addEventListener('mouseenter', () => { mouseActive = true; });\n\n  let startTime = Date.now();\n\n  function animate() {\n    const currentTime = (Date.now() - startTime) * 0.001;\n\n    gl.clearColor(0, 0, 0, 0);\n    gl.clear(gl.COLOR_BUFFER_BIT);\n\n    gl.useProgram(program);\n    gl.bindVertexArray(vao);\n\n    gl.uniform1f(timeLoc, currentTime);\n    gl.uniform2f(resolutionLoc, canvas.width, canvas.height);\n\n    if (mouseActive && mouseX > 0 && mouseY > 0) {\n      gl.uniform2f(mouseLoc, mouseX, mouseY);\n      gl.uniform2f(mouseDirLoc, mouseDirX, mouseDirY);\n      gl.uniform1f(mouseSpeedLoc, mouseSpeed);\n    } else {\n      gl.uniform2f(mouseLoc, -1, -1);\n      gl.uniform2f(mouseDirLoc, 1, 0);\n      gl.uniform1f(mouseSpeedLoc, 0);\n    }\n\n    gl.uniform1f(lastMouseTimeLoc, lastMouseTime);\n    gl.uniform2f(lastMousePosLoc, lastMouseX, lastMouseY);\n\n    gl.activeTexture(gl.TEXTURE0);\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.uniform1i(textureLoc, 0);\n\n    gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n    requestAnimationFrame(animate);\n  }\n\n  requestAnimationFrame(animate);\n});\n<\/script>\n\n\n\n<div class=\"wp-block-columns alignwide is-not-stacked-on-mobile is-layout-flex wp-container-core-columns-is-layout-0b7ff61d wp-block-columns-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:var(--wp--preset--spacing--30);padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column is-vertically-aligned-bottom agl agl-fadeCSS agl-in-duration-500 agl-in-distance-1 is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:5%\">\n<h1 class=\"wp-block-heading has-text-align-right has-contrast-color has-text-color has-link-color has-large-font-size wp-elements-259def865eec823bfb6f7084d81cb2e7\" style=\"writing-mode:vertical-rl\"><strong>Services<\/strong><\/h1>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-bottom agl agl-fadeCSS agl-in-duration-500 agl-in-distance-1 is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:5%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"padding-right:0;padding-left:0;flex-basis:100%\">\n<p class=\"has-text-align-left is-style-default has-text-color has-link-color agl agl-slideCSS agl-in-distance-1 wp-elements-af86972333c95901c2ed9bac7dda3d45 wp-block-paragraph\" style=\"color:#ffffff;font-size:clamp(33.419px, 2.089rem + ((1vw - 3.2px) * 2.769), 60px);\"><strong>Game Development<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center is-style-default has-text-color has-link-color agl agl-slideCSS agl-in-delay-150 agl-in-distance-1 wp-elements-88eceb526ef0081c1617440f8240a778 wp-block-paragraph\" style=\"color:#ffffff;font-size:clamp(33.419px, 2.089rem + ((1vw - 3.2px) * 2.769), 60px);\"><strong>Light Art Installations<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-right is-style-default has-text-color has-link-color agl agl-slideCSS agl-in-delay-300 agl-in-distance-1 wp-elements-d6e91acecb6352ed094afc19128847f6 wp-block-paragraph\" style=\"color:#ffffff;font-size:clamp(33.419px, 2.089rem + ((1vw - 3.2px) * 2.769), 60px);\"><strong>Concert Visuals<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-right is-style-default agl agl-slideCSS agl-in-delay-500 agl-in-distance-1 wp-block-paragraph\" style=\"font-size:clamp(18.959px, 1.185rem + ((1vw - 3.2px) * 1.15), 30px);\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e04500\" class=\"has-inline-color\"><strong>&#8230;CAN&#8217;T WAIT TO GET STARTED.<\/strong><\/mark><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group alignfull agl agl-fadeCSS agl-in-duration-500 agl-in-delay-2000 agl-in-distance-1 has-global-padding is-layout-constrained wp-container-core-group-is-layout-e627a39a wp-block-group-is-layout-constrained\" style=\"padding-right:0;padding-left:0\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-be292b22 wp-block-columns-is-layout-flex\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;margin-top:var(--wp--preset--spacing--10);margin-bottom:var(--wp--preset--spacing--10);padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column has-global-padding is-content-justification-left is-layout-constrained wp-container-core-column-is-layout-fbd00b99 wp-block-column-is-layout-constrained\" style=\"flex-basis:31%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top has-base-background-color has-background has-global-padding is-content-justification-left is-layout-constrained wp-container-core-column-is-layout-fe7d2b82 wp-block-column-is-layout-constrained\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:var(--wp--preset--spacing--10);padding-right:var(--wp--preset--spacing--10);padding-bottom:var(--wp--preset--spacing--10);padding-left:var(--wp--preset--spacing--10);flex-basis:70%\">\n<div class=\"wp-block-columns alignfull is-layout-flex wp-container-core-columns-is-layout-56564426 wp-block-columns-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-right:var(--wp--preset--spacing--10);padding-left:var(--wp--preset--spacing--10)\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:70%\">\n<p class=\"has-text-align-left has-text-color has-link-color wp-elements-505b15e2caefbf9d2cb94159b55bb277 wp-block-paragraph\" style=\"color:#ffffff\"><strong>Based in Switzerland. Available for selected projects<\/strong>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"padding-right:var(--wp--preset--spacing--20);flex-basis:30%\">\n<div class=\"wp-block-buttons is-content-justification-right is-layout-flex wp-container-core-buttons-is-layout-56f0c411 wp-block-buttons-is-layout-flex\" style=\"padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"mailto:roger@vibrastudio.ch\" target=\"_blank\" rel=\"noreferrer noopener\">Contact<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-base-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-8b00169b wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-0108bad3 wp-block-columns-is-layout-flex\" style=\"border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column has-global-padding is-content-justification-left is-layout-constrained wp-container-core-column-is-layout-fbd00b99 wp-block-column-is-layout-constrained\" style=\"flex-basis:30%\">\n<h2 class=\"wp-block-heading has-text-align-left has-contrast-color has-text-color has-link-color wp-elements-0da9d6dbaf29837b7e46877c134feacc\"><strong>Game development<\/strong><\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-f621d057 wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0;flex-basis:70%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-text-color has-link-color wp-elements-63324652c75ee3a27e9d349ef7d07041 wp-block-paragraph\" style=\"color:#ffffff\"><strong>Location Based | PC | Console | VR \/ XR | Mobile<\/strong><br>As a member of Stray Fawn Studio since its foundation, I\u2019ve contributed to multiple successful titles across PC, console, and mobile. An experience that strongly influences my work as VIBRA. Using game development as my toolset and experience at live events I build bridges between the virtual and physical world.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: true, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion alignwide is-layout-flow wp-block-accordion-is-layout-flow\" style=\"padding-right:0;padding-left:0\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-5&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-custom-color-2-color has-text-color has-link-color has-body-font-family has-medium-font-size wp-elements-dd4892f053120776e836ba2926efcdca\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-5-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-5\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><span class=\"wp-block-accordion-heading__toggle-title\"><strong>Selected works<\/strong><\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-5\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-5-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<div class=\"wp-block-group is-layout-grid wp-container-core-group-is-layout-577e359d wp-block-group-is-layout-grid\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\">\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image is-style-rounded is-style-rounded--1\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=337\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTheWanderingVillageStrayFawnStudio-1.jpg\" alt=\"\" class=\"wp-image-1042\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTheWanderingVillageStrayFawnStudio-1.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTheWanderingVillageStrayFawnStudio-1-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-29dbaec7d609243b3a44fdb84398c90c wp-block-paragraph\" style=\"color:#ffffff\"><strong>The Wandering Village<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image is-style-rounded is-style-rounded--2\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=432\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseNimbatusTheSpaceDroneConstructor.jpg\" alt=\"\" class=\"wp-image-1023\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseNimbatusTheSpaceDroneConstructor.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseNimbatusTheSpaceDroneConstructor-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-2132960c9b867538e892f525460c087b wp-block-paragraph\" style=\"color:#ffffff\"><strong>Nimbatus &#8211; The Space Drone Constructor<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image is-style-rounded is-style-rounded--3\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=488\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseVirtuAllalin.jpg\" alt=\"\" class=\"wp-image-1033\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseVirtuAllalin.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseVirtuAllalin-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-921bd7dfbc3b9953c97c40a9a159df55 wp-block-paragraph\" style=\"color:#ffffff\"><strong>VirtuAllalin<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image is-style-rounded is-style-rounded--4\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=456\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseNicheAGeneticsSurvivalGame.jpg\" alt=\"\" class=\"wp-image-1020\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseNicheAGeneticsSurvivalGame.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseNicheAGeneticsSurvivalGame-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-b81a81c7a274ec00dbf21a8390f46337 wp-block-paragraph\" style=\"color:#ffffff\"><strong>Niche &#8211; A genetics survival game<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-base-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-d1dc1792 wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-0108bad3 wp-block-columns-is-layout-flex\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column has-global-padding is-content-justification-left is-layout-constrained wp-container-core-column-is-layout-fbd00b99 wp-block-column-is-layout-constrained\" style=\"flex-basis:30%\">\n<h2 class=\"wp-block-heading has-text-align-left has-contrast-color has-text-color has-link-color wp-elements-577fd3a37b5d972e8d2b9f1254a4a0f3\"><strong>Light Art Installations<\/strong><\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-f621d057 wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0;flex-basis:70%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-text-color has-link-color wp-elements-a604b7b138bd8e58820f74e4462e2b8f wp-block-paragraph\" style=\"color:#ffffff\"><strong>Interactive Installation | Projection Mapping | Animation<\/strong><br>When winter comes and the days get shorter, Light Festival season begins and I get to shine. I&#8217;m passionate about light art as every installation comes with its own challenges, from new inventions in unusual spaces to technical limitations. Solving them is one part of the magic. The other is seeing visitors stop in awe, interact, and share a moment of joy.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: true, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion alignwide is-layout-flow wp-block-accordion-is-layout-flow\" style=\"padding-right:0;padding-left:0\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-10&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-custom-color-2-color has-text-color has-link-color has-body-font-family has-medium-font-size wp-elements-dd4892f053120776e836ba2926efcdca\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-10-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-10\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><span class=\"wp-block-accordion-heading__toggle-title\"><strong>Selected works<\/strong><\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-10\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-10-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<div class=\"wp-block-group is-layout-grid wp-container-core-group-is-layout-577e359d wp-block-group-is-layout-grid\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\">\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--6\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=268\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseWuselhain-1.jpg\" alt=\"\" class=\"wp-image-1039\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseWuselhain-1.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseWuselhain-1-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-3fc04f1642c53ba807af924a1a1a84e5 wp-block-paragraph\" style=\"color:#ffffff\"><strong>Der Wuselhain<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--7\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=668\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseLowendenkmal.jpg\" alt=\"\" class=\"wp-image-1021\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseLowendenkmal.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseLowendenkmal-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-1f4016fb9e56439913186e0e2f173a22 wp-block-paragraph\" style=\"color:#ffffff\"><strong>Concrete Jungle<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--8\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=530\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseFrostorchester.jpg\" alt=\"\" class=\"wp-image-1031\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseFrostorchester.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseFrostorchester-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-4fdf52f783e3dade91e846aeff3cd755 wp-block-paragraph\" style=\"color:#ffffff\"><strong>Frostorchester<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--9\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=808\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTorbogenLuzernLilu.jpg\" alt=\"\" class=\"wp-image-1014\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTorbogenLuzernLilu.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTorbogenLuzernLilu-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-6e790f33d3570aecd7e7cd2c0f02259c wp-block-paragraph\" style=\"color:#ffffff\"><strong>Torbogen Luzern<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-base-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-d756b54c wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-0108bad3 wp-block-columns-is-layout-flex\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column has-global-padding is-content-justification-left is-layout-constrained wp-container-core-column-is-layout-fbd00b99 wp-block-column-is-layout-constrained\" style=\"flex-basis:30%\">\n<h2 class=\"wp-block-heading has-text-align-left has-contrast-color has-text-color has-link-color wp-elements-9fdb29b5378c69a90fe21c9cad15d2c5\"><strong>Concert Visuals<\/strong><\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-f621d057 wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0;flex-basis:70%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-text-color has-link-color wp-elements-7cd5fdde30498043bfe97fe6fed4ea4a wp-block-paragraph\" style=\"color:#ffffff\"><strong>Festival | Club | Concert | Rave<\/strong><br>From underground venues to the biggest stages, I\u2019ve built years of experience creating live visuals through long nights, often with short preparation time. Today, I handpick special occasions and give each show the time it deserves. Less routine, more intention, and unforgettable moments for both the audience and myself.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: true, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion alignwide is-layout-flow wp-block-accordion-is-layout-flow\" style=\"padding-right:0;padding-left:0\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-15&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading has-custom-color-2-color has-text-color has-link-color has-body-font-family has-medium-font-size wp-elements-dd4892f053120776e836ba2926efcdca\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-15-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-15\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><span class=\"wp-block-accordion-heading__toggle-title\"><strong>Selected works<\/strong><\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-15\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-15-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<div class=\"wp-block-group is-layout-grid wp-container-core-group-is-layout-577e359d wp-block-group-is-layout-grid\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\">\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--11\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=577\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseStreetParadeMainStage.jpg\" alt=\"\" class=\"wp-image-1029\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseStreetParadeMainStage.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseStreetParadeMainStage-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-c69cceb8caac1e38d448f199d30e495b wp-block-paragraph\" style=\"color:#ffffff\"><strong>Street Parade<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--12\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=697\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseMax.jpg\" alt=\"\" class=\"wp-image-1018\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseMax.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseMax-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-c399fe0fcabc259152ee54a76bc18f3e wp-block-paragraph\" style=\"color:#ffffff\"><strong>M\u00e4x Club<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--13\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=828\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTerrazzzaHorsesPark.jpg\" alt=\"\" class=\"wp-image-1013\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTerrazzzaHorsesPark.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseTerrazzzaHorsesPark-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-34e2f4ad46facbe69d3880ce37e6316e wp-block-paragraph\" style=\"color:#ffffff\"><strong>Terrazzza<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-bc18b00a wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group portfolio-wrapper has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--14\"><a href=\"https:\/\/vibrastudio.ch\/?page_id=757\"><img decoding=\"async\" width=\"300\" height=\"400\" fetchpriority=\"low\" src=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseSunIceStMoritz.jpg\" alt=\"\" class=\"wp-image-1016\" srcset=\"https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseSunIceStMoritz.jpg 300w, https:\/\/vibrastudio.ch\/wp-content\/uploads\/2026\/02\/ShowcaseSunIceStMoritz-225x300.jpg 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-fc68205e12f21cb5e023fc21ef695911 wp-block-paragraph\" style=\"color:#ffffff\"><strong>SunIce Festival<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-base-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-d756b54c wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-0108bad3 wp-block-columns-is-layout-flex\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column has-global-padding is-content-justification-left is-layout-constrained wp-container-core-column-is-layout-fbd00b99 wp-block-column-is-layout-constrained\" style=\"flex-basis:30%\">\n<h2 class=\"wp-block-heading has-text-align-left has-contrast-color has-text-color has-link-color wp-elements-958eb72dc34f941ca9f0ef2d21e633ab\"><strong>Tools &amp; Skills<\/strong><\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-f621d057 wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0;flex-basis:70%\">\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">Live Performance<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">Resolume, Wire, Live Cam<\/mark><\/mark><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">Real-Time &amp; Interactive<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">Unity Engine<\/mark><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">Technical Integration<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">C#, DMX, Art-Net<\/mark><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">Design<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">Adobe Suite<\/mark><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">3D<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color has-link-color wp-elements-5305c22a204b2dbceca47dc597435f9d wp-container-content-9cfa9a5a wp-block-paragraph\" style=\"color:#ffffff\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">Blender, C4D, ZBrush, Nomad Sculpt, RizomUV, TopoGun<\/mark> <\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">2D<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color has-link-color wp-elements-01cd05916e27a8f7a4fdcab0b009075c wp-container-content-9cfa9a5a wp-block-paragraph\" style=\"color:#ffffff\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">Infinity Painter, Rough Animator<\/mark>, Substance Painter, Substance Designer, Traditional<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns awards-columns is-layout-flex wp-container-core-columns-is-layout-5d5993d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-right wp-container-content-9cfa9a5a wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cfbbe9\" class=\"has-inline-color\">Core focus<\/mark><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color has-link-color wp-elements-ab9638472c94ea033d3f71c59bfb1fac wp-container-content-9cfa9a5a wp-block-paragraph\" style=\"color:#ffffff\">User experience, <mark style=\"background-color:rgba(0, 0, 0, 0);color:#ffffff\" class=\"has-inline-color\">Technical Art, Illustration, Sculpting, Frame by Fra<\/mark>me<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2457","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=\/wp\/v2\/pages\/2457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2457"}],"version-history":[{"count":157,"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=\/wp\/v2\/pages\/2457\/revisions"}],"predecessor-version":[{"id":3006,"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=\/wp\/v2\/pages\/2457\/revisions\/3006"}],"wp:attachment":[{"href":"https:\/\/vibrastudio.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}