5
5
<meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
6
6
<title >Root Shell</title >
7
7
<style >
8
+ * {
9
+ margin : 0 ;
10
+ padding : 0 ;
11
+ box - sizing : border - box ;
12
+ }
13
+
8
14
body {
9
15
margin : 0 ;
10
16
padding : 0 ;
15
21
flex - direction : column ;
16
22
justify - content : center ;
17
23
align - items : center ;
18
- height : 100vh ;
24
+ min - height : 100vh ;
19
25
overflow : hidden ;
20
26
background - image : url (' data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><rect width="100" height="100" fill="black"/><path d="M10,10L90,90M90,10L10,90" stroke="rgba(255,0,0,0.1)" stroke-width="1"/></svg>' );
21
27
}
22
28
23
29
.ascii-title {
24
- font - size : 10px ;
30
+ font - size : clamp (4 px , 1. 5 vw , 10px ) ;
25
31
line - height : 1 ;
26
32
white - space : pre ;
27
33
text - align : center ;
28
- margin - bottom : 50 px ;
34
+ margin - bottom : 5 vh ;
29
35
color : #0f0 ;
30
36
text - shadow : 0 0 5px #0f0 ;
37
+ width : 100 % ;
38
+ max - width : 100 % ;
39
+ overflow - x : auto ;
40
+ }
41
+
42
+ /* Mobil cihazlar için ASCII başlık alternatifi */
43
+ .mobile-title {
44
+ display : none ;
45
+ font - size : 24px ;
46
+ font - weight : bold ;
47
+ text - align : center ;
48
+ margin - bottom : 5vh ;
49
+ color : #0f0 ;
50
+ text - shadow : 0 0 10px #0f0 ;
31
51
}
32
52
33
53
.skull-container {
34
54
position : relative ;
35
- width : 250px ;
36
- height : 250px ;
55
+ width : min ( 250px , 80 vw ) ;
56
+ height : min ( 250px , 80 vw ) ;
37
57
perspective : 800px ;
58
+ margin : 0 auto ;
38
59
}
39
60
40
61
.skull {
41
62
position : absolute ;
42
63
top : 50 % ;
43
64
left : 50 % ;
44
65
transform : translate (- 50 % , - 50 % );
45
- width : 150px ;
46
- height : 150px ;
66
+ width : min ( 150px , 50 vw ) ;
67
+ height : min ( 150px , 50 vw ) ;
47
68
animation : float 3s ease - in - out infinite alternate , rotate 20s linear infinite ;
48
69
}
49
70
111
132
.symbol {
112
133
position : absolute ;
113
134
color : #ff0000 ;
114
- font - size : 24px ;
135
+ font - size : clamp (16 px , 5 vw , 24px ) ;
115
136
opacity : 0.7 ;
116
137
text - shadow : 0 0 10px #ff0000 ;
117
138
animation : flicker 3s infinite alternate ;
130
151
.blood-drop {
131
152
position : absolute ;
132
153
background - color : #ff0000 ;
133
- width : 10px ;
134
- height : 10px ;
154
+ width : min ( 10px , 3 vw ) ;
155
+ height : min ( 10px , 3 vw ) ;
135
156
border - radius : 50 % 50 % 50 % 0 ;
136
157
transform : rotate (45deg );
137
158
animation : blood - drip 4s linear infinite ;
218
239
position : fixed ;
219
240
bottom : 20px ;
220
241
left : 20px ;
221
- font - size : 14px ;
242
+ font - size : clamp (10 px , 3 vw , 14px ) ;
222
243
color : #0f0 ;
223
244
opacity : 0.7 ;
224
245
}
246
267
.matrix-column {
247
268
position : absolute ;
248
269
top : - 100 % ;
249
- width : 20px ;
270
+ width : clamp (10 px , 3 vw , 20px ) ;
250
271
color : #ff0000 ;
251
- font - size : 16px ;
272
+ font - size : clamp (8 px , 2. 5 vw , 16px ) ;
252
273
text - align : center ;
253
274
animation : matrix - fall linear infinite ;
254
275
}
298
319
left : 0 ;
299
320
width : 100 % ;
300
321
height : 100 % ;
301
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AkEBDEVgpJD7gAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAHbElEQVRo3u2aaXBV1RXHf+e+l4QkJIGELUDYl7BjWMIqIBVBKkJV1CpjW7VVa0fGqdqxLtWO2qk6ta0dWkdbnVq1FbUsFgUEF0SKQNgJW0ISBLKQkIS8vHfP6Yf73ruPkPdCXsKH/mfeTN67795z/nf5n/8590lSVT7PEPmcQwQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQTxfwj5tB2ISPqkSZOeKCgoWJCWlhZTWVl5bO/evY/v2LHjvs76iMgDwHdE5Amgzn/9YeAHqvpCT/0Skd8Bk1V1Xt/evRcUFRXNzsjIiK2qqjq+b9++x7dv3/69rvwTVe2xIyLyGHATMNk5d9w5d9w5d8I5d8I5V+qcK3XOlQGlwCTgMeB7nfQzHhgJvCEi8SLyLWABMBx4Q0QSu+NXRMYDo4A3RCRBRJaKyEJgBPCGiCR05p+q9sgBvgLcCxQCCUAckBD6HgfEA/HAQGAJsLOTvlYDPwOagK8BDwLHgGXAz4HGbvq1GvgpUAd8HXgAOA4sB34GNHTmX6/eOCIik4FfALOBWuBV4HfOuQ+cc9XOuWrnXI1zrto5V+2cqwaOALOAX4rIlE66vwzIBl4C0oEZwF+BPwFZwKXd9OsyIAd4EUgDZgJ/Af4MZAOXdebfGT2RRGQocDewCDgFPAE87JwrP4NtLPBDYCnwT1W9MuzZD4A7gQbgIVV9KOzZncAPgEbgYVV9MOzZHcD3gSbgEVV9IOzZ7cD3gGbgUVW9P+zZUuA7QAvwmKreF/ZsCbAMcMDjqnpv2LPFwDLnXIuIPKGq94Q9WwQsV9UWEXlSVe8Ke7YQWKGqrSLylKreCT0gkYhkAncBNwMHgV8Dv1XVujPY9gG+CdwBvK+qc8OeXQbcBbQCv1LVX4Y9mwvcDTjgN6r687Bnc4B7AAf8VlXvDXs2G7gXEOB3qnpP2LNZwH2AAL9X1bvDns0E7gciwB9U9a6wZzOA+wEH/FFV7wx7Nh24H1Dgj6p6R9izacADQAT4k6reHvZsKvAgEAGeVtVlYc+mAA8BEeBpVb0t7Nlk4GEgCjyjqreGPZsEPAJEgWdV9ZbQs7MmkYjkA3cA1wP7gF8Cf1DVxjPYpgI3ArcCh1R1RtizccAdQCuwSlVXhj0bC9wJtAGrVfWnYc/GAHcBbcAaVf1J2LPRwN1AG/Csqt4d9mwUcA/QBjynqj8OezYSuBdoB55X1R+FPRsB/AhoB15Q1R+GPRsO/BhoB15U1R+EPRsG/ARoB15S1e+HPRsKPAi0Ay+r6m1hz4YADwFtwCuqemvYs8HAw0Ab8Kqq3hL2bBDwCBADvKaqN4c9GwisAmKB11X1prBnA4DVQCzwhqreGPZsALAGiAPeVNUbQs/OmEQiUgTcBlwLfAQ8BDyjqm1nsM0GbgGuAT5W1clhz0YCtwLXAQdUdULYsxHAbcD1wEFVHR/2rAi4HbgBOKSq48KeFQK3AzcCh1V1bNizAuA7wE3AEVW9JOxZPnAHcDNwVFXHhD3LA+4EbgGOqeroEJmAXOAu4FbgmKqOCnuWA9wN3AYcV9WRYT9nA/cAy4ETqjoi7FkWcC9wB3BSVYeHPcsE7gPuBE6p6rCwZxnA/cAy4JSqDg17lg78BPgucFpVh4Q9SwN+CiwHTqvq4LBnqcDPgO8BFao6KOxZCvBz4PtApaoODHuWDPwC+AFQpaoD/GcRVe3yAOYDrwMKvA/cCGR0w3YO8CpQA7wHLAaSw57PAV4BaoH3geuBtLBnM4GXgTrgA+AGIDXs2XTgRaAe+BC4EUgJezYVeAFoAD4CbgKSw55NAp4HGoGPgZuBpLBnE4DngCbgAHALkBj2bBzwLNAMHARuBRLCno0BngGagUPAbUB82LNRwNNAC3AYuB2IC3s2EngKaAWOAHcAsWHPLgGeJLTIAXcCMWHPCoEngDbgKHAXEB32bDjwONAOHAPuBqLCnhUAjwJtwHHgHiAy7Fk+8AjQDpwA7gUiQs+6JJGIJIrI9SLyFvAWMBRYCcxQ1StU9ZUzEU5EYkTkWhF5E9gCDAFWATNVdZ6qvhyWbNEicq2IbAa2AoXAamCWqs5V1ZfCyCYicpWIbAK2A8OANcBsVZ2jqi+GkU1E5EoR2QjsAIYDzwBzVHW2qr4QRjYRkStEZAOwExgBPAfMVdVZqvp8GNlERC4XkfXALmAk8Dwwz/drXRjZRESWiMg6YDcwCngBmK+qM1X1uTCyiYgsEpG1wB5gNPAiMF9VZ6jqs2FkExFZKCJrgL3AGOAlYIGqTlfVZ8LIJiKyQERWA/uAscDLwEJVnaaqfwsjm4jIfBFZBewHxgGvAItUdaqqPhNGNhGReSKyEjgAjAdeAxar6hRVfTpEtk5LKBGZCnwDuAqoAP4GrFHVPd0hkIhMAa4BrgYqgb8Da1V1dxdsJwNXA9cClcA/gHWquqsLtpOAq4DrgCrgn8B6Vd3ZBduJwJXA9UA18C9gg6ru6ILtBGApcANQA/wbeE5Vt3fBdjywFLgRqAU2As+r6rYu2I4DlgA3AXXAC8Dzqrq1C7ZjgSXATUA98CLwgqpu6YLtGGAxcDPQALwEvKiqm7tgOxpYDNwCNAIvAy+p6qYu2I4CFgG3Ak3AK8DLqrqxC7YjgUXAbUAz8CrwiqpuOIPt/wCJj3HtxbKqhAAAAABJRU5ErkJggg==');
322
+ background-image: url('data:image/png;base64,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');
302
323
opacity : 0.05 ;
303
324
z - index : - 1 ;
304
325
pointer - events : none ;
305
326
}
327
+
328
+ /* Mobil cihazlar için medya sorguları */
329
+ @media (max-width: 768px) {
330
+ . ascii - title {
331
+ display : none ;
332
+ }
333
+
334
+ . mobile - title {
335
+ display : block ;
336
+ }
337
+
338
+ . skull - container {
339
+ width : 80vw ;
340
+ height : 80vw ;
341
+ }
342
+
343
+ . skull {
344
+ width : 50vw ;
345
+ height : 50vw ;
346
+ }
347
+
348
+ . terminal - text {
349
+ font - size : 12px ;
350
+ }
351
+ }
352
+
353
+ /* Çok küçük ekranlar için ek ayarlamalar */
354
+ @media (max-width: 480px) {
355
+ . skull - container {
356
+ width : 90vw ;
357
+ height : 90vw ;
358
+ }
359
+
360
+ . skull {
361
+ width : 60vw ;
362
+ height : 60vw ;
363
+ }
364
+
365
+ . terminal - text {
366
+ font - size : 10px ;
367
+ }
368
+ }
306
369
</style >
307
370
</head >
308
371
<body >
318
381
|_| \_\ \___/ \___/ \__| |_____/ |_| |_| \___| |_| |_| (_) \___| \___/ |_| |_| |_|
319
382
</div >
320
383
384
+ <!-- Mobil cihazlar için alternatif başlık -->
385
+ <div class = " mobile-title glitch" >ROOT Shell</div >
386
+
321
387
<div class = " skull-container" >
322
388
<div class = " spinner" >
323
389
<div class = " spinner-inner" ></div >
360
426
</div >
361
427
362
428
<script >
429
+ // Ekran boyutunu kontrol et ve ASCII başlığı göster/gizle
430
+ function checkScreenSize() {
431
+ const asciiTitle = document . querySelector (' .ascii-title' );
432
+ const mobileTitle = document . querySelector (' .mobile-title' );
433
+
434
+ if (window . innerWidth <= 768 ) {
435
+ asciiTitle . style . display = ' none' ;
436
+ mobileTitle . style . display = ' block' ;
437
+ } else {
438
+ asciiTitle . style . display = ' block' ;
439
+ mobileTitle . style . display = ' none' ;
440
+ }
441
+ }
442
+
443
+ // Sayfa yüklendiğinde ve ekran boyutu değiştiğinde kontrol et
444
+ window.addEventListener('load', checkScreenSize);
445
+ window.addEventListener('resize', checkScreenSize);
446
+
363
447
// Rastgele glitch efekti
364
448
setInterval(() => {
365
449
const title = document . querySelector (' .ascii-title' );
450
+ const mobileTitle = document . querySelector (' .mobile-title' );
366
451
title . classList . toggle (' glitch' );
452
+ mobileTitle . classList . toggle (' glitch' );
367
453
setTimeout (() => {
368
454
title . classList . toggle (' glitch' );
455
+ mobileTitle . classList . toggle (' glitch' );
369
456
}, 200 );
370
457
} , 3000);
371
458
372
459
// Matrix benzeri arka plan efekti
373
460
const matrixBg = document.getElementById('matrix-bg');
374
461
const characters = "01アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン";
375
- const columnCount = 30;
462
+ const columnCount = Math.min(30, Math.floor(window.innerWidth / 20)); // Ekran genişliğine göre sütun sayısını ayarla
376
463
377
464
for (let i = 0; i < columnCount; i++) {
378
465
const column = document . createElement (' div' );
391
478
matrixBg . appendChild (column );
392
479
}
393
480
394
- // Kan damlası efekti
481
+ // Kan damlası efekti - mobil cihazlar için daha az damla
395
482
const bloodContainer = document.getElementById('blood-container');
483
+ const isMobile = window.innerWidth <= 768;
484
+ const dropInterval = isMobile ? 500 : 300; // Mobil cihazlarda daha az sıklıkta
396
485
397
486
function createBloodDrop() {
398
487
const drop = document . createElement (' div' );
@@ -402,11 +491,13 @@ function createBloodDrop() {
402
491
bloodContainer . appendChild (drop );
403
492
404
493
setTimeout (() => {
405
- bloodContainer . removeChild (drop );
494
+ if (bloodContainer . contains (drop )) {
495
+ bloodContainer . removeChild (drop );
496
+ }
406
497
}, 5000 );
407
498
}
408
499
409
- setInterval(createBloodDrop, 300 );
500
+ setInterval(createBloodDrop, dropInterval );
410
501
411
502
// Matrix animasyonu için CSS ekleme
412
503
const style = document.createElement('style');
@@ -417,6 +508,28 @@ function createBloodDrop() {
417
508
}
418
509
`;
419
510
document.head.appendChild(style);
511
+
512
+ // Performans optimizasyonu için mobil cihazlarda animasyon sayısını azalt
513
+ if (isMobile) {
514
+ // Mobil cihazlarda daha az sembol göster
515
+ const symbols = document . querySelectorAll (' .symbol' );
516
+ for (let i = 4 ; i < symbols . length ; i ++ ) {
517
+ symbols [i ]. style . display = ' none' ;
518
+ }
519
+
520
+ // Mobil cihazlarda daha az matrix sütunu
521
+ const matrixColumns = document . querySelectorAll (' .matrix-column' );
522
+ for (let i = Math . floor (matrixColumns . length / 2 ); i < matrixColumns . length ; i ++ ) {
523
+ if (matrixColumns [i ]. parentNode ) {
524
+ matrixColumns [i ]. parentNode . removeChild (matrixColumns [i ]);
525
+ }
526
+ }
527
+ }
528
+
529
+ // Ekran yönü değiştiğinde yeniden düzenle
530
+ window.addEventListener('orientationchange', function() {
531
+ setTimeout (checkScreenSize , 300 );
532
+ } );
420
533
</script >
421
534
</body >
422
535
</html >
0 commit comments