1<!DOCTYPE html><html lang="de" class="scroll-smooth"> <head>
1<script type="text/javascript" charset="UTF-8" src="//geo.cookie-script.com/s/f73041e1a036e76de666403a92d95d6e.js?region=eu"></script>
1<script type="text/partytown">
vendor: 368 bytes, lines 1-6
1 2 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 3 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 4 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 5 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 6 })(window,document,'script','dataLayer','
6GTM-52MKWW
vendor: 10 bytes, lines 6-7
6'); 7
7</script>
7<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Strategie & Insights | PHOENIXSEO</title><meta name="title" content="Strategie & Insights | PHOENIXSEO"><meta name="description" content="Nie mehr ohne Strategie. Nie mehr Geld verbrennen."><link rel="canonical" href="https://phoenixseo.de/strategie-insights"><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><link rel="alternate" type="application/rss+xml" title="PHOENIXSEO Magazin Feed" href="/rss.xml"><link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="shortcut icon" href="/favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="PHOENIXSEO"><link rel="manifest" href="/site.webmanifest"><meta name="theme-color" content="#12181C"><meta property="og:type" content="website"><meta property="og:url" content="https://phoenixseo.de/strategie-insights"><meta property="og:title" content="Strategie & Insights | PHOENIXSEO"><meta property="og:description" content="Nie mehr ohne Strategie. Nie mehr Geld verbrennen."><meta property="og:image" content="https://phoenixseo.de/images/og-default-phoenixseo.jpg"><meta property="og:locale" content="de_DE"><meta property="og:site_name" content="PHOENIXSEO"><meta property="og:image" content="https://phoenixseo.de/images/og-default-phoenixseo.jpg"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://phoenixseo.de/strategie-insights"><meta property="twitter:title" content="Strategie & Insights | PHOENIXSEO"><meta property="twitter:description" content="Nie mehr ohne Strategie. Nie mehr Geld verbrennen."><meta property="twitter:image" content="https://phoenixseo.de/images/og-default-phoenixseo.jpg">
7<script type="application/ld+json">[{"@context":"https://schema.org","@type":"Organization","@id":"https://phoenixseo.de/#organization","name":"PHOENIXSEO","url":"https://phoenixseo.de","logo":{"@type":"ImageObject","url":"https://phoenixseo.de/logo.png"},"contactPoint":{"@type":"ContactPoint","telephone":"+49-451-7020358","contactType":"customer service","email":"[email protected]","areaServed":"DE"},"sameAs":["https://www.linkedin.com/company/phoenixseo-de/","https://github.com/phoenixseo"]}]</script>
7<meta name="generator" content="Astro v6.1.4"><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate">
7<script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.kB4EFqjn.js"></script>
7<script> 8 // Verhindert das FOUC (Flash of unstyled content) 9 if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { 10 document.documentElement.classList.add('dark'); 11 } else { 12 document.documentElement.classList.remove('dark'); 13 } 14 </script>
14<link rel="stylesheet" href="/_astro/BaseLayout.B8twOpxe.css">
14<script type="module" src="/_astro/page.CqSH2Wis.js"></script>
vendor: 1 bytes, line 14
14
15<script>!(function(w,p,f,c){if(!window.crossOriginIsolated && !navigator.serviceWorker) return;c=w[p]=Object.assign(w[p]||{},{"lib":"/~partytown/","loadScriptsOnMainThread":[["string","js.hs-analytics.net"],["string","js.hs-scripts.com"],["string","bat.bing.com"],["string","snap.licdn.com"]],"debug":false});c[f]=(c[f]||[]).concat(["dataLayer.push"])})(window,'partytown','forward');/* Partytown 0.13.2 - MIT QwikDev */ 16const t={preserveBehavior:!1},e=e=>{if("string"==typeof e)return[e,t];const[n,r=t]=e;return[n,{...t,...r}]},n=Object.freeze((t=>{const e=new Set;let n=[];do{Object.getOwnPropertyNames(n).forEach((t=>{"function"==typeof n[t]&&e.add(t)}))}while((n=Object.getPrototypeOf(n))!==Object.prototype);return Array.from(e)})());!function(t,r,o,i,a,s,c,l,d,p,u=t,f){function h(){f||(f=1,"/"==(c=(s.lib||"/~partytown/")+(s.debug?"debug/":""))[0]&&(d=r.querySelectorAll('script[type="text/partytown"]'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(l=setTimeout(v,(null==s?void 0:s.fallbackTimeout)||1e4),r.addEventListener("pt0",w),a?y(1):o.serviceWorker?o.serviceWorker.register(c+(s.swPath||"partytown-sw.js"),{scope:c}).then((function(t){t.active?y():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&y()}))}),console.error):v())))}function y(e){p=r.createElement(e?"script":"iframe"),t._pttab=Date.now(),e||(p.style.display="block",p.style.width="0",p.style.height="0",p.style.border="0",p.style.visibility="hidden",p.setAttribute("aria-hidden",!0)),p.src=c+"partytown-"+(e?"atomics.js?v=0.13.2":"sandbox-sw.html?"+t._pttab),r.querySelector(s.sandboxParent||"body").appendChild(p)}function v(n,o){for(w(),i==t&&(s.forward||[]).map((function(n){const[r]=e(n);delete t[r.split(".")[0]]})),n=0;n<d.length;n++)(o=r.createElement("script")).innerHTML=d[n].innerHTML,o.nonce=s.nonce,r.head.appendChild(o);p&&p.parentNode.removeChild(p)}function w(){clearTimeout(l)}s=t.partytown||{},i==t&&(s.forward||[]).map((function(r){const[o,{preserveBehavior:i}]=e(r);u=t,o.split(".").map((function(e,r,o){var a;u=u[o[r]]=r+1<o.length?u[o[r]]||(a=o[r+1],n.includes(a)?[]:{}):(()=>{let e=null;if(i){const{methodOrProperty:n,thisObject:r}=((t,e)=>{let n=t;for(let t=0;t<e.length-1;t+=1)n=n[e[t]];return{thisObject:n,methodOrProperty:e.length>0?n[e[e.length-1]]:void 0}})(t,o);"function"==typeof n&&(e=(...t)=>n.apply(r,...t))}return function(){let n;return e&&(n=e(arguments)),(t._ptf=t._ptf||[]).push(o,arguments),n}})()}))})),"complete"==r.readyState?h():(t.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h))}(window,document,navigator,top,window.crossOriginIsolated);;(e=>{e.addEventListener("astro:before-swap",e=>{let r=document.body.querySelector("iframe[src*='/~partytown/']");if(r)e.newDocument.body.append(r)})})(document);</script>
16</head> <body class="relative min-h-screen bg-white-paper text-charcoal font-sans antialiased transition-colors duration-500 dark:bg-charcoal dark:text-gray-soft"> <a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:z-[99999] focus:p-4 focus:bg-amber-burnt focus:text-white-paper focus:font-bold focus:rounded-br-xl transition-all"> 17Zum Hauptinhalt springen 18</a>
vendor: 70 bytes, line 18
18 <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=
18GTM-52MKWW
vendor: 84 bytes, line 18
18" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript>
18<div class="fixed top-0 left-0 w-full h-1.5 z-50 pointer-events-none bg-transparent"> <div id="scroll-progress-bar" class="h-full bg-gradient-to-r from-teal-deep to-amber-burnt w-0"></div> </div>
18<script> 19 const setupScrollProgress = () => { 20 const progressBar = document.getElementById('scroll-progress-bar'); 21 if (!progressBar) return; 22 23 // Dieses Inline-Script laeuft bei jedem Seitenwechsel erneut aus. Der alte 24 // scroll-Listener wuerde sonst auf window liegen bleiben und den bereits 25 // ausgetauschten Balken im Speicher halten - einer mehr pro Navigation. 26 if (window.__scrollProgressHandler) { 27 window.removeEventListener('scroll', window.__scrollProgressHandler); 28 } 29 30 const updateProgress = () => { 31 // Maximale Scroll-Distanz berechnen 32 const scrollTotal = document.documentElement.scrollHeight - window.innerHeight; 33 34 // Wenn die Seite nicht scrollbar ist, Balken verstecken 35 if (scrollTotal <= 0) { 36 progressBar.style.width = '0%'; 37 return; 38 } 39 40 // Aktuelle Position berechnen 41 const scrollCurrent = window.scrollY; 42 const scrollPercent = (scrollCurrent / scrollTotal) * 100; 43 44 // Breite direkt auf das Element anwenden 45 progressBar.style.width = `${scrollPercent}%`; 46 }; 47 48 // Event-Listener anhängen (passive: true für optimale Performance) 49 window.__scrollProgressHandler = updateProgress; 50 window.addEventListener('scroll', updateProgress, { passive: true }); 51 52 // Einmaliger Aufruf beim Laden (falls man beim Neuladen schon in der Mitte ist) 53 updateProgress(); 54 }; 55 56 setupScrollProgress(); 57 // Re-Init für ViewTransitions (falls Sie in Astro dazwischen navigieren) 58 document.addEventListener('astro:page-load', setupScrollProgress); 59</script>
59 <aside class="w-full bg-charcoal text-white-paper/80 py-2 px-4 text-fluid-3xs font-sans tracking-widest uppercase border-b border-white-paper/10 relative z-50" data-astro-transition-persist="top-bar"> <div class="max-w-6xl mx-auto flex justify-end items-center gap-6"> <nav aria-label="Meta-Navigation" class="flex items-center gap-6"> <a href="https://download.phoenixseo.de/" class="hover:text-amber-burnt transition-colors duration-300">Downloads</a> <a href="https://static.phoenixseo.de/" class="hover:text-amber-burnt transition-colors duration-300">Apps</a> <a href="https://wiki.phoenixseo.de/" class="hover:text-amber-burnt transition-colors duration-300">Wiki</a> <a href="https://hive.phoenixseo.de/" class="hover:text-amber-burnt transition-colors duration-300">Hive</a> </nav> <div class="w-px h-3 bg-white-paper/20"></div> <button type="button" class="theme-toggle-btn flex items-center justify-center hover:text-amber-burnt transition-transform hover:scale-110 duration-300" aria-label="Dark/Light Mode umschalten"> <svg class="theme-toggle-light-icon hidden w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path> </svg> <svg class="theme-toggle-dark-icon hidden w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path> </svg> </button> </div> </aside> <header class="w-full sticky top-0 z-50 bg-white-paper/90 dark:bg-charcoal/90 backdrop-blur-md border-b border-charcoal/5 dark:border-white-paper/5 transition-colors duration-500" id="liquid-header" data-astro-transition-persist="site-header" data-astro-cid-psjfeutw> <div class="max-w-6xl mx-auto px-4 py-4 md:py-6 flex justify-between items-center" data-astro-cid-psjfeutw> <div class="flex items-center gap-6" data-astro-cid-psjfeutw> <a href="/" class="flex-shrink-0 transition-transform hover:scale-105" aria-label="Zur Startseite" data-astro-cid-psjfeutw> <img src="/_astro/phoenixseo-typo.BkLBupce_1Ca4oM.svg" alt="PHOENIXSEO Logo" loading="eager" data-astro-cid-psjfeutw="true" decoding="async" width="267" height="54" class="h-8 md:h-10 w-auto transition-all duration-500"> </a> <div class="hidden md:flex items-center gap-4" data-astro-cid-psjfeutw> <div class="w-px h-8 bg-charcoal/10 dark:bg-white-paper/10" data-astro-cid-psjfeutw></div> <span class="text-[10px] md:text-xs text-charcoal/60 dark:text-gray-soft/60 font-medium tracking-wide" data-astro-cid-psjfeutw> 60Digitales Marketing muss <br data-astro-cid-psjfeutw> nicht kompliziert sein. 61</span> </div> </div> <div class="flex items-center gap-2 md:gap-4" data-astro-cid-psjfeutw> <button type="button" class="theme-toggle-btn p-2 text-charcoal/60 dark:text-gray-soft/60 hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors rounded-full" aria-label="Dark/Light Mode umschalten" data-astro-cid-psjfeutw> <svg class="theme-toggle-light-icon hidden w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" data-astro-cid-psjfeutw></path> </svg> <svg class="theme-toggle-dark-icon hidden w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" data-astro-cid-psjfeutw></path> </svg> </button> <div class="hidden lg:flex border-l border-charcoal/10 dark:border-white-paper/10 pl-4" data-astro-cid-psjfeutw> <button id="search-trigger" aria-label="Suche öffnen" class="p-2 text-charcoal/60 dar
61k:text-gray-soft/60 hover:text-teal-deep dark:hover:text-teal-light transition-colors group" data-astro-cid-psjfeutw> <svg class="w-5 h-5 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" data-astro-cid-psjfeutw></path> </svg> </button> </div> <a href="/kontakt" class="hidden md:inline-flex bg-amber-burnt hover:bg-amber-burnt/90 text-white-paper px-6 py-2.5 rounded-full font-bold uppercase tracking-widest text-[10px] transition-transform hover:-translate-y-0.5 shadow-md ml-2" data-astro-cid-psjfeutw> 62Kontakt 63</a> <button id="mobile-menu-toggle" class="lg:hidden p-2 text-charcoal dark:text-white-paper ml-2" aria-label="Menü öffnen/schlieÃen" data-astro-cid-psjfeutw> <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" data-astro-cid-psjfeutw></path> </svg> </button> </div> </div> <div id="mobile-menu-container" class="hidden lg:block border-t border-charcoal/5 dark:border-white-paper/5 bg-white-paper/95 dark:bg-charcoal/95 backdrop-blur-md absolute lg:relative w-full left-0 top-full lg:top-auto shadow-xl lg:shadow-none transition-colors duration-500" data-astro-cid-psjfeutw> <div class="max-w-6xl mx-auto px-4" data-astro-cid-psjfeutw> <div class="flex flex-col lg:flex-row justify-between items-start lg:items-center py-4 lg:py-0 h-auto lg:h-14" data-astro-cid-psjfeutw> <nav aria-label="Hauptnavigation" class="w-full lg:w-auto" data-astro-cid-psjfeutw> <ul class="flex flex-col lg:flex-row items-start lg:items-center gap-2 lg:gap-8 w-full" data-astro-cid-psjfeutw> <li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Startseite </a> </li><li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/liquid-marketing" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Liquid-Marketing <svg class="w-4 h-4 ml-1 opacity-50 group-hover:opacity-100 transition-transform group-hover:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" data-astro-cid-psjfeutw></path> </svg> </a> <ul class="lg:absolute lg:left-0 lg:top-[90%] lg:w-64 bg-gray-soft/95 dark:bg-charcoal/95 lg:bg-white-paper/95 lg:backdrop-blur-xl lg:border lg:border-charcoal/10 dark:lg:border-white-paper/10 lg:shadow-2xl lg:rounded-b-xl lg:opacity-0 lg:invisible group-hover:opacity-100 group-hover:visible transition-all duration-300 transform lg:translate-y-2 group-hover:translate-y-0 flex flex-col pl-4 lg:pl-0" data-astro-cid-psjfeutw> <li data-astro-cid-psjfeutw> <a href="/strategie-insights" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Philosophie </a> </li><li data-astro-cid-psjfeutw> <a href="/kosten" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Kosten & Preise </a> </li> </ul> </li><li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/case" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Erfolge </a> </li><li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/network" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Netzwerk </a> </li><li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/projekt" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Projekte </a> </li><li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/service" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Expertise <svg class="w-4 h-4 ml-1 opacity-50 group-hover:opacity-100 transition-transform group-hover:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" data-astro-cid-psjfeutw></path> </svg> </a> <ul class="lg:absolute lg:left-0 lg:top-[90%] lg:w-64 bg-gray-soft/95 dark:bg-charcoal/95 lg:bg-white-paper/95 lg:backdrop-blur-xl lg:border lg:border-charcoal/10 dar
63k:lg:border-white-paper/10 lg:shadow-2xl lg:rounded-b-xl lg:opacity-0 lg:invisible group-hover:opacity-100 group-hover:visible transition-all duration-300 transform lg:translate-y-2 group-hover:translate-y-0 flex flex-col pl-4 lg:pl-0" data-astro-cid-psjfeutw> <li data-astro-cid-psjfeutw> <a href="/service/liquid-strategie" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Liquid Strategie </a> </li><li data-astro-cid-psjfeutw> <a href="/service/seo" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Organische Sichtbarkeit (SEO) </a> </li><li data-astro-cid-psjfeutw> <a href="/service/performance-marketing" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Performance & Reichweite (SEA) </a> </li><li data-astro-cid-psjfeutw> <a href="/service/content" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Content & Dialog </a> </li><li data-astro-cid-psjfeutw> <a href="/service/web-architektur" class="block px-4 py-3 text-xs font-medium text-charcoal/80 dark:text-white-paper/80 hover:text-teal-deep dark:hover:text-teal-light hover:bg-charcoal/5 dark:hover:bg-white-paper/5 transition-colors border-l-2 border-transparent hover:border-teal-deep dark:hover:border-teal-light" data-astro-cid-psjfeutw> Web-Architektur </a> </li> </ul> </li><li class="relative group w-full lg:w-auto" data-astro-cid-psjfeutw> <a href="/magazin" class="flex items-center justify-between lg:justify-start w-full lg:w-auto py-2 lg:py-4 text-xs font-bold text-charcoal dark:text-white-paper hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors uppercase tracking-widest" data-astro-cid-psjfeutw> Magazin </a> </li> </ul> </nav> </div> </div> </div> <dialog id="search-modal" class="w-full max-w-2xl bg-white-paper dark:bg-charcoal p-0 rounded-3xl shadow-2xl backdrop:bg-charcoal/80 backdrop:backdrop-blur-sm border border-charcoal/10 dark:border-white-paper/10 open:animate-fade-in transition-colors duration-500" data-astro-cid-psjfeutw> <div class="p-6 md:p-8" data-astro-cid-psjfeutw> <div class="flex justify-between items-center mb-6" data-astro-cid-psjfeutw> <p class="font-serif text-2xl text-teal-deep dark:text-white-paper font-bold" data-astro-cid-psjfeutw>Wissen durchsuchen</p> <button id="close-search" class="text-charcoal/40 dark:text-white-paper/40 hover:text-amber-burnt dark:hover:text-amber-burnt transition-colors p-2 rounded-full hover:bg-gray-soft dark:hover:bg-white-paper/5" aria-label="SchlieÃen" data-astro-cid-psjfeutw> <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-psjfeutw><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-psjfeutw></path></svg> </button> </div> <div class="relative" data-astro-cid-psjfeutw> <input type="search" id="search-input" placeholder="Nach Analysen, Projekten oder Expertise suchen..." class="w-full bg-gray-soft/50 dark:bg-white-paper/5 border border-charcoal/10 dark:border-white-paper/10 rounded-2xl px-6 py-4 text-lg focus:outline-none focus:border-teal-deep dark:focus:border-teal-light focus:ring-1 focus:ring-teal-deep transition-all text-charcoal dark:text-white-paper placeholder-charcoal/30 dark:placeholder-white-paper/30" autocomplete="off" data-astro-cid-psjfeutw> </div> <div id="search-results" class="mt-6 max-h-[50vh] overflow-y-auto flex flex-col gap-2 custom-scrollbar" data-astro-cid-psjfeutw> <div class="text-charcoal/40 dark:text-white-paper/40 text-sm text-center py-12 font-serif italic" data-astro-cid-psjfeutw>Gib einen Suchbegriff ein...</div> </div> </div> </dialog> </header>
63<script> 64 const setupHeaderLogic = () => { 65 // --- 2. MOBILE MENU --- 66 const toggleBtn = document.getElementById('mobile-menu-toggle'); 67 const menuContainer = document.getElementById('mobile-menu-container'); 68 if (toggleBtn && menuContainer) { 69 toggleBtn.onclick = () => menuContainer.classList.toggle('hidden'); 70 } 71 72 // --- 3. SEARCH LOGIC --- 73 const searchBtn = document.getElementById('search-trigger'); 74 const searchModal = document.getElementById('search-modal'); 75 const closeBtn = document.getElementById('close-search'); 76 const searchInput = document.getElementById('search-input'); 77 const searchResults = document.getElementById('search-results'); 78 let searchData = null; 79 80 const openSearch = async () => { 81 searchModal.showModal(); 82 searchInput.focus(); 83 if (!searchData) { 84 try { 85 const res = await fetch('/api/search.json'); 86 searchData = await res.json(); 87 } catch (e) { console.error(e); } 88 } 89 }; 90 91 if (searchBtn) searchBtn.onclick = openSearch; 92 if (closeBtn) closeBtn.onclick = () => searchModal.close(); 93 94 // Marker wie bei CalendarModal: der Header wird vom ClientRouter persistiert, 95 // das Eingabefeld ueberlebt den Seitenwechsel -> Handler nur einmal anhaengen. 96 if (searchInput && !searchInput.hasAttribute('data-search-init')) { 97 searchInput.setAttribute('data-search-init', 'true'); 98 searchInput.addEventListener('input', (e) => { 99 const query = e.target.value.toLowerCase().trim(); 100 if (!query || query.length < 2) { 101 searchResults.innerHTML = '<div class="text-charcoal/40 dark:text-white-paper/40 text-sm text-center py-12 font-serif italic">Gib einen Suchbegriff ein...</div>'; 102 return; 103 } 104 if (searchData) { 105 const filtered = searchData.filter(item => item.title.toLowerCase().includes(query) || item.description.toLowerCase().includes(query)); 106 if (filtered.length === 0) { 107 searchResults.innerHTML = '<div class="text-charcoal/40 dark:text-white-paper/40 text-sm text-center py-12">Keine Ergebnisse gefunden.</div>'; 108 return; 109 } 110 searchResults.innerHTML = filtered.map(item => ` 111 <a href="${item.url}" class="block p-4 rounded-xl hover:bg-gray-soft/50 dark:hover:bg-white-paper/5 border border-transparent hover:border-charcoal/5 dark:hover:border-white-paper/10 transition-all group"> 112 <h4 class="font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors">${item.title}</h4> 113 <p class="text-xs text-charcoal/60 dark:text-gray-soft/70 mt-1 line-clamp-1">${item.description}</p> 114 </a> 115 `).join(''); 116 } 117 }); 118 } 119 }; 120 121 setupHeaderLogic(); 122 123 // Dieses Inline-Script laeuft bei jeder ClientRouter-Navigation erneut aus. 124 // Ohne die Sperre registriert jeder Wechsel einen weiteren page-load-Listener 125 // und die Einrichtung laeuft mehrfach pro Seitenaufbau. 126 if (!window.__phoenixHeaderReady) { 127 window.__phoenixHeaderReady = true; 128 document.addEventListener('astro:page-load', setupHeaderLogic); 129 } 130</script>
130
130<script> 131 (() => { 132 // Inline-Scripts werden vom ClientRouter bei jeder Navigation erneut 133 // ausgefuehrt -> Listener nur einmal registrieren. 134 if (window.__filterScrollReady) return; 135 window.__filterScrollReady = true; 136 137 let gemerkt = null; 138 139 const istListe = () => !!document.getElementById('filter-container'); 140 141 document.addEventListener('astro:before-preparation', (e) => { 142 gemerkt = null; 143 // Zurueck/Vorwaerts: der Router kennt die alte Position und stellt sie her 144 if (e.navigationType === 'traverse') return; 145 // Kein Wechsel (z.B. Sprungmarke auf derselben Seite) 146 if (!e.from || !e.to || e.from.pathname === e.to.pathname) return; 147 // Nur, wenn wir gerade auf einer Listen-Seite stehen 148 if (!istListe()) return; 149 gemerkt = window.scrollY; 150 }); 151 152 document.addEventListener('astro:after-swap', () => { 153 if (gemerkt === null) return; 154 const ziel = gemerkt; 155 gemerkt = null; 156 // Zielseite muss ebenfalls eine Liste sein (sonst z.B. Profilseite) 157 if (!istListe()) return; 158 159 // Das Layout traegt scroll-smooth (siehe BaseLayout <html>) - fuer den 160 // stillen Wiederaufbau muss das kurz aus sein. Synchron im selben Task 161 // wie der Router, deshalb wird die 0-Position nie gezeichnet. 162 const htmlEl = document.documentElement; 163 htmlEl.style.scrollBehavior = 'auto'; 164 window.scrollTo({ top: ziel, left: 0, behavior: 'instant' }); 165 htmlEl.style.removeProperty('scroll-behavior'); 166 }); 167 })(); 168</script>
168 <main id="main-content" class="relative z-10 flex flex-col items-center w-full"> <div class="relative w-full overflow-hidden bg-white-paper"> <div class="absolute inset-0 z-0 overflow-hidden pointer-events-none liquid-wrapper"> <canvas class="liquid-canvas block w-full h-full opacity-40"></canvas> </div>
168<script> 169 function initLiquidAnimation() { 170 // Wir suchen alle Canvas-Elemente (falls die Komponente mehrfach auf einer Seite genutzt wird) 171 const canvases = document.querySelectorAll('.liquid-canvas'); 172 173 canvases.forEach(canvas => { 174 // Schutz-Check: Verhindert, dass die Animation bei ViewTransitions doppelt gestartet wird 175 if (canvas.dataset.initialized === 'true') return; 176 canvas.dataset.initialized = 'true'; 177 178 const ctx = canvas.getContext('2d'); 179 let width, height; 180 let particles = []; 181 182 // Konfiguration exakt wie in Ihrem Original 183 const config = { 184 particleCount: 20, 185 colors: [ 186 'rgba(13, 148, 136, 0.4)', // Teal Deep 187 'rgba(217, 119, 6, 0.3)', // Amber Burnt 188 'rgba(20, 184, 166, 0.3)' // Teal Light 189 ], 190 speed: 0.4, 191 minSize: 60, 192 maxSize: 180 193 }; 194 195 function resize() { 196 const parent = canvas.parentElement; 197 if (parent) { 198 width = canvas.width = parent.clientWidth; 199 height = canvas.height = parent.clientHeight; 200 } else { 201 width = canvas.width = window.innerWidth; 202 height = canvas.height = window.innerHeight; 203 } 204 } 205 206 class Particle { 207 constructor() { 208 this.reset(); 209 this.x = Math.random() * width; 210 this.y = Math.random() * height; 211 } 212 213 reset() { 214 this.x = Math.random() * width; 215 this.y = Math.random() * height; 216 this.vx = (Math.random() - 0.5) * config.speed; 217 this.vy = (Math.random() - 0.5) * config.speed; 218 this.size = Math.random() * (config.maxSize - config.minSize) + config.minSize; 219 this.color = config.colors[Math.floor(Math.random() * config.colors.length)]; 220 } 221 222 update() { 223 this.x += this.vx; 224 this.y += this.vy; 225 226 if (this.x < -this.size) this.x = width + this.size; 227 if (this.x > width + this.size) this.x = -this.size; 228 if (this.y < -this.size) this.y = height + this.size; 229 if (this.y > height + this.size) this.y = -this.size; 230 } 231 232 draw() { 233 ctx.beginPath(); 234 ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2); 235 ctx.fillStyle = this.color; 236 ctx.fill(); 237 } 238 } 239 240 function init() { 241 const start = () => { 242 resize(); 243 particles = []; 244 for (let i = 0; i < config.particleCount; i++) { 245 particles.push(new Particle()); 246 } 247 animate(); 248 }; 249 250 // Frueher lief das erst nach festen 100 ms. Bei jedem ClientRouter- 251 // Wechsel wird das Canvas neu aufgebaut und war so 100 ms leer - das 252 // wirkte wie ein Neuladen. Jetzt im naechsten Frame zeichnen; nur wenn 253 // das Eltern-Element noch keine Groesse hat, wird gewartet. 254 requestAnimationFrame(() => { 255 const parent = canvas.parentElement; 256 if (parent && parent.clientHeight > 0) { 257 start(); 258 } else { 259 setTimeout(start, 100); 260 } 261 }); 262 } 263 264 function animate() { 265 // Performance-Trick: Wenn der Nutzer die Seite wechselt und das Canvas 266 // aus dem DOM gelöscht wird, beenden wir die Endlos-Schleife 267 if (!document.body.contains(canvas)) return; 268 269 ctx.clearRect(0, 0, width, height);
270 particles.forEach(p => { 271 p.update(); 272 p.draw(); 273 }); 274 requestAnimationFrame(animate); 275 } 276 277 let resizeTimeout; 278 window.addEventListener('resize', function() { 279 clearTimeout(resizeTimeout); 280 resizeTimeout = setTimeout(resize, 100); 281 }); 282 283 init(); 284 }); 285 } 286 287 // Astro ViewTransitions tauglich machen 288 document.addEventListener('DOMContentLoaded', initLiquidAnimation); 289 document.addEventListener('astro:page-load', initLiquidAnimation); 290</script>
290 <section class="relative pt-32 pb-16 px-4 w-full max-w-6xl mx-auto z-10 text-center"> <span class="text-teal-light font-bold text-fluid-xs uppercase tracking-[0.2em] mb-4 block"> Das neue Online-Marketing </span> <h1 class="text-5xl md:text-7xl lg:text-8xl xl:text-[6rem] font-serif font-bold text-teal-deep leading-none mb-6 tracking-tighter drop-shadow-sm"> Strategie & Insights </h1> <p class="text-fluid-base text-charcoal/80 max-w-2xl leading-relaxed mx-auto"> Nie mehr ohne Strategie. Nie mehr Geld verbrennen. </p> <div class="mt-8 flex justify-center"> </div> </section> </div><main class="w-full relative z-20 bg-white-paper dark:bg-charcoal transition-colors duration-500"><div class="max-w-3xl mx-auto px-4 py-16 md:py-24"><article class="prose prose-lg prose-headings:font-serif prose-teal dark:prose-invert max-w-none text-charcoal/80 dark:text-gray-soft/90"><h2 id="gibst-du-tausende-für-marketing-aus-und-fragst-dich-wo-die-ergebnisse-bleiben">Gibst du Tausende für Marketing aus und fragst dich, wo die Ergebnisse bleiben?</h2> 291<p>Du bist nicht allein. Die meisten Marketing-Ansätze sind darauf ausgelegt, Budgets zu verbrauchen, nicht, um planbares Wachstum zu erzeugen. Es fühlt sich an wie ein Glücksspiel â mit deinem Geld.</p> 292<p><strong>Es gibt einen besseren Weg. Einen Weg, der auf strategischer Klarheit statt auf blindem Aktivismus basiert. Hier findest du die ehrlichen Analysen und praxiserprobten Lösungsansätze, die dir bisher gefehlt haben.</strong></p> 293<h3 id="das-problem-ist-nicht-deine-firma-es-ist-der-ansatz">Das Problem ist nicht deine Firma. Es ist der Ansatz.</h3> 294<p>Der Grund für diese Frustration ist fast immer derselbe: Es wird an Taktiken gearbeitet, ohne dass eine übergeordnete, auf deine Geschäftsziele ausgerichtete Strategie existiert. Du versuchst, ein Haus zu bauen, indem du wahllos Ziegel kaufst, ohne vorher den Bauplan zu zeichnen.</p> 295<p>Der Wandel beginnt, wenn du aufhörst, Marketing als eine Liste von Aktivitäten zu sehen, und anfängst, es als ein geschlossenes, <strong>strategisches System</strong> zu begreifen â als ein Ãkosystem für dein Wachstum.</p> 296<h3 id="strategische-einblicke--echte-ergebnisse">Strategische Einblicke & Echte Ergebnisse</h3> 297<p>Der erste Schritt zu einem besseren Marketing ist nicht, mehr Geld auszugeben, sondern besser zu denken. Die folgenden Ressourcen sind dafür konzipiert, dir genau dabei zu helfen.</p> 298<div class="relative w-[calc(100vw-2rem)] max-w-6xl left-1/2 -translate-x-1/2 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 my-16 not-prose"> <a href="/magazin/vergessliche-ki" class="group flex flex-col bg-gray-soft/20 dark:bg-charcoal border border-charcoal/5 dark:border-white-paper/10 rounded-2xl p-8 shadow-sm hover:shadow-xl hover:bg-white-paper dark:hover:bg-charcoal/80 transition-all duration-300 transform hover:-translate-y-1"> <div class="flex-1 flex flex-col"> <div class="text-xs font-bold text-amber-burnt uppercase tracking-wider mb-4"> 11. Mai 2026 </div> <h4 class="text-2xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 group-hover:text-teal-light transition-colors leading-tight"> Vergessliche KI </h4> <p class="text-charcoal/70 dark:text-gray-soft/80 text-sm mb-8 line-clamp-4 leading-relaxed flex-1"> Warum verlieren KI-Agenten in langen Chats ihre Identität? Dieser Beitrag dekonstruiert das âContext Degradation Syndromeâ (CDS) und erklärt, warum selbst moderne Modelle wie GPT-5.5 und Gemini 3.1 Pro Informationen in der Mitte langer Kontexte systematisch ignorieren. Wir analysieren die geschäftlichen Risiken von âAI Brand Driftâ â ein Faktor, der bereits 2025 für 65 % der Enterprise-KI-Fehler verantwortlich war â und liefern ein praxisnahes Framework aus Context Engineering, modularen Prompts und Runtime Reinforcement, mit dem du die Zuverlässigkeit deiner KI-Systeme dauerhaft sicherst. </p> <div class="mt-auto font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors flex items-center gap-2 text-sm uppercase tracking-widest"> 299Artikel lesen 300<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </div> </div> </a><a href="/magazin/das-flussbett-prinzip" class="group flex flex-col bg-gray-soft/20 dark:bg-charcoal border border-charcoal/5 dark:border-white-paper/10 rounded-2xl p-8 shadow-sm hover:shadow-xl hover:bg-white-paper dark:hover:bg-charcoal/80 transition-all duration-300 transform hover:-translate-y-1"> <div class="flex-1 flex flex-col"> <div class="text-xs font-bold text-amber-burnt uppercase tracking-wider mb-4"> 19. Dezember 2025 </div> <h4 class="text-2xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 group-hover:text-teal-light transition-colors leading-tight"> Das Flussbett-Prinzip </h4> <p class="text-charcoal/70 dark:text-gray-soft/80 text-sm mb-8 line-clamp-4 leading-relaxed flex-1"> Das Flussbett-Prinzip: Warum mehr Traffic arm macht. Optimieren statt Budget erhöhen â Besucher vergolden! </p> <div class="mt-auto font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors flex items-center gap-2 text-sm uppercase tracking-widest"> 301Artikel lesen 302<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </div> </div> </a><a href="/magazin/lead-qualitaet" class="group flex flex-col bg-gray-soft/20 dark:bg-charcoal border border-charcoal/5 dark:border-white-paper/10 rounded-2xl p-8 shadow-sm hover:shadow-xl hover:bg-white-paper dark:hover:bg-charcoal/80 transition-all duration-300 transform hover:-translate-y-1"> <div class="flex-1 flex flex-col"> <div class="text-xs font-bold text-amber-burnt uppercase tracking-wider mb-4"> 12. Dezember 2025 </div> <h4 class="text-2xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 group-hover:text-teal-light transition-colors leading-tight"> Lead-Qualität </h4> <p class="text-charcoal/70 dark:text-gray-soft/80 text-sm mb-8 line-clamp-4 leading-relaxed flex-1"> Warum 100 Leads dein Unternehmen ruinieren können: Das Popcorn vs. Steak-Prinzip Stell dir folgendes Szenario vor: Es ist Montagmorgen. Dein Marketing-Team oder deine Agentur legt dir den Monatsreport vor. Die Zahlen sind grün. Sektkorken knallen. Schulterklopfen. Dann gehst du in die Vertriebsabteilung. Die Stimmung dort? Am Boden. Die Telefone laufen heiÃ, aber die Mitarbeiter ... </p> <div class="mt-auto font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors flex items-center gap-2 text-sm uppercase tracking-widest"> 303Artikel lesen 304<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </div> </div> </a><a href="/magazin/planloses-marketing" class="group flex flex-col bg-gray-soft/20 dark:bg-charcoal border border-charcoal/5 dark:border-white-paper/10 rounded-2xl p-8 shadow-sm hover:shadow-xl hover:bg-white-paper dark:hover:bg-charcoal/80 transition-all duration-300 transform hover:-translate-y-1"> <div class="flex-1 flex flex-col"> <div class="text-xs font-bold text-amber-burnt uppercase tracking-wider mb-4"> 04. August 2025 </div> <h4 class="text-2xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 group-hover:text-teal-light transition-colors leading-tight">
304 Planloses Marketing </h4> <p class="text-charcoal/70 dark:text-gray-soft/80 text-sm mb-8 line-clamp-4 leading-relaxed flex-1"> Das Risiko von planlosem Marketing: Ohne Fahrplan in den digitalen Sturm Stell dir vor, du bist der Kapitän eines hochmodernen Frachtschiffs. Dein Ziel ist es, wertvolle Güter sicher von einem Hafen zum nächsten zu bringen. Würdest du jemals den Anker lichten, ohne eine detaillierte Seekarte, ohne einen klaren Kurs und ohne das Ziel genau zu ... </p> <div class="mt-auto font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors flex items-center gap-2 text-sm uppercase tracking-widest"> 305Artikel lesen 306<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </div> </div> </a><a href="/magazin/erfolgreiche-marketing-strategien" class="group flex flex-col bg-gray-soft/20 dark:bg-charcoal border border-charcoal/5 dark:border-white-paper/10 rounded-2xl p-8 shadow-sm hover:shadow-xl hover:bg-white-paper dark:hover:bg-charcoal/80 transition-all duration-300 transform hover:-translate-y-1"> <div class="flex-1 flex flex-col"> <div class="text-xs font-bold text-amber-burnt uppercase tracking-wider mb-4"> 20. Juli 2025 </div> <h4 class="text-2xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 group-hover:text-teal-light transition-colors leading-tight"> Erfolgreiche Marketing Strategien </h4> <p class="text-charcoal/70 dark:text-gray-soft/80 text-sm mb-8 line-clamp-4 leading-relaxed flex-1"> Die unsichtbare Hand: Was erfolgreiches Online-Marketing wirklich ausmacht Hast du dich jemals gefragt, warum manche Unternehmen online mühelos zu wachsen scheinen, während andere trotz hoher Budgets und hektischer Betriebsamkeit auf der Stelle treten? Es ist kein Zufall. Es ist auch keine Magie. Es ist das Ergebnis einer unsichtbaren Hand, die alle Aktivitäten lenkt: einer klaren, ... </p> <div class="mt-auto font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors flex items-center gap-2 text-sm uppercase tracking-widest"> 307Artikel lesen 308<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </div> </div> </a><a href="/magazin/falsche-kpi" class="group flex flex-col bg-gray-soft/20 dark:bg-charcoal border border-charcoal/5 dark:border-white-paper/10 rounded-2xl p-8 shadow-sm hover:shadow-xl hover:bg-white-paper dark:hover:bg-charcoal/80 transition-all duration-300 transform hover:-translate-y-1"> <div class="flex-1 flex flex-col"> <div class="text-xs font-bold text-amber-burnt uppercase tracking-wider mb-4"> 14. Juli 2025 </div> <h4 class="text-2xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 group-hover:text-teal-light transition-colors leading-tight"> Falsche KPI </h4> <p class="text-charcoal/70 dark:text-gray-soft/80 text-sm mb-8 line-clamp-4 leading-relaxed flex-1"> Falsche KPIs: Wie du aufhörst, die falschen Marketing-Ziele zu verfolgen Es ist ein Ritual, das in den Konferenzräumen unzähliger mittelständischer Unternehmen jede Woche stattfindet. Dein Marketing-Team präsentiert den Report für den letzten Monat. Die Stimmung ist optimistisch. Die Graphen zeigen nach oben: Der Website-Traffic ist gestiegen, die Anzahl der Social-Media-Follower hat einen neuen Höchststand erreicht, ... </p> <div class="mt-auto font-bold text-teal-deep dark:text-white-paper group-hover:text-amber-burnt transition-colors flex items-center gap-2 text-sm uppercase tracking-widest"> 309Artikel lesen 310<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </div> </div> </a> </div> 311<h3 id="fallstudien-aus-der-praxis">Fallstudien aus der Praxis</h3> 312<p>Erfolge mit der Liquid Marketing Strategie in konkreten Kundenprojekten.</p> 313<section class="w-full relative py-16 md:py-24 px-4 z-20 transition-colors duration-500 not-prose lg:w-screen lg:left-1/2 lg:-translate-x-1/2 bg-white-paper dark:bg-charcoal"> <div class="max-w-6xl mx-auto flex flex-col items-center"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 w-full"> <a href="/case/case-study-restaurant-diavolo-luebeck" class="group relative flex flex-col bg-white dark:bg-charcoal border border-charcoal/10 dar
313k:border-white-paper/10 rounded-3xl p-8 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 overflow-hidden"> <div class="absolute top-4 right-6 text-charcoal/5 dark:text-white-paper/5 font-serif text-8xl leading-none pointer-events-none select-none"> 314“ 315</div> <div class="mb-6 relative z-10"> <div class="text-4xl lg:text-5xl font-bold text-teal-deep dark:text-white-paper tracking-tight leading-tight mb-2 group-hover:text-teal-light transition-colors"> Platz 3 bei Google </div> <div class="text-[10px] font-bold text-charcoal/40 dark:text-gray-soft/50 uppercase tracking-widest leading-snug pr-8"> für das hart umkämpfte Keyword "bester italiener lübeck" </div> </div> <p class="text-xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 leading-snug relative z-10 group-hover:text-teal-deep"> Case Study: Restaurant Diavolo, Lübeck </p> <p class="text-charcoal/60 dark:text-gray-soft/80 text-sm mb-8 line-clamp-3 leading-relaxed flex-1 relative z-10"> Das Restaurant Diavolo überzeugt mit exzellenter, authentischer italienischer Küche, war jedoch digital für Touristen und Neukunden zu wenig sichtbar. Wer in einer Stadt essen gehen möchte, googelt zuerst. Das Suchvolumen ist enorm, doch die Konkurrenz um den Suchbegriff bester italiener lübeck ist lokal extrem hart umkämpft. </p> <div class="mt-auto border-t border-charcoal/5 dark:border-white-paper/10 pt-6 flex items-center justify-between group-hover:border-amber-burnt/30 transition-colors relative z-10"> <span class="font-bold text-amber-burnt uppercase tracking-wider text-xs">Case Study lesen</span> <span class="text-amber-burnt font-light group-hover:translate-x-2 transition-transform duration-300"> 316→ 317</span> </div> </a><a href="/case/de-pack" class="group relative flex flex-col bg-white dark:bg-charcoal border border-charcoal/10 dark:border-white-paper/10 rounded-3xl p-8 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 overflow-hidden"> <div class="absolute top-4 right-6 text-charcoal/5 dark:text-white-paper/5 font-serif text-8xl leading-none pointer-events-none select-none"> 318“ 319</div> <div class="mb-6 relative z-10"> <div class="text-4xl lg:text-5xl font-bold text-teal-deep dark:text-white-paper tracking-tight leading-tight mb-2 group-hover:text-teal-light transition-colors"> +16.500% </div> <div class="text-[10px] font-bold text-charcoal/40 dark:text-gray-soft/50 uppercase tracking-widest leading-snug pr-8"> Organisches Wachstum (Besucher) </div> </div> <p class="text-xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 leading-snug relative z-10 group-hover:text-teal-deep"> DE-PACK: Hidden Champion mit SEO-Marktführerschaft durch Drupal-Power </p> <p class="text-charcoal/60 dark:text-gray-soft/80 text-sm mb-8 line-clamp-3 leading-relaxed flex-1 relative z-10"> Vor 11 Jahren war DE-PACK ein analoger Riese, aber digital fast unsichtbar. Mit einer Joomla-Webseite und nur 300 Besuchern im Monat fand Neukundengewinnung fast ausschlieÃlich und kosten-intensiv offline statt. Die Aufgabe war monumental: In einem hart umkämpften B2B-Markt nicht nur sichtbar zu werden, sondern die digitale Marktführerschaft zu übernehmen. </p> <div class="mt-auto border-t border-charcoal/5 dark:border-white-paper/10 pt-6 flex items-center justify-between group-hover:border-amber-burnt/30 transition-colors relative z-10"> <span class="font-bold text-amber-burnt uppercase tracking-wider text-xs">Case Study lesen</span> <span class="text-amber-burnt font-light group-hover:translate-x-2 transition-transform duration-300"> 320→ 321</span> </div> </a><a href="/case/fc-huefingen" class="group relative flex flex-col bg-white dark:bg-charcoal border border-charcoal/10 dark:border-white-paper/10 rounded-3xl p-8 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 overflow-hidden"> <div class="absolute top-4 right-6 text-charcoal/5 dark:text-white-paper/5 font-serif text-8xl leading-none pointer-events-none select-none"> 322“ 323</div> <div class="mb-6 relative z-10"> <div class="text-4xl lg:text-5xl font-bold text-teal-deep dark:text-white-paper tracking-tight leading-tight mb-2 group-hover:text-teal-light transition-colors"> 100% </div> <div class="text-[10px] font-bold text-charcoal/40 dark:text-gray-soft/50 uppercase tracking-widest leading-snug pr-8"> Fan-Fokus </div> </div> <p class="text-xl font-serif font-bold text-teal-deep dark:text-white-paper mb-4 leading-snug relative z-10 group-hover:text-teal-deep"> FC Hüfingen Web Relaunch 2026 </p>
323 <p class="text-charcoal/60 dark:text-gray-soft/80 text-sm mb-8 line-clamp-3 leading-relaxed flex-1 relative z-10"> Die Ausgangslage war ein Klassiker im Vereinsumfeld: Eine technisch solide, aber veraltete Drupal-Website, die in der Praxis zum Hindernis wurde. Das eingeschränkte Hosting machte Updates zur Qual und die komplexe Pflege führte dazu, dass Inhalte oft veraltet waren. Für die Fans war es mühsam, aktuelle Spielpläne oder News zu finden. Der Verein brauchte keine weitere Verwaltungs-Software, sondern eine digitale Heimat, die so lebendig ist wie der FuÃballplatz am Sonntag. </p> <div class="mt-auto border-t border-charcoal/5 dark:border-white-paper/10 pt-6 flex items-center justify-between group-hover:border-amber-burnt/30 transition-colors relative z-10"> <span class="font-bold text-amber-burnt uppercase tracking-wider text-xs">Case Study lesen</span> <span class="text-amber-burnt font-light group-hover:translate-x-2 transition-transform duration-300"> 324→ 325</span> </div> </a> </div> <div class="mt-12"> <a href="/case" class="inline-block font-bold py-3 px-8 rounded-full transition-all duration-300 transform hover:scale-105 text-center bg-amber-burnt hover:bg-teal-deep text-white-paper shadow-lg"> Alle Erfolgsgeschichten ansehen </a> </div> </div> </section> 326<h3 id="klarheit-ist-der-erste-schritt-zum-wachstum">Klarheit ist der erste Schritt zum Wachstum.</h3> 327<p>Du musst nicht mehr Geld für Marketing ausgeben. Du musst anfangen, deine Investitionen intelligenter zu lenken. Diese Ressourcen sind dein erster Schritt, um die Muster hinter erfolgreichem Marketing zu erkennen.</p> 328<p>Nimm dir die Zeit. Lies. Erkenne dich wieder.</p> 329<p>Wenn du bereit für den zweiten Schritt bist â einen konkreten Fahrplan für dein eigenes Unternehmen â, weiÃt du, wo du mich findest</p> 330<div class="w-full relative my-24 z-20 not-prose lg:w-screen lg:left-1/2 lg:-translate-x-1/2 flex justify-center"> <div class="w-full max-w-6xl px-4 sm:px-6"> <section class="relative bg-teal-deep dark:bg-charcoal rounded-3xl overflow-hidden shadow-2xl flex flex-col md:flex-row border border-white-paper/10"> <div class="absolute inset-0 bg-gradient-to-br from-white-paper/10 to-transparent pointer-events-none" aria-hidden="true"></div> <div class="relative z-10 w-full flex flex-col justify-center p-8 md:p-12 lg:p-16 331 items-center 332 "> <h3 class="text-3xl md:text-4xl font-serif font-bold text-white-paper mb-6 333 text-center 334 "> Lies weiter </h3> <div class="prose prose-invert mb-8 w-full 335 text-white-paper/80 336 prose-headings:text-white-paper 337 prose-strong:text-white-paper 338 prose-a:text-amber-burnt hover:prose-a:text-amber-burnt/80 transition-colors 339 max-w-3xl mx-auto text-center marker:text-amber-burnt prose-ol:list-inside prose-ul:list-inside 340 "> <p>Erfahre mehr über die Kostenstruktur.</p> </div> <div class="flex justify-center w-full"> <a href="/kosten" class="inline-block font-bold py-3 px-8 rounded-full transition-all duration-300 transform hover:scale-105 text-center bg-amber-burnt hover:bg-teal-deep text-white-paper shadow-lg"> Kosten & Preise </a> </div> </div> </section> </div> </div></article></div></main> </main> <footer class="w-full bg-[#18434f] text-white-paper/80 font-sans border-t border-charcoal/10 relative z-10"> <div class="max-w-6xl mx-auto px-4 py-16 md:py-20"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-12 lg:gap-8"> <div class="flex flex-col"> <a href="/" class="inline-block mb-6 transition-transform hover:scale-105" aria-label="Zur Startseite"> <img src="/_astro/phoenixseo-typo.BkLBupce_1Ca4oM.svg" alt="PHOENIXSEO Logo" loading="lazy" decoding="async" width="267" height="54" class="h-10 w-auto"> </a> <p class="text-sm leading-relaxed mb-8"> 341Digitales Marketing, das flieÃt.<br> 342Strategie, Technik und Content<br> 343aus einer Hand. 344</p> <div class="flex items-center gap-5 flex-wrap"> <a href="https://www.linkedin.com/company/phoenixseo-de/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn Profil" class="text-white-paper/50 hover:text-white-paper hover:scale-110 transition-all duration-300"> <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z" clip-rule="evenodd"></path></svg> </a> <a href="https://www.xing.com/profile/Frank_Pfabigan/" target="_blank" rel="noopener noreferrer" aria-label="Xing Profil" class="text-white-paper/50 hover:text-white-paper hover:scale-110 transition-all duration-300"> <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
344<path fill-rule="evenodd" d="M18.188 0c-.517 0-.741.325-.927.66 0 0-7.455 13.224-7.702 13.657.015.024 4.919 9.023 4.919 9.023.17.308.436.66.967.66h3.454c.211 0 .375-.078.463-.22.089-.151.089-.346-.009-.536l-4.879-8.916c-.004-.006-.004-.016 0-.022L22.139.756c.095-.191.097-.387.006-.535C22.056.078 21.894 0 21.686 0h-3.498zM3.648 4.24c-.214 0-.395.088-.473.216-.09.149-.078.339.02.531l2.34 4.05c.004.01.004.016 0 .021L1.86 16.051c-.099.188-.093.381 0 .529.085.142.239.234.45.234h3.461c.518 0 .766-.348.945-.667l3.734-6.609-2.378-4.155c-.172-.315-.434-.659-.962-.659H3.648v.016z" clip-rule="evenodd"></path></svg> </a> <a href="https://norden.social/@phoenixseo" target="_blank" rel="noopener noreferrer" aria-label="Mastodon Profil" class="text-white-paper/50 hover:text-amber-burnt hover:scale-110 transition-all duration-300"> <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M23.268 5.313c-.35-2.228-2.618-3.616-5.366-3.812C15.867 1.35 12.825 1.287 12 1.287h-.01c-.825 0-3.866.063-5.903.214-2.748.196-5.015 1.584-5.366 3.812-.57 3.636-.414 8.763-.414 8.763 0 4.143.228 8.057 3.328 10.667 2.56 2.14 6.13 2.41 8.359 2.41 2.74 0 4.764-.85 5.897-1.9 1.02-1.04 1.35-2.02 1.35-2.02l-1.2-1.74c-1.32.96-3.35 1.6-5.88 1.6-2.58 0-4.9-.76-5.33-2.73-.04-.15-.06-.32-.08-.49 2.58.55 5.56.76 8.32.65 3.36-.14 6.64-1.2 8.16-3.41 1.76-2.55 1.76-7.85 1.76-7.85 0 0 .15-5.127-.42-8.763zM18.8 14.53h-2.4v-4.52c0-1.44-.57-2.18-1.7-2.18-1.28 0-1.92.82-1.92 2.44v3.08h-1.55V10.27c0-1.62-.64-2.44-1.92-2.44-1.14 0-1.7.74-1.7 2.18v4.52h-2.4v-4.8c0-1.29.35-2.3 1.06-3.03.73-.75 1.66-1.12 2.78-1.12 1.3 0 2.27.49 2.89 1.48L12 8.71l.16-1.66c.63-1 1.6-1.48 2.89-1.48 1.13 0 2.06.37 2.78 1.12.71.73 1.06 1.74 1.06 3.03v4.8z" clip-rule="evenodd"></path></svg> </a> <a href="https://www.instagram.com/phoenixseo.luebeck/" target="_blank" rel="noopener noreferrer" aria-label="Instagram Profil" class="text-white-paper/50 hover:text-amber-burnt hover:scale-110 transition-all duration-300"> <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.209-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z" clip-rule="evenodd"></path></svg> </a> <a href="https://www.facebook.com/phoenixseode/" target="_blank" rel="noopener noreferrer" aria-label="Facebook Profil" class="text-white-paper/50 hover:text-white-paper hover:scale-110 transition-all duration-300"> <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" clip-rule="evenodd"></path></svg> </a> <a href="https://phoenixseo.de/rss.xml" target="_blank" rel="noopener noreferrer" aria-label="RSS Feed" class="text-white-paper/50 hover:text-amber-burnt hover:scale-110 transition-all duration-300"> <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M6.503 20.752c0 1.794-1.456 3.248-3.251 3.248-1.796 0-3.252-1.454-3.252-3.248 0-1.794 1.456-3.248 3.252-3.248 1.795 0 3.251 1.454 3.251 3.248zm-6.503-12.572v4.811c6.05.062 10.96 4.966 11.022 11.009h4.817c-.062-8.71-7.118-15.758-15.839-15.82zm0-3.368c10.58.046 19.152 8.594 19.183 19.188h4.817c-.03-13.231-10.755-23.954-24-24v4.812z" clip-rule="evenodd"></path></svg> </a> </div> </div> <div>
344 <p class="text-white-paper font-bold tracking-wider uppercase text-sm mb-6">Erkunden</p> <ul class="space-y-4 text-sm"> <li><a href="/" class="hover:text-white-paper transition-colors block">Startseite</a></li> <li><a href="/liquid-marketing" class="hover:text-white-paper transition-colors block">Liquid-Marketing</a></li> <li><a href="/projekt" class="hover:text-white-paper transition-colors block">Projekte</a></li> <li><a href="/network/phoenixseo" class="hover:text-white-paper transition-colors block">Ãber mich</a></li> <li><a href="/branche" class="hover:text-white-paper transition-colors block">Branchen</a></li> <li><a href="/tool" class="hover:text-white-paper transition-colors block">Tools</a></li> <li><a href="/briefing" class="hover:text-white-paper transition-colors block">Briefing</a></li> </ul> </div> <div> <p class="text-white-paper font-bold tracking-wider uppercase text-sm mb-6">Kompetenzen</p> <ul class="space-y-4 text-sm mb-8"> <li><a href="/service/liquid-strategie" class="hover:text-white-paper transition-colors block">Liquid Strategie</a></li> <li><a href="/service/seo" class="hover:text-white-paper transition-colors block">Organische Sichtbarkeit (SEO)</a></li> <li><a href="/service/performance-marketing" class="hover:text-white-paper transition-colors block">Performance & Reichweite (SEA)</a></li> <li><a href="/service/content" class="hover:text-white-paper transition-colors block">Content & Dialog (Social & Text)</a></li> <li><a href="/service/web-architektur" class="hover:text-white-paper transition-colors block">Web-Architektur</a></li> </ul> <a href="/buch-liquid-marketing" class="text-white-paper font-serif font-bold text-lg hover:text-amber-burnt transition-colors block"> 345Buch "Liquid Marketing" 346</a> </div> <div> <ul class="space-y-6 text-sm"> <li class="flex items-start gap-4"> <div class="mt-1 flex-shrink-0 w-8 h-8 rounded-full border border-white-paper/20 flex items-center justify-center"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path></svg> </div> <div> <strong class="block text-white-paper font-bold mb-1">Adresse:</strong> 347HolstenstraÃe 9, 23552 Lübeck 348</div> </li> <li class="flex items-start gap-4"> <div class="mt-1 flex-shrink-0 w-8 h-8 rounded-full border border-white-paper/20 flex items-center justify-center"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"></path></svg> </div> <div> <strong class="block text-white-paper font-bold mb-1">Telefon:</strong> 3490451 / 70 20 358 350</div> </li> <li class="flex items-start gap-4"> <div class="mt-1 flex-shrink-0 w-8 h-8 rounded-full border border-white-paper/20 flex items-center justify-center"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16 12a4 4 0 10-8 0 4 4 0 008 0zm0 0v1.5a2.5 2.5 0 005 0V12a9 9 0 10-9 9m4.5-1.206a8.959 8.959 0 01-4.5 1.207"></path></svg> </div> <div> <strong class="block text-white-paper font-bold mb-1">E-Mail:</strong> <a href="mailto:[email protected]" class="hover:text-white-paper transition-colors">[email protected]</a> </div> </li> <li class="flex items-start gap-4"> <div class="mt-1 flex-shrink-0 w-8 h-8 rounded-full border border-white-paper/20 flex items-center justify-center"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"></path></svg> </div> <div> <strong class="block text-white-paper font-bold mb-1">Website:</strong> <a href="https://phoenixseo.de" class="hover:text-white-paper transition-colors">phoenixseo.de</a> </div> </li> </ul> </div> </div> </div> <div class="bg-black/20 w-full relative"> <div class="max-w-6xl mx-auto px-4 py-6 flex flex-col md:flex-row justify-between items-center text-xs gap-4"> <div>
351Copyright © 2014 - 2026 PHOENIXSEO.de Frank Pfabigan e.K. All rights reserved. 352</div> <div class="flex items-center gap-6 font-bold uppercase tracking-wider"> <a href="/buch-liquid-marketing" class="hover:text-white-paper transition-colors">BUCH "LIQUID MARKETING"</a> <a href="/impressum" class="hover:text-white-paper transition-colors">IMPRESSUM</a> <a href="/datenschutz" class="hover:text-white-paper transition-colors">DATENSCHUTZ</a> <a href="/agb" class="hover:text-white-paper transition-colors">AGB</a> </div> </div> </div> </footer> <button id="scroll-to-top-floating" aria-label="Nach oben scrollen" class="fixed right-6 bottom-6 md:right-10 md:bottom-10 w-12 h-12 bg-teal-deep hover:bg-amber-burnt text-white-paper rounded-full shadow-2xl flex items-center justify-center z-50 transition-all duration-500 opacity-0 pointer-events-none translate-y-4"> <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M5 10l7-7m0 0l7 7m-7-7v18"></path> </svg> </button>
352<script> 353 const setupFloatingScroll = () => { 354 const btn = document.getElementById('scroll-to-top-floating'); 355 if (!btn) return; 356 357 // Wie bei der Fortschrittsleiste: den vorherigen Listener abhaengen, sonst 358 // sammelt window bei jeder Navigation einen weiteren (mitsamt altem Button). 359 if (window.__scrollTopHandler) { 360 window.removeEventListener('scroll', window.__scrollTopHandler); 361 } 362 363 // 1. Die Klick-Aktion (weiches Scrollen nach ganz oben) 364 btn.onclick = () => { 365 window.scrollTo({ top: 0, behavior: 'smooth' }); 366 }; 367 368 // 2. Die Scroll-Logik (Prüfen, ob wir bei 50% sind) 369 const handleScroll = () => { 370 // Berechnet die maximal mögliche Scroll-Distanz der gesamten Seite 371 const scrollTotal = document.documentElement.scrollHeight - window.innerHeight; 372 // Aktuelle Scroll-Position des Nutzers 373 const scrollCurrent = window.scrollY; 374 375 // Schutz vor Seiten, die gar keinen Scrollbalken haben 376 if (scrollTotal <= 0) return; 377 378 // Die Mathematik: Aktuelle Position / Maximale Position = Prozentsatz 379 // >= 0.5 bedeutet: 50% erreicht 380 if (scrollCurrent / scrollTotal >= 0.25) { 381 // Einblenden 382 btn.classList.remove('opacity-0', 'pointer-events-none', 'translate-y-4'); 383 btn.classList.add('opacity-100', 'pointer-events-auto', 'translate-y-0'); 384 } else { 385 // Ausblenden 386 btn.classList.add('opacity-0', 'pointer-events-none', 'translate-y-4'); 387 btn.classList.remove('opacity-100', 'pointer-events-auto', 'translate-y-0'); 388 } 389 }; 390 391 // Scroll-Event-Listener hinzufügen (mit { passive: true } für flüssige Performance) 392 window.__scrollTopHandler = handleScroll; 393 window.addEventListener('scroll', handleScroll, { passive: true }); 394 395 // Einmaliger Check beim ersten Laden der Seite (falls der User z.B. die Seite in der Mitte neu lädt) 396 handleScroll(); 397 }; 398 399 setupFloatingScroll(); 400 // Re-Initialisierung für Astros ViewTransitions 401 document.addEventListener('astro:page-load', setupFloatingScroll); 402</script>
402
402<script> 403 // 1. Funktion, um das Theme hart aus dem Storage zu laden und Icons zu setzen 404 const syncTheme = () => { 405 const isDark = localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches); 406 407 // Zwingt die dark-Klasse auf das HTML-Element 408 document.documentElement.classList.toggle('dark', isDark); 409 410 // Icons synchronisieren 411 document.querySelectorAll('.theme-toggle-light-icon').forEach(el => el.classList.toggle('hidden', !isDark)); 412 document.querySelectorAll('.theme-toggle-dark-icon').forEach(el => el.classList.toggle('hidden', isDark)); 413 }; 414 415 // 2. Initiale Ausführung beim direkten Seitenaufruf 416 syncTheme(); 417 418 // 3. DER ANTI-FLACKER-SCHUTZ: Fängt die neue Seite ab, BEVOR sie gezeichnet wird! 419 document.addEventListener('astro:before-swap', (e) => { 420 const isDark = document.documentElement.classList.contains('dark'); 421 // Wir stempeln den aktuellen Modus direkt auf das noch unsichtbare neue Dokument 422 e.newDocument.documentElement.classList.toggle('dark', isDark); 423 }); 424 425 // 4. Nach dem Wechsel stellen wir sicher, dass die Icons stimmen 426 document.addEventListener('astro:after-swap', syncTheme); 427 428 // 5. Klick-Logik für die Buttons (Ãberlebt Seitenwechsel) 429 document.addEventListener('click', (e) => { 430 const btn = e.target.closest('.theme-toggle-btn'); 431 if (!btn) return; 432 433 const willBeDark = !document.documentElement.classList.contains('dark'); 434 435 // Zustand speichern und HTML anpassen 436 document.documentElement.classList.toggle('dark', willBeDark); 437 localStorage.setItem('color-theme', willBeDark ? 'dark' : 'light'); 438 439 // Alle Icons auf der Seite umschalten 440 document.querySelectorAll('.theme-toggle-light-icon').forEach(el => el.classList.toggle('hidden', !willBeDark)); 441 document.querySelectorAll('.theme-toggle-dark-icon').forEach(el => el.classList.toggle('hidden', willBeDark)); 442 }); 443 </script>
443 </body> </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.