api-ix commited on
Commit
06a7433
·
verified ·
1 Parent(s): 3e6f127

Create test.html

Browse files
Files changed (1) hide show
  1. test.html +322 -0
test.html ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Nebula Access</title>
7
+ <style>
8
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;500;700&display=swap');
9
+
10
+ * {
11
+ margin: 0;
12
+ padding: 0;
13
+ box-sizing: border-box;
14
+ font-family: 'Poppins', sans-serif;
15
+ }
16
+
17
+ body {
18
+ overflow: hidden;
19
+ background: #0f0c29;
20
+ background: linear-gradient(to bottom, #000000, #0f0c29, #24243e);
21
+ display: flex;
22
+ justify-content: center;
23
+ align-items: center;
24
+ min-height: 100vh;
25
+ }
26
+
27
+ /* Ambient Background Orbs */
28
+ .orb-container {
29
+ position: absolute;
30
+ width: 100%;
31
+ height: 100%;
32
+ top: 0;
33
+ left: 0;
34
+ z-index: 0;
35
+ pointer-events: none;
36
+ }
37
+
38
+ .orb {
39
+ position: absolute;
40
+ border-radius: 50%;
41
+ filter: blur(80px);
42
+ opacity: 0.6;
43
+ animation: float 10s infinite ease-in-out alternate;
44
+ }
45
+
46
+ .orb:nth-child(1) {
47
+ top: -10%;
48
+ left: -10%;
49
+ width: 50vw;
50
+ height: 50vw;
51
+ background: linear-gradient(to right, #ff00cc, #333399);
52
+ animation-duration: 12s;
53
+ }
54
+
55
+ .orb:nth-child(2) {
56
+ bottom: -10%;
57
+ right: -10%;
58
+ width: 40vw;
59
+ height: 40vw;
60
+ background: linear-gradient(to left, #00d2ff, #3a7bd5);
61
+ animation-duration: 15s;
62
+ }
63
+
64
+ .orb:nth-child(3) {
65
+ top: 40%;
66
+ left: 40%;
67
+ width: 20vw;
68
+ height: 20vw;
69
+ background: #7b4397;
70
+ animation: pulse 8s infinite ease-in-out;
71
+ }
72
+
73
+ /* 3D Tilt Card */
74
+ .container {
75
+ position: relative;
76
+ z-index: 1;
77
+ display: flex;
78
+ justify-content: center;
79
+ align-items: center;
80
+ transform-style: preserve-3d;
81
+ perspective: 1000px;
82
+ }
83
+
84
+ .login-box {
85
+ position: relative;
86
+ width: 400px;
87
+ height: 500px;
88
+ background: rgba(255, 255, 255, 0.05);
89
+ border-radius: 20px;
90
+ backdrop-filter: blur(15px);
91
+ -webkit-backdrop-filter: blur(15px);
92
+ border: 1px solid rgba(255, 255, 255, 0.1);
93
+ border-top: 1px solid rgba(255, 255, 255, 0.3);
94
+ border-left: 1px solid rgba(255, 255, 255, 0.3);
95
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
96
+ display: flex;
97
+ justify-content: center;
98
+ align-items: center;
99
+ flex-direction: column;
100
+ padding: 40px;
101
+ transform-style: preserve-3d;
102
+ transition: transform 0.1s ease-out; /* Smooth movement */
103
+ }
104
+
105
+ /* Form Elements */
106
+ h2 {
107
+ font-size: 2em;
108
+ color: #fff;
109
+ margin-bottom: 30px;
110
+ letter-spacing: 2px;
111
+ text-transform: uppercase;
112
+ text-shadow: 0 0 10px rgba(255,255,255,0.3);
113
+ transform: translateZ(40px); /* 3D depth */
114
+ }
115
+
116
+ .input-group {
117
+ position: relative;
118
+ width: 100%;
119
+ margin-bottom: 25px;
120
+ transform: translateZ(30px);
121
+ }
122
+
123
+ .input-group input {
124
+ width: 100%;
125
+ padding: 10px 0;
126
+ font-size: 16px;
127
+ color: #fff;
128
+ letter-spacing: 1px;
129
+ margin-bottom: 10px;
130
+ border: none;
131
+ border-bottom: 1px solid rgba(255,255,255,0.3);
132
+ outline: none;
133
+ background: transparent;
134
+ transition: 0.5s;
135
+ }
136
+
137
+ .input-group label {
138
+ position: absolute;
139
+ top: 0;
140
+ left: 0;
141
+ padding: 10px 0;
142
+ font-size: 16px;
143
+ color: rgba(255,255,255,0.6);
144
+ pointer-events: none;
145
+ transition: 0.5s;
146
+ }
147
+
148
+ .input-group input:focus ~ label,
149
+ .input-group input:valid ~ label {
150
+ top: -25px;
151
+ left: 0;
152
+ color: #03a9f4;
153
+ font-size: 12px;
154
+ font-weight: bold;
155
+ }
156
+
157
+ .input-group input:focus,
158
+ .input-group input:valid {
159
+ border-bottom: 1px solid #03a9f4;
160
+ box-shadow: 0 10px 10px -10px rgba(3, 169, 244, 0.5);
161
+ }
162
+
163
+ /* The Button */
164
+ button {
165
+ width: 100%;
166
+ padding: 15px;
167
+ background: linear-gradient(90deg, #03a9f4, #f441a5);
168
+ border: none;
169
+ border-radius: 30px;
170
+ color: #fff;
171
+ font-size: 18px;
172
+ font-weight: 700;
173
+ letter-spacing: 2px;
174
+ cursor: pointer;
175
+ transform: translateZ(50px);
176
+ transition: 0.3s;
177
+ position: relative;
178
+ overflow: hidden;
179
+ z-index: 10;
180
+ }
181
+
182
+ button::before {
183
+ content: '';
184
+ position: absolute;
185
+ top: 0;
186
+ left: -100%;
187
+ width: 100%;
188
+ height: 100%;
189
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
190
+ transition: 0.5s;
191
+ }
192
+
193
+ button:hover::before {
194
+ left: 100%;
195
+ }
196
+
197
+ button:hover {
198
+ box-shadow: 0 0 20px #03a9f4, 0 0 40px #f441a5;
199
+ transform: translateZ(60px) scale(1.05);
200
+ }
201
+
202
+ /* Keyframes */
203
+ @keyframes float {
204
+ 0% { transform: translate(0, 0); }
205
+ 100% { transform: translate(50px, 50px); }
206
+ }
207
+
208
+ @keyframes pulse {
209
+ 0%, 100% { transform: scale(1); opacity: 0.5; }
210
+ 50% { transform: scale(1.2); opacity: 0.8; }
211
+ }
212
+
213
+ /* Floating particles inside the card */
214
+ .particles {
215
+ position: absolute;
216
+ top: 0;
217
+ left: 0;
218
+ width: 100%;
219
+ height: 100%;
220
+ overflow: hidden;
221
+ border-radius: 20px;
222
+ pointer-events: none;
223
+ z-index: -1;
224
+ }
225
+
226
+ .particle {
227
+ position: absolute;
228
+ display: block;
229
+ pointer-events: none;
230
+ width: 5px;
231
+ height: 5px;
232
+ background-color: rgba(255, 255, 255, 0.5);
233
+ box-shadow: 0 0 10px rgba(255, 255, 255, 1);
234
+ border-radius: 50%;
235
+ animation: rise 15s infinite linear;
236
+ }
237
+
238
+ @keyframes rise {
239
+ 0% { transform: translateY(500px) scale(0); opacity: 0;}
240
+ 50% { opacity: 1; }
241
+ 100% { transform: translateY(-100px) scale(1); opacity: 0;}
242
+ }
243
+
244
+ </style>
245
+ </head>
246
+ <body>
247
+
248
+ <div class="orb-container">
249
+ <div class="orb"></div>
250
+ <div class="orb"></div>
251
+ <div class="orb"></div>
252
+ </div>
253
+
254
+ <div class="container" id="container">
255
+ <form class="login-box" id="card">
256
+ <div class="particles">
257
+ </div>
258
+
259
+ <h2>Access</h2>
260
+
261
+ <div class="input-group">
262
+ <input type="text" required>
263
+ <label>Username</label>
264
+ </div>
265
+
266
+ <div class="input-group">
267
+ <input type="password" required>
268
+ <label>Password</label>
269
+ </div>
270
+
271
+ <button type="submit">LOGIN</button>
272
+ </form>
273
+ </div>
274
+
275
+ <script>
276
+ // PART 1: 3D TILT EFFECT
277
+ const container = document.getElementById('container');
278
+ const card = document.getElementById('card');
279
+
280
+ // Mouse Move Event
281
+ container.addEventListener('mousemove', (e) => {
282
+ const xAxis = (window.innerWidth / 2 - e.pageX) / 20; // Rotate X axis
283
+ const yAxis = (window.innerHeight / 2 - e.pageY) / 20; // Rotate Y axis
284
+
285
+ card.style.transform = `rotateY(${xAxis}deg) rotateX(${yAxis}deg)`;
286
+ });
287
+
288
+ // Animate In (Reset)
289
+ container.addEventListener('mouseenter', (e) => {
290
+ card.style.transition = 'none'; // Remove transition for instant response
291
+ });
292
+
293
+ // Animate Out (Reset to center)
294
+ container.addEventListener('mouseleave', (e) => {
295
+ card.style.transition = 'all 0.5s ease'; // Smooth return
296
+ card.style.transform = `rotateY(0deg) rotateX(0deg)`;
297
+ });
298
+
299
+ // PART 2: GENERATE PARTICLES
300
+ const particleContainer = document.querySelector('.particles');
301
+
302
+ function createParticles() {
303
+ for(let i = 0; i < 20; i++) {
304
+ let particle = document.createElement('span');
305
+ particle.classList.add('particle');
306
+
307
+ // Random position and delay
308
+ let size = Math.random() * 5 + 1;
309
+ particle.style.width = `${size}px`;
310
+ particle.style.height = `${size}px`;
311
+ particle.style.left = Math.random() * 100 + '%';
312
+ particle.style.animationDelay = Math.random() * 10 + 's';
313
+ particle.style.animationDuration = Math.random() * 10 + 10 + 's';
314
+
315
+ particleContainer.appendChild(particle);
316
+ }
317
+ }
318
+
319
+ createParticles();
320
+ </script>
321
+ </body>
322
+ </html>