├── .gitattributes ├── .gitignore ├── composer.json ├── composer.lock ├── config_blank.php ├── index.php ├── templates ├── index.twig └── main.twig ├── twig.ext.php └── web ├── index.php └── static ├── css ├── _mq.scss ├── _normalize.scss ├── _roboto.scss ├── style.css ├── style.css.map └── style.scss ├── fonts ├── roboto-v18-latin-100.eot ├── roboto-v18-latin-100.svg ├── roboto-v18-latin-100.ttf ├── roboto-v18-latin-100.woff ├── roboto-v18-latin-100.woff2 ├── roboto-v18-latin-regular.eot ├── roboto-v18-latin-regular.svg ├── roboto-v18-latin-regular.ttf ├── roboto-v18-latin-regular.woff └── roboto-v18-latin-regular.woff2 └── img ├── favicon-16.png ├── favicon-32.png ├── favicon-96.png ├── ggbg.png ├── god.svg ├── rg.svg ├── rgbg.png ├── sg.svg └── sgbg.png /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /twig_cache/ 2 | composer.phar 3 | /vendor/ 4 | /config.php 5 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "slim/slim": "3.0", 4 | "slim/twig-view": "^2.3" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "e30d3564bc8c531d5408a34d9d5ca9e7", 8 | "packages": [ 9 | { 10 | "name": "container-interop/container-interop", 11 | "version": "1.2.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/container-interop/container-interop.git", 15 | "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", 20 | "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "psr/container": "^1.0" 25 | }, 26 | "type": "library", 27 | "autoload": { 28 | "psr-4": { 29 | "Interop\\Container\\": "src/Interop/Container/" 30 | } 31 | }, 32 | "notification-url": "https://packagist.org/downloads/", 33 | "license": [ 34 | "MIT" 35 | ], 36 | "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", 37 | "homepage": "https://github.com/container-interop/container-interop", 38 | "time": "2017-02-14T19:40:03+00:00" 39 | }, 40 | { 41 | "name": "nikic/fast-route", 42 | "version": "v0.6.0", 43 | "source": { 44 | "type": "git", 45 | "url": "https://github.com/nikic/FastRoute.git", 46 | "reference": "31fa86924556b80735f98b294a7ffdfb26789f22" 47 | }, 48 | "dist": { 49 | "type": "zip", 50 | "url": "https://api.github.com/repos/nikic/FastRoute/zipball/31fa86924556b80735f98b294a7ffdfb26789f22", 51 | "reference": "31fa86924556b80735f98b294a7ffdfb26789f22", 52 | "shasum": "" 53 | }, 54 | "require": { 55 | "php": ">=5.4.0" 56 | }, 57 | "type": "library", 58 | "autoload": { 59 | "psr-4": { 60 | "FastRoute\\": "src/" 61 | }, 62 | "files": [ 63 | "src/functions.php" 64 | ] 65 | }, 66 | "notification-url": "https://packagist.org/downloads/", 67 | "license": [ 68 | "BSD-3-Clause" 69 | ], 70 | "authors": [ 71 | { 72 | "name": "Nikita Popov", 73 | "email": "nikic@php.net" 74 | } 75 | ], 76 | "description": "Fast request router for PHP", 77 | "keywords": [ 78 | "router", 79 | "routing" 80 | ], 81 | "time": "2015-06-18T19:15:47+00:00" 82 | }, 83 | { 84 | "name": "pimple/pimple", 85 | "version": "v3.2.2", 86 | "source": { 87 | "type": "git", 88 | "url": "https://github.com/silexphp/Pimple.git", 89 | "reference": "4d45fb62d96418396ec58ba76e6f065bca16e10a" 90 | }, 91 | "dist": { 92 | "type": "zip", 93 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/4d45fb62d96418396ec58ba76e6f065bca16e10a", 94 | "reference": "4d45fb62d96418396ec58ba76e6f065bca16e10a", 95 | "shasum": "" 96 | }, 97 | "require": { 98 | "php": ">=5.3.0", 99 | "psr/container": "^1.0" 100 | }, 101 | "require-dev": { 102 | "symfony/phpunit-bridge": "^3.2" 103 | }, 104 | "type": "library", 105 | "extra": { 106 | "branch-alias": { 107 | "dev-master": "3.2.x-dev" 108 | } 109 | }, 110 | "autoload": { 111 | "psr-0": { 112 | "Pimple": "src/" 113 | } 114 | }, 115 | "notification-url": "https://packagist.org/downloads/", 116 | "license": [ 117 | "MIT" 118 | ], 119 | "authors": [ 120 | { 121 | "name": "Fabien Potencier", 122 | "email": "fabien@symfony.com" 123 | } 124 | ], 125 | "description": "Pimple, a simple Dependency Injection Container", 126 | "homepage": "http://pimple.sensiolabs.org", 127 | "keywords": [ 128 | "container", 129 | "dependency injection" 130 | ], 131 | "time": "2017-07-23T07:32:15+00:00" 132 | }, 133 | { 134 | "name": "psr/container", 135 | "version": "1.0.0", 136 | "source": { 137 | "type": "git", 138 | "url": "https://github.com/php-fig/container.git", 139 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 140 | }, 141 | "dist": { 142 | "type": "zip", 143 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 144 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 145 | "shasum": "" 146 | }, 147 | "require": { 148 | "php": ">=5.3.0" 149 | }, 150 | "type": "library", 151 | "extra": { 152 | "branch-alias": { 153 | "dev-master": "1.0.x-dev" 154 | } 155 | }, 156 | "autoload": { 157 | "psr-4": { 158 | "Psr\\Container\\": "src/" 159 | } 160 | }, 161 | "notification-url": "https://packagist.org/downloads/", 162 | "license": [ 163 | "MIT" 164 | ], 165 | "authors": [ 166 | { 167 | "name": "PHP-FIG", 168 | "homepage": "http://www.php-fig.org/" 169 | } 170 | ], 171 | "description": "Common Container Interface (PHP FIG PSR-11)", 172 | "homepage": "https://github.com/php-fig/container", 173 | "keywords": [ 174 | "PSR-11", 175 | "container", 176 | "container-interface", 177 | "container-interop", 178 | "psr" 179 | ], 180 | "time": "2017-02-14T16:28:37+00:00" 181 | }, 182 | { 183 | "name": "psr/http-message", 184 | "version": "1.0.1", 185 | "source": { 186 | "type": "git", 187 | "url": "https://github.com/php-fig/http-message.git", 188 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 189 | }, 190 | "dist": { 191 | "type": "zip", 192 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 193 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 194 | "shasum": "" 195 | }, 196 | "require": { 197 | "php": ">=5.3.0" 198 | }, 199 | "type": "library", 200 | "extra": { 201 | "branch-alias": { 202 | "dev-master": "1.0.x-dev" 203 | } 204 | }, 205 | "autoload": { 206 | "psr-4": { 207 | "Psr\\Http\\Message\\": "src/" 208 | } 209 | }, 210 | "notification-url": "https://packagist.org/downloads/", 211 | "license": [ 212 | "MIT" 213 | ], 214 | "authors": [ 215 | { 216 | "name": "PHP-FIG", 217 | "homepage": "http://www.php-fig.org/" 218 | } 219 | ], 220 | "description": "Common interface for HTTP messages", 221 | "homepage": "https://github.com/php-fig/http-message", 222 | "keywords": [ 223 | "http", 224 | "http-message", 225 | "psr", 226 | "psr-7", 227 | "request", 228 | "response" 229 | ], 230 | "time": "2016-08-06T14:39:51+00:00" 231 | }, 232 | { 233 | "name": "slim/slim", 234 | "version": "3.0.0", 235 | "source": { 236 | "type": "git", 237 | "url": "https://github.com/slimphp/Slim.git", 238 | "reference": "3b06f0f2d84dabbe81b6cea46ace46a3e883253e" 239 | }, 240 | "dist": { 241 | "type": "zip", 242 | "url": "https://api.github.com/repos/slimphp/Slim/zipball/3b06f0f2d84dabbe81b6cea46ace46a3e883253e", 243 | "reference": "3b06f0f2d84dabbe81b6cea46ace46a3e883253e", 244 | "shasum": "" 245 | }, 246 | "require": { 247 | "container-interop/container-interop": "^1.1", 248 | "nikic/fast-route": "^0.6", 249 | "php": ">=5.5.0", 250 | "pimple/pimple": "^3.0", 251 | "psr/http-message": "^1.0" 252 | }, 253 | "require-dev": { 254 | "phpunit/phpunit": "^4.0" 255 | }, 256 | "type": "library", 257 | "autoload": { 258 | "psr-4": { 259 | "Slim\\": "Slim" 260 | } 261 | }, 262 | "notification-url": "https://packagist.org/downloads/", 263 | "license": [ 264 | "MIT" 265 | ], 266 | "authors": [ 267 | { 268 | "name": "Rob Allen", 269 | "email": "rob@akrabat.com", 270 | "homepage": "http://akrabat.com" 271 | }, 272 | { 273 | "name": "Josh Lockhart", 274 | "email": "hello@joshlockhart.com", 275 | "homepage": "https://joshlockhart.com" 276 | }, 277 | { 278 | "name": "Gabriel Manricks", 279 | "email": "gmanricks@me.com", 280 | "homepage": "http://gabrielmanricks.com" 281 | }, 282 | { 283 | "name": "Andrew Smith", 284 | "email": "a.smith@silentworks.co.uk", 285 | "homepage": "http://silentworks.co.uk" 286 | } 287 | ], 288 | "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", 289 | "homepage": "http://slimframework.com", 290 | "keywords": [ 291 | "api", 292 | "framework", 293 | "micro", 294 | "router" 295 | ], 296 | "time": "2015-12-07T14:11:09+00:00" 297 | }, 298 | { 299 | "name": "slim/twig-view", 300 | "version": "2.3.0", 301 | "source": { 302 | "type": "git", 303 | "url": "https://github.com/slimphp/Twig-View.git", 304 | "reference": "f6ff5ec3a24e11866376b8ffa235fbbb7e1d1301" 305 | }, 306 | "dist": { 307 | "type": "zip", 308 | "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/f6ff5ec3a24e11866376b8ffa235fbbb7e1d1301", 309 | "reference": "f6ff5ec3a24e11866376b8ffa235fbbb7e1d1301", 310 | "shasum": "" 311 | }, 312 | "require": { 313 | "php": ">=5.5.0", 314 | "psr/http-message": "^1.0", 315 | "twig/twig": "^1.18|^2.0" 316 | }, 317 | "require-dev": { 318 | "phpunit/phpunit": "^4.8|^5.7" 319 | }, 320 | "type": "library", 321 | "autoload": { 322 | "psr-4": { 323 | "Slim\\Views\\": "src" 324 | } 325 | }, 326 | "notification-url": "https://packagist.org/downloads/", 327 | "license": [ 328 | "MIT" 329 | ], 330 | "authors": [ 331 | { 332 | "name": "Josh Lockhart", 333 | "email": "hello@joshlockhart.com", 334 | "homepage": "http://joshlockhart.com" 335 | } 336 | ], 337 | "description": "Slim Framework 3 view helper built on top of the Twig 2 templating component", 338 | "homepage": "http://slimframework.com", 339 | "keywords": [ 340 | "framework", 341 | "slim", 342 | "template", 343 | "twig", 344 | "view" 345 | ], 346 | "time": "2017-09-20T19:47:37+00:00" 347 | }, 348 | { 349 | "name": "symfony/polyfill-mbstring", 350 | "version": "v1.6.0", 351 | "source": { 352 | "type": "git", 353 | "url": "https://github.com/symfony/polyfill-mbstring.git", 354 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" 355 | }, 356 | "dist": { 357 | "type": "zip", 358 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", 359 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", 360 | "shasum": "" 361 | }, 362 | "require": { 363 | "php": ">=5.3.3" 364 | }, 365 | "suggest": { 366 | "ext-mbstring": "For best performance" 367 | }, 368 | "type": "library", 369 | "extra": { 370 | "branch-alias": { 371 | "dev-master": "1.6-dev" 372 | } 373 | }, 374 | "autoload": { 375 | "psr-4": { 376 | "Symfony\\Polyfill\\Mbstring\\": "" 377 | }, 378 | "files": [ 379 | "bootstrap.php" 380 | ] 381 | }, 382 | "notification-url": "https://packagist.org/downloads/", 383 | "license": [ 384 | "MIT" 385 | ], 386 | "authors": [ 387 | { 388 | "name": "Nicolas Grekas", 389 | "email": "p@tchwork.com" 390 | }, 391 | { 392 | "name": "Symfony Community", 393 | "homepage": "https://symfony.com/contributors" 394 | } 395 | ], 396 | "description": "Symfony polyfill for the Mbstring extension", 397 | "homepage": "https://symfony.com", 398 | "keywords": [ 399 | "compatibility", 400 | "mbstring", 401 | "polyfill", 402 | "portable", 403 | "shim" 404 | ], 405 | "time": "2017-10-11T12:05:26+00:00" 406 | }, 407 | { 408 | "name": "twig/twig", 409 | "version": "v2.4.4", 410 | "source": { 411 | "type": "git", 412 | "url": "https://github.com/twigphp/Twig.git", 413 | "reference": "eddb97148ad779f27e670e1e3f19fb323aedafeb" 414 | }, 415 | "dist": { 416 | "type": "zip", 417 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/eddb97148ad779f27e670e1e3f19fb323aedafeb", 418 | "reference": "eddb97148ad779f27e670e1e3f19fb323aedafeb", 419 | "shasum": "" 420 | }, 421 | "require": { 422 | "php": "^7.0", 423 | "symfony/polyfill-mbstring": "~1.0" 424 | }, 425 | "require-dev": { 426 | "psr/container": "^1.0", 427 | "symfony/debug": "~2.7", 428 | "symfony/phpunit-bridge": "~3.3@dev" 429 | }, 430 | "type": "library", 431 | "extra": { 432 | "branch-alias": { 433 | "dev-master": "2.4-dev" 434 | } 435 | }, 436 | "autoload": { 437 | "psr-0": { 438 | "Twig_": "lib/" 439 | }, 440 | "psr-4": { 441 | "Twig\\": "src/" 442 | } 443 | }, 444 | "notification-url": "https://packagist.org/downloads/", 445 | "license": [ 446 | "BSD-3-Clause" 447 | ], 448 | "authors": [ 449 | { 450 | "name": "Fabien Potencier", 451 | "email": "fabien@symfony.com", 452 | "homepage": "http://fabien.potencier.org", 453 | "role": "Lead Developer" 454 | }, 455 | { 456 | "name": "Armin Ronacher", 457 | "email": "armin.ronacher@active-4.com", 458 | "role": "Project Founder" 459 | }, 460 | { 461 | "name": "Twig Team", 462 | "homepage": "http://twig.sensiolabs.org/contributors", 463 | "role": "Contributors" 464 | } 465 | ], 466 | "description": "Twig, the flexible, fast, and secure template language for PHP", 467 | "homepage": "http://twig.sensiolabs.org", 468 | "keywords": [ 469 | "templating" 470 | ], 471 | "time": "2017-09-27T18:10:31+00:00" 472 | } 473 | ], 474 | "packages-dev": [], 475 | "aliases": [], 476 | "minimum-stability": "stable", 477 | "stability-flags": [], 478 | "prefer-stable": false, 479 | "prefer-lowest": false, 480 | "platform": [], 481 | "platform-dev": [] 482 | } 483 | -------------------------------------------------------------------------------- /config_blank.php: -------------------------------------------------------------------------------- 1 | "/var/www/portal", 4 | "DOMAIN" => "https://goodolddownloads.com", 5 | "DEV" => true 6 | ]; -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 13 |
14 | 19 |
20 |
21 |
22 | 27 |
28 |
29 |
30 | 35 |
36 |
37 | {#
38 |

Visit our sites below where you can download free PC games from GOG, CPY, FitGirl, CODEX, RELOADED, SKIDROW by torrents & direct links.

39 |
#} 40 | 41 | {% endblock content %} -------------------------------------------------------------------------------- /templates/main.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Good Old Downloads | Site Portal | Free GOG PC Games 8 | 9 | 10 | 11 | 12 | 13 | {{ loadCSS(['/static/css/style.css'], []) }} 14 | 15 | 16 | 17 | 18 | 19 | {% block meta %}{% endblock meta %} 20 | 24 | 25 | 26 | 27 | {% block content %}{% endblock content %} 28 | 29 | -------------------------------------------------------------------------------- /twig.ext.php: -------------------------------------------------------------------------------- 1 | array('html'))), 6 | new \Twig_SimpleFunction('loadJS', array($this, 'loadJS'), array('is_safe' => array('html'))), 7 | ); 8 | } 9 | 10 | public function getFilters(){ 11 | return array( 12 | new \Twig_SimpleFilter('long2ip', array($this, 'long2ip')), 13 | new \Twig_SimpleFilter('convertBytes', array($this, 'convertBytes')), 14 | ); 15 | } 16 | 17 | public function loadCSS($styles, $integrity = null){ 18 | $ret = array(); 19 | if (is_array($styles)) { 20 | foreach ($styles as $key => $value) { 21 | if ($integrity !== null) { 22 | if (!empty($integrity[$key])) { 23 | $integStr = ' integrity="'.$integrity[$key].'"'; 24 | } else { 25 | $integStr = ''; 26 | } 27 | } 28 | if (file_exists(__DIR__.'/web/'.$value)) { 29 | $ret[] = ''; 30 | } 31 | } 32 | } 33 | return join($ret, "\n"); 34 | } 35 | public function loadJS($scripts, $integrity = null){ 36 | $ret = array(); 37 | if (is_array($scripts)) { 38 | foreach ($scripts as $key => $value) { 39 | if ($integrity !== null) { 40 | if (!empty($integrity[$key])) { 41 | $integStr = ' integrity="'.$integrity[$key].'"'; 42 | } else { 43 | $integStr = ''; 44 | } 45 | } 46 | if (file_exists(__DIR__.'/web/'.$value)) { 47 | $ret[] = ''; 48 | } 49 | } 50 | } 51 | return join($ret, "\n"); 52 | } 53 | } -------------------------------------------------------------------------------- /web/index.php: -------------------------------------------------------------------------------- 1 | add(function ($request, $response, $next) { 14 | $CORS = "default-src https:; script-src 'none'; object-src 'self'; style-src 'self'; img-src 'self'; media-src 'self'; child-src 'none'; font-src 'self'; connect-src 'none'"; 15 | 16 | $response = $next($request, $response); 17 | return $response 18 | ->withHeader('Content-Security-Policy', $CORS) 19 | ->withHeader('X-Content-Security-Policy', $CORS) 20 | ->withHeader('X-WebKit-CSP', $CORS) 21 | ->withHeader('X-Follow-The-White-Rabbit', "https://www.youtube.com/watch?v=6GggY4TEYbk"); 22 | }); 23 | 24 | // Register component on container 25 | $container['view'] = function ($container) { 26 | global $CONFIG; 27 | $view = new \Slim\Views\Twig("{$CONFIG['BASEDIR']}/templates", [ 28 | 'cache' => ($CONFIG['DEV'] ? false : "{$CONFIG['BASEDIR']}/twig_cache") 29 | ]); 30 | $twig = $view->getEnvironment(); 31 | 32 | // Add extensions 33 | $uri = \Slim\Http\Uri::createFromEnvironment(new \Slim\Http\Environment($_SERVER)); 34 | $view->addExtension(new \Slim\Views\TwigExtension($container->get('router'), $uri->withPort(null))); 35 | 36 | $twig->addExtension(new AppExtension()); 37 | return $view; 38 | }; 39 | 40 | // Remove slashes 41 | $app->add(function (Request $request, Response $response, callable $next) { 42 | $uri = $request->getUri(); 43 | $path = $uri->getPath(); 44 | if ($path != '/' && substr($path, -1) == '/') { 45 | $uri = $uri->withPath(substr($path, 0, -1))->withPort(null); 46 | if ($request->getMethod() == 'GET') { 47 | return $response->withRedirect((string)$uri, 301); 48 | } else { 49 | return $next($request->withUri($uri), $response); 50 | } 51 | } 52 | return $next($request, $response); 53 | }); 54 | 55 | // Redirect to /enter on 404 56 | $container['notFoundHandler'] = function ($container) { 57 | return function ($request, $response) use ($container) { 58 | return $response->withRedirect("/", 301); 59 | }; 60 | }; 61 | 62 | $app->get('/', function ($request, $response, $args) { 63 | // Support for old urls 64 | if (isset($_GET['game'])) { 65 | if (is_numeric($_GET['game'])) { 66 | $gameid = intval($_GET['game']); 67 | return $response->withRedirect("https://goggames.goodolddownloads.com/?game=$gameid", 301); 68 | } 69 | } 70 | return $response->withRedirect("/enter", 301); 71 | }); 72 | 73 | $app->get('/enter', function ($request, $response, $args) { 74 | return $this->view->render($response, 'index.twig'); 75 | }); 76 | $app->run(); -------------------------------------------------------------------------------- /web/static/css/_mq.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; // Fixes an issue where Ruby locale is not set properly 2 | // See https://github.com/sass-mq/sass-mq/pull/10 3 | 4 | /// Base font size on the `` element 5 | /// @type Number (unit) 6 | $mq-base-font-size: 16px !default; 7 | 8 | /// Responsive mode 9 | /// 10 | /// Set to `false` to enable support for browsers that do not support @media queries, 11 | /// (IE <= 8, Firefox <= 3, Opera <= 9) 12 | /// 13 | /// You could create a stylesheet served exclusively to older browsers, 14 | /// where @media queries are rasterized 15 | /// 16 | /// @example scss 17 | /// // old-ie.scss 18 | /// $mq-responsive: false; 19 | /// @import 'main'; // @media queries in this file will be rasterized up to $mq-static-breakpoint 20 | /// // larger breakpoints will be ignored 21 | /// 22 | /// @type Boolean 23 | /// @link https://github.com/sass-mq/sass-mq#responsive-mode-off Disabled responsive mode documentation 24 | $mq-responsive: true !default; 25 | 26 | /// Breakpoint list 27 | /// 28 | /// Name your breakpoints in a way that creates a ubiquitous language 29 | /// across team members. It will improve communication between 30 | /// stakeholders, designers, developers, and testers. 31 | /// 32 | /// @type Map 33 | /// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint Full documentation and examples 34 | $mq-breakpoints: ( 35 | mobile: 320px, 36 | tablet: 740px, 37 | desktop: 980px, 38 | wide: 1300px 39 | ) !default; 40 | 41 | /// Static breakpoint (for fixed-width layouts) 42 | /// 43 | /// Define the breakpoint from $mq-breakpoints that should 44 | /// be used as the target width for the fixed-width layout 45 | /// (i.e. when $mq-responsive is set to 'false') in a old-ie.scss 46 | /// 47 | /// @example scss 48 | /// // tablet-only.scss 49 | /// // 50 | /// // Ignore all styles above tablet breakpoint, 51 | /// // and fix the styles (e.g. layout) at tablet width 52 | /// $mq-responsive: false; 53 | /// $mq-static-breakpoint: tablet; 54 | /// @import 'main'; // @media queries in this file will be rasterized up to tablet 55 | /// // larger breakpoints will be ignored 56 | /// 57 | /// @type String 58 | /// @link https://github.com/sass-mq/sass-mq#adding-custom-breakpoints Full documentation and examples 59 | $mq-static-breakpoint: desktop !default; 60 | 61 | /// Show breakpoints in the top right corner 62 | /// 63 | /// If you want to display the currently active breakpoint in the top 64 | /// right corner of your site during development, add the breakpoints 65 | /// to this list, ordered by width, e.g. (mobile, tablet, desktop). 66 | /// 67 | /// @type map 68 | $mq-show-breakpoints: () !default; 69 | 70 | /// Customize the media type (e.g. `@media screen` or `@media print`) 71 | /// By default sass-mq uses an "all" media type (`@media all and …`) 72 | /// 73 | /// @type String 74 | /// @link https://github.com/sass-mq/sass-mq#changing-media-type Full documentation and examples 75 | $mq-media-type: all !default; 76 | 77 | /// Convert pixels to ems 78 | /// 79 | /// @param {Number} $px - value to convert 80 | /// @param {Number} $base-font-size ($mq-base-font-size) - `` font size 81 | /// 82 | /// @example scss 83 | /// $font-size-in-ems: mq-px2em(16px); 84 | /// p { font-size: mq-px2em(16px); } 85 | /// 86 | /// @requires $mq-base-font-size 87 | /// @returns {Number} 88 | @function mq-px2em($px, $base-font-size: $mq-base-font-size) { 89 | @if unitless($px) { 90 | @warn "Assuming #{$px} to be in pixels, attempting to convert it into pixels."; 91 | @return mq-px2em($px * 1px, $base-font-size); 92 | } @else if unit($px) == em { 93 | @return $px; 94 | } 95 | @return ($px / $base-font-size) * 1em; 96 | } 97 | 98 | /// Get a breakpoint's width 99 | /// 100 | /// @param {String} $name - Name of the breakpoint. One of $mq-breakpoints 101 | /// 102 | /// @example scss 103 | /// $tablet-width: mq-get-breakpoint-width(tablet); 104 | /// @media (min-width: mq-get-breakpoint-width(desktop)) {} 105 | /// 106 | /// @requires {Variable} $mq-breakpoints 107 | /// 108 | /// @returns {Number} Value in pixels 109 | @function mq-get-breakpoint-width($name, $breakpoints: $mq-breakpoints) { 110 | @if map-has-key($breakpoints, $name) { 111 | @return map-get($breakpoints, $name); 112 | } @else { 113 | @warn "Breakpoint #{$name} wasn't found in $breakpoints."; 114 | } 115 | } 116 | 117 | /// Media Query mixin 118 | /// 119 | /// @param {String | Boolean} $from (false) - One of $mq-breakpoints 120 | /// @param {String | Boolean} $until (false) - One of $mq-breakpoints 121 | /// @param {String | Boolean} $and (false) - Additional media query parameters 122 | /// @param {String} $media-type ($mq-media-type) - Media type: screen, print… 123 | /// 124 | /// @ignore Undocumented API, for advanced use only: 125 | /// @ignore @param {Map} $breakpoints ($mq-breakpoints) 126 | /// @ignore @param {String} $static-breakpoint ($mq-static-breakpoint) 127 | /// 128 | /// @content styling rules, wrapped into a @media query when $responsive is true 129 | /// 130 | /// @requires {Variable} $mq-media-type 131 | /// @requires {Variable} $mq-breakpoints 132 | /// @requires {Variable} $mq-static-breakpoint 133 | /// @requires {function} mq-px2em 134 | /// @requires {function} mq-get-breakpoint-width 135 | /// 136 | /// @link https://github.com/sass-mq/sass-mq#responsive-mode-on-default Full documentation and examples 137 | /// 138 | /// @example scss 139 | /// .element { 140 | /// @include mq($from: mobile) { 141 | /// color: red; 142 | /// } 143 | /// @include mq($until: tablet) { 144 | /// color: blue; 145 | /// } 146 | /// @include mq(mobile, tablet) { 147 | /// color: green; 148 | /// } 149 | /// @include mq($from: tablet, $and: '(orientation: landscape)') { 150 | /// color: teal; 151 | /// } 152 | /// @include mq(950px) { 153 | /// color: hotpink; 154 | /// } 155 | /// @include mq(tablet, $media-type: screen) { 156 | /// color: hotpink; 157 | /// } 158 | /// // Advanced use: 159 | /// $my-breakpoints: (L: 900px, XL: 1200px); 160 | /// @include mq(L, $breakpoints: $my-breakpoints, $static-breakpoint: L) { 161 | /// color: hotpink; 162 | /// } 163 | /// } 164 | @mixin mq( 165 | $from: false, 166 | $until: false, 167 | $and: false, 168 | $media-type: $mq-media-type, 169 | $breakpoints: $mq-breakpoints, 170 | $responsive: $mq-responsive, 171 | $static-breakpoint: $mq-static-breakpoint 172 | ) { 173 | $min-width: 0; 174 | $max-width: 0; 175 | $media-query: ''; 176 | 177 | // From: this breakpoint (inclusive) 178 | @if $from { 179 | @if type-of($from) == number { 180 | $min-width: mq-px2em($from); 181 | } @else { 182 | $min-width: mq-px2em(mq-get-breakpoint-width($from, $breakpoints)); 183 | } 184 | } 185 | 186 | // Until: that breakpoint (exclusive) 187 | @if $until { 188 | @if type-of($until) == number { 189 | $max-width: mq-px2em($until); 190 | } @else { 191 | $max-width: mq-px2em(mq-get-breakpoint-width($until, $breakpoints)) - .01em; 192 | } 193 | } 194 | 195 | // Responsive support is disabled, rasterize the output outside @media blocks 196 | // The browser will rely on the cascade itself. 197 | @if $responsive == false { 198 | $static-breakpoint-width: mq-get-breakpoint-width($static-breakpoint, $breakpoints); 199 | $target-width: mq-px2em($static-breakpoint-width); 200 | 201 | // Output only rules that start at or span our target width 202 | @if ( 203 | $and == false 204 | and $min-width <= $target-width 205 | and ( 206 | $until == false or $max-width >= $target-width 207 | ) 208 | ) { 209 | @content; 210 | } 211 | } 212 | 213 | // Responsive support is enabled, output rules inside @media queries 214 | @else { 215 | @if $min-width != 0 { $media-query: '#{$media-query} and (min-width: #{$min-width})'; } 216 | @if $max-width != 0 { $media-query: '#{$media-query} and (max-width: #{$max-width})'; } 217 | @if $and { $media-query: '#{$media-query} and #{$and}'; } 218 | 219 | // Remove unnecessary media query prefix 'all and ' 220 | @if ($media-type == 'all' and $media-query != '') { 221 | $media-type: ''; 222 | $media-query: str-slice(unquote($media-query), 6); 223 | } 224 | 225 | @media #{$media-type + $media-query} { 226 | @content; 227 | } 228 | } 229 | } 230 | 231 | /// Add a breakpoint 232 | /// 233 | /// @param {String} $name - Name of the breakpoint 234 | /// @param {Number} $width - Width of the breakpoint 235 | /// 236 | /// @requires {Variable} $mq-breakpoints 237 | /// 238 | /// @example scss 239 | /// @include mq-add-breakpoint(tvscreen, 1920px); 240 | /// @include mq(tvscreen) {} 241 | @mixin mq-add-breakpoint($name, $width) { 242 | $new-breakpoint: ($name: $width); 243 | $mq-breakpoints: map-merge($mq-breakpoints, $new-breakpoint) !global; 244 | } 245 | 246 | /// Show the active breakpoint in the top right corner of the viewport 247 | /// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint 248 | /// 249 | /// @param {List} $show-breakpoints ($mq-show-breakpoints) - List of breakpoints to show in the top right corner 250 | /// @param {Map} $breakpoints ($mq-breakpoints) - Breakpoint names and sizes 251 | /// 252 | /// @requires {Variable} $mq-breakpoints 253 | /// @requires {Variable} $mq-show-breakpoints 254 | /// 255 | /// @example scss 256 | /// // Show breakpoints using global settings 257 | /// @include mq-show-breakpoints; 258 | /// 259 | /// // Show breakpoints using custom settings 260 | /// @include mq-show-breakpoints((L, XL), (S: 300px, L: 800px, XL: 1200px)); 261 | @mixin mq-show-breakpoints($show-breakpoints: $mq-show-breakpoints, $breakpoints: $mq-breakpoints) { 262 | body:before { 263 | background-color: #FCF8E3; 264 | border-bottom: 1px solid #FBEED5; 265 | border-left: 1px solid #FBEED5; 266 | color: #C09853; 267 | font: small-caption; 268 | padding: 3px 6px; 269 | pointer-events: none; 270 | position: fixed; 271 | right: 0; 272 | top: 0; 273 | z-index: 100; 274 | 275 | // Loop through the breakpoints that should be shown 276 | @each $show-breakpoint in $show-breakpoints { 277 | $width: mq-get-breakpoint-width($show-breakpoint, $breakpoints); 278 | @include mq($show-breakpoint, $breakpoints: $breakpoints) { 279 | content: "#{$show-breakpoint} ≥ #{$width} (#{mq-px2em($width)})"; 280 | } 281 | } 282 | } 283 | } 284 | 285 | @if length($mq-show-breakpoints) > 0 { 286 | @include mq-show-breakpoints; 287 | } 288 | -------------------------------------------------------------------------------- /web/static/css/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in 9 | * IE on Windows Phone and in iOS. 10 | */ 11 | 12 | html { 13 | line-height: 1.15; /* 1 */ 14 | -ms-text-size-adjust: 100%; /* 2 */ 15 | -webkit-text-size-adjust: 100%; /* 2 */ 16 | } 17 | 18 | /* Sections 19 | ========================================================================== */ 20 | 21 | /** 22 | * Remove the margin in all browsers (opinionated). 23 | */ 24 | 25 | body { 26 | margin: 0; 27 | } 28 | 29 | /** 30 | * Add the correct display in IE 9-. 31 | */ 32 | 33 | article, 34 | aside, 35 | footer, 36 | header, 37 | nav, 38 | section { 39 | display: block; 40 | } 41 | 42 | /** 43 | * Correct the font size and margin on `h1` elements within `section` and 44 | * `article` contexts in Chrome, Firefox, and Safari. 45 | */ 46 | 47 | h1 { 48 | font-size: 2em; 49 | margin: 0.67em 0; 50 | } 51 | 52 | /* Grouping content 53 | ========================================================================== */ 54 | 55 | /** 56 | * Add the correct display in IE 9-. 57 | * 1. Add the correct display in IE. 58 | */ 59 | 60 | figcaption, 61 | figure, 62 | main { /* 1 */ 63 | display: block; 64 | } 65 | 66 | /** 67 | * Add the correct margin in IE 8. 68 | */ 69 | 70 | figure { 71 | margin: 1em 40px; 72 | } 73 | 74 | /** 75 | * 1. Add the correct box sizing in Firefox. 76 | * 2. Show the overflow in Edge and IE. 77 | */ 78 | 79 | hr { 80 | box-sizing: content-box; /* 1 */ 81 | height: 0; /* 1 */ 82 | overflow: visible; /* 2 */ 83 | } 84 | 85 | /** 86 | * 1. Correct the inheritance and scaling of font size in all browsers. 87 | * 2. Correct the odd `em` font sizing in all browsers. 88 | */ 89 | 90 | pre { 91 | font-family: monospace, monospace; /* 1 */ 92 | font-size: 1em; /* 2 */ 93 | } 94 | 95 | /* Text-level semantics 96 | ========================================================================== */ 97 | 98 | /** 99 | * 1. Remove the gray background on active links in IE 10. 100 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 101 | */ 102 | 103 | a { 104 | background-color: transparent; /* 1 */ 105 | -webkit-text-decoration-skip: objects; /* 2 */ 106 | } 107 | 108 | /** 109 | * 1. Remove the bottom border in Chrome 57- and Firefox 39-. 110 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 111 | */ 112 | 113 | abbr[title] { 114 | border-bottom: none; /* 1 */ 115 | text-decoration: underline; /* 2 */ 116 | text-decoration: underline dotted; /* 2 */ 117 | } 118 | 119 | /** 120 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 121 | */ 122 | 123 | b, 124 | strong { 125 | font-weight: inherit; 126 | } 127 | 128 | /** 129 | * Add the correct font weight in Chrome, Edge, and Safari. 130 | */ 131 | 132 | b, 133 | strong { 134 | font-weight: bolder; 135 | } 136 | 137 | /** 138 | * 1. Correct the inheritance and scaling of font size in all browsers. 139 | * 2. Correct the odd `em` font sizing in all browsers. 140 | */ 141 | 142 | code, 143 | kbd, 144 | samp { 145 | font-family: monospace, monospace; /* 1 */ 146 | font-size: 1em; /* 2 */ 147 | } 148 | 149 | /** 150 | * Add the correct font style in Android 4.3-. 151 | */ 152 | 153 | dfn { 154 | font-style: italic; 155 | } 156 | 157 | /** 158 | * Add the correct background and color in IE 9-. 159 | */ 160 | 161 | mark { 162 | background-color: #ff0; 163 | color: #000; 164 | } 165 | 166 | /** 167 | * Add the correct font size in all browsers. 168 | */ 169 | 170 | small { 171 | font-size: 80%; 172 | } 173 | 174 | /** 175 | * Prevent `sub` and `sup` elements from affecting the line height in 176 | * all browsers. 177 | */ 178 | 179 | sub, 180 | sup { 181 | font-size: 75%; 182 | line-height: 0; 183 | position: relative; 184 | vertical-align: baseline; 185 | } 186 | 187 | sub { 188 | bottom: -0.25em; 189 | } 190 | 191 | sup { 192 | top: -0.5em; 193 | } 194 | 195 | /* Embedded content 196 | ========================================================================== */ 197 | 198 | /** 199 | * Add the correct display in IE 9-. 200 | */ 201 | 202 | audio, 203 | video { 204 | display: inline-block; 205 | } 206 | 207 | /** 208 | * Add the correct display in iOS 4-7. 209 | */ 210 | 211 | audio:not([controls]) { 212 | display: none; 213 | height: 0; 214 | } 215 | 216 | /** 217 | * Remove the border on images inside links in IE 10-. 218 | */ 219 | 220 | img { 221 | border-style: none; 222 | } 223 | 224 | /** 225 | * Hide the overflow in IE. 226 | */ 227 | 228 | svg:not(:root) { 229 | overflow: hidden; 230 | } 231 | 232 | /* Forms 233 | ========================================================================== */ 234 | 235 | /** 236 | * 1. Change the font styles in all browsers (opinionated). 237 | * 2. Remove the margin in Firefox and Safari. 238 | */ 239 | 240 | button, 241 | input, 242 | optgroup, 243 | select, 244 | textarea { 245 | font-family: sans-serif; /* 1 */ 246 | font-size: 100%; /* 1 */ 247 | line-height: 1.15; /* 1 */ 248 | margin: 0; /* 2 */ 249 | } 250 | 251 | /** 252 | * Show the overflow in IE. 253 | * 1. Show the overflow in Edge. 254 | */ 255 | 256 | button, 257 | input { /* 1 */ 258 | overflow: visible; 259 | } 260 | 261 | /** 262 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 263 | * 1. Remove the inheritance of text transform in Firefox. 264 | */ 265 | 266 | button, 267 | select { /* 1 */ 268 | text-transform: none; 269 | } 270 | 271 | /** 272 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 273 | * controls in Android 4. 274 | * 2. Correct the inability to style clickable types in iOS and Safari. 275 | */ 276 | 277 | button, 278 | html [type="button"], /* 1 */ 279 | [type="reset"], 280 | [type="submit"] { 281 | -webkit-appearance: button; /* 2 */ 282 | } 283 | 284 | /** 285 | * Remove the inner border and padding in Firefox. 286 | */ 287 | 288 | button::-moz-focus-inner, 289 | [type="button"]::-moz-focus-inner, 290 | [type="reset"]::-moz-focus-inner, 291 | [type="submit"]::-moz-focus-inner { 292 | border-style: none; 293 | padding: 0; 294 | } 295 | 296 | /** 297 | * Restore the focus styles unset by the previous rule. 298 | */ 299 | 300 | button:-moz-focusring, 301 | [type="button"]:-moz-focusring, 302 | [type="reset"]:-moz-focusring, 303 | [type="submit"]:-moz-focusring { 304 | outline: 1px dotted ButtonText; 305 | } 306 | 307 | /** 308 | * Correct the padding in Firefox. 309 | */ 310 | 311 | fieldset { 312 | padding: 0.35em 0.75em 0.625em; 313 | } 314 | 315 | /** 316 | * 1. Correct the text wrapping in Edge and IE. 317 | * 2. Correct the color inheritance from `fieldset` elements in IE. 318 | * 3. Remove the padding so developers are not caught out when they zero out 319 | * `fieldset` elements in all browsers. 320 | */ 321 | 322 | legend { 323 | box-sizing: border-box; /* 1 */ 324 | color: inherit; /* 2 */ 325 | display: table; /* 1 */ 326 | max-width: 100%; /* 1 */ 327 | padding: 0; /* 3 */ 328 | white-space: normal; /* 1 */ 329 | } 330 | 331 | /** 332 | * 1. Add the correct display in IE 9-. 333 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. 334 | */ 335 | 336 | progress { 337 | display: inline-block; /* 1 */ 338 | vertical-align: baseline; /* 2 */ 339 | } 340 | 341 | /** 342 | * Remove the default vertical scrollbar in IE. 343 | */ 344 | 345 | textarea { 346 | overflow: auto; 347 | } 348 | 349 | /** 350 | * 1. Add the correct box sizing in IE 10-. 351 | * 2. Remove the padding in IE 10-. 352 | */ 353 | 354 | [type="checkbox"], 355 | [type="radio"] { 356 | box-sizing: border-box; /* 1 */ 357 | padding: 0; /* 2 */ 358 | } 359 | 360 | /** 361 | * Correct the cursor style of increment and decrement buttons in Chrome. 362 | */ 363 | 364 | [type="number"]::-webkit-inner-spin-button, 365 | [type="number"]::-webkit-outer-spin-button { 366 | height: auto; 367 | } 368 | 369 | /** 370 | * 1. Correct the odd appearance in Chrome and Safari. 371 | * 2. Correct the outline style in Safari. 372 | */ 373 | 374 | [type="search"] { 375 | -webkit-appearance: textfield; /* 1 */ 376 | outline-offset: -2px; /* 2 */ 377 | } 378 | 379 | /** 380 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. 381 | */ 382 | 383 | [type="search"]::-webkit-search-cancel-button, 384 | [type="search"]::-webkit-search-decoration { 385 | -webkit-appearance: none; 386 | } 387 | 388 | /** 389 | * 1. Correct the inability to style clickable types in iOS and Safari. 390 | * 2. Change font properties to `inherit` in Safari. 391 | */ 392 | 393 | ::-webkit-file-upload-button { 394 | -webkit-appearance: button; /* 1 */ 395 | font: inherit; /* 2 */ 396 | } 397 | 398 | /* Interactive 399 | ========================================================================== */ 400 | 401 | /* 402 | * Add the correct display in IE 9-. 403 | * 1. Add the correct display in Edge, IE, and Firefox. 404 | */ 405 | 406 | details, /* 1 */ 407 | menu { 408 | display: block; 409 | } 410 | 411 | /* 412 | * Add the correct display in all browsers. 413 | */ 414 | 415 | summary { 416 | display: list-item; 417 | } 418 | 419 | /* Scripting 420 | ========================================================================== */ 421 | 422 | /** 423 | * Add the correct display in IE 9-. 424 | */ 425 | 426 | canvas { 427 | display: inline-block; 428 | } 429 | 430 | /** 431 | * Add the correct display in IE. 432 | */ 433 | 434 | template { 435 | display: none; 436 | } 437 | 438 | /* Hidden 439 | ========================================================================== */ 440 | 441 | /** 442 | * Add the correct display in IE 10-. 443 | */ 444 | 445 | [hidden] { 446 | display: none; 447 | } 448 | -------------------------------------------------------------------------------- /web/static/css/_roboto.scss: -------------------------------------------------------------------------------- 1 | /* roboto-100 - latin */ 2 | @font-face { 3 | font-family: 'Roboto'; 4 | font-style: normal; 5 | font-weight: 100; 6 | src: url('../fonts/roboto-v18-latin-100.eot'); /* IE9 Compat Modes */ 7 | src: local('Roboto Thin'), local('Roboto-Thin'), 8 | url('../fonts/roboto-v18-latin-100.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 9 | url('../fonts/roboto-v18-latin-100.woff2') format('woff2'), /* Super Modern Browsers */ 10 | url('../fonts/roboto-v18-latin-100.woff') format('woff'), /* Modern Browsers */ 11 | url('../fonts/roboto-v18-latin-100.ttf') format('truetype'), /* Safari, Android, iOS */ 12 | url('../fonts/roboto-v18-latin-100.svg#Roboto') format('svg'); /* Legacy iOS */ 13 | } 14 | 15 | /* roboto-regular - latin */ 16 | @font-face { 17 | font-family: 'Roboto'; 18 | font-style: normal; 19 | font-weight: 400; 20 | src: url('../fonts/roboto-v18-latin-regular.eot'); /* IE9 Compat Modes */ 21 | src: local('Roboto'), local('Roboto-Regular'), 22 | url('../fonts/roboto-v18-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 23 | url('../fonts/roboto-v18-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 24 | url('../fonts/roboto-v18-latin-regular.woff') format('woff'), /* Modern Browsers */ 25 | url('../fonts/roboto-v18-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 26 | url('../fonts/roboto-v18-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */ 27 | } 28 | -------------------------------------------------------------------------------- /web/static/css/style.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}@font-face{font-family:'Roboto';font-style:normal;font-weight:100;src:url("../fonts/roboto-v18-latin-100.eot");src:local("Roboto Thin"),local("Roboto-Thin"),url("../fonts/roboto-v18-latin-100.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto-v18-latin-100.woff2") format("woff2"),url("../fonts/roboto-v18-latin-100.woff") format("woff"),url("../fonts/roboto-v18-latin-100.ttf") format("truetype"),url("../fonts/roboto-v18-latin-100.svg#Roboto") format("svg")}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:url("../fonts/roboto-v18-latin-regular.eot");src:local("Roboto"),local("Roboto-Regular"),url("../fonts/roboto-v18-latin-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto-v18-latin-regular.woff2") format("woff2"),url("../fonts/roboto-v18-latin-regular.woff") format("woff"),url("../fonts/roboto-v18-latin-regular.ttf") format("truetype"),url("../fonts/roboto-v18-latin-regular.svg#Roboto") format("svg")}*{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none}html,body{font-family:'Roboto', sans-serif;background-color:#656565;height:100%;font-size:16px}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 48em){.container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;height:100%}}.top{color:#000;width:100%;text-align:center;-webkit-transition:color 230ms ease-out, text-shadow 230ms ease-out;transition:color 230ms ease-out, text-shadow 230ms ease-out;z-index:2}@media (min-width: 62em){.top{top:10%}}@media (min-width: 75em){.top{top:5%}}.top h1{font-size:2.5em;text-align:center;margin:0;color:inherit}@media (min-width: 62em){.top h1{font-size:5em}}.logo-container{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%}@media (min-width: 48em){.logo-container{width:33.3333%;-webkit-transform:translateX(0);transform:translateX(0)}}.logo-container:hover>.logo>img{-webkit-transform:scale(1.05);transform:scale(1.05)}.logo-container .logo{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;padding:50px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-decoration:none;z-index:2}.logo-container .logo>img{max-height:200px;height:100%;width:100%;margin:0 auto;-webkit-transition:-webkit-transform 120ms ease-out;transition:-webkit-transform 120ms ease-out;transition:transform 120ms ease-out;transition:transform 120ms ease-out, -webkit-transform 120ms ease-out}.logo-container .logo>span{display:block;color:#fff;font-size:3em;font-weight:100;text-align:center;margin:10px 0;text-shadow:1px 2px 4px rgba(0,0,0,0.5)}.logo-container .logo>p{text-align:center;text-shadow:1px 1px 4px rgba(0,0,0,0.8);font-weight:400}.rg.logo-container .logo{color:#167130}.sg.logo-container .logo{color:#ffd943}.gg.logo-container .logo{color:#9975e1}.gg.logo-container .logo>p{text-shadow:1px 1px 4px rgba(255,255,255,0.8)}.logo-container>.bg-blur{position:absolute;top:0;left:0;right:0;bottom:0;background-position:center;background-size:cover;overflow:hidden;text-align:center}.logo-container>.bg-blur::before{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;z-index:1}.rg.logo-container>.bg-blur::before{background:rgba(22,113,48,0.15)}.sg.logo-container>.bg-blur::before{background:rgba(255,217,67,0.15)}.gg.logo-container>.bg-blur::before{background:rgba(106,77,165,0.15)}.logo-container>.bg-blur>img{position:absolute;-o-object-fit:cover;object-fit:cover;-webkit-filter:blur(25px);filter:blur(25px);left:-35%}@media (min-width: 48em){.logo-container>.bg-blur>img{left:0;-webkit-animation:screenshotScroll 170s ease infinite;animation:screenshotScroll 170s ease infinite}}@-webkit-keyframes screenshotScroll{0%{-webkit-transform:translateX(-30%);transform:translateX(-30%)}25%{-webkit-transform:translateX(-65%);transform:translateX(-65%)}50%{-webkit-transform:translateX(-5%);transform:translateX(-5%)}100%{-webkit-transform:translateX(-30%);transform:translateX(-30%)}}@keyframes screenshotScroll{0%{-webkit-transform:translateX(-30%);transform:translateX(-30%)}25%{-webkit-transform:translateX(-65%);transform:translateX(-65%)}50%{-webkit-transform:translateX(-5%);transform:translateX(-5%)}100%{-webkit-transform:translateX(-30%);transform:translateX(-30%)}}.btn{display:none;width:100%;height:100px;color:#fff;text-align:center;background:#f8f891;font-size:3em;line-height:1.7em;background:-webkit-gradient(linear, left top, left bottom, from(#f0f050), to(#f4dd00));background:linear-gradient(to bottom, #f0f050, #f4dd00);text-shadow:1px 2px 4px rgba(0,0,0,0.55)}.btn.god{background:-webkit-gradient(linear, left top, left bottom, from(#6a4da5), to(#6a4da5));background:linear-gradient(to bottom, #6a4da5, #6a4da5)} 2 | /*# sourceMappingURL=style.css.map */ -------------------------------------------------------------------------------- /web/static/css/style.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "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", 4 | "sources": ["_normalize.scss","_roboto.scss","style.scss","_mq.scss"], 5 | "names": [], 6 | "file": "style.css" 7 | } 8 | -------------------------------------------------------------------------------- /web/static/css/style.scss: -------------------------------------------------------------------------------- 1 | @import 'normalize'; 2 | @import 'roboto'; 3 | @import 'mq'; 4 | 5 | $mq-breakpoints: ( 6 | xs: 576px, 7 | sm: 768px, 8 | md: 992px, 9 | lg: 1200px 10 | ); 11 | 12 | * { 13 | box-sizing: border-box; 14 | outline: none; 15 | } 16 | 17 | html, body { 18 | font-family: 'Roboto', sans-serif; 19 | background-color: #656565; 20 | height: 100%; 21 | font-size: 16px; 22 | } 23 | 24 | .container { 25 | display: flex; 26 | flex-direction: column; 27 | justify-content: center; 28 | align-items: center; 29 | flex-wrap: wrap; 30 | @include mq($from: sm) { 31 | flex-direction: row; 32 | flex-wrap: nowrap; 33 | height: 100%; 34 | } 35 | } 36 | 37 | .top { 38 | color: #000; 39 | width: 100%; 40 | text-align: center; 41 | transition: color 230ms ease-out, text-shadow 230ms ease-out; 42 | z-index: 2; 43 | @include mq($from: md) { 44 | top: 10%; 45 | } 46 | @include mq($from: lg) { 47 | top: 5%; 48 | } 49 | h1 { 50 | font-size: 2.5em; 51 | text-align: center; 52 | margin: 0; 53 | color: inherit; 54 | @include mq($from: md) { 55 | font-size: 5em; 56 | } 57 | } 58 | } 59 | 60 | .logo-container { 61 | display: flex; 62 | position: relative; 63 | flex-direction: column; 64 | height: 100%; 65 | width: 100%; 66 | @include mq($from: sm) { 67 | width: 33.3333%; 68 | transform: translateX(0); // Reduce 1px width flicker. Still has a 1px black vertical line :( 69 | } 70 | &:hover { 71 | > .logo > img { 72 | transform: scale(1.05); 73 | } 74 | } 75 | .logo { 76 | display: flex; 77 | height: 100%; 78 | padding: 50px; 79 | flex-direction: column; 80 | justify-content: center; 81 | text-decoration: none; 82 | z-index: 2; 83 | > img { 84 | max-height: 200px; 85 | height: 100%; 86 | width: 100%; 87 | margin: 0 auto; 88 | transition: transform 120ms ease-out; 89 | @include mq($from: sm) { 90 | 91 | } 92 | } 93 | > span { 94 | display: block; 95 | color: #fff; 96 | font-size: 3em; 97 | font-weight: 100; 98 | text-align: center; 99 | margin: 10px 0; 100 | text-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); 101 | @include mq($from: sm) { 102 | 103 | } 104 | } 105 | > p { 106 | text-align: center; 107 | text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.8); 108 | font-weight: 400; 109 | } 110 | @at-root { 111 | .rg#{&} { 112 | color: #167130; 113 | } 114 | .sg#{&} { 115 | color: #ffd943; 116 | } 117 | .gg#{&} { 118 | color: #9975e1; 119 | > p { 120 | text-shadow: 1px 1px 4px rgba(255, 255, 255, 0.8); 121 | } 122 | } 123 | } 124 | } 125 | > .bg-blur { 126 | position: absolute; 127 | top: 0; 128 | left: 0; 129 | right: 0; 130 | bottom: 0; 131 | background-position: center; 132 | background-size: cover; 133 | overflow: hidden; 134 | text-align: center; 135 | &::before { 136 | content: ''; 137 | display: block; 138 | position: absolute; 139 | top: 0; 140 | left: 0; 141 | right: 0; 142 | bottom: 0; 143 | z-index: 1; 144 | @at-root { 145 | .rg#{&} { 146 | background: rgba(#167130, .15); 147 | } 148 | .sg#{&} { 149 | background: rgba(#ffd943, .15); 150 | } 151 | .gg#{&} { 152 | background: rgba(#6a4da5, .15); 153 | } 154 | } 155 | } 156 | > img { 157 | position: absolute; 158 | object-fit: cover; 159 | filter: blur(25px); 160 | left: -35%; 161 | @include mq($from: sm) { 162 | left: 0; 163 | animation: screenshotScroll 170s ease infinite; 164 | } 165 | } 166 | } 167 | } 168 | 169 | @keyframes screenshotScroll { 170 | 0% {transform: translateX(-30%);} 171 | 25% {transform: translateX(-65%);} 172 | 50% {transform: translateX(-5%);} 173 | 100% {transform: translateX(-30%);} 174 | } 175 | 176 | .btn { 177 | display: none; 178 | width: 100%; 179 | height: 100px; 180 | color: #fff; 181 | text-align: center; 182 | background: #f8f891; 183 | font-size: 3em; 184 | line-height: 1.7em; 185 | background: linear-gradient(to bottom, #f0f050, #f4dd00); 186 | text-shadow: 1px 2px 4px rgba(0, 0, 0, 0.55); 187 | &.god { 188 | background: linear-gradient(to bottom, #6a4da5, #6a4da5); 189 | } 190 | } -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-100.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-100.eot -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-100.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 18 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 35 | 36 | 38 | 40 | 41 | 43 | 45 | 46 | 48 | 50 | 51 | 52 | 53 | 54 | 55 | 57 | 60 | 61 | 63 | 65 | 66 | 67 | 68 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 79 | 80 | 82 | 83 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 100 | 102 | 104 | 106 | 108 | 109 | 111 | 112 | 113 | 115 | 116 | 117 | 119 | 120 | 122 | 124 | 126 | 127 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 144 | 146 | 148 | 149 | 150 | 153 | 154 | 157 | 159 | 160 | 161 | 162 | 165 | 166 | 168 | 169 | 170 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 180 | 181 | 182 | 184 | 187 | 189 | 190 | 191 | 192 | 194 | 196 | 198 | 199 | 201 | 202 | 203 | 204 | 206 | 207 | 208 | 209 | 210 | 212 | 214 | 216 | 218 | 220 | 223 | 226 | 227 | 229 | 230 | 231 | 232 | 234 | 235 | 236 | 238 | 240 | 242 | 244 | 247 | 250 | 253 | 256 | 258 | 260 | 262 | 264 | 267 | 268 | 269 | 270 | 271 | 273 | 275 | 277 | 279 | 281 | 284 | 287 | 288 | 290 | 291 | 292 | 293 | 295 | 296 | 298 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-100.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-100.ttf -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-100.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-100.woff -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-100.woff2 -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-regular.eot -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 18 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 35 | 36 | 37 | 39 | 40 | 42 | 44 | 45 | 47 | 49 | 50 | 51 | 52 | 53 | 54 | 56 | 59 | 60 | 62 | 64 | 65 | 66 | 67 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 78 | 79 | 81 | 82 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 99 | 100 | 102 | 103 | 105 | 106 | 108 | 109 | 110 | 111 | 112 | 113 | 115 | 116 | 118 | 120 | 122 | 123 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 140 | 142 | 144 | 145 | 146 | 149 | 150 | 153 | 155 | 156 | 157 | 158 | 161 | 162 | 164 | 165 | 166 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 176 | 177 | 178 | 180 | 183 | 185 | 186 | 187 | 188 | 190 | 192 | 194 | 195 | 197 | 198 | 199 | 200 | 202 | 203 | 204 | 205 | 206 | 207 | 209 | 211 | 213 | 215 | 218 | 221 | 222 | 224 | 225 | 226 | 228 | 230 | 231 | 232 | 234 | 236 | 238 | 240 | 243 | 246 | 249 | 252 | 254 | 256 | 258 | 260 | 262 | 263 | 264 | 265 | 266 | 268 | 270 | 272 | 274 | 276 | 279 | 281 | 283 | 285 | 286 | 287 | 288 | 290 | 291 | 293 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-regular.ttf -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-regular.woff -------------------------------------------------------------------------------- /web/static/fonts/roboto-v18-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/fonts/roboto-v18-latin-regular.woff2 -------------------------------------------------------------------------------- /web/static/img/favicon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/img/favicon-16.png -------------------------------------------------------------------------------- /web/static/img/favicon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/img/favicon-32.png -------------------------------------------------------------------------------- /web/static/img/favicon-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/img/favicon-96.png -------------------------------------------------------------------------------- /web/static/img/ggbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/img/ggbg.png -------------------------------------------------------------------------------- /web/static/img/god.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/static/img/rg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/static/img/rgbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/img/rgbg.png -------------------------------------------------------------------------------- /web/static/img/sg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/static/img/sgbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Good-Old-Downloads/portal/c99baff51b410093687e884aa104a2c4685f49b7/web/static/img/sgbg.png --------------------------------------------------------------------------------