1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>IndexerPro — Fast URL Indexing for Google & Yandex</title>
7 <meta name="description" content="Fast URL indexing for Google & Yandex via Google Indexing API and IndexNow. Googlebot starts arriving within 10 minutes. Up to 95% of URLs get a bot visit.">
8 <meta name="keywords" content="url indexing, google indexing api, indexnow, fast indexing, url indexer, yandex indexing, speed up indexing">
9 <meta name="robots" content="index, follow">
10 <meta property="og:title" content="IndexerPro — Fast URL Indexing for Google & Yandex">
11 <meta property="og:description" content="Googlebot starts arriving within 10 minutes. Up to 95% of URLs get a bot visit.">
12 <meta property="og:url" content="https://indexerpro.net">
13 <meta property="og:type" content="website">
14 <meta property="og:image" content="https://indexerpro.net/og.png">
15 <meta name="google-site-verification" content="pRTAWm4MwWiu4_5v_ctWy7_5xaa7cqv7gmm-MC_VOjU">
16 <meta name="yandex-verification" content="f23b1ee38969b79c">
17 <link rel="icon" href="/favicon.png" type="image/png">
18 <link rel="icon" href="/favicon.svg" type="image/svg+xml">
19 <link rel="shortcut icon" href="/favicon.svg">
20 <link rel="preconnect" href="https://fonts.googleapis.com">
21 <link rel="preconnect" href="https://fonts.googleapis.com">
22 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
23
<link rel="stylesheet" as="style" href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:wght@300;400;500;600&display=swap" onload="this.onload=null;this.rel='stylesheet'">
24 <noscript>
25 <link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
26 </noscript>
27 <style>*{
28 margin:0;
29 padding:0;
30 box-sizing:border-box}
31 :root{
32 --bg:#080c10;
33 --bg2:#0d1117;
34 --bg3:#161b22;
35 --bg4:#1c2128;
36 --border:rgba(255,255,255,0.08);
37 --border2:rgba(255,255,255,0.14);
38 --text:#f0f6fc;
39 --text2:#c9d1d9;
40 --text3:#8b949e;
41 --text4:#6e7681;
42 --accent:#58a6ff;
43 --accent2:#1f6feb;
44 --accent3:#388bfd;
45 --green:#56d364;
46 --green2:#2ea043;
47 --purple:#8957e5;
48 --gold:#e3b341;
49 --red:#f85149;
50 }
51 html{
52 scroll-behavior:smooth}
53 body{
54 font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;
-webkit-font-smoothing:antialiased;overflow-x:hidden}
55
56/* NOISE TEXTURE */
57body::before{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");pointer-events:none;z-index:0;opacity:.4}
58
59/* GLOW BLOBS */
60.blob{position:absolute;border-radius:50%;filter:blur(120px);pointer-events:none;z-index:0}
61.blob-1{width:600px;height:600px;background:radial-gradient(circle,rgba(31,111,235,0.18),transparent 70%);top:-200px;left:-100px}
62.blob-2{width:500px;height:500px;background:radial-gradient(circle,rgba(137,87,229,0.12),transparent 70%);top:200px;right:-150px}
63.blob-3{width:400px;height:400px;background:radial-gradient(circle,rgba(86,211,100,0.08),transparent 70%);top:800px;left:30%}
64
65/* NAV */
66nav{position:fixed;top:0;left:0;right:0;z-index:500;padding:0 40px;height:64px;display:flex;align-items:center;justify-content:space-between;background:rgba(8,12,16,0.8);
backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}
67.nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none}
68.nav-logo-icon{width:36px;height:36px;background:linear-gradient(135deg,#1f6feb,#8957e5);border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:'Syne',sans-serif;font-size:18px;font-weight:800;color:#fff}
69.nav-logo-text{font-family:'Syne',sans-serif;font-size:18px;font-weight:700;color:var(--text)}
70.nav-right{display:flex;align-items:center;gap:12px}
71.lang-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;border-radius:6px;border:1px solid var(--border2);background:transparent;color:var(--text3);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:500;cursor:pointer;text-decoration:none;transition:all .2s}
72.lang-btn:hover,.lang-btn.active{border-color:var(--accent2);color:var(--accent);background:rgba(31,111,235,0.1)}
73.btn-outline{padding:7px 18px;border-radius:7px;border:1px solid var(--border2);background:transparent;color:var(--text2);font-family:'DM Sans',sans-serif;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:all .2s}
74.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:rgba(88,166,255,0.06)}
75.btn-primary{padding:7px 18px;border-radius:7px;border:none;background:var(--accent2);color:#fff;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;transition:all .2s}
76.btn-primary:hover{background:var(--accent3);transform:translateY(-1px)}
77
78/* HERO */
79.hero{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:120px 24px 80px;overflow:hidden}
80.hero-content{position:relative;z-index:1;max-width:820px}
81.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:100px;border:1px solid rgba(86,211,100,0.3);background:rgba(86,211,100,0.06);font-size:13px;font-weight:500;color:var(--green);margin-bottom:28px;animation:fadeUp .6s ease both}
82.hero-badge::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 2s infinite}
83@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}
84.hero h1{font-family:'Syne',sans-serif;font-size:clamp(38px,6vw,72px);font-weight:800;line-height:1.1;letter-spacing:-2px;margin-bottom:24px;animation:fadeUp .7s .1s ease both}
85.hero h1 span{background:linear-gradient(135deg,#58a6ff,#8957e5);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;background-clip:text}
86.hero p{font-size:clamp(16px,2vw,20px);color:var(--text3);line-height:1.7;max-width:560px;margin:0 auto 40px;animation:fadeUp .7s .2s ease both}
87.hero-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;animation:fadeUp .7s .3s ease both}
88.btn-hero{padding:14px 32px;border-radius:10px;font-family:'DM Sans',sans-serif;font-size:16px;font-weight:600;cursor:pointer;text-decoration:none;transition:all .25s;border:none}
89.btn-hero-primary{background:linear-gradient(135deg,#1f6feb,#8957e5);color:#fff;box-shadow:0 4px 24px rgba(31,111,235,0.35)}
90.btn-hero-primary:hover{transform:translateY(-2px);box-shadow:0 8px 32px rgba(31,111,235,0.5)}
91.btn-hero-secondary{background:var(--bg3);color:var(--text2);border:1px solid var(--border2)}
92.btn-hero-secondary:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
93.hero-stats{display:flex;gap:40px;justify-content:center;margin-top:64px;animation:fadeUp .7s .4s ease both}
94.stat{text-align:center}
95.stat-num{font-family:'Syne',sans-serif;font-size:32px;font-weight:800;color:var(--text);letter-spacing:-1px}
96.stat-num span{color:var(--accent)}
97.stat-label{font-size:13px;color:var(--text4);margin-top:4px}
98.hero-divider{width:1px;background:var(--border);align-self:stretch}
99@keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
100
101/* GRID LINES */
102.grid-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,0.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.02) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse 80% 60% at 50% 50%,black,transparent)}
103
104/* SECTIONS */
105section{position:relative;z-index:1;padding:100px 24px}
106.container{max-width:1100px;margin:0 auto}
107.section-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:2px;color:var(--accent);margin-bottom:12px}
108.section-title{font-family:'Syne',sans-serif;font-size:clamp(28px,4vw,44px);font-weight:800;letter-spacing:-1px;margin-bottom:16px}
109.section-sub{font-size:17px;color:var(--text3);line-height:1.7;max-width:540px}
110
111/* HOW IT WORKS */
112.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-top:60px}
113.step{background:var(--bg2);border:1px solid var(--border);border-radius:16px;padding:32px;position:relative;overflow:hidden;transition:border-color .3s,transform .3s}
114.step:hover{border-color:var(--border2);transform:translateY(-4px)}
115.step::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(31,111,235,0.04),transparent 60%);pointer-events:none}
116.step-num{font-family:'Syne',sans-serif;font-size:48px;font-weight:800;color:rgba(88,166,255,0.12);position:absolute;top:20px;right:24px;line-height:1}
117.step-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:20px}
118.step-icon-1{background:rgba(31,111,235,0.15)}
119.step-icon-2{background:rgba(137,87,229,0.15)}
120.step-icon-3{background:rgba(86,211,100,0.15)}
121.step-icon-4{background:rgba(227,179,65,0.15)}
122.step h3{font-family:'Syne',sans-serif;font-size:18px;font-weight:700;margin-bottom:10px}
123.step p{font-size:14px;color:var(--text3);line-height:1.7}
124
125/* FEATURES */
126.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:60px}
127.feature{padding:24px;background:var(--bg2);border:1px solid var(--border);border-radius:12px;transition:all .3s}
128.feature:hover{border-color:var(--border2);background:var(--bg3)}
129.feature-icon{font-size:28px;margin-bottom:14px}
130.feature h4{font-family:'Syne',sans-serif;font-size:15px;font-weight:700;margin-bottom:8px}
131.feature p{font-size:13px;color:var(--text3);line-height:1.6}
132
133/* PRICING */
134.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-top:60px}
135.plan{background:var(--bg2);border:1px solid var(--border);border-radius:16px;padding:28px;position:relative;transition:all .3s}
136.plan:hover{transform:translateY(-4px)}
137.plan.featured{border-color:var(--accent2);background:linear-gradient(135deg,rgba(31,111,235,0.08),var(--bg2));box-shadow:0 0 40px rgba(31,111,235,0.15)}
138.plan-badge{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:linear-gradient(135deg,#1f6feb,#8957e5);color:#fff;font-size:11px;font-weight:700;padding:4px 14px;border-radius:100px;white-space:nowrap;text-transform:uppercase;letter-spacing:.5px}
139.plan-name{font-family:'Syne',sans-serif;font-size:16px;font-weight:700;margin-bottom:8px}
140.plan-price{font-family:'Syne',sans-serif;font-size:36px;font-weight:800;letter-spacing:-1px;margin-bottom:4px}
141.plan-price small{font-size:16px;font-weight:400;color:var(--text3)}
142.plan-urls{font-size:13px;color:var(--text3);margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid var(--border)}
143.plan-feature{font-size:13px;color:var(--text2);padding:5px 0;display:flex;align-items:center;gap:8px}
144.plan-feature::before{content:'✓';color:var(--green);font-weight:700;font-size:14px}
145.plan-btn{width:100%;margin-top:20px;padding:10px;border-radius:8px;border:none;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}
146.plan-btn-default{background:var(--bg3);color:var(--text2);border:1px solid var(--border2)}
147.plan-btn-default:hover{border-color:var(--accent);color:var(--accent)}
148.plan-btn-featured{background:linear-gradient(135deg,#1f6feb,#8957e5);color:#fff}
149.plan-btn-featured:hover{opacity:.9;transform:translateY(-1px)}
150.plan-bonus{display:inline-block;font-size:11px;font-weight:700;color:#f0883e;background:rgba(240,136,62,0.1);border:1px solid rgba(240,136,62,0.2);border-radius:100px;padding:2px 8px;margin-left:6px}
151
152/* CTA BANNER */
153.cta-banner{background:linear-gradient(135deg,rgba(31,111,235,0.15),rgba(137,87,229,0.1));border:1px solid rgba(31,111,235,0.25);border-radius:24px;padding:64px 48px;text-align:center;margin-top:80px;position:relative;overflow:hidden}
154.cta-banner::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 50% 50%,rgba(31,111,235,0.08),transparent);pointer-events:none}
155.cta-banner h2{font-family:'Syne',sans-serif;font-size:clamp(24px,4vw,40px);font-weight:800;letter-spacing:-1px;margin-bottom:16px;position:relative}
156.cta-banner p{font-size:17px;color:var(--text3);margin-bottom:32px;position:relative}
157
158/* FOOTER */
159footer{border-top:1px solid var(--border);padding:40px 40px;display:flex;align-items:center;justify-content:space-between;flex-wrap:gap;gap:16px}
160.footer-logo{display:flex;align-items:center;gap:8px;text-decoration:none}
161.footer-links{display:flex;gap:20px}
162.footer-links a{font-size:13px;color:var(--text4);text-decoration:none;transition:color .2s}
163.footer-links a:hover{color:var(--text2)}
164.footer-copy{font-size:13px;color:var(--text4);padding-right:48px}
165
166/* MODAL */
167.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.75);
backdrop-filter:blur(8px);z-index:5000;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .25s}
168.modal-overlay.active{opacity:1;pointer-events:all}
169.modal{background:var(--bg2);border:1px solid var(--border2);border-radius:16px;padding:36px;width:100%;max-width:400px;position:relative;transform:translateY(20px) scale(.97);transition:transform .25s;max-height:90vh;overflow-y:auto;scrollbar-width:none}
170.modal-overlay.active .modal{transform:translateY(0) scale(1)}
171.modal-close{position:absolute;top:16px;right:16px;width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text3);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}
172.modal-close:hover{border-color:var(--border2);color:var(--text);background:var(--bg3)}
173.modal-logo{display:flex;align-items:center;gap:10px;margin-bottom:24px}
174.modal-logo-icon{width:36px;height:36px;background:linear-gradient(135deg,#1f6feb,#8957e5);border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:'Syne',sans-serif;font-size:16px;font-weight:800;color:#fff}
175.modal-logo-text{font-family:'Syne',sans-serif;font-size:17px;font-weight:700}
176.modal h2{font-family:'Syne',sans-serif;font-size:20px;font-weight:800;margin-bottom:4px}
177.modal-sub{font-size:13px;color:var(--text3);margin-bottom:24px}
178.form-group{margin-bottom:16px}
179.form-label{display:block;font-size:12px;font-weight:600;color:var(--text3);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}
180.form-input{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;padding:10px 13px;outline:none;font-family:'DM Sans',sans-serif;transition:border-color .15s}
181.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(88,166,255,0.1)}
182.form-input::placeholder{color:var(--text4)}
183.form-hint{font-size:11px;color:var(--text4);margin-top:4px}
184.pw-wrap{position:relative}
185.pw-wrap .form-input{padding-right:40px}
186.pw-eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);cursor:pointer;color:var(--text4);font-size:15px;user-select:none}
187.pw-eye:hover{color:var(--text2)}
188.submit-btn{width:100%;padding:11px;background:linear-gradient(135deg,#1f6feb,#8957e5);color:#fff;border:none;border-radius:8px;font-family:'DM Sans',sans-serif;font-size:15px;font-weight:600;cursor:pointer;margin-top:4px;transition:all .2s}
189.submit-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}
190.submit-btn:disabled{opacity:.5;cursor:not-allowed}
191.modal-footer{text-align:center;margin-top:20px;font-size:13px;color:var(--text3)}
192.modal-footer a{color:var(--accent);text-decoration:none;font-weight:500;cursor:pointer}
193.modal-footer a:hover{text-decoration:underline}
194.error-box{background:rgba(248,81,73,0.08);border:1px solid rgba(248,81,73,0.25);border-radius:8px;padding:10px 14px;font-size:13px;color:var(--red);margin-bottom:16px}
195.bonus-box{background:rgba(86,211,100,0.08);border:1px solid rgba(86,211,100,0.2);border-radius:8px;padding:10px 14px;font-size:12px;color:var(--green);margin-bottom:18px}
196.modal-tabs{display:flex;gap:4px;background:var(--bg3);border-radius:8px;padding:4px;margin-bottom:24px}
197.modal-tab{flex:1;padding:8px;border-radius:6px;border:none;background:transparent;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;color:var(--text3);cursor:pointer;transition:all .2s}
198.modal-tab.active{background:var(--bg2);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,0.3)}
199
200/* RESPONSIVE */
201@media(max-width:768px){
202 nav{padding:0 16px;gap:8px}
203 .nav-right .lang-btn{display:none}
204 .hero-stats{gap:16px;flex-wrap:wrap}
205 .hero-divider{display:none}
206 .cta-banner{padding:40px 24px}
207 footer{flex-direction:column;text-align:center;padding:32px 20px}
208 .footer-links{flex-wrap:wrap;justify-content:center}
209}
210/* Модальные окна как bottom sheet на мобиле */
211@media(max-width:480px){
212 .modal-overlay{
213 align-items:flex-end;
214 padding:0;
215 }
216 .modal{
217 width:100%;
218 max-width:100%;
219 border-radius:20px 20px 0 0;
220 padding:28px 20px 40px;
221 transform:translateY(40px);
222 margin:0;
223 }
224 .modal-overlay.active .modal{
225 transform:translateY(0);
226 }
227 /* Индикатор drag (bottom sheet handle) */
228 .modal::before{
229 content:'';
230 display:block;
231 width:40px;
232 height:4px;
233 background:rgba(255,255,255,0.15);
234 border-radius:2px;
235 margin:0 auto 20px;
236 }
237 .modal-close{
238 top:18px;
239 right:16px;
240 }
241}
242</style>
243
244<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script><script>
245 window.dataLayer = window.dataLayer || [];
246 function gtag(){dataLayer.push(arguments);}
247 gtag("js", new Date());
248 gtag("config", "G-TKQT27PMH7");
249</script>
250<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async="" defer=""></script>
251<!-- Яндекс Метрика -->
252<script type="text/javascript">(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");ym(109024692,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true});</script>
253<noscript><div><img src="https://mc.yandex.ru/watch/109024692" style="position:absolute;left:-9999px;" alt=""/></div></noscript>
254<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-TKQT27PMH7"></script></head>
255<body>
256
257<!-- BLOBS -->
258<div class="blob blob-1"></div>
259<div class="blob blob-2"></div>
260<div class="blob blob-3"></div>
261
262<!-- NAV -->
263<nav>
264 <a href="/" class="nav-logo">
265
<div class="nav-logo-icon">I</div>
266 <span class="nav-logo-text">IndexerPro</span>
267 </a>
268 <div class="nav-right">
269 <a href="https://indexerpro.net/lang/en?redirect=https%3A%2F%2Findexerpro.net" class="lang-btn active"><span style="display:inline-flex;width:20px;height:14px;border-radius:2px;border:1px solid rgba(0,0,0,0.2);overflow:hidden;flex-shrink:0;background:repeating-linear-gradient(180deg,#B22234 0px,#B22234 2px,#fff 2px,#fff 4px);position:relative"><span style="position:absolute;top:0;left:0;width:9px;height:7px;background:#3C3B6E"></span></span> EN</a>
270 <a href="https://indexerpro.net/lang/ru?redirect=https%3A%2F%2Findexerpro.net" class="lang-btn "><svg width="20" height="14" viewBox="0 0 20 14" style="border-radius:2px;vertical-align:middle"><rect width="20" height="4.67" fill="white"></rect><rect y="4.67" width="20" height="4.67" fill="#0039A6"></rect><rect y="9.33" width="20" height="4.67" fill="#D52B1E"></rect></svg> RU</a>
271 <button class="btn-outline" onclick="openModal('login')">Sign in</button>
272
<button class="btn-primary" onclick="openModal('register')">Get started free</button>
273 </div>
274</nav>
275
276<!-- HERO -->
277<section class="hero">
278 <div class="grid-bg"></div>
279 <div class="hero-content">
280 <div class="hero-badge">
281 <span>✓ Live right now — bot arrives in 2 min</span>
282 </div>
283 <h1>Your pages in Google<br>indexed within <span>2 hours</span></h1>
284 <p>Googlebot not showing up for weeks? IndexerPro submits URLs via official Google Indexing API — bot arrives in 2–4 hours on average. Guarantee: no visit — we refund your points.</p>
285 <div class="hero-cta">
286
<button class="btn-hero btn-hero-primary" onclick="openModal('register')">🚀 Try for free</button>
287 <button class="btn-hero btn-hero-secondary" onclick="document.getElementById('how').scrollIntoView({behavior:'smooth'})">How it works ↓</button>
288 </div>
289 <div style="margin-top:16px;font-size:13px;color:var(--green);animation:fadeUp .7s .35s ease both">🎁 Sign up and get 20 free URLs</div>
290 <div class="hero-stats">
291 <div class="stat">
292 <div class="stat-num">95<span>%</span></div>
293 <div class="stat-label">URLs get bot visit</div>
294 </div>
295 <div class="hero-divider"></div>
296 <div class="stat">
297 <div class="stat-num">2+<span> min</span></div>
298 <div class="stat-label">Bot arrives in 2+ min</div>
299 </div>
300 <div class="hero-divider"></div>
301 <div class="stat">
302 <div class="stat-num">10<span>+</span></div>
303 <div class="stat-label">AI bots tracked</div>
304 </div>
305 <div class="hero-divider"></div>
306 <div class="stat">
307 <div class="stat-num">50K</div>
308 <div class="stat-label">URLs per batch</div>
309 </div>
310 </div>
311 </div>
312</section>
313
314<div id="how"></div>
315<!-- HOW IT WORKS -->
316<section style="padding-top:0">
317 <div class="container">
318 <div class="section-label">How it works</div>
319 <h2 class="section-title">4 steps to indexing</h2>
320 <p class="section-sub">No manual work — just upload your URL list and the system does the rest.</p>
321 <div class="steps">
322 <div class="step">
323 <div class="step-num">01</div>
324 <div class="step-icon step-icon-1">📋</div>
325 <h3>Add URLs</h3>
326
<p>Paste URLs manually, upload a TXT file or connect a Sitemap — up to 50,000 URLs at once.</p>
327 </div>
328 <div class="step">
329 <div class="step-num">02</div>
330 <div class="step-icon step-icon-2">⚡</div>
331 <h3>API Submission</h3>
332
<p>IndexerPro sends URLs via Google Indexing API and IndexNow (Yandex/Bing) simultaneously.</p>
333 </div>
334 <div class="step">
335 <div class="step-num">03</div>
336 <div class="step-icon step-icon-3">🤖</div>
337 <h3>Googlebot visits</h3>
338
<p>Search bots receive the notification and visit your pages. We track every bot visit.</p>
339 </div>
340 <div class="step">
341 <div class="step-num">04</div>
342 <div class="step-icon step-icon-4">📊</div>
343 <h3>Statistics</h3>
344
<p>Detailed reports: how many URLs were submitted, how many received a bot, batch history.</p>
345 </div>
346 </div>
347 </div>
348</section>
349
350<div id="features"></div>
351<!-- FEATURES -->
352<section>
353 <div class="container">
354 <div class="section-label">Features</div>
355 <h2 class="section-title">Everything you need for indexing</h2>
356 <div class="features-grid">
357 <div class="feature" style="border-color:rgba(210,153,34,0.3);background:linear-gradient(135deg,rgba(210,153,34,0.05),var(--bg2))"><div class="feature-icon">🛡️</div><h4>Bot Guarantee</h4><
p>If Googlebot does not visit — free resubmission. Still no visit — automatic points refund.</p></div>
358 <div class="feature"><div class="feature-icon">🗺️</div><h4>Sitemap</h4><
p>Auto-parsing of Sitemap.xml — new URLs are added to the queue automatically.</p></div>
359 <div class="feature"><div class="feature-icon">⏱️</div><h4>Scheduler</h4>
<p>Set up automatic indexing runs on a schedule.</p></div>
360 <div class="feature"><div class="feature-icon">🎁</div><h4>Referrals</h4><
p>Invite friends — get bonuses for each signup and % from their top-ups.</p></div>
361 <div class="feature"><div class="feature-icon">📈</div><h4>IndexNow</h4><
p>Instant notification of Yandex and Bing via IndexNow protocol.</p></div>
362 <div class="feature" style="border-color:rgba(210,168,255,0.3);background:linear-gradient(135deg,rgba(210,168,255,0.06),var(--bg2))"><div class="feature-icon">🤖</div><h4>AI Indexing</h4><
p>URLs get into GPTBot, ClaudeBot, Perplexity, Gemini. Your content gets cited in AI answers.</p></div>
363 <div class="feature" style="border-color:rgba(86,211,100,0.25);background:linear-gradient(135deg,rgba(86,211,100,0.04),var(--bg2))"><div class="feature-icon">📊</div><h4>AI Bot Analytics</h4><
p>Track which AI bots crawl your pages by batch. A unique feature not found in competitors.</p></div>
364 </div>
365 </div>
366</section>
367
368<!-- AI AUDIT SECTION -->
369<section style="padding:90px 24px;background:linear-gradient(180deg,var(--bg2) 0%,var(--bg) 100%);border-top:1px solid var(--border);border-bottom:1px solid var(--border);position:relative;overflow:hidden">
370 <!-- Glow фон -->
371 <div style="position:absolute;top:-100px;right:-100px;width:500px;height:500px;background:radial-gradient(circle,rgba(89,65,169,0.12),transparent 70%);pointer-events:none"></div>
372 <div style="position:absolute;bottom:-80px;left:-80px;width:400px;height:400px;background:radial-gradient(circle,rgba(31,111,235,0.1),transparent 70%);pointer-events:none"></div>
373
374 <div style="max-width:1100px;margin:0 auto;position:relative;z-index:1">
375
376 <!-- Заголовок -->
377 <div style="text-align:center;margin-bottom:64px">
378 <div style="display:inline-flex;align-items:center;gap:8px;background:rgba(137,87,229,0.12);border:1px solid rgba(137,87,229,0.3);color:#b392f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;padding:6px 16px;border-radius:99px;margin-bottom:18px">
379 🔬 New Tool
380 </div>
381 <h2 style="font-family:'Syne',sans-serif;font-size:clamp(28px,4vw,46px);font-weight:800;letter-spacing:-1.5px;margin-bottom:16px;color:var(--text)">
382 AI Audit — how visible are you to AI?
383 </h2>
384 <p style="font-size:17px;color:var(--text3);max-width:620px;margin:0 auto;line-height:1.7">
385 We check your page across 13 parameters and give a score from 0 to 100 — how well ChatGPT, Claude, Perplexity and other AI systems understand it.
386 </p>
387 </div>
388
389 <!-- Три блока категорий -->
390 <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:48px">
391
392 <!-- Technical -->
393 <div style="background:var(--bg);border:1px solid rgba(88,166,255,0.2);border-radius:16px;padding:28px;position:relative;overflow:hidden">
394 <div style="position:absolute;top:0;right:0;width:80px;height:80px;background:radial-gradient(circle,rgba(88,166,255,0.08),transparent);pointer-events:none"></div>
395 <div style="display:flex;align-items:center;gap:12px;margin-bottom:20px">
396 <div style="width:44px;height:44px;border-radius:10px;background:rgba(88,166,255,0.1);border:1px solid rgba(88,166,255,0.2);display:flex;align-items:center;justify-content:center;font-size:20px">⚙️</div>
397 <div>
398 <div style="font-family:'Syne',sans-serif;font-size:16px;font-weight:700;color:var(--text)">Technical</div>
399 <div style="font-size:12px;color:var(--accent);font-weight:600">up to 40 pts</div>
400 </div>
401 </div>
402 <div style="display:flex;flex-direction:column;gap:10px">
403 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
404 <span>🌐</span><
span>HTTP status & accessibility</span>
405 </div>
406 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
407 <span>⚡</span>
<span>Server response speed (TTFB)</span>
408 </div>
409 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
410 <span>📄</span><
span>Page size</span>
411 </div>
412 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
413 <span>🔧</span><
span>JavaScript dependency</span>
414 </div>
415 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
416 <span>🤖</span><
span>AI bot access (robots.txt)</span>
417 </div>
418 </div>
419 </div>
420
421 <!-- Semantic -->
422 <div style="background:var(--bg);border:1px solid rgba(137,87,229,0.25);border-radius:16px;padding:28px;position:relative;overflow:hidden">
423 <div style="position:absolute;top:0;right:0;width:80px;height:80px;background:radial-gradient(circle,rgba(137,87,229,0.08),transparent);pointer-events:none"></div>
424 <div style="display:flex;align-items:center;gap:12px;margin-bottom:20px">
425 <div style="width:44px;height:44px;border-radius:10px;background:rgba(137,87,229,0.1);border:1px solid rgba(137,87,229,0.2);display:flex;align-items:center;justify-content:center;font-size:20px">🧠</div>
426 <div>
427 <div style="font-family:'Syne',sans-serif;font-size:16px;font-weight:700;color:var(--text)">Semantic</div>
428 <div style="font-size:12px;color:#b392f0;font-weight:600">up to 35 pts</div>
429 </div>
430 </div>
431 <div style="display:flex;flex-direction:column;gap:10px">
432 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
433
<span>🏷️</span><
span>Semantic HTML tags</span>
434 </div>
435 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
436 <span>📝</span><
span>Heading structure H1–H3</span>
437 </div>
438 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
439 <span>📦</span><
span>Text chunk quality</span>
440 </div>
441 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
442 <span>❓</span>
<span>FAQ and content lists</span>
443 </div>
444 </div>
445 </div>
446
447 <!-- Retrieval -->
448 <div style="background:var(--bg);border:1px solid rgba(86,211,100,0.2);border-radius:16px;padding:28px;position:relative;overflow:hidden">
449 <div style="position:absolute;top:0;right:0;width:80px;height:80px;background:radial-gradient(circle,rgba(86,211,100,0.06),transparent);pointer-events:none"></div>
450 <div style="display:flex;align-items:center;gap:12px;margin-bottom:20px">
451 <div style="width:44px;height:44px;border-radius:10px;background:rgba(86,211,100,0.1);border:1px solid rgba(86,211,100,0.2);display:flex;align-items:center;justify-content:center;font-size:20px">🎯</div>
452 <div>
453 <div style="font-family:'Syne',sans-serif;font-size:16px;font-weight:700;color:var(--text)">Retrieval</div>
454 <div style="font-size:12px;color:var(--green);font-weight:600">up to 25 pts</div>
455 </div>
456 </div>
457 <div style="display:flex;flex-direction:column;gap:10px">
458 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
459 <span>📋</span><
span>Schema.org / JSON-LD markup</span>
460 </div>
461 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
462 <span>🕐</span><
span>Freshness signals (dates)</span>
463 </div>
464 <div style="display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text3)">
465 <span>🔒</span><
span>Trust signals (author, contacts)</span>
466 </div>
467 </div>
468 </div>
469
470 </div>
471
472 <!-- Score демо + CTA -->
473 <div style="background:var(--bg);border:1px solid rgba(137,87,229,0.25);border-radius:20px;padding:36px 40px;display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap">
474
475 <!-- Score визуализация -->
476 <div style="display:flex;align-items:center;gap:32px;flex-wrap:wrap">
477 <!-- Большой score -->
478 <div style="text-align:center">
479 <div style="width:100px;height:100px;border-radius:50%;background:conic-gradient(#8957e5 0deg,#58a6ff 216deg,rgba(255,255,255,0.06) 216deg);display:flex;align-items:center;justify-content:center;position:relative">
480 <div style="width:78px;height:78px;border-radius:50%;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center">
481 <span style="font-family:'Syne',sans-serif;font-size:26px;font-weight:800;color:var(--text);line-height:1">74</span>
482
<span style="font-size:10px;color:var(--text4)">/100</span>
483 </div>
484 </div>
485
<div style="font-size:12px;color:var(--text4);margin-top:8px">AI Score</div>
486 </div>
487 <!-- Три мини-бара -->
488 <div style="display:flex;flex-direction:column;gap:12px;min-width:180px">
489 <div>
490 <div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px">
<span style="color:var(--text3)">Technical</span><span style="color:var(--accent);font-weight:700">32/40</span></div>
491 <div style="height:5px;background:var(--bg3);border-radius:3px"><div style="width:80%;height:100%;background:linear-gradient(90deg,#1f6feb,#58a6ff);border-radius:3px"></div></div>
492 </div>
493 <div>
494 <div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px">
<span style="color:var(--text3)">Semantic</span><span style="color:#b392f0;font-weight:700">26/35</span></div>
495 <div style="height:5px;background:var(--bg3);border-radius:3px"><div style="width:74%;height:100%;background:linear-gradient(90deg,#8957e5,#b392f0);border-radius:3px"></div></div>
496 </div>
497 <div>
498 <div style="display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px">
<span style="color:var(--text3)">Retrieval</span><span style="color:var(--green);font-weight:700">16/25</span></div>
499 <div style="height:5px;background:var(--bg3);border-radius:3px"><div style="width:64%;height:100%;background:linear-gradient(90deg,#2ea043,#56d364);border-radius:3px"></div></div>
500 </div>
501 </div>
502 </div>
503
504 <!-- Текст и кнопка -->
505 <div style="flex:1;min-width:240px">
506 <div style="font-family:'Syne',sans-serif;font-size:20px;font-weight:800;margin-bottom:10px;color:var(--text)">
507 50 pts = $0.05 per URL
508 </div>
509
<p style="font-size:14px;color:var(--text3);line-height:1.7;margin-bottom:20px">
510 Get a full report: what prevents AI from finding your page, specific recommendations with ready-made fixes. First re-audit is free after 24 hours.
511 </p>
512
<button class="btn-hero btn-hero-primary" onclick="openModal('register')" style="font-size:14px;padding:11px 24px">
513 🔬 Audit my page
514 </button>
515 </div>
516
517 </div>
518
519 </div>
520</section>
521
522<div id="pricing"></div>
523<!-- PRICING -->
524<section>
525 <div class="container">
526 <div class="section-label">Pricing</div>
527 <h2 class="section-title">Simple per-URL pricing</h2>
528 <p class="section-sub">10 points = 1 URL = $0.01. The larger the top-up — the bigger the bonus.</p>
529 <div class="pricing-grid">
530 <div class="plan">
531 <div class="plan-name">Starter</div>
532 <div class="plan-price">$1
<small>/ top-up</small></div>
533
<div class="plan-urls">1,000 pts = 100 URLs</div>
534 <div class="plan-feature">Google Indexing API</div>
535 <div class="plan-feature">IndexNow</div>
536 <div class="plan-feature">Batch history</div>
537 <button class="plan-btn plan-btn-default" onclick="openModal('register')">Get started</button>
538 </div>
539 <div class="plan featured">
540 <div class="plan-badge">POPULAR</div>
541 <div class="plan-name">Basic</div>
542 <div class="plan-price">$10 <small>/ top-up</small></div>
543 <div class="plan-urls">11,000 pts = 1,100 URLs <span class="plan-bonus">+10%</span></div>
544 <div class="plan-feature">Google Indexing API</div>
545 <div class="plan-feature">IndexNow</div>
546 <div class="plan-feature">Sitemap auto-parse</div>
547 <div class="plan-feature">Scheduler</div>
548
<button class="plan-btn plan-btn-featured" onclick="openModal('register')">Choose plan</button>
549 </div>
550 <div class="plan">
551 <div class="plan-name">Pro</div>
552 <div class="plan-price">$100
<small>/ top-up</small></div>
553
<div class="plan-urls">120,000 pts = 12,000 URLs
<span class="plan-bonus">+20%</span></div>
554 <div class="plan-feature">Everything in Basic</div>
555 <div class="plan-feature">Priority queue</div>
556 <button class="plan-btn plan-btn-default" onclick="openModal('register')">Get started</button>
557 </div>
558 <div class="plan">
559 <div class="plan-name">Max</div>
560 <div class="plan-price">$1,000
<small>/ top-up</small></div>
561
<div class="plan-urls">1,250,000 pts = 125,000 URLs
<span class="plan-bonus">+25%</span></div>
562 <div class="plan-feature">Everything in Pro</div>
563 <div class="plan-feature">Up to 50,000 URLs/batch</div>
564 <div class="plan-feature">Personal support</div>
565 <button class="plan-btn plan-btn-default" onclick="openModal('register')">Get started</button>
566 </div>
567 </div>
568
569 <!-- CTA BANNER -->
570 <div class="cta-banner">
571 <h2>Try right now — it's free</h2>
572 <p>30 second signup. Bonus URLs on first login. Bot guarantee — or points refund.</p>
573
<button class="btn-hero btn-hero-primary" onclick="openModal('register')">🚀 Register for free</button>
574
<div style="margin-top:16px;font-size:13px;color:var(--text4)">No subscription. Pay only for actually processed URLs.</div>
575 </div>
576 </div>
577</section>
578
579<div id="cta"></div>
580<!-- FOOTER -->
581<footer>
582 <a href="/" class="footer-logo">
583
<div class="nav-logo-icon" style="width:28px;height:28px;font-size:13px">I</div>
584
<span style="font-family:'Syne',sans-serif;font-size:15px;font-weight:700;color:var(--text3)">IndexerPro</span>
585 </a>
586 <div class="footer-links">
587
<a href="/login">Sign in</a>
588
<a href="/register">Register</a>
589
<a href="/faq">FAQ</a>
590
<a href="https://t.me/artslin" target="_blank">Telegram</a>
591 </div>
592
<div class="footer-copy">© 2026 IndexerPro ·
<a href="/legal" style="color:var(--text4);text-decoration:none;" onmouseover="this.style.color='var(--text2)'" onmouseout="this.style.color='var(--text4)'">Оферта</a></div>
593</footer>
594
595<!-- MODAL LOGIN -->
596<div class="modal-overlay" id="modal-login" onclick="closeOnOverlay(event,'modal-login')">
597 <div class="modal">
598 <button class="modal-close" onclick="closeModal('modal-login')">✕</button>
599 <div class="modal-logo">
600 <div class="modal-logo-icon">I</div>
601 <span class="modal-logo-text">IndexerPro</span>
602 </div>
603 <div class="modal-tabs">
604 <button class="modal-tab active" onclick="switchTab('login')">Sign in</button>
605 <button class="modal-tab" onclick="switchTab('register')">Register</button>
606 </div>
607 <h2>Sign in</h2>
608 <p class="modal-sub">Enter your credentials to continue</p>
609 <form method="POST" action="/login">
610 <input type="hidden" name="_token" value="6eS3FrTW6tmQbyASfb65AQx9hFKc97TnCDPogPWe" autocomplete="off"> <div class="form-group">
611 <label class="form-label">Email</label>
612 <input class="form-input" type="email" name="email" placeholder="you@example.com" autocomplete="email" value="" required="" autofocus="">
613 </div>
614 <div class="form-group">
615 <label class="form-label">Password</label>
616 <div class="pw-wrap">
617
<input class="form-input" type="password" name="password" id="lp1" placeholder="••••••••" autocomplete="current-password" required="">
618 <span class="pw-eye" onclick="togglePw('lp1',this)">👁</span>
619 </div>
620 </div>
621 <div class="cf-turnstile" id="login-turnstile" data-sitekey="0x4AAAAAADIghoLejmz03dn3" data-callback="onLoginCaptcha" style="margin-bottom:14px"><div><input type="hidden" name="cf-turnstile-response" id="cf-chl-widget-zvwx8_response"></div></div>
622 <script>
623 var adminEmails = ['rok-asv@mail.ru'];
624 function checkAdminEmail() {
625 var email = document.getElementById('le1') ? document.getElementById('le1').value : '';
626 var ts = document.getElementById('login-turnstile');
627 if (!ts) return;
628 if (adminEmails.indexOf(email.toLowerCase().trim()) !== -1) {
629 ts.style.display = 'none';
630 } else {
631 ts.style.display = '';
632 }
633 }
634 document.addEventListener('DOMContentLoaded', function() {
635 var emailInput = document.getElementById('le1') || document.querySelector('input[name="email"]');
636 if (emailInput) {
637 emailInput.addEventListener('input', checkAdminEmail);
638 checkAdminEmail();
639 }
640 });
641 </script>
642 <div style="margin-bottom:16px">
643 <label style="display:flex;align-items:center;gap:7px;cursor:pointer;font-size:13px;color:var(--text2);user-select:none">
644 <input type="checkbox" name="remember" id="remember_me" value="1" checked="" style="width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex-shrink:0">
645 Remember me
646 </label>
647 </div>
648 <button type="submit" class="submit-btn" id="login-btn" style="opacity: 1; cursor: pointer;">Sign in →</button>
649 </form>
650 <div class="modal-footer">No account?
<a onclick="switchTab('register')">Sign up for free</a></div>
651 </div>
652</div>
653
654<!-- MODAL REGISTER -->
655<div class="modal-overlay" id="modal-register" onclick="closeOnOverlay(event,'modal-register')">
656 <div class="modal">
657 <button class="modal-close" onclick="closeModal('modal-register')">✕</button>
658 <div class="modal-logo">
659 <div class="modal-logo-icon">I</div>
660 <span class="modal-logo-text">IndexerPro</span>
661 </div>
662 <div class="modal-tabs">
663 <button class="modal-tab" onclick="switchTab('login')">Sign in</button>
664 <button class="modal-tab active" onclick="switchTab('register')">Register</button>
665 </div>
666 <h2>Create account</h2>
667 <p class="modal-sub">Get started in 30 seconds</p>
668 <div class="bonus-box">🎁 Sign up bonus: <strong>20 free URLs</strong></div>
669 <form method="POST" action="/register">
670 <input type="hidden" name="_token" value="6eS3FrTW6tmQbyASfb65AQx9hFKc97TnCDPogPWe" autocomplete="off"> <input type="hidden" name="ref" value="">
671 <div class="form-group">
672 <label class="form-label">Name</label>
673 <input class="form-input" type="text" name="name" placeholder="John Smith" value="" required="">
674 </div>
675 <div class="form-group">
676 <label class="form-label">Username</label>
677 <input class="form-input" type="text" name="username" placeholder="johndoe" value="" required="" pattern="[a-zA-Z0-9_]+" style="font-family:monospace">
678 <div class="form-hint">Letters, numbers and _ only</div>
679 </div>
680 <div class="form-group">
681 <label class="form-label">Email</label>
682 <input class="form-input" type="email" name="email" placeholder="you@example.com" autocomplete="email" value="" required="">
683 </div>
684 <div class="form-group">
685 <label class="form-label">Password</label>
686 <div class="pw-wrap">
687
<input class="form-input" type="password" name="password" id="rp1" placeholder="Min 8 characters" required="">
688 <span class="pw-eye" onclick="togglePw('rp1',this)">👁</span>
689 </div>
690 </div>
691 <div class="form-group">
692 <label class="form-label">Confirm password</label>
693 <div class="pw-wrap">
694
<input class="form-input" type="password" name="password_confirmation" id="rp2" placeholder="Repeat password" required="">
695 <span class="pw-eye" onclick="togglePw('rp2',this)">👁</span>
696 </div>
697 </div>
698 <div class="cf-turnstile" data-sitekey="0x4AAAAAADIghoLejmz03dn3" data-callback="onRegCaptcha" style="margin-bottom:14px"><div><input type="hidden" name="cf-turnstile-response" id="cf-chl-widget-ti3fb_response"></div></div>
699 <button type="submit" class="submit-btn" id="reg-btn" style="opacity: 1; cursor: pointer;">Create account →</button>
700 </form>
701 <div class="modal-footer">Already have an account?
<a onclick="switchTab('login')">Sign in</a></div>
702 </div>
703</div>
704
705<script>
706function openModal(type) {
707 if (!window.recaptchaLoaded) {
708 var s = document.createElement("script");
709 s.src = "https://www.google.com/recaptcha/api.js";
710 document.head.appendChild(s);
711 window.recaptchaLoaded = true;
712 }
713 document.querySelectorAll('.modal-overlay').forEach(m => m.classList.remove('active'));
714 document.getElementById('modal-' + type).classList.add('active');
715 document.body.style.overflow = 'hidden';
716}
717function closeModal(id) {
718 document.getElementById(id).classList.remove('active');
719 document.body.style.overflow = '';
720}
721var _mouseDownTarget = null;
722document.addEventListener('mousedown', function(e){ _mouseDownTarget = e.target; });
723function closeOnOverlay(e, id) {
724 // Закрываем только если mousedown И mouseup были на overlay (не выделение текста)
725 if (e.target === document.getElementById(id) && _mouseDownTarget === e.target) closeModal(id);
726}
727function switchTab(type) {
728 document.querySelectorAll('.modal-overlay').forEach(m => m.classList.remove('active'));
729 openModal(type);
730}
731document.addEventListener('keydown', function(e) {
732 if (e.key === 'Escape') {
733 document.querySelectorAll('.modal-overlay').forEach(m => m.classList.remove('active'));
734 document.body.style.overflow = '';
735 }
736});
737function toggleShared(cb){
738 var rm=document.getElementById('remember_me');
739 if(cb.checked){
740 rm.checked=false;
741 rm.disabled=true;
742 rm.closest('label').style.opacity='0.4';
743 } else {
744 rm.disabled=false;
745 rm.closest('label').style.opacity='1';
746 }
747}
748function togglePw(id, el) {
749 var inp = document.getElementById(id);
750 inp.type = inp.type === 'password' ? 'text' : 'password';
751 el.style.color = inp.type === 'text' ? 'var(--accent)' : 'var(--text4)';
752}
753function onLoginCaptcha(token) {
754 var b = document.getElementById('login-btn');
755 if(b){b.disabled=false;b.style.opacity='1';b.style.cursor='pointer';}
756}
757function onRegCaptcha(token) {
758 var b = document.getElementById('reg-btn');
759 if(b){b.disabled=false;b.style.opacity='1';b.style.cursor='pointer';}
760}
761// Активируем кнопки сразу если Turnstile не загрузился
762setTimeout(function(){
763 var lb=document.getElementById('login-btn');
764 var rb=document.getElementById('reg-btn');
765 if(lb){lb.disabled=false;lb.style.opacity='1';lb.style.cursor='pointer';}
766 if(rb){rb.disabled=false;rb.style.opacity='1';rb.style.cursor='pointer';}
767},3000);
768// Auto-open modal if URL has ?modal=login or ?modal=register
769var urlParams = new URLSearchParams(window.location.search);
770var modalParam = urlParams.get('modal');
771if (modalParam === 'login' || modalParam === 'register') openModal(modalParam);
772</script>
773<script>
774window.addEventListener('load', function() {
775 setTimeout(function() {
776 var s=document.createElement('script');
777 s.async=1;s.src='https://www.googletagmanager.com/gtag/js?id=G-TKQT27PMH7';
778 document.head.appendChild(s);
779 window.dataLayer=window.dataLayer||[];
780 function gtag(){dataLayer.push(arguments);}
781 gtag('js',new Date());gtag('config','G-TKQT27PMH7');
782 }, 2000);
783});
784</script>
785
786
787<style>
788/* Offset для фиксированного навбара */
789#how, #features, #pricing { scroll-margin-top: 80px; }
790
791.scroll-down{position:fixed;bottom:36px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;text-decoration:none;z-index:999;transition:opacity .3s}
792.scroll-down span{font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:3px;font-weight:700;white-space:nowrap;text-shadow:0 0 12px rgba(88,166,255,0.5)}
793.scroll-down svg{color:var(--accent);width:28px;height:28px;filter:drop-shadow(0 0 8px rgba(88,166,255,0.6));animation:bounce2 1.5s infinite}
794@keyframes bounce2{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
795.scroll-down.hidden{opacity:0;pointer-events:none}
796
797.back-top{position:fixed;bottom:32px;right:32px;width:44px;height:44px;border-radius:50%;background:var(--bg3);border:1px solid var(--border2);color:var(--text3);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:99;opacity:0;transition:all .3s;font-size:18px;pointer-events:none}
798.back-top.visible{opacity:1;pointer-events:all}
799.back-top:hover{background:var(--accent2);color:#fff;border-color:var(--accent2)}
800</style>
801
802<a class="scroll-down" id="scrollBtn" href="#how">
803 <span id="scrollLabel">How it works</span>
804 <span style="font-size:32px;line-height:1;filter:drop-shadow(0 0 8px rgba(88,166,255,0.6));animation:bounce2 1.5s infinite;display:block">👇</span>
805</a>
806<button class="back-top" id="backTop" onclick="window.scrollTo({top:0,behavior:'smooth'})">↑</button>
807
808<script>
809var isRu = 'en' === 'ru';
810var sections = [
811 {id:'top', label:{ru:'Узнать больше', en:'Learn more'}},
812 {id:'how', label:{ru:'Как работает', en:'How it works'}},
813 {id:'features',label:{ru:'Возможности', en:'Features'}},
814 {id:'pricing', label:{ru:'Тарифы', en:'Pricing'}},
815 {id:'cta', label:{ru:'Зарегистрироваться', en:'Get started'}}
816];
817var currentIdx = 0;
818var scrollBtn = document.getElementById('scrollBtn');
819var scrollLabel = document.getElementById('scrollLabel');
820var backTop = document.getElementById('backTop');
821
822function getNextLabel() {
823 var next = Math.min(currentIdx + 1, sections.length - 1);
824 return sections[next].label[isRu ? 'ru' : 'en'];
825}
826
827function scrollToNext() {
828 var next = Math.min(currentIdx + 1, sections.length - 1);
829 var el = document.getElementById(sections[next].id);
830 if (el) {
831 var top = el.getBoundingClientRect().top + window.scrollY - 80;
832 window.scrollTo({top: top, behavior: 'smooth'});
833 }
834}
835
836scrollBtn.addEventListener('click', function(e) {
837 e.preventDefault();
838 scrollToNext();
839});
840
841window.addEventListener('scroll', function() {
842 var scrollY = window.scrollY;
843
844 // Определяем текущую секцию
845 sections.forEach(function(s, i) {
846 var el = document.getElementById(s.id);
847 if (el && el.getBoundingClientRect().top <= 120) currentIdx = i;
848 });
849
850 // Обновляем лейбл
851 scrollLabel.textContent = getNextLabel();
852
853 // Скрываем стрелку в конце
854 var docH = document.body.scrollHeight;
855 var winH = window.innerHeight;
856 if (scrollY + winH >= docH - 100) {
857 scrollBtn.classList.add('hidden');
858 } else {
859 scrollBtn.classList.remove('hidden');
860 }
861
862 // Кнопка наверх
863 if (scrollY > 400) backTop.classList.add('visible');
864 else backTop.classList.remove('visible');
865});
866
867// Инициализация
868scrollLabel.textContent = sections[1].label[isRu ? 'ru' : 'en'];
869</script>
870</body></html>