Files
navi/Site/index.html
T
NavisandCursor 50f7f71393 Add site contacts/FAQ and accept AWG 2.0 / naive pastes in Add config.
ImportSubscription no longer requires only http(s): paste awg://, AWG .conf/JSON, or naive links; subscription parser also reads hosted AWG and Clash wireguard/naive. Site lists support emails and FAQ; Store listing texts/tools updated.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-02 15:40:13 +03:00

651 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru" data-lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>EvilFox — Apps</title>
<meta name="description" content="EvilFox — приложения для безопасного и удобного интернета. EvilFox VPN и другие продукты." />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@500;700;800&family=Manrope:wght@400;600;700&display=swap" rel="stylesheet" />
<style>
:root {
--bg0: #061018;
--bg1: #0a1c24;
--ink: #e8f4f7;
--muted: #8aa8b3;
--accent: #22d3ee;
--accent-deep: #0e7490;
--glow: rgba(34, 211, 238, 0.35);
--line: rgba(232, 244, 247, 0.12);
--panel: rgba(10, 28, 36, 0.55);
--ease: cubic-bezier(.22, 1, .36, 1);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
min-height: 100vh;
font-family: Manrope, system-ui, sans-serif;
color: var(--ink);
background: var(--bg0);
overflow-x: hidden;
}
/* Full-bleed atmospheric plane */
.stage {
position: relative;
min-height: 100vh;
isolation: isolate;
background:
radial-gradient(1200px 700px at 78% 18%, rgba(14, 116, 144, 0.45) 0%, transparent 58%),
radial-gradient(900px 600px at 12% 80%, rgba(8, 90, 110, 0.35) 0%, transparent 55%),
linear-gradient(165deg, #041015 0%, #0a1c24 48%, #07141a 100%);
}
.stage::before {
content: "";
position: absolute; inset: 0; z-index: -1; pointer-events: none;
background-image:
linear-gradient(rgba(232,244,247,0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(232,244,247,0.03) 1px, transparent 1px);
background-size: 64px 64px;
mask-image: radial-gradient(ellipse 80% 70% at 50% 40%, #000 20%, transparent 75%);
animation: gridDrift 28s linear infinite;
}
@keyframes gridDrift {
from { transform: translateY(0); }
to { transform: translateY(64px); }
}
.orb {
position: absolute; border-radius: 50%; filter: blur(40px); pointer-events: none; z-index: -1;
animation: float 12s var(--ease) infinite alternate;
}
.orb-a { width: 380px; height: 380px; top: -8%; right: 8%; background: var(--glow); }
.orb-b { width: 260px; height: 260px; bottom: 12%; left: 6%; background: rgba(14,116,144,.4); animation-delay: -4s; }
@keyframes float {
from { transform: translate3d(0,0,0) scale(1); }
to { transform: translate3d(12px, -22px, 0) scale(1.06); }
}
.top {
display: flex; align-items: center; justify-content: space-between;
gap: 16px; padding: 22px clamp(20px, 4vw, 48px);
max-width: 1200px; margin: 0 auto;
}
.logo {
display: flex; align-items: center; gap: 12px; text-decoration: none; color: inherit;
}
.mark {
width: 42px; height: 42px; border-radius: 13px;
display: grid; place-items: center; font-size: 1.35rem;
background: linear-gradient(145deg, #0e7490, #22d3ee);
box-shadow: 0 12px 28px rgba(8, 145, 178, 0.35);
}
.word {
font-family: Outfit, sans-serif; font-weight: 800; font-size: 1.35rem;
letter-spacing: -0.045em; line-height: 1;
}
.lang {
display: inline-flex; padding: 4px; border-radius: 999px;
border: 1px solid var(--line); background: rgba(0,0,0,.25);
}
.lang button {
border: 0; background: transparent; color: var(--muted);
font: inherit; font-weight: 700; font-size: .8rem;
padding: 8px 14px; border-radius: 999px; cursor: pointer;
transition: background .2s, color .2s;
}
.lang button[aria-pressed="true"] {
background: rgba(34, 211, 238, 0.18); color: var(--accent);
}
/* Hero: brand-first, one composition */
.hero {
max-width: 1200px; margin: 0 auto;
padding: clamp(20px, 4vh, 48px) clamp(20px, 4vw, 48px) clamp(40px, 7vh, 72px);
display: grid;
grid-template-columns: 1.1fr 0.9fr;
gap: clamp(28px, 5vw, 64px);
align-items: center;
}
@media (max-width: 900px) {
.hero { grid-template-columns: 1fr; align-items: start; }
.visual { order: -1; min-height: 280px; }
}
.eyebrow {
display: inline-block; font-size: .75rem; font-weight: 700; letter-spacing: .12em;
text-transform: uppercase; color: var(--accent); margin: 0 0 14px;
opacity: 0; animation: rise .7s var(--ease) .05s forwards;
}
.brand-title {
font-family: Outfit, sans-serif;
font-size: clamp(3.2rem, 8vw, 5.6rem);
font-weight: 800; letter-spacing: -0.06em; line-height: .92;
margin: 0 0 18px;
opacity: 0; animation: rise .8s var(--ease) .12s forwards;
}
.lead {
max-width: 42ch; font-size: clamp(1.05rem, 2vw, 1.22rem);
color: var(--muted); margin: 0 0 14px; font-weight: 500;
opacity: 0; animation: rise .8s var(--ease) .22s forwards;
}
.desc {
max-width: 48ch; margin: 0 0 22px; color: rgba(232, 244, 247, 0.88);
font-size: .98rem; line-height: 1.55;
opacity: 0; animation: rise .8s var(--ease) .26s forwards;
}
.points {
list-style: none; margin: 0 0 26px; padding: 0;
display: grid; gap: 10px;
opacity: 0; animation: rise .8s var(--ease) .3s forwards;
}
.points li {
display: flex; gap: 10px; align-items: flex-start;
color: var(--muted); font-size: .92rem; line-height: 1.45;
}
.points li::before {
content: ""; flex: 0 0 8px; height: 8px; margin-top: .45em;
border-radius: 50%; background: var(--accent);
box-shadow: 0 0 0 4px rgba(34,211,238,.15);
}
.cta-row {
display: flex; flex-wrap: wrap; gap: 12px;
opacity: 0; animation: rise .8s var(--ease) .36s forwards;
}
.btn {
display: inline-flex; align-items: center; justify-content: center; gap: 8px;
text-decoration: none; font-weight: 700; font-size: .95rem;
padding: 14px 22px; border-radius: 14px; border: 1px solid transparent;
transition: transform .2s var(--ease), box-shadow .2s, background .2s;
}
.btn:hover { transform: translateY(-2px); }
.btn-primary {
color: #042028; background: linear-gradient(135deg, #67e8f9, #22d3ee);
box-shadow: 0 14px 36px rgba(34, 211, 238, 0.28);
}
.btn-ghost {
color: var(--ink); border-color: var(--line); background: rgba(255,255,255,.04);
}
@keyframes rise {
from { opacity: 0; transform: translateY(18px); }
to { opacity: 1; transform: translateY(0); }
}
.visual {
position: relative;
border-radius: 28px;
min-height: 420px;
background:
linear-gradient(160deg, rgba(34,211,238,.12), transparent 45%),
linear-gradient(20deg, rgba(14,116,144,.2), transparent 40%),
var(--panel);
border: 1px solid var(--line);
backdrop-filter: blur(16px);
overflow: hidden;
opacity: 0; animation: rise .9s var(--ease) .18s forwards;
}
.visual-inner {
position: absolute; inset: 0;
display: grid; place-items: center;
padding: 32px;
}
.device {
width: min(100%, 340px);
aspect-ratio: 10 / 14;
border-radius: 22px;
background: linear-gradient(180deg, #0c222c, #07151c);
border: 1px solid rgba(34,211,238,.25);
box-shadow: 0 30px 60px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.06);
padding: 22px 18px;
display: flex; flex-direction: column; gap: 16px;
animation: deviceIn 1.1s var(--ease) .35s both;
}
@keyframes deviceIn {
from { opacity: 0; transform: translateY(28px) scale(.96); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
.device-top { display: flex; align-items: center; gap: 10px; }
.device-dot {
width: 36px; height: 36px; border-radius: 11px;
background: linear-gradient(145deg, #0e7490, #22d3ee);
display: grid; place-items: center;
}
.device-name { font-family: Outfit, sans-serif; font-weight: 700; letter-spacing: -.02em; }
.device-sub { font-size: .72rem; color: var(--muted); }
.power {
margin: 12px auto;
width: 110px; height: 110px; border-radius: 50%;
background: radial-gradient(circle at 35% 30%, #67e8f9, #0e7490 70%);
box-shadow: 0 0 0 10px rgba(34,211,238,.12), 0 20px 40px rgba(14,116,144,.35);
display: grid; place-items: center;
animation: pulse 2.8s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { box-shadow: 0 0 0 10px rgba(34,211,238,.12), 0 20px 40px rgba(14,116,144,.35); }
50% { box-shadow: 0 0 0 16px rgba(34,211,238,.2), 0 24px 48px rgba(14,116,144,.45); }
}
.power span { font-size: 2rem; line-height: 1; filter: drop-shadow(0 2px 4px rgba(0,0,0,.3)); }
.chip-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.chip {
font-size: .7rem; font-weight: 700; color: var(--accent);
border: 1px solid rgba(34,211,238,.25); border-radius: 999px;
padding: 6px 10px; background: rgba(34,211,238,.08);
}
/* Apps catalog — one section, one job */
.apps {
max-width: 1200px; margin: 0 auto;
padding: 0 clamp(20px, 4vw, 48px) clamp(72px, 10vh, 120px);
}
.apps-head {
margin-bottom: 28px;
opacity: 0; animation: rise .7s var(--ease) .4s forwards;
}
.apps-head h2 {
font-family: Outfit, sans-serif; font-size: clamp(1.6rem, 3vw, 2.1rem);
letter-spacing: -.03em; margin: 0 0 8px;
}
.apps-head p { margin: 0; color: var(--muted); max-width: 48ch; }
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 18px;
}
.app-tile {
display: flex; flex-direction: column; gap: 14px;
padding: 22px; border-radius: 22px;
border: 1px solid var(--line);
background: linear-gradient(165deg, rgba(34,211,238,.08), rgba(255,255,255,.02));
text-decoration: none; color: inherit;
transition: transform .25s var(--ease), border-color .25s, box-shadow .25s;
opacity: 0; animation: rise .7s var(--ease) forwards;
}
.app-tile:nth-child(1) { animation-delay: .45s; }
.app-tile:nth-child(2) { animation-delay: .55s; }
.app-tile:nth-child(3) { animation-delay: .65s; }
.app-tile:hover {
transform: translateY(-4px);
border-color: rgba(34,211,238,.35);
box-shadow: 0 20px 40px rgba(0,0,0,.25);
}
.app-tile.coming {
opacity: .55; filter: grayscale(.2);
pointer-events: none;
animation-name: rise; animation-fill-mode: forwards;
}
.app-tile.coming:nth-child(2) { animation-delay: .55s; }
.app-tile.coming:nth-child(3) { animation-delay: .65s; }
.app-ico {
width: 52px; height: 52px; border-radius: 16px;
display: grid; place-items: center; font-size: 1.5rem;
background: linear-gradient(145deg, #0e7490, #22d3ee);
}
.app-ico.muted { background: linear-gradient(145deg, #1e293b, #334155); }
.app-name { font-family: Outfit, sans-serif; font-weight: 700; font-size: 1.2rem; letter-spacing: -.02em; margin: 0; }
.app-desc { margin: 0; color: var(--muted); font-size: .92rem; flex: 1; }
.app-meta {
display: flex; align-items: center; justify-content: space-between; gap: 10px;
font-size: .78rem; font-weight: 700;
}
.tag {
color: var(--accent); background: rgba(34,211,238,.1);
padding: 5px 10px; border-radius: 999px;
}
.tag.soon { color: var(--muted); background: rgba(255,255,255,.06); }
.go { color: var(--accent); }
.faq {
max-width: 1200px; margin: 0 auto 28px;
padding: 0 clamp(20px, 4vw, 48px);
}
.faq-head { margin-bottom: 18px; }
.faq-head h2 {
font-family: Outfit, sans-serif; font-size: clamp(1.45rem, 2.6vw, 1.9rem);
letter-spacing: -.03em; margin: 0 0 8px;
}
.faq-head p { margin: 0; color: var(--muted); max-width: 52ch; }
.faq-list { display: grid; gap: 10px; }
.faq-item {
border: 1px solid var(--line);
border-radius: 16px;
background: rgba(255,255,255,.02);
overflow: hidden;
}
.faq-item summary {
list-style: none; cursor: pointer;
padding: 16px 18px;
font-family: Outfit, sans-serif; font-weight: 700; font-size: 1.02rem;
letter-spacing: -.01em;
display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
content: "+"; color: var(--accent); font-weight: 800; font-size: 1.2rem; line-height: 1;
transition: transform .2s var(--ease);
}
.faq-item[open] summary::after { content: ""; }
.faq-item .faq-a {
margin: 0; padding: 0 18px 16px;
color: var(--muted); font-size: .95rem; line-height: 1.55;
}
.faq-item[open] { border-color: rgba(34,211,238,.28); background: rgba(34,211,238,.05); }
.contact {
max-width: 1200px; margin: 0 auto 28px;
padding: 0 clamp(20px, 4vw, 48px);
}
.contact-panel {
border: 1px solid var(--line);
border-radius: 22px;
padding: 22px 24px;
background: linear-gradient(165deg, rgba(34,211,238,.08), rgba(255,255,255,.02));
}
.contact-panel h2 {
font-family: Outfit, sans-serif; font-size: 1.35rem;
letter-spacing: -.02em; margin: 0 0 8px;
}
.contact-panel > p { margin: 0 0 14px; color: var(--muted); font-size: .95rem; }
.mails { display: flex; flex-wrap: wrap; gap: 10px 18px; }
.mails a {
color: var(--accent); font-weight: 700; text-decoration: none;
border-bottom: 1px solid rgba(34,211,238,.35);
}
.mails a:hover { border-bottom-color: var(--accent); }
.mails .label { color: var(--muted); font-size: .8rem; font-weight: 700; display: block; margin-bottom: 2px; }
.mail-item { min-width: 200px; }
.legal {
max-width: 1200px; margin: 0 auto;
padding: 0 clamp(20px, 4vw, 48px) 48px;
display: flex; flex-wrap: wrap; gap: 14px 22px;
font-size: .85rem; color: var(--muted);
}
.legal a { color: var(--accent); font-weight: 700; text-decoration: none; }
.legal a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="stage">
<div class="orb orb-a" aria-hidden="true"></div>
<div class="orb orb-b" aria-hidden="true"></div>
<header class="top">
<a class="logo" href="index.html">
<div class="mark" aria-hidden="true">🦊</div>
<div class="word">EvilFox</div>
</a>
<div class="lang" role="group" aria-label="Language">
<button type="button" data-set-lang="ru" aria-pressed="true">RU</button>
<button type="button" data-set-lang="en" aria-pressed="false">EN</button>
</div>
</header>
<section class="hero">
<div>
<p class="eyebrow" data-i18n="eyebrow">Студия приложений</p>
<h1 class="brand-title">EvilFox</h1>
<p class="lead" data-i18n="lead">Приложения для безопасного и спокойного интернета. Начните с EvilFox VPN — дальше появятся новые продукты.</p>
<p class="desc" data-i18n="desc">EvilFox — это локальный клиент: вы сами добавляете конфигурации и URL подключения. Шифрование, выбор серверов, Kill Switch, светлая и тёмная темы, русский и английский интерфейс. Сборка для Windows, в том числе Microsoft Store.</p>
<ul class="points">
<li data-i18n="point1">Современные протоколы и группировка серверов по странам</li>
<li data-i18n="point2">Режимы полной защиты и системного прокси</li>
<li data-i18n="point3">Данные профилей хранятся на устройстве — без обязательной регистрации</li>
</ul>
<div class="cta-row">
<a class="btn btn-primary" href="#apps" data-i18n="cta_apps">Смотреть приложения</a>
<a class="btn btn-ghost" href="#faq" data-i18n="cta_faq">FAQ</a>
<a class="btn btn-ghost" href="#contact" data-i18n="cta_contact">Связаться с нами</a>
</div>
</div>
<div class="visual" aria-hidden="true">
<div class="visual-inner">
<div class="device">
<div class="device-top">
<div class="device-dot">🦊</div>
<div>
<div class="device-name">EvilFox VPN</div>
<div class="device-sub" data-i18n="device_sub">Защита · Windows</div>
</div>
</div>
<div class="power"><span></span></div>
<div class="chip-row">
<span class="chip" data-i18n="chip1">Шифрование</span>
<span class="chip" data-i18n="chip2">Kill Switch</span>
<span class="chip" data-i18n="chip3">RU / EN</span>
</div>
</div>
</div>
</div>
</section>
<section class="apps" id="apps">
<div class="apps-head">
<h2 data-i18n="apps_title">Наши приложения</h2>
<p data-i18n="apps_lead">Каталог продуктов EvilFox. Сейчас доступен VPN-клиент; другие приложения — скоро.</p>
</div>
<div class="grid">
<a class="app-tile" href="https://evilfox.win/">
<div class="app-ico">🦊</div>
<h3 class="app-name">EvilFox VPN</h3>
<p class="app-desc" data-i18n="vpn_desc">Клиент для защищённого доступа в интернет на Windows: современные протоколы, флаги серверов, Kill Switch, светлая и тёмная темы, русский и английский.</p>
<div class="app-meta">
<span class="tag" data-i18n="tag_available">Доступно</span>
<span class="go" data-i18n="open">Открыть →</span>
</div>
</a>
<div class="app-tile coming" aria-disabled="true">
<div class="app-ico muted"></div>
<h3 class="app-name" data-i18n="soon1_name">Скоро</h3>
<p class="app-desc" data-i18n="soon1_desc">Новое приложение вне VPN — в разработке. Следите за обновлениями на сайте.</p>
<div class="app-meta">
<span class="tag soon" data-i18n="tag_soon">В планах</span>
</div>
</div>
<div class="app-tile coming" aria-disabled="true">
<div class="app-ico muted"></div>
<h3 class="app-name" data-i18n="soon2_name">Ещё проекты</h3>
<p class="app-desc" data-i18n="soon2_desc">Инструменты для работы и повседневных задач — появятся здесь позже.</p>
<div class="app-meta">
<span class="tag soon" data-i18n="tag_soon">В планах</span>
</div>
</div>
</div>
</section>
<section class="faq" id="faq" aria-labelledby="faq-title">
<div class="faq-head">
<h2 id="faq-title" data-i18n="faq_title">Частые вопросы</h2>
<p data-i18n="faq_lead">Кратко о клиенте, данных и поддержке. Если ответа нет — напишите нам.</p>
</div>
<div class="faq-list">
<details class="faq-item">
<summary data-i18n="faq_q1">Что такое EvilFox?</summary>
<p class="faq-a" data-i18n="faq_a1">EvilFox — Windows-клиент для защищённого доступа в интернет. Вы подключаетесь к серверам по своим конфигурациям; мы публикуем приложение и обновления.</p>
</details>
<details class="faq-item">
<summary data-i18n="faq_q2">Нужна ли регистрация или аккаунт?</summary>
<p class="faq-a" data-i18n="faq_a2">Нет обязательного аккаунта у издателя. Профили и настройки хранятся локально. URL и ключи подключения вы получаете у своего провайдера конфигурации.</p>
</details>
<details class="faq-item">
<summary data-i18n="faq_q3">Собираете ли вы мой трафик?</summary>
<p class="faq-a" data-i18n="faq_a3">Клиент работает на устройстве. EvilFox как издатель не ведёт централизованный сбор содержимого вашего трафика для рекламы. При подключении трафик идёт через серверы из вашей конфигурации — их политика может отличаться.</p>
</details>
<details class="faq-item">
<summary data-i18n="faq_q4">На каких платформах доступно приложение?</summary>
<p class="faq-a" data-i18n="faq_a4">Основная платформа — Windows (включая Microsoft Store). Следите за каталогом на сайте: появятся и другие продукты EvilFox.</p>
</details>
<details class="faq-item">
<summary data-i18n="faq_q5">Что делает Kill Switch?</summary>
<p class="faq-a" data-i18n="faq_a5">Kill Switch помогает ограничить незащищённый доступ в сеть, если защищённое соединение обрывается. Включайте в настройках приложения, если нужна такая защита.</p>
</details>
<details class="faq-item">
<summary data-i18n="faq_q6">Как связаться с поддержкой?</summary>
<p class="faq-a" data-i18n="faq_a6">Напишите на animegold3@gmail.com или резервную admin@evilfox.win. Также есть Telegram: t.me/evilfox100Bot.</p>
</details>
</div>
</section>
<section class="contact" id="contact" aria-labelledby="contact-title">
<div class="contact-panel">
<h2 id="contact-title" data-i18n="contact_title">Связаться с нами</h2>
<p data-i18n="contact_lead">Напишите на почту — ответим по вопросам приложений и поддержки.</p>
<div class="mails">
<div class="mail-item">
<span class="label" data-i18n="mail_main">Основная почта</span>
<a href="mailto:animegold3@gmail.com">animegold3@gmail.com</a>
</div>
<div class="mail-item">
<span class="label" data-i18n="mail_backup">Резервная почта</span>
<a href="mailto:admin@evilfox.win">admin@evilfox.win</a>
</div>
<div class="mail-item">
<span class="label" data-i18n="mail_tg">Telegram</span>
<a href="https://t.me/evilfox100Bot">t.me/evilfox100Bot</a>
</div>
</div>
</div>
</section>
<footer class="legal">
<span>© 2026 EvilFox</span>
<a href="#faq" data-i18n="faq_link">FAQ</a>
<a href="privacy-ru.html" data-i18n-href-ru="privacy-ru.html" data-i18n-href-en="privacy-en.html" data-i18n="privacy">Конфиденциальность</a>
<a href="terms-ru.html" data-i18n-href-ru="terms-ru.html" data-i18n-href-en="terms-en.html" data-i18n="terms">Соглашение</a>
<a href="#contact" data-i18n="support">Связаться</a>
</footer>
</div>
<script>
const I18N = {
ru: {
eyebrow: "Студия приложений",
lead: "Приложения для безопасного и спокойного интернета. Начните с EvilFox VPN — дальше появятся новые продукты.",
desc: "EvilFox — это локальный клиент: вы сами добавляете конфигурации и URL подключения. Шифрование, выбор серверов, Kill Switch, светлая и тёмная темы, русский и английский интерфейс. Сборка для Windows, в том числе Microsoft Store.",
point1: "Современные протоколы и группировка серверов по странам",
point2: "Режимы полной защиты и системного прокси",
point3: "Данные профилей хранятся на устройстве — без обязательной регистрации",
cta_apps: "Смотреть приложения",
cta_faq: "FAQ",
cta_contact: "Связаться с нами",
device_sub: "Защита · Windows",
chip1: "Шифрование",
chip2: "Kill Switch",
chip3: "RU / EN",
apps_title: "Наши приложения",
apps_lead: "Каталог продуктов EvilFox. Сейчас доступен VPN-клиент; другие приложения — скоро.",
vpn_desc: "Клиент для защищённого доступа в интернет на Windows: современные протоколы, флаги серверов, Kill Switch, светлая и тёмная темы, русский и английский.",
tag_available: "Доступно",
open: "Открыть →",
soon1_name: "Скоро",
soon1_desc: "Новое приложение вне VPN — в разработке. Следите за обновлениями на сайте.",
soon2_name: "Ещё проекты",
soon2_desc: "Инструменты для работы и повседневных задач — появятся здесь позже.",
tag_soon: "В планах",
faq_title: "Частые вопросы",
faq_lead: "Кратко о клиенте, данных и поддержке. Если ответа нет — напишите нам.",
faq_link: "FAQ",
faq_q1: "Что такое EvilFox?",
faq_a1: "EvilFox — Windows-клиент для защищённого доступа в интернет. Вы подключаетесь к серверам по своим конфигурациям; мы публикуем приложение и обновления.",
faq_q2: "Нужна ли регистрация или аккаунт?",
faq_a2: "Нет обязательного аккаунта у издателя. Профили и настройки хранятся локально. URL и ключи подключения вы получаете у своего провайдера конфигурации.",
faq_q3: "Собираете ли вы мой трафик?",
faq_a3: "Клиент работает на устройстве. EvilFox как издатель не ведёт централизованный сбор содержимого вашего трафика для рекламы. При подключении трафик идёт через серверы из вашей конфигурации — их политика может отличаться.",
faq_q4: "На каких платформах доступно приложение?",
faq_a4: "Основная платформа — Windows (включая Microsoft Store). Следите за каталогом на сайте: появятся и другие продукты EvilFox.",
faq_q5: "Что делает Kill Switch?",
faq_a5: "Kill Switch помогает ограничить незащищённый доступ в сеть, если защищённое соединение обрывается. Включайте в настройках приложения, если нужна такая защита.",
faq_q6: "Как связаться с поддержкой?",
faq_a6: "Напишите на animegold3@gmail.com или резервную admin@evilfox.win. Также есть Telegram: t.me/evilfox100Bot.",
privacy: "Конфиденциальность",
terms: "Соглашение",
support: "Связаться",
contact_title: "Связаться с нами",
contact_lead: "Напишите на почту — ответим по вопросам приложений и поддержки.",
mail_main: "Основная почта",
mail_backup: "Резервная почта",
mail_tg: "Telegram"
},
en: {
eyebrow: "App studio",
lead: "Apps for a safer, calmer internet. Start with EvilFox VPN — more products are on the way.",
desc: "EvilFox is a local client: you add your own configs and connection URLs. Encryption, server picker, Kill Switch, light and dark themes, Russian and English UI. Built for Windows, including the Microsoft Store.",
point1: "Modern protocols and servers grouped by country",
point2: "Full protection and system proxy modes",
point3: "Profiles stay on your device — no mandatory publisher account",
cta_apps: "Browse apps",
cta_faq: "FAQ",
cta_contact: "Contact us",
device_sub: "Protection · Windows",
chip1: "Encryption",
chip2: "Kill Switch",
chip3: "RU / EN",
apps_title: "Our apps",
apps_lead: "The EvilFox catalog. VPN is available now; more apps are coming.",
vpn_desc: "A Windows client for private internet access: modern protocols, country flags, Kill Switch, light and dark themes, Russian and English.",
tag_available: "Available",
open: "Open →",
soon1_name: "Coming soon",
soon1_desc: "A new non-VPN app is in the works. Watch the site for updates.",
soon2_name: "More projects",
soon2_desc: "Tools for work and everyday tasks will appear here later.",
tag_soon: "Planned",
faq_title: "FAQ",
faq_lead: "Short answers about the client, data, and support. Still stuck? Contact us.",
faq_link: "FAQ",
faq_q1: "What is EvilFox?",
faq_a1: "EvilFox is a Windows client for private internet access. You connect using your own configurations; we publish the app and updates.",
faq_q2: "Do I need to register or create an account?",
faq_a2: "No publisher account is required. Profiles and settings stay local. Connection URLs and keys come from your configuration provider.",
faq_q3: "Do you collect my traffic?",
faq_a3: "The client runs on your device. As publisher, EvilFox does not centrally collect your traffic contents for advertising. When connected, traffic goes through servers in your config — their policies may differ.",
faq_q4: "Which platforms are supported?",
faq_a4: "The main platform is Windows (including Microsoft Store). Watch the site catalog for more EvilFox products.",
faq_q5: "What does Kill Switch do?",
faq_a5: "Kill Switch helps limit unprotected network access if the protected connection drops. Turn it on in app settings when you want that safeguard.",
faq_q6: "How do I contact support?",
faq_a6: "Email animegold3@gmail.com or backup admin@evilfox.win. Telegram: t.me/evilfox100Bot.",
privacy: "Privacy",
terms: "Terms",
support: "Contact",
contact_title: "Contact us",
contact_lead: "Email us about apps and support — we will get back to you.",
mail_main: "Primary email",
mail_backup: "Backup email",
mail_tg: "Telegram"
}
};
function setLang(lang) {
const pack = I18N[lang] || I18N.ru;
document.documentElement.lang = lang;
document.documentElement.dataset.lang = lang;
document.querySelectorAll("[data-i18n]").forEach((el) => {
const key = el.getAttribute("data-i18n");
if (pack[key] != null) el.textContent = pack[key];
});
document.querySelectorAll("[data-i18n-href-ru]").forEach((el) => {
el.setAttribute("href", lang === "en" ? el.getAttribute("data-i18n-href-en") : el.getAttribute("data-i18n-href-ru"));
});
document.querySelectorAll(".lang button").forEach((btn) => {
btn.setAttribute("aria-pressed", btn.getAttribute("data-set-lang") === lang ? "true" : "false");
});
try { localStorage.setItem("evilfox.site.lang", lang); } catch (_) {}
document.title = lang === "en" ? "EvilFox — Apps" : "EvilFox — Приложения";
}
document.querySelectorAll(".lang button").forEach((btn) => {
btn.addEventListener("click", () => setLang(btn.getAttribute("data-set-lang")));
});
let initial = "ru";
try {
const saved = localStorage.getItem("evilfox.site.lang");
if (saved === "en" || saved === "ru") initial = saved;
else if (navigator.language && navigator.language.toLowerCase().startsWith("en")) initial = "en";
} catch (_) {}
setLang(initial);
</script>
</body>
</html>