PageSourceSearch

https://julianloss.com/cv

html julianloss.com collected 2026-09-24 11:44:52 UTC 58,355 bytes, 1,445 lines download raw bytes

1<!doctype html >
2<html xmlns="http://www.w3.org/1999/xhtml" lang="de"
3      class="ios-preview-native-scroll">
4<head>
5    <meta charset="utf-8">
6    
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45<script type="text/javascript">
46    window._currentDevice = 'desktop';
47    window.Parameters = window.Parameters || {
48        HomeUrl: 'http://www.julianloss.com/',
49
50        SystemID: '1AND1_EU_PROD',
51        SiteAlias: 'be5f1646e5624dbb9ad470eed3fd6f37',
52        SiteType: atob('RFVEQU9ORQ=='),
53        PublicationDate: 'Sep 08, 2026',
54        ExternalUid: '6c61f8c7-09f2-4cf0-8c17-7daacf8eb55d',
55        IsSiteMultilingual: false,
56        InitialPostAlias: '',
57        InitialPostPageUuid: '',
58        InitialDynamicItem: '',
59        DynamicPageInfo: {
60            isDynamicPage: false,
61            base64JsonRowData: 'null',
62        },
63        InitialPageAlias: 'cv',
64        InitialPageUuid: '6d017dda9907487f8da1e4375b8b2059',
65        InitialPageId: '713096818',
66        InitialEncodedPageAlias: 'Y3Y=',
67        InitialHeaderUuid: '59dfe8d79f8d4f1583b7dc529e25dd18',
68        CurrentPageUrl: '',
69        IsCurrentHomePage: false,
70        AllowAjax: false,
71        AfterAjaxCommand: null,
72        HomeLinkText: 'Back To Home',
73        UseGalleryModule: false,
74        CurrentThemeName: 'Layout Theme',
75        ThemeVersion: '500000',
76        DefaultPageAlias: '',
77        RemoveDID: true,
78        WidgetStyleID: null,
79        IsHeaderFixed: false,
80        IsHeaderSkinny: false,
81        IsBfs: true,
82        StorePageAlias: 'null',
83        StorePagesUrls: 'e30=',
84        IsNewStore: 'false',
85        StorePath: '',
86        StoreId: 'null',
87        StoreVersion: 0,
88        StoreBaseUrl: '',
89        StoreCleanUrl: true,
90        StoreDisableScrolling: true,
91        IsStoreSuspended: false,
92        HasCustomDomain: true,
93        SimpleSite: false,
94        showCookieNotification: false,
95        cookiesNotificationMarkup: 'null',
96        translatedPageUrl: '',
97        isFastMigrationSite: false,
98        sidebarPosition: 'NA',
99        currentLanguage: 'de',
100        currentLocale: 'de',
101        NavItems: '{}',
102        errors: {
103            general: 'There was an error connecting to the page.<br/> Make sure you are not offline.',
104            password: 'Incorrect name/password combination',
105            tryAgain: 'Try again'
106        },
107        
108        mapConsent: {
109            message: 'Dieser Inhalt wird von einem Drittanbieter, {0}, bereitgestellt. Falls aktiviert, kann {0} Informationen \u00FCber Ihre Aktivit\u00E4ten sammeln.',
110            enable: 'Aktivieren'
111        },
112        NavigationAreaParams: {
113            ShowBackToHomeOnInnerPages: true,
114            NavbarSize: 4,
115            NavbarLiveHomePage: 'http://www.julianloss.com/',
116            BlockContainerSelector: '.dmBody',
117            NavbarSelector: '#dmNav:has(a)',
118            SubNavbarSelector: '#subnav_main'
119        },
120        hasCustomCode: false,
121        planID: '2002',
122        customTemplateId: 'null',
123        siteTemplateId: 'null',
124        productId: 'DM_DIRECT',
125        disableTracking: false,
126        pageType: 'FROM_SCRATCH',
127        isRuntimeServer: true,
128        isInEditor: false,
129        isInPreview: false,
130        hasNativeStore: false,
131        defaultLang: 'de',
132        hamburgerMigration: null,
133        isFlexSite: false
134    };
135
136    window.Parameters.LayoutID = {};
137    window.Parameters.LayoutID[window._currentDevice] = 6;
138    window.Parameters.LayoutVariationID = {};
139    window.Parameters.LayoutVariationID[window._currentDevice] = 5;
140</script>
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162<!-- Injecting site-wide to the head -->
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180<script type="text/javascript" id="d_track_campaign">
181    (function() {
182        if (!window.location.search) {
183            return;
184        }
185        const cleanParams = window.location.search.substring(1); // Strip ?
186        const queryParams = cleanParams.split('&');
187
188        const expires = 'expires=' + new Date().getTime() + 24 * 60 * 60 * 1000;
189        const domain = 'domain=' + window.location.hostname;
190        const path = "path=/";
191
192        queryParams.forEach((param) => {
193            const [key, value = ''] = param.split('=');
194            if (key.startsWith('utm_')) {
195                const cookieName = "_dm_rt_" + key.substring(4);
196                const cookie = cookieName + "=" + value;
197                const joined = [cookie, expires, domain, path].join(";");
198                document.cookie = joined;
199            }
200        });
201    }());
202</script>
vendor: 1 bytes, line 202
202
203<script type="text/javascript" id="d_track_referrer">
204    (function() {
205        const cookieName = '_dm_entry_referrer';
206        const referrer = document.referrer;
207        if (!referrer) {
208            return;
209        }
210        let referrerOrigin;
211        try {
212            referrerOrigin = new URL(referrer).origin;
213        } catch (e) {
214            return;
215        }
216        // 'null' is what an opaque origin (sandboxed iframe, file://) serializes to.
217        if (!referrerOrigin || referrerOrigin === 'null' || referrerOrigin === window.location.origin) {
218            return;
219        }
220        try {
221            const existing = document.cookie
222                .split('; ')
223                .find((candidate) => candidate.indexOf(cookieName + '=') === 0);
224            if (existing && decodeURIComponent(existing.slice(cookieName.length + 1))) {
225                return;
226            }
227            // No expiry: session-scoped, matching the _dm_rt_ cookies above that a submission
228            // reads alongside this one (session-scoped in practice — see FBN-5389).
229            const secure = window.location.protocol === 'https:' ? ';Secure' : '';
230            document.cookie = cookieName + '=' + encodeURIComponent(referrerOrigin)
231                + ';path=/;SameSite=Lax' + secure;
232        } catch (e) {
233            return;
234        }
235    }());
236</script>
236
237
238<script type="text/javascript" >
239    var _dm_gaq = {};
240    var _gaq = _gaq || [];
241    var _dm_insite = [];
242</script>
242
243
244
245
246
247
248
249<!-- End Injecting site-wide to the head -->
250
251<!-- Inject secured cdn script -->
252
253
254<!-- ========= Meta Tags ========= -->
255<!-- PWA settings -->
256<script>
257    function toHash(str) {
258        var hash = 5381, i = str.length;
259        while (i) {
260            hash = hash * 33 ^ str.charCodeAt(--i)
261        }
262        return hash >>> 0
263    }
264</script>
vendor: 1 bytes, line 264
264
265<script>
266    (function (global) {
267    //const cacheKey = global.cacheKey;
268    const isOffline = 'onLine' in navigator && navigator.onLine === false;
269    const hasServiceWorkerSupport = 'serviceWorker' in navigator;
270    if (isOffline) {
271        console.log('offline mode');
272    }
273    if (!hasServiceWorkerSupport) {
274        console.log('service worker is not supported');
275    }
276    if (hasServiceWorkerSupport && !isOffline) {
277        window.addEventListener('load', function () {
278            const serviceWorkerPath = '/runtime-service-worker.js?v=3';
279            navigator.serviceWorker
280                .register(serviceWorkerPath, { scope: './' })
281                .then(
282                    function (registration) {
283                        // Registration was successful
284                        console.log(
285                            'ServiceWorker registration successful with scope: ',
286                            registration.scope
287                        );
288                    },
289                    function (err) {
290                        // registration failed :(
291                        console.log('ServiceWorker registration failed: ', err);
292                    }
293                )
294                .catch(function (err) {
295                    console.log(err);
296                });
297        });
298
299        // helper function to refresh the page
300        var refreshPage = (function () {
301            var refreshing;
302            return function () {
303                if (refreshing) return;
304                // prevent multiple refreshes
305                var refreshkey = 'refreshed' + location.href;
306                var prevRefresh = localStorage.getItem(refreshkey);
307                if (prevRefresh) {
308                    localStorage.removeItem(refreshkey);
309                    if (Date.now() - prevRefresh < 30000) {
310                        return; // dont go into a refresh loop
311                    }
312                }
313                refreshing = true;
314                localStorage.setItem(refreshkey, Date.now());
315                console.log('refereshing page');
316                window.location.reload();
317            };
318        })();
319
320        function messageServiceWorker(data) {
321            return new Promise(function (resolve, reject) {
322                if (navigator.serviceWorker.controller) {
323                    var worker = navigator.serviceWorker.controller;
324                    var messageChannel = new MessageChannel();
325                    messageChannel.port1.onmessage = replyHandler;
326                    worker.postMessage(data, [messageChannel.port2]);
327                    function replyHandler(event) {
328                        resolve(event.data);
329                    }
330                } else {
331                    resolve();
332                }
333            });
334        }
335    }
336})(window);
337</script>
337
338<!-- Add manifest -->
339<!-- End PWA settings -->
340
341
342
343<link rel="canonical" href="https://www.julianloss.com/cv">
344
345<meta id="view" name="viewport" content="initial-scale=1, minimum-scale=1, maximum-scale=5, viewport-fit=cover">
346<meta name="dm:lcp-preload" content="dm:lcp-frozen">
347<meta name="apple-mobile-web-app-capable" content="yes">
348<title>BIO
349</title>
350
351<!--Add favorites icons-->
352
353<link rel="icon" type="image/x-icon" href="https://static-cdn.website-editor.net/runtime/favicon_d1_res.ico"/>
354
355<!-- End favorite icons -->
356<link rel="preconnect" href="https://le-cdn.website-editor.net"/>
357<link rel="preconnect" href="https://cdn.website-editor.net" crossorigin/>
358<link rel="preconnect" href="https://static-cdn.website-editor.net"/>
359<link rel="preconnect" href="https://cdn.website-editor.net"/>
360
361
362
363<!-- render the required CSS and JS in the head section -->
364<script id='d-js-dmapi'>
365    window.SystemID = '1AND1_EU_PROD';
366
367    if (!window.dmAPI) {
368        window.dmAPI = {
369            registerExternalRuntimeComponent: function () {
370            },
371            getCurrentDeviceType: function () {
372                return window._currentDevice;
373            },
374            runOnReady: (ns, fn) => {
375                const safeFn = dmAPI.toSafeFn(fn);
376                ns = ns || 'global_' + Math.random().toString(36).slice(2, 11);
377                const eventName = 'afterAjax.' + ns;
378
379                if (document.readyState === 'complete') {
380                    $.DM.events.off(eventName).on(eventName, safeFn);
381                    setTimeout(function () {
382                        safeFn({
383                            isAjax: false,
384                        });
385                    }, 0);
386                } else {
387                    window?.waitForDeferred?.('dmAjax', () => {
388                        $.DM.events.off(eventName).on(eventName, safeFn);
389                        safeFn({
390                            isAjax: false,
391                        });
392                    });
393                }
394            },
395            toSafeFn: (fn) => {
396                if (fn?.safe) {
397                    return fn;
398                }
399                const safeFn = function (...args) {
400                    try {
401                        return fn?.apply(null, args);
402                    } catch (e) {
403                        console.log('function failed ' + e.message);
404                    }
405                };
406                safeFn.safe = true;
407                return safeFn;
408            }
409        };
410    }
411
412    if (!window.requestIdleCallback) {
413        window.requestIdleCallback = function (fn) {
414            setTimeout(fn, 0);
415        }
416    }
417</script>
417
418
419<!-- loadCSS function header.jsp-->
420
421
422
423
424
425
426<script id="d-js-load-css">
427/**
428 * There are a few <link> tags with CSS resource in them that are preloaded in the page
429 * in each of those there is a "onload" handler which invokes the loadCSS callback
430 * defined here.
431 * We are monitoring 3 main CSS files - the runtime, the global and the page.
432 * When each load we check to see if we can append them all in a batch. If threre
433 * is no page css (which may happen on inner pages) then we do not wait for it
434 */
435(function () {
436  let cssLinks = {};
437  function loadCssLink(link) {
438    link.onload = null;
439    link.rel = "stylesheet";
440    link.type = "text/css";
441  }
442  
443    function checkCss() {
444      const pageCssLink = document.querySelector("[id*='CssLink']");
445      const widgetCssLink = document.querySelector("[id*='widgetCSS']");
446
447        if (cssLinks && cssLinks.runtime && cssLinks.global && (!pageCssLink || cssLinks.page) && (!widgetCssLink || cssLinks.widget)) {
448            const storedRuntimeCssLink = cssLinks.runtime;
449            const storedPageCssLink = cssLinks.page;
450            const storedGlobalCssLink = cssLinks.global;
451            const storedWidgetCssLink = cssLinks.widget;
452
453            storedGlobalCssLink.disabled = true;
454            loadCssLink(storedGlobalCssLink);
455
456            if (storedPageCssLink) {
457                storedPageCssLink.disabled = true;
458                loadCssLink(storedPageCssLink);
459            }
460
461            if(storedWidgetCssLink) {
462                storedWidgetCssLink.disabled = true;
463                loadCssLink(storedWidgetCssLink);
464            }
465
466            storedRuntimeCssLink.disabled = true;
467            loadCssLink(storedRuntimeCssLink);
468
469            requestAnimationFrame(() => {
470                setTimeout(() => {
471                    storedRuntimeCssLink.disabled = false;
472                    storedGlobalCssLink.disabled = false;
473                    if (storedPageCssLink) {
474                      storedPageCssLink.disabled = false;
475                    }
476                    if (storedWidgetCssLink) {
477                      storedWidgetCssLink.disabled = false;
478                    }
479                    // (SUP-4179) Clear the accumulated cssLinks only when we're
480                    // sure that the document has finished loading and the document 
481                    // has been parsed.
482                    if(document.readyState === 'interactive') {
483                      cssLinks = null;
484                    }
485                }, 0);
486            });
487        }
488    }
489  
490
491  function loadCSS(link) {
492    try {
493      var urlParams = new URLSearchParams(window.location.search);
494      var noCSS = !!urlParams.get("nocss");
495      var cssTimeout = urlParams.get("cssTimeout") || 0;
496
497      if (noCSS) {
498        return;
499      }
500      if (link.href && link.href.includes("d-css-runtime")) {
501        cssLinks.runtime = link;
502        checkCss();
503      } else if (link.id === "siteGlobalCss") {
504        cssLinks.global = link;
505        checkCss();
506      } 
507      
508      else if (link.id && link.id.includes("CssLink")) {
509        cssLinks.page = link;
510        checkCss();
511      } else if (link.id && link.id.includes("widgetCSS")) {
512        cssLinks.widget = link;
513        checkCss();
514      }
515      
516      else {
517        requestIdleCallback(function () {
518          window.setTimeout(function () {
519            loadCssLink(link);
520          }, parseInt(cssTimeout, 10));
521        });
522      }
523    } catch (e) {
524      throw e
525    }
526  }
527  window.loadCSS = window.loadCSS || loadCSS;
528})();
529</script>
529
530
531
532
533<script data-role="deferred-init" type="text/javascript">
534    /* usage: window.getDeferred(<deferred name>).resolve() or window.getDeferred(<deferred name>).promise.then(...)*/
535    function Def() {
536        this.promise = new Promise((function (a, b) {
537            this.resolve = a, this.reject = b
538        }).bind(this))
539    }
540
541    const defs = {};
542    window.getDeferred = function (a) {
543        return null == defs[a] && (defs[a] = new Def), defs[a]
544    }
545    window.waitForDeferred = function (b, a, c) {
546        let d = window?.getDeferred?.(b);
547        d
548            ? d.promise.then(a)
549            : c && ["complete", "interactive"].includes(document.readyState)
550                ? setTimeout(a, 1)
551                : c
552                    ? document.addEventListener("DOMContentLoaded", a)
553                    : console.error(`Deferred  does not exist`);
554    };
555</script>
555
556<style id="forceCssIncludes">
557    /* This file is auto-generated from a `scss` file with the same name */
558
559.videobgwrapper{overflow:hidden;position:absolute;z-index:0;width:100%;height:100%;top:0;left:0;pointer-events:none;border-radius:inherit}.videobgframe{position:absolute;width:101%;height:100%;top:50%;left:50%;transform:translateY(-50%) translateX(-50%);object-fit:fill}#dm video.videobgframe{margin:0}@media (max-width:767px){.dmRoot .dmPhotoGallery.newPhotoGallery:not(.photo-gallery-done){min-height:80vh}}@media (min-width:1025px){.dmRoot .dmPhotoGallery.newPhotoGallery:not(.photo-gallery-done){min-height:45vh}}@media (min-width:768px) and (max-width:1024px){.responsiveTablet .dmPhotoGallery.newPhotoGallery:not(.photo-gallery-done){min-height:45vh}}#dm [data-show-on-page-only]{display:none!important}#dmRoot div.stickyHeaderFix div.site_content{margin-top:0!important}#dmRoot div.stickyHeaderFix div.hamburger-header-container{position:relative}@media (min-width:768px) and (max-width:1024px){.responsiveTablet #dm .dmInner .hide-for-medium,[data-hidden-on-tablet]{display:none!important}}
560    
561
562</style>
563<style id="cssVariables" type="text/css">
564    
565</style>
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591<!-- Google Fonts Include -->
592
593
594
595
596
597
598
599
600
601
602
603
604
605<!-- loadCSS function fonts.jsp-->
606
607
608
609<link type="text/css" rel="stylesheet" href="https://cdn.website-editor.net/fonts/css2?family=Lobster+Two:ital,wght@0,400;0,700;1,400;1,700&family=Belgrano:ital,wght@0,400&family=Creepster:ital,wght@0,400&family=Alfa+Slab+One:ital,wght@0,400&family=Creepster:ital,wght@0,400&family=Lobster:ital,wght@0,400&family=Montserrat:ital,wght@0,100..900;1,100..900&family=Cabin:ital,wght@0,400..700;1,400..700&family=Arvo:ital,wght@0,400;0,700;1,400;1,700&family=Oswald:ital,wght@0,200..700;1,200..700&family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&family=Alike:ital,wght@0,400&family=Open+Sans:ital,wght@0,300..800;1,300..800&family=Eater:ital,wght@0,400&family=Abril+Fatface:ital,wght@0,400&amp;subset=latin-ext&amp;display=swap"  />
610
611
612
613
614
615<!-- RT CSS Include d-css-runtime-desktop-one-package-structured-global-->
616<link rel="stylesheet" type="text/css" href="https://static-cdn.website-editor.net/mnlt/production/6792/_dm/s/rt/dist/css/d-css-runtime-desktop-one-package-structured-global.min.css" />
617
618<!-- End of RT CSS Include -->
619
620<link type="text/css" rel="stylesheet" href="https://cdn.website-editor.net/WIDGET_CSS/393dab87ca5e35709f115175fd2135b9.css" id="widgetCSS" />
621
622<!-- Support `img` size attributes -->
623<style>img[width][height] {
624  height: auto;
625}</style>
626
627<!-- Support showing sticky element on page only -->
628<style>
629  body[data-page-alias="cv"] #dm [data-show-on-page-only="cv"] {
630    display: block !important;
631  }
632</style>
633
634<!-- This is populated in Ajax navigation -->
635<style id="pageAdditionalWidgetsCss" type="text/css">
636</style>
637
638
639
640
641<!-- Site CSS -->
642<link type="text/css" rel="stylesheet" href="https://cdn.website-editor.net/s/be5f1646e5624dbb9ad470eed3fd6f37/files/be5f1646e5624dbb9ad470eed3fd6f37_1.min.css?v=c6cf2f9e60fefbc94b406bfdf07d133c&Expires=1792491239&Signature=SCszgLartpUs0tkTJJYygS8tQPuEEbXR-n0S6-iMOB7LgIxn03iAKFaa1~2mRTL2VnY-zxni9IRHZ74~6ipbZ2XTbwi8YNJ~TiTNVV5HwbMWoPrw-C604q5Ah5Li1MyvCj3Nt88d31Jm7IuF2eHdJG3PI~1rBBAAjXiNtcnqv7CGedhmrKbZDayeepUovh~WG1P6uvXjNcnMU~TpBgdIvWE5noWpm1kI8HubFsZQxhTY9PU3gvp2M6G2zZOhguYCe6a6uajclghxo8jZLp5CEG6rRHyWJ3hC84G4C9XdaEtv-TVS0-N6dA7nOWqCJAeyeFFoN5KGR~FpfQfiaJV9sQ__&Key-Pair-Id=K2NXBXLF010TJW" id="siteGlobalCss" />
643
644
645<!-- additional css file per platform -->
646<link
647        type="text/css" rel="stylesheet"
648        href="/_dm/s/rt/css/oneUndOne/1and1-runtime.css?version=2026-09-20T06_52_51"
649/>
650
651
652<style id="customWidgetStyle" type="text/css">
653    
654</style>
655<style id="innerPagesStyle" type="text/css">
656    
657</style>
658
659
660<style
661        id="additionalGlobalCss" type="text/css"
662>
663</style>
664
665<style id="pagestyle" type="text/css">
666    *#dm *.dmBody nav.u_1284501632 { color:white !important; }
667
668*.dmFooterContainer { display:none !important; }
669
670</style>
671
672<style id="pagestyleDevice" type="text/css">
673    *#dm *.dmBody div.u_1529686398 {
674  float:none !important;
675  top:0px !important;
676  left:0 !important;
677  width:calc(100% - 0px) !important;
678  position:relative !important;
679  height:auto !important;
680  padding-top:2px !important;
681  padding-left:0px !important;
682  padding-bottom:2px !important;
683  margin-right:auto !important;
684  margin-left:auto !important;
685  max-width:100% !important;
686  margin-top:-15px !important;
687  margin-bottom:8px !important;
688  padding-right:0px !important;
689  min-width:25px !important;
690}
691
692</style>
693
694<!-- Flex Sections CSS -->
695
696
697
698
699
700
701
702<style id="globalFontSizeStyle" type="text/css">
703    .font-size-20, .size-20, .size-20 > font { font-size: 20px !important; }.font-size-14, .size-14, .size-14 > font { font-size: 14px !important; }
704</style>
705<style id="pageFontSizeStyle" type="text/css">
706</style>
707
708
709
710
711<style id="hideAnimFix">
712  .dmDesktopBody:not(.editGrid) [data-anim-desktop]:not([data-anim-desktop='none']), .dmDesktopBody:not(.editGrid) [data-anim-extended] {
713    visibility: hidden;
714  }
715
716  .dmDesktopBody:not(.editGrid) .dmNewParagraph[data-anim-desktop]:not([data-anim-desktop='none']), .dmDesktopBody:not(.editGrid) .dmNewParagraph[data-anim-extended] {
717    visibility: hidden !important;
718  }
719
720  #dmRoot:not(.editGrid) .flex-element [data-anim-extended] {
721    visibility: hidden;
722  }
723
724</style>
725
726
727
728
729<style id="fontFallbacks">
730    @font-face {
731  font-family: "Lobster Two Fallback";
732  src: local('Arial');
733  ascent-override: 123.9905%;
734  descent-override: 30.9976%;
735  size-adjust: 80.6513%;
736  line-gap-override: 0%;
737 }@font-face {
738  font-family: "Belgrano Fallback";
739  src: local('Arial');
740  ascent-override: 87.5736%;
741  descent-override: 24.5914%;
742  size-adjust: 113.0478%;
743  line-gap-override: 0%;
744 }@font-face {
745  font-family: "Creepster Fallback";
746  src: local('Arial');
747  ascent-override: 104.0992%;
748  descent-override: 23.8338%;
749  size-adjust: 91.3717%;
750  line-gap-override: 0%;
751 }@font-face {
752  font-family: "Helvetica Fallback";
753  src: local('Arial');
754  ascent-override: 77.002%;
755  descent-override: 22.998%;
756  line-gap-override: 0%;
757 }@font-face {
758  font-family: "Alfa Slab One Fallback";
759  src: local('Arial');
760  ascent-override: 85.4761%;
761  descent-override: 27.4744%;
762  size-adjust: 121.2035%;
763  line-gap-override: 0%;
764 }@font-face {
765  font-family: "Creepster Fallback";
766  src: local('Arial');
767  ascent-override: 104.0992%;
768  descent-override: 23.8338%;
769  size-adjust: 91.3717%;
770  line-gap-override: 0%;
771 }@font-face {
772  font-family: "Lobster Fallback";
773  src: local('Arial');
774  ascent-override: 114.651%;
775  descent-override: 28.6627%;
776  size-adjust: 87.2212%;
777  line-gap-override: 0%;
778 }@font-face {
779  font-family: "Montserrat Fallback";
780  src: local('Arial');
781  ascent-override: 84.9466%;
782  descent-override: 22.0264%;
783  size-adjust: 113.954%;
784  line-gap-override: 0%;
785 }@font-face {
786  font-family: "Cabin Fallback";
787  src: local('Arial');
788  ascent-override: 101.7818%;
789  descent-override: 26.3684%;
790  size-adjust: 94.8106%;
791  line-gap-override: 0%;
792 }@font-face {
793  font-family: "Arvo Fallback";
794  src: local('Arial');
795  ascent-override: 87.6577%;
796  descent-override: 22.538%;
797  line-gap-override: 2.4498%;
798  size-adjust: 109.6239%;
799}@font-face {
800  font-family: "Oswald Fallback";
801  src: local('Arial');
802  ascent-override: 145.0682%;
803  descent-override: 35.1423%;
804  size-adjust: 82.2372%;
805  line-gap-override: 0%;
806 }@font-face {
807  font-family: "Alike Fallback";
808  src: local('Arial');
809  ascent-override: 96.9517%;
810  descent-override: 26.6026%;
811  size-adjust: 101.4938%;
812  line-gap-override: 0%;
813 }@font-face {
814  font-family: "Open Sans Fallback";
815  src: local('Arial');
816  ascent-override: 101.1768%;
817  descent-override: 27.7323%;
818  size-adjust: 105.6416%;
819  line-gap-override: 0%;
820 }@font-face {
821  font-family: "Eater Fallback";
822  src: local('Arial');
823  ascent-override: 100.9625%;
824  descent-override: 32.0168%;
825  size-adjust: 140.1549%;
826  line-gap-override: 0%;
827 }@font-face {
828  font-family: "Abril Fatface Fallback";
829  src: local('Arial');
830  ascent-override: 102.6391%;
831  descent-override: 28.2306%;
832  size-adjust: 103.0796%;
833  line-gap-override: 0%;
834 }
835</style>
836
837
838<!-- End render the required css and JS in the head section -->
839
840
841
842
843
844
845
846
847
848  <link type="application/rss+xml" rel="alternate" href="https://www.julianloss.com/feed/rss2"/>
849  <link type="application/atom+xml" rel="alternate" href="https://www.julianloss.com/feed/atom"/>
850  <meta property="og:type" content="website"/>
851  <meta property="og:url" content="https://www.julianloss.com/cv"/>
852
853  <meta name="twitter:card" content="summary"/>
854
855
856
857
858<!-- SYS- MUFORDFfRVVfUFJPRA== -->
859</head>
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881<body id="dmRoot" data-page-alias="cv"  class="dmRoot dmDesktopBody fix-mobile-scrolling addCanvasBorder dmResellerSite dmLargeBody "
882      style="padding:0;margin:0;"
883      
884    >
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900<!-- ========= Site Content ========= -->
901<div id="dm" class='dmwr'>
902    
903    <div class="dm_wrapper standard-var5 widgetStyle-3 standard">
904         <div dmwrapped="true" id="1842486403"> <div dmtemplateid="StandardLayoutMultiD" class="standardHeaderLayout dm-bfs dm-layout-sec hasAnimations dmPageBody d-page-1363787472 inputs-css-clean dmFreeHeader" id="dm-outer-wrapper" data-page-class="1363787472" data-soch="true" data-background-parallax-selector=".dmHomeSection1, .dmSectionParallex"> <div id="dmStyle_outerContainer" class="dmOuter"> <div id="dmStyle_innerContainer" class="dmInner"> <div class="dmLayoutWrapper standard-var dmStandardDesktop"> <div> <div id="iscrollBody"> <div id="site_content"> <div class="dmHeaderContainer fHeader d-header-wrapper"> <div id="hcontainer" class="u_hcontainer dmHeader p_hfcontainer" freeheader="true"> <div dm:templateorder="85" class="dmHeaderResp dmHeaderStack noSwitch" id="1709005236"> <div class="u_1945822334 dmRespRow" style="text-align: center;" id="1945822334"> <div class="dmRespColsWrapper" id="1531770931"> <div class="u_1437076231 dmRespCol small-12 medium-12 large-12" id="1437076231"> <span id="1187770996"></span> 
905 <div class="dmNewParagraph" data-element-type="paragraph" id="1045529370" data-styletopreserve="{" background-image="" :=""><div style="text-align: center;"><span style="color: rgb(255, 255, 255); font-size: 36px;"><br/></span></div><div style="text-align: center;"><span style="color: rgb(255, 255, 255); font-size: 36px;"><br/></span></div><div style="text-align: center;"><span style="color: rgb(255, 255, 255); font-size: 36px;">JULIAN LOSS</span></div></div></div> 
906</div> 
907</div> 
908 <div class="u_1542715283 dmRespRow" style="text-align: center;" id="1542715283"> <div class="dmRespColsWrapper" id="1968593878"> <div class="u_1014175553 dmRespCol small-12 large-4 medium-4" id="1014175553"> <div class="dmDividerWrapper clearfix u_1840571846" id="1840571846" data-element-type="dDividerId"><hr class="dmDivider" style="min-height: 2px; border:none; background:grey" id="1446988755"/></div> 
909</div> 
910 <div class="u_1619522755 dmRespCol small-12 large-4 medium-4" id="1619522755"> <span id="1621261575"></span> 
911 <div class="dmDividerWrapper clearfix u_1251158887" id="1251158887" layout="divider-style-1" data-element-type="dDividerId" data-widget-version="2"><hr class="dmDivider" style="min-height: 2px; border:none; background:grey" id="1290637177"/></div> 
912</div> 
913 <div class="u_1070665750 dmRespCol small-12 large-4 medium-4" id="1070665750"> <div class="dmDividerWrapper clearfix u_1179217980" id="1179217980" layout="divider-style-1" data-element-type="dDividerId" data-widget-version="2"><hr class="dmDivider" style="min-height: 2px; border:none; background:grey" id="1165199556"/></div> 
914</div> 
915</div> 
916</div> 
917 <div class="u_1571063569 dmRespRow dmHeaderContent freeHeaderRow1" id="1571063569"> <div class="dmRespColsWrapper clearfix" id="1618005341"> <div class="u_1780181932 dmRespCol small-12 medium-12 large-12" id="1780181932"> <span id="1520082955"></span> 
918 <nav class="u_1284501632 effect-text-color main-navigation unifiednav dmLinksMenu" role="navigation" layout-main="horizontal_nav_layout_2" layout-sub="submenu_horizontal_1" data-show-vertical-sub-items="HOVER" id="1284501632" dmle_extension="onelinksmenu" data-element-type="onelinksmenu" navigation_id="" data-nav-structure="HORIZONTAL" wr="false" icon="true" surround="false" navigation-id="unifiedNav"> <ul role="menubar" class="unifiednav__container unav-top  " data-auto="navigation-pages"> <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/" class="unifiednav__item unav-item unav-top-item  dmUDNavigationItem_00  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
919         HOME
920        " data-auto="page-text-style">HOME<span class="icon icon-angle-down"></span> 
921</span> 
922</a> 
923</li> 
924 <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/publications" class="unifiednav__item unav-item unav-top-item  dmUDNavigationItem_010101857252  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
925         PUBLICATIONS
926        " data-auto="page-text-style">PUBLICATIONS<span class="icon icon-angle-down"></span> 
927</span> 
928</a> 
929</li> 
930 <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/cv" class="unifiednav__item unav-item unav-top-item  dmNavItemSelected  dmUDNavigationItem_010101701269  " target="" data-target-page-alias="" aria-current="page" data-auto="selected-page"> <span class="nav-item-text " data-link-text="
931         BIO
932        " data-auto="page-text-style">BIO<span class="icon icon-angle-down"></span> 
933</span> 
934</a> 
935</li> 
936 <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0">
936 <a href="/students/advising" class="unifiednav__item unav-item unav-top-item  dmUDNavigationItem_010101111647  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
937         STUDENTS/ADVISING
938        " data-auto="page-text-style">STUDENTS/ADVISING<span class="icon icon-angle-down"></span> 
939</span> 
940</a> 
941</li> 
942 <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/personal" class="unifiednav__item unav-item unav-top-item  dmUDNavigationItem_010101771740  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
943         PERSONAL
944        " data-auto="page-text-style">PERSONAL<span class="icon icon-angle-down"></span> 
945</span> 
946</a> 
947</li> 
948</ul> 
949</nav> 
950</div> 
951</div> 
952</div> 
953</div> 
954</div> 
955</div> 
956 <div class="dmRespRow dmRespRowStable dmRespRowNoPadding dmPageTitleRow "> <div class="dmRespColsWrapper"> <div class="large-12 dmRespCol"> <div id="innerBar" class="innerBar lineInnerBar dmDisplay_None"> <div class="titleLine display_None"><hr/></div> 
957<!-- Page title is hidden in css for new responsive sites. It is left here only so we don't break old sites. Don't copy it to new layouts --> <div id="pageTitleText"> <div class="innerPageTitle">BIO</div> 
958</div> 
959 <div class="titleLine display_None"><hr/></div> 
960</div> 
961</div> 
962</div> 
963</div> 
964 <div dmwrapped="true" id="dmFirstContainer" class="dmBody u_dmStyle_template_cv"> <div id="allWrapper" class="allWrapper"> <div id="dm_content" class="dmContent" role="main"> <div dm:templateorder="1" class="dmDefaultRespTmpl" id="1363787472"> <div class="innerPageTmplBox dmDefaultPage  dmRespRowsWrapper" id="1712556502"> <div class="dmRespRow dmDefaultListContentRow" style="text-align:center" id="1394782144"> <div class="dmRespColsWrapper" id="1327240225"> <div class="large-12 medium-12 small-12 dmRespCol" id="1611031479"> <div class="u_1529686398 dmNewParagraph" data-element-type="paragraph" id="1529686398" background-image":""}"="" style="display: block  !important" data-version="5"><p class="text-align-left"><a href="https://cdn.website-editor.net/s/be5f1646e5624dbb9ad470eed3fd6f37/files/uploaded/CV.pdf?Expires=1792491239&Signature=GDyri1JzGy-auwCX2lxc7F5DH8tdjWVETQ-OLBQDmKozkBs7usxcgIeV~sB1~5Of1BikvNh3P8AnkQsIwF3SC-Qz2v91Gj8Od--WKWnOl3KXH1WdbHokyQJ1YdkZQazhDDLtHoC95eZQMxgrg7kkmz7VBtLFFQJOosddNrzcCm2~auRTMXdutdeRgFPpWsfJGi-ofbbh4tjemcMNEvDmXwFsKDTiTIT1Iy029jC~jJFgySuvVdMTdbZUEO45uitMQroR32wWdQ3vo5QF1fV6hjnhwEQNBO~LEdaXdJapOh~1c9xGJutrDexsBmNlhaT8Ou4ueTilD~uarpLwXhVUBA__&Key-Pair-Id=K2NXBXLF010TJW" target="_blank" runtime_url="https://cdn.website-editor.net/s/be5f1646e5624dbb9ad470eed3fd6f37/files/uploaded/CV.pdf" file="true" type="file" style="display: initial;">Full CV</a><span style="display: initial;"> <span style="display: initial;">&nbsp;(please contact me directly for an up-to-date version)</span></span></p><p class="text-align-left"><span style="display: initial;"><br/></span></p><p class="text-align-left"><strong style="display: initial; font-weight: bold;">Selected Grants and Awards:</strong></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">ACM SIGSAC Outstanding Early-Career Researcher Award (2025)</span></li><li class="text-align-left"><span style="display: initial;">ERC Starting Grant (2023)</span></li><li class="text-align-left"><span style="display: initial;">EUROCRYPT Best Paper Award (2021)</span></li></ul> 
965<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p><p class="text-align-left"><strong style="display: initial; font-weight: bold;"><br/></strong></p><p class="text-align-left"><strong style="display: initial; font-weight: bold;">Bio:</strong></p><p class="text-align-left"><strong style="display: initial; font-weight: bold;"><br/></strong></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">October 2025 - Present: Professor and Head of Chair for Distributed Cryptography, Faculty of Computer Science, Ruhr University Bochum, Germany</span></li></ul> 
966<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">March 2025-Present: Researcher, Common Prefix (Blockchain Company)</span></li></ul> 
967<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">September 2024-September 2025: Faculty (with Tenure), CISPA Helmholtz Center for Information Security, Germany</span></li></ul> 
968<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">October 2021-August 2024: Faculty (Tenure-Track), CISPA Helmholtz Center for Information Security, Germany</span></li></ul> 
969<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">June 2021 &ndash; August 2021: Postdoctoral Researcher, Carnegie Mellon University, USA; Host: Elaine Shi</span></li></ul> 
970<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">November 2019 &ndash; May 2021: Postdoctoral Researcher, University of Maryland, USA; Host: Jonathan Katz</span></li></ul> 
971<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">June 2018- September 2021: Researcher, Spacemesh (Blockchain Company)</span></li></ul> 
972<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">September 2016 &ndash; July 2019: Ph.D. in Mathematics, Ruhr University Bochum, Germany; Advisor: Eike Kiltz</span></li></ul> 
973<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">
973March 2015 &ndash; April 2016: MSc in Computer Science, ETH Z&uuml;rich, Switzerland</span></li></ul> 
974<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;"><br/></span></p><p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p> <ul class="defaultList bullet"><li class="text-align-left"><span style="display: initial;">September 2011 &ndash; February 2015: BSc in Computer Science, ETH Z&uuml;rich, Switzerland</span></li></ul> 
975<p class="text-align-left" style="line-height: 16px;"><span style="display: initial;">&nbsp;<br/></span></p><p class="text-align-left"><span style="display: initial;"><br/></span></p><p class="text-align-left"><strong style="display: initial; font-weight: bold;">Committee Service:</strong><span style="display: initial;"> <span style="display: initial;">&nbsp;TCC 2026, CRYPTO 2026, PKC 2026, ASIACRYPT 2025, CCS 2025, EUROCRYPT 2025, DISC 2024, CCS 2024, PKC 2024, CCS 2023, CRYPTO 2023, TCC 2022, CCS 2022, ITC 2022, CCS 2021, EUROCRYPT 2021</span></span></p></div></div> 
976</div> 
977</div> 
978</div> 
979</div> 
980</div> 
981</div> 
982</div> 
983 <div class="dmFooterContainer"> <div id="fcontainer" class="f_hcontainer dmFooter p_hfcontainer"> <div dm:templateorder="250" class="dmFooterResp generalFooter" id="1943048428"> <div class="dmRespRow u_1505905092" style="text-align: center;" id="1505905092"> <div class="dmRespColsWrapper" id="1635811674"> <div class="dmRespCol small-12 medium-12 large-12" id="1779751726"> <div data-inject="home-At5subscriptionText" class="u_1167365642 dmNewParagraph" id="1167365642" style="transition: opacity 1s ease-in-out;">ABONNIEREN SIE UNSEREN NEWSLETTER</div></div> 
984</div> 
985</div> 
986 <div class="dmRespRow u_1472522769" style="text-align: center;" id="1472522769"> <div class="dmRespColsWrapper" id="1528715676"> <div class="dmRespCol small-12 medium-12 large-12 empty-column" id="1477716553"></div> 
987</div> 
988</div> 
989 <div class="u_1820608773 dmRespRow dmReadySection" dm:templateid="Footer" id="1820608773"> <div class="dmRespColsWrapper footerSection" id="1833700962"> <div class="u_1075114159 dmRespCol small-12 large-4 medium-4" id="1075114159"> <h3 id="1055873437" class="u_1055873437"><span style="font-family:'Open Sans', 'Open Sans Fallback';"><b><span style="font-weight: 700;" class="size-20 lh-1"><font data-inject="home-At5footerContactTitle" style="color: rgb(255, 255, 255);">Kontakt</font></span></b></span></h3> <div class="u_1956747598 sectionContactBox" id="1956747598"><span class="size-14 lh-1"> <font style="color: rgb(255, 255, 255);"> <span data-inject="semantic-AddressLabel">Hier finden Sie uns:</span> 
990 <span data-inject="semantic-FullAddress">Prinz-Regent-Stra&szlig;e 5, 44799 Bochum, Germany</span> 
991<br/> <span data-inject="semantic-EmailLabel">E-Mail:</span> 
992 <span data-inject="semantic-EmailAddress">[email protected]</span> 
993<br/> <span data-inject="semantic-PhoneLabel">Rufen Sie uns an:</span> 
994 <span data-inject="semantic-PhoneNumber">+49 170 7075568</span></font> 
995</span></div> <span style="clear:both;display:block" id="1479065201"></span> 
996 <div class="u_1755501396 align-center text-align-center dmSocialHub gapSpacing" id="1755501396" dmle_extension="social_hub" data-element-type="social_hub" wr="true" networks="" icon="true" surround="true" adwords=""> <div class="socialHubWrapper"> <div class="socialHubInnerDiv "> <a href="https://facebook.com/" target="_blank" dm_dont_rewrite_url="true" aria-label="facebook" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Facebook&apos;)"> <span class="dmSocialFacebook dm-social-icons-facebook oneIcon socialHubIcon style5" aria-hidden="true" data-hover-effect=""></span> 
997</a> 
998 <a href="https://twitter.com/" target="_blank" dm_dont_rewrite_url="true" aria-label="twitter" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Twitter&apos;)"> <span class="dmSocialTwitter dm-social-icons-twitter oneIcon socialHubIcon style5" aria-hidden="true" data-hover-effect=""></span> 
999</a> 
1000 <a href="http://instagram.com/" target="_blank" dm_dont_rewrite_url="true" aria-label="instagram" onclick="dm_gaq_push_event &amp;&amp;
1000 dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Instagram&apos;)"> <span class="dmSocialInstagram dm-social-icons-instagram oneIcon socialHubIcon style5" aria-hidden="true" data-hover-effect=""></span> 
1001</a> 
1002 <a href="https://youtube.com/" target="_blank" dm_dont_rewrite_url="true" aria-label="youtube" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Youtube&apos;)"> <span class="dmSocialYoutube dm-social-icons-youtube oneIcon socialHubIcon style5" aria-hidden="true" data-hover-effect=""></span> 
1003</a> 
1004</div> 
1005</div> 
1006</div> 
1007</div> 
1008 <div class="u_1477142728 dmRespCol small-12 large-4 medium-4" id="1477142728"> <span id="1411842046"></span> 
1009 <h3 id="1189610661" class="u_1189610661"><span style="font-family:'Open Sans', 'Open Sans Fallback';"><b><span style="font-weight: 700;" class="size-20 lh-1"><font data-inject="home-At5footerFindUsTitle" style="color: rgb(255, 255, 255);">Anfahrt</font></span></b></span></h3> <div class="u_1039136282 inlineMap" data-type="inlineMap" data-lat="""" data-lng="""" data-address="Prinz-Regent-Straße 5, 44799 Bochum, Germany" data-height="145" data-msid="" data-mapurl="" data-lang="de" data-color-scheme="" data-zoom="13" data-layout="layout4" data-popup-display="" data-popup-show="false" data-popup-title="" data-popup-title-visible="false" data-popup-description="" data-popup-description-visible="false" id="1039136282" dmle_extension="mapextension" data-element-type="mapextension" modedesktop="map" addresstodisplay="Prinz-Regent-Straße 5, 44799 Bochum, Germany" modemobile="button" geocompleteaddress="Prinz-Regent-Straße 5, 44799 Bochum, Germany" layout="layout4" data-inject="semantic-MapAddress" modetablet="map" wr="false" icon="true" surround="true" description="Anfahrt" icon-name="icon-map-marker" street="" city="" country="US" country_full="United States" zip="" provider="mapbox" lon="""" lat="""" height="145" zoom="13" data-popup-display-desktop="" data-popup-display-mobile=""> <div class="mapContainer" style="height: 100%; width: 100%; overflow: hidden; z-index: 0;"></div> 
1010</div> 
1011</div> 
1012 <div class="dmRespCol small-12 medium-4 large-4" id="1163702631"> <span id="1634798767"></span> 
1013 <div class="u_1424311868 default dmHoursOfOperation" id="1424311868" dmle_extension="open_hours" data-element-type="open_hours" time_format="24" data-inject="home-At5businessHoursTitle" wr="true" displaytitle="true" forcedisplay="false" icon="true" surround="true" adwords=""> <h3 class="dmwidget-title ">&Ouml;ffnungszeiten</h3> 
1014 <dl class="open-hours-data"> <div class="open-hours-item"> <dt day="0">Mo - Fr</dt> 
1015 <dd> <time>9:00</time> 
1016- <time>17:00</time> 
1017</dd> 
1018</div> 
1019 <div class="open-hours-item"> <dt day="5">Sa - So</dt> 
1020 <dd>Geschlossen</dd> 
1021</div> 
1022</dl> 
1023</div> 
1024</div> 
1025</div> 
1026</div> 
1027</div> 
1028 <div id="1236746004" dmle_extension="powered_by" data-element-type="powered_by" icon="true" surround="false"></div> 
1029</div> 
1030</div> 
1031</div> 
1032</div> 
1033</div> 
1034</div> 
1035</div> 
1036</div> 
1037</div> 
1038</div> 
1039
1040    </div>
1041</div>
1042<!--  Add full CSS and Javascript before the close tag of the body if needed -->
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081<!-- ========= JS Section ========= -->
1082<script>
1083    var isWLR = true;
1084
1085    window.customWidgetsFunctions = {};
1086    window.customWidgetsStrings = {};
1087    window.collections = {};
1088    window.currentLanguage = "GERMAN"
1089    window.isSitePreview = false;
1090</script>
1090
1091
1092
1093
1094
1095<script type="text/javascript">
1096
1097    var d_version = "production_6792";
1098    var build = "2026-09-20T06_52_51";
1099    window['v' + 'ersion'] = d_version;
1100
1101    function buildEditorParent() {
1102        window.isMultiScreen = true;
1103        window.editorParent = {};
1104        window.previewParent = {};
1105        window.assetsCacheQueryParam = "?version=2026-09-20T06_52_51";
1106        try {
1107            var _p = window.parent;
1108            if (_p && _p.document && _p.$ && _p.$.dmfw) {
1109                window.editorParent = _p;
1110            } else if (_p.isSitePreview) {
1111                window.previewParent = _p;
1112            }
1113        } catch (e) {
1114
1115        }
1116    }
1117
1118    buildEditorParent();
1119</script>
1119
1120
1121
1122<!-- Load jQuery -->
1123
1124<script type="text/javascript" id='d-js-jquery'
1125        src="https://static-cdn.website-editor.net/libs/jquery/2.2.4/jquery.min.js"></script>
1125
1126
1127<!-- End Load jQuery -->
1128
1129
1130<!-- Injecting site-wide before scripts -->
1131
1132<!-- End Injecting site-wide to the head -->
1133
1134
1135
1136<script>
1137    var _jquery = window.$;
1138
1139    var jqueryAliases = ['$', 'jquery', 'jQuery'];
1140
1141    jqueryAliases.forEach((alias) => {
1142        Object.defineProperty(window, alias, {
1143            get() {
1144                return _jquery;
1145            },
1146            set() {
1147                console.warn("Trying to over-write the global jquery object!");
1148            }
1149        });
1150    });
1151    window.jQuery.migrateMute = true;
1152</script>
1152
1153
1154
1155
1156
1157<script>
1158    window.cookiesNotificationMarkupPreview = 'null';
1159</script>
1159
1160
1161<!-- HEAD RT JS Include -->
1162<script id='d-js-params'>
1163    window.INSITE = window.INSITE || {};
1164    window.INSITE.device = "desktop";
1165
1166    window.rtCommonProps = {};
1167    rtCommonProps["rt.ajax.ajaxScriptsFix"] =true;
1168    rtCommonProps["rt.pushnotifs.sslframe.encoded"] = 'aHR0cHM6Ly97c3ViZG9tYWlufS5wdXNoLW5vdGlmcy5jb20=';
1169    rtCommonProps["runtimecollector.url"] = 'https://rtc.website-editor.net';
1170    rtCommonProps["performance.tabletPreview.removeScroll"] = 'false';
1171    rtCommonProps["inlineEditGrid.snap"] =true;
1172    rtCommonProps["popup.insite.cookie.ttl"] = '0.5';
1173    rtCommonProps["rt.pushnotifs.force.button"] =true;
1174    rtCommonProps["common.mapbox.token"] = 'pk.eyJ1IjoiZGFubnliMTIzIiwiYSI6ImNqMGljZ256dzAwMDAycXBkdWxwbDgzeXYifQ.Ck5P-0NKPVKAZ6SH98gxxw';
1175    rtCommonProps["common.mapbox.js.override"] =false;
1176    rtCommonProps["common.here.appId"] = 'iYvDjIQ2quyEu0rg0hLo';
1177    rtCommonProps["common.here.appCode"] = '1hcIxLJcbybmtBYTD9Z1UA';
1178    rtCommonProps["isCoverage.test"] =false;
1179    rtCommonProps["ecommerce.ecwid.script"] = 'https://app.multiscreenstore.com/script.js';
1180    rtCommonProps["common.resources.dist.cdn"] =true;
1181    rtCommonProps["common.build.dist.folder"] = 'production/6792';
1182    rtCommonProps["common.resources.cdn.host"] = 'https://static-cdn.website-editor.net';
1183    rtCommonProps["common.resources.folder"] = 'https://static-cdn.website-editor.net/mnlt/production/6792';
1184    rtCommonProps["common.fonts.api.v2.url"] = 'https://cdn.website-editor.net/fonts/css2?family=';
1185    rtCommonProps["feature.flag.runtime.backgroundSlider.preload.slowly"] =true;
1186    rtCommonProps["feature.flag.runtime.newAnimation.enabled"] =true;
1187    rtCommonProps["feature.flag.runtime.newAnimation.jitAnimation.enabled"] =true;
1188    rtCommonProps["feature.flag.sites.google.analytics.gtag"] =true;
1189    rtCommonProps["feature.flag.runOnReadyNewTask"] =true;
1190    rtCommonProps["isAutomation.test"] =false;
1191    rtCommonProps["booking.cal.api.domain"] = 'api.cal.com';
1192
1193    
1194    rtCommonProps['common.mapsProvider'] = 'mapbox';
1195    
1196    rtCommonProps['common.mapsProvider.version'] = '0.52.0';
1197    rtCommonProps['common.geocodeProvider'] = 'mapbox';
1198    rtCommonProps['server.for.resources'] = '';
1199    rtCommonProps['feature.flag.lazy.widgets'] = true;
1200    rtCommonProps['feature.flag.single.wow'] = false;
1201    rtCommonProps['feature.flag.disallowPopupsInEditor'] = true;
1202    rtCommonProps['feature.flag.mark.anchors'] = true;
1203    rtCommonProps['captcha.public.key'] = '6LffcBsUAAAAAMU-MYacU-6QHY4iDtUEYv_Ppwlz';
1204    rtCommonProps['captcha.invisible.public.key'] = '6LeiWB8UAAAAAHYnVJM7_-7ap6bXCUNGiv7bBPME';
1205    rtCommonProps["images.sizes.small"] =160;
1206    rtCommonProps["images.sizes.mobile"] =640;
1207    rtCommonProps["images.sizes.tablet"] =1280;
1208    rtCommonProps["images.sizes.desktop"] =1920;
1209    rtCommonProps["modules.resources.cdn"] =true;
1210    rtCommonProps["import.images.storage.imageCDN"] = 'https://le-cdn.website-editor.net/';
1211    rtCommonProps["feature.flag.runtime.inp.threshold"] =150;
1212    rtCommonProps["feature.flag.performance.logs"] =false;
1213    rtCommonProps["site.widget.form.captcha.type"] = 'g_recaptcha';
1214    rtCommonProps["friendly.captcha.site.key"] = 'FCMGSQG9GVNMFS8K';
1215    rtCommonProps["cookiebot.mapbox.consent.category"] = 'marketing';
1216    rtCommonProps["termly.mapbox.consent.category"] = 'performance';
1217    // feature flags that's used out of runtime module (in  legacy files)
1218    rtCommonProps["platform.monolith.personalization.dateTimeCondition.popupMsgAction.moveToclient.enabled"] =true;
1219
1220    window.rtFlags = {};
1221    rtFlags["unsuspendEcwidStoreOnRuntime.enabled"] =false;
1222    rtFlags["scripts.widgetCount.enabled"] =true;
1223    rtFlags["fnb.animations.tracking.enabled"] =true;
1224    rtFlags["ecom.ecwidNewUrlStructure.enabled"] = false;
1225    rtFlags["ecom.ecwid.accountPage.emptyBaseUrl.enabled"] = true;
1226    rtFlags["ecom.ecwid.accountPage.repeatOrderRedirect.enabled"] = false;
1227    rtFlags["ecom.ecwid.pages.links.disable.listeners"] = true;
1228    rtFlags["ecom.ecwid.storefrontV3.enabled"] = false;
1229    rtFlags["ecom.monolith.legacy.js.api.disabled.for.new.sites"] = false;
1230    rtFlags["geocode.search.localize"] =false;
1231    rtFlags["feature.flag.runtime.newAnimation.asyncInit.setTimeout.enabled"] =false;
1232    rtFlags["twitter.heightLimit.enabled"] = true;
1233    rtFlags["runtime.lottieOverflow"] =false;
1234    rtFlags["runtime.monitoring.sentry.ignoreErrors"] = "";
1235    rtFlags["streamline.monolith.personalization.supportMultipleConditions.enabled"] =false;
1236    rtFlags["flex.animation.design.panel.layout"] =true;
1237    rtFlags["runtime.cwv.report.cls.enabled"] =false;
1238    rtFlags["runtime.cwv.report.lcp.enabled"] =false;
1239    rtFlags["runtime.lcp.preload.selfheal.enabled"] =true;
1240    rtFlags["runtime.lcp.preload.bootstrap.enabled"] =true;
1241    rtFlags["runtime.lcp.preload.monitor.enabled"] =false;
1242    rtFlags["runtime.customwidget.heightpin.enabled"] =true;
1243    rtFlags["contact.form.useActiveForm"] =true;
1244    rtFlags["contact.form.custom.errors.enabled"] =false;
1245    rtFlags["runtime.ssr.productStore.internal.observer"] =true;
1246    rtFlags["runtime.ssr.productCustomizations"] =true;
1247    rtFlags["runtime.ssr.runtime.filter-sort.newFilterSortWidgetWithOptions.enabled"] =true;
1248    rtFlags["runtime.ssr.ssrSlider.jumpThreshold.enabled"] =true;
1249    rtFlags["termly.map.consent.overlay.enabled"] =false;
1250    rtFlags["editor.widget.form.a11y"] =true;
1251</script>
vendor: 1 bytes, line 1251
1251
1252<script src="https://static-cdn.website-editor.net/mnlt/production/6792/_dm/s/rt/dist/scripts/d-js-one-runtime-unified-desktop.min.js"  id="d-js-core"></script>
1252
1253
1254<!-- End of HEAD RT JS Include -->
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269<script>
1270    
1271    $(window).bind("orientationchange", function (e) {
1272        $.layoutManager.initLayout();
1273        
1274    });
1275    $(document).resize(function () {
1276        
1277    });
1278</script>
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298<script type="text/javascript" id="d_track_sp">
1299    ;(function(p,l,o,w,i,n,g){if(!p[i]){p.GlobalSnowplowNamespace=p.GlobalSnowplowNamespace||[];
1300        p.GlobalSnowplowNamespace.push(i);p[i]=function(){(p[i].q=p[i].q||[]).push(arguments)
1301        };p[i].q=p[i].q||[];n=l.createElement(o);g=l.getElementsByTagName(o)[0];n.async=1;
1302        n.src=w;g.parentNode.insertBefore(n,g)}}(window,document,"script","//d1dxoqu0t5mb7j.cloudfront.net/sp-2.0.0-dm-0.1.min.js","snowplow"));
1303    window.dmsnowplow  = window.snowplow;
1304
1305    dmsnowplow('newTracker', 'cf', 'd1dxoqu0t5mb7j.cloudfront.net', { // Initialise a tracker
1306        appId: 'be5f1646e5624dbb9ad470eed3fd6f37'
1307    });
1308
1309    // snowplow queries element styles so we wait until CSS calculations are done.
1310    requestAnimationFrame(() => {
1311        dmsnowplow('trackPageView');
1312        _dm_insite.forEach((rule) => {
1313            // Specifically in popup only the client knows if it is shown or not so we don't always want to track its impression here
1314            // the tracking is in popup.js
1315            if (rule.actionName !== "popup") {
1316                dmsnowplow('trackStructEvent', 'insite', 'impression', rule.ruleType, rule.ruleId);
1317            }
1318            window?.waitForDeferred?.('dmAjax', () => {
1319                $.DM.events.trigger('event-ruleTriggered', {value: rule});
1320            });
1321        });
1322    });
1323</script>
1323
1324
1325
1326
1327<div style="display:none;" id="P6iryBW0Wu"></div>
1328
1329<!-- photoswipe markup -->
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339<!-- Root element of PhotoSwipe. Must have class pswp. -->
1340<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
1341
1342    <!-- Background of PhotoSwipe. 
1343         It's a separate element as animating opacity is faster than rgba(). -->
1344    <div class="pswp__bg"></div>
1345
1346    <!-- Slides wrapper with overflow:hidden. -->
1347    <div class="pswp__scroll-wrap">
1348
1349        <!-- Container that holds slides. 
1350            PhotoSwipe keeps only 3 of them in the DOM to save memory.
1351            Don't modify these 3 pswp__item elements, data is added later on. -->
1352        <div class="pswp__container">
1353            <div class="pswp__item"></div>
1354            <div class="pswp__item"></div>
1355            <div class="pswp__item"></div>
1356        </div>
1357
1358        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
1359        <div class="pswp__ui pswp__ui--hidden">
1360
1361            <div class="pswp__top-bar">
1362
1363                <!--  Controls are self-explanatory. Order can be changed. -->
1364
1365                <div class="pswp__counter"></div>
1366
1367                <button class="pswp__button pswp__button--close" title="Schließen (ESC)"></button>
1368
1369                <button class="pswp__button pswp__button--share" title="Teilen"></button>
1370
1371                <button class="pswp__button pswp__button--fs" title="Vollbild ein-/ausschalten"></button>
1372
1373                <button class="pswp__button pswp__button--zoom" title="Vergrößern/verkleinern"></button>
1374
1375                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
1376                <!-- element will get class pswp__preloader--active when preloader is running -->
1377                <div class="pswp__preloader">
1378                    <div class="pswp__preloader__icn">
1379                      <div class="pswp__preloader__cut">
1380                        <div class="pswp__preloader__donut"></div>
1381                      </div>
1382                    </div>
1383                </div>
1384            </div>
1385
1386            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
1387                <div class="pswp__share-tooltip"></div> 
1388            </div>
1389
1390            <button class="pswp__button pswp__button--arrow--left" title="Zurück (Pfeil nach links)">
1391            </button>
1392
1393            <button class="pswp__button pswp__button--arrow--right" title="Weiter (Pfeil nach rechts)">
1394            </button>
1395
1396            <div class="pswp__caption">
1397                <div class="pswp__caption__center"></div>
1398            </div>
1399
1400        </div>
1401
1402    </div>
1403
1404</div>
1405<div id="fb-root"
1406        data-locale="de_DE"></div>
1407<!-- Alias: be5f1646e5624dbb9ad470eed3fd6f37 -->
1408<div class="dmPopupMask" id="dmPopupMask"></div>
1409<div id="dmPopup" class="dmPopup">
1410	<div class="dmPopupCloseWrapper"> <div class="dmPopupClose dm-common-icons-close oneIcon" onclick="dmHidePopup(event);"></div> </div>
1411 	<div class="dmPopupTitle"> <span></span> Share by:</div> 
1412	<div class="data"></div>
1413</div>
1413<script id="d_track_personalization">
1414	window?.waitForDeferred?.('dmAjax', () => {
1415		// Collects client data and updates cookies used by smart sites
1416		window.expireDays = 365;
1417		window.visitLength = 30 * 60000;
1418		$.setCookie("dm_timezone_offset", (new Date()).getTimezoneOffset(), window.expireDays);
1419			setSmartSiteCookiesInternal("dm_this_page_view","dm_last_page_view","dm_total_visits","dm_last_visit");
1420	});
1421</script>
vendor: 1 bytes, line 1421
1421
1422<script type="text/javascript">
1423    
1424    Parameters.NavigationAreaParams.MoreButtonText = '......';
1425    
1426    Parameters.NavigationAreaParams.LessButtonText = '......';
1427    Parameters.HomeLinkText = 'Home';
1428    </script>
1428
1429<!--  End Script tags -->
1430<!--  Site Wide Html Markup -->
1431<!--  Site Wide Html Markup -->
1432<!--  Begin Product Custom HTML Markup -->
1433<script>
1434function call1and1Tracking() {
1435	var externalId = dmAPI.getSiteExternalId();
1436	var siteName = dmAPI.getSiteName();
1437	var src = 'https://integration.mywebsite-editor.com/dakota-snippet-service/snippet/integration/snippet.js?sitename='+siteName+'&external_uid='+externalId+'&mode=visit'
1438	var tracking = document.createElement('script');
1439     tracking.setAttribute('src',src);
1440   	document.head.appendChild(tracking);
1441}
1442call1and1Tracking();
1443</script>
1443<!--  End Product Custom HTML Markup -->
1444</body>
1445</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.