From 5bde88bba016cf9b533242f5d1bc931a6813f0fb Mon Sep 17 00:00:00 2001 From: rstacruz Date: Mon, 22 Jun 2020 14:44:11 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=2051924?= =?UTF-8?q?e42bd9bf547d1e6fc74344b0d16eb398637=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 101.html | 718 + 404.html | 178 + absinthe.html | 585 + activeadmin.html | 578 + adb.html | 678 + analytics.html | 470 + analytics.js.html | 483 + angularjs.html | 287 + animated_gif.html | 525 + ansi.html | 244 + ansible-examples.html | 483 + ansible-guide.html | 569 + ansible-modules.html | 692 + ansible-roles.html | 495 + ansible.html | 307 + appcache.html | 521 + applescript.html | 498 + applinks.html | 231 + arel.html | 315 + assets/2015/style.css | 508 + assets/2017/style.css | 621 + assets/css/style.css | 2883 +++ assets/favicon.png | Bin 0 -> 26655 bytes assets/packed/app.css | 3 + assets/packed/app.js | 127 + assets/print.css | 48 + assets/script.js | 43 + assets/style.css | 292 + atom.html | 747 + awesome-redux.html | 640 + awscli.html | 568 + backbone.html | 744 + badges.html | 313 + bash.html | 1502 ++ blessed.html | 546 + bluebird.html | 639 + bolt.html | 446 + bookshelf-contrib.html | 222 + bookshelf-contrib.md | 21 + bookshelf.html | 241 + bootstrap.html | 634 + brew.html | 11 + browser-sync.html | 223 + browserify.html | 249 + brunch.html | 307 + bulma.html | 664 + bundler.html | 265 + c_preprocessor.html | 257 + camp.html | 612 + canvas.html | 621 + capybara.html | 840 + cask-index.html | 2199 ++ chai.html | 664 + cheatsheet-styles.html | 1057 + chef.html | 596 + chunky_png.html | 545 + cidr.html | 461 + circle.html | 295 + co.html | 566 + command_line.html | 610 + commander-js.html | 11 + commander.js.html | 238 + composer.html | 634 + cordova.html | 230 + cron.html | 572 + crypto.html | 214 + csharp7.html | 615 + css-animation.html | 11 + css-antialias.html | 533 + css-background.html | 11 + css-flexbox.html | 667 + css-font.html | 11 + css-grid.html | 725 + css-selectors.html | 11 + css-system-font-stack.html | 572 + css-tricks.html | 596 + css.html | 1053 + cssnext.html | 653 + curl.html | 574 + data/search-index.json | 4140 ++++ date.html | 11 + datetime.html | 1046 + deis.html | 560 + deku.html | 246 + deku@1.html | 280 + deprecated/bower-api.html | 531 + devise.html | 337 + divshot.html | 317 + do.html | 303 + docker-compose.html | 700 + docker-compose.yml | 19 + docker.html | 662 + dockerfile.html | 580 + dom-range.html | 260 + dom-selection.html | 246 + ec2.html | 281 + editorconfig.html | 570 + elixir-metaprogramming.html | 228 + elixir.html | 1185 + emacs.html | 226 + ember.html | 277 + emmet.html | 654 + enzyme.html | 752 + enzyme@2.html | 622 + es2015.html | 11 + es2016.html | 11 + es2017.html | 11 + es2018.html | 11 + es6.html | 984 + ets.html | 555 + expect.js.html | 11 + expectjs.html | 593 + express.html | 292 + exunit.html | 597 + factory_bot.html | 686 + factory_girl.html | 11 + fastify.html | 783 + fetch.html | 11 + ffaker.html | 984 + ffmpeg.html | 562 + figlet.html | 2508 +++ find.html | 579 + firebase.html | 585 + firefox.html | 372 + fish-shell.html | 752 + fitness/general.html | 531 + fitness/micronutrients.html | 609 + fitness/phat.html | 755 + flashlight.html | 556 + flexbox.html | 11 + flow.html | 885 + flowtype.html | 11 + flux.html | 383 + flynn.html | 593 + freenode.html | 216 + frequency-separation-retouching.html | 535 + gh-pages.html | 485 + git-branch.html | 584 + git-extras.html | 273 + git-log-format.html | 764 + git-log.html | 588 + git-revisions.html | 770 + git-tricks.html | 357 + gmail.html | 227 + gnupg.html | 779 + go.html | 943 + goby.html | 1805 ++ google-webfonts.html | 214 + google_analytics.html | 234 + gpg.html | 11 + gpgconf.html | 11 + graphql.html | 739 + gremlins.html | 584 + gulp.html | 340 + gutom.html | 11 + haml.html | 543 + handlebars-js.html | 11 + handlebars.js.html | 529 + harvey-js.html | 11 + harvey.js.html | 535 + heroku.html | 670 + hledger.html | 358 + homebrew.html | 650 + html-email.html | 631 + html-input.html | 675 + html-meta.html | 633 + html-microformats.html | 517 + html-share.html | 520 + html.html | 620 + http-status.html | 850 + httpie.html | 582 + ie.html | 1152 + ie_bugs.html | 532 + imagemagick.html | 237 + immutable-js.html | 11 + immutable.js.html | 541 + index.html | 28526 +++++++++++++++++++++++++ index@2016.html | 23568 ++++++++++++++++++++ inkscape.html | 571 + inline-docs.html | 241 + ios-provision.html | 306 + jade.html | 11 + jasmine.html | 677 + jekyll-github.html | 575 + jekyll.html | 1240 ++ jest.html | 839 + jquery-cdn.html | 208 + jquery.html | 557 + js-appcache.html | 531 + js-array.html | 583 + js-date.html | 726 + js-fetch.html | 584 + js-lazy.html | 563 + js-model.html | 577 + js-speech.html | 520 + jscoverage.html | 547 + jsdoc.html | 663 + jshint.html | 635 + knex.html | 941 + koa.html | 289 + kotlin.html | 776 + kramdown.html | 267 + layout-thrashing.html | 587 + ledger-csv.html | 510 + ledger-examples.html | 248 + ledger-format.html | 256 + ledger-periods.html | 259 + ledger-query.html | 552 + ledger.html | 754 + less.html | 244 + licenses.html | 607 + linux.html | 233 + lodash.html | 712 + lua.html | 515 + machinist.html | 253 + macos-mouse-acceleration.html | 480 + make-assets.html | 254 + makefile.html | 634 + man.html | 552 + markdown.html | 608 + meow.html | 557 + meta-tags.html | 587 + middleman.html | 290 + minimist.html | 576 + minitest.html | 320 + mixpanel.html | 471 + mobx.html | 620 + mocha-blanket.html | 560 + mocha-html.html | 229 + mocha-tdd.html | 250 + mocha.html | 247 + modella.html | 612 + modernizr.html | 267 + moment.html | 910 + mongodb.html | 209 + mysql.html | 703 + ncftp.html | 528 + netlify.toml | 16 + nock.html | 525 + nocode.html | 514 + nodejs-assert.html | 219 + nodejs-fs.html | 263 + nodejs-path.html | 220 + nodejs-process.html | 244 + nodejs-stream.html | 621 + nodejs.html | 251 + nopt.html | 247 + npm.html | 695 + org-mode.html | 695 + osx.html | 524 + package.html | 11 + pacman.html | 327 + parsimmon.html | 250 + parsley.html | 762 + pass.html | 555 + passenger.html | 213 + perl-pie.html | 216 + ph-food-delivery.html | 711 + phoenix-conn.html | 643 + phoenix-ecto.html | 729 + phoenix-ecto@1.2.html | 363 + phoenix-ecto@1.3.html | 11 + phoenix-migrations.html | 594 + phoenix-routing.html | 628 + phoenix.html | 625 + phoenix@1.2.html | 533 + plantuml.html | 304 + pm2.html | 697 + polyfill.io.html | 542 + postgresql-json.html | 668 + postgresql.html | 227 + powerline.txt | 14 + premailer.html | 213 + projectionist.html | 297 + promise.html | 251 + pry.html | 346 + psdrb.html | 603 + pug.html | 668 + python.html | 362 + qjs.html | 280 + qunit.html | 234 + rack-test.html | 523 + ractive.html | 452 + rails-controllers.html | 368 + rails-features.html | 214 + rails-forms.html | 334 + rails-gems.html | 225 + rails-helpers.html | 307 + rails-i18n.html | 450 + rails-migrations.html | 333 + rails-models.html | 997 + rails-plugins.html | 351 + rails-routes.html | 421 + rails-tricks.html | 272 + rails.html | 357 + rake.html | 527 + rbenv.html | 652 + rdoc.html | 597 + react-router.html | 274 + react.html | 1394 ++ react@0.14.html | 950 + redirects.json | 1 + redux.html | 666 + regexp.html | 745 + rename.html | 557 + resolutions.html | 615 + rest-api.html | 571 + riot.html | 303 + robots.txt | 2 + rollup.html | 692 + ronn.html | 725 + rspec-rails.html | 338 + rspec.html | 383 + rst.html | 257 + rsync.html | 582 + rtorrent.html | 641 + rubiks.html | 235 + ruby.html | 222 + ruby21.html | 228 + rubygems.html | 221 + sass.html | 845 + saucelabs.html | 544 + scp.html | 530 + sed.html | 539 + semver.html | 737 + sequel.html | 624 + sequelize.html | 264 + sh-pipes.html | 518 + sh.html | 11 + shelljs.html | 630 + siege.html | 232 + simple_form.html | 213 + sinon-chai.html | 228 + sinon.html | 609 + sitemap.xml | 382 + sketch.html | 739 + slim.html | 611 + social-images.html | 267 + spacemacs.html | 1007 + spine.html | 393 + spreadsheet.html | 240 + sql-join.html | 523 + stencil.html | 705 + strftime.html | 700 + stylus.html | 890 + sublime-text.html | 623 + superagent.html | 259 + tabular.html | 636 + tape.html | 239 + textile.html | 665 + tig.html | 716 + tmux.html | 404 + tomdoc.html | 565 + top.html | 563 + travis-gh-pages.html | 256 + travis.html | 321 + typescript.html | 391 + ubuntu.html | 224 + umdjs.html | 260 + underscore-string.html | 298 + unicode.html | 307 + vagrant.html | 542 + vagrantfile.html | 625 + vainglory.html | 943 + vim-diff.html | 623 + vim-digraphs.html | 533 + vim-easyalign.html | 321 + vim-help.html | 689 + vim-rails.html | 450 + vim-unite.html | 581 + vim.html | 1582 ++ vimscript-functions.html | 419 + vimscript-snippets.html | 244 + vimscript.html | 1154 + virtual-dom.html | 225 + vows.html | 255 + vscode.html | 734 + vue.html | 881 + vue@1.0.28.html | 609 + watchexec.html | 586 + watchman.html | 528 + web-workers.html | 554 + webpack.html | 697 + weechat.html | 604 + weinre.html | 220 + wip/intl-datetime.html | 543 + wip/php.html | 517 + xpath.html | 1214 ++ yaml.html | 531 + yargs.html | 272 + yarn.html | 617 + znc.html | 235 + zombie.html | 225 + zsh.html | 602 + 394 files changed, 247843 insertions(+) create mode 100644 101.html create mode 100644 404.html create mode 100644 absinthe.html create mode 100644 activeadmin.html create mode 100644 adb.html create mode 100644 analytics.html create mode 100644 analytics.js.html create mode 100644 angularjs.html create mode 100644 animated_gif.html create mode 100644 ansi.html create mode 100644 ansible-examples.html create mode 100644 ansible-guide.html create mode 100644 ansible-modules.html create mode 100644 ansible-roles.html create mode 100644 ansible.html create mode 100644 appcache.html create mode 100644 applescript.html create mode 100644 applinks.html create mode 100644 arel.html create mode 100644 assets/2015/style.css create mode 100644 assets/2017/style.css create mode 100644 assets/css/style.css create mode 100644 assets/favicon.png create mode 100644 assets/packed/app.css create mode 100644 assets/packed/app.js create mode 100644 assets/print.css create mode 100644 assets/script.js create mode 100644 assets/style.css create mode 100644 atom.html create mode 100644 awesome-redux.html create mode 100644 awscli.html create mode 100644 backbone.html create mode 100644 badges.html create mode 100644 bash.html create mode 100644 blessed.html create mode 100644 bluebird.html create mode 100644 bolt.html create mode 100644 bookshelf-contrib.html create mode 100644 bookshelf-contrib.md create mode 100644 bookshelf.html create mode 100644 bootstrap.html create mode 100644 brew.html create mode 100644 browser-sync.html create mode 100644 browserify.html create mode 100644 brunch.html create mode 100644 bulma.html create mode 100644 bundler.html create mode 100644 c_preprocessor.html create mode 100644 camp.html create mode 100644 canvas.html create mode 100644 capybara.html create mode 100644 cask-index.html create mode 100644 chai.html create mode 100644 cheatsheet-styles.html create mode 100644 chef.html create mode 100644 chunky_png.html create mode 100644 cidr.html create mode 100644 circle.html create mode 100644 co.html create mode 100644 command_line.html create mode 100644 commander-js.html create mode 100644 commander.js.html create mode 100644 composer.html create mode 100644 cordova.html create mode 100644 cron.html create mode 100644 crypto.html create mode 100644 csharp7.html create mode 100644 css-animation.html create mode 100644 css-antialias.html create mode 100644 css-background.html create mode 100644 css-flexbox.html create mode 100644 css-font.html create mode 100644 css-grid.html create mode 100644 css-selectors.html create mode 100644 css-system-font-stack.html create mode 100644 css-tricks.html create mode 100644 css.html create mode 100644 cssnext.html create mode 100644 curl.html create mode 100644 data/search-index.json create mode 100644 date.html create mode 100644 datetime.html create mode 100644 deis.html create mode 100644 deku.html create mode 100644 deku@1.html create mode 100644 deprecated/bower-api.html create mode 100644 devise.html create mode 100644 divshot.html create mode 100644 do.html create mode 100644 docker-compose.html create mode 100644 docker-compose.yml create mode 100644 docker.html create mode 100644 dockerfile.html create mode 100644 dom-range.html create mode 100644 dom-selection.html create mode 100644 ec2.html create mode 100644 editorconfig.html create mode 100644 elixir-metaprogramming.html create mode 100644 elixir.html create mode 100644 emacs.html create mode 100644 ember.html create mode 100644 emmet.html create mode 100644 enzyme.html create mode 100644 enzyme@2.html create mode 100644 es2015.html create mode 100644 es2016.html create mode 100644 es2017.html create mode 100644 es2018.html create mode 100644 es6.html create mode 100644 ets.html create mode 100644 expect.js.html create mode 100644 expectjs.html create mode 100644 express.html create mode 100644 exunit.html create mode 100644 factory_bot.html create mode 100644 factory_girl.html create mode 100644 fastify.html create mode 100644 fetch.html create mode 100644 ffaker.html create mode 100644 ffmpeg.html create mode 100644 figlet.html create mode 100644 find.html create mode 100644 firebase.html create mode 100644 firefox.html create mode 100644 fish-shell.html create mode 100644 fitness/general.html create mode 100644 fitness/micronutrients.html create mode 100644 fitness/phat.html create mode 100644 flashlight.html create mode 100644 flexbox.html create mode 100644 flow.html create mode 100644 flowtype.html create mode 100644 flux.html create mode 100644 flynn.html create mode 100644 freenode.html create mode 100644 frequency-separation-retouching.html create mode 100644 gh-pages.html create mode 100644 git-branch.html create mode 100644 git-extras.html create mode 100644 git-log-format.html create mode 100644 git-log.html create mode 100644 git-revisions.html create mode 100644 git-tricks.html create mode 100644 gmail.html create mode 100644 gnupg.html create mode 100644 go.html create mode 100644 goby.html create mode 100644 google-webfonts.html create mode 100644 google_analytics.html create mode 100644 gpg.html create mode 100644 gpgconf.html create mode 100644 graphql.html create mode 100644 gremlins.html create mode 100644 gulp.html create mode 100644 gutom.html create mode 100644 haml.html create mode 100644 handlebars-js.html create mode 100644 handlebars.js.html create mode 100644 harvey-js.html create mode 100644 harvey.js.html create mode 100644 heroku.html create mode 100644 hledger.html create mode 100644 homebrew.html create mode 100644 html-email.html create mode 100644 html-input.html create mode 100644 html-meta.html create mode 100644 html-microformats.html create mode 100644 html-share.html create mode 100644 html.html create mode 100644 http-status.html create mode 100644 httpie.html create mode 100644 ie.html create mode 100644 ie_bugs.html create mode 100644 imagemagick.html create mode 100644 immutable-js.html create mode 100644 immutable.js.html create mode 100644 index.html create mode 100644 index@2016.html create mode 100644 inkscape.html create mode 100644 inline-docs.html create mode 100644 ios-provision.html create mode 100644 jade.html create mode 100644 jasmine.html create mode 100644 jekyll-github.html create mode 100644 jekyll.html create mode 100644 jest.html create mode 100644 jquery-cdn.html create mode 100644 jquery.html create mode 100644 js-appcache.html create mode 100644 js-array.html create mode 100644 js-date.html create mode 100644 js-fetch.html create mode 100644 js-lazy.html create mode 100644 js-model.html create mode 100644 js-speech.html create mode 100644 jscoverage.html create mode 100644 jsdoc.html create mode 100644 jshint.html create mode 100644 knex.html create mode 100644 koa.html create mode 100644 kotlin.html create mode 100644 kramdown.html create mode 100644 layout-thrashing.html create mode 100644 ledger-csv.html create mode 100644 ledger-examples.html create mode 100644 ledger-format.html create mode 100644 ledger-periods.html create mode 100644 ledger-query.html create mode 100644 ledger.html create mode 100644 less.html create mode 100644 licenses.html create mode 100644 linux.html create mode 100644 lodash.html create mode 100644 lua.html create mode 100644 machinist.html create mode 100644 macos-mouse-acceleration.html create mode 100644 make-assets.html create mode 100644 makefile.html create mode 100644 man.html create mode 100644 markdown.html create mode 100644 meow.html create mode 100644 meta-tags.html create mode 100644 middleman.html create mode 100644 minimist.html create mode 100644 minitest.html create mode 100644 mixpanel.html create mode 100644 mobx.html create mode 100644 mocha-blanket.html create mode 100644 mocha-html.html create mode 100644 mocha-tdd.html create mode 100644 mocha.html create mode 100644 modella.html create mode 100644 modernizr.html create mode 100644 moment.html create mode 100644 mongodb.html create mode 100644 mysql.html create mode 100644 ncftp.html create mode 100644 netlify.toml create mode 100644 nock.html create mode 100644 nocode.html create mode 100644 nodejs-assert.html create mode 100644 nodejs-fs.html create mode 100644 nodejs-path.html create mode 100644 nodejs-process.html create mode 100644 nodejs-stream.html create mode 100644 nodejs.html create mode 100644 nopt.html create mode 100644 npm.html create mode 100644 org-mode.html create mode 100644 osx.html create mode 100644 package.html create mode 100644 pacman.html create mode 100644 parsimmon.html create mode 100644 parsley.html create mode 100644 pass.html create mode 100644 passenger.html create mode 100644 perl-pie.html create mode 100644 ph-food-delivery.html create mode 100644 phoenix-conn.html create mode 100644 phoenix-ecto.html create mode 100644 phoenix-ecto@1.2.html create mode 100644 phoenix-ecto@1.3.html create mode 100644 phoenix-migrations.html create mode 100644 phoenix-routing.html create mode 100644 phoenix.html create mode 100644 phoenix@1.2.html create mode 100644 plantuml.html create mode 100644 pm2.html create mode 100644 polyfill.io.html create mode 100644 postgresql-json.html create mode 100644 postgresql.html create mode 100644 powerline.txt create mode 100644 premailer.html create mode 100644 projectionist.html create mode 100644 promise.html create mode 100644 pry.html create mode 100644 psdrb.html create mode 100644 pug.html create mode 100644 python.html create mode 100644 qjs.html create mode 100644 qunit.html create mode 100644 rack-test.html create mode 100644 ractive.html create mode 100644 rails-controllers.html create mode 100644 rails-features.html create mode 100644 rails-forms.html create mode 100644 rails-gems.html create mode 100644 rails-helpers.html create mode 100644 rails-i18n.html create mode 100644 rails-migrations.html create mode 100644 rails-models.html create mode 100644 rails-plugins.html create mode 100644 rails-routes.html create mode 100644 rails-tricks.html create mode 100644 rails.html create mode 100644 rake.html create mode 100644 rbenv.html create mode 100644 rdoc.html create mode 100644 react-router.html create mode 100644 react.html create mode 100644 react@0.14.html create mode 100644 redirects.json create mode 100644 redux.html create mode 100644 regexp.html create mode 100644 rename.html create mode 100644 resolutions.html create mode 100644 rest-api.html create mode 100644 riot.html create mode 100644 robots.txt create mode 100644 rollup.html create mode 100644 ronn.html create mode 100644 rspec-rails.html create mode 100644 rspec.html create mode 100644 rst.html create mode 100644 rsync.html create mode 100644 rtorrent.html create mode 100644 rubiks.html create mode 100644 ruby.html create mode 100644 ruby21.html create mode 100644 rubygems.html create mode 100644 sass.html create mode 100644 saucelabs.html create mode 100644 scp.html create mode 100644 sed.html create mode 100644 semver.html create mode 100644 sequel.html create mode 100644 sequelize.html create mode 100644 sh-pipes.html create mode 100644 sh.html create mode 100644 shelljs.html create mode 100644 siege.html create mode 100644 simple_form.html create mode 100644 sinon-chai.html create mode 100644 sinon.html create mode 100644 sitemap.xml create mode 100644 sketch.html create mode 100644 slim.html create mode 100644 social-images.html create mode 100644 spacemacs.html create mode 100644 spine.html create mode 100644 spreadsheet.html create mode 100644 sql-join.html create mode 100644 stencil.html create mode 100644 strftime.html create mode 100644 stylus.html create mode 100644 sublime-text.html create mode 100644 superagent.html create mode 100644 tabular.html create mode 100644 tape.html create mode 100644 textile.html create mode 100644 tig.html create mode 100644 tmux.html create mode 100644 tomdoc.html create mode 100644 top.html create mode 100644 travis-gh-pages.html create mode 100644 travis.html create mode 100644 typescript.html create mode 100644 ubuntu.html create mode 100644 umdjs.html create mode 100644 underscore-string.html create mode 100644 unicode.html create mode 100644 vagrant.html create mode 100644 vagrantfile.html create mode 100644 vainglory.html create mode 100644 vim-diff.html create mode 100644 vim-digraphs.html create mode 100644 vim-easyalign.html create mode 100644 vim-help.html create mode 100644 vim-rails.html create mode 100644 vim-unite.html create mode 100644 vim.html create mode 100644 vimscript-functions.html create mode 100644 vimscript-snippets.html create mode 100644 vimscript.html create mode 100644 virtual-dom.html create mode 100644 vows.html create mode 100644 vscode.html create mode 100644 vue.html create mode 100644 vue@1.0.28.html create mode 100644 watchexec.html create mode 100644 watchman.html create mode 100644 web-workers.html create mode 100644 webpack.html create mode 100644 weechat.html create mode 100644 weinre.html create mode 100644 wip/intl-datetime.html create mode 100644 wip/php.html create mode 100644 xpath.html create mode 100644 yaml.html create mode 100644 yargs.html create mode 100644 yarn.html create mode 100644 znc.html create mode 100644 zombie.html create mode 100644 zsh.html diff --git a/101.html b/101.html new file mode 100644 index 000000000..18fd573cd --- /dev/null +++ b/101.html @@ -0,0 +1,718 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 101 cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+

101 is a JavaScript library for dealing with immutable data in a functional manner.

+ +
+ + +
+

Usage

+ +
const isObject = require('101/isObject')
+isObject({}) // → true
+
+ +

Every function is exposed as a module.

+ +

See: 101

+ +

Type checking

+ +
isObject({})
+isString('str')
+isRegExp(/regexp/)
+isBoolean(true)
+isEmpty({})
+isfunction(x => x)
+isInteger(10)
+isNumber(10.1)
+instanceOf(obj, 'string')
+
+ +

Objects

+ +

Example

+ +
let obj = {}
+
+ +

Update

+ +
obj = put(obj, 'user.name', 'John')
+// → { user: { name: 'John' } }
+
+ +

Read

+ +
pluck(name, 'user.name')
+// → 'John'
+
+ +

Delete

+ +
obj = del(obj, 'user')
+// → { }
+
+ +

Getting

+ +
pluck(state, 'user.profile.name')
+
+ +
pick(state, ['user', 'ui'])
+pick(state, /^_/)
+
+ +

pluck returns values, pick returns subsets of objects.

+ +

See: +pluck, +pick

+ +

Setting

+ +
put(state, 'user.profile.name', 'john')
+
+ +

See: +put

+ +

Deleting

+ +
del(state, 'user.profile')
+omit(state, ['user', 'data'])
+
+ +

omit is like del, but supports multiple keys to be deleted.

+ +

See: +omit, +del

+ +

Keypath check

+ +
hasKeypaths(state, ['user'])
+hasKeypaths(state, { 'user.profile.name': 'john' })
+
+ +

See: +hasKeypaths

+ +

Get values

+ +
values(state)
+
+ +

Functions

+ +

Simple functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
and(x, y)x && y
or(x, y)x || y
xor(x, y)!(!x && !y) && !(x && y)
equals(x, y)x === y
exists(x)!!x
not(x)!x
+ +

Useful for function composition.

+ +

See: +and, +equals, +exists

+ +

Composition

+ +
compose(f, g)       // x => f(g(x))
+curry(f)            // x => y => f(x, y)
+flip(f)             // f(x, y) --> f(y, x)
+
+ +

See: +compose, +curry, +flip

+ +

And/or

+ +
passAll(f, g)       // x => f(x) && g(x)
+passAny(f, g)       // x => f(x) || g(x)
+
+ +

See: +passAll, +passAny

+ +

Converge

+ +
converge(and, [pluck('a'), pluck('b')])(x)
+
+ +
// → and(pluck(x, 'a'), pluck(x, 'b'))
+
+ +

See: +converge

+ +

Arrays

+ +

Finding

+ +
find(list, x => x.y === 2)
+findIndex(list, x => ...)
+includes(list, 'item')
+last(list)
+
+ +
find(list, hasProps('id'))
+
+ +

Grouping

+ +
groupBy(list, 'id')
+indexBy(list, 'id')
+
+ +

Examples

+ +

Function composition

+ +
isFloat = passAll(isNumber, compose(isInteger, not))
+// n => isNumber(n) && not(isInteger(n))
+
+ +
function doStuff (object, options) { ... }
+
+doStuffForce = curry(flip(doStuff))({ force: true })
+
+ +

Reference

+ + + +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + diff --git a/404.html b/404.html new file mode 100644 index 000000000..ec10185f2 --- /dev/null +++ b/404.html @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Devhints.io cheatsheets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + diff --git a/absinthe.html b/absinthe.html new file mode 100644 index 000000000..037be2452 --- /dev/null +++ b/absinthe.html @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Absinthe cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+

Absinthe allows you to write GraphQL servers in Elixir.

+ +
+ + +
+

Introduction

+ +

Concepts

+ +
    +
  • Schema - The root. Defines what queries you can do, and what types they return.
  • +
  • Resolver - Functions that return data.
  • +
  • Type - A type definition describing the shape of the data you’ll return.
  • +
+ +

Plug

+ +

web/router.ex

+ +
defmodule Blog.Web.Router do
+  use Phoenix.Router
+
+  forward "/", Absinthe.Plug,
+    schema: Blog.Schema
+end
+
+ +

Absinthe is a Plug, and you pass it one Schema.

+ +

See: Our first query

+ +

Main concepts

+ +

Schema

+ +

web/schema.ex

+ +
defmodule Blog.Schema do
+  use Absinthe.Schema
+  import_types Blog.Schema.Types
+
+  query do
+    @desc "Get a list of blog posts"
+    field :posts, list_of(:post) do
+      resolve &Blog.PostResolver.all/2
+    end
+  end
+end
+
+ +

This schema will account for { posts { ··· } }. It returns a Type of :post, and delegates to a Resolver.

+ +

Resolver

+ +

web/resolvers/post_resolver.ex

+ +
defmodule Blog.PostResolver do
+  def all(_args, _info) do
+    {:ok, Blog.Repo.all(Blog.Post)}
+  end
+end
+
+ +

This is the function that the schema delegated the posts query to.

+ +

Type

+ +

web/schema/types.ex

+ +
defmodule Blog.Schema.Types do
+  use Absinthe.Schema.Notation
+
+  @desc "A blog post"
+  object :post do
+    field :id, :id
+    field :title, :string
+    field :body, :string
+  end
+end
+
+ +

This defines a type :post, which is used by the resolver.

+ +

Schema

+ +

Query arguments

+ +

GraphQL query

+ +
{ user(id: "1") { ··· } }
+
+ +

web/schema.ex

+ +
query do
+  field :user, type: :user do
+    arg :id, non_null(:id)
+    resolve &Blog.UserResolver.find/2
+  end
+end
+
+ +

Resolver

+ +
def find(%{id: id} = args, _info) do
+  ···
+end
+
+ +

See: Query arguments

+ +

Mutations

+ +

GraphQL query

+ +
{
+  mutation CreatePost {
+    post(title: "Hello") { id }
+  }
+}
+
+ +

web/schema.ex

+ +
mutation do
+  @desc "Create a post"
+  field :post, type: :post do
+    arg :title, non_null(:string)
+    resolve &Blog.PostResolver.create/2
+  end
+end
+
+ +

See: Mutations

+ +

References

+ + + +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + diff --git a/activeadmin.html b/activeadmin.html new file mode 100644 index 000000000..8d7fdd655 --- /dev/null +++ b/activeadmin.html @@ -0,0 +1,578 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ActiveAdmin cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Listing scopes

+ +

Allows you to filter listings by a certain scope.

+ +
scope :draft
+scope :for_approval
+
+ +
scope :public, if: ->{ current_admin_user.can?(...) }
+scope "Unapproved", :pending
+scope("Published") { |books| books.where(:published: true) }
+
+ + + +
filter :email
+filter :username
+
+ +

