├── fonts ├── SpaceGrotesk-Bold.ttf ├── SpaceGrotesk-Light.ttf ├── SpaceGrotesk-Medium.ttf ├── SpaceGrotesk-Regular.ttf └── SpaceGrotesk-SemiBold.ttf ├── images ├── virgil-game-search.png └── virgil-software-search.png ├── index.html ├── search.js ├── star-background.js ├── Games ├── Copyright-Notice.html ├── 404.html ├── index.html ├── FAQ.html └── styles.css ├── Software ├── Copyright-Notice.html ├── 404.html ├── index.html ├── FAQ.html └── styles.css ├── 404.html ├── README.md └── styles.css /fonts/SpaceGrotesk-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/fonts/SpaceGrotesk-Bold.ttf -------------------------------------------------------------------------------- /fonts/SpaceGrotesk-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/fonts/SpaceGrotesk-Light.ttf -------------------------------------------------------------------------------- /fonts/SpaceGrotesk-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/fonts/SpaceGrotesk-Medium.ttf -------------------------------------------------------------------------------- /fonts/SpaceGrotesk-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/fonts/SpaceGrotesk-Regular.ttf -------------------------------------------------------------------------------- /fonts/SpaceGrotesk-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/fonts/SpaceGrotesk-SemiBold.ttf -------------------------------------------------------------------------------- /images/virgil-game-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/images/virgil-game-search.png -------------------------------------------------------------------------------- /images/virgil-software-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamidyFR/Virgil/HEAD/images/virgil-software-search.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Virgil Search Engine 8 | 9 | 10 | 11 |

What Would you Like to Search?

12 | 13 | 14 |
15 |
16 | 17 | Virgil Game Search Logo. 18 |

Games

19 |
20 |

Search Through
Game Sites.

21 |
22 |
23 | 24 | 25 |
26 |
27 | 28 | Virgil Software Search Logo. 29 |

Software

30 |
31 |

Search Through
Software Sites.

32 |
33 |
34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /search.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | const path = window.location.pathname.toLowerCase(); 3 | 4 | let cx; 5 | let placeholder; 6 | let title; 7 | 8 | if (path.includes("/games/")) { 9 | cx = "904ead0bae8c845f0"; 10 | placeholder = "Search for a game..."; 11 | title = "Game Search"; 12 | } else if (path.includes("/software/")) { 13 | cx = "c288da2c020ec4091"; 14 | placeholder = "Search for Software..."; 15 | title = "Software Search"; 16 | } else { 17 | return; 18 | } 19 | 20 | const gcse = document.createElement("script"); 21 | gcse.type = "text/javascript"; 22 | gcse.async = true; 23 | gcse.src = "https://cse.google.com/cse.js?cx=" + cx; 24 | const s = document.getElementsByTagName("script")[0]; 25 | s.parentNode.insertBefore(gcse, s); 26 | 27 | function setSearchBox() { 28 | const searchBox = document.getElementById("gsc-i-id1"); 29 | if (searchBox) { 30 | searchBox.placeholder = placeholder; 31 | searchBox.title = title; 32 | return true; 33 | } 34 | return false; 35 | } 36 | 37 | const interval = setInterval(() => { 38 | if (setSearchBox()) clearInterval(interval); 39 | }, 100); 40 | })(); 41 | -------------------------------------------------------------------------------- /star-background.js: -------------------------------------------------------------------------------- 1 | const canvas = document.getElementById("starfield"); 2 | const ctx = canvas.getContext("2d"); 3 | 4 | function resize() { 5 | canvas.width = window.innerWidth; 6 | canvas.height = window.innerHeight; 7 | } 8 | window.addEventListener("resize", resize); 9 | resize(); 10 | 11 | const STAR_COUNT = 250; 12 | const STAR_OPACITY = 1; 13 | const stars = []; 14 | 15 | for (let i = 0; i < STAR_COUNT; i++) { 16 | stars.push({ 17 | x: Math.random() * canvas.width, 18 | y: Math.random() * canvas.height, 19 | size: Math.random() * 1 + 0.2, 20 | speed: Math.random() * 0.3 + 0.05, 21 | brightness: Math.random() * 0.4 + 0.3 22 | }); 23 | } 24 | 25 | function animate() { 26 | ctx.clearRect(0, 0, canvas.width, canvas.height); 27 | 28 | for (let s of stars) { 29 | s.y += s.speed; 30 | 31 | if (s.y > canvas.height) { 32 | s.y = 0; 33 | s.x = Math.random() * canvas.width; 34 | } 35 | 36 | ctx.beginPath(); 37 | ctx.arc(s.x, s.y, s.size, 0, Math.PI * 2); 38 | 39 | const gray = Math.floor(s.brightness * 255); 40 | ctx.fillStyle = `rgba(${gray}, ${gray}, ${gray}, ${STAR_OPACITY})`; 41 | ctx.fill(); 42 | } 43 | 44 | requestAnimationFrame(animate); 45 | } 46 | 47 | animate(); 48 | -------------------------------------------------------------------------------- /Games/Copyright-Notice.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Virgil Search: Games 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 |
22 |
23 |
24 |
25 | 26 |

