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>
This commit is contained in:
+650
@@ -0,0 +1,650 @@
|
||||
<!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>
|
||||
Reference in New Issue
Block a user