Custom actions

+ +

You can define custom actions for models.

+ +
before_filter only: [:show, :edit, :publish] do
+  @post = Post.find(params[:id])
+end
+
+ +

Make the route

+ +
member_action :publish, method: :put do
+  @post.publish!
+  redirect_to admin_posts_path, notice: "The post '#{@post}' has been published!"
+end
+
+ + + +
index do
+  column do |post|
+    link_to 'Publish', publish_admin_post_path(post), method: :put
+  end
+end
+
+ + + +
action_item only: [:edit, :show] do
+  @post = Post.find(params[:id])
+  link_to 'Publish', publish_admin_post_path(post), method: :put
+end
+
+ +

Columns

+ +
column :foo
+
+ +
column :title, sortable: :name do |post|
+  strong post.title
+end
+
+ +

Other helpers

+ +
status_tag "Done"           # Gray
+status_tag "Finished", :ok  # Green
+status_tag "You", :warn     # Orange
+status_tag "Failed", :error # Red
+
+ +

Disabling ‘new post’

+ +
ActiveAdmin.register Post do
+  actions :index, :edit
+  # or: config.clear_action_items!
+end
+
+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + diff --git a/adb.html b/adb.html new file mode 100644 index 000000000..a7d6229b3 --- /dev/null +++ b/adb.html @@ -0,0 +1,678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + adb (Android Debug Bridge) cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Device Basics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandDescription
adb devicesLists connected devices
adb devices -lLists connected devices and kind
adb rootRestarts adbd with root permissions
adb start-serverStarts the adb server
adb kill-serverKills the adb server
adb remountRemounts file system with read/write access
adb rebootReboots the device
adb reboot bootloaderReboots the device into fastboot
adb disable-verityReboots the device into fastboot
+ +

wait-for-device can be specified after adb to ensure that the command will run once the device is connected.

+ +

-s can be used to send the commands to a specific device when multiple are connected.

+ +

Examples

+ +
$ adb wait-for-device devices
+ List of devices attached
+ somedevice-1234 device
+ someotherdevice-1234 device
+
+ +
$ adb -s somedevice-1234 root
+
+ +

Logcat

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandDescription
adb logcatStarts printing log messages to stdout
adb logcat -gDisplays current log buffer sizes
adb logcat -G <size>Sets the buffer size (K or M)
adb logcat -cClears the log buffers
adb logcat *:VEnables ALL log messages (verbose)
adb logcat -f <filename>Dumps to specified file
+ +

Examples

+
$ adb logcat -G 16M
+$ adb logcat *:V > output.log
+
+ +

File Management

+ + + + + + + + + + + + + + + + + + +
CommandDescription
adb push <local> <remote>Copies the local to the device at remote
adb pull <remote> <local>Copies the remote from the device to local
+ +

Examples

+ +
$ echo "This is a test" > test.txt
+$ adb push  test.txt /sdcard/test.txt
+$ adb pull /sdcard/test.txt pulledTest.txt
+
+ +

Remote Shell

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandDescription
adb shell <command>Runs the specified command on device (most unix commands work here)
adb shell wm sizeDisplays the current screen resolution
adb shell wm size WxHSets the resolution to WxH
adb shell pm list packagesLists all installed packages
adb shell pm list packages -3Lists all installed 3rd-party packages
adb shell monkey -p app.package.nameStarts the specified package
+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + diff --git a/analytics.html b/analytics.html new file mode 100644 index 000000000..d4a527240 --- /dev/null +++ b/analytics.html @@ -0,0 +1,470 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Analytics libraries cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Mixpanel

+ +
mixpanel.identify('284');
+mixpanel.people.set({ $email: 'hi@gmail.com' });
+mixpanel.register({ age: 28, gender: 'male' }); /* set common properties */
+
+ + + +

Google Analytics’s analytics.js

+ +
ga('create', 'UA-XXXX-Y', 'auto');
+ga('create', 'UA-XXXX-Y', { userId: 'USER_ID' });
+
+ +
ga('send', 'pageview');
+ga('send', 'pageview', { 'dimension15': 'My custom dimension' });
+
+ + + +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + diff --git a/analytics.js.html b/analytics.js.html new file mode 100644 index 000000000..67871683c --- /dev/null +++ b/analytics.js.html @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google Analytics's analytics.js cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+

Google Analytics’s analytics.js is deprecated.

+ +
+ + +
+

Page view

+ +
ga('create', 'UA-XXXX-Y', 'auto')
+ga('create', 'UA-XXXX-Y', { userId: 'USER_ID' })
+
+ +
ga('send', 'pageview')
+ga('send', 'pageview', { 'dimension15': 'My custom dimension' })
+
+ +

Events

+ +
ga('send', 'event', 'button',  'click', {color: 'red'});
+
+ +
ga('send', 'event', 'button',  'click', 'nav buttons',  4);
+/*                  ^category  ^action  ^label          ^value */
+
+ +

Exceptions

+ +
ga('send', 'exception', {
+  exDescription: 'DatabaseError',
+  exFatal: false,
+  appName: 'myapp',
+  appVersion: '0.1.2'
+})
+
+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + diff --git a/angularjs.html b/angularjs.html new file mode 100644 index 000000000..0ad9616bb --- /dev/null +++ b/angularjs.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Angular.js cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+

+

Angular.js

+ + + +
+ +
+
    <html ng-app="nameApp">
+
+ +

Lists (ng-repeat)

+
    <ul ng-controller="MyListCtrl">
+      <li ng-repeat="phone in phones">
+        
+      </li>
+    </ul>
+
+ +

Model (ng-model)

+ +
    <select ng-model="orderProp">
+      <option value="name">Alphabetical</option>
+      <option value="age">Newest</option>
+    </select>
+
+ +

Defining a module

+
    App = angular.module('myApp', []);
+
+    App.controller('MyListCtrl', function ($scope) {
+      $scope.phones = [ ... ];
+    });
+
+ +

Controller with protection from minification

+
    App.controller('Name', [
+      '$scope',
+      '$http',
+      function ($scope, $http) {
+      }
+    ]);
+
+    a.c 'name', [
+      '$scope'
+      '$http'
+      ($scope, $http) ->
+    ]
+
+ +

Service

+
    App.service('NameService', function($http){
+      return {
+        get: function(){
+          return $http.get(url);
+        }
+      }
+    });
+
+

In controller you call with parameter and will use promises to return data from server.

+ +
    App.controller('controllerName',
+    function(NameService){
+      NameService.get()
+      .then(function(){})
+    })
+
+ +

Directive

+
    App.directive('name', function(){
+      return {
+        template: '<h1>Hello</h1>'
+      }
+    });
+
+ +

In HTML will use <name></name> to render your template <h1>Hello</h1>

+ +

HTTP

+
    App.controller('PhoneListCtrl', function ($scope, $http) {
+        $http.get('/data.json').success(function (data) {
+            $scope.phones = data;
+        })
+    });
+
+

References:

+ +
    +
  • https://github.com/angular/angular-seed
  • +
  • https://angularjs.org/
  • +
+ +
+ + + + +
+
+ +
+
+

+ Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. + Suggestions and corrections? Send them in. + + I'm Rico Sta. Cruz. + Check out my Today I learned blog for more. +

+ + +

+ +

+ + +

+

+
+
+ + + + + + + + + + + + + diff --git a/animated_gif.html b/animated_gif.html new file mode 100644 index 000000000..9e486f70e --- /dev/null +++ b/animated_gif.html @@ -0,0 +1,525 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animated GIFs cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Animated GIFs

+ +

Convert MP4 to GIF

