├── 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 |
23 |
24 |
25 |
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 |
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 |
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 |
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 |
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 |
69 |
70 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | 
3 |
4 |
5 | # Virgil Search Engine.
6 |
7 | Virgil is an actively maintained search engine for Games & Software (≧∇≦)
8 |
9 |
10 | ## Screenshots
11 |
12 | 
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 |
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 |
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 |
--------------------------------------------------------------------------------