Virgil Game Search.

27 |

Search For Games. Confidently! ヾ(≧▽≦*)

28 |
29 | 30 |

31 | Virgil is a scraper/aggregator for other sites.
32 | All data is sourced from third-party platforms.
33 | We don't host any files nor endorse any of these sites in any way.
34 | Take any legal issues up with them. ♥ 35 |

36 | 37 |
38 | Back To Site 39 |
40 | 41 |
42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Software/Copyright-Notice.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Virgil Search: Games 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 |
22 |
23 |
24 |
25 | 26 |

Virgil Software Search.

27 |

Search For Software. Confidently! ヾ(≧▽≦*)

28 |
29 | 30 |

31 | Virgil is a scraper/aggregator for other sites.
32 | All data is sourced from third-party platforms.
33 | We don't host any files nor endorse any of these sites in any way.
34 | Take any legal issues up with them. ♥ 35 |

36 | 37 |
38 | Back To Site 39 |
40 | 41 |
42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Virgil - 404! 7 | 8 | 9 | 61 |

404!

62 |

We Couldnt Find the file you were looking for ⊙﹏⊙∥

63 |

Maybe you went too far Searching...

64 |
65 |
66 | Go Back to Home 67 |
68 |
69 | 70 | -------------------------------------------------------------------------------- /Games/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Virgil - 404! 7 | 8 | 9 | 61 |

404!

62 |

We Couldnt Find the file you were looking for ⊙﹏⊙∥

63 |

Maybe you went too far Searching...

64 |
65 |
66 | Go Back to Home 67 |
68 |
69 | 70 | -------------------------------------------------------------------------------- /Software/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Virgil - 404! 7 | 8 | 9 | 61 |

404!

62 |

We Couldnt Find the file you were looking for ⊙﹏⊙∥

63 |

Maybe you went too far Searching...

