diff --git a/README.md b/README.md
index c164cd8..2449d77 100644
--- a/README.md
+++ b/README.md
@@ -147,11 +147,6 @@ HexaHost-Frontend/
cp -r HexaHost-Backend/includes/* HexaHost-Frontend/public/includes/
```
- Alternativ (Windows, aus diesem Repo mit `backend/`):
- ```powershell
- .\scripts\sync-backend-to-public.ps1
- ```
-
3. **PHP Dependencies installieren**
```bash
cd HexaHost-Frontend/public
diff --git a/backend/config/config.php b/backend/config/config.php
index 8edeb67..60968a7 100644
--- a/backend/config/config.php
+++ b/backend/config/config.php
@@ -14,4 +14,4 @@
// Lade die neue Konfiguration
require_once __DIR__ . '/mail-config.php';
-
+?>
diff --git a/backend/config/mail-config.php b/backend/config/mail-config.php
index 01f5700..46f0164 100644
--- a/backend/config/mail-config.php
+++ b/backend/config/mail-config.php
@@ -195,3 +195,4 @@ function getHexaHostConfig($key = null) {
return $config[$key] ?? null;
}
+?>
\ No newline at end of file
diff --git a/backend/config/products-config.php b/backend/config/products-config.php
index 80a3040..74e128a 100644
--- a/backend/config/products-config.php
+++ b/backend/config/products-config.php
@@ -10,9 +10,6 @@
* $packages = getProductPackages('vpc');
*/
-// Temporär ausgeblendete Produkte (einfach IDs aus dieser Liste entfernen, um sie wieder im Shop anzuzeigen)
-$HIDDEN_PRODUCTS = ['vpc', 'vps'];
-
// ============================================================================
// VIRTUAL PRIVATE CONTAINER (VPC)
// ============================================================================
@@ -268,6 +265,8 @@ $PRODUCTS['mail-gateway'] = [
'Webmail',
'IMAP/POP3',
'SSL/TLS Verschlüsselung',
+ 'E-Mail Archivierung (30 Tage)',
+ 'Kalender & Kontakte',
],
],
'professional' => [
@@ -286,6 +285,9 @@ $PRODUCTS['mail-gateway'] = [
'Webmail',
'IMAP/POP3',
'SSL/TLS Verschlüsselung',
+ 'E-Mail Archivierung (1 Jahr)',
+ 'Kalender & Kontakte',
+ 'ActiveSync für Mobile',
],
],
'enterprise' => [
@@ -304,6 +306,9 @@ $PRODUCTS['mail-gateway'] = [
'Webmail',
'IMAP/POP3',
'SSL/TLS Verschlüsselung',
+ 'E-Mail Archivierung (10 Jahre)',
+ 'Kalender & Kontakte',
+ 'ActiveSync für Mobile',
'Dedizierte IP',
'Priority Support',
],
@@ -317,56 +322,50 @@ $PRODUCTS['mail-gateway'] = [
$PRODUCTS['webhosting'] = [
'name' => 'Webhosting',
'short_name' => 'Webhosting',
- 'description' => 'Klassisches Hosting mit PHP, MySQL und SSL. WordPress-ready mit Plesk Webhosting.',
- 'min_price' => '2,99',
+ 'description' => 'Klassisches Hosting mit PHP, MySQL und SSL',
+ 'min_price' => '1,99',
'hero_highlight' => 'Alles für Ihre Website',
'hero_description' => 'Klassisches Webhosting mit allem, was Sie für eine erfolgreiche Website benötigen. PHP, MySQL, SSL-Zertifikate und E-Mail-Postfächer - alles inklusive.',
'packages_title' => 'Webhosting Pakete',
'packages_description' => 'Von der ersten Website bis zum professionellen Online-Shop',
'cta_title' => 'Bereit für Ihr Webhosting?',
'cta_description' => 'Starten Sie noch heute mit professionellem Webhosting',
- 'page_title' => 'Webhosting - Klassisches Hosting für Websites - WordPress-ready | HexaHost.de',
- 'page_description' => 'Webhosting mit PHP, MySQL und SSL-Zertifikaten. Klassisches Hosting für Websites - WordPress-ready ab 2,99€/Monat bei HexaHost.de',
+ 'page_title' => 'Webhosting - Klassisches Hosting für Websites | HexaHost.de',
+ 'page_description' => 'Webhosting mit PHP, MySQL und SSL-Zertifikaten. Klassisches Hosting für Websites ab 1,99€/Monat bei HexaHost.de',
'packages' => [
'starter' => [
'name' => 'Webhosting Starter',
- 'price' => '2,99',
+ 'price' => '1,99',
'featured' => false,
'specs' => [
- ['label' => 'Webspace', 'value' => '10 GB'],
+ ['label' => 'Webspace', 'value' => '5 GB'],
['label' => 'Domains', 'value' => '1'],
- ['label' => 'Subdomains', 'value' => '5'],
- ['label' => 'Domain Aliase', 'value' => '2'],
- ['label' => 'E-Mail-Postfächer', 'value' => '10'],
- ['label' => 'Datenbanken', 'value' => '2 MySQL'],
- ['label' => 'Traffic', 'value' => '100 GB'],
+ ['label' => 'E-Mail-Postfächer', 'value' => '5'],
+ ['label' => 'Datenbanken', 'value' => '1 MySQL'],
+ ['label' => 'Traffic', 'value' => '10 GB'],
],
'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
+ 'cPanel/Webmin',
+ 'PHP 8.1',
'SSL-Zertifikat',
'E-Mail-Postfächer',
- 'MySQL Datenbanken',
+ 'MySQL Datenbank',
],
],
'business' => [
'name' => 'Webhosting Business',
- 'price' => '7,99',
+ 'price' => '4,99',
'featured' => true,
'specs' => [
- ['label' => 'Webspace', 'value' => '30 GB'],
- ['label' => 'Domains Inkl.', 'value' => '1'],
- ['label' => 'Subdomains', 'value' => '10'],
- ['label' => 'Domain Aliase', 'value' => '2'],
- ['label' => 'E-Mail-Postfächer', 'value' => '20'],
+ ['label' => 'Webspace', 'value' => '20 GB'],
+ ['label' => 'Domains', 'value' => '5'],
+ ['label' => 'E-Mail-Postfächer', 'value' => '25'],
['label' => 'Datenbanken', 'value' => '5 MySQL'],
- ['label' => 'Traffic', 'value' => '100 GB'],
+ ['label' => 'Traffic', 'value' => '50 GB'],
],
'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
+ 'cPanel/Webmin',
+ 'PHP 8.1',
'SSL-Zertifikat',
'E-Mail-Postfächer',
'MySQL Datenbanken',
@@ -375,21 +374,18 @@ $PRODUCTS['webhosting'] = [
],
'professional' => [
'name' => 'Webhosting Professional',
- 'price' => '13,99',
+ 'price' => '9,99',
'featured' => false,
'specs' => [
['label' => 'Webspace', 'value' => '50 GB'],
- ['label' => 'Domains Inkl.', 'value' => '1'],
- ['label' => 'Subdomains', 'value' => 'unbegrenzt'],
- ['label' => 'Domain Aliase', 'value' => 'unbegrenzt'],
- ['label' => 'E-Mail-Postfächer', 'value' => '20'],
- ['label' => 'Datenbanken', 'value' => '20 MySQL'],
- ['label' => 'Traffic', 'value' => '100 GB'],
+ ['label' => 'Domains', 'value' => 'Unbegrenzt'],
+ ['label' => 'E-Mail-Postfächer', 'value' => '100'],
+ ['label' => 'Datenbanken', 'value' => 'Unbegrenzt'],
+ ['label' => 'Traffic', 'value' => '200 GB'],
],
'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
+ 'cPanel/Webmin',
+ 'PHP 8.1',
'SSL-Zertifikat',
'E-Mail-Postfächer',
'MySQL Datenbanken',
@@ -403,17 +399,14 @@ $PRODUCTS['webhosting'] = [
'featured' => false,
'specs' => [
['label' => 'Webspace', 'value' => '100 GB'],
- ['label' => 'Domains Inkl.', 'value' => '3'],
- ['label' => 'Subdomains', 'value' => 'unbegrenzt'],
- ['label' => 'Domain Aliase', 'value' => 'unbegrenzt'],
- ['label' => 'E-Mail-Postfächer', 'value' => '100'],
+ ['label' => 'Domains', 'value' => 'Unbegrenzt'],
+ ['label' => 'E-Mail-Postfächer', 'value' => 'Unbegrenzt'],
['label' => 'Datenbanken', 'value' => 'Unbegrenzt'],
- ['label' => 'Traffic', 'value' => '1 TB'],
+ ['label' => 'Traffic', 'value' => '500 GB'],
],
'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
+ 'cPanel/Webmin',
+ 'PHP 8.1',
'SSL-Zertifikat',
'E-Mail-Postfächer',
'MySQL Datenbanken',
@@ -445,14 +438,6 @@ function getProduct($productId) {
return $PRODUCTS[$productId] ?? null;
}
-/**
- * Prüft, ob ein Produkt im Shop angezeigt werden soll
- */
-function isProductVisible($productId) {
- global $HIDDEN_PRODUCTS;
- return !in_array($productId, $HIDDEN_PRODUCTS, true);
-}
-
/**
* Alle Pakete eines Produkts abrufen
*/
@@ -553,4 +538,4 @@ function renderAllPackages($productId) {
}
return $html;
}
-
+?>
diff --git a/backend/config/site-config.php b/backend/config/site-config.php
deleted file mode 100644
index 711eb1e..0000000
--- a/backend/config/site-config.php
+++ /dev/null
@@ -1,81 +0,0 @@
-
- */
-function getAllowedOrigins()
-{
- return [
- 'https://' . SITE_DOMAIN_PRODUCTION,
- 'https://www.' . SITE_DOMAIN_PRODUCTION,
- 'https://' . SITE_DOMAIN_DEVELOPMENT,
- 'http://localhost',
- 'http://127.0.0.1',
- 'http://localhost:8000',
- ];
-}
-
-/**
- * Kanonische Basis-URL für SEO (Produktion immer hexahost.de)
- *
- * @return string
- */
-function getCanonicalBaseUrl()
-{
- return 'https://' . SITE_DOMAIN_PRODUCTION;
-}
diff --git a/backend/includes/functions.php b/backend/includes/functions.php
index 9ed31ce..24d736c 100644
--- a/backend/includes/functions.php
+++ b/backend/includes/functions.php
@@ -3,67 +3,6 @@
* Helper functions for HexaHost.de
*/
-$configDir = defined('HEXAHOST_CONFIG_DIR')
- ? HEXAHOST_CONFIG_DIR
- : __DIR__ . '/../config';
-
-$siteConfigFile = $configDir . '/site-config.php';
-if (is_file($siteConfigFile)) {
- require_once $siteConfigFile;
-} elseif (!function_exists('getSiteHost')) {
- define('SITE_DOMAIN_PRODUCTION', 'hexahost.de');
- define('SITE_DOMAIN_DEVELOPMENT', 'dev.hexahost.de');
-
- function getSiteHost()
- {
- $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : SITE_DOMAIN_PRODUCTION;
- $host = strtolower($host);
- if (strpos($host, ':') !== false) {
- $host = explode(':', $host, 2)[0];
- }
- return $host;
- }
-
- function isDevelopmentSite()
- {
- return getSiteHost() === SITE_DOMAIN_DEVELOPMENT;
- }
-
- function getSiteBaseUrl()
- {
- $https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
- || (isset($_SERVER['SERVER_PORT']) && (int) $_SERVER['SERVER_PORT'] === 443);
- return ($https ? 'https' : 'http') . '://' . getSiteHost();
- }
-
- function getAllowedOrigins()
- {
- return [
- 'https://' . SITE_DOMAIN_PRODUCTION,
- 'https://www.' . SITE_DOMAIN_PRODUCTION,
- 'https://' . SITE_DOMAIN_DEVELOPMENT,
- 'http://localhost',
- 'http://127.0.0.1',
- 'http://localhost:8000',
- ];
- }
-
- function getCanonicalBaseUrl()
- {
- return 'https://' . SITE_DOMAIN_PRODUCTION;
- }
-}
-
-// Fehleranzeige auf Dev/localhost für einfacheres Debugging
-$hexahostHost = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
-if (
- (function_exists('isDevelopmentSite') && isDevelopmentSite())
- || preg_match('/^(localhost|127\.0\.0\.1)(:\d+)?$/', $hexahostHost)
-) {
- ini_set('display_errors', '1');
- ini_set('display_startup_errors', '1');
-}
-
// Sichere Session-Konfiguration
if (session_status() === PHP_SESSION_NONE) {
// Session-Cookie-Sicherheit
@@ -112,11 +51,6 @@ function includeHeader($title = '', $description = '', $page = '', $scripts = []
$current_page = $page;
$additional_scripts = $scripts;
-
- if (!isset($canonical_url)) {
- $requestPath = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?: '/';
- $canonical_url = rtrim(getCanonicalBaseUrl(), '/') . $requestPath;
- }
include __DIR__ . '/header.php';
}
@@ -161,3 +95,4 @@ function generateCSRFToken() {
}
return $_SESSION['csrf_token'];
}
+?>
\ No newline at end of file
diff --git a/backend/includes/header.php b/backend/includes/header.php
index 2f74089..82629a5 100644
--- a/backend/includes/header.php
+++ b/backend/includes/header.php
@@ -1,8 +1,4 @@
-
@@ -65,12 +61,8 @@ require_once $configDir . '/products-config.php';
Produkte
diff --git a/public/404.php b/public/404.php
index 58ba9bc..bff4941 100644
--- a/public/404.php
+++ b/public/404.php
@@ -1,5 +1,5 @@
');z-index:-1}.hero-container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg);display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-3xl);align-items:center}.hero-title{font-size:var(--font-size-5xl);font-weight:700;line-height:1.2;margin-bottom:var(--spacing-lg)}.highlight{background:linear-gradient(135deg,var(--primary-color),var(--highlight-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-description{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-2xl);line-height:1.6}.hero-actions{display:flex;gap:var(--spacing-lg)}.hero-visual{display:flex;justify-content:center;align-items:center}.hero-card{padding:var(--spacing-2xl);text-align:center;max-width:300px}.server-icon{width:80px;height:80px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.hero-card h3{font-size:var(--font-size-2xl);font-weight:600;margin-bottom:var(--spacing-sm)}.hero-card p{color:var(--text-secondary);font-size:var(--font-size-lg)}.btn{display:inline-flex;align-items:center;padding:var(--spacing-md) var(--spacing-xl);border:none;border-radius:var(--radius-lg);font-weight:600;text-decoration:none;cursor:pointer;transition:all var(--transition-base);font-size:var(--font-size-base)}.btn-primary{background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1));color:var(--text-primary);box-shadow:0 4px 15px 0 rgba(255,81,249,.3)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 25px 0 rgba(255,81,249,.4)}.btn-secondary{background:var(--glass-bg);color:var(--text-primary);border:1px solid var(--glass-border);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.btn-secondary:hover{background:rgba(255,255,255,.2);transform:translateY(-2px)}.section-header{text-align:center;margin-bottom:var(--spacing-3xl)}.section-title{font-size:var(--font-size-4xl);font-weight:700;margin-bottom:var(--spacing-lg)}.section-description{font-size:var(--font-size-lg);color:rgba(255,255,255,.8);max-width:600px;margin:0 auto}.products{padding:var(--spacing-3xl) 0}.products-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-xl)}.product-card{padding:var(--spacing-2xl);text-align:center;position:relative;transition:all var(--transition-base)}.product-card.featured{transform:scale(1.05);border:2px solid var(--primary-light)}.featured-badge{position:absolute;top:-10px;right:var(--spacing-lg);background:linear-gradient(135deg,var(--primary-color),var(--accent-color-2));color:var(--white);padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:600}.product-icon{width:40px;height:40px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.product-title{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}.product-description{color:rgba(255,255,255,.8);margin-bottom:var(--spacing-lg);line-height:1.6}.product-features{list-style:none;padding:0;margin-bottom:var(--spacing-lg);text-align:center}.product-features li{color:var(--text-secondary);font-size:var(--font-size-sm);padding:var(--spacing-xs) 0;line-height:1.5}.product-features li::before{content:'•';color:var(--primary-color);font-weight:700;margin-right:var(--spacing-sm)}.feature{font-size:var(--font-size-sm);color:rgba(255,255,255,.9)}.product-price{font-size:var(--font-size-lg);margin-bottom:var(--spacing-lg);color:rgba(255,255,255,.9)}.price{font-size:var(--font-size-2xl);font-weight:700;color:var(--primary-color)}.features{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.feature-item{padding:var(--spacing-lg);text-align:center}.feature-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.feature-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}.feature-item p{color:var(--text-secondary);line-height:1.5;font-size:var(--font-size-sm)}.how-it-works{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.02)}.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.step-item{padding:var(--spacing-xl);text-align:center;position:relative}.step-number{width:60px;height:60px;background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);font-weight:700;color:var(--white);margin:0 auto var(--spacing-lg);box-shadow:0 8px 32px 0 rgba(255,81,249,.3)}.step-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary)}.step-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-base)}.mail-features{padding:var(--spacing-3xl) 0}.benefits{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.02)}.benefits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.benefit-item{padding:var(--spacing-xl);text-align:center}.benefit-icon{width:48px;height:48px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.benefit-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary)}.benefit-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-base)}.cta{padding:var(--spacing-3xl) 0}.cta-content{text-align:center;padding:var(--spacing-3xl)}.cta-content h2{font-size:var(--font-size-3xl);font-weight:700;margin-bottom:var(--spacing-lg)}.cta-content p{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-2xl)}.cta-actions{display:flex;gap:var(--spacing-lg);justify-content:center}.footer{background:rgba(0,0,0,.3);padding:var(--spacing-3xl) 0 var(--spacing-xl);margin-top:var(--spacing-3xl)}.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-2xl);margin-bottom:var(--spacing-2xl)}.footer-section h4{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-lg);color:var(--primary-color)}.footer-section p{color:var(--text-secondary);margin-bottom:var(--spacing-md)}.footer-location{display:flex;align-items:center;gap:var(--spacing-sm);color:rgba(255,255,255,.7)}.footer-location svg{width:16px;height:16px}.footer-section ul{list-style:none}.footer-section ul li{margin-bottom:var(--spacing-sm)}.footer-section ul li a{color:rgba(255,255,255,.8);text-decoration:none;transition:color var(--transition-base)}.footer-section ul li a:hover{color:var(--primary-color)}.footer-bottom{padding-top:var(--spacing-xl);border-top:1px solid rgba(255,255,255,.1);text-align:center;color:rgba(255,255,255,.6)}@media (max-width:768px){.nav-menu{display:none}.nav-toggle{display:flex}.hero-container{grid-template-columns:1fr;text-align:center;gap:var(--spacing-2xl)}.hero-title{font-size:var(--font-size-3xl)}.hero-actions{flex-direction:column;align-items:center}.features-grid,.products-grid{grid-template-columns:1fr}.cta-actions{flex-direction:column;align-items:center}.footer-content{grid-template-columns:1fr;text-align:center}}@media (max-width:480px){.container,.nav-container{padding:0 var(--spacing-md)}.hero{padding:100px 0 60px}.hero-title{font-size:var(--font-size-2xl)}.section-title{font-size:var(--font-size-3xl)}.cta-content,.feature-item,.product-card{padding:var(--spacing-xl)}.values-grid{grid-template-columns:1fr!important}.team-stats{grid-template-columns:1fr 1fr!important}}.product-hero{padding:120px 0 80px;min-height:60vh;display:flex;align-items:center}.product-hero-content{max-width:800px;margin:0 auto;text-align:center;padding:0 var(--spacing-lg)}.breadcrumb{margin-bottom:var(--spacing-lg);color:var(--text-secondary);font-size:var(--font-size-sm)}.breadcrumb a{color:var(--primary-color);text-decoration:none}.breadcrumb span{margin:0 var(--spacing-sm)}.product-hero-title{font-size:var(--font-size-4xl);font-weight:700;line-height:1.2;margin-bottom:var(--spacing-lg)}.product-hero-description{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-2xl);line-height:1.6}.product-hero-features{display:flex;justify-content:center;gap:var(--spacing-2xl);flex-wrap:wrap}.hero-feature{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--primary-color);font-weight:500}.hero-feature svg{width:16px;height:16px}.packages{padding:var(--spacing-3xl) 0}.packages-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-2xl)}.package-card{padding:var(--spacing-2xl);position:relative;text-align:center}.package-header{margin-bottom:var(--spacing-xl)}.package-name{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}.package-price{margin-bottom:var(--spacing-xl)}.package-price .price{font-size:var(--font-size-3xl);font-weight:700;color:var(--primary-color)}.package-price .period{color:var(--text-secondary);font-size:var(--font-size-base)}.package-specs{margin-bottom:var(--spacing-xl);text-align:left}.spec-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) 0;border-bottom:1px solid rgba(255,255,255,.1)}.spec-label{color:rgba(255,255,255,.8)}.spec-value{font-weight:600;color:var(--white)}.package-features{margin-bottom:var(--spacing-xl);text-align:left}.package-features .feature{padding:var(--spacing-xs) 0;color:rgba(255,255,255,.9);font-size:var(--font-size-sm)}.mail-features,.technical-details,.vps-features,.web-features{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.detail-card{padding:var(--spacing-lg);text-align:center}.detail-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.detail-card h3{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--spacing-sm)}.detail-card p{color:var(--text-secondary);line-height:1.5;font-size:var(--font-size-sm)}.use-cases{padding:var(--spacing-3xl) 0}.use-cases-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-lg)}.use-case-item{padding:var(--spacing-lg)}.use-case-item h3{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--primary-color)}.use-case-item p{color:var(--text-secondary);line-height:1.5;font-size:var(--font-size-sm)}.cms-support,.operating-systems,.technologies{padding:var(--spacing-3xl) 0}.cms-grid,.os-grid,.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-md)}.cms-item,.os-item,.tech-item{padding:var(--spacing-md);text-align:center}.os-icon,.tech-icon{width:28px;height:28px;margin:0 auto var(--spacing-sm);color:var(--primary-color)}.cms-logo{width:40px;height:40px;margin:0 auto var(--spacing-sm);background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1));border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--font-size-base);color:var(--text-primary)}.cms-item h3,.os-item h3,.tech-item h3{font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--spacing-xs)}.cms-item p,.os-item p,.tech-item p{color:rgba(255,255,255,.7);font-size:var(--font-size-xs)}.performance-security{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.perf-sec-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.perf-sec-item{padding:var(--spacing-lg);text-align:center}.perf-sec-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.about-hero,.contact-hero{padding:120px 0 80px;min-height:60vh;display:flex;align-items:center}.about-hero-content,.contact-hero-content{max-width:800px;margin:0 auto;text-align:center;padding:0 var(--spacing-lg)}.about-hero-title,.contact-hero-title{font-size:var(--font-size-4xl);font-weight:700;line-height:1.2;margin-bottom:var(--spacing-lg)}.about-hero-description,.contact-hero-description{font-size:var(--font-size-lg);color:rgba(255,255,255,.8);line-height:1.6}.company-story{padding:var(--spacing-3xl) 0}.story-content{display:grid;grid-template-columns:2fr 1fr;gap:var(--spacing-3xl);align-items:center}.story-text p{margin-bottom:var(--spacing-lg);color:var(--text-secondary);line-height:1.6}.story-visual{padding:var(--spacing-2xl);text-align:center}.location-info{margin-bottom:var(--spacing-2xl)}.location-icon{width:60px;height:60px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.location-info h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}.location-details{text-align:center}.location-details p{color:var(--text-secondary);margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm)}.stats{display:flex;justify-content:space-around;gap:var(--spacing-lg)}.stat-item{text-align:center}.stat-number{display:block;font-size:var(--font-size-2xl);font-weight:700;color:var(--primary-color);margin-bottom:var(--spacing-xs)}.stat-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.mission{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.mission-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.mission-item{padding:var(--spacing-lg);text-align:center}.mission-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.values{padding:var(--spacing-3xl) 0}.values-grid{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.values-grid .value-item{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-xl);text-align:center}.values-grid .value-icon{width:48px;height:48px;margin-bottom:var(--spacing-lg);color:var(--primary-color);display:flex;align-items:center;justify-content:center}.values-grid .value-icon svg{width:100%;height:100%}.values-grid .value-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md)}.values-grid .value-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-sm)}.team{padding:var(--spacing-3xl) 0}.team-content{margin-top:var(--spacing-2xl)}.team-text{margin-bottom:var(--spacing-2xl)}.team-text p{color:var(--text-secondary);line-height:1.6;margin-bottom:var(--spacing-lg)}.team-stats{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:var(--spacing-lg);padding:var(--spacing-2xl);text-align:center}.technology{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.02)}.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.tech-item{padding:var(--spacing-xl);text-align:center}.tech-item .tech-icon{width:48px;height:48px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.tech-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md)}.tech-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-sm)}.value-number{font-size:var(--font-size-2xl);font-weight:700;color:var(--primary-color);min-width:60px}.value-content h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}.value-content p{color:rgba(255,255,255,.8);line-height:1.6}.technology-stack{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.tech-stack-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.tech-stack-item{padding:var(--spacing-lg);text-align:center}.tech-icon{width:50px;height:50px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.why-choose-us{padding:var(--spacing-3xl) 0}.advantages-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-lg)}.advantage-item{padding:var(--spacing-lg);text-align:center}.advantage-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.contact-options{padding:var(--spacing-3xl) 0}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.contact-item{padding:var(--spacing-lg);text-align:center}.contact-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.contact-link{display:inline-block;margin-top:var(--spacing-md);color:var(--primary-color);text-decoration:none;font-weight:600;padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--primary-color);border-radius:var(--radius-md);transition:all var(--transition-base)}.contact-link:hover{background:var(--primary-color);color:var(--text-primary)}.chat-btn{background:0 0;cursor:pointer}.contact-hours{margin-top:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--text-secondary)}.contact-form-section{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.form-container{max-width:800px;margin:0 auto}.form-header{text-align:center;margin-bottom:var(--spacing-2xl)}.contact-form{padding:var(--spacing-2xl)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;margin-bottom:var(--spacing-sm);color:var(--text-primary);font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:var(--spacing-md);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-md);background:rgba(255,255,255,.1);color:var(--text-primary);font-family:inherit;transition:all var(--transition-base)}.form-group select{background:rgba(255,255,255,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.form-group select option{background:rgba(13,8,33,.95);color:var(--text-primary);padding:var(--spacing-sm)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:0;border-color:var(--primary-color);background:rgba(255,255,255,.15)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-secondary)}.checkbox-group{display:flex;align-items:flex-start;gap:var(--spacing-sm)}.checkbox-label{display:flex;align-items:flex-start;gap:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-sm);line-height:1.4}.checkbox-label input[type=checkbox]{width:auto;margin:0}.checkmark{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:var(--radius-sm);background:0 0;position:relative;flex-shrink:0;margin-top:2px}.checkbox-label input[type=checkbox]:checked+.checkmark{background:var(--primary-color);border-color:var(--primary-color)}.checkbox-label input[type=checkbox]:checked+.checkmark::after{content:'✓';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--white);font-size:12px;font-weight:700}.checkbox-label a{color:var(--primary-color);text-decoration:none}.checkbox-label a:hover{text-decoration:underline}.form-actions{display:flex;gap:var(--spacing-lg);justify-content:center;margin-top:var(--spacing-xl)}.faq-section{padding:var(--spacing-3xl) 0}.faq-grid{display:grid;gap:var(--spacing-lg);max-width:800px;margin:0 auto}.faq-item{padding:0;overflow:hidden;transition:all var(--transition-base);border:1px solid transparent}.faq-item:hover{border-color:var(--primary-color);box-shadow:0 0 20px rgba(255,81,249,.2);transform:translateY(-2px)}.faq-question{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);cursor:pointer;transition:background var(--transition-base)}.faq-question h3{font-size:var(--font-size-lg);font-weight:600;margin:0}.faq-toggle{font-size:var(--font-size-2xl);font-weight:300;color:var(--primary-color);transition:transform var(--transition-base)}.faq-item.open .faq-toggle{transform:rotate(45deg)}.faq-answer{max-height:0;overflow:hidden;transition:max-height var(--transition-base)}.faq-answer p{padding:0 var(--spacing-lg) var(--spacing-lg);color:rgba(255,255,255,.8);line-height:1.6;margin:0}.response-time{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.response-content{display:grid;grid-template-columns:2fr 1fr;gap:var(--spacing-2xl);align-items:center;padding:var(--spacing-2xl)}.response-stats{display:flex;justify-content:space-around;gap:var(--spacing-lg)}.response-text h3{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}.response-text p{color:rgba(255,255,255,.8);line-height:1.6}@media (max-width:768px){.product-hero-features{gap:var(--spacing-lg)}.hero-feature{font-size:var(--font-size-sm)}.packages-grid{grid-template-columns:1fr}.benefits-grid,.steps-grid{grid-template-columns:1fr;gap:var(--spacing-lg)}.story-content{grid-template-columns:1fr}.stats{flex-direction:column;gap:var(--spacing-md)}.team-stats,.values-grid{grid-template-columns:1fr 1fr!important}.form-row{grid-template-columns:1fr}.response-content{grid-template-columns:1fr;text-align:center}.response-stats{flex-direction:column;gap:var(--spacing-md)}.form-actions{flex-direction:column;align-items:center}}.legal-hero{padding:calc(var(--header-height) + var(--spacing-2xl)) 0 var(--spacing-2xl);background:linear-gradient(135deg,var(--bg-primary) 0,var(--bg-secondary) 100%);text-align:center}.legal-hero-content{max-width:800px;margin:0 auto}.legal-hero-title{font-size:clamp(2rem, 5vw, 3rem);font-weight:700;margin-bottom:var(--spacing-md);background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.legal-hero-description{font-size:1.125rem;color:var(--text-secondary);max-width:600px;margin:0 auto}.legal-content{padding:var(--spacing-2xl) 0}.legal-container{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:var(--spacing-lg)}.legal-section{padding:var(--spacing-xl)}.legal-section h2{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--primary)}.legal-section h3{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-sm);margin-top:var(--spacing-md)}.legal-section h3:first-child{margin-top:0}.legal-block{margin-bottom:var(--spacing-md)}.legal-block:last-child{margin-bottom:0}.legal-block p{color:var(--text-secondary);line-height:1.8;margin-bottom:var(--spacing-sm)}.legal-block p:last-child{margin-bottom:0}.legal-block a{color:var(--primary);text-decoration:none;transition:color var(--transition-fast)}.legal-block a:hover{color:var(--primary-light);text-decoration:underline}.legal-block ol,.legal-block ul{margin:var(--spacing-sm) 0;padding-left:var(--spacing-lg);color:var(--text-secondary)}.legal-block li{margin-bottom:var(--spacing-xs);line-height:1.7}.legal-note{font-size:.875rem;color:var(--text-muted);background:rgba(var(--primary-rgb),.1);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);border-left:3px solid var(--primary)}@media (max-width:768px){.legal-section{padding:var(--spacing-lg)}.legal-section h2{font-size:1.25rem}.legal-hero{padding:calc(var(--header-height) + var(--spacing-xl)) 0 var(--spacing-xl)}}.cookie-consent{position:fixed;bottom:0;left:0;right:0;z-index:10000;background:rgba(13,8,33,.98);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--glass-border);box-shadow:0 -10px 40px rgba(0,0,0,.3);transform:translateY(100%);opacity:0;visibility:hidden;transition:.4s cubic-bezier(.4, 0, .2, 1)}.cookie-consent.show{transform:translateY(0);opacity:1;visibility:visible}.cookie-consent.hide{transform:translateY(100%);opacity:0;visibility:hidden}.cookie-consent-container{max-width:1200px;margin:0 auto;padding:var(--spacing-xl) var(--spacing-lg);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--spacing-lg)}.cookie-consent-content{display:flex;align-items:flex-start;gap:var(--spacing-lg);flex:1;min-width:300px}.cookie-consent-icon{width:48px;height:48px;flex-shrink:0;color:var(--primary-color)}.cookie-consent-icon svg{width:100%;height:100%}.cookie-consent-text h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-primary)}.cookie-consent-text p{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.6;margin:0}.cookie-consent-text a{color:var(--primary-color);text-decoration:none;font-weight:500}.cookie-consent-text a:hover{text-decoration:underline}.cookie-consent-actions{display:flex;flex-wrap:wrap;gap:var(--spacing-md);align-items:center}.cookie-consent-actions .btn{white-space:nowrap}.btn-text{background:0 0;color:var(--text-secondary);border:none;padding:var(--spacing-sm) var(--spacing-md);font-weight:500;cursor:pointer;transition:color var(--transition-base)}.btn-text:hover{color:var(--primary-color)}.cookie-settings-panel{border-top:1px solid var(--glass-border);background:rgba(0,0,0,.3);animation:.3s ease-out slideDown}@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.cookie-settings-content{max-width:800px;margin:0 auto;padding:var(--spacing-xl) var(--spacing-lg)}.cookie-settings-content h4{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-lg);color:var(--text-primary)}.cookie-option{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) 0;border-bottom:1px solid rgba(255,255,255,.1)}.cookie-option:last-of-type{border-bottom:none}.cookie-option-info{flex:1;padding-right:var(--spacing-lg)}.cookie-option-info strong{display:block;font-size:var(--font-size-base);font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-xs)}.cookie-option-info p{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0;line-height:1.5}.cookie-toggle{position:relative;display:inline-block;width:52px;height:28px;flex-shrink:0}.cookie-toggle input{opacity:0;width:0;height:0}.cookie-toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.2);border-radius:28px;transition:all var(--transition-base)}.cookie-toggle-slider::before{position:absolute;content:"";height:22px;width:22px;left:3px;bottom:3px;background:var(--text-primary);border-radius:50%;transition:all var(--transition-base)}.cookie-toggle input:checked+.cookie-toggle-slider{background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1))}.cookie-toggle input:checked+.cookie-toggle-slider::before{transform:translateX(24px)}.cookie-toggle.disabled .cookie-toggle-slider{cursor:not-allowed;opacity:.7}.cookie-toggle input:focus+.cookie-toggle-slider{box-shadow:0 0 0 3px rgba(255,81,249,.3)}.cookie-settings-actions{display:flex;gap:var(--spacing-md);justify-content:flex-end;margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px solid rgba(255,255,255,.1)}@media (max-width:768px){.cookie-consent-container{flex-direction:column;align-items:stretch;padding:var(--spacing-lg)}.cookie-consent-content{flex-direction:column;align-items:center;text-align:center}.cookie-consent-icon{width:40px;height:40px}.cookie-consent-actions{flex-direction:column;width:100%}.cookie-consent-actions .btn{width:100%;justify-content:center}.cookie-settings-actions{flex-direction:column}.cookie-settings-actions .btn{width:100%}.cookie-option{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.cookie-option-info{padding-right:0}}
\ No newline at end of file
+*{margin:0;padding:0;box-sizing:border-box}:root{--background-color:#0d0821;--primary-color:#ff51f9;--accent-color-1:#a348ff;--accent-color-2:#3978ff;--highlight-color:#f093ff;--accent-deep:#6b2aff;--accent-neon-blue:#00cfff;--accent-pink-dark:#c31adf;--success-color:#32fba2;--warning-color:#ffcc00;--error-color:#ff4d6d;--neutral-light:#1a1230;--neutral-medium:#3d3a4e;--text-primary:#ffffff;--text-secondary:#cfc9dd;--white:#ffffff;--gray-50:#f8fafc;--gray-100:#f1f5f9;--gray-200:#e2e8f0;--gray-300:#cbd5e1;--gray-400:#94a3b8;--gray-500:#64748b;--gray-600:#475569;--gray-700:#334155;--gray-800:#1e293b;--gray-900:#0f172a;--bg-primary:linear-gradient(135deg, var(--background-color) 0%, var(--neutral-light) 100%);--bg-secondary:linear-gradient(135deg, var(--primary-color) 0%, var(--accent-color-1) 100%);--bg-accent:linear-gradient(135deg, var(--accent-deep) 0%, var(--accent-color-1) 100%);--bg-neon:linear-gradient(135deg, var(--accent-neon-blue) 0%, var(--primary-color) 100%);--glass-bg:rgba(255, 255, 255, 0.05);--glass-border:rgba(255, 255, 255, 0.1);--glass-shadow:0 8px 32px 0 rgba(255, 81, 249, 0.2);--glass-shadow-accent:0 8px 32px 0 rgba(163, 72, 255, 0.3);--glass-shadow-neon:0 8px 32px 0 rgba(0, 207, 255, 0.3);--font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font-logo:'Russo One',sans-serif;--font-slogan:'Source Sans Pro',sans-serif;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--font-size-5xl:3rem;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--spacing-3xl:4rem;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--transition-fast:0.15s ease-in-out;--transition-base:0.3s ease-in-out;--transition-slow:0.5s ease-in-out}body{font-family:var(--font-family);line-height:1.6;color:var(--text-primary);background:var(--background-color);min-height:100vh;overflow-x:hidden}.glass-card{background:var(--glass-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow);transition:all var(--transition-base)}.glass-card:hover{transform:translateY(-5px);box-shadow:0 20px 40px 0 rgba(31,38,135,.5)}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg)}.header{position:fixed;top:0;left:0;right:0;z-index:1000;background:rgba(13,8,33,.5);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--glass-border);box-shadow:0 2px 20px rgba(255,81,249,.1);transition:all var(--transition-base)}.header.scrolled{background:rgba(13,8,33,.523);box-shadow:0 4px 30px rgba(255,81,249,.2)}.nav-container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg);display:flex;align-items:center;justify-content:space-between;height:70px}.nav-logo a{text-decoration:none;display:flex;align-items:center}.logo-image{height:50px;width:auto;object-fit:contain;transition:var(--transition-base)}.logo-image:hover{transform:scale(1.05);filter:drop-shadow(0 0 10px rgba(255, 81, 249, .5))}.nav-menu{display:flex;list-style:none;gap:var(--spacing-xl);align-items:center}.nav-link{text-decoration:none;color:var(--white);font-weight:500;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);transition:all var(--transition-base);position:relative}.nav-link.active,.nav-link:hover{background:var(--glass-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.nav-dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--spacing-sm);min-width:200px;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all var(--transition-base);list-style:none}.nav-dropdown:hover .dropdown-menu{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-menu li{margin:0}.dropdown-menu a{display:block;padding:var(--spacing-sm) var(--spacing-md);color:var(--white);text-decoration:none;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.dropdown-menu a:hover{background:rgba(255,255,255,.1)}.nav-toggle{display:none;flex-direction:column;cursor:pointer}.nav-toggle span{width:25px;height:3px;background:var(--white);margin:3px 0;transition:var(--transition-base)}.hero{padding:120px 0 80px;min-height:100vh;display:flex;align-items:center;position:relative;overflow:hidden}.hero::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:url('data:image/svg+xml, ');z-index:-1}.hero-container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg);display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-3xl);align-items:center}.hero-title{font-size:var(--font-size-5xl);font-weight:700;line-height:1.2;margin-bottom:var(--spacing-lg)}.highlight{background:linear-gradient(135deg,var(--primary-color),var(--highlight-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-description{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-2xl);line-height:1.6}.hero-actions{display:flex;gap:var(--spacing-lg)}.hero-visual{display:flex;justify-content:center;align-items:center}.hero-card{padding:var(--spacing-2xl);text-align:center;max-width:300px}.server-icon{width:80px;height:80px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.hero-card h3{font-size:var(--font-size-2xl);font-weight:600;margin-bottom:var(--spacing-sm)}.hero-card p{color:var(--text-secondary);font-size:var(--font-size-lg)}.btn{display:inline-flex;align-items:center;padding:var(--spacing-md) var(--spacing-xl);border:none;border-radius:var(--radius-lg);font-weight:600;text-decoration:none;cursor:pointer;transition:all var(--transition-base);font-size:var(--font-size-base)}.btn-primary{background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1));color:var(--text-primary);box-shadow:0 4px 15px 0 rgba(255,81,249,.3)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 25px 0 rgba(255,81,249,.4)}.btn-secondary{background:var(--glass-bg);color:var(--text-primary);border:1px solid var(--glass-border);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.btn-secondary:hover{background:rgba(255,255,255,.2);transform:translateY(-2px)}.section-header{text-align:center;margin-bottom:var(--spacing-3xl)}.section-title{font-size:var(--font-size-4xl);font-weight:700;margin-bottom:var(--spacing-lg)}.section-description{font-size:var(--font-size-lg);color:rgba(255,255,255,.8);max-width:600px;margin:0 auto}.products{padding:var(--spacing-3xl) 0}.products-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-xl)}.product-card{padding:var(--spacing-2xl);text-align:center;position:relative;transition:all var(--transition-base)}.product-card.featured{transform:scale(1.05);border:2px solid var(--primary-light)}.featured-badge{position:absolute;top:-10px;right:var(--spacing-lg);background:linear-gradient(135deg,var(--primary-color),var(--accent-color-2));color:var(--white);padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:600}.product-icon{width:40px;height:40px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.product-title{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}.product-description{color:rgba(255,255,255,.8);margin-bottom:var(--spacing-lg);line-height:1.6}.product-features{list-style:none;padding:0;margin-bottom:var(--spacing-lg);text-align:center}.product-features li{color:var(--text-secondary);font-size:var(--font-size-sm);padding:var(--spacing-xs) 0;line-height:1.5}.product-features li::before{content:'•';color:var(--primary-color);font-weight:700;margin-right:var(--spacing-sm)}.feature{font-size:var(--font-size-sm);color:rgba(255,255,255,.9)}.product-price{font-size:var(--font-size-lg);margin-bottom:var(--spacing-lg);color:rgba(255,255,255,.9)}.price{font-size:var(--font-size-2xl);font-weight:700;color:var(--primary-color)}.features{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.feature-item{padding:var(--spacing-lg);text-align:center}.feature-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.feature-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}.feature-item p{color:var(--text-secondary);line-height:1.5;font-size:var(--font-size-sm)}.how-it-works{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.02)}.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.step-item{padding:var(--spacing-xl);text-align:center;position:relative}.step-number{width:60px;height:60px;background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);font-weight:700;color:var(--white);margin:0 auto var(--spacing-lg);box-shadow:0 8px 32px 0 rgba(255,81,249,.3)}.step-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary)}.step-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-base)}.mail-features{padding:var(--spacing-3xl) 0}.benefits{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.02)}.benefits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.benefit-item{padding:var(--spacing-xl);text-align:center}.benefit-icon{width:48px;height:48px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.benefit-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary)}.benefit-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-base)}.cta{padding:var(--spacing-3xl) 0}.cta-content{text-align:center;padding:var(--spacing-3xl)}.cta-content h2{font-size:var(--font-size-3xl);font-weight:700;margin-bottom:var(--spacing-lg)}.cta-content p{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-2xl)}.cta-actions{display:flex;gap:var(--spacing-lg);justify-content:center}.footer{background:rgba(0,0,0,.3);padding:var(--spacing-3xl) 0 var(--spacing-xl);margin-top:var(--spacing-3xl)}.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-2xl);margin-bottom:var(--spacing-2xl)}.footer-section h4{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-lg);color:var(--primary-color)}.footer-section p{color:var(--text-secondary);margin-bottom:var(--spacing-md)}.footer-location{display:flex;align-items:center;gap:var(--spacing-sm);color:rgba(255,255,255,.7)}.footer-location svg{width:16px;height:16px}.footer-section ul{list-style:none}.footer-section ul li{margin-bottom:var(--spacing-sm)}.footer-section ul li a{color:rgba(255,255,255,.8);text-decoration:none;transition:color var(--transition-base)}.footer-section ul li a:hover{color:var(--primary-color)}.footer-bottom{padding-top:var(--spacing-xl);border-top:1px solid rgba(255,255,255,.1);text-align:center;color:rgba(255,255,255,.6)}@media (max-width:768px){.nav-menu{display:none}.nav-toggle{display:flex}.hero-container{grid-template-columns:1fr;text-align:center;gap:var(--spacing-2xl)}.hero-title{font-size:var(--font-size-3xl)}.hero-actions{flex-direction:column;align-items:center}.features-grid,.products-grid{grid-template-columns:1fr}.cta-actions{flex-direction:column;align-items:center}.footer-content{grid-template-columns:1fr;text-align:center}}@media (max-width:480px){.container,.nav-container{padding:0 var(--spacing-md)}.hero{padding:100px 0 60px}.hero-title{font-size:var(--font-size-2xl)}.section-title{font-size:var(--font-size-3xl)}.cta-content,.feature-item,.product-card{padding:var(--spacing-xl)}.values-grid{grid-template-columns:1fr!important}.team-stats{grid-template-columns:1fr 1fr!important}}.product-hero{padding:120px 0 80px;min-height:60vh;display:flex;align-items:center}.product-hero-content{max-width:800px;margin:0 auto;text-align:center;padding:0 var(--spacing-lg)}.breadcrumb{margin-bottom:var(--spacing-lg);color:var(--text-secondary);font-size:var(--font-size-sm)}.breadcrumb a{color:var(--primary-color);text-decoration:none}.breadcrumb span{margin:0 var(--spacing-sm)}.product-hero-title{font-size:var(--font-size-4xl);font-weight:700;line-height:1.2;margin-bottom:var(--spacing-lg)}.product-hero-description{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-2xl);line-height:1.6}.product-hero-features{display:flex;justify-content:center;gap:var(--spacing-2xl);flex-wrap:wrap}.hero-feature{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--primary-color);font-weight:500}.hero-feature svg{width:16px;height:16px}.packages{padding:var(--spacing-3xl) 0}.packages-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-2xl)}.package-card{padding:var(--spacing-2xl);position:relative;text-align:center}.package-header{margin-bottom:var(--spacing-xl)}.package-name{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}.package-price{margin-bottom:var(--spacing-xl)}.package-price .price{font-size:var(--font-size-3xl);font-weight:700;color:var(--primary-color)}.package-price .period{color:var(--text-secondary);font-size:var(--font-size-base)}.package-specs{margin-bottom:var(--spacing-xl);text-align:left}.spec-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) 0;border-bottom:1px solid rgba(255,255,255,.1)}.spec-label{color:rgba(255,255,255,.8)}.spec-value{font-weight:600;color:var(--white)}.package-features{margin-bottom:var(--spacing-xl);text-align:left}.package-features .feature{padding:var(--spacing-xs) 0;color:rgba(255,255,255,.9);font-size:var(--font-size-sm)}.mail-features,.technical-details,.vps-features,.web-features{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.detail-card{padding:var(--spacing-lg);text-align:center}.detail-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.detail-card h3{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--spacing-sm)}.detail-card p{color:var(--text-secondary);line-height:1.5;font-size:var(--font-size-sm)}.use-cases{padding:var(--spacing-3xl) 0}.use-cases-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-lg)}.use-case-item{padding:var(--spacing-lg)}.use-case-item h3{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--primary-color)}.use-case-item p{color:var(--text-secondary);line-height:1.5;font-size:var(--font-size-sm)}.cms-support,.operating-systems,.technologies{padding:var(--spacing-3xl) 0}.cms-grid,.os-grid,.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-md)}.cms-item,.os-item,.tech-item{padding:var(--spacing-md);text-align:center}.os-icon,.tech-icon{width:28px;height:28px;margin:0 auto var(--spacing-sm);color:var(--primary-color)}.cms-logo{width:40px;height:40px;margin:0 auto var(--spacing-sm);background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1));border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--font-size-base);color:var(--text-primary)}.cms-item h3,.os-item h3,.tech-item h3{font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--spacing-xs)}.cms-item p,.os-item p,.tech-item p{color:rgba(255,255,255,.7);font-size:var(--font-size-xs)}.performance-security{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.perf-sec-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.perf-sec-item{padding:var(--spacing-lg);text-align:center}.perf-sec-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.about-hero,.contact-hero{padding:120px 0 80px;min-height:60vh;display:flex;align-items:center}.about-hero-content,.contact-hero-content{max-width:800px;margin:0 auto;text-align:center;padding:0 var(--spacing-lg)}.about-hero-title,.contact-hero-title{font-size:var(--font-size-4xl);font-weight:700;line-height:1.2;margin-bottom:var(--spacing-lg)}.about-hero-description,.contact-hero-description{font-size:var(--font-size-lg);color:rgba(255,255,255,.8);line-height:1.6}.company-story{padding:var(--spacing-3xl) 0}.story-content{display:grid;grid-template-columns:2fr 1fr;gap:var(--spacing-3xl);align-items:center}.story-text p{margin-bottom:var(--spacing-lg);color:var(--text-secondary);line-height:1.6}.story-visual{padding:var(--spacing-2xl);text-align:center}.location-info{margin-bottom:var(--spacing-2xl)}.location-icon{width:60px;height:60px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.location-info h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}.location-details{text-align:center}.location-details p{color:var(--text-secondary);margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm)}.stats{display:flex;justify-content:space-around;gap:var(--spacing-lg)}.stat-item{text-align:center}.stat-number{display:block;font-size:var(--font-size-2xl);font-weight:700;color:var(--primary-color);margin-bottom:var(--spacing-xs)}.stat-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.mission{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.mission-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.mission-item{padding:var(--spacing-lg);text-align:center}.mission-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.values{padding:var(--spacing-3xl) 0}.values-grid{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.values-grid .value-item{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-xl);text-align:center}.values-grid .value-icon{width:48px;height:48px;margin-bottom:var(--spacing-lg);color:var(--primary-color);display:flex;align-items:center;justify-content:center}.values-grid .value-icon svg{width:100%;height:100%}.values-grid .value-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md)}.values-grid .value-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-sm)}.team{padding:var(--spacing-3xl) 0}.team-content{margin-top:var(--spacing-2xl)}.team-text{margin-bottom:var(--spacing-2xl)}.team-text p{color:var(--text-secondary);line-height:1.6;margin-bottom:var(--spacing-lg)}.team-stats{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:var(--spacing-lg);padding:var(--spacing-2xl);text-align:center}.technology{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.02)}.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.tech-item{padding:var(--spacing-xl);text-align:center}.tech-item .tech-icon{width:48px;height:48px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.tech-item h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md)}.tech-item p{color:var(--text-secondary);line-height:1.6;font-size:var(--font-size-sm)}.value-number{font-size:var(--font-size-2xl);font-weight:700;color:var(--primary-color);min-width:60px}.value-content h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}.value-content p{color:rgba(255,255,255,.8);line-height:1.6}.technology-stack{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.tech-stack-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.tech-stack-item{padding:var(--spacing-lg);text-align:center}.tech-icon{width:50px;height:50px;margin:0 auto var(--spacing-lg);color:var(--primary-color)}.why-choose-us{padding:var(--spacing-3xl) 0}.advantages-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-lg)}.advantage-item{padding:var(--spacing-lg);text-align:center}.advantage-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.contact-options{padding:var(--spacing-3xl) 0}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.contact-item{padding:var(--spacing-lg);text-align:center}.contact-icon{width:32px;height:32px;margin:0 auto var(--spacing-md);color:var(--primary-color)}.contact-link{display:inline-block;margin-top:var(--spacing-md);color:var(--primary-color);text-decoration:none;font-weight:600;padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--primary-color);border-radius:var(--radius-md);transition:all var(--transition-base)}.contact-link:hover{background:var(--primary-color);color:var(--text-primary)}.chat-btn{background:0 0;cursor:pointer}.contact-hours{margin-top:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--text-secondary)}.contact-form-section{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.form-container{max-width:800px;margin:0 auto}.form-header{text-align:center;margin-bottom:var(--spacing-2xl)}.contact-form{padding:var(--spacing-2xl)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;margin-bottom:var(--spacing-sm);color:var(--text-primary);font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:var(--spacing-md);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-md);background:rgba(255,255,255,.1);color:var(--text-primary);font-family:inherit;transition:all var(--transition-base)}.form-group select{background:rgba(255,255,255,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.form-group select option{background:rgba(13,8,33,.95);color:var(--text-primary);padding:var(--spacing-sm)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:0;border-color:var(--primary-color);background:rgba(255,255,255,.15)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-secondary)}.checkbox-group{display:flex;align-items:flex-start;gap:var(--spacing-sm)}.checkbox-label{display:flex;align-items:flex-start;gap:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-sm);line-height:1.4}.checkbox-label input[type=checkbox]{width:auto;margin:0}.checkmark{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:var(--radius-sm);background:0 0;position:relative;flex-shrink:0;margin-top:2px}.checkbox-label input[type=checkbox]:checked+.checkmark{background:var(--primary-color);border-color:var(--primary-color)}.checkbox-label input[type=checkbox]:checked+.checkmark::after{content:'✓';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--white);font-size:12px;font-weight:700}.checkbox-label a{color:var(--primary-color);text-decoration:none}.checkbox-label a:hover{text-decoration:underline}.form-actions{display:flex;gap:var(--spacing-lg);justify-content:center;margin-top:var(--spacing-xl)}.faq-section{padding:var(--spacing-3xl) 0}.faq-grid{display:grid;gap:var(--spacing-lg);max-width:800px;margin:0 auto}.faq-item{padding:0;overflow:hidden;transition:all var(--transition-base);border:1px solid transparent}.faq-item:hover{border-color:var(--primary-color);box-shadow:0 0 20px rgba(255,81,249,.2);transform:translateY(-2px)}.faq-question{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);cursor:pointer;transition:background var(--transition-base)}.faq-question h3{font-size:var(--font-size-lg);font-weight:600;margin:0}.faq-toggle{font-size:var(--font-size-2xl);font-weight:300;color:var(--primary-color);transition:transform var(--transition-base)}.faq-item.open .faq-toggle{transform:rotate(45deg)}.faq-answer{max-height:0;overflow:hidden;transition:max-height var(--transition-base)}.faq-answer p{padding:0 var(--spacing-lg) var(--spacing-lg);color:rgba(255,255,255,.8);line-height:1.6;margin:0}.response-time{padding:var(--spacing-3xl) 0;background:rgba(255,255,255,.05)}.response-content{display:grid;grid-template-columns:2fr 1fr;gap:var(--spacing-2xl);align-items:center;padding:var(--spacing-2xl)}.response-stats{display:flex;justify-content:space-around;gap:var(--spacing-lg)}.response-text h3{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-md)}.response-text p{color:rgba(255,255,255,.8);line-height:1.6}@media (max-width:768px){.product-hero-features{gap:var(--spacing-lg)}.hero-feature{font-size:var(--font-size-sm)}.packages-grid{grid-template-columns:1fr}.benefits-grid,.steps-grid{grid-template-columns:1fr;gap:var(--spacing-lg)}.story-content{grid-template-columns:1fr}.stats{flex-direction:column;gap:var(--spacing-md)}.team-stats,.values-grid{grid-template-columns:1fr 1fr!important}.form-row{grid-template-columns:1fr}.response-content{grid-template-columns:1fr;text-align:center}.response-stats{flex-direction:column;gap:var(--spacing-md)}.form-actions{flex-direction:column;align-items:center}}.legal-hero{padding:calc(var(--header-height) + var(--spacing-2xl)) 0 var(--spacing-2xl);background:linear-gradient(135deg,var(--bg-primary) 0,var(--bg-secondary) 100%);text-align:center}.legal-hero-content{max-width:800px;margin:0 auto}.legal-hero-title{font-size:clamp(2rem, 5vw, 3rem);font-weight:700;margin-bottom:var(--spacing-md);background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.legal-hero-description{font-size:1.125rem;color:var(--text-secondary);max-width:600px;margin:0 auto}.legal-content{padding:var(--spacing-2xl) 0}.legal-container{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:var(--spacing-lg)}.legal-section{padding:var(--spacing-xl)}.legal-section h2{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--primary)}.legal-section h3{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-sm);margin-top:var(--spacing-md)}.legal-section h3:first-child{margin-top:0}.legal-block{margin-bottom:var(--spacing-md)}.legal-block:last-child{margin-bottom:0}.legal-block p{color:var(--text-secondary);line-height:1.8;margin-bottom:var(--spacing-sm)}.legal-block p:last-child{margin-bottom:0}.legal-block a{color:var(--primary);text-decoration:none;transition:color var(--transition-fast)}.legal-block a:hover{color:var(--primary-light);text-decoration:underline}.legal-block ol,.legal-block ul{margin:var(--spacing-sm) 0;padding-left:var(--spacing-lg);color:var(--text-secondary)}.legal-block li{margin-bottom:var(--spacing-xs);line-height:1.7}.legal-note{font-size:.875rem;color:var(--text-muted);background:rgba(var(--primary-rgb),.1);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);border-left:3px solid var(--primary)}@media (max-width:768px){.legal-section{padding:var(--spacing-lg)}.legal-section h2{font-size:1.25rem}.legal-hero{padding:calc(var(--header-height) + var(--spacing-xl)) 0 var(--spacing-xl)}}.cookie-consent{position:fixed;bottom:0;left:0;right:0;z-index:10000;background:rgba(13,8,33,.98);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--glass-border);box-shadow:0 -10px 40px rgba(0,0,0,.3);transform:translateY(100%);opacity:0;visibility:hidden;transition:.4s cubic-bezier(.4, 0, .2, 1)}.cookie-consent.show{transform:translateY(0);opacity:1;visibility:visible}.cookie-consent.hide{transform:translateY(100%);opacity:0;visibility:hidden}.cookie-consent-container{max-width:1200px;margin:0 auto;padding:var(--spacing-xl) var(--spacing-lg);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--spacing-lg)}.cookie-consent-content{display:flex;align-items:flex-start;gap:var(--spacing-lg);flex:1;min-width:300px}.cookie-consent-icon{width:48px;height:48px;flex-shrink:0;color:var(--primary-color)}.cookie-consent-icon svg{width:100%;height:100%}.cookie-consent-text h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-primary)}.cookie-consent-text p{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.6;margin:0}.cookie-consent-text a{color:var(--primary-color);text-decoration:none;font-weight:500}.cookie-consent-text a:hover{text-decoration:underline}.cookie-consent-actions{display:flex;flex-wrap:wrap;gap:var(--spacing-md);align-items:center}.cookie-consent-actions .btn{white-space:nowrap}.btn-text{background:0 0;color:var(--text-secondary);border:none;padding:var(--spacing-sm) var(--spacing-md);font-weight:500;cursor:pointer;transition:color var(--transition-base)}.btn-text:hover{color:var(--primary-color)}.cookie-settings-panel{border-top:1px solid var(--glass-border);background:rgba(0,0,0,.3);animation:.3s ease-out slideDown}@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.cookie-settings-content{max-width:800px;margin:0 auto;padding:var(--spacing-xl) var(--spacing-lg)}.cookie-settings-content h4{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-lg);color:var(--text-primary)}.cookie-option{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) 0;border-bottom:1px solid rgba(255,255,255,.1)}.cookie-option:last-of-type{border-bottom:none}.cookie-option-info{flex:1;padding-right:var(--spacing-lg)}.cookie-option-info strong{display:block;font-size:var(--font-size-base);font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-xs)}.cookie-option-info p{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0;line-height:1.5}.cookie-toggle{position:relative;display:inline-block;width:52px;height:28px;flex-shrink:0}.cookie-toggle input{opacity:0;width:0;height:0}.cookie-toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.2);border-radius:28px;transition:all var(--transition-base)}.cookie-toggle-slider::before{position:absolute;content:"";height:22px;width:22px;left:3px;bottom:3px;background:var(--text-primary);border-radius:50%;transition:all var(--transition-base)}.cookie-toggle input:checked+.cookie-toggle-slider{background:linear-gradient(135deg,var(--primary-color),var(--accent-color-1))}.cookie-toggle input:checked+.cookie-toggle-slider::before{transform:translateX(24px)}.cookie-toggle.disabled .cookie-toggle-slider{cursor:not-allowed;opacity:.7}.cookie-toggle input:focus+.cookie-toggle-slider{box-shadow:0 0 0 3px rgba(255,81,249,.3)}.cookie-settings-actions{display:flex;gap:var(--spacing-md);justify-content:flex-end;margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px solid rgba(255,255,255,.1)}@media (max-width:768px){.cookie-consent-container{flex-direction:column;align-items:stretch;padding:var(--spacing-lg)}.cookie-consent-content{flex-direction:column;align-items:center;text-align:center}.cookie-consent-icon{width:40px;height:40px}.cookie-consent-actions{flex-direction:column;width:100%}.cookie-consent-actions .btn{width:100%;justify-content:center}.cookie-settings-actions{flex-direction:column}.cookie-settings-actions .btn{width:100%}.cookie-option{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.cookie-option-info{padding-right:0}}
\ No newline at end of file
diff --git a/public/bootstrap.php b/public/bootstrap.php
deleted file mode 100644
index 0773e5a..0000000
--- a/public/bootstrap.php
+++ /dev/null
@@ -1,73 +0,0 @@
- $backendIncludes, 'config' => $backendConfig],
- ['includes' => $publicIncludes, 'config' => $publicConfig],
- ['includes' => $publicIncludes, 'config' => $backendConfig],
- ['includes' => $backendIncludes, 'config' => $publicConfig],
- ];
- }
-
- function hexahost_is_app_root_valid(string $includesDir, string $configDir): bool
- {
- $required = [
- $includesDir . '/functions.php',
- $includesDir . '/header.php',
- $includesDir . '/footer.php',
- $configDir . '/products-config.php',
- ];
-
- foreach ($required as $file) {
- if (!is_file($file)) {
- return false;
- }
- }
-
- return true;
- }
-
- $resolved = false;
-
- foreach (hexahost_path_candidates() as $paths) {
- if (!hexahost_is_app_root_valid($paths['includes'], $paths['config'])) {
- continue;
- }
-
- define('HEXAHOST_INCLUDES_DIR', $paths['includes']);
- define('HEXAHOST_CONFIG_DIR', $paths['config']);
- require_once $paths['includes'] . '/functions.php';
- $resolved = true;
- break;
- }
-
- if (!$resolved) {
- http_response_code(500);
- header('Content-Type: text/html; charset=utf-8');
- echo 'HexaHost ';
- echo 'HexaHost: Seite konnte nicht geladen werden ';
- echo 'PHP konnte die Anwendungsdateien nicht finden.
';
- echo 'Dev-Branch: Repository mit Ordner backend/ neben public/ deployen.
';
- echo 'Produktion: Vor dem Upload scripts/sync-backend-to-public.ps1 ausführen ';
- echo 'oder backend/includes und backend/config nach public/ kopieren.
';
- echo '';
- exit;
- }
-
- define('HEXAHOST_BOOTSTRAPPED', true);
-}
diff --git a/public/config/config.php b/public/config/config.php
deleted file mode 100644
index 8edeb67..0000000
--- a/public/config/config.php
+++ /dev/null
@@ -1,17 +0,0 @@
- 'HexaHost.de Contact Form',
- 'X-Priority' => '3',
- 'X-MSMail-Priority' => 'Normal',
- 'Importance' => 'Normal',
- 'X-Report-Abuse' => 'Please report abuse here: abuse@hexahost.de',
- 'List-Unsubscribe' => '',
- 'Precedence' => 'bulk'
-]);
-
-// Erlaubte Domains für E-Mail-Adressen (optional)
-define('ALLOWED_EMAIL_DOMAINS', [
- // Leer lassen für alle Domains zu erlauben
- // 'gmail.com',
- // 'outlook.com',
- // 'web.de',
- // 'gmx.de'
-]);
-
-// Blacklist für E-Mail-Adressen (optional)
-define('BLACKLISTED_EMAILS', [
- // 'spam@example.com',
- // 'test@test.com'
-]);
-
-// Validierung der Konfiguration
-if (!defined('SMTP_HOST') || !defined('SMTP_USERNAME') || !defined('SMTP_PASSWORD')) {
- die('SMTP-Konfiguration ist unvollständig. Bitte überprüfen Sie die mail-config.php');
-}
-
-// Überprüfung der E-Mail-Adressen
-if (!filter_var(SMTP_FROM_EMAIL, FILTER_VALIDATE_EMAIL)) {
- die('Ungültige SMTP_FROM_EMAIL Adresse');
-}
-
-if (!filter_var(SMTP_TO_EMAIL, FILTER_VALIDATE_EMAIL)) {
- die('Ungültige SMTP_TO_EMAIL Adresse');
-}
-
-// Logging-Funktion
-function logEmail($type, $data) {
- if (!LOG_EMAILS) return;
-
- $logFile = __DIR__ . '/../logs/email.log';
- $logDir = dirname($logFile);
-
- if (!is_dir($logDir)) {
- mkdir($logDir, 0755, true);
- }
-
- $timestamp = date('Y-m-d H:i:s');
- $logEntry = "[$timestamp] $type: " . json_encode($data) . "\n";
-
- file_put_contents($logFile, $logEntry, FILE_APPEND | LOCK_EX);
-}
-
-// Hilfsfunktion für E-Mail-Validierung
-function isValidEmail($email) {
- if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
- return false;
- }
-
- // Prüfe Blacklist
- if (in_array($email, BLACKLISTED_EMAILS)) {
- return false;
- }
-
- // Prüfe Domain-Whitelist (falls gesetzt)
- if (!empty(ALLOWED_EMAIL_DOMAINS)) {
- $domain = substr(strrchr($email, "@"), 1);
- if (!in_array($domain, ALLOWED_EMAIL_DOMAINS)) {
- return false;
- }
- }
-
- return true;
-}
-
-// CSRF Token generieren (wird in functions.php verwendet)
-// Hinweis: Diese Funktion existiert auch in functions.php - hier nur als Fallback
-if (!function_exists('generateCSRFToken')) {
- function generateCSRFToken() {
- if (!isset($_SESSION['csrf_token'])) {
- $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
- }
- return $_SESSION['csrf_token'];
- }
-}
-
-// CSRF Token validieren
-if (!function_exists('validateCSRFToken')) {
- function validateCSRFToken($token) {
- return isset($_SESSION['csrf_token']) && hash_equals($_SESSION['csrf_token'], $token);
- }
-}
-
-/**
- * Hilfsfunktion zum Abrufen der Konfiguration als Array
- * Kompatibilität mit contact-handler.php
- *
- * @param string|null $key Optional: einzelner Schlüssel
- * @return mixed Konfigurationsarray oder einzelner Wert
- */
-function getHexaHostConfig($key = null) {
- $config = [
- // SMTP Server-Einstellungen
- 'smtp_host' => SMTP_HOST,
- 'smtp_port' => SMTP_PORT,
- 'smtp_username' => SMTP_USERNAME,
- 'smtp_password' => SMTP_PASSWORD,
- 'smtp_encryption' => 'tls',
-
- // Absender/Empfänger
- 'from_email' => SMTP_FROM_EMAIL,
- 'from_name' => 'HexaHost.de Kontaktformular',
- 'to_email' => SMTP_TO_EMAIL,
- 'to_name' => 'HexaHost Support',
-
- // Sicherheit
- 'max_requests_per_hour' => MAX_REQUESTS_PER_HOUR,
- 'honeypot_field' => 'website',
-
- // Debug
- 'debug_mode' => DEBUG_MODE,
- 'log_errors' => LOG_EMAILS,
- ];
-
- if ($key === null) {
- return $config;
- }
-
- return $config[$key] ?? null;
-}
diff --git a/public/config/products-config.php b/public/config/products-config.php
deleted file mode 100644
index 80a3040..0000000
--- a/public/config/products-config.php
+++ /dev/null
@@ -1,556 +0,0 @@
- 'Virtual Private Container',
- 'short_name' => 'VPC',
- 'description' => 'Effiziente LXC-Container auf Proxmox-Basis',
- 'min_price' => '4,99',
- 'hero_highlight' => 'auf Proxmox LXC',
- 'hero_description' => 'Erleben Sie die Effizienz von Linux-Containern mit der Zuverlässigkeit von Proxmox. Unsere VPC-Lösungen bieten optimale Performance bei minimalem Ressourcenverbrauch.',
- 'packages_title' => 'VPC Pakete',
- 'packages_description' => 'Wählen Sie das perfekte Container-Paket für Ihre Anforderungen',
- 'cta_title' => 'Bereit für Ihren VPC?',
- 'cta_description' => 'Starten Sie noch heute mit einem Virtual Private Container',
- 'page_title' => 'Virtual Private Container - Effiziente LXC Container | HexaHost.de',
- 'page_description' => 'Virtual Private Container auf Proxmox LXC-Basis. Effiziente und preiswerte Container-Lösungen ab 4,99€/Monat bei HexaHost.de',
- 'packages' => [
- 'starter' => [
- 'name' => 'VPC Starter',
- 'price' => '4,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '1 vCore'],
- ['label' => 'RAM', 'value' => '1 GB'],
- ['label' => 'SSD Speicher', 'value' => '20 GB'],
- ['label' => 'Traffic', 'value' => '1 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '1'],
- ],
- 'features' => [
- 'Proxmox LXC Container',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Backup inklusive',
- '24/7 Monitoring',
- ],
- ],
- 'business' => [
- 'name' => 'VPC Business',
- 'price' => '9,99',
- 'featured' => true,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '2 vCores'],
- ['label' => 'RAM', 'value' => '4 GB'],
- ['label' => 'SSD Speicher', 'value' => '80 GB'],
- ['label' => 'Traffic', 'value' => '3 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '1'],
- ],
- 'features' => [
- 'Proxmox LXC Container',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Tägliches Backup',
- '24/7 Monitoring',
- 'Snapshot-Funktion',
- ],
- ],
- 'professional' => [
- 'name' => 'VPC Professional',
- 'price' => '19,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '4 vCores'],
- ['label' => 'RAM', 'value' => '8 GB'],
- ['label' => 'SSD Speicher', 'value' => '160 GB'],
- ['label' => 'Traffic', 'value' => '5 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '2'],
- ],
- 'features' => [
- 'Proxmox LXC Container',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Stündliches Backup',
- '24/7 Monitoring',
- 'Snapshot-Funktion',
- 'Priority Support',
- ],
- ],
- 'enterprise' => [
- 'name' => 'VPC Enterprise',
- 'price' => '39,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '8 vCores'],
- ['label' => 'RAM', 'value' => '16 GB'],
- ['label' => 'SSD Speicher', 'value' => '320 GB'],
- ['label' => 'Traffic', 'value' => '10 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '3'],
- ],
- 'features' => [
- 'Proxmox LXC Container',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Stündliches Backup',
- '24/7 Monitoring',
- 'Snapshot-Funktion',
- 'Priority Support',
- 'Individuelle Konfiguration',
- ],
- ],
- ],
-];
-
-// ============================================================================
-// VIRTUAL PRIVATE SERVER (VPS)
-// ============================================================================
-$PRODUCTS['vps'] = [
- 'name' => 'Virtual Private Server',
- 'short_name' => 'VPS',
- 'description' => 'Vollwertige KVM-Virtualisierung mit Root-Zugriff',
- 'min_price' => '9,99',
- 'hero_highlight' => 'auf Proxmox KVM',
- 'hero_description' => 'Maximale Flexibilität und Kontrolle mit vollwertiger KVM-Virtualisierung. Installieren Sie jedes Betriebssystem und genießen Sie vollständigen Root-Zugriff.',
- 'packages_title' => 'VPS Pakete',
- 'packages_description' => 'Wählen Sie das perfekte VPS-Paket für Ihre Anforderungen',
- 'cta_title' => 'Bereit für Ihren VPS?',
- 'cta_description' => 'Starten Sie noch heute mit einem Virtual Private Server',
- 'page_title' => 'Virtual Private Server - KVM Virtualisierung | HexaHost.de',
- 'page_description' => 'Virtual Private Server auf Proxmox KVM-Basis. Vollwertige Virtualisierung mit Root-Zugriff ab 9,99€/Monat bei HexaHost.de',
- 'packages' => [
- 'starter' => [
- 'name' => 'VPS Starter',
- 'price' => '9,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '1 vCore'],
- ['label' => 'RAM', 'value' => '2 GB'],
- ['label' => 'SSD Speicher', 'value' => '40 GB'],
- ['label' => 'Traffic', 'value' => '2 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '1'],
- ],
- 'features' => [
- 'Proxmox KVM Virtualisierung',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Backup inklusive',
- '24/7 Monitoring',
- ],
- ],
- 'business' => [
- 'name' => 'VPS Business',
- 'price' => '19,99',
- 'featured' => true,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '2 vCores'],
- ['label' => 'RAM', 'value' => '4 GB'],
- ['label' => 'SSD Speicher', 'value' => '80 GB'],
- ['label' => 'Traffic', 'value' => '4 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '1'],
- ],
- 'features' => [
- 'Proxmox KVM Virtualisierung',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Tägliches Backup',
- '24/7 Monitoring',
- 'Snapshot-Funktion',
- ],
- ],
- 'professional' => [
- 'name' => 'VPS Professional',
- 'price' => '39,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '4 vCores'],
- ['label' => 'RAM', 'value' => '8 GB'],
- ['label' => 'SSD Speicher', 'value' => '160 GB'],
- ['label' => 'Traffic', 'value' => '8 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '2'],
- ],
- 'features' => [
- 'Proxmox KVM Virtualisierung',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Stündliches Backup',
- '24/7 Monitoring',
- 'Snapshot-Funktion',
- 'Priority Support',
- ],
- ],
- 'enterprise' => [
- 'name' => 'VPS Enterprise',
- 'price' => '79,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'CPU Kerne', 'value' => '8 vCores'],
- ['label' => 'RAM', 'value' => '16 GB'],
- ['label' => 'SSD Speicher', 'value' => '320 GB'],
- ['label' => 'Traffic', 'value' => '15 TB'],
- ['label' => 'IPv4 Adressen', 'value' => '3'],
- ],
- 'features' => [
- 'Proxmox KVM Virtualisierung',
- 'Root-Zugriff',
- 'SSH-Zugang',
- 'Stündliches Backup',
- '24/7 Monitoring',
- 'Snapshot-Funktion',
- 'Priority Support',
- 'Individuelle Konfiguration',
- ],
- ],
- ],
-];
-
-// ============================================================================
-// MAIL GATEWAY
-// ============================================================================
-$PRODUCTS['mail-gateway'] = [
- 'name' => 'Mail Gateway',
- 'short_name' => 'Mail',
- 'description' => 'Professioneller E-Mail-Schutz für Unternehmen',
- 'min_price' => '4,99',
- 'hero_highlight' => 'für Unternehmen',
- 'hero_description' => 'Professionelle E-Mail-Infrastruktur mit maximalem Schutz vor Spam und Malware. Sichern Sie Ihre geschäftliche Kommunikation mit unseren Mail Gateway Lösungen.',
- 'packages_title' => 'Mail Gateway Pakete',
- 'packages_description' => 'Wählen Sie das passende Mail Gateway Paket für Ihr Unternehmen',
- 'cta_title' => 'Bereit für professionelle E-Mail-Kommunikation?',
- 'cta_description' => 'Starten Sie noch heute mit unserem Mail Gateway',
- 'page_title' => 'Mail Gateway - Professionelle E-Mail-Lösungen | HexaHost.de',
- 'page_description' => 'Professionelle Mail Gateway Lösungen für Unternehmen. Spam-Schutz, E-Mail-Archivierung und sichere E-Mail-Kommunikation bei HexaHost.de',
- 'packages' => [
- 'starter' => [
- 'name' => 'Mail Starter',
- 'price' => '4,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'Postfächer', 'value' => '5'],
- ['label' => 'Speicher/Postfach', 'value' => '5 GB'],
- ['label' => 'Domains', 'value' => '1'],
- ['label' => 'E-Mails/Tag', 'value' => '500'],
- ],
- 'features' => [
- 'Spam-Filter',
- 'Virus-Schutz',
- 'Webmail',
- 'IMAP/POP3',
- 'SSL/TLS Verschlüsselung',
- ],
- ],
- 'business' => [
- 'name' => 'Mail Business',
- 'price' => '14,99',
- 'featured' => true,
- 'specs' => [
- ['label' => 'Postfächer', 'value' => '25'],
- ['label' => 'Speicher/Postfach', 'value' => '10 GB'],
- ['label' => 'Domains', 'value' => '3'],
- ['label' => 'E-Mails/Tag', 'value' => '2.000'],
- ],
- 'features' => [
- 'Spam-Filter (erweitert)',
- 'Virus-Schutz',
- 'Webmail',
- 'IMAP/POP3',
- 'SSL/TLS Verschlüsselung',
- ],
- ],
- 'professional' => [
- 'name' => 'Mail Professional',
- 'price' => '29,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'Postfächer', 'value' => '100'],
- ['label' => 'Speicher/Postfach', 'value' => '25 GB'],
- ['label' => 'Domains', 'value' => '10'],
- ['label' => 'E-Mails/Tag', 'value' => '10.000'],
- ],
- 'features' => [
- 'Spam-Filter (KI-gestützt)',
- 'Virus-Schutz',
- 'Webmail',
- 'IMAP/POP3',
- 'SSL/TLS Verschlüsselung',
- ],
- ],
- 'enterprise' => [
- 'name' => 'Mail Enterprise',
- 'price' => '59,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'Postfächer', 'value' => 'Unbegrenzt'],
- ['label' => 'Speicher/Postfach', 'value' => '50 GB'],
- ['label' => 'Domains', 'value' => 'Unbegrenzt'],
- ['label' => 'E-Mails/Tag', 'value' => 'Unbegrenzt'],
- ],
- 'features' => [
- 'Spam-Filter (KI-gestützt)',
- 'Virus-Schutz',
- 'Webmail',
- 'IMAP/POP3',
- 'SSL/TLS Verschlüsselung',
- 'Dedizierte IP',
- 'Priority Support',
- ],
- ],
- ],
-];
-
-// ============================================================================
-// WEBHOSTING
-// ============================================================================
-$PRODUCTS['webhosting'] = [
- 'name' => 'Webhosting',
- 'short_name' => 'Webhosting',
- 'description' => 'Klassisches Hosting mit PHP, MySQL und SSL. WordPress-ready mit Plesk Webhosting.',
- 'min_price' => '2,99',
- 'hero_highlight' => 'Alles für Ihre Website',
- 'hero_description' => 'Klassisches Webhosting mit allem, was Sie für eine erfolgreiche Website benötigen. PHP, MySQL, SSL-Zertifikate und E-Mail-Postfächer - alles inklusive.',
- 'packages_title' => 'Webhosting Pakete',
- 'packages_description' => 'Von der ersten Website bis zum professionellen Online-Shop',
- 'cta_title' => 'Bereit für Ihr Webhosting?',
- 'cta_description' => 'Starten Sie noch heute mit professionellem Webhosting',
- 'page_title' => 'Webhosting - Klassisches Hosting für Websites - WordPress-ready | HexaHost.de',
- 'page_description' => 'Webhosting mit PHP, MySQL und SSL-Zertifikaten. Klassisches Hosting für Websites - WordPress-ready ab 2,99€/Monat bei HexaHost.de',
- 'packages' => [
- 'starter' => [
- 'name' => 'Webhosting Starter',
- 'price' => '2,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'Webspace', 'value' => '10 GB'],
- ['label' => 'Domains', 'value' => '1'],
- ['label' => 'Subdomains', 'value' => '5'],
- ['label' => 'Domain Aliase', 'value' => '2'],
- ['label' => 'E-Mail-Postfächer', 'value' => '10'],
- ['label' => 'Datenbanken', 'value' => '2 MySQL'],
- ['label' => 'Traffic', 'value' => '100 GB'],
- ],
- 'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
- 'SSL-Zertifikat',
- 'E-Mail-Postfächer',
- 'MySQL Datenbanken',
- ],
- ],
- 'business' => [
- 'name' => 'Webhosting Business',
- 'price' => '7,99',
- 'featured' => true,
- 'specs' => [
- ['label' => 'Webspace', 'value' => '30 GB'],
- ['label' => 'Domains Inkl.', 'value' => '1'],
- ['label' => 'Subdomains', 'value' => '10'],
- ['label' => 'Domain Aliase', 'value' => '2'],
- ['label' => 'E-Mail-Postfächer', 'value' => '20'],
- ['label' => 'Datenbanken', 'value' => '5 MySQL'],
- ['label' => 'Traffic', 'value' => '100 GB'],
- ],
- 'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
- 'SSL-Zertifikat',
- 'E-Mail-Postfächer',
- 'MySQL Datenbanken',
- 'Backup-Service',
- ],
- ],
- 'professional' => [
- 'name' => 'Webhosting Professional',
- 'price' => '13,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'Webspace', 'value' => '50 GB'],
- ['label' => 'Domains Inkl.', 'value' => '1'],
- ['label' => 'Subdomains', 'value' => 'unbegrenzt'],
- ['label' => 'Domain Aliase', 'value' => 'unbegrenzt'],
- ['label' => 'E-Mail-Postfächer', 'value' => '20'],
- ['label' => 'Datenbanken', 'value' => '20 MySQL'],
- ['label' => 'Traffic', 'value' => '100 GB'],
- ],
- 'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
- 'SSL-Zertifikat',
- 'E-Mail-Postfächer',
- 'MySQL Datenbanken',
- 'Backup-Service',
- 'Priority Support',
- ],
- ],
- 'enterprise' => [
- 'name' => 'Webhosting Enterprise',
- 'price' => '19,99',
- 'featured' => false,
- 'specs' => [
- ['label' => 'Webspace', 'value' => '100 GB'],
- ['label' => 'Domains Inkl.', 'value' => '3'],
- ['label' => 'Subdomains', 'value' => 'unbegrenzt'],
- ['label' => 'Domain Aliase', 'value' => 'unbegrenzt'],
- ['label' => 'E-Mail-Postfächer', 'value' => '100'],
- ['label' => 'Datenbanken', 'value' => 'Unbegrenzt'],
- ['label' => 'Traffic', 'value' => '1 TB'],
- ],
- 'features' => [
- 'Plesk Webhosting',
- 'PHP 8.4',
- 'Git, WP Toolkit, Composer',
- 'SSL-Zertifikat',
- 'E-Mail-Postfächer',
- 'MySQL Datenbanken',
- 'Backup-Service',
- 'Priority Support',
- 'Individuelle Konfiguration',
- ],
- ],
- ],
-];
-
-// ============================================================================
-// HILFSFUNKTIONEN
-// ============================================================================
-
-/**
- * Alle Produkte abrufen
- */
-function getAllProducts() {
- global $PRODUCTS;
- return $PRODUCTS;
-}
-
-/**
- * Ein Produkt abrufen
- */
-function getProduct($productId) {
- global $PRODUCTS;
- return $PRODUCTS[$productId] ?? null;
-}
-
-/**
- * Prüft, ob ein Produkt im Shop angezeigt werden soll
- */
-function isProductVisible($productId) {
- global $HIDDEN_PRODUCTS;
- return !in_array($productId, $HIDDEN_PRODUCTS, true);
-}
-
-/**
- * Alle Pakete eines Produkts abrufen
- */
-function getProductPackages($productId) {
- global $PRODUCTS;
- return $PRODUCTS[$productId]['packages'] ?? [];
-}
-
-/**
- * Ein bestimmtes Paket abrufen
- */
-function getPackage($productId, $packageId) {
- global $PRODUCTS;
- return $PRODUCTS[$productId]['packages'][$packageId] ?? null;
-}
-
-/**
- * Preis eines Pakets abrufen
- */
-function getPackagePrice($productId, $packageId) {
- $package = getPackage($productId, $packageId);
- return $package['price'] ?? null;
-}
-
-/**
- * Minimalen Preis eines Produkts abrufen
- */
-function getMinPrice($productId) {
- global $PRODUCTS;
- return $PRODUCTS[$productId]['min_price'] ?? null;
-}
-
-/**
- * Preis formatiert ausgeben
- */
-function formatPrice($price, $withCurrency = true) {
- return $withCurrency ? $price . '€' : $price;
-}
-
-/**
- * Generiert HTML für eine Paket-Karte
- */
-function renderPackageCard($productId, $packageId, $package) {
- $featuredClass = $package['featured'] ? ' featured' : '';
- $featuredBadge = $package['featured'] ? 'Beliebt
' : '';
-
- $specsHtml = '';
- foreach ($package['specs'] as $spec) {
- $specsHtml .= sprintf(
- '%s: %s
',
- htmlspecialchars($spec['label']),
- htmlspecialchars($spec['value'])
- );
- }
-
- $featuresHtml = '';
- foreach ($package['features'] as $feature) {
- $featuresHtml .= sprintf('✓ %s
', htmlspecialchars($feature));
- }
-
- return sprintf('
- ',
- $featuredClass,
- $featuredBadge,
- htmlspecialchars($package['name']),
- $package['price'],
- $specsHtml,
- $featuresHtml,
- $productId,
- $packageId
- );
-}
-
-/**
- * Generiert HTML für alle Pakete eines Produkts
- */
-function renderAllPackages($productId) {
- $packages = getProductPackages($productId);
- $html = '';
- foreach ($packages as $packageId => $package) {
- $html .= renderPackageCard($productId, $packageId, $package);
- }
- return $html;
-}
-
diff --git a/public/config/site-config.php b/public/config/site-config.php
deleted file mode 100644
index 711eb1e..0000000
--- a/public/config/site-config.php
+++ /dev/null
@@ -1,81 +0,0 @@
-
- */
-function getAllowedOrigins()
-{
- return [
- 'https://' . SITE_DOMAIN_PRODUCTION,
- 'https://www.' . SITE_DOMAIN_PRODUCTION,
- 'https://' . SITE_DOMAIN_DEVELOPMENT,
- 'http://localhost',
- 'http://127.0.0.1',
- 'http://localhost:8000',
- ];
-}
-
-/**
- * Kanonische Basis-URL für SEO (Produktion immer hexahost.de)
- *
- * @return string
- */
-function getCanonicalBaseUrl()
-{
- return 'https://' . SITE_DOMAIN_PRODUCTION;
-}
diff --git a/public/contact-handler.php b/public/contact-handler.php
index 600378f..ca47f74 100644
--- a/public/contact-handler.php
+++ b/public/contact-handler.php
@@ -9,10 +9,8 @@ if (session_status() === PHP_SESSION_NONE) {
session_start();
}
-require_once __DIR__ . '/bootstrap.php';
-
-$configDir = defined('HEXAHOST_CONFIG_DIR') ? HEXAHOST_CONFIG_DIR : __DIR__ . '/config';
-require_once $configDir . '/mail-config.php';
+// Konfiguration laden
+require_once 'config/mail-config.php';
// PHPMailer Autoload (falls via Composer installiert)
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
@@ -45,8 +43,13 @@ function validateCSRFToken($token) {
return false;
}
-// CORS Headers für AJAX-Requests (nur eigene Domains erlauben)
-$allowed_origins = getAllowedOrigins();
+// CORS Headers für AJAX-Requests (nur eigene Domain erlauben)
+$allowed_origins = [
+ 'https://hexahost.de',
+ 'https://www.hexahost.de',
+ 'http://localhost', // Für Entwicklung
+ 'http://127.0.0.1' // Für Entwicklung
+];
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
if (in_array($origin, $allowed_origins)) {
diff --git a/public/contact.php b/public/contact.php
index dedf21d..2a3d0bb 100644
--- a/public/contact.php
+++ b/public/contact.php
@@ -1,6 +1,5 @@
Bitte wählen...
Allgemeine Anfrage
-
Virtual Private Container
-
-
Virtual Private Server
-
Mail Gateway
Webhosting
IT-Beratung
diff --git a/public/datenschutz.php b/public/datenschutz.php
index b9f8377..d69959a 100644
--- a/public/datenschutz.php
+++ b/public/datenschutz.php
@@ -1,5 +1,5 @@
Impressum
- Rechtliche Angaben und Pflichtinformationen gemäß § 5 DDG
+
diff --git a/public/includes/footer.php b/public/includes/footer.php
deleted file mode 100644
index b00634e..0000000
--- a/public/includes/footer.php
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cookie-Einstellungen
-
- Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung auf unserer Website zu bieten.
- Technisch notwendige Cookies sind für die Funktionalität erforderlich.
- Mehr erfahren
-
-
-
-
- Alle akzeptieren
- Nur notwendige
- Einstellungen
-
-
-
-
-
-
-
Cookie-Einstellungen
-
-
-
Notwendige Cookies
-
Diese Cookies sind für die Grundfunktionen der Website erforderlich.
-
-
-
-
-
-
-
-
-
Analyse-Cookies
-
Helfen uns zu verstehen, wie Besucher unsere Website nutzen.
-
-
-
-
-
-
-
-
-
Marketing-Cookies
-
Werden verwendet, um relevante Werbung anzuzeigen.
-
-
-
-
-
-
-
- Einstellungen speichern
- Abbrechen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/includes/functions.php b/public/includes/functions.php
deleted file mode 100644
index 9ed31ce..0000000
--- a/public/includes/functions.php
+++ /dev/null
@@ -1,163 +0,0 @@
- 'Home', 'url' => 'index.html'], ...]
- */
-function generateBreadcrumbs($breadcrumbs) {
- echo '';
- $last_index = count($breadcrumbs) - 1;
-
- foreach ($breadcrumbs as $index => $item) {
- if ($index === $last_index) {
- // Last item (current page)
- echo '
' . htmlspecialchars($item['title']) . ' ';
- } else {
- // Link to other pages
- echo '
' . htmlspecialchars($item['title']) . ' ';
- echo '
/ ';
- }
- }
- echo '
';
-}
-
-/**
- * Generate CSRF token for form security
- *
- * @return string CSRF token
- */
-function generateCSRFToken() {
- if (!isset($_SESSION['csrf_token'])) {
- $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
- }
- return $_SESSION['csrf_token'];
-}
diff --git a/public/includes/header.php b/public/includes/header.php
deleted file mode 100644
index 2f74089..0000000
--- a/public/includes/header.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/index.php b/public/index.php
index f5700e5..d32ca7d 100644
--- a/public/index.php
+++ b/public/index.php
@@ -1,6 +1,5 @@
-
@@ -76,8 +74,6 @@ includeHeader($page_title, $page_description, $current_page);
Mehr erfahren
-
-
@@ -96,7 +92,6 @@ includeHeader($page_title, $page_description, $current_page);
Mehr erfahren
-
@@ -156,7 +151,7 @@ includeHeader($page_title, $page_description, $current_page);
-
+
-
+
IT-Beratung
Individuelle Beratung für sinnvolle und wirtschaftliche IT-Entscheidungen.
diff --git a/public/it-dienstleistungen.php b/public/it-dienstleistungen.php
index 831a9cd..7cd8237 100644
--- a/public/it-dienstleistungen.php
+++ b/public/it-dienstleistungen.php
@@ -1,5 +1,5 @@
-
Plesk Webhosting
-
Plesk Webhosting ist eine benutzerfreundliche Verwaltungsoberfläche für einfache Website-Verwaltung und E-Mail-Konfiguration.
+
cPanel/Webmin
+
Benutzerfreundliche Verwaltungsoberfläche für einfache Website-Verwaltung und E-Mail-Konfiguration.
diff --git a/public/widerruf.php b/public/widerruf.php
index c8ee57f..cba182a 100644
--- a/public/widerruf.php
+++ b/public/widerruf.php
@@ -1,5 +1,5 @@
public/includes und public/config synchronisiert."