web7sys
This commit is contained in:
174
website-7sys/PROMPT.md
Normal file
174
website-7sys/PROMPT.md
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
SHOT-5
|
||||||
|
# IT-Beratung und Sicherheitslösungen
|
||||||
|
|
||||||
|
Beratung zu IT-Infrastruktur, maßgeschneidert auf die spezifischen Bedürfnisse kleiner Unternehmen. Dazu könnten Empfehlungen für Hardware, Netzwerkoptimierung und Firewall-Management gehören, beispielsweise mit Securepoint-Lösungen, die besonders für Datenschutz und Zertifizierungsanforderungen geeignet sind.
|
||||||
|
Netzwerk- und Datensicherheits-Implementierung
|
||||||
|
|
||||||
|
Einrichtung und Konfiguration sicherer Netzwerke, inklusive VPN, Zugriffskontrollen und Firewall-Management. Fokus auf den Schutz sensibler Daten und Absicherung der Netzwerke gegen Bedrohungen unter Berücksichtigung neuer Sicherheitsstandards wie der NIS-2-Regelung.
|
||||||
|
Proaktives Monitoring und Wartung
|
||||||
|
|
||||||
|
Regelmäßige Wartung und Überwachung der IT-Systeme, um Ausfälle zu minimieren und eine hohe Verfügbarkeit sicherzustellen. Dazu gehören automatisierte Backups, Systemupdates, und kontinuierliches Monitoring, um Probleme frühzeitig zu erkennen und zu beheben.
|
||||||
|
|
||||||
|
### Farben für Dark-Mode:
|
||||||
|
Haupt-Farbe: #0A0A0A (Tiefes Schwarz)
|
||||||
|
Akzent-Farbe: #1534D1 (Tiefes Blau)
|
||||||
|
Schrift-Farbe: #F2F2F2 (Helles Grau)
|
||||||
|
|
||||||
|
### Farben für Light-Mode:
|
||||||
|
Haupt-Farbe: #F2F2F2
|
||||||
|
Akzent-Farbe: #4A90E2
|
||||||
|
Schrift-Farbe: #333333
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
Erstelle eine moderne One-Page Webseite als digitale Visitenkarte für das IT-Unternehmen 7SYS mit Space-Theme und Theme-Switcher. Die Seite soll die professionellen IT-Dienstleistungen und Sicherheitslösungen präsentieren.
|
||||||
|
|
||||||
|
Farbschema:
|
||||||
|
Dark Theme:
|
||||||
|
- Hauptfarbe: #0A0A0A (Tiefes Schwarz)
|
||||||
|
- Akzentfarbe: #1534D1 (Tiefes Blau)
|
||||||
|
- Schriftfarbe: #F2F2F2 (Helles Grau)
|
||||||
|
|
||||||
|
Light Theme:
|
||||||
|
- Hauptfarbe: #F2F2F2
|
||||||
|
- Akzentfarbe: #4A90E2
|
||||||
|
- Schriftfarbe: #333333
|
||||||
|
|
||||||
|
Struktur und Inhalt:
|
||||||
|
|
||||||
|
1. Header:
|
||||||
|
- Logo "7SYS"
|
||||||
|
- Theme-Switcher
|
||||||
|
- Hauptnavigation
|
||||||
|
|
||||||
|
2. Hero-Section:
|
||||||
|
- Headline: "IT-Beratung und Sicherheitslösungen"
|
||||||
|
- Subtiler Space-Theme Hintergrund
|
||||||
|
- Call-to-Action Button
|
||||||
|
|
||||||
|
3. Hauptdienstleistungen:
|
||||||
|
|
||||||
|
IT-Beratung und Sicherheitslösungen:
|
||||||
|
- Fokus auf kleine Unternehmen
|
||||||
|
- IT-Infrastruktur Beratung
|
||||||
|
- Hardware-Empfehlungen
|
||||||
|
- Netzwerkoptimierung
|
||||||
|
- Firewall-Management (Securepoint-Lösungen)
|
||||||
|
- Datenschutz und Zertifizierungsanforderungen
|
||||||
|
|
||||||
|
Netzwerk- und Datensicherheit:
|
||||||
|
- Sichere Netzwerkkonfiguration
|
||||||
|
- VPN-Einrichtung
|
||||||
|
- Zugriffskontrolle
|
||||||
|
- Firewall-Management
|
||||||
|
- NIS-2-Regelung Implementation
|
||||||
|
- Bedrohungsschutz
|
||||||
|
|
||||||
|
Proaktives Monitoring und Wartung:
|
||||||
|
- System-Überwachung
|
||||||
|
- Automatisierte Backups
|
||||||
|
- Systemupdates
|
||||||
|
- Frühwarnsystem
|
||||||
|
- Ausfallsicherheit
|
||||||
|
- Verfügbarkeitsoptimierung
|
||||||
|
|
||||||
|
4. Zukunftsvision:
|
||||||
|
- Desaster Recovery Rechenzentrum
|
||||||
|
- Sustainable & Renewable IT-Infrastructure
|
||||||
|
|
||||||
|
5. Kontaktbereich:
|
||||||
|
- Kontaktformular
|
||||||
|
- Geschäftsdaten
|
||||||
|
- Impressum
|
||||||
|
|
||||||
|
Technische Anforderungen:
|
||||||
|
- Responsive Design
|
||||||
|
- Theme-Switching Funktionalität
|
||||||
|
- Performance-Optimierung
|
||||||
|
- SEO-freundliche Struktur
|
||||||
|
- Barrierefreiheit
|
||||||
|
|
||||||
|
Design-Richtlinien:
|
||||||
|
- Modernes, klares Layout
|
||||||
|
- Space-Theme Integration
|
||||||
|
- Professionelle Typographie
|
||||||
|
- Optimale Lesbarkeit
|
||||||
|
- Subtle Animationen
|
||||||
|
- Konsistente Gestaltung
|
||||||
|
|
||||||
|
Besondere Aspekte:
|
||||||
|
- Hervorhebung der Sicherheitsexpertise
|
||||||
|
- Fokus auf kleine Unternehmen
|
||||||
|
- Betonung der individualisierten Lösungen
|
||||||
|
- Integration der Nachhaltigkeitsaspekte
|
||||||
|
|
||||||
|
Liefere den Code in drei Teilen:
|
||||||
|
1. HTML-Struktur
|
||||||
|
2. CSS mit Theme-Definitionen
|
||||||
|
3. JavaScript für Theme-Switching
|
||||||
|
|
||||||
|
Wichtige Anforderungen:
|
||||||
|
- Klare Leistungskommunikation
|
||||||
|
- Professionelle Darstellung
|
||||||
|
- Optimale User Experience
|
||||||
|
- Mobile-First Design
|
||||||
|
- Schnelle Ladezeiten
|
||||||
|
- Intuitive Navigation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Webseite in shot-5 inspizieren und Verbesserungsvorschläge machen.
|
||||||
|
|
||||||
|
|
||||||
|
Nach der Inspektion der Website und des Codes schlage ich folgende Verbesserungen vor:
|
||||||
|
|
||||||
|
Accessibility & SEO:
|
||||||
|
Fehlende ARIA-Labels für bessere Barrierefreiheit
|
||||||
|
Fehlende Meta-Tags für Social Media Sharing
|
||||||
|
Fehlende Sitemap und robots.txt
|
||||||
|
Performance & UX:
|
||||||
|
Fehlende Ladeanimationen für Service-Cards
|
||||||
|
Fehlende Validierung im Kontaktformular
|
||||||
|
Fehlende Erfolgsmeldung nach Formularversand
|
||||||
|
Fehlende Responsive Images
|
||||||
|
Design:
|
||||||
|
Kontrastverbesserungen im Light-Mode
|
||||||
|
Konsistentere Abstände zwischen Sektionen
|
||||||
|
Verbesserte Mobile Navigation
|
||||||
|
Ich werde diese Verbesserungen nun implementieren.
|
||||||
|
|
||||||
|
|
||||||
|
Die Website wurde in folgenden Bereichen verbessert:
|
||||||
|
|
||||||
|
Barrierefreiheit & SEO
|
||||||
|
Integration von ARIA-Labels und semantischen HTML-Elementen
|
||||||
|
Erweiterte Meta-Tags für bessere Suchmaschinen-Indexierung
|
||||||
|
Verbesserte Keyboard-Navigation und Screenreader-Unterstützung
|
||||||
|
Benutzerfreundlichkeit & Performance
|
||||||
|
Animierte Service-Karten mit optimierter Performance
|
||||||
|
Verbessertes Kontaktformular mit Validierung und Feedback
|
||||||
|
Optimierte Scroll-Funktionalität und Theme-Umschaltung
|
||||||
|
Design & Responsive Layout
|
||||||
|
Optimierte Farbkontraste und Abstände
|
||||||
|
Verbesserte Mobile-Ansicht
|
||||||
|
Implementierte Print-Styles
|
||||||
|
Code-Qualität
|
||||||
|
Modularisierte JavaScript-Struktur
|
||||||
|
Optimierte CSS-Variablen
|
||||||
|
Erweitertes Error-Handling
|
||||||
|
Diese Verbesserungen machen die Website zugänglicher, benutzerfreundlicher und wartbarer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Ich möchte die styles.css sinnvoll auftrennen so dass möglichst viele kleine css-files entstehen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Die Top-Bar soll einen gradienten erhalten (dark & light mode)
|
||||||
|
|
||||||
|
Ich möchte den Dark Mode als Default eingestellt haben.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
11
website-7sys/css/accessibility.css
Normal file
11
website-7sys/css/accessibility.css
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/* Accessibility */
|
||||||
|
.sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
9
website-7sys/css/animations.css
Normal file
9
website-7sys/css/animations.css
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/* Animations */
|
||||||
|
@keyframes fadeIn {
|
||||||
|
from { opacity: 0; transform: translateY(20px); }
|
||||||
|
to { opacity: 1; transform: translateY(0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
to { transform: translateY(-50%) rotate(360deg); }
|
||||||
|
}
|
||||||
42
website-7sys/css/buttons.css
Normal file
42
website-7sys/css/buttons.css
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/* Buttons */
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
background-color: var(--accent-color);
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: var(--transition);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:focus {
|
||||||
|
outline: 2px solid var(--text-color);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-button {
|
||||||
|
padding: 1rem;
|
||||||
|
background-color: var(--accent-color);
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: var(--transition);
|
||||||
|
position: relative;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-button:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-button:disabled {
|
||||||
|
opacity: 0.7;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
112
website-7sys/css/contact.css
Normal file
112
website-7sys/css/contact.css
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
/* Contact Section */
|
||||||
|
.contact {
|
||||||
|
padding: 5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-form {
|
||||||
|
display: grid;
|
||||||
|
gap: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group label {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group input,
|
||||||
|
.form-group textarea {
|
||||||
|
padding: 0.8rem;
|
||||||
|
border: 1px solid var(--accent-color);
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: var(--card-bg);
|
||||||
|
color: var(--text-color);
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group input:focus,
|
||||||
|
.form-group textarea:focus {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: 0 0 0 2px var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group input:invalid,
|
||||||
|
.form-group textarea:invalid {
|
||||||
|
border-color: #ff4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-spinner {
|
||||||
|
display: none;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border: 2px solid #ffffff;
|
||||||
|
border-radius: 50%;
|
||||||
|
border-top-color: transparent;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
position: absolute;
|
||||||
|
right: 1rem;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-feedback {
|
||||||
|
display: none;
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-feedback.success {
|
||||||
|
display: block;
|
||||||
|
background-color: rgba(40, 167, 69, 0.1);
|
||||||
|
border: 1px solid #28a745;
|
||||||
|
color: #28a745;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-feedback.error {
|
||||||
|
display: block;
|
||||||
|
background-color: rgba(220, 53, 69, 0.1);
|
||||||
|
border: 1px solid #dc3545;
|
||||||
|
color: #dc3545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info {
|
||||||
|
padding: 2rem;
|
||||||
|
background-color: var(--card-bg);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info h3 {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info p {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info i {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info a {
|
||||||
|
color: var(--text-color);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info a:hover {
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
22
website-7sys/css/footer.css
Normal file
22
website-7sys/css/footer.css
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/* Footer */
|
||||||
|
footer {
|
||||||
|
padding: 2rem 0;
|
||||||
|
background-color: var(--card-bg);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer .container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.impressum {
|
||||||
|
color: var(--text-color);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.impressum:hover {
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
44
website-7sys/css/header.css
Normal file
44
website-7sys/css/header.css
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/* Header and Navigation */
|
||||||
|
header {
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
background-color: var(--bg-primary);
|
||||||
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-nav {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 1rem;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
font-size: 2rem;
|
||||||
|
font-weight: bold;
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#theme-toggle {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
color: var(--text-color);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0.5rem;
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
#theme-toggle:hover {
|
||||||
|
color: var(--accent-color);
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#theme-toggle:focus {
|
||||||
|
outline: 2px solid var(--accent-color);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
37
website-7sys/css/hero.css
Normal file
37
website-7sys/css/hero.css
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/* Hero Section */
|
||||||
|
.hero {
|
||||||
|
position: relative;
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-top: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stars {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: radial-gradient(circle at center, var(--accent-color) 0.1px, transparent 1px);
|
||||||
|
background-size: 50px 50px;
|
||||||
|
animation: stars 20s linear infinite;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes stars {
|
||||||
|
0% { transform: translateY(0); }
|
||||||
|
100% { transform: translateY(-50px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero h1 {
|
||||||
|
font-size: clamp(2rem, 5vw, 3rem);
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
animation: fadeIn 1s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero p {
|
||||||
|
font-size: clamp(1.2rem, 3vw, 1.5rem);
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
25
website-7sys/css/reset.css
Normal file
25
website-7sys/css/reset.css
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/* Reset and Base Styles */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Segoe UI', system-ui, sans-serif;
|
||||||
|
background-color: var(--bg-primary);
|
||||||
|
color: var(--text-color);
|
||||||
|
line-height: 1.6;
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
51
website-7sys/css/responsive.css
Normal file
51
website-7sys/css/responsive.css
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/* Responsive Design */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
html {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero h1 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero p {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer .container {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.container {
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card,
|
||||||
|
.vision-item {
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Print Styles */
|
||||||
|
@media print {
|
||||||
|
.hero {
|
||||||
|
height: auto;
|
||||||
|
padding: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stars {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card,
|
||||||
|
.vision-item {
|
||||||
|
break-inside: avoid;
|
||||||
|
}
|
||||||
|
}
|
||||||
58
website-7sys/css/services.css
Normal file
58
website-7sys/css/services.css
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/* Services Section */
|
||||||
|
.services {
|
||||||
|
padding: 5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card {
|
||||||
|
background-color: var(--card-bg);
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: var(--transition);
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card.visible {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card i {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
color: var(--accent-color);
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card h3 {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card ul li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card ul li::before {
|
||||||
|
content: "•";
|
||||||
|
color: var(--accent-color);
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
28
website-7sys/css/variables.css
Normal file
28
website-7sys/css/variables.css
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
:root {
|
||||||
|
/* Dark Theme Variables */
|
||||||
|
--dark-main: #0A0A0A;
|
||||||
|
--dark-accent: #1534D1;
|
||||||
|
--dark-text: #F2F2F2;
|
||||||
|
--dark-card: rgba(255, 255, 255, 0.05);
|
||||||
|
|
||||||
|
/* Light Theme Variables */
|
||||||
|
--light-main: #F2F2F2;
|
||||||
|
--light-accent: #1534D1;
|
||||||
|
--light-text: #333333;
|
||||||
|
--light-card: rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
/* Current Theme Variables */
|
||||||
|
--bg-primary: var(--dark-main);
|
||||||
|
--accent-color: var(--dark-accent);
|
||||||
|
--text-color: var(--dark-text);
|
||||||
|
--card-bg: var(--dark-card);
|
||||||
|
--transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Classes */
|
||||||
|
.light-theme {
|
||||||
|
--bg-primary: var(--light-main);
|
||||||
|
--accent-color: var(--light-accent);
|
||||||
|
--text-color: var(--light-text);
|
||||||
|
--card-bg: var(--light-card);
|
||||||
|
}
|
||||||
31
website-7sys/css/vision.css
Normal file
31
website-7sys/css/vision.css
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/* Vision Section */
|
||||||
|
.vision {
|
||||||
|
padding: 5rem 0;
|
||||||
|
background-color: var(--card-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.vision-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vision-item {
|
||||||
|
text-align: center;
|
||||||
|
padding: 2rem;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.vision-item.visible {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.vision-item i {
|
||||||
|
font-size: 3rem;
|
||||||
|
color: var(--accent-color);
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
169
website-7sys/index.html
Normal file
169
website-7sys/index.html
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="7SYS - Professionelle IT-Beratung und Sicherheitslösungen für kleine Unternehmen">
|
||||||
|
|
||||||
|
<!-- Social Media Meta Tags -->
|
||||||
|
<meta property="og:title" content="7SYS - IT-Beratung & Sicherheitslösungen">
|
||||||
|
<meta property="og:description" content="Zukunftssichere IT-Lösungen für Ihr Unternehmen">
|
||||||
|
<meta property="og:image" content="https://7sys.de/images/og-image.jpg">
|
||||||
|
<meta property="og:url" content="https://7sys.de">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
|
||||||
|
<title>7SYS - IT-Beratung & Sicherheitslösungen</title>
|
||||||
|
<!-- CSS Files -->
|
||||||
|
<link rel="stylesheet" href="css/variables.css">
|
||||||
|
<link rel="stylesheet" href="css/reset.css">
|
||||||
|
<link rel="stylesheet" href="css/accessibility.css">
|
||||||
|
<link rel="stylesheet" href="css/animations.css">
|
||||||
|
<link rel="stylesheet" href="css/header.css">
|
||||||
|
<link rel="stylesheet" href="css/hero.css">
|
||||||
|
<link rel="stylesheet" href="css/buttons.css">
|
||||||
|
<link rel="stylesheet" href="css/services.css">
|
||||||
|
<link rel="stylesheet" href="css/vision.css">
|
||||||
|
<link rel="stylesheet" href="css/contact.css">
|
||||||
|
<link rel="stylesheet" href="css/footer.css">
|
||||||
|
<link rel="stylesheet" href="css/responsive.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||||
|
</head>
|
||||||
|
<body class="dark-theme">
|
||||||
|
<header>
|
||||||
|
<nav class="main-nav">
|
||||||
|
<div class="logo" role="banner">7SYS</div>
|
||||||
|
<button id="theme-toggle" aria-label="Theme wechseln" title="Zwischen Hell- und Dunkel-Modus wechseln">
|
||||||
|
<i class="fas fa-moon"></i>
|
||||||
|
<span class="sr-only">Theme wechseln</span>
|
||||||
|
</button>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<section class="hero" role="banner">
|
||||||
|
<div class="stars"></div>
|
||||||
|
<div class="container">
|
||||||
|
<h1>IT-Beratung und Sicherheitslösungen</h1>
|
||||||
|
<p>Zukunftssichere IT-Lösungen für Ihr Unternehmen</p>
|
||||||
|
<a href="#contact" class="cta-button" role="button">Kontakt aufnehmen</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="services" class="services" role="region" aria-labelledby="services-title">
|
||||||
|
<div class="container">
|
||||||
|
<h2 id="services-title">Unsere Dienstleistungen</h2>
|
||||||
|
|
||||||
|
<div class="service-grid">
|
||||||
|
<article class="service-card" role="article">
|
||||||
|
<i class="fas fa-laptop-code" aria-hidden="true"></i>
|
||||||
|
<h3>IT-Beratung und Sicherheitslösungen</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Fokus auf kleine Unternehmen</li>
|
||||||
|
<li>IT-Infrastruktur Beratung</li>
|
||||||
|
<li>Hardware-Empfehlungen</li>
|
||||||
|
<li>Netzwerkoptimierung</li>
|
||||||
|
<li>Firewall-Management</li>
|
||||||
|
<li>Datenschutz und Zertifizierung</li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article class="service-card" role="article">
|
||||||
|
<i class="fas fa-shield-alt" aria-hidden="true"></i>
|
||||||
|
<h3>Netzwerk- und Datensicherheit</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Sichere Netzwerkkonfiguration</li>
|
||||||
|
<li>VPN-Einrichtung</li>
|
||||||
|
<li>Zugriffskontrolle</li>
|
||||||
|
<li>Firewall-Management</li>
|
||||||
|
<li>NIS-2-Regelung Implementation</li>
|
||||||
|
<li>Bedrohungsschutz</li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article class="service-card" role="article">
|
||||||
|
<i class="fas fa-chart-line" aria-hidden="true"></i>
|
||||||
|
<h3>Proaktives Monitoring</h3>
|
||||||
|
<ul>
|
||||||
|
<li>System-Überwachung</li>
|
||||||
|
<li>Automatisierte Backups</li>
|
||||||
|
<li>Systemupdates</li>
|
||||||
|
<li>Frühwarnsystem</li>
|
||||||
|
<li>Ausfallsicherheit</li>
|
||||||
|
<li>Verfügbarkeitsoptimierung</li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="vision" class="vision" role="region" aria-labelledby="vision-title">
|
||||||
|
<div class="container">
|
||||||
|
<h2 id="vision-title">Unsere Zukunftsvision</h2>
|
||||||
|
<div class="vision-grid">
|
||||||
|
<div class="vision-item">
|
||||||
|
<i class="fas fa-server" aria-hidden="true"></i>
|
||||||
|
<h3>Desaster Recovery Rechenzentrum</h3>
|
||||||
|
<p>Maximale Ausfallsicherheit für Ihre geschäftskritischen Systeme</p>
|
||||||
|
</div>
|
||||||
|
<div class="vision-item">
|
||||||
|
<i class="fas fa-leaf" aria-hidden="true"></i>
|
||||||
|
<h3>Sustainable & Renewable IT-Infrastructure</h3>
|
||||||
|
<p>Nachhaltige IT-Lösungen für eine grünere Zukunft</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="contact" class="contact" role="region" aria-labelledby="contact-title">
|
||||||
|
<div class="container">
|
||||||
|
<h2 id="contact-title">Kontakt</h2>
|
||||||
|
<div class="contact-grid">
|
||||||
|
<form class="contact-form" role="form" aria-label="Kontaktformular">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name">Name</label>
|
||||||
|
<input type="text" id="name" name="name" required
|
||||||
|
aria-required="true" minlength="2"
|
||||||
|
pattern="[A-Za-zÄäÖöÜüß\s]+"
|
||||||
|
title="Bitte geben Sie Ihren Namen ein (nur Buchstaben und Leerzeichen)">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email">E-Mail</label>
|
||||||
|
<input type="email" id="email" name="email" required
|
||||||
|
aria-required="true"
|
||||||
|
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
|
||||||
|
title="Bitte geben Sie eine gültige E-Mail-Adresse ein">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="message">Nachricht</label>
|
||||||
|
<textarea id="message" name="message" required
|
||||||
|
aria-required="true" minlength="10"
|
||||||
|
title="Bitte geben Sie Ihre Nachricht ein (mindestens 10 Zeichen)"></textarea>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="submit-button">
|
||||||
|
<span class="button-text">Absenden</span>
|
||||||
|
<span class="loading-spinner" aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
|
<div class="form-feedback" role="alert" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
<div class="contact-info">
|
||||||
|
<h3>Geschäftsdaten</h3>
|
||||||
|
<p><i class="fas fa-building" aria-hidden="true"></i> 7SYS GmbH</p>
|
||||||
|
<p><i class="fas fa-map-marker-alt" aria-hidden="true"></i> Musterstraße 123, 12345 Stadt</p>
|
||||||
|
<p><i class="fas fa-phone" aria-hidden="true"></i> <a href="tel:+49123456789">+49 123 456789</a></p>
|
||||||
|
<p><i class="fas fa-envelope" aria-hidden="true"></i> <a href="mailto:info@7sys.de">info@7sys.de</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer role="contentinfo">
|
||||||
|
<div class="container">
|
||||||
|
<p>© 2024 7SYS GmbH. Alle Rechte vorbehalten.</p>
|
||||||
|
<a href="#" class="impressum">Impressum</a>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
138
website-7sys/script.js
Normal file
138
website-7sys/script.js
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
initThemeToggle();
|
||||||
|
initSmoothScroll();
|
||||||
|
initFormValidation();
|
||||||
|
initAnimations();
|
||||||
|
});
|
||||||
|
|
||||||
|
function initThemeToggle() {
|
||||||
|
const themeToggle = document.getElementById('theme-toggle');
|
||||||
|
const body = document.body;
|
||||||
|
const icon = themeToggle.querySelector('i');
|
||||||
|
|
||||||
|
// Check for saved theme preference
|
||||||
|
const savedTheme = localStorage.getItem('theme');
|
||||||
|
if (savedTheme) {
|
||||||
|
body.className = savedTheme;
|
||||||
|
updateIcon(savedTheme === 'light-theme');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme toggle functionality
|
||||||
|
themeToggle.addEventListener('click', () => {
|
||||||
|
const isLight = body.classList.toggle('light-theme');
|
||||||
|
localStorage.setItem('theme', isLight ? 'light-theme' : 'dark-theme');
|
||||||
|
updateIcon(isLight);
|
||||||
|
});
|
||||||
|
|
||||||
|
function updateIcon(isLight) {
|
||||||
|
icon.className = isLight ? 'fas fa-moon' : 'fas fa-sun';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initSmoothScroll() {
|
||||||
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||||
|
anchor.addEventListener('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const target = document.querySelector(this.getAttribute('href'));
|
||||||
|
if (target) {
|
||||||
|
const headerOffset = 60;
|
||||||
|
const elementPosition = target.getBoundingClientRect().top;
|
||||||
|
const offsetPosition = elementPosition + window.pageYOffset - headerOffset;
|
||||||
|
|
||||||
|
window.scrollTo({
|
||||||
|
top: offsetPosition,
|
||||||
|
behavior: 'smooth'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initFormValidation() {
|
||||||
|
const form = document.querySelector('.contact-form');
|
||||||
|
if (!form) return;
|
||||||
|
|
||||||
|
const nameInput = form.querySelector('#name');
|
||||||
|
const emailInput = form.querySelector('#email');
|
||||||
|
const messageInput = form.querySelector('#message');
|
||||||
|
const submitButton = form.querySelector('.submit-button');
|
||||||
|
const buttonText = submitButton.querySelector('.button-text');
|
||||||
|
const loadingSpinner = submitButton.querySelector('.loading-spinner');
|
||||||
|
const feedbackDiv = form.querySelector('.form-feedback');
|
||||||
|
|
||||||
|
const validateInput = (input) => {
|
||||||
|
const isValid = input.checkValidity();
|
||||||
|
input.classList.toggle('invalid', !isValid);
|
||||||
|
return isValid;
|
||||||
|
};
|
||||||
|
|
||||||
|
[nameInput, emailInput, messageInput].forEach(input => {
|
||||||
|
input.addEventListener('input', () => validateInput(input));
|
||||||
|
input.addEventListener('blur', () => validateInput(input));
|
||||||
|
});
|
||||||
|
|
||||||
|
form.addEventListener('submit', async (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
// Validate all inputs
|
||||||
|
const isNameValid = validateInput(nameInput);
|
||||||
|
const isEmailValid = validateInput(emailInput);
|
||||||
|
const isMessageValid = validateInput(messageInput);
|
||||||
|
|
||||||
|
if (!isNameValid || !isEmailValid || !isMessageValid) {
|
||||||
|
showFeedback('Bitte füllen Sie alle Felder korrekt aus.', false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show loading state
|
||||||
|
submitButton.disabled = true;
|
||||||
|
buttonText.style.opacity = '0';
|
||||||
|
loadingSpinner.style.display = 'block';
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Simulate API call
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 1500));
|
||||||
|
|
||||||
|
showFeedback('Vielen Dank für Ihre Nachricht! Wir werden uns in Kürze bei Ihnen melden.', true);
|
||||||
|
form.reset();
|
||||||
|
} catch (error) {
|
||||||
|
showFeedback('Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.', false);
|
||||||
|
} finally {
|
||||||
|
// Reset button state
|
||||||
|
submitButton.disabled = false;
|
||||||
|
buttonText.style.opacity = '1';
|
||||||
|
loadingSpinner.style.display = 'none';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function showFeedback(message, isSuccess) {
|
||||||
|
feedbackDiv.textContent = message;
|
||||||
|
feedbackDiv.className = `form-feedback ${isSuccess ? 'success' : 'error'}`;
|
||||||
|
|
||||||
|
// Auto-hide feedback after 5 seconds
|
||||||
|
setTimeout(() => {
|
||||||
|
feedbackDiv.style.display = 'none';
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initAnimations() {
|
||||||
|
const observerOptions = {
|
||||||
|
threshold: 0.1,
|
||||||
|
rootMargin: '0px 0px -50px 0px'
|
||||||
|
};
|
||||||
|
|
||||||
|
const observer = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
entry.target.classList.add('visible');
|
||||||
|
observer.unobserve(entry.target); // Stop observing once animated
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, observerOptions);
|
||||||
|
|
||||||
|
// Observe all service cards and vision items
|
||||||
|
document.querySelectorAll('.service-card, .vision-item').forEach(el => {
|
||||||
|
observer.observe(el);
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user