Nachhaltige Lösungen
für die Energiewende

Organisation, Prozesse, Change Management
Operatives Projektmanagement
Konzeptionelles Projektmanagement
Integrierte Managementsysteme
Schulungen, Coachings, Wissensmanagement
Konzepte für die Energiewende,
Recherchen, Studien
Wirtschaftlichkeitsbetrachtung, M&A-Unterstützung,
Make or Buy
Digitalisierung
Organisation, Prozesse, Change Management
Operatives Projektmanagement
Konzeptionelles Projektmanagement
Integrierte Managementsysteme
Schulungen, Coachings, Wissensmanagement
Konzepte für die Energiewende,
Recherchen, Studien
Wirtschaftlichkeits-
betrachtung,
M&A-Unterstützung,
Make or Buy
Digitalisierung
:root { --grid-gap: 35px; --background: white; --foreground: white; } .icon-container-t { position: relative; background-color: var(--background); display: grid; margin: auto; width: 35%; aspect-ratio: 0.5; grid-template: "icon-1 icon-2" "icon-3 icon-4" "icon-5 icon-6" "icon-7 icon-8"; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr 1fr 1fr; grid-gap: var(--grid-gap); } .animated-icon-t, .animated-icon-t * { transition: all 0.5s ease; right: 0 } .animated-icon-t { position: relative; z-index: 1; width: 100%; height: 100%; aspect-ratio: 1; } .animated-icon-t.r.passive { transform: translateX(100%); } .animated-icon-t.l.passive { transform: translateX(-100%); } .animated-icon-t.active { transform: translateX(100%) translate(-8px, 8px); } .animated-icon-t.l * { left: 0; } .animated-icon-t.l.active { transform: translateX(-100%) translate(8px, 8px); } .animated-icon-t>.background { background-color: var(--background); position: absolute; width: 100%; height: 100%; border: 2px solid #ddd; } .animated-icon-t.active>.background { background-color: var(--foreground); width: 300%; border-color: var(--foreground); box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.2); } .animated-icon-t>.border { position: absolute; z-index: -10; background-color: var(--background); width: 100%; height: 100%; border: 2px solid transparent; } .animated-icon-t.active>.border { transform: translate(10px, -10px); width: 300%; border-image: 1; border-image-source: linear-gradient(90deg, #b61620, #f33f3f); } .animated-icon-t.l.active>.border { transform: translate(-10px, -10px); border-image-source: linear-gradient(-90deg, #b61620, #f33f3f); } .animated-icon-t img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding: 30%; overflow: visible; } .animated-icon-t:not(.active) img { filter: brightness(0%) invert(100%) brightness(86%); } .animated-icon-t span { position: absolute; padding: 0px; top: 50%; left: 40%; width: 200%; max-height: 100%; transform: translateY(-50%); opacity: 0; --awb-text-font-family: "Inter"; --awb-text-font-style: bold; --awb-text-font-weight: 500; --awb-font-size: 12px; text-align: center; line-height: 1.5; transition-duration: 0.25s; pointer-events: none; } .animated-icon-t.r span { left: -140%; } .animated-icon-t.active span { opacity: 1; left: 100%; transition-duration: 0.5s; } .animated-icon-t.r.active span { left: -200%; } .animated-icon-t::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 70%; border: solid #ddd; border-width: 0px 1px 0px 0px; opacity: 0; transition: all 0.5s ease; } .animated-icon-t.r::after { border-width: 0px 0px 0px 1px; } .animated-icon-t.active::after { opacity: 1; } function onLoadTablet() { // Die Dauer zwischen den einzelnen Animationen in Millisekunden const displayDur = 5000; const icons = document.getElementsByClassName('animated-icon-t'); // Ein Zeitstempel um festzuhalten wann die Animation gestartet ist let startTs = null; // Ein Zeitstempel, der festhält wie lang die Animation schon lief, // als sie pausiert wurde (z.B. wenn der Nutzer den Tab wechselt) let elapsedWhenPaused = 0; // Diese Funktion animiert eine der Reihen // row: Wählt die Reihe aus // index: Wählt das Icon in der Reihe aus, welches größer werden soll const animateRow = function(row, index) { // Setzt das ausgewählte Icon auf aktive icons[2 * row + index].classList.add('active'); // Setzt das andere Icon auf passiv icons[2 * row + (1 - index)].classList.add('passive'); }; // Resettet eine ganze Reihe in den Normalzustand const resetRow = function(row) { icons[2 * row].classList.remove('active'); icons[2 * row].classList.remove('passive'); icons[2 * row + 1].classList.remove('active'); icons[2 * row + 1].classList.remove('passive'); }; // Resettet alle Reihen const resetAll = function() { for (let i = 0; i < 4; i++) resetRow(i); }; // Diese Funktion wird in einer Schleife aufgerufen und // kontrolliert die einzelnen Schritte der Animation const step = function(ts) { // Wenn der Browser nicht sichtbar ist, (z.B. minimiert) // dann tue nichts, und gehe zum nächsten Animationsschritt if (document.hidden) return window.requestAnimationFrame(step); if (startTs === null) startTs = ts; // Speicher wie viel Zeit seit begin der Animation vergangen ist const elapsed = ts - startTs; // Zeige die jeweiligen Animationen nacheinander an if (elapsed < displayDur) { resetAll(); animateRow(0, 0); animateRow(1, 1); } else if (elapsed < 2 * displayDur) { resetAll(); animateRow(0, 1); animateRow(1, 0); } else if (elapsed < 2 * displayDur + 500) { resetAll(); } else if (elapsed < 3 * displayDur + 500) { animateRow(2, 0); animateRow(3, 1); } else if (elapsed < 4 * displayDur + 500) { resetAll(); animateRow(2, 1); animateRow(3, 0); } else if (elapsed 4 * displayDur + 1000) { startTs = ts; } // Rufe den nächsten Animationsschritt auf window.requestAnimationFrame(step); } // Starte die Animation window.requestAnimationFrame(step); // Wenn der Tab gewechselt wird, oder der Browser minimiert wird, // speicher den aktuellen Stand der Animation und beginne von dort aus wieder, // wenn der Tab wieder sichtbar wird document.addEventListener('visibilitychange', event => { if (document.hidden) elapsedWhenPaused = document.timeline.currentTime - startTs; else startTs = document.timeline.currentTime - elapsedWhenPaused; }); } // Starte die gesammte Animation erst dann, wenn die Seite geladen ist window.addEventListener('load', onLoadTablet);
Organisation, Prozesse, Change Management
Operatives Projektmanagement
Konzeptionelles Projektmanagement
Integrierte Managementsysteme
Schulungen, Coachings, Wissensmanagement
Konzepte für die Energiewende,
Recherchen, Studien
Wirtschaftlichkeits-
betrachtung,
M&A-Unterstützung,
Make or Buy
Digitalisierung
:root { --grid-gap: 35px; --background: white; --foreground: white; } .icon-container-m { position: relative; background-color: var(--background); display: grid; margin: auto; width: 50%; aspect-ratio: 0.5; grid-template: "icon-1 icon-2" "icon-3 icon-4" "icon-5 icon-6" "icon-7 icon-8"; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr 1fr 1fr; grid-gap: var(--grid-gap); } .animated-icon-m, .animated-icon-m * { transition: all 0.5s ease; right: 0 } .animated-icon-m { position: relative; z-index: 1; width: 100%; height: 100%; aspect-ratio: 1; } .animated-icon-m.r.passive { transform: translateX(100%); } .animated-icon-m.l.passive { transform: translateX(-100%); } .animated-icon-m.active { transform: translateX(100%) translate(-8px, 8px); } .animated-icon-m.l * { left: 0; } .animated-icon-m.l.active { transform: translateX(-100%) translate(8px, 8px); } .animated-icon-m>.background { background-color: var(--background); position: absolute; width: 100%; height: 100%; border: 2px solid #ddd; } .animated-icon-m.active>.background { background-color: var(--foreground); width: 300%; border-color: var(--foreground); box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.2); } .animated-icon-m>.border { position: absolute; z-index: -10; background-color: var(--background); width: 100%; height: 100%; border: 2px solid transparent; } .animated-icon-m.active>.border { transform: translate(10px, -10px); width: 300%; border-image: 1; border-image-source: linear-gradient(90deg, #b61620, #f33f3f); } .animated-icon-m.l.active>.border { transform: translate(-10px, -10px); border-image-source: linear-gradient(-90deg, #b61620, #f33f3f); } .animated-icon-m img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding: 30%; overflow: visible; } .animated-icon-m:not(.active) img { filter: brightness(0%) invert(100%) brightness(86%); } .animated-icon-m span { position: absolute; padding: 0px; top: 50%; left: 40%; width: 200%; max-height: 100%; transform: translateY(-50%); opacity: 0; --awb-text-font-family: "Inter"; --awb-text-font-style: bold; --awb-text-font-weight: 500; --awb-font-size: 12px; text-align: center; line-height: 1.5; transition-duration: 0.25s; pointer-events: none; } .animated-icon-m.r span { left: -140%; } .animated-icon-m.active span { opacity: 1; left: 100%; transition-duration: 0.5s; } .animated-icon-m.r.active span { left: -200%; } .animated-icon-m::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 70%; border: solid #ddd; border-width: 0px 1px 0px 0px; opacity: 0; transition: all 0.5s ease; } .animated-icon-m.r::after { border-width: 0px 0px 0px 1px; } .animated-icon-m.active::after { opacity: 1; } function onLoadMobile() { // Die Dauer zwischen den einzelnen Animationen in Millisekunden const displayDur = 5000; const icons = document.getElementsByClassName('animated-icon-m'); // Ein Zeitstempel um festzuhalten wann die Animation gestartet ist let startTs = null; // Ein Zeitstempel, der festhält wie lang die Animation schon lief, // als sie pausiert wurde (z.B. wenn der Nutzer den Tab wechselt) let elapsedWhenPaused = 0; // Diese Funktion animiert eine der Reihen // row: Wählt die Reihe aus // index: Wählt das Icon in der Reihe aus, welches größer werden soll const animateRow = function(row, index) { icons[2 * row + index].classList.add('active'); icons[2 * row + (1 - index)].classList.add('passive'); }; // Resettet eine ganze Reihe in den Normalzustand const resetRow = function(row) { icons[2 * row].classList.remove('active'); icons[2 * row].classList.remove('passive'); icons[2 * row + 1].classList.remove('active'); icons[2 * row + 1].classList.remove('passive'); }; // Resettet alle Reihen const resetAll = function() { for (let i = 0; i < 4; i++) resetRow(i); }; // Diese Funktion wird in einer Schleife aufgerufen und // kontrolloiert die einzelnen Schritte der Animation const step = function(ts) { // Wenn der Browser nicht sichtbar ist, (z.B. minimiert) // dann tue nichts, und gehe zum nächsten Animationsschritt if (document.hidden) return window.requestAnimationFrame(step); if (startTs === null) startTs = ts; // Speicher wie viel Zeit seit Beginn der Animation vergangen ist const elapsed = ts - startTs; // Zeige die jeweiligen Animationen nacheinander an if (elapsed < displayDur) { resetAll(); animateRow(0, 0); animateRow(1, 1); } else if (elapsed < 2 * displayDur) { resetAll(); animateRow(0, 1); animateRow(1, 0); } else if (elapsed < 2 * displayDur + 500) { resetAll(); } else if (elapsed < 3 * displayDur + 500) { animateRow(2, 0); animateRow(3, 1); } else if (elapsed < 4 * displayDur + 500) { resetAll(); animateRow(2, 1); animateRow(3, 0); } else if (elapsed 4 * displayDur + 1000) { startTs = ts; } // Rufe den nächsten Animationsschritt auf window.requestAnimationFrame(step); } // Starte die Animation window.requestAnimationFrame(step); // Wenn der Tab gewechselt wird, oder der Browser minimiert wird, // speicher den aktuellen Stand der Animation und beginne von dort aus wieder, // wenn der Tab wieder sichtbar wird document.addEventListener('visibilitychange', event => { if (document.hidden) elapsedWhenPaused = document.timeline.currentTime - startTs; else startTs = document.timeline.currentTime - elapsedWhenPaused; }); } // Starte die gesammte Animation erst dann, wenn die Seite geladen ist window.addEventListener('load', onLoadMobile);

Unsere Kunden

Strom- und Wärmeerzeuger

  • Großkraftwerksbetreiber
  • Erzeuger erneuerbarer Energie

Netzbetreiber

  • Übertragungsnetzbetreiber
  • Verteilnetzbetreiber
  • Betreiber von Datennetzen

Strom-, Gas- und Wasserversorger

  • Stadtwerke
  • Entsorgungsunternehmen
  • Kommunale Versorger

Betreiber von Daten- und IT-Infrastruktur

  • Abrechnungsdienstleister
  • Telekomunikations- unternehmen

ENLITE stellt Sie als Führungskraft der Energiewirtschaft
in den Mittelpunkt aller Aktivitäten.

Wir sind Ihr Partner und begleiten Sie kompetent auf dem Weg durch die Energiewende.

Unser hoher Anspruch an Qualität spiegelt sich in unseren Zertifizierungen nach ISO 9001, ISO 27001 und ISO 45001 wieder.

Wir bieten Ihnen ganzheitliche und technologisch geprägte Beratungsleistungen mit spürbarem Nutzen und hoher Qualität.

Wir sind Teamplayer und arbeiten mit interdisziplinären Kompetenzen Hand in Hand gemeinsam mit den Teams unserer Kunden.

Langjährige Kundenbeziehungen unterstreichen unseren Anspruch an höchste Verlässlichkeit, Kompetenz und Flexibilität.

Partnerschaften

ENLITE unterhält ein gut gepflegtes Netzwerk aus strategischen und operativen Partnerschaften. Die Kombination aus Technologiepartnern, Verbänden, Projektunterstützern, Schulungsanbietern, Methodenkennern und Beratungshäusern angrenzender Disziplinen ermöglicht uns, stets sehr gute Lösungen aus einer Hand liefern zu können. Denn wir sind überzeugt, dass nur eine Leistung mit Mehrwert für unsere Kunden eine gute Leistung sein kann!

Dr. Robert van de Sandt
Geschäftsführer