dmitriyvpn/index.html
djjdjdbf9 77c25940a2 patch
-fixed a horizontal line little above the instruction for connect
-fixed the prices for 1/3/12 months, it was small
-changed a ping advertisment from <10 to <100 ms
2026-10-24 14:16:57 +03:00

1262 lines
44 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">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DmitriyVPN — Быстрый и стабильный VPN для всех устройств</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Fira+Code:wght@400;500&display=swap" rel="stylesheet">
<style>
:root {
--bg-main: #0a0b0d;
--bg-card: #121418;
--bg-card-hover: #16191f;
--border: #1f242e;
--border-hover: #2f3747;
--text-main: #ffffff;
--text-sub: #94a3b8;
--accent: #38bdf8;
--accent-glow: rgba(56, 189, 248, 0.15);
--font-main: 'Inter', sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: var(--font-main);
background-color: var(--bg-main);
color: var(--text-main);
line-height: 1.5;
overflow-x: hidden;
}
body::before {
content: '';
position: fixed;
top: -10%;
left: 50%;
transform: translateX(-50%);
width: 600px;
height: 400px;
background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);
z-index: -1;
pointer-events: none;
}
.container {
width: 100%;
max-width: 1140px;
margin: 0 auto;
padding: 0 24px;
}
/* ===== HEADER ===== */
header {
padding: 20px 0;
border-bottom: 1px solid var(--border);
backdrop-filter: blur(12px);
position: sticky;
top: 0;
z-index: 1000;
background: rgba(10, 11, 13, 0.88);
}
.header-wrap {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-weight: 800;
font-size: 1.25rem;
letter-spacing: -0.5px;
text-decoration: none;
color: var(--text-main);
z-index: 1001;
position: relative;
}
.logo span { color: var(--accent); }
nav {
display: flex;
align-items: center;
gap: 28px;
}
nav a {
color: #94a3b8;
text-decoration: none;
font-size: 0.875rem;
font-weight: 500;
transition: color 0.2s;
}
nav a:hover { color: var(--text-main); }
.btn-tg-nav {
background: #1e293b;
border: 1px solid var(--border);
padding: 8px 16px;
border-radius: 8px;
color: var(--text-main);
font-size: 0.85rem;
font-weight: 600;
text-decoration: none;
transition: all 0.2s;
white-space: nowrap;
}
.btn-tg-nav:hover {
background: #0284c7;
border-color: #38bdf8;
}
/* Burger */
.burger {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
padding: 4px;
background: none;
border: none;
z-index: 1001;
position: relative;
}
.burger span {
display: block;
width: 24px;
height: 2px;
background: var(--text-main);
border-radius: 2px;
transition: all 0.3s ease;
}
.burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.burger.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
/* Mobile nav overlay */
.mobile-nav {
display: none;
position: fixed;
inset: 0;
background: rgba(10, 11, 13, 0.97);
backdrop-filter: blur(20px);
z-index: 999;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 32px;
}
.mobile-nav.open { display: flex; }
.mobile-nav a {
color: var(--text-main);
text-decoration: none;
font-size: 1.4rem;
font-weight: 700;
transition: color 0.2s;
}
.mobile-nav a:hover { color: var(--accent); }
.mobile-nav .btn-tg-nav {
font-size: 1rem;
padding: 12px 28px;
}
@media (max-width: 900px) {
.burger { display: flex; }
nav { display: none; }
}
/* ===== SCROLL REVEAL ===== */
.reveal {
opacity: 0;
transform: translateY(32px);
transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal.visible {
opacity: 1;
transform: translateY(0);
}
/* ===== SECTIONS BASE ===== */
section {
padding: 80px 0;
border-top: 1px solid var(--border);
}
.section-title {
text-align: center;
font-size: 2.25rem;
font-weight: 800;
margin-bottom: 10px;
letter-spacing: -1px;
}
.section-sub {
text-align: center;
color: #94a3b8;
font-size: 1rem;
margin-bottom: 48px;
}
@media (max-width: 768px) {
section { padding: 60px 0; }
.section-title { font-size: 1.75rem; }
}
/* ===== HERO ===== */
.hero {
padding: 80px 0 100px;
display: grid;
grid-template-columns: 1.2fr 0.8fr;
align-items: center;
gap: 48px;
border-top: none;
}
@media (max-width: 768px) {
.hero {
grid-template-columns: 1fr;
text-align: center;
padding: 52px 0 64px;
}
.hero-right { display: flex; justify-content: center; }
}
.badge {
display: inline-block;
padding: 6px 12px;
background: rgba(56, 189, 248, 0.06);
border: 1px solid rgba(56, 189, 248, 0.2);
color: var(--accent);
border-radius: 100px;
font-size: 0.8rem;
font-weight: 600;
margin-bottom: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h1 {
font-size: 3.5rem;
font-weight: 800;
line-height: 1.1;
letter-spacing: -1.5px;
margin-bottom: 24px;
}
h1 span {
background: linear-gradient(to right, #38bdf8, #a855f7);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.hero-text {
color: #94a3b8;
font-size: 1.1rem;
margin-bottom: 36px;
}
.hero-btns {
display: flex;
gap: 16px;
}
@media (max-width: 768px) {
.hero-btns { justify-content: center; flex-wrap: wrap; }
h1 { font-size: 2.4rem; }
}
.btn-main {
display: inline-block;
background: var(--text-main);
color: var(--bg-main);
padding: 14px 28px;
border-radius: 10px;
font-weight: 600;
text-decoration: none;
transition: transform 0.2s, opacity 0.2s;
}
.btn-main:hover { transform: translateY(-2px); opacity: 0.9; }
.btn-sec {
display: inline-block;
border: 1px solid var(--border);
color: var(--text-main);
padding: 14px 28px;
border-radius: 10px;
font-weight: 600;
text-decoration: none;
transition: background 0.2s, border-color 0.2s;
}
.btn-sec:hover {
background: rgba(255,255,255,0.04);
border-color: var(--border-hover);
}
.hero-right {
position: relative;
display: flex;
justify-content: center;
}
.shield-graphic {
width: 280px;
height: 320px;
background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
border: 2px solid var(--border);
border-radius: 20px 20px 140px 140px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5);
animation: float 4s ease-in-out infinite;
}
.shield-icon {
font-size: 4rem;
margin-bottom: 12px;
filter: drop-shadow(0 0 15px var(--accent));
}
.shield-label {
font-family: 'Fira Code', monospace;
font-size: 0.85rem;
color: var(--accent);
letter-spacing: 1px;
}
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-12px); }
}
/* ===== FEATURES ===== */
.grid-features {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
}
@media (max-width: 900px) { .grid-features { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .grid-features { grid-template-columns: 1fr; } }
.feature-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 16px;
padding: 28px 24px;
transition: all 0.3s;
}
.feature-card:hover {
border-color: rgba(56,189,248,0.3);
transform: translateY(-4px);
background: var(--bg-card-hover);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 14px;
display: block;
}
.feature-title {
font-size: 1rem;
font-weight: 700;
margin-bottom: 8px;
}
.feature-desc {
color: #94a3b8;
font-size: 0.875rem;
line-height: 1.6;
}
/* ===== DEVICES ===== */
.grid-devices {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 16px;
}
@media (max-width: 900px) { .grid-devices { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 480px) { .grid-devices { grid-template-columns: repeat(2, 1fr); } }
.device-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 14px;
padding: 28px 16px;
text-align: center;
transition: all 0.3s;
}
.device-card:hover {
border-color: rgba(56,189,248,0.35);
background: var(--bg-card-hover);
transform: translateY(-4px);
}
.device-icon {
font-size: 2.4rem;
margin-bottom: 10px;
display: block;
}
.device-name {
font-size: 0.8rem;
font-weight: 600;
color: #94a3b8;
}
/* ===== HOW TO CONNECT ===== */
.steps {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
position: relative;
}
@media (max-width: 768px) { .steps { grid-template-columns: 1fr; } }
.step-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 16px;
padding: 32px 24px;
text-align: center;
transition: border-color 0.3s;
}
.step-card:hover { border-color: var(--border-hover); }
.step-num {
width: 52px;
height: 52px;
border-radius: 50%;
background: linear-gradient(135deg, #0284c7, #a855f7);
display: flex;
align-items: center;
justify-content: center;
font-weight: 800;
font-size: 1.1rem;
margin: 0 auto 18px;
box-shadow: 0 0 20px rgba(2,132,199,0.3);
}
.step-title {
font-size: 1rem;
font-weight: 700;
margin-bottom: 10px;
}
.step-desc {
color: #94a3b8;
font-size: 0.875rem;
line-height: 1.6;
}
/* ===== BILLING TOGGLE ===== */
.billing-toggle {
display: flex;
justify-content: center;
gap: 4px;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 4px;
width: fit-content;
margin: 0 auto 40px;
}
.billing-btn {
background: none;
border: none;
padding: 9px 20px;
border-radius: 7px;
color: #64748b;
font-size: 0.875rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
font-family: var(--font-main);
position: relative;
}
.billing-btn.active {
background: #0284c7;
color: #fff;
}
.save-badge {
position: absolute;
top: -9px;
right: -6px;
background: #22c55e;
color: #fff;
font-size: 0.58rem;
padding: 2px 5px;
border-radius: 4px;
font-weight: 700;
line-height: 1.4;
}
/* ===== PRICING ===== */
.grid-pricing {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
@media (max-width: 950px) {
.grid-pricing { grid-template-columns: 1fr; max-width: 450px; margin: 0 auto; }
}
.price-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 16px;
padding: 32px;
display: flex;
flex-direction: column;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.price-card:hover {
transform: translateY(-4px);
border-color: var(--border-hover);
background: var(--bg-card-hover);
}
.price-card.featured {
border-color: #0284c7;
background: linear-gradient(180deg, #12151c 0%, #0d1015 100%);
}
.price-card.featured::before {
content: 'ОБХОД ГЛУШИЛОК';
position: absolute;
top: 24px;
right: -35px;
background: #0284c7;
color: #fff;
font-size: 0.6rem;
font-weight: 700;
padding: 4px 35px;
transform: rotate(45deg);
}
.card-name {
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 8px;
}
.card-price {
font-size: 2rem;
font-weight: 800;
margin-bottom: 20px;
display: flex;
align-items: baseline;
gap: 4px;
}
.card-price span {
font-size: 0.9rem;
color: #64748b;
font-weight: 400;
}
.card-price .price-val {
font-size: inherit;
color: inherit;
font-weight: inherit;
}
.card-features {
list-style: none;
margin-bottom: 24px;
flex-grow: 1;
}
.card-features li {
font-size: 0.9rem;
color: #94a3b8;
margin-bottom: 12px;
display: flex;
align-items: flex-start;
gap: 10px;
}
.card-features li.disabled {
color: #475569;
text-decoration: line-through;
}
.card-features li::before {
content: '✓';
color: var(--accent);
font-weight: bold;
flex-shrink: 0;
}
.card-features li.disabled::before {
content: '✕';
color: #475569;
}
.bot-sub-list {
display: flex;
flex-direction: column;
gap: 8px;
margin-bottom: 24px;
}
.bot-sub-item {
background: rgba(255,255,255,0.03);
border: 1px solid var(--border);
padding: 10px 14px;
border-radius: 8px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.85rem;
}
.bot-sub-item span { color: #94a3b8; }
.bot-sub-item strong { color: #fff; }
.price-val { transition: opacity 0.15s; }
.price-val.updating { opacity: 0; }
.btn-card {
display: block;
text-align: center;
padding: 12px;
border-radius: 8px;
text-decoration: none;
font-weight: 600;
font-size: 0.9rem;
transition: all 0.2s;
margin-top: auto;
}
.btn-card-sec {
background: #1e293b;
color: var(--text-main);
border: 1px solid var(--border);
}
.btn-card-sec:hover { background: #334155; }
.btn-card-primary { background: #0284c7; color: #fff; }
.btn-card-primary:hover { background: #0369a1; box-shadow: 0 0 15px rgba(2,132,199,0.3); }
/* ===== FAQ ===== */
.faq-list {
max-width: 760px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 12px;
}
.faq-item {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 12px;
overflow: hidden;
transition: border-color 0.25s;
}
.faq-item.open { border-color: rgba(56,189,248,0.3); }
.faq-q {
width: 100%;
background: none;
border: none;
padding: 20px 24px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
color: var(--text-main);
font-size: 0.95rem;
font-weight: 600;
font-family: var(--font-main);
text-align: left;
gap: 16px;
}
.faq-q:hover { background: rgba(255,255,255,0.02); }
.faq-icon {
width: 26px;
height: 26px;
border-radius: 50%;
border: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
flex-shrink: 0;
transition: all 0.3s;
color: var(--accent);
line-height: 1;
}
.faq-item.open .faq-icon {
transform: rotate(45deg);
border-color: var(--accent);
}
.faq-a {
max-height: 0;
overflow: hidden;
transition: max-height 0.35s ease;
}
.faq-a-inner {
padding: 0 24px 22px;
color: #94a3b8;
font-size: 0.9rem;
line-height: 1.7;
}
/* ===== REVIEWS ===== */
.grid-reviews {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 24px;
}
@media (max-width: 768px) { .grid-reviews { grid-template-columns: 1fr; } }
.review-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 12px;
padding: 24px;
transition: border-color 0.2s;
}
.review-card:hover { border-color: var(--border-hover); }
.review-header {
display: flex;
align-items: center;
gap: 14px;
margin-bottom: 14px;
}
.review-avatar {
width: 42px;
height: 42px;
border-radius: 50%;
background: linear-gradient(135deg, #0284c7, #a855f7);
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 1rem;
flex-shrink: 0;
}
.review-stars {
color: #fbbf24;
font-size: 0.8rem;
margin-bottom: 2px;
}
.review-user {
font-weight: 700;
font-size: 0.95rem;
}
.review-verified {
font-size: 0.73rem;
color: #22c55e;
}
.review-text {
color: #94a3b8;
font-size: 0.9rem;
line-height: 1.65;
}
/* ===== SUPPORT ===== */
.support-inner {
text-align: center;
}
.support-card {
background: linear-gradient(135deg, #11141a 0%, #0a0c10 100%);
border: 1px solid var(--border);
padding: 52px 48px;
border-radius: 20px;
max-width: 700px;
margin: 0 auto;
}
.support-card h3 {
font-size: 1.5rem;
font-weight: 700;
margin-bottom: 12px;
}
.support-card p {
color: #94a3b8;
margin-bottom: 28px;
font-size: 0.95rem;
}
.btn-support {
display: inline-block;
background: #22c55e;
color: #fff;
padding: 12px 28px;
border-radius: 8px;
font-weight: 600;
text-decoration: none;
transition: all 0.2s;
}
.btn-support:hover {
background: #16a34a;
box-shadow: 0 0 20px rgba(34,197,94,0.25);
transform: translateY(-1px);
}
/* ===== FOOTER ===== */
footer {
padding: 40px 0;
text-align: center;
border-top: 1px solid var(--border);
color: #475569;
font-size: 0.85rem;
}
</style>
</head>
<body>
<!-- Mobile nav overlay -->
<nav class="mobile-nav" id="mobileNav">
<a href="#features" onclick="closeMobile()">Преимущества</a>
<a href="#devices" onclick="closeMobile()">Устройства</a>
<a href="#pricing" onclick="closeMobile()">Тарифы</a>
<a href="#faq" onclick="closeMobile()">FAQ</a>
<a href="#reviews" onclick="closeMobile()">Отзывы</a>
<a href="#support" onclick="closeMobile()">Поддержка</a>
<a href="https://t.me/DmitriyVPN" target="_blank" class="btn-tg-nav">Telegram Канал</a>
</nav>
<header>
<div class="container header-wrap">
<a href="#" class="logo">Dmitriy<span>VPN</span></a>
<nav>
<a href="#features">Преимущества</a>
<a href="#devices">Устройства</a>
<a href="#pricing">Тарифы</a>
<a href="#faq">FAQ</a>
<a href="#reviews">Отзывы</a>
<a href="#support">Поддержка</a>
<a href="https://t.me/DmitriyVPN" target="_blank" class="btn-tg-nav">Telegram Канал</a>
</nav>
<button class="burger" id="burger" onclick="toggleMobile()" aria-label="Открыть меню">
<span></span><span></span><span></span>
</button>
</div>
</header>
<main class="container">
<!-- HERO -->
<section class="hero reveal">
<div class="hero-left">
<div class="badge">Для всех устройств</div>
<h1>Надежный интернет без <span>ограничений</span></h1>
<p class="hero-text">
DmitriyVPN — современное, легковесное решение для вашей безопасности. Стабильный обход блокировок, минимальный пинг в играх и мгновенная скорость на любом устройстве.
</p>
<div class="hero-btns">
<a href="#pricing" class="btn-main">Выбрать тариф</a>
<a href="https://t.me/DmitriyVPN" target="_blank" class="btn-sec">В Telegram-канал</a>
</div>
</div>
<div class="hero-right">
<div class="shield-graphic">
<div class="shield-icon">🛡️</div>
<div class="shield-label">DMITRIY_CORE V2</div>
</div>
</div>
</section>
<!-- FEATURES -->
<section id="features" class="reveal">
<h2 class="section-title">Почему выбирают нас</h2>
<p class="section-sub">Всё что нужно для быстрого, безопасного и стабильного интернета</p>
<div class="grid-features">
<div class="feature-card">
<span class="feature-icon">🚀</span>
<div class="feature-title">Максимальная скорость</div>
<div class="feature-desc">До 1 Гбит/с без троттлинга и ограничений трафика на всех тарифах.</div>
</div>
<div class="feature-card">
<span class="feature-icon">🔒</span>
<div class="feature-title">Без логов</div>
<div class="feature-desc">Мы не храним никаких данных о вашей активности. Абсолютная приватность.</div>
</div>
<div class="feature-card">
<span class="feature-icon">🌍</span>
<div class="feature-title">20 локаций</div>
<div class="feature-desc">Серверы по всему миру: Европа, Азия, Америка — выбери ближайший.</div>
</div>
<div class="feature-card">
<span class="feature-icon">⚡</span>
<div class="feature-title">Пинг &lt;100 мс</div>
<div class="feature-desc">Оптимизировано для игр. Никаких потерь пакетов и лагов.</div>
</div>
</div>
</section>
<!-- DEVICES -->
<section id="devices" class="reveal">
<h2 class="section-title">Поддерживаемые устройства</h2>
<p class="section-sub">Один аккаунт — все ваши гаджеты</p>
<div class="grid-devices">
<div class="device-card">
<span class="device-icon">🖥️</span>
<div class="device-name">Windows</div>
</div>
<div class="device-card">
<span class="device-icon">🍎</span>
<div class="device-name">macOS</div>
</div>
<div class="device-card">
<span class="device-icon">🤖</span>
<div class="device-name">Android</div>
</div>
<div class="device-card">
<span class="device-icon">📱</span>
<div class="device-name">iOS</div>
</div>
<div class="device-card">
<span class="device-icon">🐧</span>
<div class="device-name">Linux</div>
</div>
<div class="device-card">
<span class="device-icon">📺</span>
<div class="device-name">Android TV</div>
</div>
</div>
</section>
<!-- HOW TO CONNECT -->
<section id="connect" class="reveal">
<h2 class="section-title">Подключение за 3 шага</h2>
<p class="section-sub">Никаких сложных настроек — просто работает</p>
<div class="steps">
<div class="step-card">
<div class="step-num">1</div>
<div class="step-title">Открой Telegram-бот</div>
<div class="step-desc">Перейди в наш бот @DmitriyVPN и нажми Старт. Регистрация не требуется.</div>
</div>
<div class="step-card">
<div class="step-num">2</div>
<div class="step-title">Выбери тариф</div>
<div class="step-desc">Выбери подходящий план и оплати удобным способом — всё внутри бота.</div>
</div>
<div class="step-card">
<div class="step-num">3</div>
<div class="step-title">Подключись за 1 минуту</div>
<div class="step-desc">Получи конфиг или QR-код и импортируй его в приложение. Готово!</div>
</div>
</div>
</section>
<!-- PRICING -->
<section id="pricing" class="reveal">
<h2 class="section-title">Гибкие тарифные планы</h2>
<p class="section-sub">Выбери период — сэкономь больше</p>
<div class="billing-toggle">
<button class="billing-btn active" data-period="month" onclick="setBilling('month', this)">1 месяц</button>
<button class="billing-btn" data-period="3month" onclick="setBilling('3month', this)">
3 месяца <span class="save-badge">−10%</span>
</button>
<button class="billing-btn" data-period="year" onclick="setBilling('year', this)">
12 месяцев <span class="save-badge">−20%</span>
</button>
</div>
<div class="grid-pricing">
<!-- Бесплатный -->
<div class="price-card">
<div class="card-name">Бесплатный</div>
<div class="card-price">0 ₽<span>/ навсегда</span></div>
<ul class="card-features">
<li>Медленная скорость работы</li>
<li>Доступно всего 5 локаций</li>
<li class="disabled">Обход жестких глушилок</li>
<li class="disabled">Приоритетная поддержка</li>
</ul>
<a href="https://t.me/DmitriyVPN" target="_blank" class="btn-card btn-card-sec">Подключить</a>
</div>
<!-- Платные -->
<div class="price-card featured">
<div class="card-name">Платные тарифы</div>
<div class="card-price">
от <span id="price-from" class="price-val">109.22</span> ₽<span>/ мес.</span>
</div>
<ul class="card-features">
<li><strong>Максимальная скорость соединения</strong></li>
<li><strong>20 доступных локаций</strong></li>
<li><strong>Полный обход глушилок</strong></li>
<li>Высокая стабильность работы</li>
</ul>
<div class="bot-sub-list">
<div class="bot-sub-item">
<span>Standard | 1 устр.</span>
<strong><span class="price-val" id="price-standard">109.22</span> ₽</strong>
</div>
<div class="bot-sub-item">
<span>Pro | 5 устр.</span>
<strong><span class="price-val" id="price-pro">194.41</span> ₽</strong>
</div>
<div class="bot-sub-item">
<span>Premium | 15 устр.</span>
<strong><span class="price-val" id="price-premium">291.62</span> ₽</strong>
</div>
</div>
<a href="https://t.me/DmitriyVPN" target="_blank" class="btn-card btn-card-primary">Открыть в Telegram</a>
</div>
<!-- Пробный -->
<div class="price-card">
<div class="card-name">Пробный тест</div>
<div class="card-price">0 ₽<span>/ 3 дня</span></div>
<ul class="card-features">
<li>Высокая скорость работы</li>
<li>Доступно 10 локаций</li>
<li class="disabled">Обход жестких глушилок</li>
<li class="disabled">Приоритетная поддержка</li>
</ul>
<a href="https://t.me/DmitriyVPN" target="_blank" class="btn-card btn-card-sec">Попробовать</a>
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq" class="reveal">
<h2 class="section-title">Часто задаваемые вопросы</h2>
<p class="section-sub">Ответы на самые популярные вопросы</p>
<div class="faq-list">
<div class="faq-item">
<button class="faq-q" onclick="toggleFaq(this)">
Работает ли VPN в России в 2026 году?
<div class="faq-icon">+</div>
</button>
<div class="faq-a">
<div class="faq-a-inner">Да. DmitriyVPN использует современные протоколы, разработанные для обхода глубокой инспекции пакетов (DPI). Платные тарифы имеют полный обход жёстких блокировок и стабильно работают на территории РФ.</div>
</div>
</div>
<div class="faq-item">
<button class="faq-q" onclick="toggleFaq(this)">
Какой протокол используется?
<div class="faq-icon">+</div>
</button>
<div class="faq-a">
<div class="faq-a-inner">Мы используем VLESS / XTLS-Reality — один из самых современных и необнаруживаемых протоколов. Он маскирует трафик под обычный HTTPS, что делает его практически невидимым для блокировок.</div>
</div>
</div>
<div class="faq-item">
<button class="faq-q" onclick="toggleFaq(this)">
Как быстро активируется подписка после оплаты?
<div class="faq-icon">+</div>
</button>
<div class="faq-a">
<div class="faq-a-inner">Мгновенно. Бот автоматически выдаёт конфиг сразу после подтверждения оплаты — обычно не более 30 секунд.</div>
</div>
</div>
<div class="faq-item">
<button class="faq-q" onclick="toggleFaq(this)">
Можно ли использовать на телефоне и Android TV?
<div class="faq-icon">+</div>
</button>
<div class="faq-a">
<div class="faq-a-inner">Да, VPN работает на Android, iOS, Android TV, Windows, macOS и Linux. Для подключения используется v2rayNG (Android / Android TV) или Shadowrocket (iOS). Установка занимает 1–2 минуты.</div>
</div>
</div>
<div class="faq-item">
<button class="faq-q" onclick="toggleFaq(this)">
Сохраняются ли логи моей активности?
<div class="faq-icon">+</div>
</button>
<div class="faq-a">
<div class="faq-a-inner">Нет. Мы придерживаемся строгой политики No-Log. Никакие данные о вашем трафике, посещённых сайтах или IP-адресах не сохраняются и не передаются третьим лицам.</div>
</div>
</div>
<div class="faq-item">
<button class="faq-q" onclick="toggleFaq(this)">
Что делать если VPN перестал работать?
<div class="faq-icon">+</div>
</button>
<div class="faq-a">
<div class="faq-a-inner">Напишите в техподдержку @Gioramily — проблема обычно решается за несколько минут. Также можно попробовать сменить локацию сервера прямо в боте.</div>
</div>
</div>
</div>
</section>
<!-- REVIEWS -->
<section id="reviews" class="reveal">
<h2 class="section-title">Что говорят пользователи</h2>
<p class="section-sub">Реальные отзывы от наших клиентов</p>
<div class="grid-reviews">
<div class="review-card">
<div class="review-header">
<div class="review-avatar">С</div>
<div>
<div class="review-stars">★★★★★</div>
<div class="review-user">Сергей К.</div>
<div class="review-verified">✓ Проверенный покупатель</div>
</div>
</div>
<p class="review-text">«Брал премиум чисто ради того, чтобы нормально смотреть видосы в 4К на компе, так как стандартные методы перестали работать. Всё летает, задержек нет вообще. Топ за свои деньги.»</p>
</div>
<div class="review-card">
<div class="review-header">
<div class="review-avatar">D</div>
<div>
<div class="review-stars">★★★★★</div>
<div class="review-user">Dima_Gamer</div>
<div class="review-verified">✓ Проверенный покупатель</div>
</div>
</div>
<p class="review-text">«Респект разработчику за пинг! Играю в онлайн-шутеры, с этим впном пакеты не теряются, коннект стабильный. Главное — на ПК настраивается за полминуты.»</p>
</div>
</div>
</section>
<!-- SUPPORT -->
<section id="support" class="reveal">
<div class="support-card">
<h3>Возникли вопросы или нужна помощь?</h3>
<p>Наша техническая поддержка работает оперативно. Если не получается настроить клиент или есть вопросы по оплате — напишите нам напрямую.</p>
<a href="https://t.me/Gioramily" target="_blank" class="btn-support">Связаться с техподдержкой</a>
</div>
</section>
</main>
<footer>
<div class="container">
<p>© 2026 DmitriyVPN. Все права защищены. Разработано для всех типов устройств.</p>
</div>
</footer>
<script>
/* ===== BURGER MENU ===== */
function toggleMobile() {
const burger = document.getElementById('burger');
const nav = document.getElementById('mobileNav');
const isOpen = burger.classList.toggle('open');
nav.classList.toggle('open', isOpen);
document.body.style.overflow = isOpen ? 'hidden' : '';
}
function closeMobile() {
document.getElementById('burger').classList.remove('open');
document.getElementById('mobileNav').classList.remove('open');
document.body.style.overflow = '';
}
/* ===== SCROLL REVEAL ===== */
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
revealObserver.unobserve(entry.target);
}
});
}, { threshold: 0.08 });
document.querySelectorAll('.reveal').forEach(el => revealObserver.observe(el));
/* ===== BILLING TOGGLE ===== */
const prices = {
month: { standard: 109.22, pro: 194.41, premium: 291.62 },
'3month': { standard: 98.30, pro: 174.97, premium: 262.46 },
year: { standard: 87.38, pro: 155.53, premium: 233.30 }
};
function setBilling(period, btn) {
document.querySelectorAll('.billing-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
const p = prices[period];
const els = {
'price-from': p.standard,
'price-standard': p.standard,
'price-pro': p.pro,
'price-premium': p.premium
};
Object.entries(els).forEach(([id, val]) => {
const el = document.getElementById(id);
el.classList.add('updating');
setTimeout(() => {
el.textContent = val.toFixed(2);
el.classList.remove('updating');
}, 150);
});
}
/* ===== FAQ ACCORDION ===== */
function toggleFaq(btn) {
const item = btn.parentElement;
const answer = item.querySelector('.faq-a');
const isOpen = item.classList.contains('open');
// Close all
document.querySelectorAll('.faq-item').forEach(i => {
i.classList.remove('open');
i.querySelector('.faq-a').style.maxHeight = null;
});
// Open if was closed
if (!isOpen) {
item.classList.add('open');
answer.style.maxHeight = answer.scrollHeight + 'px';
}
}
</script>
</body>
</html>