+ +
mkdir -p gif
+mplayer -ao null -vo gif89a:outdir=gif $INPUT
+mogrify -format gif *.png
+gifsicle --colors=256 --delay=4 --loopcount=0 --dither -O3 gif/*.gif > ${INPUT%.*}.gif
+rm -rf gif
+
+ +

You’ll need mplayer, imagemagick and gifsicle. This converts frames to .png, then turns them into an animated gif.

+ +

A given range

+ +
mplayer -ao null -ss 0:02:06 -endpos 0:05:00 -vo gif89a:outdir=gif videofile.mp4
+
+ +

See -ss and -endpos.

+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/ansi.html b/ansi.html new file mode 100644 index 000000000..9e781ab56 --- /dev/null +++ b/ansi.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ansi codes cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+

+

Ansi codes

+ + + +
+ +
+

Format

+ +
\033[#m
+
+ +

Where:

+ +
0      clear
+1      bold
+4      underline
+5      blink
+
+30-37  fg color
+40-47  bg color
+
+1K     clear line (to beginning of line)
+2K     clear line (entire line)
+2J     clear screen
+0;0H   move cursor to 0;0
+
+1A     move up 1 line
+
+ +

Colors

+ +
0      black
+1      red
+2      green
+3      yellow
+4      blue
+5      magenta
+6      cyan
+7      white
+
+ +

Stuff

+ +
hide_cursor() { printf "\e[?25l"; }
+show_cursor() { printf "\e[?25h"; }
+
+ +
+ + + + +
+
+ +
+
+

+ Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. + Suggestions and corrections? Send them in. + + I'm Rico Sta. Cruz. + Check out my Today I learned blog for more. +

+ + +

+ +

+ + +

+

+
+
+ + + + + + + + + + + + + diff --git a/ansible-examples.html b/ansible-examples.html new file mode 100644 index 000000000..e7b668191 --- /dev/null +++ b/ansible-examples.html @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ansible examples cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Examples

+ + + +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/ansible-guide.html b/ansible-guide.html new file mode 100644 index 000000000..f18ed2659 --- /dev/null +++ b/ansible-guide.html @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ansible quickstart cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Install Ansible

+ +
$ brew install ansible            # OSX
+$ [sudo] apt install ansible      # elsewhere
+
+ +

Ansible is available as a package in most OS’s.

+ +

See: Installation

+ +

Start your project

+ +
~$ mkdir setup
+~$ cd setup
+
+ +

Make a folder for your Ansible files.

+ +

See: Getting started

+ +

Creating your files

+ +

Inventory file

+ +

~/setup/hosts

+ +
[sites]
+127.0.0.1
+192.168.0.1
+192.168.0.2
+192.168.0.3
+
+ +

This is a list of hosts you want to manage, grouped into groups. (Hint: try +using localhost ansible_connection=local to deploy to your local machine.)

+ +

See: Intro to Inventory

+ +

Playbook

+ +

~/setup/playbook.yml

+ +
- hosts: 127.0.0.1
+  user: root
+  tasks:
+    - name: install nginx
+      apt: pkg=nginx state=present
+
+    - name: start nginx every bootup
+      service: name=nginx state=started enabled=yes
+
+    - name: do something in the shell
+      shell: echo hello > /tmp/abc.txt
+
+    - name: install bundler
+      gem: name=bundler state=latest
+
+ +

See: Intro to Playbooks

+ +

Running

+ +

Running ansible-playbook

+ +
~/setup$ ls
+hosts
+playbook.yml
+
+ +

Running the playbook

+ +
~/setup$ ansible-playbook -i hosts playbook.yml
+PLAY [all] ********************************************************************
+
+GATHERING FACTS ***************************************************************
+ok: [127.0.0.1]
+
+TASK: [install nginx] *********************************************************
+ok: [127.0.0.1]
+
+TASK: start nginx every bootup] ***********************************************
+ok: [127.0.0.1]
+...
+
+ +

Read more

+ + + +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/ansible-modules.html b/ansible-modules.html new file mode 100644 index 000000000..c57e3d108 --- /dev/null +++ b/ansible-modules.html @@ -0,0 +1,692 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ansible modules cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +

Format

+ +

Basic file

+ +
---
+- hosts: production
+  remote_user: root
+  tasks:
+  - ···
+
+ +

Place your modules inside tasks.

+ +

Task formats

+ +

One-line

+ +
- apt: pkg=vim state=present
+
+ +

Map

+ +
- apt:
+    pkg: vim
+    state: present
+
+ +

Foldable scalar

+ +
- apt: >
+    pkg=vim
+    state=present
+
+ +

Define your tasks in any of these formats. One-line format is preferred for short declarations, while maps are preferred for longer.

+ +

Modules

+ +

Aptitude

+ +

Packages

+ +
- apt:
+    pkg: nodejs
+    state: present # absent | latest
+    update_cache: yes
+    force: no
+
+ +

Deb files

+ +
- apt:
+    deb: "https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb"
+
+ +

Repositories

+ +
- apt_repository:
+    repo: "deb https://··· raring main"
+    state: present
+
+ +

Repository keys

+ +
- apt_key:
+    id: AC40B2F7
+    url: "http://···"
+    state: present
+
+ +

git

+ +
- git:
+    repo: git://github.com/
+    dest: /srv/checkout
+    version: master
+    depth: 10
+    bare: yes
+
+ +

See: git module

+ +

git_config

+ +
- git_config:
+    name: user.email
+    scope: global # local | system
+    value: hi@example.com
+
+ +

See: git_config module

+ +

user

+ +
- user:
+    state: present
+    name: git
+    system: yes
+    shell: /bin/sh
+    groups: admin
+    comment: "Git Version Control"
+
+ +

See: user module

+ +

service

+ +
- service:
+    name: nginx
+    state: started
+    enabled: yes     # optional
+
+ +

See: service module

+ +

Shell

+ +

shell

+ +
- shell: apt-get install nginx -y
+
+ +

Extra options

+ +
- shell: echo hello
+  args:
+    creates: /path/file  # skip if this exists
+    removes: /path/file  # skip if this is missing
+    chdir: /path         # cd here before running
+
+ +

Multiline example

+ +
- shell: |
+    echo "hello there"
+    echo "multiple lines"
+
+ +

See: shell module

+ +

script

+ +
- script: /x/y/script.sh
+  args:
+    creates: /path/file  # skip if this exists
+    removes: /path/file  # skip if this is missing
+    chdir: /path         # cd here before running
+
+ +

See: script module

+ +

Files

+ +

file

+ +
- file:
+    path: /etc/dir
+    state: directory # file | link | hard | touch | absent
+
+    # Optional:
+    owner: bin
+    group: wheel
+    mode: 0644
+    recurse: yes  # mkdir -p
+    force: yes    # ln -nfs
+
+ +

See: file module

+ +

copy

+ +
- copy:
+    src: /app/config/nginx.conf
+    dest: /etc/nginx/nginx.conf
+
+    # Optional:
+    owner: user
+    group: user
+    mode: 0644
+    backup: yes
+
+ +

See: copy module

+ +

template

+ +
- template:
+    src: config/redis.j2
+    dest: /etc/redis.conf
+
+    # Optional:
+    owner: user
+    group: user
+    mode: 0644
+    backup: yes
+
+ +

See: template module

+ +

Local actions

+ +

local_action

+ +
- name: do something locally
+  local_action: shell echo hello
+
+ +

debug

+ +
- debug:
+    msg: "Hello {{ var }}"
+
+ +

See: debug module

+ + +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/ansible-roles.html b/ansible-roles.html new file mode 100644 index 000000000..54aedf2b1 --- /dev/null +++ b/ansible-roles.html @@ -0,0 +1,495 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ansible roles cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Structure

+ +
roles/
+  common/
+    tasks/
+    handlers/
+    files/              # 'copy' will refer to this
+    templates/          # 'template' will refer to this
+    meta/               # Role dependencies here
+    vars/
+    defaults/
+      main.yml
+
+ +

References

+ +
    +
  • http://www.ansibleworks.com/docs/playbooks_roles.html
  • +
+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/ansible.html b/ansible.html new file mode 100644 index 000000000..6adedfb75 --- /dev/null +++ b/ansible.html @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ansible cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+

+

Ansible

+ + + +
+ +
+ +

Getting started

+ +

Hosts

+ +
$ sudo mkdir /etc/ansible
+$ sudo vim /etc/ansible/hosts
+
+[example]
+192.0.2.101
+192.0.2.102
+
+ +

Running a playbook

+ +
$ ansible-playbook playbook.yml
+
+ +

Tasks

+ +
- hosts: all
+  user: root
+  sudo: no
+  vars:
+    aaa: bbb
+  tasks:
+    - ...
+  handlers:
+    - ...
+
+ +

Includes

+ +
tasks:
+  - include: db.yml
+handlers:
+  - include: db.yml user=timmy
+
+ +

Handlers

+ +
handlers:
+  - name: start apache2
+    action: service name=apache2 state=started
+
+tasks:
+  - name: install apache
+    action: apt pkg=apache2 state=latest
+    notify:
+      - start apache2
+
+ +

Vars

+ +
- host: lol
+  vars_files:
+    - vars.yml
+  vars:
+    project_root: /etc/xyz
+  tasks:
+    - name: Create the SSH directory.
+      file: state=directory path=${project_root}/home/.ssh/
+      only_if: "$vm == 0"
+
+ +

Roles

+ +
- host: xxx
+  roles:
+    - db
+    - { role:ruby, sudo_user:$user }
+    - web
+
+# Uses:
+# roles/db/tasks/*.yml
+# roles/db/handlers/*.yml
+
+ +

Task: Failures

+ +
- name: my task
+  command: ...
+  register: result
+  failed_when: "'FAILED' in result.stderr"
+
+  ignore_errors: yes
+
+  changed_when: "result.rc != 2"
+
+ +

Env vars

+ +
vars:
+  local_home: "{{ lookup('env','HOME') }}"
+
+ +

References

+ + + + +
+ + + + +
+
+ +
+
+

+ Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. + Suggestions and corrections? Send them in. + + I'm Rico Sta. Cruz. + Check out my Today I learned blog for more. +

+ + +

+ +

+ + +

+

+
+
+ + + + + + + + + + + + + diff --git a/appcache.html b/appcache.html new file mode 100644 index 000000000..c311a29e2 --- /dev/null +++ b/appcache.html @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Appcache cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Format

+ +
CACHE MANIFEST
+# version
+
+CACHE:
+http://www.google.com/jsapi
+/assets/app.js
+/assets/bg.png
+
+NETWORK:
+*
+
+ +

Note that Appcache is deprecated!

+ +

See: Using the application cache (developer.mozilla.org)

+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/applescript.html b/applescript.html new file mode 100644 index 000000000..bd18dfae5 --- /dev/null +++ b/applescript.html @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AppleScript cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Running

+ +
osascript -e "..."
+
+ +
display notification "X" with title "Y"
+
+ +

Comments

+ +
-- This is a single line comment
+
+ +
# This is another single line comment
+
+ +
(*
+This is
+a multi
+line comment
+*)
+
+ +

Say

+ +
-- default voice
+say "Hi I am a Mac"
+
+ +
-- specified voice
+say "Hi I am a Mac" using "Zarvox"
+
+ +

Beep

+ +
-- beep once
+beep
+
+ +
-- beep 10 times
+beep 10
+
+ +

Delay

+ +
-- delay for 5 seconds
+delay 5
+
+ +
+
+ + + + + +
+
+
+ + + 0 Comments + + for this cheatsheet. + Write yours! + +
+
+
+
+
+
+
+ +
+ + +
+
+ +
+
+ + + + + + + + + + + + + diff --git a/applinks.html b/applinks.html new file mode 100644 index 000000000..8cfeeeb68 --- /dev/null +++ b/applinks.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Applinks cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+

+

Applinks

+ + + +
+ +
+
<meta property="al:ios:url" content="applinks://docs" />
+<meta property="al:ios:app_store_id" content="12345" />
+<meta property="al:ios:app_name" content="App Links" />
+
+<meta property="al:android:url" content="applinks://docs" />
+<meta property="al:android:app_name" content="App Links" />
+<meta property="al:android:package" content="org.applinks" />
+
+<meta property="al:web:url" content="http://applinks.org/documentation" />
+
+ +

Device types

+ +
    +
  • ios
  • +
  • ipad
  • +
  • iphone
  • +
  • android
  • +
  • windows_phone
  • +
  • web
  • +
+ +

Reference

+ + + +
+ + + + +
+
+ +
+
+

+ Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. + Suggestions and corrections? Send them in. + + I'm Rico Sta. Cruz. + Check out my Today I learned blog for more. +

+ + +

+ +

+ + +

+

+
+
+ + + + + + + + + + + + + diff --git a/arel.html b/arel.html new file mode 100644 index 000000000..5b78f0f24 --- /dev/null +++ b/arel.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Arel cheatsheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+

+

Arel

+ + + +
+ +
+

Tables

+ +
users = Arel::Table.new(:users)
+users = User.arel_table  # ActiveRecord model
+
+ +

Fields

+ +
users[:name]
+users[:id]
+
+ +

where (restriction)

+ +
users.where(users[:name].eq('amy'))
+# SELECT * FROM users WHERE users.name = 'amy'
+
+ +

select (projection)

+ +
users.project(users[:id])
+# SELECT users.id FROM users
+
+ +

join

+

basic join

+

In ActiveRecord (without Arel), if :photos is the name of the association, use joins

+
users.joins(:photos)
+
+ +

In Arel, if photos is defined as the Arel table,

+
photos = Photo.arel_table
+users.join(photos) 
+users.join(photos, Arel::Nodes::OuterJoin).on(users[:id].eq(photos[:user_id]))
+
+ +

join with conditions

+
users.joins(:photos).merge(Photo.where(published: true))
+
+ +

If the simpler version doesn’t help and you want to add more SQL statements to it:

+
users.join(
+   users.join(photos, Arel::Nodes::OuterJoin)
+   .on(photos[:user_id].eq(users[:id]).and(photos[:published].eq(true)))
+)
+
+ +

advanced join

+

multiple joins with the same table but different meanings and/or conditions

+
creators = User.arel_table.alias('creators')
+updaters = User.arel_table.alias('updaters')
+photos = Photo.arel_table
+
+photos_with_credits = photos
+.join(photos.join(creators, Arel::Nodes::OuterJoin).on(photos[:created_by_id].eq(creators[:id])))
+.join(photos.join(updaters, Arel::Nodes::OuterJoin).on(photos[:assigned_id].eq(updaters[:id])))
+.project(photos[:name], photos[:created_at], creators[:name].as('creator'), updaters[:name].as('editor'))
+
+photos_with_credits.to_sql
+# => "SELECT `photos`.`name`, `photos`.`created_at`, `creators`.`name` AS creator, `updaters`.`name` AS editor FROM `photos` INNER JOIN (SELECT FROM `photos` LEFT OUTER JOIN `users` `creators` ON `photos`.`created_by_id` = `creators`.`id`) INNER JOIN (SELECT FROM `photos` LEFT OUTER JOIN `users` `updaters` ON `photos`.`updated_by_id` = `updaters`.`id`)"
+
+# after the request is done, you can use the attributes you named
+# it's as if every Photo record you got has "creator" and "editor" fields, containing creator name and editor name
+photos_with_credits.map{|x|
+  "#{photo.name} - copyright #{photo.created_at.year} #{photo.creator}, edited by #{photo.editor}"
+}.join('; ')
+
+ +

limit / offset

+ +
users.take(5) # => SELECT * FROM users LIMIT 5
+users.skip(4) # => SELECT * FROM users OFFSET 4
+
+ +

Aggregates

+ +
users.project(users[:age].sum) # .average .minimum .maximum
+users.project(users[:id].count)
+users.project(users[:id].count.as('user_count'))
+
+ +

order

+ +
users.order(users[:name])
+users.order(users[:name], users[:age].desc)
+users.reorder(users[:age])
+
+ +

With ActiveRecord

+ +
User.arel_table
+User.where(id: 1).arel
+
+ +

Clean code with arel

+ +

Most of the clever stuff should be in scopes, e.g. the code above could become:

+
photos_with_credits = Photo.with_creator.with_editor
+
+ +

You can store requests in variables then add SQL segments:

+
all_time      = photos_with_credits.count
+this_month    = photos_with_credits.where(photos[:created_at].gteq(Date.today.beginning_of_month))
+recent_photos = photos_with_credits.where(photos[:created_at].gteq(Date.today.beginning_of_month)).limit(5)
+
+ +

Reference

+ + + +
+ + + + +
+
+ +
+
+

+ Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. + Suggestions and corrections? Send them in. + + I'm Rico Sta. Cruz. + Check out my Today I learned blog for more. +

+ + +

+ +

+ + +

+

+
+
+ + + + + + + + + + + + + diff --git a/assets/2015/style.css b/assets/2015/style.css new file mode 100644 index 000000000..50a182214 --- /dev/null +++ b/assets/2015/style.css @@ -0,0 +1,508 @@ +@charset "UTF-8"; +@import url("//code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"); +@import url("//cdn.jsdelivr.net/hint.css/1.3.2/hint.min.css"); +@import url("//brick.a.ssl.fastly.net/Roboto:400,400i,700"); +@import url("//fonts.googleapis.com/css?family=Raleway:800"); +@import url("//fonts.googleapis.com/css?family=Fira+Mono:400,400i"); +@import url("//brick.a.ssl.fastly.net/EB+Garamond:400i"); +/* sizes */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ +html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/** Remove default margin. */ +body { margin: 0; } + +/* HTML5 display definitions ========================================================================== */ +/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } + +/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */ +audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ } + +/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ +audio:not([controls]) { display: none; height: 0; } + +/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */ +[hidden], template { display: none; } + +/* Links ========================================================================== */ +/** Remove the gray background color from active links in IE 10. */ +a { background-color: transparent; } + +/** Improve readability when focused and also mouse hovered in all browsers. */ +a:active, a:hover { outline: 0; } + +/* Text-level semantics ========================================================================== */ +/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */ +abbr[title] { border-bottom: 1px dotted; } + +/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */ +b, strong { font-weight: bold; } + +/** Address styling not present in Safari and Chrome. */ +dfn { font-style: italic; } + +/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/** Address styling not present in IE 8/9. */ +mark { background: #ff0; color: #000; } + +/** Address inconsistent and variable font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sup { top: -0.5em; } + +sub { bottom: -0.25em; } + +/* Embedded content ========================================================================== */ +/** Remove border when inside `a` element in IE 8/9/10. */ +img { border: 0; } + +/** Correct overflow not hidden in IE 9/10/11. */ +svg:not(:root) { overflow: hidden; } + +/* Grouping content ========================================================================== */ +/** Address margin not present in IE 8/9 and Safari. */ +figure { margin: 1em 40px; } + +/** Address differences between Firefox and other browsers. */ +hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } + +/** Contain overflow in all browsers. */ +pre { overflow: auto; } + +/** Address odd `em`-unit font size rendering in all browsers. */ +code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } + +/* Forms ========================================================================== */ +/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */ +/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */ +button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ } + +/** Address `overflow` set to `hidden` in IE 8/9/10/11. */ +button { overflow: visible; } + +/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */ +button, select { text-transform: none; } + +/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */ +button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } + +/** Re-set default cursor for disabled elements. */ +button[disabled], html input[disabled] { cursor: default; } + +/** Remove inner padding and border in Firefox 4+. */ +button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } + +/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ +input { line-height: normal; } + +/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width. 1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */ +input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */ +input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */ +input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } + +/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */ +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** Define consistent border, margin, and padding. */ +fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } + +/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ +legend { border: 0; /* 1 */ padding: 0; /* 2 */ } + +/** Remove default vertical scrollbar in IE 8/9/10/11. */ +textarea { overflow: auto; } + +/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */ +optgroup { font-weight: bold; } + +/* Tables ========================================================================== */ +/** Remove most spacing between table cells. */ +table { border-collapse: collapse; border-spacing: 0; } + +td, th { padding: 0; } + +/* html base (html, body) */ +* { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } + +html { font-size: 17px; line-height: 1.7; background: #fff; color: #555; } +@media (max-width: 768px) { html { font-size: 14px; } } + +html { transition: opacity 200ms linear; opacity: 1; } + +html, input, textarea, td, th { font-family: "Roboto", sans-serif; font-weight: 400; } + +html, body { overflow-x: hidden; } + +/* fouc prevention */ +body { transition: opacity 100ms linear; } + +html.no-js * { opacity: 0; } + +/* basic styles (a, p, img...) */ +a, a:visited { color: #555; text-decoration: none; box-shadow: inset 0 -1px rgba(136, 136, 136, 0.3); transition: all 100ms linear; } + +a:focus, a:hover { box-shadow: inset 0 -2px #1ea3ff; color: #151515; } + +strong, strong a, strong a:visited, b, b a, b a:visited { color: #151515; } + +h3, p, ul, ol { margin: 1.5em 0; } + +/* iframes */ +p > iframe { margin: 0 auto; display: block; } + +/* lists */ +ul, ol { padding-left: 1.5em; } + +ul { list-style: none; } +ul > li { position: relative; } +ul > li:before { content: ""; display: block; position: absolute; left: -1.4em; top: 0; margin-top: 0.7em; width: 4px; height: 4px; border-radius: 50%; border: solid 2px #c0d3da; } +@media (max-width: 768px) { ul > li:before { width: 3px; height: 3px; } } + +/* headings */ +h2, h2 a, h2 a:visited { color: #151515; } + +h2 { text-align: center; font-family: "eb garamond", serif; font-weight: 400; font-style: italic; font-size-adjust: none; -webkit-font-language-override: normal; font-language-override: normal; -webkit-font-kerning: auto; font-kerning: auto; -webkit-font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-synthesis: weight style; font-size: 2em; line-height: 1.4; margin: 2em auto 0 auto; } +@media (max-width: 768px) { h2 { font-size: 1.6em; } } + +@media (min-width: 769px) { h2:before, h2:after { content: ""; display: inline-block; vertical-align: middle; width: 46px; height: 1px; background: #c0d3da; margin: 0 30px; } } +h3 { font-family: "raleway", sans-serif; font-weight: 800; font-size: 1.1em; margin-top: 2em; } +h3, h3 a, h3 a:visited { color: #151515; } +@media (max-width: 768px) { h3 { margin-top: 1.5em; } } + +h3 + p { margin-top: -1.7em; } + +/* images */ +p > img:first-child:last-child { display: block; margin: 0 auto; max-width: 100%; } + +code { font-family: "fira mono", monospace; font-weight: 400; letter-spacing: -0.5px; text-rendering: auto; -webkit-font-smoothing: subpixel-antialiased; -moz-osx-font-smoothing: auto; font-size: 0.9em; } + +hr { width: 200px; height: 1px; border: 0; background: #c0d3da; margin: 3em auto; display: block; } + +/* table */ +table { min-width: 100%; margin-top: 2em; margin-bottom: 2em; font-size: 0.9em; border-bottom: solid 1px #939aa1; } + +thead > tr:first-child > th, thead > tr:first-child > td, tbody > tr:first-child > th, tbody > tr:first-child > td { border-top: solid 1px #939aa1; } + +td, th { text-align: left; border-top: solid 1px #eef3fa; padding: 8px 10px; } + +th { font-family: "raleway", sans-serif; font-weight: 800; color: #151515; } + +td:first-child, th:first-child { text-align: left; padding-left: 0; } + +td:last-child, th:last-child { padding-right: 0; } + +table.no-head thead { display: none; } + +table.shortcuts { table-layout: fixed; } +table.shortcuts thead { display: none; } +table.shortcuts th:nth-child(1), table.shortcuts td:nth-child(1) { width: 25%; } +table.shortcuts th:nth-child(2), table.shortcuts td:nth-child(2) { width: 75%; } +table.shortcuts td:first-child > code { background: #fcfcfc; padding: 5px 10px; border-radius: 2px; } + +table.lite-headings { border-bottom: solid 1px #aab7be; } +table.lite-headings th { color: #aab7be; font-size: 0.9em; } +table.lite-headings thead > tr:first-child > td, table.lite-headings thead > tr:first-child > th { border-top: solid 1px #aab7be; } +table.lite-headings tbody > tr:first-child > td, table.lite-headings tbody > tr:first-child > th { border-top: solid 1px #eef3fa; } + +/* pre > code -- code blocks */ +pre > code { font-family: "fira mono", monospace; font-weight: 400; letter-spacing: -0.5px; text-rendering: auto; -webkit-font-smoothing: subpixel-antialiased; -moz-osx-font-smoothing: auto; font-size: 0.82em; color: #555; padding-right: 20px; } + +pre { padding: 20px 50px; border-radius: 4px; background: #f4f6f8; margin: 2.2em -50px; line-height: 1.2em; } +@media (min-width: 768px) { pre { border-top: solid 1px #eef3fa; border-bottom: solid 1px #c7d7ee; border-radius: 4px; } } +@media (max-width: 768px) { pre { padding: 20px; margin: 2em -20px; background: #ebeef2; } } +@media (max-width: 660px) { pre { border-radius: 0; } } + +pre + pre { margin-top: -1.5em; } + +pre.medium > code { font-size: 1em; } +@media (min-width: 768px) { pre.medium { padding-top: 30px; padding-bottom: 30px; } } + +pre.large > code { font-size: 1.1em; line-height: 1.4em; } +@media (min-width: 768px) { pre.large { padding-top: 30px; padding-bottom: 30px; } } + +pre.terminal, pre.light { background: white; border: solid 1px #8fd1ff; position: relative; } + +pre.light { background: #fdfdff; } + +pre.terminal { padding-top: 56px; } +pre.terminal.large { padding-top: 65px; } +pre.terminal:before { content: ""; display: block; height: 34px; line-height: 34px; background: white; border-bottom: solid 1px #8fd1ff; border-top-left-radius: 3px; border-top-right-radius: 3px; position: absolute; top: 0; left: 0; right: 0; font-family: "raleway", sans-serif; font-weight: 800; } +pre.terminal:after { content: ""; position: absolute; display: block; width: 4px; height: 4px; border-radius: 50%; left: 15px; top: 15px; font-size: 20px; background-color: #8fd1ff; box-shadow: 20px 0 #8fd1ff, 40px 0 #8fd1ff; } +@media (max-width: 768px) { pre.terminal { margin-left: 0; margin-right: 0; } } + +pre + pre { margin-top: -1.7em; } + +@media (min-width: 769px) { pre.cursor > code > :last-child:after { content: ""; display: inline-block; width: 3px; height: 1em; transform: scaleY(1.5) translateY(0.1em); margin-left: 0.4em; background-color: #1ea3ff; -webkit-animation: blink 700ms steps(2, end) infinite; -moz-animation: blink 700ms steps(2, end) infinite; animation: blink 700ms steps(2, end) infinite; } } +h3 + pre, h3 + table { margin-top: -1em; } + +/* .about-the-site */ +.about-the-site { position: relative; } +.about-the-site .container { text-align: center; padding: 3em 80px; margin: 0 auto; } +.about-the-site .container:after { display: table; content: ""; clear: both; height: 0; zoom: 1; } +@media (max-width: 768px) { .about-the-site .container { padding-left: 40px; padding-right: 40px; } } +.about-the-site:before { content: ""; position: absolute; display: block; left: 20px; right: 20px; top: 0; border-top: solid 1px #eef3fa; } +.about-the-site { font-family: "Roboto", sans-serif; font-weight: 400; font-size: 0.85em; color: #cacdd0; } +.about-the-site a, .about-the-site a:visited { color: #aeb4b9; box-shadow: inset 0 -1px rgba(0, 0, 0, 0.05); padding-bottom: 2px; } +.about-the-site a:hover, .about-the-site a:focus { color: #151515; box-shadow: inset 0 -2px #1ea3ff; } +.about-the-site strong { font-family: "raleway", sans-serif; font-weight: 800; } +.about-the-site strong a, .about-the-site strong a:visited { color: #151515; box-shadow: none; } +.about-the-site strong a:hover, .about-the-site strong a:focus { color: #151515; box-shadow: inset 0 -2px #1ea3ff; } +.about-the-site .identity { margin: 0; margin-top: 0.2em; float: right; font-family: "eb garamond", serif; font-weight: 400; font-style: italic; font-size-adjust: none; -webkit-font-language-override: normal; font-language-override: normal; -webkit-font-kerning: auto; font-kerning: auto; -webkit-font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-synthesis: weight style; font-size: 2.5em; } +.about-the-site .identity a, .about-the-site .identity a:visited { color: #151515; box-shadow: none; } +.about-the-site .identity a:hover, .about-the-site .identity a:focus { color: #1ea3ff; } +.about-the-site .blurb { margin: 0; max-width: 500px; text-align: left; float: left; line-height: 1.55; } +.about-the-site .back { float: right; margin-top: 0.4em; margin-right: 2em; } +.about-the-site .fleuron:before { content: ""; font-family: Ionicons; font-size: 16px; font-weight: normal; font-style: normal; display: inline-block; vertical-align: middle; color: #151515; margin: 0 7px; } +@media (max-width: 768px) { .about-the-site .fleuron:before { display: none; } } +@media (max-width: 768px) { .about-the-site .identity { float: left; clear: both; } + .about-the-site .blurb { float: none; margin-bottom: 1em; width: auto; } + .about-the-site .back { float: right; margin-right: 0; } } + +.big-button, a.big-button { display: inline-block; width: 180px; height: 50px; line-height: 48px; padding: 0; border-radius: 30px; font-size: 0.85em; box-shadow: none; background: transparent; } +@media (max-width: 768px) { .big-button, a.big-button { width: 140px; height: 40px; line-height: 38px; } } +.big-button, .big-button:visited, a.big-button, a.big-button:visited { border: solid 2px #1ea3ff; color: #1ea3ff; } +.big-button.-back, .big-button.-back:visited, a.big-button.-back, a.big-button.-back:visited { border: solid 1px rgba(147, 154, 161, 0.2); color: #939aa1; } +.big-button.-back:before, .big-button.-next:after, a.big-button.-back:before, a.big-button.-next:after { font-family: Ionicons; font-size: 20px; display: inline-block; vertical-align: middle; position: relative; top: -1px; } +.big-button.-back:before, a.big-button.-back:before { content: ""; } +.big-button.-next:after, a.big-button.-next:after { content: ""; margin-left: 16px; top: 0; } +.big-button.-slim, a.big-button.-slim { width: 60px; border-width: 2px; height: 60px; line-height: 60px; border-radius: 50%; } +@media (max-width: 768px) { .big-button.-slim, a.big-button.-slim { width: 40px; height: 40px; line-height: 40px; } } +.big-button:hover, .big-button:focus, a.big-button:hover, a.big-button:focus { background: #1ea3ff; border-color: transparent; color: white; box-shadow: none; } +.big-button.-back:hover, .big-button.-back:focus, a.big-button.-back:hover, a.big-button.-back:focus { background: #1ea3ff; color: white; } + +/* .brief-intro -- Brief introduction */ +.brief-intro { font-size: 1.1em; color: #939aa1; } + +/* .full-image -- full width image containers */ +.full-image { overflow: hidden; text-align: center; position: relative; } +.full-image img { background: #fcfcfc; } +.full-image.cropped img, .full-image.cropped img:first-child:last-child { margin-bottom: -50px; display: block; background: transparent; } +.full-image.cropped:after { content: ""; display: block; position: absolute; bottom: 0; left: 20px; right: 20px; border-bottom: solid 1px #c0d3da; } +.full-image.stretched img { width: 100%; } +@media (max-width: 768px) { .full-image { margin-left: -20px; margin-right: -20px; } } +@media (min-width: 769px) { .full-image { width: 100vw; margin-left: calc(-50vw + 620px / 2); } } + +.hint--top:before, .hint--bottom:before { margin-top: -14px; margin-left: -8px; border-radius: 2px; } +.hint--top:before, .hint--top:after, .hint--bottom:before, .hint--bottom:after { transition-duration: 10ms; } +.hint--top:after, .hint--bottom:after { box-shadow: none; border-radius: 2px; text-shadow: none; margin-left: -55px; } + +.hljs-literal, .hljs-number, .hljs-string, .hljs-symbol, .hljs-value { color: #1ea3ff; } + +.hljs-key, .hljs-attribute { color: #006cb7; } + +.hljs-keyword, .hljs-constant { color: #151515; } + +.hljs-comment { color: #939aa1; font-style: italic; } + +.token.comment, .token.prolog, .token.doctype, .token.cdata { color: #939aa1; font-style: italic; } + +.token.punctuation { color: #999; } + +.token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol, .token.deleted { color: #905; } + +.token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: #1ea3ff; } + +.token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string { color: #a67f59; } + +.token.atrule, .token.attr-value, .token.keyword { color: #07a; } + +.token.function { color: #DD4A68; } + +.token.regex, .token.important, .token.variable { color: #e90; } + +.token.important, .token.bold { font-weight: bold; } + +.token.italic { font-style: italic; } + +.token.entity { cursor: help; } + +/* .next-article -- lead into the next article */ +.next-article { display: block; padding: 0; margin-left: 40px; margin-right: 40px; position: relative; } +.next-article, .next-article:hover, .next-article:focus { box-shadow: none; } +.next-article:after { content: ""; display: block; position: absolute; left: -20px; right: -20px; bottom: 0; border-bottom: solid 1px #eef3fa; } +.next-article + .about-the-site:before { display: none; } +@media (max-width: 768px) { .next-article { margin-left: 0; margin-right: 0; } + .next-article + .about-the-site:before { display: none; } } +.next-article .container { display: block; text-align: center; padding: 10em 20px; } +@media (min-width: 769px) { .next-article .container { margin-top: 8em; padding: 8em 20px; } } +.next-article .h3 { display: block; margin: 0 auto auto; padding: 0; font-size: 2.2em; line-height: 1.3em; font-family: "raleway", sans-serif; font-weight: 800; color: white; transition: all 250ms linear; } +@media (max-width: 768px) { .next-article .h3 { font-size: 1.5em; } } +.next-article .h3, .next-article .excerpt { max-width: 558px; } +.next-article .h3 + .excerpt { margin-top: 0.5em; } +.next-article .excerpt { display: block; margin-left: auto; margin-right: auto; font-size: 1em; line-height: 1.6em; } +.next-article .big-button { margin-top: 2em; } +.next-article h3 a:hover, .next-article h3 a:focus { color: #1ea3ff; } +.next-article .heading { display: block; text-transform: uppercase; letter-spacing: 2px; font-size: 0.7em; margin-bottom: 1em; } +.next-article .heading:before { font-family: Ionicons; content: ""; margin-right: 15px; font-size: 16px; display: inline-block; vertical-align: middle; color: #1ea3ff; } +.next-article .big-button, .next-article a.big-button { background: transparent; } +.next-article .big-button, .next-article .big-button:visited, .next-article a.big-button, .next-article a.big-button:visited { border-color: #1ea3ff; color: white; } +.next-article .big-button:hover, .next-article .big-button:focus, .next-article a.big-button:hover, .next-article a.big-button:focus { background: #1ea3ff; border-color: transparent; } + +.next-article { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(97, 46, 118, 0.9), rgba(88, 103, 204, 0.9)), linear-gradient(177deg, rgba(97, 46, 118, 0), rgba(97, 46, 118, 0.9)), url("") center center/cover, #612e76; } +.next-article:hover, .next-article:focus { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(100, 47, 122, 0.9), rgba(92, 107, 205, 0.9)), linear-gradient(177deg, rgba(97, 46, 118, 0), rgba(97, 46, 118, 0.9)), url("") center center/cover, #612e76; } +.next-article .excerpt, .next-article .heading { color: #d8cbdd; } +.next-article.-v2 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); } +.next-article.-v2 { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(2, 125, 101, 0.7), rgba(0, 83, 107, 0.7)), linear-gradient(35deg, rgba(2, 125, 101, 0), rgba(2, 125, 101, 0.9)), url("bg/pebbles.jpg") center center/cover, #027d65; } +.next-article.-v2:hover, .next-article.-v2:focus { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(2, 130, 105, 0.7), rgba(0, 87, 112, 0.7)), linear-gradient(35deg, rgba(2, 125, 101, 0), rgba(2, 125, 101, 0.9)), url("bg/pebbles.jpg") center center/cover, #027d65; } +.next-article.-v2 .excerpt, .next-article.-v2 .heading { color: #c0dfd9; } +.next-article.-v3 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); } +.next-article.-v3 { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(29, 36, 52, 0.9), rgba(32, 42, 62, 0.9)), linear-gradient(1deg, rgba(29, 36, 52, 0), rgba(29, 36, 52, 0.9)), url("bg/roughwall.jpg") center center/cover, #1d2434; } +.next-article.-v3:hover, .next-article.-v3:focus { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(31, 38, 55, 0.9), rgba(34, 44, 65, 0.9)), linear-gradient(1deg, rgba(29, 36, 52, 0), rgba(29, 36, 52, 0.9)), url("bg/roughwall.jpg") center center/cover, #1d2434; } +.next-article.-v3 .excerpt, .next-article.-v3 .heading { color: #c7c8cc; } +.next-article.-v4 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); } +.next-article.-v4 { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(144, 32, 20, 0.45), rgba(199, 126, 10, 0.45)), linear-gradient(1deg, rgba(144, 32, 20, 0), rgba(144, 32, 20, 0.9)), url("bg/woodfloor.jpg") center center/cover, #902014; } +.next-article.-v4:hover, .next-article.-v4:focus { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(148, 33, 21, 0.45), rgba(204, 129, 10, 0.45)), linear-gradient(1deg, rgba(144, 32, 20, 0), rgba(144, 32, 20, 0.9)), url("bg/woodfloor.jpg") center center/cover, #902014; } +.next-article.-v4 .excerpt, .next-article.-v4 .heading { color: #e3c7c4; } +.next-article.-v5 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); } +.next-article.-v5 { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(23, 40, 58, 0.85), rgba(37, 41, 94, 0.85)), linear-gradient(1deg, rgba(23, 40, 58, 0), rgba(23, 40, 58, 0.9)), url("bg/stairs.jpg") center center/cover, #17283a; } +.next-article.-v5:hover, .next-article.-v5:focus { background: url("data:image/svg+xml;utf8,") -50px top/110% auto no-repeat, linear-gradient(to right, rgba(24, 43, 62, 0.85), rgba(38, 43, 98, 0.85)), linear-gradient(1deg, rgba(23, 40, 58, 0), rgba(23, 40, 58, 0.9)), url("bg/stairs.jpg") center center/cover, #17283a; } +.next-article.-v5 .excerpt, .next-article.-v5 .heading { color: #c5c9ce; } + +/* .post-headline -- H1's of posts */ +.post-headline { margin: 1.5em auto 3em auto; text-align: center; } +.post-headline .post-icon { margin-bottom: 2px; } +.post-headline h1 { text-align: center; margin-bottom: 0; font-family: "eb garamond", serif; font-weight: 400; font-style: italic; font-size-adjust: none; -webkit-font-language-override: normal; font-language-override: normal; -webkit-font-kerning: auto; font-kerning: auto; -webkit-font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-synthesis: weight style; font-size: 2.8em; line-height: 1.2; width: 80%; margin-left: auto; margin-right: auto; } +@media (max-width: 768px) { .post-headline h1 { font-size: 2em; } } +.post-headline .meta { display: block; text-align: center; margin: 0; margin-top: 1em; font-weight: normal; text-transform: uppercase; letter-spacing: 2px; font-size: 0.8em; } +.post-headline .meta .author, .post-headline .meta .date { margin: 0 5px; padding-bottom: 2px; } +.post-headline .meta a, .post-headline .meta a:visited { color: #939aa1; } +.post-headline .meta a:hover, .post-headline .meta a:hover span, .post-headline .meta a:focus, .post-headline .meta a:focus span { color: #939aa1; } +.post-headline .meta a:hover time, .post-headline .meta a:focus time { color: #151515; box-shadow: inset 0 -2px #1ea3ff; } +.post-headline a, .post-headline a:visited, .post-headline a:focus, .post-headline a:hover { color: #151515; text-decoration: none; box-shadow: none; } + +/* .post-icon -- category icons */ +.post-icon, abbr.post-icon { border: 0; margin: 0; display: inline-block; width: 56px; height: 56px; line-height: 58px; text-align: center; border-radius: 50%; color: #aaa; background: #eee; font-family: "Roboto", sans-serif; font-weight: 400; font-size: 16px; letter-spacing: 1px; } +.post-icon span:after, abbr.post-icon span:after { content: attr(data-label); font-size: 0.9em; position: relative; top: -1px; } +@media (max-width: 480px) { .post-icon, abbr.post-icon { transform: scale(0.75); } } +.post-icon.-icon-css, abbr.post-icon.-icon-css { font-size: 14px; line-height: 58px; } +.post-icon.-icon-css, abbr.post-icon.-icon-css { background: #3498db; color: white; box-shadow: -2px 2px #e67e22, 2px -2px #f1c40f, 1px -2px rgba(52, 152, 219, 0.2), 1px 3px rgba(52, 152, 219, 0.3); } +.post-icon.-icon-css span:after, abbr.post-icon.-icon-css span:after { content: "CSS"; } +.post-icon.-icon-development, abbr.post-icon.-icon-development { font-size: 14px; line-height: 58px; } +.post-icon.-icon-development, abbr.post-icon.-icon-development { background: #34495e; color: #b9c9d8; box-shadow: -2px 2px #e67e22, 2px -2px #f1c40f, 1px -2px rgba(52, 73, 94, 0.2), 1px 3px rgba(52, 73, 94, 0.3); } +.post-icon.-icon-development span:after, abbr.post-icon.-icon-development span:after { content: "DEV"; } +.post-icon.-icon-ruby, abbr.post-icon.-icon-ruby { text-indent: 2px; } +.post-icon.-icon-ruby, abbr.post-icon.-icon-ruby { background: #e74c3c; color: white; box-shadow: -2px 2px #e67e22, 2px -2px #f1c40f, 1px -2px rgba(231, 76, 60, 0.2), 1px 3px rgba(231, 76, 60, 0.3); } +.post-icon.-icon-ruby span:after, abbr.post-icon.-icon-ruby span:after { content: "RB"; } +.post-icon.-icon-javascript, abbr.post-icon.-icon-javascript { text-indent: 1px; } +.post-icon.-icon-javascript, abbr.post-icon.-icon-javascript { background: #2ecc71; color: #fbfefc; box-shadow: -2px 2px #e67e22, 2px -2px #f1c40f, 1px -2px rgba(46, 204, 113, 0.2), 1px 3px rgba(46, 204, 113, 0.3); } +.post-icon.-icon-javascript span:after, abbr.post-icon.-icon-javascript span:after { content: "JS"; } +.post-icon.-icon-productivity, abbr.post-icon.-icon-productivity { text-indent: 1px; } +.post-icon.-icon-productivity, abbr.post-icon.-icon-productivity { background: #2ecc71; color: #fbfefc; box-shadow: -2px 2px #e67e22, 2px -2px #f1c40f, 1px -2px rgba(46, 204, 113, 0.2), 1px 3px rgba(46, 204, 113, 0.3); } +.post-icon.-icon-productivity span:after, abbr.post-icon.-icon-productivity span:after { content: "PROD"; } + +/* .post-index (et al) -- utility classes */ +.post-index { margin: 0 auto 4em auto; position: relative; padding-top: 4em; font-size: 0.9em; } +.post-index .container { overflow: hidden; max-width: 620px; margin: 0 auto; } +.post-index h3 { text-transform: uppercase; letter-spacing: 2px; color: #939aa1; font-size: 1em; } + +.post-index-item { display: block; overflow: hidden; padding: 6px 20px; border-top: solid 1px #eef3fa; } +.post-index-item, .post-index-item:hover, .post-index-item:focus { box-shadow: none; } +.post-index-item:hover .article, .post-index-item:focus .article { transition: none; } +.post-index-item .date { display: block; } +.post-index-item .date { width: 100px; font-size: 0.8em; color: #939aa1; } +@media (min-width: 768px) { .post-index-item { padding-left: 0; padding-right: 0; } + .post-index-item .date, .post-index-item .tag { margin-top: 0.2em; } + .post-index-item .date, .post-index-item article { float: left; } + .post-index-item .tag { float: right; } } +.post-index-item .article { color: #555; margin-right: 3px; transition: all 100ms linear; } +.post-index-item:hover .article { color: #1ea3ff; } +.post-index-item:nth-of-type(1) .article, .post-index-item:nth-of-type(2) .article, .post-index-item:nth-of-type(3) .article, .post-index-item:nth-of-type(4) .article { font-family: "raleway", sans-serif; font-weight: 800; } +.post-index-item .tag { color: #939aa1; font-weight: normal; font-size: 0.8em; } + +.post-item { max-width: 620px; margin: 0 auto; } + +.post-list { margin: 40px auto; padding: 20px; } +@media (max-width: 768px) { .post-list { margin: 0 auto; } } + +.post-list > .post-item:not(:first-child):before { content: ""; display: block; width: 150px; height: 1px; background: #eef3fa; margin: 7em auto; } +@media (max-width: 768px) { .post-list > .post-item:not(:first-child):before { margin: 4em auto; } } + +.site-header { text-align: center; padding: 0 20px; } +.site-header .container { padding: 15px 20px; font-size: 0.9em; color: rgba(147, 154, 161, 0.6); border-bottom: solid 1px #eef3fa; } +.site-header em { font-family: "eb garamond", serif; font-weight: 400; font-style: italic; font-size-adjust: none; -webkit-font-language-override: normal; font-language-override: normal; -webkit-font-kerning: auto; font-kerning: auto; -webkit-font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-feature-settings: "kern", "liga", "dlig", "hlig", "cswh"; font-synthesis: weight style; font-size: 1.1em; font-size: 1.1em; color: #555; } + +/* .social-list -- social share icons */ +.social-list, .social-list li { margin: 0; padding: 0; } +.social-list { display: block; text-align: center; width: 100%; margin-top: 2em; } +@media (min-width: 768px) { .social-list { margin-top: 4em; } } +.social-list.-top { margin-top: -2em; } +@media (min-width: 768px) { .social-list.-top { margin-top: -1em; } } +.social-list li { display: inline-block; } +.social-list a { display: inline-block; padding: 6px; text-align: center; box-shadow: none; } +.social-list a:before, .social-list a:after { transition: all 100ms linear; } +.social-list .text { display: none; } +.social-list a:before { font-family: "Ionicons"; font-weight: normal; font-style: normal; font-size: 18px; width: 40px; height: 40px; line-height: 40px; display: inline-block; text-align: center; border: solid 2px transparent; border-radius: 50%; } +.social-list .facebook a { color: #a0bdc7; } +.social-list .facebook a:hover, .social-list .facebook a:focus { color: #4c66a4; } +.social-list .facebook a:before { content: ""; } +.social-list .facebook a:hover:before, .social-list .facebook a:focus:before { border-color: #4c66a4; content: ""; } +.social-list .twitter a { color: #a0bdc7; } +.social-list .twitter a:hover, .social-list .twitter a:focus { color: dodgerblue; } +.social-list .twitter a:before { content: ""; } +.social-list .twitter a:hover:before, .social-list .twitter a:focus:before { border-color: dodgerblue; content: ""; } +.social-list .googleplus a { color: #a0bdc7; } +.social-list .googleplus a:hover, .social-list .googleplus a:focus { color: #f53; } +.social-list .googleplus a:before { content: ""; } +.social-list .googleplus a:hover:before, .social-list .googleplus a:focus:before { border-color: #f53; content: ""; } + +/* .center (et al) -- utility classes */ +.center { text-align: center; } + +@media (min-width: 769px) { .spaced { margin-top: 4em; margin-bottom: 4em; } } + +@media (min-width: 769px) { .spaced-more { margin-top: 6em; margin-bottom: 6em; } } + +@media (min-width: 769px) { .spaced-less { margin-top: 2em; margin-bottom: 2em; } } + +@media (min-width: 920px) { .wide { width: 140%; margin-left: -25%; } } + +/* .top/.bottom -- margin helpers */ +.top-collapse-0 { margin-top: 0; } + +.top-collapse-1 { margin-top: -1em; } + +.top-collapse-2 { margin-top: -2em; } + +.top-collapse-4 { margin-top: -4em; } + +.top-space-0 { margin-top: 0; } + +.top-space-1 { margin-top: 1em; } + +.top-space-2 { margin-top: 2em; } + +.top-space-4 { margin-top: 2em; } +@media (min-width: 769px) { .top-space-4 { margin-top: 4em; } } + +.bottom-collapse-0 { margin-bottom: 0; } + +.bottom-collapse-1 { margin-bottom: -1em; } + +.bottom-collapse-2 { margin-bottom: -2em; } + +.bottom-collapse-4 { margin-bottom: -4em; } + +.bottom-space-0 { margin-bottom: 0; } + +.bottom-space-1 { margin-bottom: 1em; } + +.bottom-space-2 { margin-bottom: 2em; } + +.bottom-space-4 { margin-bottom: 2em; } +@media (min-width: 769px) { .bottom-space-4 { margin-bottom: 4em; } } + +@keyframes blink { 0% { opacity: 0; } + 100% { opacity: 1; } } +@-webkit-keyframes blink { 0% { opacity: 0; } + 100% { opacity: 1; } } diff --git a/assets/2017/style.css b/assets/2017/style.css new file mode 100644 index 000000000..0a0adc8e0 --- /dev/null +++ b/assets/2017/style.css @@ -0,0 +1,621 @@ +@import url(../../assets/packed/app.css); +/* Metrics */ +/* Fonts */ +/* Base colors */ +/* Mod scale */ +/* Base carbon ads style */ +.push-button { display: inline-block; text-decoration: none; padding: 8px 16px; border-radius: 3px; } +.push-button, .push-button:visited { background-color: #745fb5; background: linear-gradient(5deg, #745fb5, #9066b8); color: white; } +.push-button:hover, .push-button:focus { background: #4f3d85; box-shadow: none; color: white; } + +.-dark.push-button, .-dark.push-button:visited { background: #4f3d85; color: white; } +.-dark.push-button:hover, .-dark.push-button:focus { background: #3e3069; color: white; } + +/* Base */ +html, body { background: #f1f3f5; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 14px; line-height: 1.6; color: #345; overflow-x: hidden; } + +body { font-size: 13px; padding: 0; margin: 0; } +@media (min-width: 480px) and (max-width: 768px) { body { font-size: calc( 13px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { body { font-size: calc( 14px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { body { font-size: 14px; } } + +/* Code */ +pre, code { font-family: cousine, "SFMono-Regular", Consolas, Menlo, "Liberation Mono", "Ubuntu Mono", Courier, monospace; letter-spacing: -0.03em; } + +pre { font-size: 0.96em; } + +/* Antialias */ +*:not(pre):not(code) { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } + +/* Links */ +a { color: #26648e; } + +a:visited { color: #15234d; } + +a:hover { color: #3ac1cb; } + +/* prism.js adds area-hidden which it probably shouldn't */ +[aria-hidden]:not(.line-highlight) { display: none !important; } + +@media (max-width: 580px) { .hint--bottom::before, .hint--bottom::after { display: none; } } +/* +/* "Preloader": This makes the content semi-transparent before the page ad loads. */ +html.WithJs .post-content { opacity: 0; } + +/* Defer "loading" until page's onload event fires. (The page actually already loaded, we just pretend like it hasn't) */ +html.WithJs .pages-list, html.WithJs .post-content.-wrapified, html.WithJs .intro-content { opacity: 0.4; } +html.WithJs.LoadDone .pages-list, html.WithJs.LoadDone .post-content.-wrapified, html.WithJs.LoadDone .intro-content { opacity: 1; transition: opacity 100ms linear 100ms; } + +/* For links with sources, eg, [Foo](foo.com) _(foo.com)_ */ +.MarkdownBody.MarkdownBody a + em { opacity: 0.5; } + +.MarkdownBody code { color: #667788; font-size: 0.96em; } + +.MarkdownBody pre, .MarkdownBody code { font-family: cousine, "SFMono-Regular", Consolas, Menlo, "Liberation Mono", "Ubuntu Mono", Courier, monospace; } + +.MarkdownBody pre.-box-chars { line-height: 1.32; } + +.MarkdownBody pre.-figlet { line-height: 1; font-size: 11px; } + +/* Undo prism theme crap */ +.MarkdownBody pre { box-shadow: none; border-left: 0; overflow: hidden; overflow-x: auto; background: white; font-size: 0.96em; line-height: 1.5; } +.MarkdownBody pre.-wrap { white-space: pre-wrap; } +.MarkdownBody pre > code { color: #111; max-height: auto; padding: 0; background: transparent; overflow: visible; font-size: 1em; } +.MarkdownBody .line-highlight { transform: translate3d(0, 2px, 0); background: linear-gradient(to right, rgba(20, 175, 131, 0.05) 25%, transparent); } +.MarkdownBody .line-highlight[data-end] { margin-top: 0; } +.MarkdownBody .line-highlight::before, .MarkdownBody .line-highlight::after { display: none; } + +.MarkdownBody pre.-setup, .MarkdownBody p.-setup, .MarkdownBody ul.-setup, .MarkdownBody p.-crosslink { background: #f8f9fa; } + +/* Syntax kighlight */ +.token.tag, .token.keyword { color: #26648e; } +.token.tag { color: #1d406e; } +.token.value, .token.string, .token.number, .token.attr-value, .token.boolean, .token.regex { color: #14af83; } +.token.function, .token.attr-name { color: #2e90ae; } +.token.comment, .token.punctuation, .token.operator { color: #aaa; } + +/* MarkdownBody context */ +.MarkdownBody h2 { margin: 0; padding: 0; margin-bottom: 24px; margin-top: 64px; position: relative; font-size: 30px; line-height: 1.2; font-weight: 200; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; margin-top: 0; } +@media (max-width: 768px) { .MarkdownBody h2 { margin-bottom: 8px; margin-top: 32px; } } +@media (max-width: 480px) { .MarkdownBody h2 { margin-bottom: 8px; margin-top: 32px; } } +@media (min-width: 480px) and (max-width: 768px) { .MarkdownBody h2 { font-size: calc( 30px + 4 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .MarkdownBody h2 { font-size: calc( 34px + 2 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .MarkdownBody h2 { font-size: 36px; } } +.MarkdownBody h2:target { color: #745fb5; } + +.MarkdownBody h3 { margin: 0; padding: 0; margin-bottom: 16px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 17px; font-weight: 400; color: #745fb5; } +@media (min-width: 480px) and (max-width: 768px) { .MarkdownBody h3 { font-size: calc( 17px + 2 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .MarkdownBody h3 { font-size: calc( 19px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .MarkdownBody h3 { font-size: 19px; } } + +.MarkdownBody a, .MarkdownBody a:visited { color: #26648e; text-decoration: none; } +.MarkdownBody a:hover { text-decoration: underline; } +.MarkdownBody em { font-style: normal; color: #667788; } +.MarkdownBody iframe { border: 0; margin: 0; width: 100%; } + +.local-anchor { margin-left: -.9em; margin-right: .1em; padding: 0 .1em; } +.MarkdownBody .local-anchor, .MarkdownBody .local-anchor:visited { color: #667788; text-decoration: inherit; opacity: .5; } +.MarkdownBody .local-anchor:target, .MarkdownBody :target > .local-anchor { color: #745fb5; opacity: 1; } +.MarkdownBody .local-anchor:hover, .MarkdownBody .local-anchor:focus { color: white; background: #745fb5; opacity: 1; text-decoration: inherit; } + +/* Crosslink (eg, phoenix.md) */ +.MarkdownBody.MarkdownBody img { max-width: 100%; } + +.MarkdownBody.MarkdownBody p.-crosslink > a { display: block; text-decoration: none; color: #745fb5; border-bottom: 0; box-shadow: none; margin: -16px; padding: 16px; } +.MarkdownBody.MarkdownBody p.-crosslink > a:visited { color: #745fb5; } +.MarkdownBody.MarkdownBody p.-crosslink > a::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(255%2C255%2C255)%22%20d%3D%22M85%20277.375h259.704L225.002%20397.077%20256%20427l171-171L256%2085l-29.922%2029.924%20118.626%20119.7H85v42.75z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat; height: 16px; width: 16px; margin-right: 16px; width: 32px; height: 32px; line-height: 32px; border-radius: 50%; } +.MarkdownBody.MarkdownBody p.-crosslink > a::before, .MarkdownBody.MarkdownBody p.-crosslink > a:visited::before { background-color: #745fb5; color: white; } +.MarkdownBody.MarkdownBody p.-crosslink > a:hover, .MarkdownBody.MarkdownBody p.-crosslink > a:focus { color: #673d85; } +.MarkdownBody.MarkdownBody p.-crosslink > a:hover::before, .MarkdownBody.MarkdownBody p.-crosslink > a:focus::before { background-color: #673d85; } + +/* Table */ +.MarkdownBody table { /* Horizontal lines */ } +.MarkdownBody table { width: 100%; } +.MarkdownBody table tr + tr { border-top: solid 1px rgba(102, 119, 136, 0.05); } +.MarkdownBody table tbody + tbody { border-top: solid 1px rgba(102, 119, 136, 0.2); } +.MarkdownBody table td, .MarkdownBody table th { padding: 8px 16px; vertical-align: top; text-align: left; } +.MarkdownBody table tr th:last-child, .MarkdownBody table tr td:last-child { text-align: right; } +.MarkdownBody table td:first-child { white-space: nowrap; } +.MarkdownBody table td > code { font-size: 0.96em; } +.MarkdownBody table td:first-child > code { color: #35a; } +.MarkdownBody table a, .MarkdownBody table a:visited { color: #35a; text-decoration: none; } +.MarkdownBody table td:first-child > code ~ em { font-size: 11px; font-style: normal; color: #667788; } +@media (min-width: 480px) and (max-width: 768px) { .MarkdownBody table td:first-child > code ~ em { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .MarkdownBody table td:first-child > code ~ em { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .MarkdownBody table td:first-child > code ~ em { font-size: 12px; } } +.MarkdownBody table thead { display: none; } +.MarkdownBody table thead th { font-weight: normal; color: #745fb5; } + +.MarkdownBody table.-shortcuts td:first-child > code { font-size: 1rem; padding: 5px 6px; padding-left: 8px; background: #f8f9fa; border-radius: 3px; margin-right: 2px; letter-spacing: 0.1em; color: #345; } + +.MarkdownBody table.-shortcuts-right td:last-child > code { font-size: 1rem; padding: 5px 6px; padding-left: 8px; background: #f8f9fa; border-radius: 3px; margin-right: 2px; letter-spacing: 0.1em; color: #345; } + +.MarkdownBody table.-left-align tr th, .MarkdownBody table.-left-align tr td, .MarkdownBody table.-left-align tr td:last-child { text-align: left; } + +.MarkdownBody table.-headers thead { display: table-header-group; border-bottom: solid 1px rgba(102, 119, 136, 0.2); } + +/* Key-value pairs (like in css) */ +.MarkdownBody table.-key-values tbody tr td + td code { display: block; } + +.MarkdownBody table.-css-breakdown tr th, .MarkdownBody table.-css-breakdown tr td, .MarkdownBody table.-css-breakdown tr td:last-child { text-align: left; } +.MarkdownBody table.-css-breakdown tr td { font-size: 15px; white-space: nowrap; } +@media (min-width: 480px) and (max-width: 768px) { .MarkdownBody table.-css-breakdown tr td { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .MarkdownBody table.-css-breakdown tr td { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .MarkdownBody table.-css-breakdown tr td { font-size: 16px; } } +.MarkdownBody table.-css-breakdown tr td:not(:last-child) { padding-right: 4px; } +.MarkdownBody table.-css-breakdown tr td:not(:first-child) { padding-left: 4px; } +.MarkdownBody table.-css-breakdown tr:last-child { background: #f8f9fa; } +.MarkdownBody table.-css-breakdown tr:last-child td { font-size: 11px; color: #667788; white-space: auto; } +@media (min-width: 480px) and (max-width: 768px) { .MarkdownBody table.-css-breakdown tr:last-child td { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .MarkdownBody table.-css-breakdown tr:last-child td { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .MarkdownBody table.-css-breakdown tr:last-child td { font-size: 12px; } } + +.MarkdownBody table.-bold-first tr > td:first-child { font-weight: bold; } + +.MarkdownBody table.-no-wrap td, .MarkdownBody table.-no-wrap th { white-space: nowrap; } + +.MarkdownBody table.-mute-em td em, .MarkdownBody table.-mute-em th em { opacity: 0.5; } +.MarkdownBody table.-mute-em td em > code, .MarkdownBody table.-mute-em th em > code { margin-right: 0.5em; } + +.MarkdownBody ul.-six-column { display: flex; flex-wrap: wrap; } +.MarkdownBody ul.-six-column > li { flex: 0 0 16.6666666667%; } +@media (max-width: 480px) { .MarkdownBody ul.-six-column > li { flex: 0 0 50%; } } +@media (max-width: 768px) { .MarkdownBody ul.-six-column > li { flex: 0 0 25%; } } + +.MarkdownBody ul.-four-column { display: flex; flex-wrap: wrap; } +.MarkdownBody ul.-four-column > li { flex: 0 0 25%; } +@media (max-width: 480px) { .MarkdownBody ul.-four-column > li { flex: 0 0 50%; } } +@media (max-width: 768px) { .MarkdownBody ul.-four-column > li { flex: 0 0 33.3333333333%; } } + +.attribute-peg { display: inline-block; height: 12px; width: 20px; text-align: center; } +.attribute-peg > span { display: inline-block; width: 8px; height: 8px; background: #77dab2; border-radius: 50%; } + +.announcements-item { position: relative; padding: 16px; box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3), 0 8px 12px rgba(58, 193, 203, 0.1); border-radius: 1px; background: white; padding-right: 48px; animation: announcements-item-flyin 500ms ease-out; transition: opacity 500ms linear, transform 500ms ease-out; } +.announcements-item.-hide { display: none; } +.announcements-item > .title { font-size: 15px; font-weight: normal; color: #745fb5; margin: 0; padding: 0; } +@media (min-width: 480px) and (max-width: 768px) { .announcements-item > .title { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .announcements-item > .title { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .announcements-item > .title { font-size: 16px; } } +.announcements-item > .body > p { margin: 0; padding: 0; } +.announcements-item > .body > p + p { margin-top: 1em; } +.announcements-item > .close { position: absolute; right: 0; top: 0; width: 40px; height: 40px; line-height: 40px; text-align: center; border: 0; margin: 0; padding: 0; cursor: pointer; background: transparent; } +.announcements-item > .close:hover, .announcements-item > .close:focus { color: #745fb5; } +.announcements-item > .close::before { content: "\00D7"; font-size: 14px; } + +@keyframes announcements-item-flyin { 0% { transform: translate3d(0, 32px, 0); opacity: 0; } + 100% { transform: translate3d(0, 0, 0); opacity: 1; } } +.announcements-list { position: fixed; left: 0; bottom: 0; max-width: 420px; padding: 0; z-index: 10; } +@media (min-width: 481px) { .announcements-list { padding: 16px; } } +@media (min-width: 769px) { .announcements-list { padding: 32px; } } + +/* Home link */ +.back-button { text-decoration: none; width: 48px; height: 48px; line-height: 46px; text-align: center; display: inline-block; border-radius: 50%; transition: all 100ms linear; } +@media (max-width: 480px) { .back-button { width: 32px; height: 32px; line-height: 30px; } } +.back-button, .back-button:visited { color: #667788; } +.back-button:hover, .back-button:focus { color: white; background: #745fb5; opacity: 1; } +.back-button::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M427%20234.625H167.296l119.702-119.702L256%2085%2085%20256l171%20171%2029.922-29.924-118.626-119.7H427v-42.75z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat; height: 24px; width: 24px; vertical-align: middle; } +.back-button:hover::before, .back-button:focus::before { display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(255%2C255%2C255)%22%20d%3D%22M427%20234.625H167.296l119.702-119.702L256%2085%2085%20256l171%20171%2029.922-29.924-118.626-119.7H427v-42.75z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat; height: 24px; width: 24px; } +@media (max-width: 480px) { .back-button::before { font-size: 16px; } } + +.body-area { max-width: 1232px; margin: 0 auto; padding: 16px; } +@media (max-width: 480px) { .body-area { padding: 16px; } } +.body-area.-slim { max-width: 740px; } + +.codefund-sponsor { min-height: 114px; } +.codefund-sponsor .cf-wrapper { margin-left: auto; margin-right: auto; } + +/* Disqus */ +.comments-area { margin: 32px 0 16px 0; } +.comments-area > .container { padding-left: 16px; padding-right: 16px; max-width: 1232px; margin: 0 auto; } +@media (max-width: 480px) { .comments-area > .container { padding-left: 16px; } } +@media (max-width: 480px) { .comments-area > .container { padding-right: 16px; } } +.comments-area > .container::before { content: ''; display: block; background: linear-gradient(to right, rgba(102, 119, 136, 0.2) 50%, transparent); height: 1px; } + +/* Comments disclosure triangle */ +.comments-details { margin-bottom: -16px; } +.comments-details[open] { margin-bottom: 0; } +.comments-details > summary { font-size: 15px; color: #745fb5; padding: 24px 0; white-space: nowrap; cursor: pointer; } +@media (min-width: 480px) and (max-width: 768px) { .comments-details > summary { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .comments-details > summary { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .comments-details > summary { font-size: 16px; } } +.comments-details > summary:hover, .comments-details > summary:hover > .suffix, .comments-details > summary:focus, .comments-details > summary:focus > .suffix { color: #673d85; } +.comments-details > summary:hover > .fauxlink, .comments-details > summary:focus > .fauxlink { border-bottom: solid 1px #673d85; } +.comments-details > summary > .count { font-weight: bold; } +.comments-details > summary > .count::before { display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(116%2C95%2C181)%22%20d%3D%22M391.553%2064H57.607C53.13%2064%2048%2067.745%2048%2072.16v214.216c0%204.413%205.13%208.624%209.607%208.624H115v88.894L205.128%20295h186.425c4.477%200%207.447-4.21%207.447-8.624V72.16c0-4.415-2.97-8.16-7.447-8.16z%22%2F%3E%3Cpath%20fill%3D%22rgb(116%2C95%2C181)%22%20d%3D%22M456.396%20127H424v166.57c0%2015.987-6.915%2026.43-25.152%2026.43H218.096l-38.905%2039h129.69L399%20448v-89h57.396c4.478%200%207.604-4.262%207.604-8.682V136.103c0-4.414-3.126-9.103-7.604-9.103z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat; height: 24px; width: 24px; content: ''; vertical-align: middle; color: #745fb5; margin: 0 8px; } +.comments-details > summary > .suffix { color: #667788; } +.comments-details > summary > .fauxlink { margin-left: 4px; border-bottom: solid 1px rgba(116, 95, 181, 0.25); } + +/* Disqus */ +.comments-section { display: flex; } +@media (max-width: 768px) { .comments-section > .comments { flex: 1 0 100%; width: 100%; } } +@media (min-width: 769px) { .comments-section > .comments { flex: 0 1 66%; min-width: 300px; } } + +/* h2 section */ +/* Hide the first h2 heading */ +.h2-section { /* Hide anchors until mouseover */ } +.h2-section:first-child:not(.-no-hide) > h2 { display: none; } +@media (min-width: 481px) { .h2-section + .h2-section { margin-top: 48px; } } +.h2-section > .anchor { opacity: 0; } +.h2-section:hover > .anchor { opacity: 1; } + +/* H3 section */ +.h3-section > .body { /* Collapse/flush */ /* Border radius */ } +.h3-section > .body > pre { margin: 0; padding: 16px; } +@media (max-width: 768px) { .h3-section > .body { overflow-x: auto; } } +.h3-section > .body { background: white; box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3); } +@media (max-width: 480px) { .h3-section > .body { margin: 0 -16px; box-shadow: 0 1px 1px rgba(102, 119, 136, 0.55); } } +@media (min-width: 481px) { .h3-section > .body { border-radius: 2px; } + .h3-section > .body > :first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } + .h3-section > .body > :last-child { border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; } } + +/* Heading */ +.h3-section > h3 { margin-top: 8px; margin-bottom: 16px; white-space: nowrap; overflow: hidden; } +@media (max-width: 768px) { .h3-section > h3 { margin-top: 0; } } +.h3-section > h3::after { margin-left: 24px; content: ''; display: inline-block; vertical-align: middle; width: 100%; height: 1px; background: linear-gradient(to right, rgba(116, 95, 181, 0.2), transparent 80%); } + +/* Children */ +.h3-section > .body { /* Lists */ /* Paragraphs */ /* Headings in between bodies */ /* Description paragraphs */ } +.h3-section > .body > ul { margin: 0; padding: 0; list-style-type: none; } +.h3-section > .body > ul > li { padding: 8px; padding-left: 36px; position: relative; } +.h3-section > .body > ul > li > p { margin: 0; padding: 0; } +.h3-section > .body > ul > li::before { content: ''; position: absolute; display: inline-block; width: 4px; height: 4px; background: #667788; border-radius: 50%; left: 16px; top: 18px; } +.h3-section > .body > ul > li + li { border-top: solid 1px rgba(102, 119, 136, 0.05); } +.h3-section > .body > p { padding: 16px; margin: 0; } +.h3-section > .body > h4 { font-size: 11px; margin: 0; padding: 4px 16px; font-weight: normal; background: #f8f9fa; color: #667788; } +@media (min-width: 480px) and (max-width: 768px) { .h3-section > .body > h4 { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .h3-section > .body > h4 { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .h3-section > .body > h4 { font-size: 12px; } } +.h3-section > .body > h4 + * { border-top: solid 1px rgba(102, 119, 136, 0.05); } +.h3-section > .body > pre ~ p, .h3-section > .body > ul ~ p, .h3-section > .body > iframe ~ p, .h3-section > .body > table ~ p { background: #f8f9fa; color: #667788; /* Links */ } +.h3-section > .body > pre ~ p a, .h3-section > .body > pre ~ p a:visited, .h3-section > .body > ul ~ p a, .h3-section > .body > ul ~ p a:visited, .h3-section > .body > iframe ~ p a, .h3-section > .body > iframe ~ p a:visited, .h3-section > .body > table ~ p a, .h3-section > .body > table ~ p a:visited { color: #345; text-decoration: none; border-bottom: solid 1px rgba(102, 119, 136, 0.05); } +.h3-section > .body > pre ~ p a:hover, .h3-section > .body > ul ~ p a:hover, .h3-section > .body > iframe ~ p a:hover, .h3-section > .body > table ~ p a:hover { color: #26648e; } +.h3-section > .body > *:not(:first-child) { border-top: solid 1px rgba(102, 119, 136, 0.05); } +.h3-section > .body > p + p, .h3-section > .body > p + p:not(:first-child) { margin-top: -1.5em; border-top: 0; } + +/* Variant: Prime */ +@media (min-width: 481px) { .h3-section.-prime > .body { border-radius: 2px; box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3), 0 8px 12px rgba(58, 193, 203, 0.1); } } + +/* Variant: Also see :\ */ +ul.-also-see.-also-see.-also-see { display: flex; flex-wrap: wrap; background: #f8f9fa; } +ul.-also-see.-also-see.-also-see > li { flex: 1 0 20%; padding: 24px; border-top: solid 1px rgba(102, 119, 136, 0.2); } +ul.-also-see.-also-see.-also-see > li + li { border-left: solid 1px rgba(102, 119, 136, 0.2); } +ul.-also-see.-also-see.-also-see, ul.-also-see.-also-see.-also-see > li { list-style-type: none; } +ul.-also-see.-also-see.-also-see > li::before { display: none; } +ul.-also-see.-also-see.-also-see > li > a { font-size: 15px; display: block; } +@media (min-width: 480px) and (max-width: 768px) { ul.-also-see.-also-see.-also-see > li > a { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { ul.-also-see.-also-see.-also-see > li > a { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { ul.-also-see.-also-see.-also-see > li > a { font-size: 16px; } } +ul.-also-see.-also-see.-also-see > li > em { font-size: 11px; display: block; } +@media (min-width: 480px) and (max-width: 768px) { ul.-also-see.-also-see.-also-see > li > em { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { ul.-also-see.-also-see.-also-see > li > em { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { ul.-also-see.-also-see.-also-see > li > em { font-size: 12px; } } + +/* H3 section list: The body that is isotoped. */ +.h3-section-list { margin-left: -16px; margin-right: -16px; margin-top: 0; margin-bottom: 0; } +@media (max-width: 1264px) { .h3-section-list { margin-left: -8px; } } +@media (max-width: 1264px) { .h3-section-list { margin-right: -8px; } } +.h3-section-list::after { content: ''; display: table; clear: both; zoom: 1; } +.h3-section-list > .h3-section { padding: 16px; float: left; width: 100%; } +@media (max-width: 1264px) { .h3-section-list > .h3-section { padding: 8px; } } +@media (min-width: 769px) { .h3-section-list > .h3-section { padding-top: 0; } } + +/* Two column (default) */ +@media (min-width: 769px) { .h3-section-list > .h3-section, .h3-section-list.-two-column > .h3-section { width: 50%; } } + +/* One column */ +.h3-section-list.-one-column > .h3-section { width: 100%; } +.h3-section-list.-one-column > .h3-section + .h3-section { margin-top: 16px; } + +/* Three column */ +@media (min-width: 769px) { .h3-section-list.-three-column > .h3-section { width: 50%; } } +@media (min-width: 961px) { .h3-section-list.-three-column > .h3-section { width: 33.33%; } } + +/* Three column, left reference */ +@media (min-width: 769px) { .h3-section-list.-left-reference > .h3-section { width: 50%; } } +@media (min-width: 961px) { .h3-section-list.-left-reference > .h3-section { width: 66.67%; } + .h3-section-list.-left-reference > .h3-section:first-child { width: 33.33%; } } + +/* Carbon ads .headline-ad #carbonads span span.carbon-wrap a.carbon-img > img a.carbon-text {description} a.carbon-poweredby {powered by Carbon} */ +.HeadlineAd { font-size: 11px; } +@media (min-width: 480px) and (max-width: 768px) { .HeadlineAd { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .HeadlineAd { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .HeadlineAd { font-size: 12px; } } +.HeadlineAd .carbon-img, .HeadlineAd .carbon-text, .HeadlineAd .carbon-poweredby { text-decoration: none; display: block; } +.HeadlineAd .carbon-img { width: 130px; height: 100px; box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3); } +.HeadlineAd .carbon-img > img { border-radius: 3px; background: white; } +.HeadlineAd .carbon-img:hover { transform: translate3d(0, -1px, 0); box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3), 0 8px 12px rgba(58, 193, 203, 0.1); } +.HeadlineAd .carbon-text, .HeadlineAd .carbon-text:visited { color: #667788; } +.HeadlineAd .carbon-poweredby, .HeadlineAd .carbon-poweredby:visited { color: #9eaab6; } +.HeadlineAd .carbon-text:hover, .HeadlineAd .carbon-poweredby:hover { color: #745fb5; } +.HeadlineAd { display: inline-block; } +.HeadlineAd, .HeadlineAd > div > span { min-width: 210px; max-width: 380px; height: 100px; } +.HeadlineAd > div > span { display: inline-block; text-align: right; } +.HeadlineAd > div > span::after { content: ''; display: table; clear: both; zoom: 1; } +.HeadlineAd .carbon-img { float: right; margin-left: 16px; } +.HeadlineAd .carbon-text:first-line { font-size: 15px; color: #111; font-weight: 300; margin-bottom: -0.02em; } +@media (min-width: 480px) and (max-width: 768px) { .HeadlineAd .carbon-text:first-line { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .HeadlineAd .carbon-text:first-line { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .HeadlineAd .carbon-text:first-line { font-size: 16px; } } +@media (min-width: 481px) { .HeadlineAd .carbon-poweredby::before { display: block; content: ''; width: 32px; height: 1px; background: rgba(102, 119, 136, 0.2); margin: 8px 146px 8px auto; } } + +.hint-mark { cursor: help; } +.hint-mark > i::before { content: '?'; font-size: 11px; font-weight: bold; font-style: normal; } +.hint-mark > i { display: inline-block; width: 16px; height: 16px; line-height: 12px; text-align: center; border-radius: 50%; background: rgba(58, 193, 203, 0.3); color: #667788; margin: 0 0.4em; } + +/* Home button inside `search-footer` */ +.home-button { display: inline-block; box-shadow: inset 0 0 0 1px rgba(102, 119, 136, 0.2); border-radius: 50%; } +.home-button, .home-button:visited { color: #667788; } +.home-button:hover, .home-button:focus { background-color: #745fb5; color: white; } +.home-button > i::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(102%2C119%2C136)%22%20d%3D%22M256%20112L96%20240v208h112V320h96v128h112V240L256%20112zm144%20320h-80V304H192v128h-80V247.69l144-115.2%20144%20115.2V432z%22%2F%3E%3Cpath%20fill%3D%22rgb(102%2C119%2C136)%22%20d%3D%22M256%2064l-96%2076.8V96H96v96l-32%2025.498%2011.51%2011.384L256%2084.49l180.49%20144.393L448%20217.498%20256%2064zm-112%2089.6l-32%2025.6V112h32v41.6z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat; height: 24px; width: 24px; height: 48px; line-height: 48px; width: 48px; } +.home-button:hover > i::before { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(255%2C255%2C255)%22%20d%3D%22M256%20112L96%20240v208h112V320h96v128h112V240L256%20112z%22%2F%3E%3Cpath%20fill%3D%22rgb(255%2C255%2C255)%22%20d%3D%22M256%2064l-96%2076.8V96H96v96l-32%2025.498%2011.51%2011.384L256%2084.49l180.49%20144.393L448%20217.498%20256%2064z%22%2F%3E%3C%2Fsvg%3E"); } + +/* A prelude/intro to the article */ +/* The top-level heading */ +.main-heading { margin: 0; padding: 0; margin-bottom: 24px; margin-top: 64px; position: relative; } +@media (max-width: 768px) { .main-heading { margin-bottom: 8px; margin-top: 32px; } } +@media (max-width: 480px) { .main-heading { margin-bottom: 8px; margin-top: 32px; } } +.main-heading { margin-top: 0; margin-bottom: 0; } +.main-heading > h1 { font-size: 40px; line-height: 1.2; font-weight: 200; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; margin: 0; } +@media (min-width: 480px) and (max-width: 768px) { .main-heading > h1 { font-size: calc( 40px + 6 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .main-heading > h1 { font-size: calc( 46px + 3 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .main-heading > h1 { font-size: 49px; } } +.main-heading > h1 > em { font-style: normal; color: #9eaab6; } + +.main-heading.-center > h1 { text-align: center; } +.main-heading.-center > .adbox { margin-top: 16px; text-align: center; } +.main-heading.-center > .adbox > .ad { display: inline-block; } +.main-heading.-center > .adbox > .ad.-carbon { margin-top: 16px; } + +/** Add some space in preview mode */ +.PreviewMode .main-heading { margin-top: 16px; } + +.missing-message.missing-message { text-align: center; margin: 32px 0; display: flex; align-items: center; border-top: solid 1px rgba(102, 119, 136, 0.2); padding-top: 16px; } +@media (min-width: 769px) { .missing-message.missing-message { padding-top: 32px; } } +.missing-message.missing-message > h3, .missing-message.missing-message > p { margin: 0; padding: 0; } +.missing-message.missing-message > h3 { font-size: 15px; font-weight: normal; color: #345; flex: 1 0 auto; text-align: left; } +@media (min-width: 480px) and (max-width: 768px) { .missing-message.missing-message > h3 { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .missing-message.missing-message > h3 { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .missing-message.missing-message > h3 { font-size: 16px; } } +.missing-message.missing-message > h3::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(116%2C95%2C181)%22%20d%3D%22M85%20277.375h259.704L225.002%20397.077%20256%20427l171-171L256%2085l-29.922%2029.924%20118.626%20119.7H85v42.75z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat; height: 24px; width: 24px; margin-right: 16px; } +.missing-message.missing-message > p { color: #667788; flex: 0 0 auto; } +@media (max-width: 480px) { .missing-message.missing-message { flex-wrap: wrap; } + .missing-message.missing-message > p { margin-top: 16px; } } + +.notice-box { margin-bottom: 24px; color: #667788; } +@media (max-width: 480px) { .notice-box { margin-bottom: 16px; } } +.notice-box::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(146%2C160%2C173)%22%20d%3D%22M256%2048C141.2%2048%2048%20141.2%2048%20256s93.2%20208%20208%20208%20208-93.2%20208-208S370.8%2048%20256%2048zm21%20312h-42V235h42v125zm0-166h-42v-42h42v42z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat; height: 24px; width: 24px; margin-right: 8px; } +.notice-box > a { text-decoration: none; } + +.page-actions { margin: 0; padding: 0; } +.page-actions { height: 32px; } +.page-actions > .link.link > a { display: inline-block; height: 32px; line-height: 32px; vertical-align: top; width: auto; } +.page-actions > li { margin: 0; padding: 0; list-style-type: none; } +.page-actions > li > a, .page-actions > li > a:visited { color: #667788; text-decoration: none; } +.page-actions > li > a:hover, .page-actions > li > a:focus { color: #745fb5; } +.page-actions > li > a:hover > .text, .page-actions > li > a:focus > .text { color: #745fb5; } +.page-actions > li > a > .text { font-size: 11px; display: none; } +@media (min-width: 480px) and (max-width: 768px) { .page-actions > li > a > .text { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .page-actions > li > a > .text { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .page-actions > li > a > .text { font-size: 12px; } } +.page-actions > li > a > .text.-visible { display: inline; } +.page-actions + .page-actions { margin-left: 8px; } +.page-actions > .facebook > a::before, .page-actions > .twitter > a::before, .page-actions > .github > a::before { content: ''; vertical-align: middle; } +.page-actions > .facebook > a::before { display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M426.8%2064H85.2C73.5%2064%2064%2073.5%2064%2085.2v341.6c0%2011.7%209.5%2021.2%2021.2%2021.2H256V296h-45.9v-56H256v-41.4c0-49.6%2034.4-76.6%2078.7-76.6%2021.2%200%2044%201.6%2049.3%202.3v51.8h-35.3c-24.1%200-28.7%2011.4-28.7%2028.2V240h57.4l-7.5%2056H320v152h106.8c11.7%200%2021.2-9.5%2021.2-21.2V85.2c0-11.7-9.5-21.2-21.2-21.2z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat; height: 16px; width: 16px; } +.page-actions > .twitter > a::before { display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M492%20109.5c-17.4%207.7-36%2012.9-55.6%2015.3%2020-12%2035.4-31%2042.6-53.6-18.7%2011.1-39.4%2019.2-61.5%2023.5C399.8%2075.8%20374.6%2064%20346.8%2064c-53.5%200-96.8%2043.4-96.8%2096.9%200%207.6.8%2015%202.5%2022.1-80.5-4-151.9-42.6-199.6-101.3-8.3%2014.3-13.1%2031-13.1%2048.7%200%2033.6%2017.2%2063.3%2043.2%2080.7-16-.4-31-4.8-44-12.1v1.2c0%2047%2033.4%2086.1%2077.7%2095-8.1%202.2-16.7%203.4-25.5%203.4-6.2%200-12.3-.6-18.2-1.8%2012.3%2038.5%2048.1%2066.5%2090.5%2067.3-33.1%2026-74.9%2041.5-120.3%2041.5-7.8%200-15.5-.5-23.1-1.4C62.8%20432%20113.7%20448%20168.3%20448%20346.6%20448%20444%20300.3%20444%20172.2c0-4.2-.1-8.4-.3-12.5C462.6%20146%20479%20129%20492%20109.5z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat; height: 16px; width: 16px; } +.page-actions > .github > a::before { display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M256%2032C132.3%2032%2032%20134.9%2032%20261.7c0%20101.5%2064.2%20187.5%20153.2%20217.9%201.4.3%202.6.4%203.8.4%208.3%200%2011.5-6.1%2011.5-11.4%200-5.5-.2-19.9-.3-39.1-8.4%201.9-15.9%202.7-22.6%202.7-43.1%200-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1%201.4-14.1h.1c22.5%202%2034.3%2023.8%2034.3%2023.8%2011.2%2019.6%2026.2%2025.1%2039.6%2025.1%2010.5%200%2020-3.4%2025.6-6%202-14.8%207.8-24.9%2014.2-30.7-49.7-5.8-102-25.5-102-113.5%200-25.1%208.7-45.6%2023-61.6-2.3-5.8-10-29.2%202.2-60.8%200%200%201.6-.5%205-.5%208.1%200%2026.4%203.1%2056.6%2024.1%2017.9-5.1%2037-7.6%2056.1-7.7%2019%20.1%2038.2%202.6%2056.1%207.7%2030.2-21%2048.5-24.1%2056.6-24.1%203.4%200%205%20.5%205%20.5%2012.2%2031.6%204.5%2055%202.2%2060.8%2014.3%2016.1%2023%2036.6%2023%2061.6%200%2088.2-52.4%20107.6-102.3%20113.3%208%207.1%2015.2%2021.1%2015.2%2042.5%200%2030.7-.3%2055.5-.3%2063%200%205.4%203.1%2011.5%2011.4%2011.5%201.2%200%202.6-.1%204-.4C415.9%20449.2%20480%20363.1%20480%20261.7%20480%20134.9%20379.7%2032%20256%2032z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat; height: 16px; width: 16px; } +.page-actions > .github > a:hover::before { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(255%2C255%2C255)%22%20d%3D%22M256%2032C132.3%2032%2032%20134.9%2032%20261.7c0%20101.5%2064.2%20187.5%20153.2%20217.9%201.4.3%202.6.4%203.8.4%208.3%200%2011.5-6.1%2011.5-11.4%200-5.5-.2-19.9-.3-39.1-8.4%201.9-15.9%202.7-22.6%202.7-43.1%200-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1%201.4-14.1h.1c22.5%202%2034.3%2023.8%2034.3%2023.8%2011.2%2019.6%2026.2%2025.1%2039.6%2025.1%2010.5%200%2020-3.4%2025.6-6%202-14.8%207.8-24.9%2014.2-30.7-49.7-5.8-102-25.5-102-113.5%200-25.1%208.7-45.6%2023-61.6-2.3-5.8-10-29.2%202.2-60.8%200%200%201.6-.5%205-.5%208.1%200%2026.4%203.1%2056.6%2024.1%2017.9-5.1%2037-7.6%2056.1-7.7%2019%20.1%2038.2%202.6%2056.1%207.7%2030.2-21%2048.5-24.1%2056.6-24.1%203.4%200%205%20.5%205%20.5%2012.2%2031.6%204.5%2055%202.2%2060.8%2014.3%2016.1%2023%2036.6%2023%2061.6%200%2088.2-52.4%20107.6-102.3%20113.3%208%207.1%2015.2%2021.1%2015.2%2042.5%200%2030.7-.3%2055.5-.3%2063%200%205.4%203.1%2011.5%2011.4%2011.5%201.2%200%202.6-.1%204-.4C415.9%20449.2%20480%20363.1%20480%20261.7%20480%20134.9%20379.7%2032%20256%2032z%22%2F%3E%3C%2Fsvg%3E"); } +.page-actions > .facebook > a::before, .page-actions > .twitter > a::before { width: 32px; height: 32px; } +.page-actions > .github > a::before { position: relative; top: -2px; } +.page-actions > .link.-button > a { box-shadow: inset 0 0 0 1px rgba(102, 119, 136, 0.2); border-radius: 2px; padding: 0 16px; margin: 0 8px; transition: all 100ms linear; } +.page-actions > .link.-button > a > .text { margin-left: 4px; position: relative; top: -1px; } +.page-actions > .link.-button > a:hover, .page-actions > .link.-button > a:focus { background: linear-gradient(5deg, #745fb5, #9066b8); box-shadow: 0 1px 1px rgba(102, 119, 136, 0.55); } +.page-actions > .link.-button > a:hover, .page-actions > .link.-button > a:hover > .text, .page-actions > .link.-button > a:focus, .page-actions > .link.-button > a:focus > .text { color: white; } +@media (max-width: 768px) { .page-actions > .link { margin-left: 16px; } } +.page-actions > .link:first-child > a { margin-left: 0; } +.page-actions > .link:last-child > a { margin-right: 0; } + +.pages-list { display: flex; flex-wrap: wrap; } +.pages-list > .item { flex: 0 0 100%; } +.pages-list > .item.article { flex: 0 0 50%; } +@media (min-width: 581px) { .pages-list > .item.top-sheet { flex: 0 0 25%; } } + +.pages-list > .article { text-decoration: none; display: block; white-space: nowrap; padding: 4px 0; } +.pages-list > .article, .pages-list > .article:visited { color: #92a0ad; } +.pages-list > .article > .info > .slug { color: #111; } +.pages-list > .article:visited > .info > .slug { color: #345; } +.pages-list > .article > .info > .title::before { content: ''; margin: 0 4px; } +.pages-list > .article > .info > .title { opacity: 0; } +@media (max-width: 768px) { .pages-list > .article > .info > .title { display: none; } } +.pages-list > .article:hover, .pages-list > .article:focus { color: #667788; } +.pages-list > .article:hover > .info > .title, .pages-list > .article:focus > .info > .title { opacity: 1; color: #745fb5; } + +.pages-list > .category { font-size: 15px; border-bottom: solid 1px rgba(102, 119, 136, 0.2); margin: 16px 0; padding: 0 0 16px 0; font-weight: normal; color: #745fb5; } +@media (min-width: 480px) and (max-width: 768px) { .pages-list > .category { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .pages-list > .category { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .pages-list > .category { font-size: 16px; } } + +/* content: ''; Spacer before footer */ +.pre-footer { padding: 32px; padding-top: 24px; padding-bottom: 48px; text-align: center; } +.pre-footer > .icon::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(102%2C119%2C136)%22%20d%3D%22M302.7%2064L143%20288h95.8l-29.5%20160L369%20224h-95.8l29.5-160z%22%2F%3E%3C%2Fsvg%3E") center center/32px 32px no-repeat; height: 32px; width: 32px; opacity: 0.25; } + +/* Related posts */ +.related-posts-area { padding-top: 16px; padding-bottom: 16px; background: #f8f9fa; } +.related-posts-area > .container { padding-left: 16px; padding-right: 16px; max-width: 1232px; margin: 0 auto; } +@media (max-width: 480px) { .related-posts-area > .container { padding-left: 16px; } } +@media (max-width: 480px) { .related-posts-area > .container { padding-right: 16px; } } +@media (min-width: 481px) { .related-posts-area { padding-top: 64px; padding-bottom: 64px; } } + +/* Callout */ +.related-posts-callout { display: flex; text-decoration: none; background: linear-gradient(5deg, #745fb5, #9066b8); padding: 32px; align-items: center; justify-content: center; color: white; border-radius: 2px; box-shadow: 0 1px 1px rgba(102, 119, 136, 0.55); text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); } +.related-posts-callout, .related-posts-callout:visited { color: white; } +.related-posts-callout:hover, .related-posts-callout:focus { background: #5f4aa1; } +.related-posts-callout > .text { margin: auto; text-align: center; } +.related-posts-callout > .text > .icon { margin-bottom: 16px; display: block; } +.related-posts-callout > .text > .icon::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(183%2C150%2C207)%22%20d%3D%22M352%20128.4L319.7%2096%20160%20256l159.7%20160%2032.3-32.4L224.7%20256z%22%2F%3E%3C%2Fsvg%3E") center center/48px 48px no-repeat; height: 48px; width: 48px; height: 64px; width: 64px; border: solid 2px #b796cf; border-radius: 50%; text-indent: -2px; text-shadow: none; } +.related-posts-callout > .text > .description { font-size: 15px; line-height: 1.4; font-weight: 300; display: block; margin-bottom: 16px; } +@media (min-width: 480px) and (max-width: 768px) { .related-posts-callout > .text > .description { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .related-posts-callout > .text > .description { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .related-posts-callout > .text > .description { font-size: 16px; } } + +/* Group */ +.related-posts-group > h3 { font-size: 15px; color: #745fb5; margin: 0; padding: 0; margin-bottom: 16px; padding-bottom: 16px; border-bottom: solid 1px rgba(102, 119, 136, 0.2); line-height: 1.2; font-weight: 400; } +@media (min-width: 480px) and (max-width: 768px) { .related-posts-group > h3 { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .related-posts-group > h3 { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .related-posts-group > h3 { font-size: 16px; } } + +/* Section has callout and group */ +.related-posts-section { display: flex; margin-left: -16px; margin-right: -16px; } +@media (max-width: 1264px) { .related-posts-section { margin-left: -8px; } } +@media (max-width: 1264px) { .related-posts-section { margin-right: -8px; } } +.related-posts-section > .callout, .related-posts-section > .group { margin: 0; margin-left: 16px; margin-right: 16px; } +@media (max-width: 1264px) { .related-posts-section > .callout, .related-posts-section > .group { margin-left: 8px; } } +@media (max-width: 1264px) { .related-posts-section > .callout, .related-posts-section > .group { margin-right: 8px; } } +.related-posts-section > .callout { flex: 1 1 33%; } +.related-posts-section > .group { flex: 1 1 50%; } +.related-posts-section > .callout { display: flex; } +.related-posts-section > .callout > * { flex: 1 0 100%; } +@media (max-width: 480px) { .related-posts-section { flex-wrap: wrap; } + .related-posts-section > .callout, .related-posts-section > .group { margin-top: 16px; margin-bottom: 16px; flex: 1 1 100%; } } +@media (max-width: 480px) and (max-width: 1264px) { .related-posts-section > .callout, .related-posts-section > .group { margin-top: 8px; } } +@media (max-width: 480px) and (max-width: 1264px) { .related-posts-section > .callout, .related-posts-section > .group { margin-bottom: 8px; } } + +@media (min-width: 481px) and (max-width: 768px) { .related-posts-section { flex-wrap: wrap; } + .related-posts-section > .callout, .related-posts-section > .group { margin-top: 16px; margin-bottom: 16px; flex: 1 1 100%; } } + +@media (min-width: 481px) and (max-width: 768px) and (max-width: 1264px) { .related-posts-section > .callout, .related-posts-section > .group { margin-top: 8px; } } +@media (min-width: 481px) and (max-width: 768px) and (max-width: 1264px) { .related-posts-section > .callout, .related-posts-section > .group { margin-bottom: 8px; } } +@media (min-width: 481px) and (max-width: 768px) { .related-posts-section > .group { flex: 1 1 40%; } } + +.related-post-list, .related-post-list > li { margin: 0; padding: 0; list-style-type: none; } +.related-post-list { display: flex; margin: -4px; flex-wrap: wrap; } +@media (max-width: 768px) { .related-post-list { flex-wrap: wrap; } } +.related-post-list > .item { flex: 1 1 auto; margin: 4px; } +@media (min-width: 481px) { .related-post-list > .item { flex: 1 1 40%; } } + +.related-post-item { display: flex; text-align: left; line-height: 1.4; } +.related-post-item > a { flex: 1 1 100%; display: block; border-radius: 2px; box-shadow: 0 1px 1px rgba(102, 119, 136, 0.55); padding: 16px; text-decoration: none; } +.related-post-item > a, .related-post-item > a:visited { background: white; color: #667788; } +.related-post-item > a > strong, .related-post-item > a:visited > strong { color: #745fb5; } +.related-post-item > a:hover, .related-post-item > a:focus, .related-post-item > a:visited:hover, .related-post-item > a:visited:focus { color: #745fb5; } +.related-post-item > a:hover > strong, .related-post-item > a:focus > strong, .related-post-item > a:visited:hover > strong, .related-post-item > a:visited:focus > strong { color: #4f3d85; } +.related-post-item:first-of-type > a, .related-post-item:first-of-type > a:visited { background: #745fb5; color: rgba(255, 255, 255, 0.5); } +.related-post-item:first-of-type > a > strong, .related-post-item:first-of-type > a:visited > strong { color: white; } +.related-post-item:first-of-type > a:hover, .related-post-item:first-of-type > a:focus, .related-post-item:first-of-type > a:visited:hover, .related-post-item:first-of-type > a:visited:focus { color: white; } +.related-post-item:first-of-type > a:hover > strong, .related-post-item:first-of-type > a:focus > strong, .related-post-item:first-of-type > a:visited:hover > strong, .related-post-item:first-of-type > a:visited:focus > strong { color: white; } +.related-post-item:first-of-type > a:hover, .related-post-item:first-of-type > a:focus, .related-post-item:first-of-type > a:visited:hover, .related-post-item:first-of-type > a:visited:focus { background: #5f4aa1; } +@media (min-width: 481px) { .related-post-item > a > strong, .related-post-item > a > span { display: block; } } +.related-post-item > a > strong { font-size: 15px; font-weight: normal; } +@media (min-width: 480px) and (max-width: 768px) { .related-post-item > a > strong { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .related-post-item > a > strong { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .related-post-item > a > strong { font-size: 16px; } } +.related-post-item > a > span { font-size: 11px; } +@media (min-width: 480px) and (max-width: 768px) { .related-post-item > a > span { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .related-post-item > a > span { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .related-post-item > a > span { font-size: 12px; } } + +.search-box { background: white; box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3); display: flex; height: 64px; align-items: center; cursor: text; } +.search-box > input { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 17px; padding: 16px; height: 64px; background: transparent; border: 0; flex: 1 1 auto; padding-left: 0; font-weight: bold; color: #111; min-width: 48px; } +@media (min-width: 480px) and (max-width: 768px) { .search-box > input { font-size: calc( 17px + 2 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .search-box > input { font-size: calc( 19px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .search-box > input { font-size: 19px; } } +.search-box > input::placeholder { font-weight: normal; color: #667788; } +.search-box > input:focus { outline: 0; } +.search-box > .prefix { font-size: 13px; display: block; color: rgba(102, 119, 136, 0.5); font-weight: 400; user-select: none; line-height: 1.5em; padding: 2px 8px; border-radius: 3px; background: rgba(241, 243, 245, 0.5); margin: 0 0 0 16px; box-shadow: 0 1px 1px rgba(102, 119, 136, 0.25); } +@media (min-width: 480px) and (max-width: 768px) { .search-box > .prefix { font-size: calc( 13px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .search-box > .prefix { font-size: calc( 14px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .search-box > .prefix { font-size: 14px; } } +.search-box > .sep { color: rgba(102, 119, 136, 0.5); font-size: 17px; margin: 0 8px; } +@media (min-width: 480px) and (max-width: 768px) { .search-box > .sep { font-size: calc( 17px + 2 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .search-box > .sep { font-size: calc( 19px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .search-box > .sep { font-size: 19px; } } +@media (max-width: 768px) { .search-box > .prefix, .search-box > .sep { display: none; } + .search-box > input { padding-left: 16px; } } +.search-box::before { content: ''; display: inline-block; vertical-align: middle; background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(17%2C17%2C17)%22%20d%3D%22M337.51%20305.372h-17.502l-6.57-5.486c20.79-25.232%2033.92-57.054%2033.92-93.257C347.36%20127.63%20283.897%2064%20205.136%2064%20127.452%2064%2064%20127.632%2064%20206.63s63.452%20142.627%20142.225%20142.627c35.01%200%2067.83-13.167%2092.99-34.008l6.562%205.486v17.55L415.18%20448%20448%20415.086%20337.51%20305.372zm-131.285%200c-54.702%200-98.463-43.887-98.463-98.743%200-54.86%2043.76-98.743%2098.463-98.743%2054.7%200%2098.462%2043.884%2098.462%2098.742%200%2054.855-43.762%2098.742-98.462%2098.742z%22%2F%3E%3C%2Fsvg%3E") center center/32px 32px no-repeat; height: 32px; width: 32px; background-position: center center; flex: 0 0 64px; width: 64px; order: 2; } + +/* Small */ +.search-box.-small { height: 48px; } +.search-box.-small > input { padding: 8px; height: 48px; padding-left: 0; } +.search-box.-small > .prefix, .search-box.-small > .sep, .search-box.-small > input { font-size: 15px; } +@media (min-width: 480px) and (max-width: 768px) { .search-box.-small > .prefix, .search-box.-small > .sep, .search-box.-small > input { font-size: calc( 15px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .search-box.-small > .prefix, .search-box.-small > .sep, .search-box.-small > input { font-size: calc( 16px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .search-box.-small > .prefix, .search-box.-small > .sep, .search-box.-small > input { font-size: 16px; } } +.search-box.-small::before { flex: 0 0 48px; width: 48px; line-height: 48px; background-size: 24px 24px; background-position: center center; } + +/* Search bar around the footer */ +.search-footer { padding-top: 16px; padding-bottom: 16px; background: #f8f9fa; border-top: solid 1px rgba(102, 119, 136, 0.2); border-bottom: solid 1px rgba(102, 119, 136, 0.2); } +.search-footer > .container { padding-left: 16px; padding-right: 16px; max-width: 1232px; margin: 0 auto; } +@media (max-width: 480px) { .search-footer > .container { padding-left: 16px; } } +@media (max-width: 480px) { .search-footer > .container { padding-right: 16px; } } + +.search-footer-section { display: flex; } +.search-footer-section > .search { flex: 0 1 640px; } +.search-footer-section > .links { padding-left: 16px; flex: 0 1 auto; margin-left: auto; } +@media (max-width: 480px) { .search-footer-section > .links { padding-left: 16px; } } + +.SideAd { font-size: 11px; } +@media (min-width: 480px) and (max-width: 768px) { .SideAd { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .SideAd { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .SideAd { font-size: 12px; } } +.SideAd .carbon-img, .SideAd .carbon-text, .SideAd .carbon-poweredby { text-decoration: none; display: block; } +.SideAd .carbon-img { width: 130px; height: 100px; box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3); } +.SideAd .carbon-img > img { border-radius: 3px; background: white; } +.SideAd .carbon-img:hover { transform: translate3d(0, -1px, 0); box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3), 0 8px 12px rgba(58, 193, 203, 0.1); } +.SideAd .carbon-text, .SideAd .carbon-text:visited { color: #667788; } +.SideAd .carbon-poweredby, .SideAd .carbon-poweredby:visited { color: #9eaab6; } +.SideAd .carbon-text:hover, .SideAd .carbon-poweredby:hover { color: #745fb5; } +@media (min-width: 961px) { .SideAd { position: absolute; right: 32px; top: 80px; width: 130px; text-align: left; } + .SideAd .carbon-img { margin-bottom: 16px; } } +.SideAd .carbon-text:first-line { color: #111; font-weight: bold; } +.SideAd .carbon-poweredby::before { display: block; content: ''; width: 32px; height: 1px; background: rgba(102, 119, 136, 0.2); margin: 12px 0; } +@media (max-width: 960px) { .SideAd { margin: 16px auto; max-width: 300px; } + .SideAd::after { content: ''; display: table; clear: both; zoom: 1; } + .SideAd .carbon-img { float: left; margin-right: 16px; } } + +.site-header { margin: 32px 0; } +.site-header > p { margin: 0; padding: 0; text-align: center; color: #667788; } +.site-header > p > a { text-decoration: none; } +.site-header > h1 { font-size: 40px; line-height: 1.2; margin: 0; padding: 0; color: #111; font-weight: 200; text-align: center; margin-bottom: 16px; } +@media (min-width: 480px) and (max-width: 768px) { .site-header > h1 { font-size: calc( 40px + 6 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .site-header > h1 { font-size: calc( 46px + 3 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .site-header > h1 { font-size: 49px; } } +.site-header > .search { margin-top: 32px; } +.site-header > .action { margin-top: 32px; } +.site-header > .adbox { margin: 16px auto; } +@media (max-width: 480px) { .site-header > .adbox { margin-left: -16px; margin-right: -16px; } } + +.top-nav, .top-nav > .container { height: 64px; line-height: 64px; text-align: center; position: relative; } +@media (max-width: 480px) { .top-nav > .container { height: 32px; line-height: 32px; margin-top: 8px; } + .top-nav { height: 48px; padding: 8px 0; border-bottom: solid 1px rgba(102, 119, 136, 0.2); margin-bottom: 8px; } } +.top-nav > .container { padding-left: 16px; padding-right: 16px; max-width: 1232px; margin: 0 auto; } +@media (max-width: 480px) { .top-nav > .container { padding-left: 16px; } } +@media (max-width: 480px) { .top-nav > .container { padding-right: 16px; } } + +.top-nav > .container { display: flex; align-items: center; position: relative; } +.top-nav > .container > .left { flex: 0 0 auto; line-height: 32px; } +.top-nav > .container > .brand { flex: 1 1 auto; } +.top-nav > .container > .actions { flex: 0 0 auto; display: flex; } +.top-nav > .container > .brand { font-size: 11px; display: inline-block; font-weight: bold; text-transform: uppercase; letter-spacing: 0.05em; text-decoration: none; } +@media (min-width: 480px) and (max-width: 768px) { .top-nav > .container > .brand { font-size: calc( 11px + 1 * ( ( 100vw - 480px) / 288 ) ); } } +@media (min-width: 768px) and (max-width: 1280px) { .top-nav > .container > .brand { font-size: calc( 12px + 0 * ( ( 100vw - 768px) / 512 ) ); } } +@media (min-width: 1280px) { .top-nav > .container > .brand { font-size: 12px; } } +.top-nav > .container > .brand, .top-nav > .container > .brand:visited { color: #345; } +.top-nav > .container > .brand:hover { color: #745fb5; } +@media (max-width: 480px) { .top-nav > .container > .brand { display: none; } + .top-nav > .container > .actions { margin-left: auto; } } +@media (min-width: 481px) { .top-nav > .container > .actions { position: absolute; right: 16px; top: 16px; } } +@media (min-width: 481px) and (max-width: 480px) { .top-nav > .container > .actions { right: 16px; } } +@media (min-width: 481px) { .top-nav > .container > .left { position: absolute; left: 16px; top: 16px; } } +@media (min-width: 481px) and (max-width: 480px) { .top-nav > .container > .left { left: 16px; } } + +@media (min-width: 1232px) { .top-nav > .container > .left > .home { position: relative; left: -16px; } } + +.top-sheet.top-sheet { padding: 4px; text-decoration: none; } +.top-sheet.top-sheet > .info { display: block; background: #745fb5; color: white; text-align: left; padding: 16px; width: auto; border-radius: 3px; box-shadow: 0 1px 1px rgba(102, 119, 136, 0.55); text-shadow: 0 1px 1px rgba(51, 68, 85, 0.3); white-space: nowrap; } +.top-sheet.top-sheet:hover > .info, .top-sheet.top-sheet:focus > .info { box-shadow: 0 6px 8px rgba(102, 119, 136, 0.03), 0 1px 2px rgba(102, 119, 136, 0.3); } +.top-sheet.top-sheet:nth-of-type(3n + 1) > .info { background: linear-gradient(15deg, #745fb5, #9a6dbb); } +.top-sheet.top-sheet:nth-of-type(3n + 1):hover > .info, .top-sheet.top-sheet:nth-of-type(3n + 1):focus > .info { background: #5f4aa1; } +.top-sheet.top-sheet:nth-of-type(3n + 2) > .info { background: linear-gradient(15deg, #667788, #6f8793); } +.top-sheet.top-sheet:nth-of-type(3n + 2):hover > .info, .top-sheet.top-sheet:nth-of-type(3n + 2):focus > .info { background: #556371; } +.top-sheet.top-sheet:nth-of-type(3n + 3) > .info { background: linear-gradient(15deg, #14af83, #15b89a); } +.top-sheet.top-sheet:nth-of-type(3n + 3):hover > .info, .top-sheet.top-sheet:nth-of-type(3n + 3):focus > .info { background: #108b68; } +.top-sheet.top-sheet > .info > .title { display: none; } diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 000000000..bc2033b3e --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,2883 @@ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ +/** 1. Change the default font family in all browsers (opinionated). 2. Prevent adjustments of font size after orientation changes in IE and iOS. */ +html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/** Remove the margin in all browsers (opinionated). */ +body { margin: 0; } + +/* HTML5 display definitions ========================================================================== */ +/** Add the correct display in IE 9-. 1. Add the correct display in Edge, IE, and Firefox. 2. Add the correct display in IE. */ +article, aside, details, figcaption, figure, footer, header, main, menu, nav, section { /* 1 */ display: block; } + +summary { display: list-item; } + +/** Add the correct display in IE 9-. */ +audio, canvas, progress, video { display: inline-block; } + +/** Add the correct display in iOS 4-7. */ +audio:not([controls]) { display: none; height: 0; } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Add the correct display in IE 10-. 1. Add the correct display in IE. */ +template, [hidden] { display: none !important; } + +/* Links ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; /* 1 */ } + +/** Remove the outline on focused links when they are also active or hovered in all browsers (opinionated). */ +a:active, a:hover { outline-width: 0; } + +/* Text-level semantics ========================================================================== */ +/** 1. Remove the bottom border in Firefox 39-. 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Prevent the duplicate application of `bolder` by the next rule in Safari 6. */ +b, strong { font-weight: inherit; } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** Add the correct font style in Android 4.3-. */ +dfn { font-style: italic; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/** Add the correct background and color in IE 9-. */ +mark { background-color: #ff0; color: #000; } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10-. */ +img { border-style: none; } + +/** Hide the overflow in IE. */ +svg:not(:root) { overflow: hidden; } + +/* Grouping content ========================================================================== */ +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, pre, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct margin in IE 8. */ +figure { margin: 1em 40px; } + +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/* Forms ========================================================================== */ +/** 1. Change font properties to `inherit` in all browsers (opinionated). 2. Remove the margin in Firefox and Safari. */ +button, input, select, textarea { font: inherit; /* 1 */ margin: 0; /* 2 */ } + +/** Restore the font weight unset by the previous rule. */ +optgroup { font-weight: bold; } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` controls in Android 4. 2. Correct the inability to style clickable types in iOS and Safari. */ +button, html [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; /* 2 */ } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Change the border, margin, and padding in all browsers (opinionated). */ +fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Remove the default vertical scrollbar in IE. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10-. 2. Remove the padding in IE 10-. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding and cancel buttons in Chrome and Safari on OS X. */ +[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** Correct the text style of placeholders in Chrome, Edge, and Safari. */ +::-webkit-input-placeholder { color: inherit; opacity: 0.54; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +* { box-sizing: border-box; } + +input, select, textarea, button { font-family: inherit; font-size: inherit; line-height: inherit; } + +body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; line-height: 1.5; color: #24292e; background-color: #fff; } + +a { color: #0366d6; text-decoration: none; } +a:hover { text-decoration: underline; } + +b, strong { font-weight: 600; } + +hr, .rule { height: 0; margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom: 1px solid #dfe2e5; } +hr::before, .rule::before { display: table; content: ""; } +hr::after, .rule::after { display: table; clear: both; content: ""; } + +table { border-spacing: 0; border-collapse: collapse; } + +td, th { padding: 0; } + +button { cursor: pointer; border-radius: 0; } + +[hidden][hidden] { display: none !important; } + +details summary { cursor: pointer; } +details:not([open]) > *:not(summary) { display: none !important; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 0; } + +h1 { font-size: 32px; font-weight: 600; } + +h2 { font-size: 24px; font-weight: 600; } + +h3 { font-size: 20px; font-weight: 600; } + +h4 { font-size: 16px; font-weight: 600; } + +h5 { font-size: 14px; font-weight: 600; } + +h6 { font-size: 12px; font-weight: 600; } + +p { margin-top: 0; margin-bottom: 10px; } + +small { font-size: 90%; } + +blockquote { margin: 0; } + +ul, ol { padding-left: 0; margin-top: 0; margin-bottom: 0; } + +ol ol, ul ol { list-style-type: lower-roman; } + +ul ul ol, ul ol ol, ol ul ol, ol ol ol { list-style-type: lower-alpha; } + +dd { margin-left: 0; } + +tt, code { font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; } + +pre { margin-top: 0; margin-bottom: 0; font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; } + +.octicon { vertical-align: text-bottom; } + +/* Fade in an element */ +.anim-fade-in { animation-name: fade-in; animation-duration: 1s; animation-timing-function: ease-in-out; } +.anim-fade-in.fast { animation-duration: 300ms; } + +@keyframes fade-in { 0% { opacity: 0; } + 100% { opacity: 1; } } +/* Fade out an element */ +.anim-fade-out { animation-name: fade-out; animation-duration: 1s; animation-timing-function: ease-out; } +.anim-fade-out.fast { animation-duration: 0.3s; } + +@keyframes fade-out { 0% { opacity: 1; } + 100% { opacity: 0; } } +/* Fade in and slide up an element */ +.anim-fade-up { opacity: 0; animation-name: fade-up; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease-out; animation-delay: 1s; } + +@keyframes fade-up { 0% { opacity: 0.8; transform: translateY(100%); } + 100% { opacity: 1; transform: translateY(0); } } +/* Fade an element out and slide down */ +.anim-fade-down { animation-name: fade-down; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease-in; } + +@keyframes fade-down { 0% { opacity: 1; transform: translateY(0); } + 100% { opacity: 0.5; transform: translateY(100%); } } +/* Grow an element width from 0 to 100% */ +.anim-grow-x { width: 0%; animation-name: grow-x; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease; animation-delay: 0.5s; } + +@keyframes grow-x { to { width: 100%; } } +/* Shrink an element from 100% to 0% */ +.anim-shrink-x { animation-name: shrink-x; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease-in-out; animation-delay: 0.5s; } + +@keyframes shrink-x { to { width: 0%; } } +/* Fade in an element and scale it fast */ +.anim-scale-in { animation-name: scale-in; animation-duration: 0.15s; animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); } + +@keyframes scale-in { 0% { opacity: 0; transform: scale(0.5); } + 100% { opacity: 1; transform: scale(1); } } +/* Pulse an element's opacity */ +.anim-pulse { animation-name: pulse; animation-duration: 2s; animation-timing-function: linear; animation-iteration-count: infinite; } + +@keyframes pulse { 0% { opacity: 0.3; } + 10% { opacity: 1; } + 100% { opacity: 0.3; } } +/* Pulse in an element */ +.anim-pulse-in { animation-name: pulse-in; animation-duration: 0.5s; } + +@keyframes pulse-in { 0% { transform: scale3d(1, 1, 1); } + 50% { transform: scale3d(1.1, 1.1, 1.1); } + 100% { transform: scale3d(1, 1, 1); } } +/* Increase scale of an element on hover */ +.hover-grow { transition: transform 0.3s; backface-visibility: hidden; } +.hover-grow:hover { transform: scale(1.025); } + +/* Add a gray border on all sides */ +.border { border: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the left and right */ +.border-y { border-top: 1px #e1e4e8 solid !important; border-bottom: 1px #e1e4e8 solid !important; } + +/* Remove borders from all sides */ +.border-0 { border: 0 !important; } + +.border-dashed { border-style: dashed !important; } + +/* Use with .border to turn the border blue */ +.border-blue { border-color: #0366d6 !important; } + +/* Use with .border to turn the border blue-light */ +.border-blue-light { border-color: #c8e1ff !important; } + +/* Use with .border to turn the border green */ +.border-green { border-color: #34d058 !important; } + +/* Use with .border to turn the border green light */ +.border-green-light { border-color: #a2cbac !important; } + +/* Use with .border to turn the border red */ +.border-red { border-color: #d73a49 !important; } + +/* Use with .border to turn the border red-light */ +.border-red-light { border-color: #cea0a5 !important; } + +/* Use with .border to turn the border purple */ +.border-purple { border-color: #6f42c1 !important; } + +/* Use with .border to turn the border yellow */ +.border-yellow { border-color: #d9d0a5 !important; } + +/* Use with .border to turn the border gray-light */ +.border-gray-light { border-color: #eaecef !important; } + +/* Use with .border to turn the border gray-dark */ +.border-gray-dark { border-color: #d1d5da !important; } + +/* Use with .border to turn the border rgba black 0.15 */ +.border-black-fade { border-color: rgba(27, 31, 35, 0.15) !important; } + +/* Add a gray border */ +/* Add a gray border to the top */ +.border-top { border-top: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the right */ +.border-right { border-right: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the bottom */ +.border-bottom { border-bottom: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the left */ +.border-left { border-left: 1px #e1e4e8 solid !important; } + +/* Remove the top border */ +.border-top-0 { border-top: 0 !important; } + +/* Remove the right border */ +.border-right-0 { border-right: 0 !important; } + +/* Remove the bottom border */ +.border-bottom-0 { border-bottom: 0 !important; } + +/* Remove the left border */ +.border-left-0 { border-left: 0 !important; } + +/* Remove the border-radius */ +.rounded-0 { border-radius: 0 !important; } + +/* Add a border-radius to all corners */ +.rounded-1 { border-radius: 3px !important; } + +/* Add a 2x border-radius to all corners */ +.rounded-2 { border-radius: 6px !important; } + +.rounded-top-0 { border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; } + +.rounded-top-1 { border-top-left-radius: 3px !important; border-top-right-radius: 3px !important; } + +.rounded-top-2 { border-top-left-radius: 6px !important; border-top-right-radius: 6px !important; } + +.rounded-right-0 { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } + +.rounded-right-1 { border-top-right-radius: 3px !important; border-bottom-right-radius: 3px !important; } + +.rounded-right-2 { border-top-right-radius: 6px !important; border-bottom-right-radius: 6px !important; } + +.rounded-bottom-0 { border-bottom-right-radius: 0 !important; border-bottom-left-radius: 0 !important; } + +.rounded-bottom-1 { border-bottom-right-radius: 3px !important; border-bottom-left-radius: 3px !important; } + +.rounded-bottom-2 { border-bottom-right-radius: 6px !important; border-bottom-left-radius: 6px !important; } + +.rounded-left-0 { border-bottom-left-radius: 0 !important; border-top-left-radius: 0 !important; } + +.rounded-left-1 { border-bottom-left-radius: 3px !important; border-top-left-radius: 3px !important; } + +.rounded-left-2 { border-bottom-left-radius: 6px !important; border-top-left-radius: 6px !important; } + +@media (min-width: 544px) { /* Add a gray border */ + /* Add a gray border to the top */ + .border-sm-top { border-top: 1px #e1e4e8 solid !important; } + /* Add a gray border to the right */ + .border-sm-right { border-right: 1px #e1e4e8 solid !important; } + /* Add a gray border to the bottom */ + .border-sm-bottom { border-bottom: 1px #e1e4e8 solid !important; } + /* Add a gray border to the left */ + .border-sm-left { border-left: 1px #e1e4e8 solid !important; } + /* Remove the top border */ + .border-sm-top-0 { border-top: 0 !important; } + /* Remove the right border */ + .border-sm-right-0 { border-right: 0 !important; } + /* Remove the bottom border */ + .border-sm-bottom-0 { border-bottom: 0 !important; } + /* Remove the left border */ + .border-sm-left-0 { border-left: 0 !important; } + /* Remove the border-radius */ + .rounded-sm-0 { border-radius: 0 !important; } + /* Add a border-radius to all corners */ + .rounded-sm-1 { border-radius: 3px !important; } + /* Add a 2x border-radius to all corners */ + .rounded-sm-2 { border-radius: 6px !important; } + .rounded-sm-top-0 { border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; } + .rounded-sm-top-1 { border-top-left-radius: 3px !important; border-top-right-radius: 3px !important; } + .rounded-sm-top-2 { border-top-left-radius: 6px !important; border-top-right-radius: 6px !important; } + .rounded-sm-right-0 { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } + .rounded-sm-right-1 { border-top-right-radius: 3px !important; border-bottom-right-radius: 3px !important; } + .rounded-sm-right-2 { border-top-right-radius: 6px !important; border-bottom-right-radius: 6px !important; } + .rounded-sm-bottom-0 { border-bottom-right-radius: 0 !important; border-bottom-left-radius: 0 !important; } + .rounded-sm-bottom-1 { border-bottom-right-radius: 3px !important; border-bottom-left-radius: 3px !important; } + .rounded-sm-bottom-2 { border-bottom-right-radius: 6px !important; border-bottom-left-radius: 6px !important; } + .rounded-sm-left-0 { border-bottom-left-radius: 0 !important; border-top-left-radius: 0 !important; } + .rounded-sm-left-1 { border-bottom-left-radius: 3px !important; border-top-left-radius: 3px !important; } + .rounded-sm-left-2 { border-bottom-left-radius: 6px !important; border-top-left-radius: 6px !important; } } +@media (min-width: 768px) { /* Add a gray border */ + /* Add a gray border to the top */ + .border-md-top { border-top: 1px #e1e4e8 solid !important; } + /* Add a gray border to the right */ + .border-md-right { border-right: 1px #e1e4e8 solid !important; } + /* Add a gray border to the bottom */ + .border-md-bottom { border-bottom: 1px #e1e4e8 solid !important; } + /* Add a gray border to the left */ + .border-md-left { border-left: 1px #e1e4e8 solid !important; } + /* Remove the top border */ + .border-md-top-0 { border-top: 0 !important; } + /* Remove the right border */ + .border-md-right-0 { border-right: 0 !important; } + /* Remove the bottom border */ + .border-md-bottom-0 { border-bottom: 0 !important; } + /* Remove the left border */ + .border-md-left-0 { border-left: 0 !important; } + /* Remove the border-radius */ + .rounded-md-0 { border-radius: 0 !important; } + /* Add a border-radius to all corners */ + .rounded-md-1 { border-radius: 3px !important; } + /* Add a 2x border-radius to all corners */ + .rounded-md-2 { border-radius: 6px !important; } + .rounded-md-top-0 { border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; } + .rounded-md-top-1 { border-top-left-radius: 3px !important; border-top-right-radius: 3px !important; } + .rounded-md-top-2 { border-top-left-radius: 6px !important; border-top-right-radius: 6px !important; } + .rounded-md-right-0 { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } + .rounded-md-right-1 { border-top-right-radius: 3px !important; border-bottom-right-radius: 3px !important; } + .rounded-md-right-2 { border-top-right-radius: 6px !important; border-bottom-right-radius: 6px !important; } + .rounded-md-bottom-0 { border-bottom-right-radius: 0 !important; border-bottom-left-radius: 0 !important; } + .rounded-md-bottom-1 { border-bottom-right-radius: 3px !important; border-bottom-left-radius: 3px !important; } + .rounded-md-bottom-2 { border-bottom-right-radius: 6px !important; border-bottom-left-radius: 6px !important; } + .rounded-md-left-0 { border-bottom-left-radius: 0 !important; border-top-left-radius: 0 !important; } + .rounded-md-left-1 { border-bottom-left-radius: 3px !important; border-top-left-radius: 3px !important; } + .rounded-md-left-2 { border-bottom-left-radius: 6px !important; border-top-left-radius: 6px !important; } } +@media (min-width: 1012px) { /* Add a gray border */ + /* Add a gray border to the top */ + .border-lg-top { border-top: 1px #e1e4e8 solid !important; } + /* Add a gray border to the right */ + .border-lg-right { border-right: 1px #e1e4e8 solid !important; } + /* Add a gray border to the bottom */ + .border-lg-bottom { border-bottom: 1px #e1e4e8 solid !important; } + /* Add a gray border to the left */ + .border-lg-left { border-left: 1px #e1e4e8 solid !important; } + /* Remove the top border */ + .border-lg-top-0 { border-top: 0 !important; } + /* Remove the right border */ + .border-lg-right-0 { border-right: 0 !important; } + /* Remove the bottom border */ + .border-lg-bottom-0 { border-bottom: 0 !important; } + /* Remove the left border */ + .border-lg-left-0 { border-left: 0 !important; } + /* Remove the border-radius */ + .rounded-lg-0 { border-radius: 0 !important; } + /* Add a border-radius to all corners */ + .rounded-lg-1 { border-radius: 3px !important; } + /* Add a 2x border-radius to all corners */ + .rounded-lg-2 { border-radius: 6px !important; } + .rounded-lg-top-0 { border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; } + .rounded-lg-top-1 { border-top-left-radius: 3px !important; border-top-right-radius: 3px !important; } + .rounded-lg-top-2 { border-top-left-radius: 6px !important; border-top-right-radius: 6px !important; } + .rounded-lg-right-0 { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } + .rounded-lg-right-1 { border-top-right-radius: 3px !important; border-bottom-right-radius: 3px !important; } + .rounded-lg-right-2 { border-top-right-radius: 6px !important; border-bottom-right-radius: 6px !important; } + .rounded-lg-bottom-0 { border-bottom-right-radius: 0 !important; border-bottom-left-radius: 0 !important; } + .rounded-lg-bottom-1 { border-bottom-right-radius: 3px !important; border-bottom-left-radius: 3px !important; } + .rounded-lg-bottom-2 { border-bottom-right-radius: 6px !important; border-bottom-left-radius: 6px !important; } + .rounded-lg-left-0 { border-bottom-left-radius: 0 !important; border-top-left-radius: 0 !important; } + .rounded-lg-left-1 { border-bottom-left-radius: 3px !important; border-top-left-radius: 3px !important; } + .rounded-lg-left-2 { border-bottom-left-radius: 6px !important; border-top-left-radius: 6px !important; } } +@media (min-width: 1280px) { /* Add a gray border */ + /* Add a gray border to the top */ + .border-xl-top { border-top: 1px #e1e4e8 solid !important; } + /* Add a gray border to the right */ + .border-xl-right { border-right: 1px #e1e4e8 solid !important; } + /* Add a gray border to the bottom */ + .border-xl-bottom { border-bottom: 1px #e1e4e8 solid !important; } + /* Add a gray border to the left */ + .border-xl-left { border-left: 1px #e1e4e8 solid !important; } + /* Remove the top border */ + .border-xl-top-0 { border-top: 0 !important; } + /* Remove the right border */ + .border-xl-right-0 { border-right: 0 !important; } + /* Remove the bottom border */ + .border-xl-bottom-0 { border-bottom: 0 !important; } + /* Remove the left border */ + .border-xl-left-0 { border-left: 0 !important; } + /* Remove the border-radius */ + .rounded-xl-0 { border-radius: 0 !important; } + /* Add a border-radius to all corners */ + .rounded-xl-1 { border-radius: 3px !important; } + /* Add a 2x border-radius to all corners */ + .rounded-xl-2 { border-radius: 6px !important; } + .rounded-xl-top-0 { border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; } + .rounded-xl-top-1 { border-top-left-radius: 3px !important; border-top-right-radius: 3px !important; } + .rounded-xl-top-2 { border-top-left-radius: 6px !important; border-top-right-radius: 6px !important; } + .rounded-xl-right-0 { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } + .rounded-xl-right-1 { border-top-right-radius: 3px !important; border-bottom-right-radius: 3px !important; } + .rounded-xl-right-2 { border-top-right-radius: 6px !important; border-bottom-right-radius: 6px !important; } + .rounded-xl-bottom-0 { border-bottom-right-radius: 0 !important; border-bottom-left-radius: 0 !important; } + .rounded-xl-bottom-1 { border-bottom-right-radius: 3px !important; border-bottom-left-radius: 3px !important; } + .rounded-xl-bottom-2 { border-bottom-right-radius: 6px !important; border-bottom-left-radius: 6px !important; } + .rounded-xl-left-0 { border-bottom-left-radius: 0 !important; border-top-left-radius: 0 !important; } + .rounded-xl-left-1 { border-bottom-left-radius: 3px !important; border-top-left-radius: 3px !important; } + .rounded-xl-left-2 { border-bottom-left-radius: 6px !important; border-top-left-radius: 6px !important; } } +/* Add a 50% border-radius to make something into a circle */ +.circle { border-radius: 50% !important; } + +.box-shadow { box-shadow: 0 1px 1px rgba(27, 31, 35, 0.1) !important; } + +.box-shadow-medium { box-shadow: 0 1px 5px rgba(27, 31, 35, 0.15) !important; } + +.box-shadow-large { box-shadow: 0 1px 15px rgba(27, 31, 35, 0.15) !important; } + +.box-shadow-extra-large { box-shadow: 0 10px 50px rgba(27, 31, 35, 0.07) !important; } + +.box-shadow-none { box-shadow: none !important; } + +/* Set the background to $bg-white */ +.bg-white { background-color: #fff !important; } + +/* Set the background to $bg-blue */ +.bg-blue { background-color: #0366d6 !important; } + +/* Set the background to $bg-blue-light */ +.bg-blue-light { background-color: #f1f8ff !important; } + +/* Set the background to $bg-gray-dark */ +.bg-gray-dark { background-color: #24292e !important; } + +/* Set the background to $bg-gray */ +.bg-gray { background-color: #f6f8fa !important; } + +/* Set the background to $bg-gray-light */ +.bg-gray-light { background-color: #fafbfc !important; } + +/* Set the background to $bg-green */ +.bg-green { background-color: #28a745 !important; } + +/* Set the background to $bg-green-light */ +.bg-green-light { background-color: #dcffe4 !important; } + +/* Set the background to $bg-red */ +.bg-red { background-color: #d73a49 !important; } + +/* Set the background to $bg-red-light */ +.bg-red-light { background-color: #ffdce0 !important; } + +/* Set the background to $bg-yellow */ +.bg-yellow { background-color: #ffd33d !important; } + +/* Set the background to $bg-yellow-light */ +.bg-yellow-light { background-color: #fff5b1 !important; } + +/* Set the background to $bg-purple */ +.bg-purple { background-color: #6f42c1 !important; } + +/* Set the background to $bg-purple-light */ +.bg-purple-light { background-color: #f5f0ff !important; } + +.bg-shade-gradient { background-image: linear-gradient(180deg, rgba(27, 31, 35, 0.065), rgba(27, 31, 35, 0)) !important; background-repeat: no-repeat !important; background-size: 100% 200px !important; } + +/* Set the text color to $text-blue */ +.text-blue { color: #0366d6 !important; } + +/* Set the text color to $text-red */ +.text-red { color: #cb2431 !important; } + +/* Set the text color to $text-gray-light */ +.text-gray-light { color: #6a737d !important; } + +/* Set the text color to $text-gray */ +.text-gray { color: #586069 !important; } + +/* Set the text color to $text-gray-dark */ +.text-gray-dark { color: #24292e !important; } + +/* Set the text color to $text-green */ +.text-green { color: #28a745 !important; } + +/* Set the text color to $text-orange */ +.text-orange { color: #a04100 !important; } + +/* Set the text color to $text-orange-light */ +.text-orange-light { color: #e36209 !important; } + +/* Set the text color to $text-purple */ +.text-purple { color: #6f42c1 !important; } + +/* Set the text color to $text-white */ +.text-white { color: #fff !important; } + +/* Set the text color to inherit */ +.text-inherit { color: inherit !important; } + +.text-pending { color: #b08800 !important; } + +.bg-pending { color: #dbab09 !important; } + +.link-gray { color: #586069 !important; } +.link-gray:hover { color: #0366d6 !important; } + +.link-gray-dark { color: #24292e !important; } +.link-gray-dark:hover { color: #0366d6 !important; } + +/* Set the link color to $text-blue on hover Useful when you want only part of a link to turn blue on hover */ +.link-hover-blue:hover { color: #0366d6 !important; } + +/* Make a link $text-gray, then $text-blue on hover and removes the underline */ +.muted-link { color: #586069 !important; } +.muted-link:hover { color: #0366d6 !important; text-decoration: none; } + +.details-overlay[open] > summary::before { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 80; display: block; cursor: default; content: " "; background: transparent; } + +.details-overlay-dark[open] > summary::before { z-index: 99; background: rgba(27, 31, 35, 0.5); } + +.flex-row { flex-direction: row !important; } + +.flex-row-reverse { flex-direction: row-reverse !important; } + +.flex-column { flex-direction: column !important; } + +.flex-wrap { flex-wrap: wrap !important; } + +.flex-nowrap { flex-wrap: nowrap !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-center { justify-content: center !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.flex-items-start { align-items: flex-start !important; } + +.flex-items-end { align-items: flex-end !important; } + +.flex-items-center { align-items: center !important; } + +.flex-items-baseline { align-items: baseline !important; } + +.flex-items-stretch { align-items: stretch !important; } + +.flex-content-start { align-content: flex-start !important; } + +.flex-content-end { align-content: flex-end !important; } + +.flex-content-center { align-content: center !important; } + +.flex-content-between { align-content: space-between !important; } + +.flex-content-around { align-content: space-around !important; } + +.flex-content-stretch { align-content: stretch !important; } + +.flex-auto { flex: 1 1 auto !important; } + +.flex-shrink-0 { flex-shrink: 0 !important; } + +.flex-self-auto { align-self: auto !important; } + +.flex-self-start { align-self: flex-start !important; } + +.flex-self-end { align-self: flex-end !important; } + +.flex-self-center { align-self: center !important; } + +.flex-self-baseline { align-self: baseline !important; } + +.flex-self-stretch { align-self: stretch !important; } + +.flex-item-equal { flex-grow: 1; flex-basis: 0; } + +@media (min-width: 544px) { .flex-sm-row { flex-direction: row !important; } + .flex-sm-row-reverse { flex-direction: row-reverse !important; } + .flex-sm-column { flex-direction: column !important; } + .flex-sm-wrap { flex-wrap: wrap !important; } + .flex-sm-nowrap { flex-wrap: nowrap !important; } + .flex-sm-justify-start { justify-content: flex-start !important; } + .flex-sm-justify-end { justify-content: flex-end !important; } + .flex-sm-justify-center { justify-content: center !important; } + .flex-sm-justify-between { justify-content: space-between !important; } + .flex-sm-justify-around { justify-content: space-around !important; } + .flex-sm-items-start { align-items: flex-start !important; } + .flex-sm-items-end { align-items: flex-end !important; } + .flex-sm-items-center { align-items: center !important; } + .flex-sm-items-baseline { align-items: baseline !important; } + .flex-sm-items-stretch { align-items: stretch !important; } + .flex-sm-content-start { align-content: flex-start !important; } + .flex-sm-content-end { align-content: flex-end !important; } + .flex-sm-content-center { align-content: center !important; } + .flex-sm-content-between { align-content: space-between !important; } + .flex-sm-content-around { align-content: space-around !important; } + .flex-sm-content-stretch { align-content: stretch !important; } + .flex-sm-auto { flex: 1 1 auto !important; } + .flex-sm-shrink-0 { flex-shrink: 0 !important; } + .flex-sm-self-auto { align-self: auto !important; } + .flex-sm-self-start { align-self: flex-start !important; } + .flex-sm-self-end { align-self: flex-end !important; } + .flex-sm-self-center { align-self: center !important; } + .flex-sm-self-baseline { align-self: baseline !important; } + .flex-sm-self-stretch { align-self: stretch !important; } + .flex-sm-item-equal { flex-grow: 1; flex-basis: 0; } } +@media (min-width: 768px) { .flex-md-row { flex-direction: row !important; } + .flex-md-row-reverse { flex-direction: row-reverse !important; } + .flex-md-column { flex-direction: column !important; } + .flex-md-wrap { flex-wrap: wrap !important; } + .flex-md-nowrap { flex-wrap: nowrap !important; } + .flex-md-justify-start { justify-content: flex-start !important; } + .flex-md-justify-end { justify-content: flex-end !important; } + .flex-md-justify-center { justify-content: center !important; } + .flex-md-justify-between { justify-content: space-between !important; } + .flex-md-justify-around { justify-content: space-around !important; } + .flex-md-items-start { align-items: flex-start !important; } + .flex-md-items-end { align-items: flex-end !important; } + .flex-md-items-center { align-items: center !important; } + .flex-md-items-baseline { align-items: baseline !important; } + .flex-md-items-stretch { align-items: stretch !important; } + .flex-md-content-start { align-content: flex-start !important; } + .flex-md-content-end { align-content: flex-end !important; } + .flex-md-content-center { align-content: center !important; } + .flex-md-content-between { align-content: space-between !important; } + .flex-md-content-around { align-content: space-around !important; } + .flex-md-content-stretch { align-content: stretch !important; } + .flex-md-auto { flex: 1 1 auto !important; } + .flex-md-shrink-0 { flex-shrink: 0 !important; } + .flex-md-self-auto { align-self: auto !important; } + .flex-md-self-start { align-self: flex-start !important; } + .flex-md-self-end { align-self: flex-end !important; } + .flex-md-self-center { align-self: center !important; } + .flex-md-self-baseline { align-self: baseline !important; } + .flex-md-self-stretch { align-self: stretch !important; } + .flex-md-item-equal { flex-grow: 1; flex-basis: 0; } } +@media (min-width: 1012px) { .flex-lg-row { flex-direction: row !important; } + .flex-lg-row-reverse { flex-direction: row-reverse !important; } + .flex-lg-column { flex-direction: column !important; } + .flex-lg-wrap { flex-wrap: wrap !important; } + .flex-lg-nowrap { flex-wrap: nowrap !important; } + .flex-lg-justify-start { justify-content: flex-start !important; } + .flex-lg-justify-end { justify-content: flex-end !important; } + .flex-lg-justify-center { justify-content: center !important; } + .flex-lg-justify-between { justify-content: space-between !important; } + .flex-lg-justify-around { justify-content: space-around !important; } + .flex-lg-items-start { align-items: flex-start !important; } + .flex-lg-items-end { align-items: flex-end !important; } + .flex-lg-items-center { align-items: center !important; } + .flex-lg-items-baseline { align-items: baseline !important; } + .flex-lg-items-stretch { align-items: stretch !important; } + .flex-lg-content-start { align-content: flex-start !important; } + .flex-lg-content-end { align-content: flex-end !important; } + .flex-lg-content-center { align-content: center !important; } + .flex-lg-content-between { align-content: space-between !important; } + .flex-lg-content-around { align-content: space-around !important; } + .flex-lg-content-stretch { align-content: stretch !important; } + .flex-lg-auto { flex: 1 1 auto !important; } + .flex-lg-shrink-0 { flex-shrink: 0 !important; } + .flex-lg-self-auto { align-self: auto !important; } + .flex-lg-self-start { align-self: flex-start !important; } + .flex-lg-self-end { align-self: flex-end !important; } + .flex-lg-self-center { align-self: center !important; } + .flex-lg-self-baseline { align-self: baseline !important; } + .flex-lg-self-stretch { align-self: stretch !important; } + .flex-lg-item-equal { flex-grow: 1; flex-basis: 0; } } +@media (min-width: 1280px) { .flex-xl-row { flex-direction: row !important; } + .flex-xl-row-reverse { flex-direction: row-reverse !important; } + .flex-xl-column { flex-direction: column !important; } + .flex-xl-wrap { flex-wrap: wrap !important; } + .flex-xl-nowrap { flex-wrap: nowrap !important; } + .flex-xl-justify-start { justify-content: flex-start !important; } + .flex-xl-justify-end { justify-content: flex-end !important; } + .flex-xl-justify-center { justify-content: center !important; } + .flex-xl-justify-between { justify-content: space-between !important; } + .flex-xl-justify-around { justify-content: space-around !important; } + .flex-xl-items-start { align-items: flex-start !important; } + .flex-xl-items-end { align-items: flex-end !important; } + .flex-xl-items-center { align-items: center !important; } + .flex-xl-items-baseline { align-items: baseline !important; } + .flex-xl-items-stretch { align-items: stretch !important; } + .flex-xl-content-start { align-content: flex-start !important; } + .flex-xl-content-end { align-content: flex-end !important; } + .flex-xl-content-center { align-content: center !important; } + .flex-xl-content-between { align-content: space-between !important; } + .flex-xl-content-around { align-content: space-around !important; } + .flex-xl-content-stretch { align-content: stretch !important; } + .flex-xl-auto { flex: 1 1 auto !important; } + .flex-xl-shrink-0 { flex-shrink: 0 !important; } + .flex-xl-self-auto { align-self: auto !important; } + .flex-xl-self-start { align-self: flex-start !important; } + .flex-xl-self-end { align-self: flex-end !important; } + .flex-xl-self-center { align-self: center !important; } + .flex-xl-self-baseline { align-self: baseline !important; } + .flex-xl-self-stretch { align-self: stretch !important; } + .flex-xl-item-equal { flex-grow: 1; flex-basis: 0; } } +/* Set position to static */ +.position-static { position: static !important; } + +/* Set position to relative */ +.position-relative { position: relative !important; } + +/* Set position to absolute */ +.position-absolute { position: absolute !important; } + +/* Set position to fixed */ +.position-fixed { position: fixed !important; } + +/* Set top 0 */ +.top-0 { top: 0 !important; } + +/* Set right 0 */ +.right-0 { right: 0 !important; } + +/* Set bottom 0 */ +.bottom-0 { bottom: 0 !important; } + +/* Set left 0 */ +.left-0 { left: 0 !important; } + +/* Vertical align middle */ +.v-align-middle { vertical-align: middle !important; } + +/* Vertical align top */ +.v-align-top { vertical-align: top !important; } + +/* Vertical align bottom */ +.v-align-bottom { vertical-align: bottom !important; } + +/* Vertical align to the top of the text */ +.v-align-text-top { vertical-align: text-top !important; } + +/* Vertical align to the bottom of the text */ +.v-align-text-bottom { vertical-align: text-bottom !important; } + +/* Vertical align to the parent's baseline */ +.v-align-baseline { vertical-align: baseline !important; } + +/* Set the overflow hidden */ +.overflow-hidden { overflow: hidden !important; } + +/* Set the overflow scroll */ +.overflow-scroll { overflow: scroll !important; } + +/* Set the overflow auto */ +.overflow-auto { overflow: auto !important; } + +/* Clear floats around the element */ +.clearfix::before { display: table; content: ""; } +.clearfix::after { display: table; clear: both; content: ""; } + +/* Float to the left */ +.float-left { float: left !important; } + +/* Float to the right */ +.float-right { float: right !important; } + +/* No float */ +.float-none { float: none !important; } + +@media (min-width: 544px) { /* Float to the left */ + .float-sm-left { float: left !important; } + /* Float to the right */ + .float-sm-right { float: right !important; } + /* No float */ + .float-sm-none { float: none !important; } } +@media (min-width: 768px) { /* Float to the left */ + .float-md-left { float: left !important; } + /* Float to the right */ + .float-md-right { float: right !important; } + /* No float */ + .float-md-none { float: none !important; } } +@media (min-width: 1012px) { /* Float to the left */ + .float-lg-left { float: left !important; } + /* Float to the right */ + .float-lg-right { float: right !important; } + /* No float */ + .float-lg-none { float: none !important; } } +@media (min-width: 1280px) { /* Float to the left */ + .float-xl-left { float: left !important; } + /* Float to the right */ + .float-xl-right { float: right !important; } + /* No float */ + .float-xl-none { float: none !important; } } +/* Max width 100% */ +.width-fit { max-width: 100% !important; } + +/* Set the width to 100% */ +.width-full { width: 100% !important; } + +/* Max height 100% */ +.height-fit { max-height: 100% !important; } + +/* Set the height to 100% */ +.height-full { height: 100% !important; } + +/* Remove min-width from element */ +.min-width-0 { min-width: 0 !important; } + +/* Set the direction to rtl */ +.direction-rtl { direction: rtl !important; } + +/* Set the direction to ltr */ +.direction-ltr { direction: ltr !important; } + +@media (min-width: 544px) { /* Set the direction to rtl */ + .direction-sm-rtl { direction: rtl !important; } + /* Set the direction to ltr */ + .direction-sm-ltr { direction: ltr !important; } } +@media (min-width: 768px) { /* Set the direction to rtl */ + .direction-md-rtl { direction: rtl !important; } + /* Set the direction to ltr */ + .direction-md-ltr { direction: ltr !important; } } +@media (min-width: 1012px) { /* Set the direction to rtl */ + .direction-lg-rtl { direction: rtl !important; } + /* Set the direction to ltr */ + .direction-lg-ltr { direction: ltr !important; } } +@media (min-width: 1280px) { /* Set the direction to rtl */ + .direction-xl-rtl { direction: rtl !important; } + /* Set the direction to ltr */ + .direction-xl-ltr { direction: ltr !important; } } +/* Set a $size margin to all sides at $breakpoint */ +.m-0 { margin: 0 !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-0 { margin-top: 0 !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-0 { margin-right: 0 !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-0 { margin-bottom: 0 !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-0 { margin-left: 0 !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-1 { margin: 4px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-1 { margin-top: 4px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-1 { margin-right: 4px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-1 { margin-bottom: 4px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-1 { margin-left: 4px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n1 { margin-top: -4px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n1 { margin-right: -4px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n1 { margin-bottom: -4px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n1 { margin-left: -4px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-1 { margin-right: 4px !important; margin-left: 4px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-1 { margin-top: 4px !important; margin-bottom: 4px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-2 { margin: 8px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-2 { margin-top: 8px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-2 { margin-right: 8px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-2 { margin-bottom: 8px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-2 { margin-left: 8px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n2 { margin-top: -8px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n2 { margin-right: -8px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n2 { margin-bottom: -8px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n2 { margin-left: -8px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-2 { margin-right: 8px !important; margin-left: 8px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-2 { margin-top: 8px !important; margin-bottom: 8px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-3 { margin: 16px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-3 { margin-top: 16px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-3 { margin-right: 16px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-3 { margin-bottom: 16px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-3 { margin-left: 16px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n3 { margin-top: -16px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n3 { margin-right: -16px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n3 { margin-bottom: -16px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n3 { margin-left: -16px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-3 { margin-right: 16px !important; margin-left: 16px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-3 { margin-top: 16px !important; margin-bottom: 16px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-4 { margin: 24px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-4 { margin-top: 24px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-4 { margin-right: 24px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-4 { margin-bottom: 24px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-4 { margin-left: 24px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n4 { margin-top: -24px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n4 { margin-right: -24px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n4 { margin-bottom: -24px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n4 { margin-left: -24px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-4 { margin-right: 24px !important; margin-left: 24px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-4 { margin-top: 24px !important; margin-bottom: 24px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-5 { margin: 32px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-5 { margin-top: 32px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-5 { margin-right: 32px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-5 { margin-bottom: 32px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-5 { margin-left: 32px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n5 { margin-top: -32px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n5 { margin-right: -32px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n5 { margin-bottom: -32px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n5 { margin-left: -32px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-5 { margin-right: 32px !important; margin-left: 32px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-5 { margin-top: 32px !important; margin-bottom: 32px !important; } + +/* Set a $size margin to all sides at $breakpoint */ +.m-6 { margin: 40px !important; } + +/* Set a $size margin on the top at $breakpoint */ +.mt-6 { margin-top: 40px !important; } + +/* Set a $size margin on the right at $breakpoint */ +.mr-6 { margin-right: 40px !important; } + +/* Set a $size margin on the bottom at $breakpoint */ +.mb-6 { margin-bottom: 40px !important; } + +/* Set a $size margin on the left at $breakpoint */ +.ml-6 { margin-left: 40px !important; } + +/* Set a negative $size margin on top at $breakpoint */ +.mt-n6 { margin-top: -40px !important; } + +/* Set a negative $size margin on the right at $breakpoint */ +.mr-n6 { margin-right: -40px !important; } + +/* Set a negative $size margin on the bottom at $breakpoint */ +.mb-n6 { margin-bottom: -40px !important; } + +/* Set a negative $size margin on the left at $breakpoint */ +.ml-n6 { margin-left: -40px !important; } + +/* Set a $size margin on the left & right at $breakpoint */ +.mx-6 { margin-right: 40px !important; margin-left: 40px !important; } + +/* Set a $size margin on the top & bottom at $breakpoint */ +.my-6 { margin-top: 40px !important; margin-bottom: 40px !important; } + +/* responsive horizontal auto margins */ +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 544px) { /* Set a $size margin to all sides at $breakpoint */ + .m-sm-0 { margin: 0 !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-0 { margin-top: 0 !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-0 { margin-right: 0 !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-0 { margin-bottom: 0 !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-0 { margin-left: 0 !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-1 { margin: 4px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-1 { margin-top: 4px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-1 { margin-right: 4px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-1 { margin-bottom: 4px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-1 { margin-left: 4px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n1 { margin-top: -4px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n1 { margin-right: -4px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n1 { margin-bottom: -4px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n1 { margin-left: -4px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-1 { margin-top: 4px !important; margin-bottom: 4px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-2 { margin: 8px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-2 { margin-top: 8px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-2 { margin-right: 8px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-2 { margin-bottom: 8px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-2 { margin-left: 8px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n2 { margin-top: -8px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n2 { margin-right: -8px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n2 { margin-bottom: -8px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n2 { margin-left: -8px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-2 { margin-top: 8px !important; margin-bottom: 8px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-3 { margin: 16px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-3 { margin-top: 16px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-3 { margin-right: 16px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-3 { margin-bottom: 16px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-3 { margin-left: 16px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n3 { margin-top: -16px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n3 { margin-right: -16px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n3 { margin-bottom: -16px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n3 { margin-left: -16px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-3 { margin-top: 16px !important; margin-bottom: 16px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-4 { margin: 24px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-4 { margin-top: 24px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-4 { margin-right: 24px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-4 { margin-bottom: 24px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-4 { margin-left: 24px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n4 { margin-top: -24px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n4 { margin-right: -24px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n4 { margin-bottom: -24px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n4 { margin-left: -24px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-4 { margin-top: 24px !important; margin-bottom: 24px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-5 { margin: 32px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-5 { margin-top: 32px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-5 { margin-right: 32px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-5 { margin-bottom: 32px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-5 { margin-left: 32px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n5 { margin-top: -32px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n5 { margin-right: -32px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n5 { margin-bottom: -32px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n5 { margin-left: -32px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-5 { margin-top: 32px !important; margin-bottom: 32px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-sm-6 { margin: 40px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-sm-6 { margin-top: 40px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-sm-6 { margin-right: 40px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-sm-6 { margin-bottom: 40px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-sm-6 { margin-left: 40px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-sm-n6 { margin-top: -40px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-sm-n6 { margin-right: -40px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-sm-n6 { margin-bottom: -40px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-sm-n6 { margin-left: -40px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-sm-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-sm-6 { margin-top: 40px !important; margin-bottom: 40px !important; } + /* responsive horizontal auto margins */ + .mx-sm-auto { margin-right: auto !important; margin-left: auto !important; } } +@media (min-width: 768px) { /* Set a $size margin to all sides at $breakpoint */ + .m-md-0 { margin: 0 !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-0 { margin-top: 0 !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-0 { margin-right: 0 !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-0 { margin-bottom: 0 !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-0 { margin-left: 0 !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-md-1 { margin: 4px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-1 { margin-top: 4px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-1 { margin-right: 4px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-1 { margin-bottom: 4px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-1 { margin-left: 4px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n1 { margin-top: -4px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n1 { margin-right: -4px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n1 { margin-bottom: -4px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n1 { margin-left: -4px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-1 { margin-top: 4px !important; margin-bottom: 4px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-md-2 { margin: 8px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-2 { margin-top: 8px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-2 { margin-right: 8px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-2 { margin-bottom: 8px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-2 { margin-left: 8px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n2 { margin-top: -8px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n2 { margin-right: -8px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n2 { margin-bottom: -8px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n2 { margin-left: -8px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-2 { margin-top: 8px !important; margin-bottom: 8px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-md-3 { margin: 16px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-3 { margin-top: 16px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-3 { margin-right: 16px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-3 { margin-bottom: 16px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-3 { margin-left: 16px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n3 { margin-top: -16px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n3 { margin-right: -16px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n3 { margin-bottom: -16px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n3 { margin-left: -16px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-3 { margin-top: 16px !important; margin-bottom: 16px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-md-4 { margin: 24px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-4 { margin-top: 24px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-4 { margin-right: 24px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-4 { margin-bottom: 24px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-4 { margin-left: 24px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n4 { margin-top: -24px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n4 { margin-right: -24px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n4 { margin-bottom: -24px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n4 { margin-left: -24px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-4 { margin-top: 24px !important; margin-bottom: 24px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-md-5 { margin: 32px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-5 { margin-top: 32px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-5 { margin-right: 32px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-5 { margin-bottom: 32px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-5 { margin-left: 32px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n5 { margin-top: -32px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n5 { margin-right: -32px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n5 { margin-bottom: -32px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n5 { margin-left: -32px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-5 { margin-top: 32px !important; margin-bottom: 32px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-md-6 { margin: 40px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-md-6 { margin-top: 40px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-md-6 { margin-right: 40px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-md-6 { margin-bottom: 40px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-md-6 { margin-left: 40px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-md-n6 { margin-top: -40px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-md-n6 { margin-right: -40px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-md-n6 { margin-bottom: -40px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-md-n6 { margin-left: -40px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-md-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-md-6 { margin-top: 40px !important; margin-bottom: 40px !important; } + /* responsive horizontal auto margins */ + .mx-md-auto { margin-right: auto !important; margin-left: auto !important; } } +@media (min-width: 1012px) { /* Set a $size margin to all sides at $breakpoint */ + .m-lg-0 { margin: 0 !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-0 { margin-top: 0 !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-0 { margin-right: 0 !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-0 { margin-bottom: 0 !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-0 { margin-left: 0 !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-1 { margin: 4px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-1 { margin-top: 4px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-1 { margin-right: 4px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-1 { margin-bottom: 4px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-1 { margin-left: 4px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n1 { margin-top: -4px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n1 { margin-right: -4px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n1 { margin-bottom: -4px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n1 { margin-left: -4px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-1 { margin-top: 4px !important; margin-bottom: 4px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-2 { margin: 8px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-2 { margin-top: 8px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-2 { margin-right: 8px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-2 { margin-bottom: 8px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-2 { margin-left: 8px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n2 { margin-top: -8px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n2 { margin-right: -8px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n2 { margin-bottom: -8px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n2 { margin-left: -8px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-2 { margin-top: 8px !important; margin-bottom: 8px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-3 { margin: 16px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-3 { margin-top: 16px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-3 { margin-right: 16px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-3 { margin-bottom: 16px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-3 { margin-left: 16px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n3 { margin-top: -16px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n3 { margin-right: -16px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n3 { margin-bottom: -16px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n3 { margin-left: -16px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-3 { margin-top: 16px !important; margin-bottom: 16px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-4 { margin: 24px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-4 { margin-top: 24px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-4 { margin-right: 24px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-4 { margin-bottom: 24px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-4 { margin-left: 24px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n4 { margin-top: -24px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n4 { margin-right: -24px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n4 { margin-bottom: -24px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n4 { margin-left: -24px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-4 { margin-top: 24px !important; margin-bottom: 24px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-5 { margin: 32px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-5 { margin-top: 32px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-5 { margin-right: 32px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-5 { margin-bottom: 32px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-5 { margin-left: 32px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n5 { margin-top: -32px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n5 { margin-right: -32px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n5 { margin-bottom: -32px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n5 { margin-left: -32px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-5 { margin-top: 32px !important; margin-bottom: 32px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-lg-6 { margin: 40px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-lg-6 { margin-top: 40px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-lg-6 { margin-right: 40px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-lg-6 { margin-bottom: 40px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-lg-6 { margin-left: 40px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-lg-n6 { margin-top: -40px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-lg-n6 { margin-right: -40px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-lg-n6 { margin-bottom: -40px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-lg-n6 { margin-left: -40px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-lg-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-lg-6 { margin-top: 40px !important; margin-bottom: 40px !important; } + /* responsive horizontal auto margins */ + .mx-lg-auto { margin-right: auto !important; margin-left: auto !important; } } +@media (min-width: 1280px) { /* Set a $size margin to all sides at $breakpoint */ + .m-xl-0 { margin: 0 !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-0 { margin-top: 0 !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-0 { margin-right: 0 !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-0 { margin-bottom: 0 !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-0 { margin-left: 0 !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-1 { margin: 4px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-1 { margin-top: 4px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-1 { margin-right: 4px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-1 { margin-bottom: 4px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-1 { margin-left: 4px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n1 { margin-top: -4px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n1 { margin-right: -4px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n1 { margin-bottom: -4px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n1 { margin-left: -4px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-1 { margin-top: 4px !important; margin-bottom: 4px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-2 { margin: 8px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-2 { margin-top: 8px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-2 { margin-right: 8px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-2 { margin-bottom: 8px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-2 { margin-left: 8px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n2 { margin-top: -8px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n2 { margin-right: -8px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n2 { margin-bottom: -8px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n2 { margin-left: -8px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-2 { margin-top: 8px !important; margin-bottom: 8px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-3 { margin: 16px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-3 { margin-top: 16px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-3 { margin-right: 16px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-3 { margin-bottom: 16px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-3 { margin-left: 16px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n3 { margin-top: -16px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n3 { margin-right: -16px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n3 { margin-bottom: -16px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n3 { margin-left: -16px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-3 { margin-top: 16px !important; margin-bottom: 16px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-4 { margin: 24px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-4 { margin-top: 24px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-4 { margin-right: 24px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-4 { margin-bottom: 24px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-4 { margin-left: 24px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n4 { margin-top: -24px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n4 { margin-right: -24px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n4 { margin-bottom: -24px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n4 { margin-left: -24px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-4 { margin-top: 24px !important; margin-bottom: 24px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-5 { margin: 32px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-5 { margin-top: 32px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-5 { margin-right: 32px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-5 { margin-bottom: 32px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-5 { margin-left: 32px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n5 { margin-top: -32px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n5 { margin-right: -32px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n5 { margin-bottom: -32px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n5 { margin-left: -32px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-5 { margin-top: 32px !important; margin-bottom: 32px !important; } + /* Set a $size margin to all sides at $breakpoint */ + .m-xl-6 { margin: 40px !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt-xl-6 { margin-top: 40px !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr-xl-6 { margin-right: 40px !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb-xl-6 { margin-bottom: 40px !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml-xl-6 { margin-left: 40px !important; } + /* Set a negative $size margin on top at $breakpoint */ + .mt-xl-n6 { margin-top: -40px !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr-xl-n6 { margin-right: -40px !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb-xl-n6 { margin-bottom: -40px !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml-xl-n6 { margin-left: -40px !important; } + /* Set a $size margin on the left & right at $breakpoint */ + .mx-xl-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a $size margin on the top & bottom at $breakpoint */ + .my-xl-6 { margin-top: 40px !important; margin-bottom: 40px !important; } + /* responsive horizontal auto margins */ + .mx-xl-auto { margin-right: auto !important; margin-left: auto !important; } } +/* Set a $size padding to all sides at $breakpoint */ +.p-0 { padding: 0 !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-0 { padding-top: 0 !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-0 { padding-right: 0 !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-0 { padding-bottom: 0 !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-0 { padding-left: 0 !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-1 { padding: 4px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-1 { padding-top: 4px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-1 { padding-right: 4px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-1 { padding-bottom: 4px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-1 { padding-left: 4px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-1 { padding-right: 4px !important; padding-left: 4px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-1 { padding-top: 4px !important; padding-bottom: 4px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-2 { padding: 8px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-2 { padding-top: 8px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-2 { padding-right: 8px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-2 { padding-bottom: 8px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-2 { padding-left: 8px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-2 { padding-right: 8px !important; padding-left: 8px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-2 { padding-top: 8px !important; padding-bottom: 8px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-3 { padding: 16px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-3 { padding-top: 16px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-3 { padding-right: 16px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-3 { padding-bottom: 16px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-3 { padding-left: 16px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-3 { padding-right: 16px !important; padding-left: 16px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-3 { padding-top: 16px !important; padding-bottom: 16px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-4 { padding: 24px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-4 { padding-top: 24px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-4 { padding-right: 24px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-4 { padding-bottom: 24px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-4 { padding-left: 24px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-4 { padding-right: 24px !important; padding-left: 24px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-4 { padding-top: 24px !important; padding-bottom: 24px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-5 { padding: 32px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-5 { padding-top: 32px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-5 { padding-right: 32px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-5 { padding-bottom: 32px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-5 { padding-left: 32px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-5 { padding-right: 32px !important; padding-left: 32px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-5 { padding-top: 32px !important; padding-bottom: 32px !important; } + +/* Set a $size padding to all sides at $breakpoint */ +.p-6 { padding: 40px !important; } + +/* Set a $size padding to the top at $breakpoint */ +.pt-6 { padding-top: 40px !important; } + +/* Set a $size padding to the right at $breakpoint */ +.pr-6 { padding-right: 40px !important; } + +/* Set a $size padding to the bottom at $breakpoint */ +.pb-6 { padding-bottom: 40px !important; } + +/* Set a $size padding to the left at $breakpoint */ +.pl-6 { padding-left: 40px !important; } + +/* Set a $size padding to the left & right at $breakpoint */ +.px-6 { padding-right: 40px !important; padding-left: 40px !important; } + +/* Set a $size padding to the top & bottom at $breakpoint */ +.py-6 { padding-top: 40px !important; padding-bottom: 40px !important; } + +@media (min-width: 544px) { /* Set a $size padding to all sides at $breakpoint */ + .p-sm-0 { padding: 0 !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-0 { padding-top: 0 !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-0 { padding-right: 0 !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-0 { padding-bottom: 0 !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-0 { padding-left: 0 !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-1 { padding: 4px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-1 { padding-top: 4px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-1 { padding-right: 4px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-1 { padding-bottom: 4px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-1 { padding-left: 4px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-1 { padding-top: 4px !important; padding-bottom: 4px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-2 { padding: 8px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-2 { padding-top: 8px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-2 { padding-right: 8px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-2 { padding-bottom: 8px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-2 { padding-left: 8px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-2 { padding-top: 8px !important; padding-bottom: 8px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-3 { padding: 16px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-3 { padding-top: 16px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-3 { padding-right: 16px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-3 { padding-bottom: 16px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-3 { padding-left: 16px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-3 { padding-top: 16px !important; padding-bottom: 16px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-4 { padding: 24px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-4 { padding-top: 24px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-4 { padding-right: 24px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-4 { padding-bottom: 24px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-4 { padding-left: 24px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-4 { padding-top: 24px !important; padding-bottom: 24px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-5 { padding: 32px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-5 { padding-top: 32px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-5 { padding-right: 32px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-5 { padding-bottom: 32px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-5 { padding-left: 32px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-5 { padding-top: 32px !important; padding-bottom: 32px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-sm-6 { padding: 40px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-sm-6 { padding-top: 40px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-sm-6 { padding-right: 40px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-sm-6 { padding-bottom: 40px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-sm-6 { padding-left: 40px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-sm-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-sm-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +@media (min-width: 768px) { /* Set a $size padding to all sides at $breakpoint */ + .p-md-0 { padding: 0 !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-0 { padding-top: 0 !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-0 { padding-right: 0 !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-0 { padding-bottom: 0 !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-0 { padding-left: 0 !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-md-1 { padding: 4px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-1 { padding-top: 4px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-1 { padding-right: 4px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-1 { padding-bottom: 4px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-1 { padding-left: 4px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-1 { padding-top: 4px !important; padding-bottom: 4px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-md-2 { padding: 8px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-2 { padding-top: 8px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-2 { padding-right: 8px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-2 { padding-bottom: 8px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-2 { padding-left: 8px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-2 { padding-top: 8px !important; padding-bottom: 8px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-md-3 { padding: 16px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-3 { padding-top: 16px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-3 { padding-right: 16px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-3 { padding-bottom: 16px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-3 { padding-left: 16px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-3 { padding-top: 16px !important; padding-bottom: 16px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-md-4 { padding: 24px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-4 { padding-top: 24px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-4 { padding-right: 24px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-4 { padding-bottom: 24px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-4 { padding-left: 24px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-4 { padding-top: 24px !important; padding-bottom: 24px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-md-5 { padding: 32px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-5 { padding-top: 32px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-5 { padding-right: 32px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-5 { padding-bottom: 32px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-5 { padding-left: 32px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-5 { padding-top: 32px !important; padding-bottom: 32px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-md-6 { padding: 40px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-md-6 { padding-top: 40px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-md-6 { padding-right: 40px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-md-6 { padding-bottom: 40px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-md-6 { padding-left: 40px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-md-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-md-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +@media (min-width: 1012px) { /* Set a $size padding to all sides at $breakpoint */ + .p-lg-0 { padding: 0 !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-0 { padding-top: 0 !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-0 { padding-right: 0 !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-0 { padding-bottom: 0 !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-0 { padding-left: 0 !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-1 { padding: 4px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-1 { padding-top: 4px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-1 { padding-right: 4px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-1 { padding-bottom: 4px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-1 { padding-left: 4px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-1 { padding-top: 4px !important; padding-bottom: 4px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-2 { padding: 8px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-2 { padding-top: 8px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-2 { padding-right: 8px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-2 { padding-bottom: 8px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-2 { padding-left: 8px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-2 { padding-top: 8px !important; padding-bottom: 8px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-3 { padding: 16px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-3 { padding-top: 16px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-3 { padding-right: 16px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-3 { padding-bottom: 16px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-3 { padding-left: 16px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-3 { padding-top: 16px !important; padding-bottom: 16px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-4 { padding: 24px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-4 { padding-top: 24px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-4 { padding-right: 24px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-4 { padding-bottom: 24px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-4 { padding-left: 24px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-4 { padding-top: 24px !important; padding-bottom: 24px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-5 { padding: 32px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-5 { padding-top: 32px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-5 { padding-right: 32px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-5 { padding-bottom: 32px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-5 { padding-left: 32px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-5 { padding-top: 32px !important; padding-bottom: 32px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-lg-6 { padding: 40px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-lg-6 { padding-top: 40px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-lg-6 { padding-right: 40px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-lg-6 { padding-bottom: 40px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-lg-6 { padding-left: 40px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-lg-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-lg-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +@media (min-width: 1280px) { /* Set a $size padding to all sides at $breakpoint */ + .p-xl-0 { padding: 0 !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-0 { padding-top: 0 !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-0 { padding-right: 0 !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-0 { padding-bottom: 0 !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-0 { padding-left: 0 !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-1 { padding: 4px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-1 { padding-top: 4px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-1 { padding-right: 4px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-1 { padding-bottom: 4px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-1 { padding-left: 4px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-1 { padding-top: 4px !important; padding-bottom: 4px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-2 { padding: 8px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-2 { padding-top: 8px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-2 { padding-right: 8px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-2 { padding-bottom: 8px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-2 { padding-left: 8px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-2 { padding-top: 8px !important; padding-bottom: 8px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-3 { padding: 16px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-3 { padding-top: 16px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-3 { padding-right: 16px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-3 { padding-bottom: 16px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-3 { padding-left: 16px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-3 { padding-top: 16px !important; padding-bottom: 16px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-4 { padding: 24px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-4 { padding-top: 24px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-4 { padding-right: 24px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-4 { padding-bottom: 24px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-4 { padding-left: 24px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-4 { padding-top: 24px !important; padding-bottom: 24px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-5 { padding: 32px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-5 { padding-top: 32px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-5 { padding-right: 32px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-5 { padding-bottom: 32px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-5 { padding-left: 32px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-5 { padding-top: 32px !important; padding-bottom: 32px !important; } + /* Set a $size padding to all sides at $breakpoint */ + .p-xl-6 { padding: 40px !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt-xl-6 { padding-top: 40px !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr-xl-6 { padding-right: 40px !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb-xl-6 { padding-bottom: 40px !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl-xl-6 { padding-left: 40px !important; } + /* Set a $size padding to the left & right at $breakpoint */ + .px-xl-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a $size padding to the top & bottom at $breakpoint */ + .py-xl-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +.p-responsive { padding-right: 16px !important; padding-left: 16px !important; } +@media (min-width: 544px) { .p-responsive { padding-right: 40px !important; padding-left: 40px !important; } } +@media (min-width: 1012px) { .p-responsive { padding-right: 16px !important; padding-left: 16px !important; } } + +/* Set the font size to 26px */ +.h1 { font-size: 26px !important; } +@media (min-width: 768px) { .h1 { font-size: 32px !important; } } + +/* Set the font size to 22px */ +.h2 { font-size: 22px !important; } +@media (min-width: 768px) { .h2 { font-size: 24px !important; } } + +/* Set the font size to 18px */ +.h3 { font-size: 18px !important; } +@media (min-width: 768px) { .h3 { font-size: 20px !important; } } + +/* Set the font size to 16px */ +.h4 { font-size: 16px !important; } + +/* Set the font size to 14px */ +.h5 { font-size: 14px !important; } + +/* Set the font size to 12px */ +.h6 { font-size: 12px !important; } + +.h1, .h2, .h3, .h4, .h5, .h6 { font-weight: 600 !important; } + +/* Set the font size to 26px */ +.f1 { font-size: 26px !important; } +@media (min-width: 768px) { .f1 { font-size: 32px !important; } } + +/* Set the font size to 22px */ +.f2 { font-size: 22px !important; } +@media (min-width: 768px) { .f2 { font-size: 24px !important; } } + +/* Set the font size to 18px */ +.f3 { font-size: 18px !important; } +@media (min-width: 768px) { .f3 { font-size: 20px !important; } } + +/* Set the font size to 16px */ +.f4 { font-size: 16px !important; } +@media (min-width: 768px) { .f4 { font-size: 16px !important; } } + +/* Set the font size to 14px */ +.f5 { font-size: 14px !important; } + +/* Set the font size to 12px */ +.f6 { font-size: 12px !important; } + +/* Set the font size to 40px and weight to light */ +.f00-light { font-size: 40px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f00-light { font-size: 48px !important; } } + +/* Set the font size to 32px and weight to light */ +.f0-light { font-size: 32px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f0-light { font-size: 40px !important; } } + +/* Set the font size to 26px and weight to light */ +.f1-light { font-size: 26px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f1-light { font-size: 32px !important; } } + +/* Set the font size to 22px and weight to light */ +.f2-light { font-size: 22px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f2-light { font-size: 24px !important; } } + +/* Set the font size to 18px and weight to light */ +.f3-light { font-size: 18px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f3-light { font-size: 20px !important; } } + +/* Set the font size to ${#h6-size} */ +.text-small { font-size: 12px !important; } + +/* Large leading paragraphs */ +.lead { margin-bottom: 30px; font-size: 20px; font-weight: 300; color: #586069; } + +/* Set the line height to ultra condensed */ +.lh-condensed-ultra { line-height: 1 !important; } + +/* Set the line height to condensed */ +.lh-condensed { line-height: 1.25 !important; } + +/* Set the line height to default */ +.lh-default { line-height: 1.5 !important; } + +/* Set the line height to zero */ +.lh-0 { line-height: 0 !important; } + +/* Text align to the right */ +.text-right { text-align: right !important; } + +/* Text align to the left */ +.text-left { text-align: left !important; } + +/* Text align to the center */ +.text-center { text-align: center !important; } + +@media (min-width: 544px) { /* Text align to the right */ + .text-sm-right { text-align: right !important; } + /* Text align to the left */ + .text-sm-left { text-align: left !important; } + /* Text align to the center */ + .text-sm-center { text-align: center !important; } } +@media (min-width: 768px) { /* Text align to the right */ + .text-md-right { text-align: right !important; } + /* Text align to the left */ + .text-md-left { text-align: left !important; } + /* Text align to the center */ + .text-md-center { text-align: center !important; } } +@media (min-width: 1012px) { /* Text align to the right */ + .text-lg-right { text-align: right !important; } + /* Text align to the left */ + .text-lg-left { text-align: left !important; } + /* Text align to the center */ + .text-lg-center { text-align: center !important; } } +@media (min-width: 1280px) { /* Text align to the right */ + .text-xl-right { text-align: right !important; } + /* Text align to the left */ + .text-xl-left { text-align: left !important; } + /* Text align to the center */ + .text-xl-center { text-align: center !important; } } +/* Set the font weight to normal */ +.text-normal { font-weight: 400 !important; } + +/* Set the font weight to bold */ +.text-bold { font-weight: 600 !important; } + +/* Set the font to italic */ +.text-italic { font-style: italic !important; } + +/* Make text uppercase */ +.text-uppercase { text-transform: uppercase !important; } + +/* Underline text */ +.text-underline { text-decoration: underline !important; } + +/* Don't underline text */ +.no-underline { text-decoration: none !important; } + +/* Don't wrap white space */ +.no-wrap { white-space: nowrap !important; } + +/* Normal white space */ +.ws-normal { white-space: normal !important; } + +/* Allow long lines with no spaces to line break */ +.wb-break-all { word-break: break-all !important; } + +.text-emphasized { font-weight: 600; color: #24292e; } + +.list-style-none { list-style: none !important; } + +/* Add a dark text shadow */ +.text-shadow-dark { text-shadow: 0 1px 1px rgba(27, 31, 35, 0.25), 0 1px 25px rgba(27, 31, 35, 0.75); } + +/* Add a light text shadow */ +.text-shadow-light { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } + +/* Set to monospace font */ +.text-mono { font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +/* Disallow user from selecting text */ +.user-select-none { user-select: none !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-inline-flex { display: inline-flex !important; } + +.d-none { display: none !important; } + +.d-table { display: table !important; } + +.d-table-cell { display: table-cell !important; } + +@media (min-width: 544px) { .d-sm-block { display: block !important; } + .d-sm-flex { display: flex !important; } + .d-sm-inline { display: inline !important; } + .d-sm-inline-block { display: inline-block !important; } + .d-sm-inline-flex { display: inline-flex !important; } + .d-sm-none { display: none !important; } + .d-sm-table { display: table !important; } + .d-sm-table-cell { display: table-cell !important; } } +@media (min-width: 768px) { .d-md-block { display: block !important; } + .d-md-flex { display: flex !important; } + .d-md-inline { display: inline !important; } + .d-md-inline-block { display: inline-block !important; } + .d-md-inline-flex { display: inline-flex !important; } + .d-md-none { display: none !important; } + .d-md-table { display: table !important; } + .d-md-table-cell { display: table-cell !important; } } +@media (min-width: 1012px) { .d-lg-block { display: block !important; } + .d-lg-flex { display: flex !important; } + .d-lg-inline { display: inline !important; } + .d-lg-inline-block { display: inline-block !important; } + .d-lg-inline-flex { display: inline-flex !important; } + .d-lg-none { display: none !important; } + .d-lg-table { display: table !important; } + .d-lg-table-cell { display: table-cell !important; } } +@media (min-width: 1280px) { .d-xl-block { display: block !important; } + .d-xl-flex { display: flex !important; } + .d-xl-inline { display: inline !important; } + .d-xl-inline-block { display: inline-block !important; } + .d-xl-inline-flex { display: inline-flex !important; } + .d-xl-none { display: none !important; } + .d-xl-table { display: table !important; } + .d-xl-table-cell { display: table-cell !important; } } +.v-hidden { visibility: hidden !important; } + +.v-visible { visibility: visible !important; } + +@media (max-width: 544px) { .hide-sm { display: none !important; } } +@media (min-width: 544px) and (max-width: 768px) { .hide-md { display: none !important; } } +@media (min-width: 768px) and (max-width: 1012px) { .hide-lg { display: none !important; } } +@media (min-width: 1012px) { .hide-xl { display: none !important; } } +/* Set the table-layout to fixed */ +.table-fixed { table-layout: fixed !important; } + +.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); word-wrap: normal; border: 0; } + +.show-on-focus { position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); } +.show-on-focus:focus { z-index: 20; width: auto; height: auto; clip: auto; } + +.container { width: 980px; margin-right: auto; margin-left: auto; } +.container::before { display: table; content: ""; } +.container::after { display: table; clear: both; content: ""; } + +.container-md { max-width: 768px; margin-right: auto; margin-left: auto; } + +.container-lg { max-width: 1012px; margin-right: auto; margin-left: auto; } + +.container-xl { max-width: 1280px; margin-right: auto; margin-left: auto; } + +.columns { margin-right: -10px; margin-left: -10px; } +.columns::before { display: table; content: ""; } +.columns::after { display: table; clear: both; content: ""; } + +.column { float: left; padding-right: 10px; padding-left: 10px; } + +.one-third { width: 33.333333%; } + +.two-thirds { width: 66.666667%; } + +.one-fourth { width: 25%; } + +.one-half { width: 50%; } + +.three-fourths { width: 75%; } + +.one-fifth { width: 20%; } + +.four-fifths { width: 80%; } + +.centered { display: block; float: none; margin-right: auto; margin-left: auto; } + +.col-1 { width: 8.3333333333%; } + +.col-2 { width: 16.6666666667%; } + +.col-3 { width: 25%; } + +.col-4 { width: 33.3333333333%; } + +.col-5 { width: 41.6666666667%; } + +.col-6 { width: 50%; } + +.col-7 { width: 58.3333333333%; } + +.col-8 { width: 66.6666666667%; } + +.col-9 { width: 75%; } + +.col-10 { width: 83.3333333333%; } + +.col-11 { width: 91.6666666667%; } + +.col-12 { width: 100%; } + +@media (min-width: 544px) { .col-sm-1 { width: 8.3333333333%; } + .col-sm-2 { width: 16.6666666667%; } + .col-sm-3 { width: 25%; } + .col-sm-4 { width: 33.3333333333%; } + .col-sm-5 { width: 41.6666666667%; } + .col-sm-6 { width: 50%; } + .col-sm-7 { width: 58.3333333333%; } + .col-sm-8 { width: 66.6666666667%; } + .col-sm-9 { width: 75%; } + .col-sm-10 { width: 83.3333333333%; } + .col-sm-11 { width: 91.6666666667%; } + .col-sm-12 { width: 100%; } } +@media (min-width: 768px) { .col-md-1 { width: 8.3333333333%; } + .col-md-2 { width: 16.6666666667%; } + .col-md-3 { width: 25%; } + .col-md-4 { width: 33.3333333333%; } + .col-md-5 { width: 41.6666666667%; } + .col-md-6 { width: 50%; } + .col-md-7 { width: 58.3333333333%; } + .col-md-8 { width: 66.6666666667%; } + .col-md-9 { width: 75%; } + .col-md-10 { width: 83.3333333333%; } + .col-md-11 { width: 91.6666666667%; } + .col-md-12 { width: 100%; } } +@media (min-width: 1012px) { .col-lg-1 { width: 8.3333333333%; } + .col-lg-2 { width: 16.6666666667%; } + .col-lg-3 { width: 25%; } + .col-lg-4 { width: 33.3333333333%; } + .col-lg-5 { width: 41.6666666667%; } + .col-lg-6 { width: 50%; } + .col-lg-7 { width: 58.3333333333%; } + .col-lg-8 { width: 66.6666666667%; } + .col-lg-9 { width: 75%; } + .col-lg-10 { width: 83.3333333333%; } + .col-lg-11 { width: 91.6666666667%; } + .col-lg-12 { width: 100%; } } +@media (min-width: 1280px) { .col-xl-1 { width: 8.3333333333%; } + .col-xl-2 { width: 16.6666666667%; } + .col-xl-3 { width: 25%; } + .col-xl-4 { width: 33.3333333333%; } + .col-xl-5 { width: 41.6666666667%; } + .col-xl-6 { width: 50%; } + .col-xl-7 { width: 58.3333333333%; } + .col-xl-8 { width: 66.6666666667%; } + .col-xl-9 { width: 75%; } + .col-xl-10 { width: 83.3333333333%; } + .col-xl-11 { width: 91.6666666667%; } + .col-xl-12 { width: 100%; } } +.gutter { margin-right: -16px; margin-left: -16px; } +.gutter > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + +.gutter-condensed { margin-right: -8px; margin-left: -8px; } +.gutter-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + +.gutter-spacious { margin-right: -24px; margin-left: -24px; } +.gutter-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } + +@media (min-width: 544px) { .gutter-sm { margin-right: -16px; margin-left: -16px; } + .gutter-sm > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-sm-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-sm-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-sm-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-sm-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +@media (min-width: 768px) { .gutter-md { margin-right: -16px; margin-left: -16px; } + .gutter-md > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-md-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-md-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-md-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-md-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +@media (min-width: 1012px) { .gutter-lg { margin-right: -16px; margin-left: -16px; } + .gutter-lg > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-lg-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-lg-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-lg-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-lg-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +@media (min-width: 1280px) { .gutter-xl { margin-right: -16px; margin-left: -16px; } + .gutter-xl > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-xl-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-xl-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-xl-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-xl-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +.offset-1 { margin-left: 8.3333333333% !important; } + +.offset-2 { margin-left: 16.6666666667% !important; } + +.offset-3 { margin-left: 25% !important; } + +.offset-4 { margin-left: 33.3333333333% !important; } + +.offset-5 { margin-left: 41.6666666667% !important; } + +.offset-6 { margin-left: 50% !important; } + +.offset-7 { margin-left: 58.3333333333% !important; } + +.offset-8 { margin-left: 66.6666666667% !important; } + +.offset-9 { margin-left: 75% !important; } + +.offset-10 { margin-left: 83.3333333333% !important; } + +.offset-11 { margin-left: 91.6666666667% !important; } + +@media (min-width: 544px) { .offset-sm-1 { margin-left: 8.3333333333% !important; } + .offset-sm-2 { margin-left: 16.6666666667% !important; } + .offset-sm-3 { margin-left: 25% !important; } + .offset-sm-4 { margin-left: 33.3333333333% !important; } + .offset-sm-5 { margin-left: 41.6666666667% !important; } + .offset-sm-6 { margin-left: 50% !important; } + .offset-sm-7 { margin-left: 58.3333333333% !important; } + .offset-sm-8 { margin-left: 66.6666666667% !important; } + .offset-sm-9 { margin-left: 75% !important; } + .offset-sm-10 { margin-left: 83.3333333333% !important; } + .offset-sm-11 { margin-left: 91.6666666667% !important; } } +@media (min-width: 768px) { .offset-md-1 { margin-left: 8.3333333333% !important; } + .offset-md-2 { margin-left: 16.6666666667% !important; } + .offset-md-3 { margin-left: 25% !important; } + .offset-md-4 { margin-left: 33.3333333333% !important; } + .offset-md-5 { margin-left: 41.6666666667% !important; } + .offset-md-6 { margin-left: 50% !important; } + .offset-md-7 { margin-left: 58.3333333333% !important; } + .offset-md-8 { margin-left: 66.6666666667% !important; } + .offset-md-9 { margin-left: 75% !important; } + .offset-md-10 { margin-left: 83.3333333333% !important; } + .offset-md-11 { margin-left: 91.6666666667% !important; } } +@media (min-width: 1012px) { .offset-lg-1 { margin-left: 8.3333333333% !important; } + .offset-lg-2 { margin-left: 16.6666666667% !important; } + .offset-lg-3 { margin-left: 25% !important; } + .offset-lg-4 { margin-left: 33.3333333333% !important; } + .offset-lg-5 { margin-left: 41.6666666667% !important; } + .offset-lg-6 { margin-left: 50% !important; } + .offset-lg-7 { margin-left: 58.3333333333% !important; } + .offset-lg-8 { margin-left: 66.6666666667% !important; } + .offset-lg-9 { margin-left: 75% !important; } + .offset-lg-10 { margin-left: 83.3333333333% !important; } + .offset-lg-11 { margin-left: 91.6666666667% !important; } } +@media (min-width: 1280px) { .offset-xl-1 { margin-left: 8.3333333333% !important; } + .offset-xl-2 { margin-left: 16.6666666667% !important; } + .offset-xl-3 { margin-left: 25% !important; } + .offset-xl-4 { margin-left: 33.3333333333% !important; } + .offset-xl-5 { margin-left: 41.6666666667% !important; } + .offset-xl-6 { margin-left: 50% !important; } + .offset-xl-7 { margin-left: 58.3333333333% !important; } + .offset-xl-8 { margin-left: 66.6666666667% !important; } + .offset-xl-9 { margin-left: 75% !important; } + .offset-xl-10 { margin-left: 83.3333333333% !important; } + .offset-xl-11 { margin-left: 91.6666666667% !important; } } +.markdown-body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px; line-height: 1.5; word-wrap: break-word; } +.markdown-body::before { display: table; content: ""; } +.markdown-body::after { display: table; clear: both; content: ""; } +.markdown-body > *:first-child { margin-top: 0 !important; } +.markdown-body > *:last-child { margin-bottom: 0 !important; } +.markdown-body a:not([href]) { color: inherit; text-decoration: none; } +.markdown-body .absent { color: #cb2431; } +.markdown-body .anchor { float: left; padding-right: 4px; margin-left: -20px; line-height: 1; } +.markdown-body .anchor:focus { outline: none; } +.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { margin-top: 0; margin-bottom: 16px; } +.markdown-body hr { height: 0.25em; padding: 0; margin: 24px 0; background-color: #e1e4e8; border: 0; } +.markdown-body blockquote { padding: 0 1em; color: #6a737d; border-left: 0.25em solid #dfe2e5; } +.markdown-body blockquote > :first-child { margin-top: 0; } +.markdown-body blockquote > :last-child { margin-bottom: 0; } +.markdown-body kbd { display: inline-block; padding: 3px 5px; font-size: 11px; line-height: 10px; color: #444d56; vertical-align: middle; background-color: #fafbfc; border: solid 1px #c6cbd1; border-bottom-color: #959da5; border-radius: 3px; box-shadow: inset 0 -1px 0 #959da5; } + +.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; } +.markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #1b1f23; vertical-align: middle; visibility: hidden; } +.markdown-body h1:hover .anchor, .markdown-body h2:hover .anchor, .markdown-body h3:hover .anchor, .markdown-body h4:hover .anchor, .markdown-body h5:hover .anchor, .markdown-body h6:hover .anchor { text-decoration: none; } +.markdown-body h1:hover .anchor .octicon-link, .markdown-body h2:hover .anchor .octicon-link, .markdown-body h3:hover .anchor .octicon-link, .markdown-body h4:hover .anchor .octicon-link, .markdown-body h5:hover .anchor .octicon-link, .markdown-body h6:hover .anchor .octicon-link { visibility: visible; } +.markdown-body h1 tt, .markdown-body h1 code, .markdown-body h2 tt, .markdown-body h2 code, .markdown-body h3 tt, .markdown-body h3 code, .markdown-body h4 tt, .markdown-body h4 code, .markdown-body h5 tt, .markdown-body h5 code, .markdown-body h6 tt, .markdown-body h6 code { font-size: inherit; } +.markdown-body h1 { padding-bottom: 0.3em; font-size: 2em; border-bottom: 1px solid #eaecef; } +.markdown-body h2 { padding-bottom: 0.3em; font-size: 1.5em; border-bottom: 1px solid #eaecef; } +.markdown-body h3 { font-size: 1.25em; } +.markdown-body h4 { font-size: 1em; } +.markdown-body h5 { font-size: 0.875em; } +.markdown-body h6 { font-size: 0.85em; color: #6a737d; } + +.markdown-body ul, .markdown-body ol { padding-left: 2em; } +.markdown-body ul.no-list, .markdown-body ol.no-list { padding: 0; list-style-type: none; } +.markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul { margin-top: 0; margin-bottom: 0; } +.markdown-body li { word-wrap: break-all; } +.markdown-body li > p { margin-top: 16px; } +.markdown-body li + li { margin-top: 0.25em; } +.markdown-body dl { padding: 0; } +.markdown-body dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: 600; } +.markdown-body dl dd { padding: 0 16px; margin-bottom: 16px; } + +.markdown-body table { display: block; width: 100%; overflow: auto; } +.markdown-body table th { font-weight: 600; } +.markdown-body table th, .markdown-body table td { padding: 6px 13px; border: 1px solid #dfe2e5; } +.markdown-body table tr { background-color: #fff; border-top: 1px solid #c6cbd1; } +.markdown-body table tr:nth-child(2n) { background-color: #f6f8fa; } +.markdown-body table img { background-color: transparent; } + +.markdown-body img { max-width: 100%; box-sizing: content-box; background-color: #fff; } +.markdown-body img[align=right] { padding-left: 20px; } +.markdown-body img[align=left] { padding-right: 20px; } +.markdown-body .emoji { max-width: none; vertical-align: text-top; background-color: transparent; } +.markdown-body span.frame { display: block; overflow: hidden; } +.markdown-body span.frame > span { display: block; float: left; width: auto; padding: 7px; margin: 13px 0 0; overflow: hidden; border: 1px solid #dfe2e5; } +.markdown-body span.frame span img { display: block; float: left; } +.markdown-body span.frame span span { display: block; padding: 5px 0 0; clear: both; color: #24292e; } +.markdown-body span.align-center { display: block; overflow: hidden; clear: both; } +.markdown-body span.align-center > span { display: block; margin: 13px auto 0; overflow: hidden; text-align: center; } +.markdown-body span.align-center span img { margin: 0 auto; text-align: center; } +.markdown-body span.align-right { display: block; overflow: hidden; clear: both; } +.markdown-body span.align-right > span { display: block; margin: 13px 0 0; overflow: hidden; text-align: right; } +.markdown-body span.align-right span img { margin: 0; text-align: right; } +.markdown-body span.float-left { display: block; float: left; margin-right: 13px; overflow: hidden; } +.markdown-body span.float-left span { margin: 13px 0 0; } +.markdown-body span.float-right { display: block; float: right; margin-left: 13px; overflow: hidden; } +.markdown-body span.float-right > span { display: block; margin: 13px auto 0; overflow: hidden; text-align: right; } + +.markdown-body code, .markdown-body tt { padding: 0.2em 0.4em; margin: 0; font-size: 85%; background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; } +.markdown-body code br, .markdown-body tt br { display: none; } +.markdown-body del code { text-decoration: inherit; } +.markdown-body pre { word-wrap: normal; } +.markdown-body pre > code { padding: 0; margin: 0; font-size: 100%; word-break: normal; white-space: pre; background: transparent; border: 0; } +.markdown-body .highlight { margin-bottom: 16px; } +.markdown-body .highlight pre { margin-bottom: 0; word-break: normal; } +.markdown-body .highlight pre, .markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: #f6f8fa; border-radius: 3px; } +.markdown-body pre code, .markdown-body pre tt { display: inline; max-width: auto; padding: 0; margin: 0; overflow: visible; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; } + +.markdown-body .csv-data td, .markdown-body .csv-data th { padding: 5px; overflow: hidden; font-size: 12px; line-height: 1; text-align: left; white-space: nowrap; } +.markdown-body .csv-data .blob-num { padding: 10px 8px 9px; text-align: right; background: #fff; border: 0; } +.markdown-body .csv-data tr { border-top: 0; } +.markdown-body .csv-data th { font-weight: 600; background: #f6f8fa; border-top: 0; } + +.highlight table td { padding: 5px; } + +.highlight table pre { margin: 0; } + +.highlight .cm { color: #999988; font-style: italic; } + +.highlight .cp { color: #999999; font-weight: bold; } + +.highlight .c1 { color: #999988; font-style: italic; } + +.highlight .cs { color: #999999; font-weight: bold; font-style: italic; } + +.highlight .c, .highlight .cd { color: #999988; font-style: italic; } + +.highlight .err { color: #a61717; background-color: #e3d2d2; } + +.highlight .gd { color: #000000; background-color: #ffdddd; } + +.highlight .ge { color: #000000; font-style: italic; } + +.highlight .gr { color: #aa0000; } + +.highlight .gh { color: #999999; } + +.highlight .gi { color: #000000; background-color: #ddffdd; } + +.highlight .go { color: #888888; } + +.highlight .gp { color: #555555; } + +.highlight .gs { font-weight: bold; } + +.highlight .gu { color: #aaaaaa; } + +.highlight .gt { color: #aa0000; } + +.highlight .kc { color: #000000; font-weight: bold; } + +.highlight .kd { color: #000000; font-weight: bold; } + +.highlight .kn { color: #000000; font-weight: bold; } + +.highlight .kp { color: #000000; font-weight: bold; } + +.highlight .kr { color: #000000; font-weight: bold; } + +.highlight .kt { color: #445588; font-weight: bold; } + +.highlight .k, .highlight .kv { color: #000000; font-weight: bold; } + +.highlight .mf { color: #009999; } + +.highlight .mh { color: #009999; } + +.highlight .il { color: #009999; } + +.highlight .mi { color: #009999; } + +.highlight .mo { color: #009999; } + +.highlight .m, .highlight .mb, .highlight .mx { color: #009999; } + +.highlight .sb { color: #d14; } + +.highlight .sc { color: #d14; } + +.highlight .sd { color: #d14; } + +.highlight .s2 { color: #d14; } + +.highlight .se { color: #d14; } + +.highlight .sh { color: #d14; } + +.highlight .si { color: #d14; } + +.highlight .sx { color: #d14; } + +.highlight .sr { color: #009926; } + +.highlight .s1 { color: #d14; } + +.highlight .ss { color: #990073; } + +.highlight .s { color: #d14; } + +.highlight .na { color: #008080; } + +.highlight .bp { color: #999999; } + +.highlight .nb { color: #0086B3; } + +.highlight .nc { color: #445588; font-weight: bold; } + +.highlight .no { color: #008080; } + +.highlight .nd { color: #3c5d5d; font-weight: bold; } + +.highlight .ni { color: #800080; } + +.highlight .ne { color: #990000; font-weight: bold; } + +.highlight .nf { color: #990000; font-weight: bold; } + +.highlight .nl { color: #990000; font-weight: bold; } + +.highlight .nn { color: #555555; } + +.highlight .nt { color: #000080; } + +.highlight .vc { color: #008080; } + +.highlight .vg { color: #008080; } + +.highlight .vi { color: #008080; } + +.highlight .nv { color: #008080; } + +.highlight .ow { color: #000000; font-weight: bold; } + +.highlight .o { color: #000000; font-weight: bold; } + +.highlight .w { color: #bbbbbb; } + +.highlight { background-color: #f8f8f8; } diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc8b7c9fd0fdd21970a9efebcb2c6edd79bc61e GIT binary patch literal 26655 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.length)return;if(!(A instanceof r)){var S=1;if(y&&x!=n.tail.prev){h.lastIndex=w;var $=h.exec(t);if(!$)break;var _=$.index+(v&&$[1]?$[1].length:0),j=$.index+$[0].length,E=w;for(E+=x.value.length;_>=E;)x=x.next,E+=x.value.length;if(E-=x.value.length,w=E,x.value instanceof r)continue;for(var C=x;C!==n.tail&&(E1&&e(t,n,s,x.prev,w,!0,d+","+f),c)break}else if(c)break}}}}}(e,u,t,u.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(u)},hooks:{all:{},add:function(e,t){var n=a.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=a.hooks.all[e];if(n&&n.length)for(var r,s=0;r=n[s++];)r(t)}},Token:r};function r(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function i(e,t,n){var a=t.next,r={value:n,prev:t,next:a};return t.next=r,a.prev=r,e.length++,r}function l(e,t,n){for(var a=t.next,r=0;r"+s.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",function(t){var n=JSON.parse(t.data),r=n.language,s=n.code,i=n.immediateClose;e.postMessage(a.highlight(s,a.languages[r],r)),i&&e.close()},!1),a):a;var o=a.util.currentScript();function u(){a.manual||a.highlightAll()}if(o&&(a.filename=o.src,o.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var c=document.readyState;"loading"===c||"interactive"===c&&o&&o.defer?document.addEventListener("DOMContentLoaded",u):window.requestAnimationFrame?window.requestAnimationFrame(u):window.setTimeout(u,16)}return a}(t);"undefined"!=typeof module&&module.exports&&(module.exports=n),void 0!==e&&(e.Prism=n),n.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:(?!)*\]\s*)?>/i,greedy:!0},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var a={};a["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[t]},a.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:a}};r["language-"+t]={pattern:/[\s\S]+/,inside:n.languages[t]};var s={};s[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:r},n.languages.insertBefore("markup","cdata",s)}}),n.languages.xml=n.languages.extend("markup",{}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"}}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?[.?]?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*[\s\S]*?\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.markup.tag.addInlined("script","javascript"),n.languages.js=n.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(e){e=e||document;var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(e.querySelectorAll("pre[data-src]")).forEach(function(e){if(!e.hasAttribute("data-src-loaded")){for(var a,r=e.getAttribute("data-src"),s=e,i=/\blang(?:uage)?-([\w-]+)\b/i;s&&!i.test(s.className);)s=s.parentNode;if(s&&(a=(e.className.match(i)||[,""])[1]),!a){var l=(r.match(/\.(\w+)$/)||[,""])[1];a=t[l]||l}var o=document.createElement("code");o.className="language-"+a,e.textContent="",o.textContent="Loading…",e.appendChild(o);var u=new XMLHttpRequest;u.open("GET",r,!0),u.onreadystatechange=function(){4==u.readyState&&(u.status<400&&u.responseText?(o.textContent=u.responseText,n.highlightElement(o),e.setAttribute("data-src-loaded","")):u.status>=400?o.textContent="✖ Error "+u.status+" while fetching file: "+u.statusText:o.textContent="✖ Error: File does not exist or is empty")},u.send(null)}})},document.addEventListener("DOMContentLoaded",function(){self.Prism.fileHighlight()})); +},{}],"FNB3":[function(require,module,exports) { +!function(){if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var e,t=function(){if(void 0===e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML=" 
 ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e},n=0;Prism.hooks.add("before-sanity-check",function(e){var t=e.element.parentNode,n=t&&t.getAttribute("data-line");if(t&&n&&/pre/i.test(t.nodeName)){var r=0;i(".line-highlight",t).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(e.code.slice(-r))&&(e.code=e.code.slice(0,-r))}}),Prism.hooks.add("complete",function e(t){var i=t.element.parentNode,o=i&&i.getAttribute("data-line");if(i&&o&&/pre/i.test(i.nodeName)){clearTimeout(n);var s=Prism.plugins.lineNumbers,u=t.plugins&&t.plugins.lineNumbers;r(i,"line-numbers")&&s&&!u?Prism.hooks.add("line-numbers",e):(a(i,o)(),n=setTimeout(l,1))}}),window.addEventListener("hashchange",l),window.addEventListener("resize",function(){var e=[];i("pre[data-line]").forEach(function(t){e.push(a(t))}),e.forEach(o)})}function i(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function r(e,t){return t=" "+t+" ",-1<(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)}function o(e){e()}function a(e,n,i){var a=(n="string"==typeof n?n:e.getAttribute("data-line")).replace(/\s+/g,"").split(","),l=+e.getAttribute("data-line-offset")||0,s=(t()?parseInt:parseFloat)(getComputedStyle(e).lineHeight),u=r(e,"line-numbers"),d=u?e:e.querySelector("code")||e,c=[];return a.forEach(function(t){var n=t.split("-"),r=+n[0],o=+n[1]||r,a=e.querySelector('.line-highlight[data-range="'+t+'"]')||document.createElement("div");if(c.push(function(){a.setAttribute("aria-hidden","true"),a.setAttribute("data-range",t),a.className=(i||"")+" line-highlight"}),u&&Prism.plugins.lineNumbers){var f=Prism.plugins.lineNumbers.getLine(e,r),h=Prism.plugins.lineNumbers.getLine(e,o);if(f){var p=f.offsetTop+"px";c.push(function(){a.style.top=p})}if(h){var m=h.offsetTop-f.offsetTop+h.offsetHeight+"px";c.push(function(){a.style.height=m})}}else c.push(function(){a.setAttribute("data-start",r),r=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}))*\s*\/?)?>/i,t.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,t.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i,t.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,t.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},t.languages.jsx.tag),t.languages.insertBefore("inside","attr-value",{script:{pattern:/=(?:\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:t.languages.jsx},alias:"language-javascript"}},t.languages.jsx.tag);var e=function(t){return t?"string"==typeof t?t:"string"==typeof t.content?t.content:t.content.map(e).join(""):""},a=function(n){for(var s=[],g=0;g"===i.content[i.content.length-1].content||s.push({tagName:e(i.content[0].content[1]),openedBraces:0}):0>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s*(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s*(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\](?:\\\\)*)(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\2)[^\\])*\2/,lookbehind:!0,greedy:!0,inside:n}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}};for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],r=n.variable[1].inside,s=0;s=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; +},{}],"eQGU":[function(require,module,exports) { +!function(s){var e=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"}}},url:{pattern:RegExp("url\\((?:"+e.source+"|[^\n\r()]*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+e.source+")*?(?=\\s*\\{)"),string:{pattern:e,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),s.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:t.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:s.languages.css}},alias:"language-css"}},t.tag))}(Prism); +},{}],"i6Tx":[function(require,module,exports) { +Prism.languages.elixir={comment:/#.*/m,regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},"attr-name":/\w+\??:(?!:)/,capture:{pattern:/(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,lookbehind:!0,alias:"function"},argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},Prism.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:Prism.languages.elixir}}}}); +},{}],"aTnL":[function(require,module,exports) { +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[gim]{0,3}(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}],e.languages.rb=e.languages.ruby}(Prism); +},{}],"Pzu0":[function(require,module,exports) { +window.Prism=require("prismjs"); +},{"prismjs":"hKAx"}],"a8gM":[function(require,module,exports) { +function e(e){if(t())return e();document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",function(){t()&&e()})}function t(){return"complete"===document.readyState||"interactive"===document.readyState}module.exports=e; +},{}],"yMxf":[function(require,module,exports) { +var define; +var t;!function(e,o){"function"==typeof t&&t.amd?t(o):"object"==typeof exports?module.exports=o():window.jQuery?window.jQuery.onmount=o():e.onmount=o()}(this,function(t){var e,o,n,i,r=0,s=0;function c(t,e,n,i){if("object"==typeof n&&(i=n,n=void 0),0===arguments.length||"function"==typeof(f=t)&&f.fn&&f.noConflict||"object"==typeof(s=t)&&s.target)c.poll();else if(1===arguments.length)c.poll(t);else{var r=new u(t,e,n,i);o.push(r),r.register()}var s,f;return this}function u(t,e,o,n){this.id="b"+r++,this.init=e,this.exit=o,this.selector=c.selectify(t),this.loaded=[],this.key="__onmount:"+r,this.detectMutate=n&&n.detectMutate}function f(t,e){var o=t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector;if(c.$)return c.$(t).is(e);if(o)return o.call(t,e);if(t.parentNode){for(var n=t.parentNode.querySelectorAll(e),i=n.length;i--;0)if(n[i]===t)return!0;return!1}}function l(t,e){var o,n=t.length;if(n===+n)for(o=0;o-1:t.indexOf(e)>-1}(o,t))return this.doExit(t,e)}else if(!function(t){for(;t;){if(t===document.documentElement)return!0;t=t.parentElement}}(t))return this.doExit(t,e)},u.prototype.doExit=function(t,e){void 0===e&&(e=this.loaded.indexOf(t)),this.loaded[e]=void 0,this.exit&&!1!==this.exit.call(t,t[this.key])&&(c.debug&&i("exit",this.selector,t),delete t[this.key])};var d={enter:"background-color:#dfd;font-weight:bold;color:#141",exit:"background-color:#fdd;font-weight:bold;color:#411"};return i=~navigator.userAgent.indexOf("Mozilla")?function(t,e,o){console.log("%c %s ",d[t],e,o)}:function(t,e,o){console.log("(onmount)",t,e)},c.reset(),c}); +},{}],"ijeW":[function(require,module,exports) { +"use strict";var e=t(require("dom101/ready")),u=t(require("onmount"));function t(e){return e&&e.__esModule?e:{default:e}}(0,e.default)(function(){setTimeout(function(){(0,u.default)()})}); +},{"dom101/ready":"a8gM","onmount":"yMxf"}],"koK4":[function(require,module,exports) { +function i(i,e){i.firstChild?i.insertBefore(e,i.firstChild):i.appendChild(e)}module.exports=i; +},{}],"knoa":[function(require,module,exports) { +"use strict";var t=r(require("onmount")),e=r(require("dom101/prepend"));function r(t){return t&&t.__esModule?t:{default:t}}function n(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=a(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}function a(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r