64 |
65 |
66 | Go Back to Home 67 |
68 |
69 | 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ![Logo](https://i.ibb.co/0jrgNDpx/no-bg-image-6.png) 3 | 4 | 5 | # Virgil Search Engine. 6 | 7 | Virgil is an actively maintained search engine for Games & Software (≧∇≦) 8 | 9 | 10 | ## Screenshots 11 | 12 | ![Game Search Screenshot](https://i.ibb.co/qF13KRmQ/Screenshot-2025-11-18-233704.png) 13 | 14 | ###### Screenshot of Virgil Game Search 15 | 16 | ## Features 17 | 18 | - Helps in finding links for Games and Software 19 | - Only Indexes Trusted Links (Links Listed on [FMHY](https://fmhy.net)) 20 | - Uses Google For Fast Searching 21 | 22 | 23 | ## Quick Bangs 24 | Virgil Supports Quick Bangs! •ω• Heres How to set them up: 25 | 1. Visit Search engine settings on your browser 26 | 2. Click the '+', 'add new search engine' button (or an equivallent on your browser) 27 | 3. Fill in the required information: 28 | - Name: Anything you want, But we prefer "Virgil Game Search" for game search, and "Virgil Software Search" for software search. 29 | - Nickname: Nickname: Anything you want, But we prefer "Virgil Game Search" for game search, and "Virgil Software Search" for software search. 30 | - URLS: 31 | - For Game Search: https://virgil.samidy.com/Games/?q=%s 32 | - For Software Search: https://virgil.samidy.com/Software/?q=%s 33 | - please note that the '%s' keyword substitute may be different across browsers, kindly follow the instructions provided on your browser to replace if needed. 34 | ## Copyright/DMCA/Legal Issues 35 | 36 | Virgil is a scraper/aggregator for other sites. All data is sourced from third-party platforms. We don't host any files nor endorse any of these sites in any way. Take any legal issues up with them. ♥ 37 | ## Support Virgil 38 | 39 | If you like and want to support virgil, please consider ⭐'ing this project! it will really help me out and motivate me to continue working on virgil. -------------------------------------------------------------------------------- /Games/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Virgil Search: Games 10 | 11 | 12 | 13 | 14 | 15 | 21 |
22 |
23 |
24 |
25 | 26 |

Virgil Game Search.

27 |

Search For Games. Confidently! ヾ(≧▽≦*)

28 |

If you like Virgil and want to support me, please ⭐ The Github Repo!

29 |
30 | 31 | 32 | 33 | 34 |
35 |

WARNING: I HIGHLY Recommend using an adblocker before visiting ANY of these sites.
I personally recommend: Ublock Origin

36 |
37 |

If the search result is a website homepage, it Means the site does have the game,
but the site doesn't play nice with Virgil. Manually Search for the game on the site.

38 |
39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Software/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Virgil Search: Software 10 | 11 | 12 | 13 | 14 | 15 | 21 |
22 |
23 |
24 |
25 | 26 |

Virgil Software Search.

27 |

Search For Software. Confidently! ヾ(≧▽≦*)

28 |

If you like Virgil and want to support me, please ⭐ The Github Repo!

29 |
30 | 31 | 32 | 33 | 34 |
35 |

WARNING: I HIGHLY Recommend using an adblocker before visiting ANY of these sites.
I personally recommend: Ublock Origin

36 |
37 |

If the search result is a website homepage, it Means the site does have the software,
but the site doesn't play nice with Virgil. Manually Search for the software on the site.

38 |
39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Games/FAQ.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Virgil Search: Games 9 | 10 | 11 | 12 | 13 | 14 | 20 |
21 |
22 |
23 |
24 | 25 |

Virgil Game Search.

26 |

Search For Games. Confidently! ヾ(≧▽≦*)

27 |
28 | 29 |

"What's Virgil?"

30 |

Virgil is a pirated game search engine made to help out with beginners and save time instead of checking multiple sites.

31 | 32 |

"ehh. The few loved game sites are so good that I'm not sure a search engine is really needed."

33 |

i can give you a few reasons:
34 | 1. Helps out with beginners in pirating.
35 | 2. Some sites might have the game, but lock it behind a bad file hoster. making you check other sites.
36 | 3. Some sites might have the game, but its an old update.
37 | 4. Some sites just dont have the game you want, its a pretty common thing, even with the big ones.
38 | 39 |

40 | 41 |

"are you sure these sources are safe?"

42 |

uh.. yeah? Look, heres the deal: you can NEVER be 100% sure a site is safe. they may turn malicious one day and start putting malware.
43 | Which is why we always inform users to be cautious when downloading pirated games.
44 | but with that said, all of the sites indexed are from fmhy, which is regularly updated to catch issues like this.
45 | If a site ever turns malicious or a site gets added, we update our search engine ASAP. 46 |

47 | 48 |
49 | Back To Site 50 |
51 | 52 |
53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /Software/FAQ.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Virgil Search: Software 9 | 10 | 11 | 12 | 13 | 14 | 20 |
21 |
22 |
23 |
24 | 25 |

Virgil Software Search.

26 |

Search For Software. Confidently! ヾ(≧▽≦*)

27 |
28 | 29 |

"What's Virgil?"

30 |

Virgil is a pirated software search engine made to help out with beginners and save time instead of checking multiple sites.

31 | 32 |

"ehh. The few loved software sites are so good that I'm not sure a search engine is really needed."

33 |

i can give you a few reasons:
34 | 1. Helps out with beginners in pirating.
35 | 2. Some sites might have the software, but lock it behind a bad file hoster. making you check other sites.
36 | 3. Some sites might have the software, but its an old update.
37 | 4. Some sites just dont have the software you want, its a pretty common thing, even with the big ones.
38 | 39 |

40 | 41 |

"are you sure these sources are safe?"

42 |

uh.. yeah? Look, heres the deal: you can NEVER be 100% sure a site is safe. they may turn malicious one day and start putting malware.
43 | Which is why we always inform users to be cautious when downloading pirated software.
44 | but with that said, all of the sites indexed are from fmhy, which is regularly updated to catch issues like this.
45 | If a site ever turns malicious or a site gets added, we update our search engine ASAP. 46 |

47 | 48 |
49 | Back To Site 50 |
51 | 52 |
53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'SPG'; 3 | src: url(fonts/SpaceGrotesk-Medium.ttf); 4 | } 5 | 6 | @font-face { 7 | font-family: 'SPG-L'; 8 | src: url(fonts/SpaceGrotesk-Light.ttf); 9 | } 10 | 11 | :root{ 12 | --bg: black; 13 | --fg: white; 14 | --accent: white; 15 | } 16 | 17 | body { 18 | background-color: var(--bg); 19 | margin: 0; 20 | padding: 0; 21 | overflow: hidden; 22 | text-align: center; 23 | } 24 | 25 | 26 | h1, p, a { 27 | color: var(--fg); 28 | font-family: 'SPG'; 29 | text-decoration: none; 30 | } 31 | 32 | .typing { 33 | display: block; 34 | margin: 0 auto; 35 | text-align: center; 36 | white-space: nowrap; 37 | overflow: hidden; 38 | position: relative; 39 | width: 0; 40 | letter-spacing: -0.01em; 41 | font-weight: 500; 42 | padding-bottom: 60px; 43 | animation: typing 2.2s steps(30, end) forwards; 44 | } 45 | 46 | .typing::after { 47 | content: "|"; 48 | display: inline-block; 49 | margin-left: 4px; 50 | color: #FFF; 51 | opacity: 0; 52 | animation: blink 0.9s step-end infinite; 53 | animation-delay: 2.2s; 54 | animation-fill-mode: both; 55 | } 56 | 57 | 58 | @keyframes typing { 59 | from { width: 0; } 60 | to { width: 30ch; } 61 | } 62 | 63 | @keyframes blink { 64 | 50% { opacity: 0; } 65 | 0%,100% { opacity: 1; } 66 | } 67 | 68 | 69 | a, p { 70 | font-family: 'SPG-L'; 71 | } 72 | 73 | 74 | h1 { 75 | padding-top: 200px; 76 | } 77 | 78 | .search-border-wrapper { 79 | display: inline-block; 80 | filter: blur(10px); 81 | opacity: 0; 82 | animation: appear 0.8s ease-out forwards; 83 | animation-delay: 1.5s; 84 | padding: 25px; 85 | } 86 | 87 | .search-border { 88 | display: flex; 89 | flex-direction: column; 90 | justify-content: flex-start; 91 | align-items: center; 92 | gap: 8px; 93 | box-sizing: border-box; 94 | width: 260px; 95 | height: 250px; 96 | border-radius: 15px; 97 | border: 5px solid white; 98 | transform: scale(1); 99 | transition: transform 0.4s ease, filter 0.4s ease; 100 | filter: drop-shadow(0px 2px 2px rgb(74,74,74)); 101 | cursor: pointer; 102 | will-change: transform; 103 | padding: 20px; 104 | overflow: hidden; 105 | } 106 | 107 | .search-border:hover { 108 | transform: scale(1.2); 109 | filter: drop-shadow(0 10px 18px rgba(74,74,74,.9)); 110 | } 111 | 112 | .search-border img { 113 | max-width: 48%; 114 | height: auto; 115 | display: block; 116 | margin-top: 6px; 117 | } 118 | 119 | .search-border p { 120 | margin: 0; 121 | } 122 | 123 | 124 | .search-border a { 125 | display: flex; 126 | flex-direction: column; 127 | align-items: center; 128 | gap: 12px; 129 | text-align: center; 130 | color: inherit; 131 | } 132 | 133 | .card-title { 134 | margin: 0; 135 | font-size: clamp(1.5rem, 3vw, 2.6rem); 136 | line-height: 1.05; 137 | white-space: normal; 138 | overflow: visible; 139 | text-overflow: clip; 140 | text-align: center; 141 | } 142 | 143 | .search-border p.description { 144 | font-size: 0.95rem; 145 | opacity: 0.95; 146 | margin-bottom: 6px; 147 | } 148 | 149 | 150 | 151 | @keyframes appear { 152 | from { 153 | opacity: 0; 154 | transform: translateY(30px); 155 | filter: blur(4px); 156 | } 157 | to { 158 | opacity: 1; 159 | transform: translateY(15px); 160 | filter: blur(0); 161 | } 162 | } 163 | 164 | 165 | body > *:not(.typing) { 166 | filter: blur(10px); 167 | animation: appear 0.8s ease-out forwards; 168 | animation-delay: 1.5s; 169 | } 170 | 171 | .mobile-break { 172 | display: inline; 173 | } 174 | 175 | @media (max-width: 600px) { 176 | .mobile-break { 177 | display: block; 178 | } 179 | 180 | @keyframes typing { 181 | from { width: 0; } 182 | to { width: 20ch; } 183 | } 184 | } 185 | 186 | 187 | #starfield { 188 | position: fixed; 189 | top: 0; 190 | left: 0; 191 | width: 100vw; 192 | height: 100vh; 193 | z-index: -1; 194 | } -------------------------------------------------------------------------------- /Games/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'SPG'; 3 | src: url(../fonts/SpaceGrotesk-Medium.ttf); 4 | } 5 | 6 | @font-face { 7 | font-family: 'SPG-L'; 8 | src: url(../fonts/SpaceGrotesk-Light.ttf); 9 | } 10 | 11 | 12 | :root { 13 | --text-color: #fff; 14 | --primary-color: #fff; 15 | } 16 | 17 | 18 | body { 19 | background: black; 20 | color: white; 21 | font-family: 'SPG'; 22 | text-align: center; 23 | } 24 | 25 | #starfield { 26 | position: fixed; 27 | top: 0; 28 | left: 0; 29 | width: 100vw; 30 | height: 100vh; 31 | z-index: -1; 32 | } 33 | 34 | .typing { 35 | display: block; 36 | margin: 0 auto; 37 | text-align: center; 38 | white-space: nowrap; 39 | overflow: hidden; 40 | position: relative; 41 | width: 0; 42 | letter-spacing: -0.01em; 43 | padding-bottom: 10px; 44 | animation: typing 2.2s steps(30, end) forwards; 45 | } 46 | 47 | .typing::after { 48 | content: "|"; 49 | display: inline-block; 50 | margin-left: 4px; 51 | color: #FFF; 52 | opacity: 0; 53 | animation: blink 0.9s step-end infinite; 54 | animation-delay: 2.2s; 55 | animation-fill-mode: both; 56 | } 57 | 58 | 59 | @keyframes typing { 60 | from { width: 0; } 61 | to { width: 30ch; } 62 | } 63 | 64 | @keyframes blink { 65 | 50% { opacity: 0; } 66 | 0%,100% { opacity: 1; } 67 | } 68 | 69 | 70 | .mobile-break { 71 | display: inline; 72 | } 73 | 74 | @media (max-width: 600px) { 75 | .mobile-break { 76 | display: block; 77 | } 78 | 79 | @keyframes typing { 80 | from { width: 0; } 81 | to { width: 15ch; } 82 | } 83 | } 84 | 85 | 86 | .gsc-search-button .gsc-search-button-v2 { 87 | border-radius: 25%; 88 | border-color: var(--border-color); 89 | background-color: var(--border-color); 90 | height: 50px; 91 | width: 50px; 92 | margin: auto; 93 | padding:10px !important; 94 | transition: 0.25s; 95 | } 96 | 97 | 98 | 99 | .gsc-input-box input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus { 100 | background-color: var(--bg-color) !important; 101 | color: var(--result-color); 102 | font-size: 20px; 103 | } 104 | 105 | .gsc-input-box, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus { 106 | border-radius: 15px !important; 107 | border-color: var(--border-color) !important; 108 | border-width: 2px !important; 109 | } 110 | 111 | 112 | .gsc-input-box { 113 | box-shadow: 0 0 10px black; 114 | } 115 | 116 | .gsc-control-cse { 117 | background-color: transparent !important; 118 | max-width: 500px; 119 | margin: 20px auto; 120 | border-color: #000 !important; 121 | background-color: #000; 122 | } 123 | 124 | 125 | 126 | .gsc-result-info { 127 | display: none; 128 | } 129 | 130 | .gcsc-more-maybe-branding-root { 131 | display: none; 132 | } 133 | 134 | .gsc-orderby { 135 | display: none; 136 | } 137 | 138 | .gs-webResult.gs-result a.gs-title:link, .gs-webResult.gs-result a.gs-title:link b, .gs-imageResult a.gs-title:link, .gs-imageResult a.gs-title:link b, a.gs-title:visited { 139 | color: var(--text-color) !important; 140 | font-size: 20px; 141 | } 142 | 143 | 144 | 145 | .gsc-webResult.gsc-result, .gsc-results { 146 | background-color: var(--bg-color) !important; 147 | border-color: var(--primary-color) !important; 148 | border: none !important; 149 | padding-bottom: 5px !important; 150 | } 151 | 152 | .gsc-above-wrapper-area { 153 | border-bottom: black !important; 154 | } 155 | 156 | .gsc-results .gsc-cursor-box .gsc-cursor-page { 157 | border-color: var(--primary-color) !important; 158 | border-radius: 50% !important; 159 | background-color: transparent !important; 160 | color: var(--text-color) !important; 161 | padding: 5px 10px !important; 162 | margin: 5px; 163 | } 164 | 165 | .gsc-cursor-page { 166 | font-size: 1.5em; 167 | padding: 5px 10px !important; 168 | } 169 | 170 | .gsc-results .gsc-cursor-box .gsc-cursor-current-page { 171 | border-color: var(--primary-color) !important; 172 | color: var(--primary-color) !important; 173 | border-bottom: 2px solid var(--primary-color) !important; 174 | padding: 5px 10px !important; 175 | } 176 | 177 | 178 | .gsc-results .gsc-cursor { 179 | color: var(--primary-color) !important; 180 | fill: var(--primary-color) !important; 181 | } 182 | 183 | .gsc-results { 184 | background-color: transparent !important; 185 | } 186 | 187 | .gsst_a .gscb_a { 188 | color: var(--primary-color) !important; 189 | cursor: pointer; 190 | } 191 | 192 | .gsc-completion-container { 193 | color: var(--text-color) !important; 194 | border-color: var(--primary-color) !important; 195 | border-radius: 10px !important; 196 | padding: 10px !important; 197 | } 198 | 199 | .gssb_a:hover { 200 | background: var(--primary-color) !important; 201 | color: var(--text-color) !important; 202 | } 203 | 204 | .gsc-refinementsArea { 205 | background: none !important; 206 | border: none !important; 207 | border-bottom: none !important; 208 | } 209 | 210 | .gsc-thumbnail { 211 | display: none; 212 | } 213 | 214 | .gs-image { 215 | display: none; 216 | } 217 | 218 | .gsc-tabHeader.gsc-tabhInactive, .gsc-refinementHeader.gsc-refinementhInactive { 219 | color: var(--text-color) !important; 220 | border-color: var(--bg-color) !important; 221 | background-color: var(--bg-color) !important; 222 | } 223 | 224 | .gsc-tabHeader.gsc-tabhActive, .gsc-refinementHeader.gsc-refinementhActive { 225 | color: var(--primary-color) !important; 226 | border-color: var(--primary-color) !important; 227 | background: var(--border-color) !important; 228 | } 229 | 230 | 231 | .gsc-control-cse .gsc-table-result span { 232 | display: none; 233 | } 234 | 235 | a.gs-label { 236 | float: right; 237 | color: var(--text-color) !important; 238 | text-decoration: none !important; 239 | } 240 | 241 | .gs-webResult div.gs-visibleUrl { 242 | color: lightgreen !important; 243 | } 244 | 245 | .gcsc-find-more-on-google-root { 246 | display: none; 247 | } 248 | 249 | .gsc-adBlock { 250 | display: none !important; 251 | } 252 | 253 | 254 | .gsc-wrapper { 255 | font-family: 'SPG'; 256 | } 257 | 258 | .gsc-results .gsc-cursor-box .gsc-cursor-current-page { 259 | border-color: var(--text-color) !important; 260 | color: var(--text-color) !important; 261 | border-bottom: 2px solid var(--text-color) !important; 262 | padding: 5px 10px !important; 263 | fill: var(--text-color) !important; 264 | border-radius: 50% !important; 265 | background-color: transparent !important; 266 | } 267 | 268 | .gsc-webResult gsc-result { 269 | background-color: transparent; 270 | text-decoration: none; 271 | line-height: 16pt; 272 | font-size: 14pt; 273 | transition: 0.2s; 274 | background-image: none; 275 | color: white; 276 | } 277 | 278 | .gsc-webResult gsc-result:visited { 279 | color: silver; 280 | } 281 | 282 | .gsc-webResult gsc-result:hover { 283 | font-size: 16pt; 284 | background-clip: text; 285 | } 286 | 287 | .gsc-webResult gsc-result{text-decoration: none} 288 | body.underline a{text-decoration: underline} 289 | 290 | .gs-webResult.gs-result a.gs-title:visited, 291 | .gs-webResult.gs-result a.gs-title:visited b, 292 | .gs-imageResult a.gs-title:visited, 293 | .gs-imageResult a.gs-title:visited b { 294 | color:#FFF 295 | } 296 | 297 | 298 | 299 | .gsc-input { 300 | font-family: 'SPG'; 301 | } 302 | .gs-snippet { 303 | display: none; 304 | } 305 | 306 | a { 307 | color: white; 308 | transition: 0.25s; 309 | } 310 | 311 | a:visited { 312 | color: white; 313 | } 314 | 315 | a:hover { 316 | font-size: 25px; 317 | } 318 | 319 | 320 | .nav { 321 | position: fixed; 322 | bottom: 0; 323 | right: 0; 324 | display: flex; 325 | margin: 10px; 326 | border-style: solid; 327 | border-width: 6px; 328 | border-radius: 20px; 329 | background-color: white; 330 | } 331 | 332 | .nav a { 333 | padding-right: 5px; 334 | color: var(--text-color); 335 | text-decoration: none; 336 | } 337 | -------------------------------------------------------------------------------- /Software/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'SPG'; 3 | src: url(../fonts/SpaceGrotesk-Medium.ttf); 4 | } 5 | 6 | @font-face { 7 | font-family: 'SPG-L'; 8 | src: url(../fonts/SpaceGrotesk-Light.ttf); 9 | } 10 | 11 | 12 | :root { 13 | --text-color: #fff; 14 | --primary-color: #fff; 15 | } 16 | 17 | 18 | body { 19 | background: black; 20 | color: white; 21 | font-family: 'SPG'; 22 | text-align: center; 23 | } 24 | 25 | #starfield { 26 | position: fixed; 27 | top: 0; 28 | left: 0; 29 | width: 100vw; 30 | height: 100vh; 31 | z-index: -1; 32 | } 33 | 34 | .typing { 35 | display: block; 36 | margin: 0 auto; 37 | text-align: center; 38 | white-space: nowrap; 39 | overflow: hidden; 40 | position: relative; 41 | width: 0; 42 | letter-spacing: -0.01em; 43 | padding-bottom: 10px; 44 | animation: typing 2.2s steps(30, end) forwards; 45 | } 46 | 47 | .typing::after { 48 | content: "|"; 49 | display: inline-block; 50 | margin-left: 4px; 51 | color: #FFF; 52 | opacity: 0; 53 | animation: blink 0.9s step-end infinite; 54 | animation-delay: 2.2s; 55 | animation-fill-mode: both; 56 | } 57 | 58 | 59 | @keyframes typing { 60 | from { width: 0; } 61 | to { width: 30ch; } 62 | } 63 | 64 | @keyframes blink { 65 | 50% { opacity: 0; } 66 | 0%,100% { opacity: 1; } 67 | } 68 | 69 | 70 | .mobile-break { 71 | display: inline; 72 | } 73 | 74 | @media (max-width: 600px) { 75 | .mobile-break { 76 | display: block; 77 | } 78 | 79 | @keyframes typing { 80 | from { width: 0; } 81 | to { width: 15ch; } 82 | } 83 | } 84 | 85 | 86 | .gsc-search-button .gsc-search-button-v2 { 87 | border-radius: 25%; 88 | border-color: var(--border-color); 89 | background-color: var(--border-color); 90 | height: 50px; 91 | width: 50px; 92 | margin: auto; 93 | padding:10px !important; 94 | transition: 0.25s; 95 | } 96 | 97 | 98 | 99 | .gsc-input-box input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus { 100 | background-color: var(--bg-color) !important; 101 | color: var(--result-color); 102 | font-size: 20px; 103 | } 104 | 105 | .gsc-input-box, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus { 106 | border-radius: 15px !important; 107 | border-color: var(--border-color) !important; 108 | border-width: 2px !important; 109 | } 110 | 111 | 112 | .gsc-input-box { 113 | box-shadow: 0 0 10px black; 114 | } 115 | 116 | .gsc-control-cse { 117 | background-color: transparent !important; 118 | max-width: 500px; 119 | margin: 20px auto; 120 | border-color: #000 !important; 121 | background-color: #000; 122 | } 123 | 124 | 125 | 126 | .gsc-result-info { 127 | display: none; 128 | } 129 | 130 | .gcsc-more-maybe-branding-root { 131 | display: none; 132 | } 133 | 134 | .gsc-orderby { 135 | display: none; 136 | } 137 | 138 | .gs-webResult.gs-result a.gs-title:link, .gs-webResult.gs-result a.gs-title:link b, .gs-imageResult a.gs-title:link, .gs-imageResult a.gs-title:link b, a.gs-title:visited { 139 | color: var(--text-color) !important; 140 | font-size: 20px; 141 | } 142 | 143 | 144 | 145 | .gsc-webResult.gsc-result, .gsc-results { 146 | background-color: var(--bg-color) !important; 147 | border-color: var(--primary-color) !important; 148 | border: none !important; 149 | padding-bottom: 5px !important; 150 | } 151 | 152 | .gsc-above-wrapper-area { 153 | border-bottom: black !important; 154 | } 155 | 156 | .gsc-results .gsc-cursor-box .gsc-cursor-page { 157 | border-color: var(--primary-color) !important; 158 | border-radius: 50% !important; 159 | background-color: transparent !important; 160 | color: var(--text-color) !important; 161 | padding: 5px 10px !important; 162 | margin: 5px; 163 | } 164 | 165 | .gsc-cursor-page { 166 | font-size: 1.5em; 167 | padding: 5px 10px !important; 168 | } 169 | 170 | .gsc-results .gsc-cursor-box .gsc-cursor-current-page { 171 | border-color: var(--primary-color) !important; 172 | color: var(--primary-color) !important; 173 | border-bottom: 2px solid var(--primary-color) !important; 174 | padding: 5px 10px !important; 175 | } 176 | 177 | 178 | .gsc-results .gsc-cursor { 179 | color: var(--primary-color) !important; 180 | fill: var(--primary-color) !important; 181 | } 182 | 183 | .gsc-results { 184 | background-color: transparent !important; 185 | } 186 | 187 | .gsst_a .gscb_a { 188 | color: var(--primary-color) !important; 189 | cursor: pointer; 190 | } 191 | 192 | .gsc-completion-container { 193 | color: var(--text-color) !important; 194 | border-color: var(--primary-color) !important; 195 | border-radius: 10px !important; 196 | padding: 10px !important; 197 | } 198 | 199 | .gssb_a:hover { 200 | background: var(--primary-color) !important; 201 | color: var(--text-color) !important; 202 | } 203 | 204 | .gsc-refinementsArea { 205 | background: none !important; 206 | border: none !important; 207 | border-bottom: none !important; 208 | } 209 | 210 | .gsc-thumbnail { 211 | display: none; 212 | } 213 | 214 | .gs-image { 215 | display: none; 216 | } 217 | 218 | .gsc-tabHeader.gsc-tabhInactive, .gsc-refinementHeader.gsc-refinementhInactive { 219 | color: var(--text-color) !important; 220 | border-color: var(--bg-color) !important; 221 | background-color: var(--bg-color) !important; 222 | } 223 | 224 | .gsc-tabHeader.gsc-tabhActive, .gsc-refinementHeader.gsc-refinementhActive { 225 | color: var(--primary-color) !important; 226 | border-color: var(--primary-color) !important; 227 | background: var(--border-color) !important; 228 | } 229 | 230 | 231 | .gsc-control-cse .gsc-table-result span { 232 | display: none; 233 | } 234 | 235 | a.gs-label { 236 | float: right; 237 | color: var(--text-color) !important; 238 | text-decoration: none !important; 239 | } 240 | 241 | .gs-webResult div.gs-visibleUrl { 242 | color: lightgreen !important; 243 | } 244 | 245 | .gcsc-find-more-on-google-root { 246 | display: none; 247 | } 248 | 249 | .gsc-adBlock { 250 | display: none !important; 251 | } 252 | 253 | 254 | .gsc-wrapper { 255 | font-family: 'SPG'; 256 | } 257 | 258 | .gsc-results .gsc-cursor-box .gsc-cursor-current-page { 259 | border-color: var(--text-color) !important; 260 | color: var(--text-color) !important; 261 | border-bottom: 2px solid var(--text-color) !important; 262 | padding: 5px 10px !important; 263 | fill: var(--text-color) !important; 264 | border-radius: 50% !important; 265 | background-color: transparent !important; 266 | } 267 | 268 | .gsc-webResult gsc-result { 269 | background-color: transparent; 270 | text-decoration: none; 271 | line-height: 16pt; 272 | font-size: 14pt; 273 | transition: 0.2s; 274 | background-image: none; 275 | color: white; 276 | } 277 | 278 | .gsc-webResult gsc-result:visited { 279 | color: silver; 280 | } 281 | 282 | .gsc-webResult gsc-result:hover { 283 | font-size: 16pt; 284 | background-clip: text; 285 | } 286 | 287 | .gsc-webResult gsc-result{text-decoration: none} 288 | body.underline a{text-decoration: underline} 289 | 290 | .gs-webResult.gs-result a.gs-title:visited, 291 | .gs-webResult.gs-result a.gs-title:visited b, 292 | .gs-imageResult a.gs-title:visited, 293 | .gs-imageResult a.gs-title:visited b { 294 | color:#FFF 295 | } 296 | 297 | 298 | 299 | .gsc-input { 300 | font-family: 'SPG'; 301 | } 302 | .gs-snippet { 303 | display: none; 304 | } 305 | 306 | a { 307 | color: white; 308 | transition: 0.25s; 309 | } 310 | 311 | a:visited { 312 | color: white; 313 | } 314 | 315 | a:hover { 316 | font-size: 25px; 317 | } 318 | 319 | 320 | .nav { 321 | position: fixed; 322 | bottom: 0; 323 | right: 0; 324 | display: flex; 325 | margin: 10px; 326 | border-style: solid; 327 | border-width: 6px; 328 | border-radius: 20px; 329 | background-color: white; 330 | } 331 | 332 | .nav a { 333 | padding-right: 5px; 334 | color: var(--text-color); 335 | text-decoration: none; 336 | } 337 | 338 | --------------------------------------------------------------------------------