607 lines
47 KiB
HTML
607 lines
47 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="slides-format" content="viewport">
|
||
<title>EGI Teed Substations – Accelerating Germany's Energy Transition</title>
|
||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||
<style type="text/tailwindcss">
|
||
@theme {
|
||
--color-bg: #f7f7f7;
|
||
--color-bg-deep: #ebebeb;
|
||
--color-surface: #ffffff;
|
||
--color-text: #46535B;
|
||
--color-text-secondary: #5a6a73;
|
||
--color-text-muted: #818A8F;
|
||
--color-accent-1: #E75420;
|
||
--color-accent-2: #ff7a45;
|
||
--color-accent-3: #46535B;
|
||
--color-glass-bg: rgba(70,83,91,0.05);
|
||
--color-glass-border: rgba(70,83,91,0.12);
|
||
--color-vignette: rgba(230,230,230,0.5);
|
||
--font-display: 'DM Sans', sans-serif;
|
||
--font-body: 'DM Sans', sans-serif;
|
||
}
|
||
</style>
|
||
<style>
|
||
:root { --color-bg: #f7f7f7; --color-text: #46535B; --glow-color-rgb: 231,84,32; }
|
||
*, *::before, *::after { box-sizing: border-box; }
|
||
html, body { background: #f7f7f7; margin: 0; }
|
||
body { font-family: 'DM Sans', sans-serif; color: #46535B; overflow: hidden; height: 100vh; width: 100vw; }
|
||
.deck { width: 100vw; height: 100vh; position: relative; }
|
||
.slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #f7f7f7; display: flex; flex-direction: column; align-items: center; justify-content: center; opacity: 0; transform: scale(0.95); transition: opacity 0.7s ease, transform 0.7s ease; pointer-events: none; overflow: hidden; }
|
||
.slide.active { opacity: 1; transform: scale(1); pointer-events: all; }
|
||
.slide > .content { position: relative; z-index: 2; width: 100%; max-width: 1100px; padding: clamp(1.5rem, 4vw, 4rem); }
|
||
.nav-controls { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 16px; z-index: 100; background: rgba(255,255,255,0.9); backdrop-filter: blur(10px); padding: 10px 24px; border-radius: 40px; border: 1px solid rgba(231,84,32,0.25); box-shadow: 0 4px 20px rgba(70,83,91,0.1); }
|
||
.nav-btn { width: 40px; height: 40px; border: none; background: rgba(231,84,32,0.10); color: #E75420; border-radius: 50%; font-size: 1.2rem; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.3s; }
|
||
.nav-btn:hover { background: rgba(231,84,32,0.22); }
|
||
.slide-dots { display: flex; gap: 8px; }
|
||
.slide-dots .dot { width: 10px; height: 10px; border-radius: 50%; background: rgba(70,83,91,0.2); cursor: pointer; transition: background 0.3s, transform 0.3s; }
|
||
.slide-dots .dot.active { background: #E75420; transform: scale(1.3); }
|
||
.slide-counter { font-size: 0.8rem; color: #818A8F; min-width: 40px; text-align: center; }
|
||
.reveal { opacity: 0; transform: translateY(20px); }
|
||
|
||
@keyframes float-slow {
|
||
0% { transform: translate(0,0) scale(1); }
|
||
25% { transform: translate(50px,-40px) scale(1.1); }
|
||
50% { transform: translate(-35px,35px) scale(0.92); }
|
||
75% { transform: translate(45px,18px) scale(1.06); }
|
||
100% { transform: translate(0,0) scale(1); }
|
||
}
|
||
@keyframes float-drift {
|
||
0% { transform: translate(0,0) scale(1); }
|
||
33% { transform: translate(-45px,-55px) scale(1.13); }
|
||
66% { transform: translate(38px,28px) scale(0.9); }
|
||
100% { transform: translate(0,0) scale(1); }
|
||
}
|
||
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
|
||
.gradient-mesh { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
|
||
.blob { position: absolute; border-radius: 50%; filter: blur(90px); animation: float-slow 14s ease-in-out infinite; }
|
||
.blob:nth-child(2) { animation: float-drift 18s ease-in-out infinite; }
|
||
.blob:nth-child(3) { animation: float-slow 22s ease-in-out infinite reverse; }
|
||
|
||
/* Light theme: very subtle noise, minimal vignette */
|
||
.slide::before {
|
||
content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
|
||
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
|
||
background-repeat: repeat; background-size: 256px 256px; opacity: 0.015; mix-blend-mode: multiply;
|
||
}
|
||
.slide::after {
|
||
content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
|
||
background: radial-gradient(ellipse at center, transparent 55%, rgba(200,205,208,0.35) 100%);
|
||
}
|
||
|
||
@media (prefers-reduced-motion: reduce) {
|
||
*, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.2s !important; }
|
||
}
|
||
|
||
/* EGI light-theme components */
|
||
.egi-pill { display: inline-flex; align-items: center; gap: 6px; background: rgba(231,84,32,0.10); border: 1px solid rgba(231,84,32,0.30); border-radius: 999px; padding: 4px 14px; font-size: 0.72rem; color: #E75420; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; }
|
||
.orange-line { height: 3px; background: linear-gradient(90deg, #E75420, rgba(231,84,32,0.08)); border-radius: 2px; }
|
||
/* Light cards: white with shadow */
|
||
.card-egi { background: #ffffff; border: 1px solid rgba(70,83,91,0.10); border-radius: 12px; padding: 1.25rem 1.5rem; transition: transform 0.25s, box-shadow 0.25s; box-shadow: 0 2px 12px rgba(70,83,91,0.08); }
|
||
.card-egi:hover { transform: translateY(-4px); box-shadow: 0 8px 28px rgba(231,84,32,0.13); }
|
||
.timeline-line { position: absolute; left: 20px; top: 0; bottom: 0; width: 2px; background: linear-gradient(to bottom, #E75420, rgba(231,84,32,0.08)); }
|
||
.timeline-dot { width: 14px; height: 14px; border-radius: 50%; background: #E75420; box-shadow: 0 0 10px rgba(231,84,32,0.4); flex-shrink: 0; margin-left: 14px; }
|
||
.accent-border-l { border-left: 4px solid #E75420; }
|
||
.accent-border-l-grey { border-left: 4px solid #46535B; }
|
||
/* Title slide uses white card area */
|
||
.title-card { background: #ffffff; border-radius: 20px; padding: 3rem 4rem; box-shadow: 0 8px 40px rgba(70,83,91,0.10); display: inline-block; }
|
||
/* Subtle dot grid on title */
|
||
.deco-dots { position: absolute; inset: 0; background-image: radial-gradient(circle, rgba(231,84,32,0.12) 1px, transparent 1px); background-size: 32px 32px; pointer-events: none; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="mouse-spotlight" style="position:fixed;inset:0;z-index:99;pointer-events:none;"></div>
|
||
|
||
<div class="deck">
|
||
|
||
<!-- SLIDE 1: TITLE -->
|
||
<div class="slide slide-1 active" data-slide="1">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:600px;height:600px;top:-160px;right:-140px;background:#E75420;opacity:0.07;"></div>
|
||
<div class="blob" style="width:400px;height:400px;bottom:-110px;left:-100px;background:#46535B;opacity:0.07;"></div>
|
||
<div class="blob" style="width:260px;height:260px;top:50%;left:5%;background:#E75420;opacity:0.04;"></div>
|
||
</div>
|
||
<div class="deco-dots" style="z-index:1;opacity:0.6;"></div>
|
||
<div class="content" style="display:flex;flex-direction:column;align-items:center;text-align:center;">
|
||
<!-- Logo -->
|
||
<div class="reveal mb-5">
|
||
<img src=EGI-logo.jpg alt="EGI Logo" style="height:72px;object-fit:contain;">
|
||
</div>
|
||
<div class="orange-line w-28 mx-auto mb-5 reveal"></div>
|
||
<h1 style="font-family:'DM Sans';font-weight:800;font-size:clamp(2.2rem,5.2vw,3.8rem);color:#46535B;line-height:1.1;letter-spacing:-0.03em;" class="mb-3 reveal">Teed Substations for<br><span style="color:#E75420;">Germany's Energy Transition</span></h1>
|
||
<p style="font-size:clamp(0.82rem,1.3vw,1rem);color:#818A8F;letter-spacing:0.22em;text-transform:uppercase;font-weight:600;" class="reveal mb-6">Faster · Cheaper · Standardised</p>
|
||
<div class="flex items-center justify-center gap-4 flex-wrap reveal">
|
||
<span class="egi-pill">EGI Strategic Pitch</span>
|
||
<span class="egi-pill">Germany · 2026</span>
|
||
<span class="egi-pill">Full EPC</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 2: THE CHALLENGE -->
|
||
<div class="slide slide-2" data-slide="2">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:420px;height:420px;top:-100px;right:-100px;background:#E75420;opacity:0.07;"></div>
|
||
<div class="blob" style="width:280px;height:280px;bottom:-70px;left:-60px;background:#46535B;opacity:0.07;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">The Problem</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-2 reveal">Germany's Grid Connection Bottleneck</h2>
|
||
<p style="color:#818A8F;font-size:0.88rem;" class="mb-5 reveal">Renewable energy projects are ready — but grid connection backlogs are stalling the Energiewende</p>
|
||
<div class="grid grid-cols-3 gap-5">
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-size:2rem;font-weight:800;" class="mb-1" data-count="13" data-suffix=" GW">0</div>
|
||
<div style="font-size:0.75rem;color:#46535B;text-transform:uppercase;letter-spacing:0.08em;font-weight:600;" class="mb-1">PV to connect by 2030</div>
|
||
<div style="font-size:0.7rem;color:#818A8F;">50Hertz target</div>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-size:2rem;font-weight:800;" class="mb-1">€9B</div>
|
||
<div style="font-size:0.75rem;color:#46535B;text-transform:uppercase;letter-spacing:0.08em;font-weight:600;" class="mb-1">Annual economic drag</div>
|
||
<div style="font-size:0.7rem;color:#818A8F;">EU connection queue delays</div>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-size:2rem;font-weight:800;" class="mb-1">2030</div>
|
||
<div style="font-size:0.75rem;color:#46535B;text-transform:uppercase;letter-spacing:0.08em;font-weight:600;" class="mb-1">Stalled queue until</div>
|
||
<div style="font-size:0.7rem;color:#818A8F;">Some solar farms waiting</div>
|
||
</div>
|
||
</div>
|
||
<div class="mt-5 accent-border-l pl-5 py-3 reveal" style="background:rgba(231,84,32,0.05);border-radius:0 10px 10px 0;">
|
||
<p style="font-size:0.84rem;color:#46535B;line-height:1.65;">50Hertz must connect <strong style="color:#E75420;">13 GW PV, 11 GW batteries, 2 GW wind</strong> by 2030. Connection speed — not permits — is the critical path. Small teed substations are the fastest unlock.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 3: SOLUTION -->
|
||
<div class="slide slide-3" data-slide="3">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:420px;height:420px;top:-110px;left:-90px;background:#46535B;opacity:0.06;"></div>
|
||
<div class="blob" style="width:300px;height:300px;bottom:-70px;right:-60px;background:#E75420;opacity:0.06;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">The Solution</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-5 reveal">Teed Substation Deployment — The EGI Way</h2>
|
||
<div class="grid grid-cols-2 gap-5">
|
||
<div class="card-egi reveal">
|
||
<div style="font-size:1.7rem;margin-bottom:0.5rem;">🔌</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">T-Connection on Existing Lines</h3>
|
||
<p style="color:#818A8F;font-size:0.8rem;line-height:1.65;">Tap into existing 50Hertz transmission lines. No new line corridors — faster permitting, lower civil cost.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="font-size:1.7rem;margin-bottom:0.5rem;">🧩</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">Legonet™ Standardised Design</h3>
|
||
<p style="color:#818A8F;font-size:0.8rem;line-height:1.65;">Adapt Elia's proven Legonet modular standards to 50Hertz specifications — off-the-shelf components, repeatable layouts.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="font-size:1.7rem;margin-bottom:0.5rem;">⚙️</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">Full EPCM Scope</h3>
|
||
<p style="color:#818A8F;font-size:0.8rem;line-height:1.65;">Primary systems, Secondary systems, FACTS, Cables, Civil Works. Single accountability. One contract. Zero gaps.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="font-size:1.7rem;margin-bottom:0.5rem;">🏗️</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">€15M Budget Per Station</h3>
|
||
<p style="color:#818A8F;font-size:0.8rem;line-height:1.65;">Compact budget driven by standardisation. 2 stations in parallel. Construction start 2025. Third-party clients welcome.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 4: WHY EGI -->
|
||
<div class="slide slide-4" data-slide="4">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:380px;height:380px;top:-90px;right:-90px;background:#E75420;opacity:0.07;"></div>
|
||
<div class="blob" style="width:250px;height:250px;bottom:-60px;left:-55px;background:#46535B;opacity:0.06;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">Why EGI</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-5 reveal">Unique Positioning in the German Market</h2>
|
||
<div class="grid grid-cols-3 gap-4 mb-5">
|
||
<div class="card-egi reveal text-center">
|
||
<div style="color:#E75420;font-weight:800;font-size:1.9rem;" class="mb-1">300+</div>
|
||
<div style="font-size:0.7rem;color:#818A8F;text-transform:uppercase;letter-spacing:0.08em;">Projects in 20+ countries</div>
|
||
</div>
|
||
<div class="card-egi reveal text-center">
|
||
<div style="color:#E75420;font-weight:800;font-size:1.4rem;" class="mb-1">50Hertz</div>
|
||
<div style="font-size:0.7rem;color:#818A8F;text-transform:uppercase;letter-spacing:0.08em;">Sister TSO · Shared DNA</div>
|
||
</div>
|
||
<div class="card-egi reveal text-center">
|
||
<div style="color:#E75420;font-weight:800;font-size:1.5rem;" class="mb-1">30–380kV</div>
|
||
<div style="font-size:0.7rem;color:#818A8F;text-transform:uppercase;letter-spacing:0.08em;">Full voltage range</div>
|
||
</div>
|
||
</div>
|
||
<div class="space-y-3">
|
||
<div class="accent-border-l pl-4 py-2 reveal" style="background:rgba(231,84,32,0.05);border-radius:0 10px 10px 0;">
|
||
<span style="color:#E75420;font-weight:700;font-size:0.84rem;">✓ Insider knowledge of 50Hertz standards</span>
|
||
<p style="color:#818A8F;font-size:0.78rem;margin-top:2px;">EGI is a subsidiary of Elia Group, which owns 50Hertz. EGI understands technical requirements, workflows, and approval processes from the inside.</p>
|
||
</div>
|
||
<div class="accent-border-l pl-4 py-2 reveal" style="background:rgba(231,84,32,0.05);border-radius:0 10px 10px 0;">
|
||
<span style="color:#E75420;font-weight:700;font-size:0.84rem;">✓ Proven experience on similar projects</span>
|
||
<p style="color:#818A8F;font-size:0.78rem;margin-top:2px;">Gransee, Heinersdorf, Altdöbern, Teufelsbruch substations already delivered. Tapped substation and T-line expertise is battle-tested.</p>
|
||
</div>
|
||
<div class="accent-border-l-grey pl-4 py-2 reveal" style="background:rgba(70,83,91,0.05);border-radius:0 10px 10px 0;">
|
||
<span style="color:#46535B;font-weight:700;font-size:0.84rem;">✓ Existing framework agreements with 50Hertz</span>
|
||
<p style="color:#818A8F;font-size:0.78rem;margin-top:2px;">Active commercial relationship reduces procurement time and de-risks new projects from day one.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 5: LEGONET -->
|
||
<div class="slide slide-5" data-slide="5">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:440px;height:440px;top:-110px;right:-110px;background:#46535B;opacity:0.06;"></div>
|
||
<div class="blob" style="width:280px;height:280px;bottom:-65px;left:-60px;background:#E75420;opacity:0.07;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">Standardisation</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-1 reveal">Legonet Standard → 50Hertz Adaptation</h2>
|
||
<p style="color:#818A8F;font-size:0.84rem;" class="mb-5 reveal">Applying Elia Belgium's modular substation framework to the specific requirements of the 50Hertz network</p>
|
||
<div class="grid grid-cols-2 gap-6 mb-5">
|
||
<div class="reveal">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.73rem;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:0.75rem;border-bottom:2px solid rgba(231,84,32,0.25);padding-bottom:0.4rem;">Legonet Principles</div>
|
||
<ul class="space-y-2">
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#E75420;font-weight:700;">▶</span> Pre-engineered, repeatable substation blocks</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#E75420;font-weight:700;">▶</span> Off-the-shelf standardised equipment selections</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#E75420;font-weight:700;">▶</span> Factory-tested secondary systems panels</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#E75420;font-weight:700;">▶</span> Common civil and structural layouts</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#E75420;font-weight:700;">▶</span> Scalable: single or double transformer bays</li>
|
||
</ul>
|
||
</div>
|
||
<div class="reveal">
|
||
<div style="color:#46535B;font-weight:700;font-size:0.73rem;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:0.75rem;border-bottom:2px solid rgba(70,83,91,0.25);padding-bottom:0.4rem;">50Hertz Adaptation Layer</div>
|
||
<ul class="space-y-2">
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#46535B;font-weight:700;">▶</span> Aligned with 50Hertz grid codes and technical specs</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#46535B;font-weight:700;">▶</span> Teed / T-connection configurations (6 types)</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#46535B;font-weight:700;">▶</span> German regulatory permitting pathways pre-mapped</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#46535B;font-weight:700;">▶</span> Protection and SCADA integration with 50Hertz systems</li>
|
||
<li style="display:flex;align-items:center;gap:8px;font-size:0.82rem;color:#46535B;"><span style="color:#46535B;font-weight:700;">▶</span> Optimised for RES (PV, Wind, Battery) connection</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="accent-border-l pl-5 py-3 reveal" style="background:rgba(231,84,32,0.05);border-radius:0 10px 10px 0;">
|
||
<p style="font-size:0.82rem;color:#46535B;"><strong style="color:#E75420;">Key benefit:</strong> Standardisation cuts design time by ~40%, reduces procurement lead times, enables parallel delivery of 2 stations — at a target budget of <strong style="color:#E75420;">€15M per substation</strong>.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 6: TOPOLOGY VARIANTS -->
|
||
<div class="slide slide-6" data-slide="6">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:380px;height:380px;top:-90px;left:-90px;background:#46535B;opacity:0.06;"></div>
|
||
<div class="blob" style="width:260px;height:260px;bottom:-65px;right:-55px;background:#E75420;opacity:0.06;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">Technical Reference</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.5rem,3.4vw,2.2rem);color:#46535B;" class="mb-1 reveal">Teed Substation Topology Variants</h2>
|
||
<p style="color:#818A8F;font-size:0.82rem;" class="mb-4 reveal">Six standard configurations — from simple single-transformer tees to double-tee T-lines with multiple transformers</p>
|
||
<div class="grid grid-cols-3 gap-4">
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.79rem;margin-bottom:0.3rem;">TYPE 1 — Single Tee · 1 Transformer</div>
|
||
<p style="color:#818A8F;font-size:0.74rem;line-height:1.55;">Basic T-connection on existing line. Simplest, fastest deployment. Ideal for single RES generator.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.79rem;margin-bottom:0.3rem;">TYPE 2 — Double Tee · 2 Transformers</div>
|
||
<p style="color:#818A8F;font-size:0.74rem;line-height:1.55;">Twin tap on same line segment. Efficient for co-located wind + solar or battery + PV.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#46535B;font-weight:800;font-size:0.79rem;margin-bottom:0.3rem;">TYPE 3 — Line-End Tee · 1 Transformer</div>
|
||
<p style="color:#818A8F;font-size:0.74rem;line-height:1.55;">Termination at line end with tap. No loop-through required. Lower switchgear count.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#46535B;font-weight:800;font-size:0.79rem;margin-bottom:0.3rem;">TYPE 4 — Line-End Double Tee · 2 Tfmrs</div>
|
||
<p style="color:#818A8F;font-size:0.74rem;line-height:1.55;">Dual transformer at line terminus. Maximum capacity from a single corridor access point.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.79rem;margin-bottom:0.3rem;">TYPE 5 — T-Triangle · 1 Transformer</div>
|
||
<p style="color:#818A8F;font-size:0.74rem;line-height:1.55;">Delta configuration for redundancy. Preferred for critical loads or anchor generators.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.79rem;margin-bottom:0.3rem;">TYPE 6 — T-Triangle · 2 Transformers</div>
|
||
<p style="color:#818A8F;font-size:0.74rem;line-height:1.55;">Full N-1 secure triangle tee. Highest reliability. Used for large battery or multi-RES clusters.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 7: DELIVERY MODEL -->
|
||
<div class="slide slide-7" data-slide="7">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:400px;height:400px;top:-100px;right:-90px;background:#E75420;opacity:0.07;"></div>
|
||
<div class="blob" style="width:260px;height:260px;bottom:-65px;left:-60px;background:#46535B;opacity:0.06;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">Delivery Model</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-5 reveal">Full EPC — Total EGI Responsibility</h2>
|
||
<div class="grid grid-cols-2 gap-6">
|
||
<div>
|
||
<div style="color:#E75420;font-weight:700;font-size:0.73rem;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:1rem;border-bottom:2px solid rgba(231,84,32,0.2);padding-bottom:0.4rem;" class="reveal">EGI Full Scope</div>
|
||
<div class="space-y-3">
|
||
<div style="display:flex;align-items:center;gap:12px;" class="reveal">
|
||
<div style="width:32px;height:32px;border-radius:50%;background:rgba(231,84,32,0.10);border:1px solid rgba(231,84,32,0.25);display:flex;align-items:center;justify-content:center;color:#E75420;font-size:0.75rem;font-weight:800;flex-shrink:0;">1</div>
|
||
<div><div style="font-size:0.84rem;font-weight:700;color:#46535B;">Primary Systems</div><div style="font-size:0.74rem;color:#818A8F;">HV switchgear, transformers, busbars</div></div>
|
||
</div>
|
||
<div style="display:flex;align-items:center;gap:12px;" class="reveal">
|
||
<div style="width:32px;height:32px;border-radius:50%;background:rgba(231,84,32,0.10);border:1px solid rgba(231,84,32,0.25);display:flex;align-items:center;justify-content:center;color:#E75420;font-size:0.75rem;font-weight:800;flex-shrink:0;">2</div>
|
||
<div><div style="font-size:0.84rem;font-weight:700;color:#46535B;">Secondary Systems</div><div style="font-size:0.74rem;color:#818A8F;">Protection, control, SCADA, telecom</div></div>
|
||
</div>
|
||
<div style="display:flex;align-items:center;gap:12px;" class="reveal">
|
||
<div style="width:32px;height:32px;border-radius:50%;background:rgba(70,83,91,0.10);border:1px solid rgba(70,83,91,0.2);display:flex;align-items:center;justify-content:center;color:#46535B;font-size:0.75rem;font-weight:800;flex-shrink:0;">3</div>
|
||
<div><div style="font-size:0.84rem;font-weight:700;color:#46535B;">FACTS</div><div style="font-size:0.74rem;color:#818A8F;">Reactive power compensation, SVCs</div></div>
|
||
</div>
|
||
<div style="display:flex;align-items:center;gap:12px;" class="reveal">
|
||
<div style="width:32px;height:32px;border-radius:50%;background:rgba(70,83,91,0.10);border:1px solid rgba(70,83,91,0.2);display:flex;align-items:center;justify-content:center;color:#46535B;font-size:0.75rem;font-weight:800;flex-shrink:0;">4</div>
|
||
<div><div style="font-size:0.84rem;font-weight:700;color:#46535B;">Cables</div><div style="font-size:0.74rem;color:#818A8F;">Underground HV cables up to 400kV</div></div>
|
||
</div>
|
||
<div style="display:flex;align-items:center;gap:12px;" class="reveal">
|
||
<div style="width:32px;height:32px;border-radius:50%;background:rgba(70,83,91,0.10);border:1px solid rgba(70,83,91,0.2);display:flex;align-items:center;justify-content:center;color:#46535B;font-size:0.75rem;font-weight:800;flex-shrink:0;">5</div>
|
||
<div><div style="font-size:0.84rem;font-weight:700;color:#46535B;">Civil Works</div><div style="font-size:0.74rem;color:#818A8F;">Foundations, roads, fencing, site prep</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<div style="color:#E75420;font-weight:700;font-size:0.73rem;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:1rem;border-bottom:2px solid rgba(231,84,32,0.2);padding-bottom:0.4rem;" class="reveal">Scale-Up Strategy</div>
|
||
<div class="space-y-3">
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.82rem;margin-bottom:0.3rem;">🎯 Dedicated Specialised Team</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">A specialised T-substation cell within EGI — engineers trained on 50Hertz standards, permanently staffed to own the full delivery pipeline.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.82rem;margin-bottom:0.3rem;">🤝 Local Firm Partnership / Acquisition</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">EGI may team with or acquire a German engineering firm to rapidly scale capacity, access local labour, and accelerate permitting.</p>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#46535B;font-weight:700;font-size:0.82rem;margin-bottom:0.3rem;">📋 Third-Party Expansion</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">Framework extended to DSOs, industrial consumers, battery developers — under the same standardised model.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 8: TIMELINE -->
|
||
<div class="slide slide-8" data-slide="8">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:400px;height:400px;top:-100px;left:-100px;background:#E75420;opacity:0.06;"></div>
|
||
<div class="blob" style="width:260px;height:260px;bottom:-65px;right:-55px;background:#46535B;opacity:0.06;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">Programme</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-5 reveal">Rollout Roadmap</h2>
|
||
<div style="position:relative;padding-left:3rem;">
|
||
<div class="timeline-line"></div>
|
||
<div class="space-y-4">
|
||
<div style="display:flex;align-items:flex-start;gap:1rem;" class="reveal">
|
||
<div class="timeline-dot" style="margin-top:4px;"></div>
|
||
<div class="card-egi" style="flex:1;">
|
||
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:0.3rem;">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.84rem;">Phase 0 — Foundation</div>
|
||
<span class="egi-pill" style="font-size:0.64rem;">2025 Q1–Q2</span>
|
||
</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">Establish dedicated team · Adapt Legonet to 50Hertz specs · Formalise framework agreement · Site selection</p>
|
||
</div>
|
||
</div>
|
||
<div style="display:flex;align-items:flex-start;gap:1rem;" class="reveal">
|
||
<div class="timeline-dot" style="margin-top:4px;"></div>
|
||
<div class="card-egi" style="flex:1;">
|
||
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:0.3rem;">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.84rem;">Phase 1 — First Construction</div>
|
||
<span class="egi-pill" style="font-size:0.64rem;">2025 Q3–Q4</span>
|
||
</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">Construction start Station 1 · Procurement via existing framework · Standardised Legonet drawings · 18-month target commissioning</p>
|
||
</div>
|
||
</div>
|
||
<div style="display:flex;align-items:flex-start;gap:1rem;" class="reveal">
|
||
<div class="timeline-dot" style="margin-top:4px;"></div>
|
||
<div class="card-egi" style="flex:1;">
|
||
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:0.3rem;">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.84rem;">Phase 2 — Parallel Delivery</div>
|
||
<span class="egi-pill" style="font-size:0.64rem;">2026</span>
|
||
</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">Station 2 in parallel · Local firm teaming / acquisition finalised · Third-party pipeline activated</p>
|
||
</div>
|
||
</div>
|
||
<div style="display:flex;align-items:flex-start;gap:1rem;" class="reveal">
|
||
<div class="timeline-dot" style="margin-top:4px;"></div>
|
||
<div class="card-egi" style="flex:1;">
|
||
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:0.3rem;">
|
||
<div style="color:#E75420;font-weight:700;font-size:0.84rem;">Phase 3 — Scale</div>
|
||
<span class="egi-pill" style="font-size:0.64rem;">2027+</span>
|
||
</div>
|
||
<p style="font-size:0.75rem;color:#818A8F;">Industrialised delivery model · 4+ stations/year · Extended to other 50Hertz connection types · Full German market presence</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 9: VALUE PROPOSITION -->
|
||
<div class="slide slide-9" data-slide="9">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:440px;height:440px;top:-110px;right:-100px;background:#E75420;opacity:0.07;"></div>
|
||
<div class="blob" style="width:290px;height:290px;bottom:-75px;left:-65px;background:#46535B;opacity:0.06;"></div>
|
||
</div>
|
||
<div class="content">
|
||
<div class="flex items-center gap-3 mb-4 reveal">
|
||
<img src="EGI-logo.jpg" alt="EGI" style="height:28px;object-fit:contain;">
|
||
<span class="egi-pill">Value Proposition</span>
|
||
</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.7rem,3.8vw,2.6rem);color:#46535B;" class="mb-1 reveal">What EGI Brings to 50Hertz & Clients</h2>
|
||
<p style="color:#818A8F;font-size:0.84rem;" class="mb-5 reveal">Three distinct advantages no other contractor can replicate</p>
|
||
<div class="grid grid-cols-3 gap-5 mb-5">
|
||
<div class="card-egi reveal text-center">
|
||
<div style="font-size:2rem;margin-bottom:0.5rem;">⚡</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">Speed</h3>
|
||
<p style="font-size:0.77rem;color:#818A8F;">Standardised designs = no re-engineering. Existing framework cuts lead times. 2 stations in parallel.</p>
|
||
</div>
|
||
<div class="card-egi reveal text-center">
|
||
<div style="font-size:2rem;margin-bottom:0.5rem;">💶</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">Cost Reduction</h3>
|
||
<p style="font-size:0.77rem;color:#818A8F;">Legonet standardisation targets €15M/station. Engineering reuse reduces capex ~20–30% per successive project.</p>
|
||
</div>
|
||
<div class="card-egi reveal text-center">
|
||
<div style="font-size:2rem;margin-bottom:0.5rem;">🏅</div>
|
||
<h3 style="color:#E75420;font-weight:700;font-size:0.88rem;margin-bottom:0.4rem;">Quality Assurance</h3>
|
||
<p style="font-size:0.77rem;color:#818A8F;">Full EPC accountability. EGI carries 50Hertz DNA — delivering to the operator's own standards.</p>
|
||
</div>
|
||
</div>
|
||
<div class="grid grid-cols-2 gap-4">
|
||
<div class="accent-border-l pl-4 py-2 reveal" style="background:rgba(231,84,32,0.05);border-radius:0 10px 10px 0;">
|
||
<p style="font-size:0.78rem;color:#46535B;"><strong style="color:#E75420;">For 50Hertz:</strong> Faster RES integration, lower connection costs, trusted delivery partner with insider knowledge.</p>
|
||
</div>
|
||
<div class="accent-border-l-grey pl-4 py-2 reveal" style="background:rgba(70,83,91,0.05);border-radius:0 10px 10px 0;">
|
||
<p style="font-size:0.78rem;color:#46535B;"><strong style="color:#46535B;">For RES developers:</strong> Predictable timelines, bankable technical solution, single EPC contact — improving project IRR.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SLIDE 10: CTA -->
|
||
<div class="slide slide-10" data-slide="10">
|
||
<div class="gradient-mesh">
|
||
<div class="blob" style="width:600px;height:600px;top:-160px;right:-130px;background:#E75420;opacity:0.07;"></div>
|
||
<div class="blob" style="width:380px;height:380px;bottom:-110px;left:-90px;background:#46535B;opacity:0.07;"></div>
|
||
</div>
|
||
<div class="deco-dots" style="z-index:1;opacity:0.5;"></div>
|
||
<div class="content" style="display:flex;flex-direction:column;align-items:center;text-align:center;">
|
||
<div class="reveal mb-5">
|
||
<img src="EGI-logo.jpg" alt="EGI Logo" style="height:68px;object-fit:contain;">
|
||
</div>
|
||
<div class="orange-line w-32 mx-auto mb-4 reveal"></div>
|
||
<div class="egi-pill mx-auto w-fit mb-4 reveal">Next Steps</div>
|
||
<h2 style="font-family:'DM Sans';font-weight:800;font-size:clamp(1.8rem,4.5vw,3.4rem);color:#46535B;line-height:1.1;" class="mb-3 reveal">EGI — The Right Partner<br>for Germany's <span style="color:#E75420;">Grid Sprint</span></h2>
|
||
<p style="color:#818A8F;font-size:0.88rem;max-width:680px;margin:0 auto 1.8rem;" class="reveal">EGI proposes to establish a dedicated Teed Substation delivery unit in Germany, leveraging Legonet standards and 50Hertz insider expertise to connect renewable generators and loads faster and cheaper than any other contractor.</p>
|
||
<div class="grid grid-cols-3 gap-4 max-w-2xl mx-auto mb-6">
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.82rem;margin-bottom:0.3rem;">Step 1</div>
|
||
<div style="font-size:0.75rem;color:#818A8F;">Approve dedicated team formation & Legonet adaptation programme</div>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.82rem;margin-bottom:0.3rem;">Step 2</div>
|
||
<div style="font-size:0.75rem;color:#818A8F;">Identify first 2 pilot sites with 50Hertz pipeline</div>
|
||
</div>
|
||
<div class="card-egi reveal">
|
||
<div style="color:#E75420;font-weight:800;font-size:0.82rem;margin-bottom:0.3rem;">Step 3</div>
|
||
<div style="font-size:0.75rem;color:#818A8F;">Evaluate local German engineering firm partnership / acquisition</div>
|
||
</div>
|
||
</div>
|
||
<div class="orange-line w-32 mx-auto reveal mb-3"></div>
|
||
<p style="color:#818A8F;font-size:0.73rem;" class="reveal">Elia Grid International · eliagrid-int.com</p>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- NAVIGATION -->
|
||
<div class="nav-controls">
|
||
<button class="nav-btn" onclick="changeSlide(-1)">‹</button>
|
||
<div class="slide-dots" id="dots"></div>
|
||
<button class="nav-btn" onclick="changeSlide(1)">›</button>
|
||
<span class="slide-counter" id="counter">1 / 10</span>
|
||
</div>
|
||
|
||
<script>
|
||
let current = 1;
|
||
const total = document.querySelectorAll('.slide').length;
|
||
const dotsContainer = document.getElementById('dots');
|
||
const counter = document.getElementById('counter');
|
||
for (let i = 1; i <= total; i++) { const dot = document.createElement('div'); dot.className = 'dot' + (i === 1 ? ' active' : ''); dot.onclick = () => goToSlide(i); dotsContainer.appendChild(dot); }
|
||
function goToSlide(n) {
|
||
const prev = document.querySelector('.slide.active');
|
||
const next = document.querySelector(`.slide[data-slide="${n}"]`);
|
||
if (prev) prev.classList.remove('active');
|
||
if (next) { next.classList.add('active'); animateSlide(next); }
|
||
current = n; updateNav();
|
||
}
|
||
function changeSlide(dir) { let next = current + dir; if (next < 1) next = total; if (next > total) next = 1; goToSlide(next); }
|
||
function updateNav() { document.querySelectorAll('.dot').forEach((d, i) => { d.classList.toggle('active', i + 1 === current); }); counter.textContent = current + ' / ' + total; }
|
||
document.addEventListener('keydown', (e) => { if (e.key === 'ArrowRight' || e.key === ' ') { e.preventDefault(); changeSlide(1); } if (e.key === 'ArrowLeft') { e.preventDefault(); changeSlide(-1); } });
|
||
let touchStartX = 0;
|
||
document.addEventListener('touchstart', (e) => { touchStartX = e.touches[0].clientX; });
|
||
document.addEventListener('touchend', (e) => { const diff = touchStartX - e.changedTouches[0].clientX; if (Math.abs(diff) > 50) changeSlide(diff > 0 ? 1 : -1); });
|
||
|
||
function animateSlide(slide) {
|
||
slide.querySelectorAll('.reveal').forEach((el, i) => {
|
||
el.style.transition = 'none'; el.style.opacity = '0'; el.style.transform = 'translateY(20px)';
|
||
el.offsetHeight;
|
||
const delay = i * 0.08;
|
||
el.style.transition = `opacity 0.35s ease ${delay}s, transform 0.35s ease ${delay}s`;
|
||
el.style.opacity = '1'; el.style.transform = 'translateY(0px)';
|
||
});
|
||
animateSlideEffects(slide);
|
||
}
|
||
function animateSlideEffects(slide) {
|
||
slide.querySelectorAll('[data-count]:not(.counted)').forEach(el => {
|
||
el.classList.add('counted');
|
||
const target = parseInt(el.dataset.count), suffix = el.dataset.suffix || '';
|
||
let cur = 0; const step = target / 40;
|
||
const timer = setInterval(() => { cur += step; if (cur >= target) { cur = target; clearInterval(timer); } el.textContent = Math.round(cur).toLocaleString() + suffix; }, 30);
|
||
});
|
||
}
|
||
document.addEventListener('mousemove', (e) => {
|
||
const s = document.querySelector('.mouse-spotlight');
|
||
if (s) s.style.background = `radial-gradient(600px circle at ${e.clientX}px ${e.clientY}px, rgba(231,84,32,0.04), transparent 40%)`;
|
||
});
|
||
window.initParticles = function(canvas, options) {
|
||
if (!canvas) return;
|
||
const ctx = canvas.getContext('2d');
|
||
canvas.width = canvas.offsetWidth; canvas.height = canvas.offsetHeight;
|
||
const interactive = options.interactive !== false, count = options.count || (interactive ? 40 : 14);
|
||
let mx = -1000, my = -1000;
|
||
const particles = Array.from({ length: count }, () => ({
|
||
x: Math.random() * canvas.width, y: Math.random() * canvas.height,
|
||
vx: (Math.random() - 0.5) * 0.25, vy: (Math.random() - 0.5) * 0.25,
|
||
size: Math.random() * 2 + 0.6, alpha: Math.random() * 0.18 + 0.05,
|
||
orange: Math.random() > 0.5
|
||
}));
|
||
if (interactive) {
|
||
canvas.addEventListener('mousemove', (e) => { const r = canvas.getBoundingClientRect(); mx = e.clientX - r.left; my = e.clientY - r.top; });
|
||
canvas.addEventListener('mouseleave', () => { mx = -1000; my = -1000; });
|
||
}
|
||
(function animate() {
|
||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||
particles.forEach(p => {
|
||
if (interactive) { const dx = p.x - mx, dy = p.y - my, dist = Math.sqrt(dx*dx+dy*dy); if (dist < 100) { const f = (100-dist)/100*1.5; p.vx += (dx/dist)*f*0.08; p.vy += (dy/dist)*f*0.08; } }
|
||
p.vx *= 0.98; p.vy *= 0.98; p.x += p.vx; p.y += p.vy;
|
||
if (p.x < 0) p.x = canvas.width; if (p.x > canvas.width) p.x = 0;
|
||
if (p.y < 0) p.y = canvas.height; if (p.y > canvas.height) p.y = 0;
|
||
ctx.beginPath(); ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);
|
||
ctx.fillStyle = p.orange ? `rgba(231,84,32,${p.alpha})` : `rgba(70,83,91,${p.alpha})`;
|
||
ctx.fill();
|
||
});
|
||
requestAnimationFrame(animate);
|
||
})();
|
||
};
|
||
document.querySelectorAll('.particle-canvas').forEach(c => window.initParticles(c, { interactive: true, count: 40 }));
|
||
document.querySelectorAll('.particle-canvas-ambient').forEach(c => window.initParticles(c, { interactive: false, count: 14 }));
|
||
try { animateSlide(document.querySelector('.slide.active')); } catch(e) { console.warn(e); }
|
||
</script>
|
||
</body>
|
||
</html> |