diff --git a/.htaccess b/.htaccess
new file mode 100644
index 00000000..b9b9dbbb
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,30 @@
+# Atomaste Static Site
+Options -Indexes
+
+# Redirect old broken URLs to homepage
+RedirectMatch 301 ^/custom-telescope-mirror-support.*$ /
+RedirectMatch 301 ^/product.*$ /
+RedirectMatch 301 ^/shop.*$ /
+
+# Redirect to index.html as default
+DirectoryIndex index.html
+
+# Enable GZIP compression
+
+ AddOutputFilterByType DEFLATE text/html text/css application/javascript image/svg+xml
+
+
+# Cache static assets
+
+ ExpiresActive On
+ ExpiresByType image/png "access plus 1 month"
+ ExpiresByType image/svg+xml "access plus 1 month"
+ ExpiresByType text/css "access plus 1 week"
+
+
+# Security Headers
+
+ Header set X-Content-Type-Options "nosniff"
+ Header set X-Frame-Options "SAMEORIGIN"
+ Header set Referrer-Policy "strict-origin-when-cross-origin"
+
diff --git a/fr.html b/fr.html
index 49b50f03..c17565c1 100644
--- a/fr.html
+++ b/fr.html
@@ -258,9 +258,119 @@ body {
@media (max-width: 768px) {
.hero-title { font-size: 2.5rem; }
}
+
+/* Accessibility: Reduced Motion */
+@media (prefers-reduced-motion: reduce) {
+ *, *::before, *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ }
+ .grid-bg { animation: none; }
+ .glow-orb { animation: none; }
+ .float, .float-delay, .float-reverse { animation: none; }
+ .pulse-glow { animation: none; }
+ .neural-dot { animation: none; }
+ .scan-line::after { animation: none; }
+ html { scroll-behavior: auto; }
+}
+
+/* Accessibility: Focus States */
+*:focus-visible {
+ outline: 2px solid var(--cyan-primary);
+ outline-offset: 2px;
+}
+a:focus-visible, button:focus-visible {
+ outline: 2px solid var(--cyan-primary);
+ outline-offset: 2px;
+ border-radius: 4px;
+}
+
+/* Skip to Content Link */
+.skip-link {
+ position: absolute;
+ top: -40px;
+ left: 0;
+ background: var(--cyan-primary);
+ color: #000;
+ padding: 8px 16px;
+ z-index: 100;
+ font-weight: 600;
+ transition: top 0.3s;
+}
+.skip-link:focus {
+ top: 0;
+}
+
+/* Back to Top Button */
+.back-to-top {
+ position: fixed;
+ bottom: 2rem;
+ right: 2rem;
+ width: 48px;
+ height: 48px;
+ border-radius: 50%;
+ background: rgba(0, 212, 230, 0.9);
+ color: #000;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ opacity: 0;
+ visibility: hidden;
+ transform: translateY(20px);
+ transition: all 0.3s ease;
+ z-index: 50;
+ border: none;
+ cursor: pointer;
+}
+.back-to-top.visible {
+ opacity: 1;
+ visibility: visible;
+ transform: translateY(0);
+}
+.back-to-top:hover {
+ background: var(--cyan-primary);
+ box-shadow: 0 0 20px rgba(0, 212, 230, 0.5);
+}
+
+/* Contact Form Styles */
+.contact-form input,
+.contact-form textarea,
+.contact-form select {
+ width: 100%;
+ padding: 1rem;
+ background: rgba(10, 20, 35, 0.6);
+ border: 1px solid rgba(0, 212, 230, 0.2);
+ border-radius: 0.75rem;
+ color: #fff;
+ font-family: inherit;
+ transition: all 0.3s ease;
+}
+.contact-form input:focus,
+.contact-form textarea:focus,
+.contact-form select:focus {
+ outline: none;
+ border-color: var(--cyan-primary);
+ box-shadow: 0 0 0 3px rgba(0, 212, 230, 0.1);
+}
+.contact-form input::placeholder,
+.contact-form textarea::placeholder {
+ color: #6b7280;
+}
+.contact-form label {
+ display: block;
+ margin-bottom: 0.5rem;
+ color: #9ca3af;
+ font-size: 0.875rem;
+}
+.contact-form select option {
+ background: #0a1428;
+ color: #fff;
+}
+ Aller au contenu principal
@@ -277,7 +387,7 @@ body {