diff --git a/.htaccess b/.htaccess
index f40a73c..f43dd34 100644
--- a/.htaccess
+++ b/.htaccess
@@ -9,6 +9,72 @@ RewriteEngine On
Header always set Referrer-Policy "strict-origin-when-cross-origin"
+# MIME-Types für moderne Web-Assets
+
+ AddType font/woff2 .woff2
+ AddType font/woff .woff
+ AddType image/webp .webp
+ AddType image/svg+xml .svg .svgz
+
+
+# Performance: Gzip-Kompression (mod_deflate)
+
+ AddOutputFilterByType DEFLATE text/plain
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/xml
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE text/javascript
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/x-javascript
+ AddOutputFilterByType DEFLATE application/json
+ AddOutputFilterByType DEFLATE image/svg+xml
+ AddOutputFilterByType DEFLATE font/opentype
+ AddOutputFilterByType DEFLATE font/otf
+ AddOutputFilterByType DEFLATE font/ttf
+
+
+# Performance: Browser-Caching (mod_expires & mod_headers)
+
+ ExpiresActive On
+ ExpiresDefault "access plus 1 month"
+
+ # Webfonts (1 Jahr)
+ ExpiresByType font/woff2 "access plus 1 year"
+ ExpiresByType font/woff "access plus 1 year"
+ ExpiresByType font/ttf "access plus 1 year"
+ ExpiresByType font/otf "access plus 1 year"
+ ExpiresByType application/font-woff2 "access plus 1 year"
+
+ # Bilder & Icons (1 Monat bis 1 Jahr)
+ ExpiresByType image/x-icon "access plus 1 year"
+ ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
+ ExpiresByType image/webp "access plus 1 month"
+ ExpiresByType image/png "access plus 1 month"
+ ExpiresByType image/jpeg "access plus 1 month"
+ ExpiresByType image/gif "access plus 1 month"
+ ExpiresByType image/svg+xml "access plus 1 month"
+
+ # CSS & JavaScript (1 Woche)
+ ExpiresByType text/css "access plus 1 week"
+ ExpiresByType application/javascript "access plus 1 week"
+ ExpiresByType text/javascript "access plus 1 week"
+
+ # HTML & dynamische Daten nicht aggressiv cachen
+ ExpiresByType text/html "access plus 0 seconds"
+
+
+
+
+ Header set Cache-Control "public, max-age=31536000, immutable"
+
+
+ Header set Cache-Control "public, max-age=604800, stale-while-revalidate=86400"
+
+
+
# Interne PHP-, Vendor- und Template-Verzeichnisse vor direktem Webzugriff sperren
RewriteRule ^(home|philcore)/(app|core|views|src)/ - [F,L]
RewriteRule ^(.*/)?vendor/ - [F,L]
diff --git a/home/public/css/style.css b/home/public/css/style.css
index 3a1f546..adcf991 100644
--- a/home/public/css/style.css
+++ b/home/public/css/style.css
@@ -1,4 +1,3 @@
-@import "app.css";
:root {
--bg-base: #020617;
}
@@ -43,27 +42,30 @@ body {
background: #f43f5e;
color: white;
}
-/* Animations */
+/* Animations (GPU Accelerated) */
@keyframes blob-bounce {
- 0%, 100% { transform: translate(0, 0) scale(1); }
- 33% { transform: translate(30px, -50px) scale(1.1); }
- 66% { transform: translate(-20px, 20px) scale(0.9); }
+ 0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
+ 33% { transform: translate3d(30px, -50px, 0) scale(1.1); }
+ 66% { transform: translate3d(-20px, 20px, 0) scale(0.9); }
}
@keyframes particle-drift {
- 0% { transform: translateY(0) rotate(0deg); opacity: 0; }
+ 0% { transform: translate3d(0, 0, 0) rotate(0deg); opacity: 0; }
50% { opacity: 0.5; }
- 100% { transform: translateY(-100vh) rotate(360deg); opacity: 0; }
+ 100% { transform: translate3d(0, -100vh, 0) rotate(360deg); opacity: 0; }
}
@keyframes invader-patrol {
- 0%, 100% { transform: translateX(-12px); }
- 50% { transform: translateX(12px); }
+ 0%, 100% { transform: translate3d(-12px, 0, 0); }
+ 50% { transform: translate3d(12px, 0, 0); }
}
.animate-blob {
animation: blob-bounce 25s infinite alternate ease-in-out;
filter: blur(80px);
+ will-change: transform;
+ backface-visibility: hidden;
}
.animate-invader {
animation: invader-patrol 4s infinite ease-in-out;
+ will-change: transform;
}
.particle {
position: fixed;
@@ -73,6 +75,7 @@ body {
z-index: 1;
animation: particle-drift var(--p-duration) infinite linear;
animation-delay: var(--p-delay);
+ will-change: transform, opacity;
}
/* UI Components */
.bullshit-terminal {
diff --git a/home/views/home.php b/home/views/home.php
index e52aabc..c1cedba 100644
--- a/home/views/home.php
+++ b/home/views/home.php
@@ -96,5 +96,5 @@
-
+
\ No newline at end of file
diff --git a/home/views/inc/header.php b/home/views/inc/header.php
index d722654..31a0cd0 100644
--- a/home/views/inc/header.php
+++ b/home/views/inc/header.php
@@ -22,6 +22,9 @@ $_SESSION['particles_initialized'] = true;
+
+
+