voidisopenyt commited on
Commit
1391c11
·
verified ·
1 Parent(s): cddc4a3

in GA - Initial Deployment

Browse files
Files changed (6) hide show
  1. README.md +6 -4
  2. index.html +227 -18
  3. instructions.html +388 -0
  4. privacy.html +176 -0
  5. tos.html +185 -0
  6. voidcaptcha.js +154 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Voidcaptcha
3
- emoji: 🔥
4
  colorFrom: green
5
- colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: voidcaptcha
3
+ emoji: 🐳
4
  colorFrom: green
5
+ colorTo: green
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,228 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
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>VoidCaptcha - Simple, Secure Dark Mode CAPTCHA</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/feather-icons"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <!-- Google tag (gtag.js) -->
11
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
12
+ <script>
13
+ window.dataLayer = window.dataLayer || [];
14
+ function gtag(){dataLayer.push(arguments);}
15
+ gtag('js', new Date());
16
+ gtag('config', 'G-XXXXXXXXXX');
17
+ </script>
18
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
19
+ <style>
20
+ body {
21
+ font-family: 'Inter', sans-serif;
22
+ background-color: #111827;
23
+ color: #f3f4f6;
24
+ }
25
+ .gradient-text {
26
+ background: linear-gradient(90deg, #6366f1, #8b5cf6);
27
+ -webkit-background-clip: text;
28
+ background-clip: text;
29
+ color: transparent;
30
+ }
31
+ .hero-gradient {
32
+ background: linear-gradient(135deg, #f9fafb 0%, #eef2ff 100%);
33
+ }
34
+ .feature-card:hover {
35
+ transform: translateY(-5px);
36
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
37
+ }
38
+ </style>
39
+ </head>
40
+ <body class="min-h-screen flex flex-col">
41
+ <!-- Navigation -->
42
+ <nav class="bg-white shadow-sm">
43
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
44
+ <div class="flex justify-between h-16">
45
+ <div class="flex items-center">
46
+ <div class="flex-shrink-0 flex items-center">
47
+ <span class="text-xl font-bold gradient-text">VoidCaptcha</span>
48
+ </div>
49
+ </div>
50
+ <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
51
+ <a href="index.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
52
+ <a href="instructions.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Instructions</a>
53
+ <a href="privacy.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Privacy</a>
54
+ <a href="tos.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Terms</a>
55
+ </div>
56
+ <div class="-mr-2 flex items-center sm:hidden">
57
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500" aria-controls="mobile-menu" aria-expanded="false" id="mobile-menu-button">
58
+ <i data-feather="menu"></i>
59
+ </button>
60
+ </div>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- Mobile menu -->
65
+ <div class="sm:hidden hidden" id="mobile-menu">
66
+ <div class="pt-2 pb-3 space-y-1">
67
+ <a href="index.html" class="bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Home</a>
68
+ <a href="instructions.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Instructions</a>
69
+ <a href="privacy.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Privacy</a>
70
+ <a href="tos.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Terms</a>
71
+ </div>
72
+ </div>
73
+ </nav>
74
+
75
+ <!-- Hero Section -->
76
+ <div class="hero-gradient">
77
+ <div class="max-w-7xl mx-auto py-16 px-4 sm:py-24 sm:px-6 lg:px-8">
78
+ <div class="text-center">
79
+ <h1 class="text-4xl font-extrabold tracking-tight text-gray-900 sm:text-5xl md:text-6xl">
80
+ <span class="block">Simple, Secure</span>
81
+ <span class="block gradient-text">CAPTCHA Solution</span>
82
+ </h1>
83
+ <p class="mt-3 max-w-md mx-auto text-base text-gray-500 sm:text-lg md:mt-5 md:text-xl md:max-w-3xl">
84
+ VoidCaptcha provides an elegant, user-friendly way to verify human users without the frustration of traditional CAPTCHAs.
85
+ </p>
86
+ <div class="mt-5 max-w-md mx-auto sm:flex sm:justify-center md:mt-8">
87
+
88
+ </a>
89
+ </div>
90
+ <div class="mt-3 rounded-md shadow sm:mt-0 sm:ml-3">
91
+ <a href="instructions.html" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-indigo-600 bg-white hover:bg-gray-50 md:py-4 md:text-lg md:px-10">
92
+ Get Started
93
+ </a>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <!-- Features Section -->
101
+ <div class="py-12 bg-white">
102
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
103
+ <div class="lg:text-center">
104
+ <h2 class="text-base text-indigo-600 font-semibold tracking-wide uppercase">Features</h2>
105
+ <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 sm:text-4xl">
106
+ Why choose VoidCaptcha?
107
+ </p>
108
+ <p class="mt-4 max-w-2xl text-xl text-gray-500 lg:mx-auto">
109
+ Our solution combines security with exceptional user experience.
110
+ </p>
111
+ </div>
112
+
113
+ <div class="mt-10">
114
+ <div class="space-y-10 md:space-y-0 md:grid md:grid-cols-3 md:gap-x-8 md:gap-y-10">
115
+ <div class="feature-card relative bg-white p-6 rounded-lg shadow-md transition-all duration-300 ease-in-out">
116
+ <div>
117
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
118
+ <i data-feather="shield"></i>
119
+ </div>
120
+ <div class="mt-5">
121
+ <h3 class="text-lg leading-6 font-medium text-gray-900">Bot Protection</h3>
122
+ <p class="mt-2 text-base text-gray-500">
123
+ Effectively blocks automated bots while keeping the process simple for humans.
124
+ </p>
125
+ </div>
126
+ </div>
127
+ </div>
128
+
129
+ <div class="feature-card relative bg-white p-6 rounded-lg shadow-md transition-all duration-300 ease-in-out">
130
+ <div>
131
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
132
+ <i data-feather="user-check"></i>
133
+ </div>
134
+ <div class="mt-5">
135
+ <h3 class="text-lg leading-6 font-medium text-gray-900">User-Friendly</h3>
136
+ <p class="mt-2 text-base text-gray-500">
137
+ Simple color selection makes verification quick and intuitive for all users.
138
+ </p>
139
+ </div>
140
+ </div>
141
+ </div>
142
+
143
+ <div class="feature-card relative bg-white p-6 rounded-lg shadow-md transition-all duration-300 ease-in-out">
144
+ <div>
145
+ <div class="flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
146
+ <i data-feather="zap"></i>
147
+ </div>
148
+ <div class="mt-5">
149
+ <h3 class="text-lg leading-6 font-medium text-gray-900">Lightweight</h3>
150
+ <p class="mt-2 text-base text-gray-500">
151
+ Just 3KB minified with zero dependencies. Loads instantly on any device.
152
+ </p>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+
161
+
162
+
163
+ <!-- CTA Section -->
164
+ <div class="bg-indigo-700">
165
+ <div class="max-w-2xl mx-auto text-center py-16 px-4 sm:py-20 sm:px-6 lg:px-8">
166
+ <h2 class="text-3xl font-extrabold text-white sm:text-4xl">
167
+ <span class="block">Ready to implement VoidCaptcha?</span>
168
+ </h2>
169
+ <p class="mt-4 text-lg leading-6 text-indigo-200">
170
+ Get started in minutes with our simple integration guide.
171
+ </p>
172
+ <a href="instructions.html" class="mt-8 w-full inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-indigo-600 bg-white hover:bg-indigo-50 sm:w-auto">
173
+ View Documentation
174
+ </a>
175
+ </div>
176
+ </div>
177
+
178
+ <!-- Footer -->
179
+ <footer class="bg-white">
180
+ <div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
181
+ <nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer">
182
+ <div class="px-5 py-2">
183
+ <a href="index.html" class="text-base text-gray-500 hover:text-gray-900">Home</a>
184
+ </div>
185
+ <div class="px-5 py-2">
186
+ <a href="instructions.html" class="text-base text-gray-500 hover:text-gray-900">Instructions</a>
187
+ </div>
188
+ <div class="px-5 py-2">
189
+ <a href="privacy.html" class="text-base text-gray-500 hover:text-gray-900">Privacy Policy</a>
190
+ </div>
191
+ <div class="px-5 py-2">
192
+ <a href="tos.html" class="text-base text-gray-500 hover:text-gray-900">Terms of Service</a>
193
+ </div>
194
+ </nav>
195
+ <p class="mt-8 text-center text-base text-gray-400">
196
+ &copy; 2025 VoidCaptcha. All rights reserved. Contact: voidisopenscience@gmail.com
197
+ </p>
198
+ </div>
199
+ </footer>
200
+
201
+ <script>
202
+ // Mobile menu toggle
203
+ document.getElementById('mobile-menu-button').addEventListener('click', function() {
204
+ const menu = document.getElementById('mobile-menu');
205
+ menu.classList.toggle('hidden');
206
+ });
207
+
208
+
209
+
210
+ document.body.appendChild(form);
211
+
212
+
213
+ // Close button
214
+ const closeBtn = document.createElement('button');
215
+ closeBtn.innerHTML = '<i data-feather="x"></i>';
216
+ closeBtn.className = 'absolute top-2 right-2 text-gray-500 hover:text-gray-700';
217
+ closeBtn.addEventListener('click', function() {
218
+ document.body.removeChild(form);
219
+ document.body.removeChild(script);
220
+ });
221
+ form.appendChild(closeBtn);
222
+
223
+ feather.replace();
224
+ });
225
+ </script>
226
+ <script>feather.replace();</script>
227
+ </body>
228
  </html>
