|
9 | 9 | <meta name="robots" content="index, follow"> |
10 | 10 | <meta name="theme-color" content="#0B1929"> |
11 | 11 | <link rel="canonical" href="https://secureshare-relay.duckdns.org/"> |
| 12 | + <!-- Hreflang (multilingual single-page) --> |
| 13 | + <link rel="alternate" hreflang="uk" href="https://secureshare-relay.duckdns.org/"> |
| 14 | + <link rel="alternate" hreflang="en" href="https://secureshare-relay.duckdns.org/"> |
| 15 | + <link rel="alternate" hreflang="de" href="https://secureshare-relay.duckdns.org/"> |
| 16 | + <link rel="alternate" hreflang="x-default" href="https://secureshare-relay.duckdns.org/"> |
12 | 17 | <!-- Open Graph --> |
13 | 18 | <meta property="og:title" content="SecureShare — Безпечна передача файлів"> |
14 | 19 | <meta property="og:description" content="E2E шифрування. Без реєстрації. Без хмари. До 5 ГБ."> |
|
63 | 68 | ] |
64 | 69 | } |
65 | 70 | </script> |
| 71 | + <script type="application/ld+json"> |
| 72 | + { |
| 73 | + "@context": "https://schema.org", |
| 74 | + "@type": "FAQPage", |
| 75 | + "mainEntity": [ |
| 76 | + { |
| 77 | + "@type": "Question", |
| 78 | + "name": "Are my files really encrypted?", |
| 79 | + "acceptedAnswer": { |
| 80 | + "@type": "Answer", |
| 81 | + "text": "Yes. Every file is encrypted on the sender's device using AES-256-GCM with a unique key generated via X25519. The relay server only sees encrypted data and has no way to decrypt it." |
| 82 | + } |
| 83 | + }, |
| 84 | + { |
| 85 | + "@type": "Question", |
| 86 | + "name": "What is the maximum file size?", |
| 87 | + "acceptedAnswer": { |
| 88 | + "@type": "Answer", |
| 89 | + "text": "Up to 5 GB. Files are transferred in 256 KB chunks with interrupted transfer resumption — even if the connection drops, you don't need to start over." |
| 90 | + } |
| 91 | + }, |
| 92 | + { |
| 93 | + "@type": "Question", |
| 94 | + "name": "Is registration required?", |
| 95 | + "acceptedAnswer": { |
| 96 | + "@type": "Answer", |
| 97 | + "text": "No. Just download the app, choose a file, and share the session code with the recipient. No account, email, or phone needed." |
| 98 | + } |
| 99 | + }, |
| 100 | + { |
| 101 | + "@type": "Question", |
| 102 | + "name": "What is the verification code?", |
| 103 | + "acceptedAnswer": { |
| 104 | + "@type": "Answer", |
| 105 | + "text": "After connecting, both participants see the same 8-character code. If the codes match — the connection is secure. This protects against man-in-the-middle (MITM) attacks." |
| 106 | + } |
| 107 | + }, |
| 108 | + { |
| 109 | + "@type": "Question", |
| 110 | + "name": "Which operating systems are supported?", |
| 111 | + "acceptedAnswer": { |
| 112 | + "@type": "Answer", |
| 113 | + "text": "Windows 10/11 and Linux (x64). The app requires no installation — just download and run." |
| 114 | + } |
| 115 | + }, |
| 116 | + { |
| 117 | + "@type": "Question", |
| 118 | + "name": "Are files stored on the server?", |
| 119 | + "acceptedAnswer": { |
| 120 | + "@type": "Answer", |
| 121 | + "text": "No. The relay server only forwards encrypted packets between participants in real time. After the transfer is complete — zero traces. Session codes are hashed and not logged." |
| 122 | + } |
| 123 | + } |
| 124 | + ] |
| 125 | + } |
| 126 | + </script> |
66 | 127 | <style> |
67 | 128 | /* ── Reset & Base ─────────────────────────────── */ |
68 | 129 | *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } |
|
190 | 251 | .btn-secondary:hover { background: rgba(255,255,255,.15); } |
191 | 252 | .hero-buttons { display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; } |
192 | 253 |
|
| 254 | + /* ── Sticky Nav ───────────────────────────────── */ |
| 255 | + .site-nav { |
| 256 | + position: sticky; |
| 257 | + top: 0; |
| 258 | + z-index: 900; |
| 259 | + background: rgba(255,255,255,.92); |
| 260 | + backdrop-filter: blur(12px); |
| 261 | + -webkit-backdrop-filter: blur(12px); |
| 262 | + border-bottom: 1px solid rgba(0,0,0,.06); |
| 263 | + padding: 0; |
| 264 | + transition: box-shadow .2s; |
| 265 | + } |
| 266 | + .site-nav.scrolled { |
| 267 | + box-shadow: 0 2px 16px rgba(0,0,0,.08); |
| 268 | + } |
| 269 | + [data-theme="dark"] .site-nav { |
| 270 | + background: rgba(15,18,24,.92); |
| 271 | + border-bottom-color: rgba(255,255,255,.06); |
| 272 | + } |
| 273 | + [data-theme="dark"] .site-nav.scrolled { |
| 274 | + box-shadow: 0 2px 16px rgba(0,0,0,.4); |
| 275 | + } |
| 276 | + .nav-inner { |
| 277 | + display: flex; |
| 278 | + justify-content: center; |
| 279 | + gap: 8px; |
| 280 | + overflow-x: auto; |
| 281 | + scrollbar-width: none; |
| 282 | + -ms-overflow-style: none; |
| 283 | + padding: 0 8px; |
| 284 | + } |
| 285 | + .nav-inner::-webkit-scrollbar { display: none; } |
| 286 | + .nav-inner a { |
| 287 | + padding: 14px 16px; |
| 288 | + font-size: .85rem; |
| 289 | + font-weight: 500; |
| 290 | + color: var(--gray); |
| 291 | + white-space: nowrap; |
| 292 | + text-decoration: none; |
| 293 | + transition: color .2s; |
| 294 | + border-bottom: 2px solid transparent; |
| 295 | + } |
| 296 | + .nav-inner a:hover { |
| 297 | + color: var(--blue); |
| 298 | + text-decoration: none; |
| 299 | + } |
| 300 | + .nav-inner a.active { |
| 301 | + color: var(--blue); |
| 302 | + border-bottom-color: var(--blue); |
| 303 | + font-weight: 600; |
| 304 | + } |
| 305 | + [data-theme="dark"] .nav-inner a { color: #94A3B8; } |
| 306 | + [data-theme="dark"] .nav-inner a:hover, |
| 307 | + [data-theme="dark"] .nav-inner a.active { color: #64B5F6; border-bottom-color: #64B5F6; } |
| 308 | + |
| 309 | + @media (max-width: 768px) { |
| 310 | + .nav-inner { gap: 0; } |
| 311 | + .nav-inner a { padding: 12px 10px; font-size: .78rem; } |
| 312 | + } |
| 313 | + |
193 | 314 | /* ── Features ──────────────────────────────────── */ |
194 | 315 | .features { |
195 | 316 | padding: 100px 0; |
@@ -1057,6 +1178,19 @@ <h1>Secure<span>Share</span></h1> |
1057 | 1178 | </div> |
1058 | 1179 | </section> |
1059 | 1180 |
|
| 1181 | + <!-- Sticky Navigation (SEO + UX) --> |
| 1182 | + <nav class="site-nav" id="siteNav" aria-label="Main navigation"> |
| 1183 | + <div class="container nav-inner"> |
| 1184 | + <a href="#features" data-i18n="nav_features">Можливості</a> |
| 1185 | + <a href="#how" data-i18n="nav_how">Як працює</a> |
| 1186 | + <a href="#preview" data-i18n="nav_preview">Демо</a> |
| 1187 | + <a href="#security" data-i18n="nav_security">Безпека</a> |
| 1188 | + <a href="#faq" data-i18n="nav_faq">FAQ</a> |
| 1189 | + <a href="#changelog" data-i18n="nav_changelog">Версії</a> |
| 1190 | + <a href="#support" data-i18n="nav_support">Підтримка</a> |
| 1191 | + </div> |
| 1192 | + </nav> |
| 1193 | + |
1060 | 1194 | <!-- Features --> |
1061 | 1195 | <section class="features" id="features"> |
1062 | 1196 | <div class="container"> |
|
0 commit comments