instructions.html ADDED
@@ -0,0 +1,388 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>VoidCaptcha - Implementation Instructions</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/feather-icons"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <!-- Google tag (gtag.js) -->
11
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
12
+ <script>
13
+ window.dataLayer = window.dataLayer || [];
14
+ function gtag(){dataLayer.push(arguments);}
15
+ gtag('js', new Date());
16
+ gtag('config', 'G-XXXXXXXXXX');
17
+ </script>
18
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
19
+ <style>
20
+ body {
21
+ font-family: 'Inter', sans-serif;
22
+ background-color: #111827;
23
+ color: #f3f4f6;
24
+ }
25
+ .gradient-text {
26
+ background: linear-gradient(90deg, #6366f1, #8b5cf6);
27
+ -webkit-background-clip: text;
28
+ background-clip: text;
29
+ color: transparent;
30
+ }
31
+ pre {
32
+ background-color: #1e293b;
33
+ color: #f8fafc;
34
+ padding: 1rem;
35
+ border-radius: 0.5rem;
36
+ overflow-x: auto;
37
+ }
38
+ code {
39
+ font-family: 'Courier New', Courier, monospace;
40
+ }
41
+ </style>
42
+ </head>
43
+ <body class="min-h-screen flex flex-col">
44
+ <!-- Navigation -->
45
+ <nav class="bg-white shadow-sm">
46
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
47
+ <div class="flex justify-between h-16">
48
+ <div class="flex items-center">
49
+ <div class="flex-shrink-0 flex items-center">
50
+ <span class="text-xl font-bold gradient-text">VoidCaptcha</span>
51
+ </div>
52
+ </div>
53
+ <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
54
+ <a href="index.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
55
+ <a href="instructions.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Instructions</a>
56
+ <a href="privacy.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Privacy</a>
57
+ <a href="tos.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Terms</a>
58
+ </div>
59
+ <div class="-mr-2 flex items-center sm:hidden">
60
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500" aria-controls="mobile-menu" aria-expanded="false" id="mobile-menu-button">
61
+ <i data-feather="menu"></i>
62
+ </button>
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <!-- Mobile menu -->
68
+ <div class="sm:hidden hidden" id="mobile-menu">
69
+ <div class="pt-2 pb-3 space-y-1">
70
+ <a href="index.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Home</a>
71
+ <a href="instructions.html" class="bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Instructions</a>
72
+ <a href="privacy.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Privacy</a>
73
+ <a href="tos.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Terms</a>
74
+ </div>
75
+ </div>
76
+ </nav>
77
+
78
+ <!-- Main Content -->
79
+ <div class="flex-grow">
80
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
81
+ <div class="text-center mb-12">
82
+ <h1 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">
83
+ Implementation <span class="gradient-text">Instructions</span>
84
+ </h1>
85
+ <p class="mt-3 max-w-2xl mx-auto text-xl text-gray-500 sm:mt-4">
86
+ Get VoidCaptcha up and running on your website in just a few simple steps.
87
+ </p>
88
+ </div>
89
+
90
+ <div class="bg-white shadow overflow-hidden sm:rounded-lg">
91
+ <div class="px-4 py-5 sm:px-6">
92
+ <h3 class="text-lg leading-6 font-medium text-gray-900">
93
+ Basic Implementation
94
+ </h3>
95
+ <p class="mt-1 max-w-2xl text-sm text-gray-500">
96
+ Add VoidCaptcha to any form on your website.
97
+ </p>
98
+ </div>
99
+ <div class="border-t border-gray-200 px-4 py-5 sm:p-0">
100
+ <div class="sm:divide-y sm:divide-gray-200">
101
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
102
+ <dt class="text-sm font-medium text-gray-500">
103
+ 1. Include the script
104
+ </dt>
105
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
106
+ <p class="mb-4">Add this script tag just before your closing <code>&lt;/body&gt;</code> tag:</p>
107
+ <div class="mb-4">
108
+ <p class="mt-4 text-sm text-gray-400"> Code
109
+ </p>
110
+ <pre><code>// voidcaptcha.js
111
+ (function(){
112
+ const COLORS=["red","blue"];
113
+ const BASE_TINY=15.19202383;
114
+ let target=null, tries=0, cooldown=5000, blockedUntil=0, verified=false, countdownTimer=null;
115
+
116
+ function createOverlay(){
117
+ if(document.getElementById("voidcaptcha-overlay")) return;
118
+
119
+ // full screen overlay
120
+ const overlay=document.createElement("div");
121
+ overlay.id="voidcaptcha-overlay";
122
+ overlay.style.cssText=`
123
+ position:fixed;top:0;left:0;width:100%;height:100%;
124
+ background:#000;display:flex;justify-content:center;align-items:center;
125
+ z-index:2147483647;flex-direction:column;
126
+ `;
127
+
128
+ // container card
129
+ const card=document.createElement("div");
130
+ card.style.cssText=`
131
+ background:#111214;color:#eee;padding:26px;border-radius:14px;
132
+ text-align:center;box-shadow:0 18px 60px rgba(0,0,0,0.7);
133
+ max-width:380px;width:92%;display:flex;flex-direction:column;align-items:center;
134
+ `;
135
+
136
+ const title=document.createElement("h2");
137
+ title.innerText="VoidCaptcha";
138
+ title.style.margin="0 0 10px 0";
139
+ title.style.fontSize="20px";
140
+
141
+ // checkbox container
142
+ const cbContainer=document.createElement("div");
143
+ cbContainer.style.margin="10px 0 20px 0";
144
+ const checkbox=document.createElement("input");
145
+ checkbox.type="checkbox";
146
+ checkbox.id="voidcaptcha-checkbox";
147
+ checkbox.style.width="24px"; checkbox.style.height="24px"; checkbox.style.cursor="pointer";
148
+ const label=document.createElement("label");
149
+ label.style.color="#eee"; label.style.cursor="pointer"; label.style.marginLeft="8px";
150
+ label.innerText="I'm not a robot";
151
+ cbContainer.appendChild(checkbox); cbContainer.appendChild(label);
152
+
153
+ // links
154
+ const links=document.createElement("div");
155
+ links.style.fontSize="12px"; links.style.color="#aaa"; links.style.marginTop="8px";
156
+ links.innerHTML=`<a href="https://example.com" target="_blank" style="color:#8ab4f8;">Privacy Policy</a> | <a href="https://example.com" target="_blank" style="color:#8ab4f8;">Terms of Service</a>`;
157
+
158
+ // instruction & result
159
+ const instruction=document.createElement("p");
160
+ instruction.style.margin="10px 0 12px 0";
161
+ instruction.style.color="#cfcfcf"; instruction.style.fontSize="14px";
162
+ const result=document.createElement("div");
163
+ result.style.fontWeight="700"; result.style.minHeight="20px"; result.style.marginTop="10px";
164
+
165
+ // box container (hidden until checkbox checked)
166
+ const boxesWrap=document.createElement("div");
167
+ boxesWrap.style.margin="6px 0 8px 0"; boxesWrap.style.display="none"; boxesWrap.style.justifyContent="center";
168
+
169
+ card.appendChild(title);
170
+ card.appendChild(cbContainer);
171
+ card.appendChild(instruction);
172
+ card.appendChild(boxesWrap);
173
+ card.appendChild(result);
174
+ card.appendChild(links);
175
+ overlay.appendChild(card);
176
+ document.body.appendChild(overlay);
177
+
178
+ // create box
179
+ function makeBox(color){
180
+ const el=document.createElement("div"); el.dataset.color=color;
181
+ el.style.cssText=`
182
+ display:inline-block;width:120px;height:120px;margin:8px;cursor:pointer;
183
+ border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,0.45);
184
+ background:${color};transition: transform .12s ease, filter .12s ease;
185
+ `;
186
+ el.addEventListener("mouseover",()=>el.style.transform="translateY(-3px)");
187
+ el.addEventListener("mouseout",()=>el.style.transform="translateY(0px)");
188
+ boxesWrap.appendChild(el);
189
+ el.addEventListener("click",(e)=>onBoxClick(e,el,result));
190
+ return el;
191
+ }
192
+
193
+ const redBox=makeBox("red"), blueBox=makeBox("blue");
194
+
195
+ function setTarget(){
196
+ target=COLORS[Math.floor(Math.random()*COLORS.length)];
197
+ instruction.innerText=`Click the ${target} box`;
198
+ }
199
+
200
+ function setCooldown(){
201
+ blockedUntil=Date.now()+cooldown;
202
+ cooldown=Math.min(cooldown*2,3600000); // max 1 hour
203
+ if(cooldown>=3600000) result.innerText="⏳ Maximum wait reached! Next fail = infinite wait";
204
+ redBox.style.pointerEvents="none"; blueBox.style.pointerEvents="none";
205
+ clearInterval(countdownTimer);
206
+ countdownTimer=setInterval(()=>{
207
+ const left=Math.max(0,Math.ceil((blockedUntil-Date.now())/1000));
208
+ result.innerText=`⏳ Wait ${left}s before trying again...`;
209
+ if(left<=0){
210
+ clearInterval(countdownTimer); countdownTimer=null; tries=0;
211
+ redBox.style.pointerEvents="auto"; blueBox.style.pointerEvents="auto"; result.innerText="";
212
+ setTarget();
213
+ }
214
+ },300);
215
+ }
216
+
217
+ function failAttempt(msg){
218
+ tries++;
219
+ if(msg) result.innerText=msg;
220
+ if(tries>=2){
221
+ if(cooldown>=3600000){ // infinite wait
222
+ blockedUntil=1e20;
223
+ result.innerText="⏳ Infinite wait! You failed too many times.";
224
+ }else setCooldown();
225
+ }else setTimeout(()=>{result.innerText=""; setTarget();},350);
226
+ }
227
+
228
+ function pass(){
229
+ verified=true;
230
+ overlay.style.transition="opacity .36s ease"; overlay.style.opacity="0";
231
+ setTimeout(()=>{if(overlay.parentNode) overlay.parentNode.removeChild(overlay);},380);
232
+ checkbox.checked=true; checkbox.disabled=true;
233
+ }
234
+
235
+ function onBoxClick(e,el,result){
236
+ if(Date.now()<blockedUntil) return;
237
+ const color=el.dataset.color;
238
+ if(color!==target){el.style.filter="blur(2px)"; setTimeout(()=>el.style.filter="",350); setTimeout(setTarget,350); return;}
239
+
240
+ const rect=el.getBoundingClientRect();
241
+ const clickX=e.clientX-rect.left, clickY=e.clientY-rect.top;
242
+ const forbiddenX=(rect.width/100)*BASE_TINY+1;
243
+ const forbiddenY=(rect.height/100)*BASE_TINY+1;
244
+
245
+ if(Math.abs(clickX-rect.width/2)<forbiddenX && Math.abs(clickY-rect.height/2)<forbiddenY){
246
+ failAttempt("❌ Try Again!"); return;
247
+ }
248
+
249
+ pass();
250
+ }
251
+
252
+ // checkbox click → show boxes
253
+ checkbox.addEventListener("change",()=>{
254
+ if(verified){ checkbox.checked=true; checkbox.disabled=true; return;}
255
+ if(checkbox.checked){ boxesWrap.style.display="flex"; setTarget();}
256
+ });
257
+ }
258
+
259
+ if(document.readyState==="loading") document.addEventListener("DOMContentLoaded",createOverlay);
260
+ else createOverlay();
261
+ })();
262
+ </code></pre>
263
+ <p class="mt-4 text-sm text-gray-400">^^^
264
+ code!!! that is actally the voidcaptcha.js code
265
+ </p>
266
+
267
+ </div>
268
+ <pre><code>&lt;script src="voidcaptcha.js"&gt;&lt;/script&gt;</code></pre>
269
+ <p class="mt-4 text-sm text-gray-400">Step 1: Download and include the script above before your closing &lt;/body&gt; tag</p>
270
+ </dd>
271
+ </div>
272
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
273
+ <dt class="text-sm font-medium text-gray-500">
274
+ 2. Verify in your backend
275
+ </dt>
276
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
277
+ <p class="mb-4">When the form is submitted, check for the <code>voidcaptcha-checkbox</code> field in your form data. It will be set to "on" if the user successfully completed the CAPTCHA.</p>
278
+ <p>Here's an example in PHP:</p>
279
+ <pre><code>if (!isset($_POST['voidcaptcha-checkbox']) || $_POST['voidcaptcha-checkbox'] !== 'on') {
280
+ // CAPTCHA verification failed
281
+ die('Please complete the CAPTCHA verification.');
282
+ }</code></pre>
283
+ </dd>
284
+ </div>
285
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
286
+ <dt class="text-sm font-medium text-gray-500">
287
+ 3. Customization (optional)
288
+ </dt>
289
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
290
+ <p class="mb-4">You can customize the colors and behavior by modifying the <code>voidcaptcha.js</code> file:</p>
291
+ <pre><code>const COLORS = ["red", "blue"]; // Change these colors
292
+ const BASE_TINY = 15.19202383; // Adjust sensitivity
293
+ let cooldown = 5000; // Initial cooldown period</code></pre>
294
+ </dd>
295
+ </div>
296
+ </div>
297
+ </div>
298
+ </div>
299
+
300
+ <div class="mt-12 bg-white shadow overflow-hidden sm:rounded-lg">
301
+ <div class="px-4 py-5 sm:px-6">
302
+ <h3 class="text-lg leading-6 font-medium text-gray-900">
303
+ Advanced Usage
304
+ </h3>
305
+ <p class="mt-1 max-w-2xl text-sm text-gray-500">
306
+ Programmatic control and event listeners.
307
+ </p>
308
+ </div>
309
+ <div class="border-t border-gray-200 px-4 py-5 sm:p-0">
310
+ <div class="sm:divide-y sm:divide-gray-200">
311
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
312
+ <dt class="text-sm font-medium text-gray-500">
313
+ Manual Trigger
314
+ </dt>
315
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
316
+ <p class="mb-4">You can manually trigger the CAPTCHA by calling:</p>
317
+ <pre><code>voidcaptcha.createOverlay();</code></pre>
318
+ </dd>
319
+ </div>
320
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
321
+ <dt class="text-sm font-medium text-gray-500">
322
+ Verification Callback
323
+ </dt>
324
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
325
+ <p class="mb-4">Listen for verification events:</p>
326
+ <pre><code>document.addEventListener('voidcaptcha-verified', function() {
327
+ console.log('User verified!');
328
+ // Submit your form or continue with your flow
329
+ });</code></pre>
330
+ </dd>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+
336
+ <div class="mt-12 bg-indigo-50 rounded-lg p-6">
337
+ <div class="flex">
338
+ <div class="flex-shrink-0">
339
+ <i data-feather="alert-circle" class="h-5 w-5 text-indigo-500"></i>
340
+ </div>
341
+ <div class="ml-3">
342
+ <h3 class="text-sm font-medium text-indigo-800">
343
+ Important Note
344
+ </h3>
345
+ <div class="mt-2 text-sm text-indigo-700">
346
+ <p>
347
+ For security reasons, always verify the CAPTCHA on your server-side code. Client-side verification alone is not sufficient as it can be bypassed by malicious users.
348
+ </p>
349
+ </div>
350
+ </div>
351
+ </div>
352
+ </div>
353
+ </div>
354
+ </div>
355
+
356
+ <!-- Footer -->
357
+ <footer class="bg-white">
358
+ <div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
359
+ <nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer">
360
+ <div class="px-5 py-2">
361
+ <a href="index.html" class="text-base text-gray-500 hover:text-gray-900">Home</a>
362
+ </div>
363
+ <div class="px-5 py-2">
364
+ <a href="instructions.html" class="text-base text-gray-500 hover:text-gray-900">Instructions</a>
365
+ </div>
366
+ <div class="px-5 py-2">
367
+ <a href="privacy.html" class="text-base text-gray-500 hover:text-gray-900">Privacy Policy</a>
368
+ </div>
369
+ <div class="px-5 py-2">
370
+ <a href="tos.html" class="text-base text-gray-500 hover:text-gray-900">Terms of Service</a>
371
+ </div>
372
+ </nav>
373
+ <p class="mt-8 text-center text-base text-gray-400">
374
+ &copy; 2025 VoidCaptcha. All rights reserved. Contact: voidisopenscience@gmail.com
375
+ </p>
376
+ </div>
377
+ </footer>
378
+
379
+ <script>
380
+ // Mobile menu toggle
381
+ document.getElementById('mobile-menu-button').addEventListener('click', function() {
382
+ const menu = document.getElementById('mobile-menu');
383
+ menu.classList.toggle('hidden');
384
+ });
385
+ </script>
386
+ <script>feather.replace();</script>
387
+ </body>
388
+ </html>
privacy.html ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>VoidCaptcha - Privacy Policy</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/feather-icons"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <!-- Google tag (gtag.js) -->
11
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
12
+ <script>
13
+ window.dataLayer = window.dataLayer || [];
14
+ function gtag(){dataLayer.push(arguments);}
15
+ gtag('js', new Date());
16
+ gtag('config', 'G-XXXXXXXXXX');
17
+ </script>
18
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
19
+ <style>
20
+ body {
21
+ font-family: 'Inter', sans-serif;
22
+ background-color: #111827;
23
+ color: #f3f4f6;
24
+ }
25
+ .gradient-text {
26
+ background: linear-gradient(90deg, #6366f1, #8b5cf6);
27
+ -webkit-background-clip: text;
28
+ background-clip: text;
29
+ color: transparent;
30
+ }
31
+ </style>
32
+ </head>
33
+ <body class="min-h-screen flex flex-col">
34
+ <!-- Navigation -->
35
+ <nav class="bg-white shadow-sm">
36
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
37
+ <div class="flex justify-between h-16">
38
+ <div class="flex items-center">
39
+ <div class="flex-shrink-0 flex items-center">
40
+ <span class="text-xl font-bold gradient-text">VoidCaptcha</span>
41
+ </div>
42
+ </div>
43
+ <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
44
+ <a href="index.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
45
+ <a href="instructions.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Instructions</a>
46
+ <a href="privacy.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Privacy</a>
47
+ <a href="tos.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Terms</a>
48
+ </div>
49
+ <div class="-mr-2 flex items-center sm:hidden">
50
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500" aria-controls="mobile-menu" aria-expanded="false" id="mobile-menu-button">
51
+ <i data-feather="menu"></i>
52
+ </button>
53
+ </div>
54
+ </div>
55
+ </div>
56
+
57
+ <!-- Mobile menu -->
58
+ <div class="sm:hidden hidden" id="mobile-menu">
59
+ <div class="pt-2 pb-3 space-y-1">
60
+ <a href="index.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Home</a>
61
+ <a href="instructions.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Instructions</a>
62
+ <a href="privacy.html" class="bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Privacy</a>
63
+ <a href="tos.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Terms</a>
64
+ </div>
65
+ </div>
66
+ </nav>
67
+
68
+ <!-- Main Content -->
69
+ <div class="flex-grow">
70
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
71
+ <div class="text-center mb-12">
72
+ <h1 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">
73
+ <span class="gradient-text">Privacy</span> Policy
74
+ </h1>
75
+ <p class="mt-3 max-w-2xl mx-auto text-xl text-gray-500 sm:mt-4">
76
+ Last updated: January 1, 2023
77
+ </p>
78
+ </div>
79
+
80
+ <div class="bg-white shadow overflow-hidden sm:rounded-lg">
81
+ <div class="px-4 py-5 sm:px-6">
82
+ <h3 class="text-lg leading-6 font-medium text-gray-900">
83
+ Our Commitment to Privacy
84
+ </h3>
85
+ <p class="mt-1 max-w-2xl text-sm text-gray-500">
86
+ VoidCaptcha values your privacy and is committed to protecting it.
87
+ </p>
88
+ </div>
89
+ <div class="border-t border-gray-200 px-4 py-5 sm:p-0">
90
+ <div class="sm:divide-y sm:divide-gray-200">
91
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
92
+ <dt class="text-sm font-medium text-gray-500">
93
+ Information We Collect
94
+ </dt>
95
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
96
+ <p class="mb-4">VoidCaptcha is designed with privacy in mind. Unlike many other CAPTCHA solutions, we do not:</p>
97
+ <ul class="list-disc pl-5 space-y-2">
98
+ <li>Collect any personally identifiable information</li>
99
+ <li>Use cookies or tracking technologies</li>
100
+ <li>Store IP addresses or device identifiers</li>
101
+ <li>Profile users or their behavior</li>
102
+ </ul>
103
+ <p class="mt-4">The only information processed is whether the user successfully completed the CAPTCHA challenge, which is temporarily stored in memory and not persisted.</p>
104
+ </dd>
105
+ </div>
106
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
107
+ <dt class="text-sm font-medium text-gray-500">
108
+ How We Use Information
109
+ </dt>
110
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
111
+ <p>The sole purpose of VoidCaptcha is to distinguish human users from automated bots. The verification result is used exclusively for this purpose and is not used for any other tracking or analytics.</p>
112
+ </dd>
113
+ </div>
114
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
115
+ <dt class="text-sm font-medium text-gray-500">
116
+ Data Security
117
+ </dt>
118
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
119
+ <p>We implement appropriate technical measures to ensure that any temporary data processed by VoidCaptcha is protected against unauthorized access, alteration, disclosure, or destruction.</p>
120
+ </dd>
121
+ </div>
122
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
123
+ <dt class="text-sm font-medium text-gray-500">
124
+ Changes to This Policy
125
+ </dt>
126
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
127
+ <p>We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page and updating the "Last updated" date.</p>
128
+ </dd>
129
+ </div>
130
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
131
+ <dt class="text-sm font-medium text-gray-500">
132
+ Contact Us
133
+ </dt>
134
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
135
+ <p>If you have any questions about this Privacy Policy, please contact us at voidisopenscience@gmail.com.</p>
136
+ </dd>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+
144
+ <!-- Footer -->
145
+ <footer class="bg-white">
146
+ <div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
147
+ <nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer">
148
+ <div class="px-5 py-2">
149
+ <a href="index.html" class="text-base text-gray-500 hover:text-gray-900">Home</a>
150
+ </div>
151
+ <div class="px-5 py-2">
152
+ <a href="instructions.html" class="text-base text-gray-500 hover:text-gray-900">Instructions</a>
153
+ </div>
154
+ <div class="px-5 py-2">
155
+ <a href="privacy.html" class="text-base text-gray-500 hover:text-gray-900">Privacy Policy</a>
156
+ </div>
157
+ <div class="px-5 py-2">
158
+ <a href="tos.html" class="text-base text-gray-500 hover:text-gray-900">Terms of Service</a>
159
+ </div>
160
+ </nav>
161
+ <p class="mt-8 text-center text-base text-gray-400">
162
+ &copy; 2025 VoidCaptcha. All rights reserved. Contact: voidisopenscience@gmail.com
163
+ </p>
164
+ </div>
165
+ </footer>
166
+
167
+ <script>
168
+ // Mobile menu toggle
169
+ document.getElementById('mobile-menu-button').addEventListener('click', function() {
170
+ const menu = document.getElementById('mobile-menu');
171
+ menu.classList.toggle('hidden');
172
+ });
173
+ </script>
174
+ <script>feather.replace();</script>
175
+ </body>
176
+ </html>
tos.html ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>VoidCaptcha - Terms of Service</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/feather-icons"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <!-- Google tag (gtag.js) -->
11
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
12
+ <script>
13
+ window.dataLayer = window.dataLayer || [];
14
+ function gtag(){dataLayer.push(arguments);}
15
+ gtag('js', new Date());
16
+ gtag('config', 'G-XXXXXXXXXX');
17
+ </script>
18
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
19
+ <style>
20
+ body {
21
+ font-family: 'Inter', sans-serif;
22
+ background-color: #111827;
23
+ color: #f3f4f6;
24
+ }
25
+ .gradient-text {
26
+ background: linear-gradient(90deg, #6366f1, #8b5cf6);
27
+ -webkit-background-clip: text;
28
+ background-clip: text;
29
+ color: transparent;
30
+ }
31
+ </style>
32
+ </head>
33
+ <body class="min-h-screen flex flex-col">
34
+ <!-- Navigation -->
35
+ <nav class="bg-white shadow-sm">
36
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
37
+ <div class="flex justify-between h-16">
38
+ <div class="flex items-center">
39
+ <div class="flex-shrink-0 flex items-center">
40
+ <span class="text-xl font-bold gradient-text">VoidCaptcha</span>
41
+ </div>
42
+ </div>
43
+ <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
44
+ <a href="index.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
45
+ <a href="instructions.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Instructions</a>
46
+ <a href="privacy.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Privacy</a>
47
+ <a href="tos.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Terms</a>
48
+ </div>
49
+ <div class="-mr-2 flex items-center sm:hidden">
50
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500" aria-controls="mobile-menu" aria-expanded="false" id="mobile-menu-button">
51
+ <i data-feather="menu"></i>
52
+ </button>
53
+ </div>
54
+ </div>
55
+ </div>
56
+
57
+ <!-- Mobile menu -->
58
+ <div class="sm:hidden hidden" id="mobile-menu">
59
+ <div class="pt-2 pb-3 space-y-1">
60
+ <a href="index.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Home</a>
61
+ <a href="instructions.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Instructions</a>
62
+ <a href="privacy.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Privacy</a>
63
+ <a href="tos.html" class="bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Terms</a>
64
+ </div>
65
+ </div>
66
+ </nav>
67
+
68
+ <!-- Main Content -->
69
+ <div class="flex-grow">
70
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
71
+ <div class="text-center mb-12">
72
+ <h1 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">
73
+ Terms of <span class="gradient-text">Service</span>
74
+ </h1>
75
+ <p class="mt-3 max-w-2xl mx-auto text-xl text-gray-500 sm:mt-4">
76
+ Last updated: January 1, 2023
77
+ </p>
78
+ </div>
79
+
80
+ <div class="bg-white shadow overflow-hidden sm:rounded-lg">
81
+ <div class="px-4 py-5 sm:px-6">
82
+ <h3 class="text-lg leading-6 font-medium text-gray-900">
83
+ Terms and Conditions
84
+ </h3>
85
+ <p class="mt-1 max-w-2xl text-sm text-gray-500">
86
+ Please read these Terms of Service carefully before using VoidCaptcha.
87
+ </p>
88
+ </div>
89
+ <div class="border-t border-gray-200 px-4 py-5 sm:p-0">
90
+ <div class="sm:divide-y sm:divide-gray-200">
91
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
92
+ <dt class="text-sm font-medium text-gray-500">
93
+ 1. Acceptance of Terms
94
+ </dt>
95
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
96
+ <p>By using VoidCaptcha, you agree to be bound by these Terms of Service. If you do not agree to all the terms and conditions, you may not use our service.</p>
97
+ </dd>
98
+ </div>
99
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
100
+ <dt class="text-sm font-medium text-gray-500">
101
+ 2. License
102
+ </dt>
103
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
104
+ <p>VoidCaptcha is provided under the MIT License. You are free to use, modify, and distribute the software in accordance with the terms of this license.</p>
105
+ </dd>
106
+ </div>
107
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
108
+ <dt class="text-sm font-medium text-gray-500">
109
+ 3. No Warranty
110
+ </dt>
111
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
112
+ <p>VoidCaptcha is provided "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose.</p>
113
+ </dd>
114
+ </div>
115
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
116
+ <dt class="text-sm font-medium text-gray-500">
117
+ 4. Limitation of Liability
118
+ </dt>
119
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
120
+ <p>In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.</p>
121
+ </dd>
122
+ </div>
123
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
124
+ <dt class="text-sm font-medium text-gray-500">
125
+ 5. Modifications
126
+ </dt>
127
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
128
+ <p>We reserve the right to modify these terms at any time. Your continued use of VoidCaptcha after any such changes constitutes your acceptance of the new Terms of Service.</p>
129
+ </dd>
130
+ </div>
131
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
132
+ <dt class="text-sm font-medium text-gray-500">
133
+ 6. Governing Law
134
+ </dt>
135
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
136
+ <p>These Terms shall be governed and construed in accordance with the laws of the State of Georgia, United States, without regard to its conflict of law provisions.</p>
137
+ </dd>
138
+ </div>
139
+ <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
140
+ <dt class="text-sm font-medium text-gray-500">
141
+ 7. Contact Information
142
+ </dt>
143
+ <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
144
+ <p>If you have any questions about these Terms, please contact us at voidisopenscience@gmail.com.</p>
145
+ </dd>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </div>
152
+
153
+ <!-- Footer -->
154
+ <footer class="bg-white">
155
+ <div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
156
+ <nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer">
157
+ <div class="px-5 py-2">
158
+ <a href="index.html" class="text-base text-gray-500 hover:text-gray-900">Home</a>
159
+ </div>
160
+ <div class="px-5 py-2">
161
+ <a href="instructions.html" class="text-base text-gray-500 hover:text-gray-900">Instructions</a>
162
+ </div>
163
+ <div class="px-5 py-2">
164
+ <a href="privacy.html" class="text-base text-gray-500 hover:text-gray-900">Privacy Policy</a>
165
+ </div>
166
+ <div class="px-5 py-2">
167
+ <a href="tos.html" class="text-base text-gray-500 hover:text-gray-900">Terms of Service</a>
168
+ </div>
169
+ </nav>
170
+ <p class="mt-8 text-center text-base text-gray-400">
171
+ &copy; 2025 VoidCaptcha. All rights reserved. Contact: voidisopenscience@gmail.com
172
+ </p>
173
+ </div>
174
+ </footer>
175
+
176
+ <script>
177
+ // Mobile menu toggle
178
+ document.getElementById('mobile-menu-button').addEventListener('click', function() {
179
+ const menu = document.getElementById('mobile-menu');
180
+ menu.classList.toggle('hidden');
181
+ });
182
+ </script>
183
+ <script>feather.replace();</script>
184
+ </body>
185
+ </html>
voidcaptcha.js ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ```javascript
2
+ // voidcaptcha.js
3
+ (function(){
4
+ const COLORS=["red","blue"];
5
+ const BASE_TINY=15.19202383;
6
+ let target=null, tries=0, cooldown=5000, blockedUntil=0, verified=false, countdownTimer=null;
7
+
8
+ function createOverlay(){
9
+ if(document.getElementById("voidcaptcha-overlay")) return;
10
+
11
+ // full screen overlay
12
+ const overlay=document.createElement("div");
13
+ overlay.id="voidcaptcha-overlay";
14
+ overlay.style.cssText=`
15
+ position:fixed;top:0;left:0;width:100%;height:100%;
16
+ background:#000;display:flex;justify-content:center;align-items:center;
17
+ z-index:2147483647;flex-direction:column;
18
+ `;
19
+
20
+ // container card
21
+ const card=document.createElement("div");
22
+ card.style.cssText=`
23
+ background:#111214;color:#eee;padding:26px;border-radius:14px;
24
+ text-align:center;box-shadow:0 18px 60px rgba(0,0,0,0.7);
25
+ max-width:380px;width:92%;display:flex;flex-direction:column;align-items:center;
26
+ `;
27
+
28
+ const title=document.createElement("h2");
29
+ title.innerText="VoidCaptcha";
30
+ title.style.margin="0 0 10px 0";
31
+ title.style.fontSize="20px";
32
+
33
+ // checkbox container
34
+ const cbContainer=document.createElement("div");
35
+ cbContainer.style.margin="10px 0 20px 0";
36
+ const checkbox=document.createElement("input");
37
+ checkbox.type="checkbox";
38
+ checkbox.id="voidcaptcha-checkbox";
39
+ checkbox.style.width="24px"; checkbox.style.height="24px"; checkbox.style.cursor="pointer";
40
+ const label=document.createElement("label");
41
+ label.style.color="#eee"; label.style.cursor="pointer"; label.style.marginLeft="8px";
42
+ label.innerText="I'm not a robot";
43
+ cbContainer.appendChild(checkbox); cbContainer.appendChild(label);
44
+
45
+ // links
46
+ const links=document.createElement("div");
47
+ links.style.fontSize="12px"; links.style.color="#aaa"; links.style.marginTop="8px";
48
+ links.innerHTML=`<a href="privacy.html" target="_blank" style="color:#8ab4f8;">Privacy Policy</a> | <a href="tos.html" target="_blank" style="color:#8ab4f8;">Terms of Service</a>`;
49
+
50
+ // instruction & result
51
+ const instruction=document.createElement("p");
52
+ instruction.style.margin="10px 0 12px 0";
53
+ instruction.style.color="#cfcfcf"; instruction.style.fontSize="14px";
54
+ const result=document.createElement("div");
55
+ result.style.fontWeight="700"; result.style.minHeight="20px"; result.style.marginTop="10px";
56
+
57
+ // box container (hidden until checkbox checked)
58
+ const boxesWrap=document.createElement("div");
59
+ boxesWrap.style.margin="6px 0 8px 0"; boxesWrap.style.display="none"; boxesWrap.style.justifyContent="center";
60
+
61
+ card.appendChild(title);
62
+ card.appendChild(cbContainer);
63
+ card.appendChild(instruction);
64
+ card.appendChild(boxesWrap);
65
+ card.appendChild(result);
66
+ card.appendChild(links);
67
+ overlay.appendChild(card);
68
+ document.body.appendChild(overlay);
69
+
70
+ // create box
71
+ function makeBox(color){
72
+ const el=document.createElement("div"); el.dataset.color=color;
73
+ el.style.cssText=`
74
+ display:inline-block;width:120px;height:120px;margin:8px;cursor:pointer;
75
+ border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,0.45);
76
+ background:${color};transition: transform .12s ease, filter .12s ease;
77
+ `;
78
+ el.addEventListener("mouseover",()=>el.style.transform="translateY(-3px)");
79
+ el.addEventListener("mouseout",()=>el.style.transform="translateY(0px)");
80
+ boxesWrap.appendChild(el);
81
+ el.addEventListener("click",(e)=>onBoxClick(e,el,result));
82
+ return el;
83
+ }
84
+
85
+ const redBox=makeBox("red"), blueBox=makeBox("blue");
86
+
87
+ function setTarget(){
88
+ target=COLORS[Math.floor(Math.random()*COLORS.length)];
89
+ instruction.innerText=`Click the ${target} box`;
90
+ }
91
+
92
+ function setCooldown(){
93
+ blockedUntil=Date.now()+cooldown;
94
+ cooldown=Math.min(cooldown*2,3600000); // max 1 hour
95
+ if(cooldown>=3600000) result.innerText="⏳ Maximum wait reached! Next fail = infinite wait";
96
+ redBox.style.pointerEvents="none"; blueBox.style.pointerEvents="none";
97
+ clearInterval(countdownTimer);
98
+ countdownTimer=setInterval(()=>{
99
+ const left=Math.max(0,Math.ceil((blockedUntil-Date.now())/1000));
100
+ result.innerText=`⏳ Wait ${left}s before trying again...`;
101
+ if(left<=0){
102
+ clearInterval(countdownTimer); countdownTimer=null; tries=0;
103
+ redBox.style.pointerEvents="auto"; blueBox.style.pointerEvents="auto"; result.innerText="";
104
+ setTarget();
105
+ }
106
+ },300);
107
+ }
108
+
109
+ function failAttempt(msg){
110
+ tries++;
111
+ if(msg) result.innerText=msg;
112
+ if(tries>=2){
113
+ if(cooldown>=3600000){ // infinite wait
114
+ blockedUntil=1e20;
115
+ result.innerText="⏳ Infinite wait! You failed too many times.";
116
+ }else setCooldown();
117
+ }else setTimeout(()=>{result.innerText=""; setTarget();},350);
118
+ }
119
+
120
+ function pass(){
121
+ verified=true;
122
+ overlay.style.transition="opacity .36s ease"; overlay.style.opacity="0";
123
+ setTimeout(()=>{if(overlay.parentNode) overlay.parentNode.removeChild(overlay);},380);
124
+ checkbox.checked=true; checkbox.disabled=true;
125
+ }
126
+
127
+ function onBoxClick(e,el,result){
128
+ if(Date.now()<blockedUntil) return;
129
+ const color=el.dataset.color;
130
+ if(color!==target){el.style.filter="blur(2px)"; setTimeout(()=>el.style.filter="",350); setTimeout(setTarget,350); return;}
131
+
132
+ const rect=el.getBoundingClientRect();
133
+ const clickX=e.clientX-rect.left, clickY=e.clientY-rect.top;
134
+ const forbiddenX=(rect.width/100)*BASE_TINY+1;
135
+ const forbiddenY=(rect.height/100)*BASE_TINY+1;
136
+
137
+ if(Math.abs(clickX-rect.width/2)<forbiddenX && Math.abs(clickY-rect.height/2)<forbiddenY){
138
+ failAttempt("❌ Try Again!"); return;
139
+ }
140
+
141
+ pass();
142
+ }
143
+
144
+ // checkbox click → show boxes
145
+ checkbox.addEventListener("change",()=>{
146
+ if(verified){ checkbox.checked=true; checkbox.disabled=true; return;}
147
+ if(checkbox.checked){ boxesWrap.style.display="flex"; setTarget();}
148
+ });
149
+ }
150
+
151
+ if(document.readyState==="loading") document.addEventListener("DOMContentLoaded",createOverlay);
152
+ else createOverlay();
153
+ })();
154
+ ```