From 767b720f1014475d8e41399cadc48d77464f6011 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 00:14:39 +1100 Subject: [PATCH 001/561] Init --- .babelrc | 3 + .gitignore | 3 + CONTRIBUTING.md | 44 + README.md | 12 + dist/4d4edbda57043aeeabeac31d2dd12d0d.css | 9 + dist/4d4edbda57043aeeabeac31d2dd12d0d.js | 19 + dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png | Bin 0 -> 35911 bytes dist/cf2ed1ce6be4ba59eed1079db594cc6e.png | Bin 0 -> 2628 bytes dist/index.html | 218 + favicon-32x32.png | Bin 0 -> 2628 bytes favicon.ico | Bin 0 -> 1150 bytes index.html | 987 ++ package-lock.json | 11210 ++++++++++++++++ package.json | 29 + scripts/build.js | 70 + snippets/clearfix.md | 60 + snippets/custom-text-selection.md | 41 + snippets/easing-variables.md | 106 + snippets/etched-text.md | 51 + snippets/gradient-text.md | 51 + snippets/hairline-border.md | 83 + snippets/horizontal-and-vertical-centering.md | 50 + snippets/mouse-cursor-gradient-tracking.md | 135 + snippets/overflow-scroll-gradient.md | 91 + snippets/popout-menu.md | 77 + snippets/pretty-text-underline.md | 75 + snippets/shape-separator.md | 66 + snippets/system-font-stack.md | 48 + snippets/triangle.md | 91 + snippets/truncate-text.md | 51 + src/css/components/back-to-top-button.scss | 39 + src/css/components/base.scss | 60 + src/css/components/hamburger.scss | 927 ++ src/css/components/header.scss | 76 + src/css/components/sidebar.scss | 104 + src/css/components/snippet.scss | 128 + src/css/deps/prism.css | 146 + src/css/index.scss | 6 + src/img/logo.png | Bin 0 -> 35911 bytes src/js/components/BackToTopButton.js | 14 + src/js/components/Menu.js | 34 + src/js/deps/jump.js | 196 + src/js/deps/polyfills.js | 16 + src/js/deps/utils.js | 40 + src/js/index.js | 14 + utils/utils.js | 8 + 46 files changed, 15488 insertions(+) create mode 100644 .babelrc create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 README.md create mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.css create mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.js create mode 100644 dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png create mode 100644 dist/cf2ed1ce6be4ba59eed1079db594cc6e.png create mode 100644 dist/index.html create mode 100644 favicon-32x32.png create mode 100644 favicon.ico create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scripts/build.js create mode 100644 snippets/clearfix.md create mode 100644 snippets/custom-text-selection.md create mode 100644 snippets/easing-variables.md create mode 100644 snippets/etched-text.md create mode 100644 snippets/gradient-text.md create mode 100644 snippets/hairline-border.md create mode 100644 snippets/horizontal-and-vertical-centering.md create mode 100644 snippets/mouse-cursor-gradient-tracking.md create mode 100644 snippets/overflow-scroll-gradient.md create mode 100644 snippets/popout-menu.md create mode 100644 snippets/pretty-text-underline.md create mode 100644 snippets/shape-separator.md create mode 100644 snippets/system-font-stack.md create mode 100644 snippets/triangle.md create mode 100644 snippets/truncate-text.md create mode 100644 src/css/components/back-to-top-button.scss create mode 100644 src/css/components/base.scss create mode 100644 src/css/components/hamburger.scss create mode 100644 src/css/components/header.scss create mode 100644 src/css/components/sidebar.scss create mode 100644 src/css/components/snippet.scss create mode 100644 src/css/deps/prism.css create mode 100644 src/css/index.scss create mode 100644 src/img/logo.png create mode 100644 src/js/components/BackToTopButton.js create mode 100644 src/js/components/Menu.js create mode 100644 src/js/deps/jump.js create mode 100644 src/js/deps/polyfills.js create mode 100644 src/js/deps/utils.js create mode 100644 src/js/index.js create mode 100644 utils/utils.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..f2e312799 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["env", "stage-2"] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..17447dfd3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +.cache/ +.DS_Store diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..89e30332b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,44 @@ +### Snippet name + +Brief description + +#### HTML + +```html + +``` + +#### CSS + +```css + +``` + +#### Demo + + + +
+ +
+ + + + + +#### Explanation + + + +#### Browser support + + + +✅ No caveats. + + + +* https://caniuse.com/#feat=some-feature diff --git a/README.md b/README.md new file mode 100644 index 000000000..8dc67fc72 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# 30 Seconds of CSS + +A curated collection of useful CSS snippets you can understand in 30 seconds or less. +Inspired by [30 seconds of code](https://github.com/Chalarangelo/30-seconds-of-code). + +## View online + +https://github.io/atomiks/30-seconds-of-css + +## Contributing + +See CONTRIBUTING.md for the snippet template. diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css new file mode 100644 index 000000000..fcf80a9e6 --- /dev/null +++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css @@ -0,0 +1,9 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js new file mode 100644 index 000000000..93bc6779f --- /dev/null +++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -0,0 +1,19 @@ +require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); +},{}],11:[function(require,module,exports) { +var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); +},{}],15:[function(require,module,exports) { +var global = (1,eval)("this"); +var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); +},{}],14:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); +},{}],13:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; +},{"../deps/jump":15,"../deps/utils":14}],12:[function(require,module,exports) { +"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; +},{"../deps/jump":15,"../deps/utils":14}],8:[function(require,module,exports) { +"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[8]) \ No newline at end of file diff --git a/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png b/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 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 literal 0 HcmV?d00001 diff --git a/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png b/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 000000000..3577372a2 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,218 @@ + 30 Seconds of CSS

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
+  <div class="floated">float a</div>
+  <div class="floated">float b</div>
+  <div class="floated">float c</div>
+</div>
+

CSS

.clearfix::after {
+  content: '';
+  display: table;
+  clear: both;
+}
+.floated {
+  float: left;
+}
+

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
+

CSS

.text-selection::selection {
+  background: red;
+  color: white;
+}
+

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected.

Browser support

84.6%

⚠️ Requires prefixes for full support.

Easing variables

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

HTML

<div class="easing-variables"></div>
+

CSS

:root {
+  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
+  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
+  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
+  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
+  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
+  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
+  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
+  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
+  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
+  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
+  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
+  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
+  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
+  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
+  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
+}
+.easing-variables {
+  width: 50px;
+  height: 50px;
+  background: #333;
+  transition: transform 1s var(--ease-out-quart);
+}
+.easing-variables:hover {
+  transform: rotate(45deg);
+}
+

Demo

Hover

Explanation

The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

Browser support

87.2%

✅ No caveats.

Etched text

Creates an effect where text appears to be "etched" or engraved into the background.

HTML

<p class="etched-text">I appear etched into the background.</p>
+

CSS

.etched-text {
+  text-shadow: 0 2px white;
+  font-size: 1.5rem;
+  font-weight: bold;
+  color: #b8bec5;
+}
+

Demo

I appear etched into the background.

Explanation

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

The background must be darker than the shadow for the effect to work.

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

Browser support

97.9%

✅ No caveats.

Gradient text

Gives text a gradient color.

HTML

<p class="gradient-text">Gradient text</p>
+

CSS

.gradient-text {
+  background: -webkit-linear-gradient(pink, red);
+  -webkit-text-fill-color: transparent;
+  -webkit-background-clip: text;
+}
+

Demo

Gradient text

Explanation

  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. webkit-text-fill-color: transparent fills the text with a transparent color.
  3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.

Browser support

90.7%

⚠️ Uses non-standard properties.

Hairline border

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

HTML

<div class="hairline-border">text</div>
+

CSS

.hairline-border {
+  box-shadow: 0 0 0 1px;
+}
+@media (min-resolution: 2dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.5px;
+  }
+}
+@media (min-resolution: 3dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.33333333px;
+  }
+}
+@media (min-resolution: 4dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.25px;
+  }
+}
+

Demo

Text with a hairline border around it.

Explanation

  1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
  2. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.

Browser Support

95.0%

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.


*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

Horizontal and vertical centering

Horizontally and vertically centers a child element within a parent element.

HTML

<div class="horizontal-and-vertical-centering">
+  <div class="child"></div>
+</div>
+

CSS

.horizontal-and-vertical-centering {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+

Demo

Centered content.

Explanation

  1. display: flex enables flexbox.
  2. justify-content: center centers the child horizontally.
  3. align-items: center centers the child vertically.

Browser support

97.8%

⚠️ Needs prefixes for full support.

Mouse cursor gradient tracking

A hover effect where the gradient follows the mouse cursor.

HTML

<button class="mouse-cursor-gradient-tracking">
+  <span>Hover me</span>
+</button>
+

CSS

.mouse-cursor-gradient-tracking {
+  position: relative;
+  background: #2379f7;
+  padding: 0.5rem 1rem;
+  font-size: 1.2rem;
+  border: none;
+  color: white;
+  cursor: pointer;
+  outline: none;
+  overflow: hidden;
+}
+.mouse-cursor-gradient-tracking span {
+  position: relative;
+}
+.mouse-cursor-gradient-tracking::before {
+  --size: 0;
+  content: '';
+  position: absolute;
+  left: var(--x);
+  top: var(--y);
+  width: var(--size);
+  height: var(--size);
+  background: radial-gradient(circle closest-side, pink, transparent);
+  transform: translate(-50%, -50%);
+  transition: width .2s ease, height .2s ease;
+}
+.mouse-cursor-gradient-tracking:hover::before {
+  --size: 200px;
+}
+

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
+btn.onmousemove = function (e) {
+  var x = e.pageX - btn.offsetLeft
+  var y = e.pageY - btn.offsetTop
+  btn.style.setProperty('--x', x + 'px')
+  btn.style.setProperty('--y', y + 'px')
+}
+

Demo

Explanation

TODO

Note!

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
+var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
+

Browser support

87.2%

Requires JavaScript
⚠️ Requires JavaScript.

Overflow scroll gradient

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

HTML

<div class="overflow-scroll-gradient">
+  <div class="overflow-scroll-gradient__scroller">
+    Content to be scrolled
+  </div>
+</div>
+

CSS

.overflow-scroll-gradient {
+  position: relative;
+}
+.overflow-scroll-gradient::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  width: 300px;
+  height: 25px;
+  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
+}
+.overflow-scroll-gradient__scroller {
+  overflow-y: scroll;
+  background: white;
+  width: 300px;
+  height: 250px;
+  line-height: 1.2;
+  text-align: center;
+}
+

Demo

Content to be scrolled

Explanation

  1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
  2. ::after defines a pseudo element.
  3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  6. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
  7. bottom: 0 positions the pseudo element at the bottom of the parent.

Browser support

94.8%

✅ No caveats.

Popout menu

Reveals an interactive popout menu on hover.

HTML

<div class="reference">
+  <div class="popout-menu">
+    Popout menu
+  </div>
+</div>
+

CSS

.reference {
+  position: relative;
+}
+.popout-menu {
+  position: absolute;
+  visibility: hidden;
+  left: 100%;
+}
+.reference:hover > .popout-menu {
+  visibility: visible;
+}
+

Demo

Popout menu

Explanation

  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  3. left: 100% moves the the popout menu 100% of its parent's width from the left.
  4. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  5. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.

Browser support

99+%

✅ No caveats.

Pretty text underline

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
+

CSS

.pretty-text-underline {
+  display: inline;
+  font-size: 1.25rem;
+  text-shadow: 1px 1px 0 #f5f6f9,
+    -1px 1px 0 #f5f6f9,
+    -1px -1px 0 #f5f6f9,
+    1px -1px 0 #f5f6f9;
+  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
+  background-position: 0 1.04em;
+  background-repeat: repeat-x;
+  background-size: 1px 1px;
+}
+.pretty-text-underline::selection {
+  background-color: rgba(0, 150, 255, 0.3);
+  text-shadow: none;
+}
+

Demo

Pretty text underline without clipping descending letters.

Explanation

  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
  2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

Browser support

94.8%

✅ No caveats.

Shape separator

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

HTML

<div class="shape-separator"></div>
+

CSS

.shape-separator {
+  position: relative;
+  height: 48px;
+}
+.shape-separator::after {
+  content: '';
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
+  position: absolute;
+  width: 100%;
+  height: 24px;
+  bottom: 0;
+}
+

Demo

Explanation

  1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
  2. ::after defines a pseudo element.
  3. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated.
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 100% ensures the element stretches the entire width of its parent.
  6. height: 24px is the same height as the shape.
  7. bottom: 0 positions the pseudo element at the bottom of the parent.

Browser support

98.0%

✅ No caveats.

System font stack

Uses the native font of the operating system to get close to a native app feel.

HTML

<p class="system-font-stack">This text uses the system font.</p>
+

CSS

.system-font-stack {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+

Demo

This text uses the system font.

Explanation

The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  3. Segoe UI is used on Windows 10
  4. Roboto is used on Android
  5. Oxygen-Sans is used on GNU+Linux
  6. Ubuntu is used on Linux
  7. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  8. Arial is a font widely supported by all operating systems
  9. sans-serif is the fallback sans-serif font if none of the other fonts are supported

Browser support

99+%

✅ No caveats.

Triangle

Creates a triangle shape with pure CSS.

HTML

<div class="triangle"></div>
+

CSS

.triangle {
+  width: 0;
+  height: 0;
+  border-top: 20px solid #333;
+  border-left: 20px solid transparent;
+  border-right: 20px solid transparent;
+}
+

Demo

Explanation

View this link for a detailed explanation.

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

Experiment with the px values to change the proportion of the triangle.

Browser support

99+%

✅ No caveats.

Truncate text

If the text is longer than one line, it will be truncated and end with an ellipsis ....

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
+

CSS

.truncate-text {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+

Demo

This text will be truncated if it exceeds 200px in width.

Explanation

  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. white-space: nowrap prevents the text from exceeding one line in height.
  3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.

Browser support

98.1%

✅ No caveats.

\ No newline at end of file diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a98fbaab43b95ae0ab62aca9a8e5ba682a59bf12 GIT binary patch literal 1150 zcmbW1%Wo4`6vn3#yDmU1P`hKvvfUu@4^%44N>yPARZ9d?76pk%5`%$|mx&1>%EN~6 zPLn8v0xFM)K$_NpU_@T>c$^7w0wjKrhtt?*Jofy0=h}m^?u^d4XYSnZJKw!?&M3+k z;@+}F5q`T;wns6%c99=;V4~&d|pPOu^?@=XSjH}5}(IS zM}wOS?h1U3bwsCCxyD)RU@gm%;hpO~fjvn?y+?Yzk9_tzR`wd^S`Xo1kKn9e;Ex`; z)+!W=T&1zwe~I7yUUCeP%+|A*tRk7HWHEY}1@$1Lsv!5L)b!|1R|#9xJoWm8%$sI} zaOy14l$ZJC1~N3$T(g^Q-;d-o=Sa;R0^=b~LPzYwoaC^b-&0K}GKkJKv`ia%x|#V* z6SE)d_+jT)JifP|?5BE`7F?ubM_EmdlTI5Fzp|9TSAT{D#t41tMKf-rrrY_z6}r0i zQTFX-0>LA!WIZGjXIV)c!&tvt%3VNLC%N6>CC&_?>=S{1K*Z=~%D77H&)-n}-Pepn z+{Ck9VypE;=Z-U{HuYL8lUfG + + + + 30 Seconds of CSS + + + + + + +
+
+
+ +

30 Seconds of CSS

+

+ A curated collection of useful CSS snippets you can understand in 30 seconds or less. +

+
+
+
+
+
+

Clearfix

+

Ensures that an element self-clears its children.

+

HTML

<div class="clearfix">
+  <div class="floated">float a</div>
+  <div class="floated">float b</div>
+  <div class="floated">float c</div>
+</div>
+
+

CSS

.clearfix::after {
+  content: '';
+  display: table;
+  clear: both;
+}
+.floated {
+  float: left;
+}
+
+

Demo

+
+
+
float a
+
float b
+
float c
+
+
+ +

Explanation

+
    +
  1. .clearfix::after defines a pseudo element.
  2. +
  3. content: '' allows the pseudo element to affect layout.
  4. +
  5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
  6. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Custom text selection

+

Changes the styling of text selection.

+

HTML

<p class="custom-text-selection">Select some of this text.</p>
+
+

CSS

.text-selection::selection {
+  background: red;
+  color: white;
+}
+
+

Demo

+
+

Select some of this text.

+
+ +

Explanation

+

::selection defines a pseudo selector on an element to style text within it when selected.

+

Browser support

+
+
+ 84.6% +
+
+

⚠️ Requires prefixes for full support.

+ +
+
+

Easing variables

+

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

+

HTML

<div class="easing-variables"></div>
+
+

CSS

:root {
+  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
+  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
+  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
+  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
+  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
+  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
+  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
+  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
+  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
+  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
+  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
+  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
+  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
+  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
+  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
+}
+.easing-variables {
+  width: 50px;
+  height: 50px;
+  background: #333;
+  transition: transform 1s var(--ease-out-quart);
+}
+.easing-variables:hover {
+  transform: rotate(45deg);
+}
+
+

Demo

+
+
Hover
+
+ +

Explanation

+

The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

+

Browser support

+
+
+ 87.2% +
+
+

✅ No caveats.

+ +
+
+

Etched text

+

Creates an effect where text appears to be "etched" or engraved into the background.

+

HTML

<p class="etched-text">I appear etched into the background.</p>
+
+

CSS

.etched-text {
+  text-shadow: 0 2px white;
+  font-size: 1.5rem;
+  font-weight: bold;
+  color: #b8bec5;
+}
+
+

Demo

+
+

I appear etched into the background.

+
+ +

Explanation

+

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

+

The background must be darker than the shadow for the effect to work.

+

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

+

Browser support

+
+
+ 97.9% +
+
+

✅ No caveats.

+ +
+
+

Gradient text

+

Gives text a gradient color.

+

HTML

<p class="gradient-text">Gradient text</p>
+
+

CSS

.gradient-text {
+  background: -webkit-linear-gradient(pink, red);
+  -webkit-text-fill-color: transparent;
+  -webkit-background-clip: text;
+}
+
+

Demo

+
+

+ Gradient text +

+
+ +

Explanation

+
    +
  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. +
  3. webkit-text-fill-color: transparent fills the text with a transparent color.
  4. +
  5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
  6. +
+

Browser support

+
+
+ 90.7% +
+
+

⚠️ Uses non-standard properties.

+ +
+
+

Hairline border

+

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

+

HTML

<div class="hairline-border">text</div>
+
+

CSS

.hairline-border {
+  box-shadow: 0 0 0 1px;
+}
+@media (min-resolution: 2dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.5px;
+  }
+}
+@media (min-resolution: 3dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.33333333px;
+  }
+}
+@media (min-resolution: 4dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.25px;
+  }
+}
+
+

Demo

+
+

Text with a hairline border around it.

+
+ +

Explanation

+
    +
  1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
  2. +
  3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
  4. +
+

Browser Support

+
+
+ 95.0% +
+
+

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

+ +
+

*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

+
+
+

Horizontal and vertical centering

+

Horizontally and vertically centers a child element within a parent element.

+

HTML

<div class="horizontal-and-vertical-centering">
+  <div class="child"></div>
+</div>
+
+

CSS

.horizontal-and-vertical-centering {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+

Demo

+
+
+

Centered content.

+
+
+ +

Explanation

+
    +
  1. display: flex enables flexbox.
  2. +
  3. justify-content: center centers the child horizontally.
  4. +
  5. align-items: center centers the child vertically.
  6. +
+

Browser support

+
+
+ 97.8% +
+
+

⚠️ Needs prefixes for full support.

+ +
+
+

Mouse cursor gradient tracking

+

A hover effect where the gradient follows the mouse cursor.

+

HTML

<button class="mouse-cursor-gradient-tracking">
+  <span>Hover me</span>
+</button>
+
+

CSS

.mouse-cursor-gradient-tracking {
+  position: relative;
+  background: #2379f7;
+  padding: 0.5rem 1rem;
+  font-size: 1.2rem;
+  border: none;
+  color: white;
+  cursor: pointer;
+  outline: none;
+  overflow: hidden;
+}
+.mouse-cursor-gradient-tracking span {
+  position: relative;
+}
+.mouse-cursor-gradient-tracking::before {
+  --size: 0;
+  content: '';
+  position: absolute;
+  left: var(--x);
+  top: var(--y);
+  width: var(--size);
+  height: var(--size);
+  background: radial-gradient(circle closest-side, pink, transparent);
+  transform: translate(-50%, -50%);
+  transition: width .2s ease, height .2s ease;
+}
+.mouse-cursor-gradient-tracking:hover::before {
+  --size: 200px;
+}
+
+

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
+btn.onmousemove = function (e) {
+  var x = e.pageX - btn.offsetLeft
+  var y = e.pageY - btn.offsetTop
+  btn.style.setProperty('--x', x + 'px')
+  btn.style.setProperty('--y', y + 'px')
+}
+
+

Demo

+
+ +
+ + +

Explanation

+

TODO

+

Note!

+

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

+
var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
+var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
+
+

Browser support

+
+
+ 87.2% +
+
+

+
Requires JavaScript
+ ⚠️ Requires JavaScript. +

+ +
+
+

Overflow scroll gradient

+

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

+

HTML

<div class="overflow-scroll-gradient">
+  <div class="overflow-scroll-gradient__scroller">
+    Content to be scrolled
+  </div>
+</div>
+
+

CSS

.overflow-scroll-gradient {
+  position: relative;
+}
+.overflow-scroll-gradient::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  width: 300px;
+  height: 25px;
+  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
+}
+.overflow-scroll-gradient__scroller {
+  overflow-y: scroll;
+  background: white;
+  width: 300px;
+  height: 250px;
+  line-height: 1.2;
+  text-align: center;
+}
+
+

Demo

+
+
+
+ Content to be scrolled +
+
+
+ + +

Explanation

+
    +
  1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  10. +
  11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Popout menu

+

Reveals an interactive popout menu on hover.

+

HTML

<div class="reference">
+  <div class="popout-menu">
+    Popout menu
+  </div>
+</div>
+
+

CSS

.reference {
+  position: relative;
+}
+.popout-menu {
+  position: absolute;
+  visibility: hidden;
+  left: 100%;
+}
+.reference:hover > .popout-menu {
+  visibility: visible;
+}
+
+

Demo

+
+
+
+ Popout menu +
+
+
+ +

Explanation

+
    +
  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. +
  3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  4. +
  5. left: 100% moves the the popout menu 100% of its parent's width from the left.
  6. +
  7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  8. +
  9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, + which shows the popout.
  10. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Pretty text underline

+

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

+

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
+
+

CSS

.pretty-text-underline {
+  display: inline;
+  font-size: 1.25rem;
+  text-shadow: 1px 1px 0 #f5f6f9,
+    -1px 1px 0 #f5f6f9,
+    -1px -1px 0 #f5f6f9,
+    1px -1px 0 #f5f6f9;
+  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
+  background-position: 0 1.04em;
+  background-repeat: repeat-x;
+  background-size: 1px 1px;
+}
+.pretty-text-underline::selection {
+  background-color: rgba(0, 150, 255, 0.3);
+  text-shadow: none;
+}
+
+

Demo

+
+

Pretty text underline without clipping descending letters.

+
+ +

Explanation

+
    +
  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use + a larger px size.
  2. +
  3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  4. +
  5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  6. +
  7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. +
  8. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Shape separator

+

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

+

HTML

<div class="shape-separator"></div>
+
+

CSS

.shape-separator {
+  position: relative;
+  height: 48px;
+}
+.shape-separator::after {
+  content: '';
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
+  position: absolute;
+  width: 100%;
+  height: 24px;
+  bottom: 0;
+}
+
+

Demo

+
+
+
+ +

Explanation

+
    +
  1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. +
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 100% ensures the element stretches the entire width of its parent.
  10. +
  11. height: 24px is the same height as the shape.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 98.0% +
+
+

✅ No caveats.

+ +
+
+

System font stack

+

Uses the native font of the operating system to get close to a native app feel.

+

HTML

<p class="system-font-stack">This text uses the system font.</p>
+
+

CSS

.system-font-stack {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+

Demo

+
+

This text uses the system font.

+
+ +

Explanation

+

The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

+
    +
  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. +
  3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  4. +
  5. Segoe UI is used on Windows 10
  6. +
  7. Roboto is used on Android
  8. +
  9. Oxygen-Sans is used on GNU+Linux
  10. +
  11. Ubuntu is used on Linux
  12. +
  13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  14. +
  15. Arial is a font widely supported by all operating systems
  16. +
  17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
  18. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Triangle

+

Creates a triangle shape with pure CSS.

+

HTML

<div class="triangle"></div>
+
+

CSS

.triangle {
+  width: 0;
+  height: 0;
+  border-top: 20px solid #333;
+  border-left: 20px solid transparent;
+  border-right: 20px solid transparent;
+}
+
+

Demo

+
+
+
+
+
+
+
+
+
+ +

Explanation

+

+ View this link for a detailed explanation. +

+

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

+

Experiment with the px values to change the proportion of the triangle.

+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Truncate text

+

If the text is longer than one line, it will be truncated and end with an ellipsis ....

+

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
+
+

CSS

.truncate-text {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+

Demo

+
+

+ This text will be truncated if it exceeds 200px in width. +

+
+ +

Explanation

+
    +
  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. +
  3. white-space: nowrap prevents the text from exceeding one line in height.
  4. +
  5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  6. +
+

Browser support

+
+
+ 98.1% +
+
+

✅ No caveats.

+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..6a87cd27a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11210 @@ +{ + "name": "30-seconds-of-css", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", + "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "5.4.1" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.8", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000810", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.14.1", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true, + "optional": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "optional": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "optional": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.3", + "invariant": "2.2.3", + "semver": "5.5.0" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash.clone": "4.5.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "brfs": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.4.4.tgz", + "integrity": "sha512-rX2qc9hkpLPiwdu1HkLY642rwwo3X6N+ZPyEPdNn3OUKV/B2BRP7dHdnkhGantOJLVoTluNYBi4VecHb2Kq2hw==", + "dev": true, + "requires": { + "quote-stream": "1.0.2", + "resolve": "1.5.0", + "static-module": "2.1.1", + "through2": "2.0.3" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + }, + "dependencies": { + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + } + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000810", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000810.tgz", + "integrity": "sha1-vSWDDEHvq2Qzmi44H0lnc0PIRQk=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz", + "integrity": "sha512-/0Q00Oie9C72P8zQHtFvzmkrMC3oOFUnMWjCy5F2+BE8lzICm91hQPhh0+XIsAFPKOe2Dh3pKgbRmU3EKxfldA==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + } + } + }, + "chalk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "5.2.0" + } + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.2" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "clipboard": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", + "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", + "dev": true, + "optional": true, + "requires": { + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.2" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "clones": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/clones/-/clones-1.1.0.tgz", + "integrity": "sha1-h+kEEy1hQMXAtyAGwIwNBb17Y7M=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "command-exists": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.2.tgz", + "integrity": "sha1-EoGcZPr5VEbsCuB/5sr7brNwiyI=", + "dev": true + }, + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + } + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-whitespace": "0.3.0", + "kind-of": "3.2.2" + } + }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true, + "requires": { + "ini": "1.3.5", + "proto-list": "1.2.4" + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + } + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "4.0.2" + } + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "dotenv": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.0.tgz", + "integrity": "sha512-p4A7snaxI9Hnj3GDWhTpckHYcd9WwZDmGPcvJJV3CoRFq0Dvsp96eYgXBl9WbmbJfuxqiZ2WenNaeWSs675ghQ==", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "editorconfig": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", + "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "commander": "2.14.1", + "lru-cache": "3.2.0", + "semver": "5.5.0", + "sigmund": "1.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.34", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", + "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "optional": true, + "requires": { + "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "optional": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "optional": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", + "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "dev": true, + "requires": { + "acorn": "5.4.1", + "foreach": "2.0.5", + "isarray": "0.0.1", + "object-keys": "1.0.11" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.0.tgz", + "integrity": "sha512-g5OWtoZWcPI56js1DFhIEqyG9tnu/7sG3foHwgS9KGYFMfsYguI3E+PRVCmtmE96VajQIEMRU2OhN+ME589Gdw==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "optional": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "optional": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "minimatch": "3.0.4" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dev": true, + "optional": true, + "requires": { + "delegate": "3.2.0" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "1.4.4", + "unicode-trie": "0.3.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "htmlnano": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.1.6.tgz", + "integrity": "sha512-ZqNHIB8drJKDle7K/2lpRRPDXCdR+RY7veQHoCe0i0HNS+uFbfuwKQpNW/UnQ8l8xPiPlYCq6jf0irL/wcUICQ==", + "dev": true, + "requires": { + "cssnano": "3.10.0", + "object-assign": "4.1.1", + "posthtml": "0.8.7", + "posthtml-render": "1.1.0", + "svgo": "0.7.2", + "uglify-js": "2.8.29" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "posthtml": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.8.7.tgz", + "integrity": "sha1-q6YSTGz4e0zuprq19+UCaPLCAG0=", + "dev": true, + "requires": { + "posthtml-parser": "0.1.3", + "posthtml-render": "1.1.0" + } + }, + "posthtml-parser": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.1.3.tgz", + "integrity": "sha1-QyUfV1ujTjYQMveaEeD8k6sjKyQ=", + "dev": true, + "requires": { + "htmlparser2": "3.9.2" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.7.0", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true, + "optional": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "optional": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true, + "optional": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true, + "optional": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", + "dev": true + }, + "js-beautify": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz", + "integrity": "sha512-9OhfAqGOrD7hoQBLJMTA+BKuKmoEtTJXzZ7WDF/9gvjtey1koVLuZqIY6c51aPDjbNdNtIXAkiWKVhziawE9Og==", + "dev": true, + "requires": { + "config-chain": "1.1.11", + "editorconfig": "0.13.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "11.6.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", + "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.4.1", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.1", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "4.0.0", + "pn": "1.1.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.4.0", + "ws": "4.1.0", + "xml-name-validator": "3.0.0" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "dev": true, + "requires": { + "pseudomap": "1.0.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "marked": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.16.tgz", + "integrity": "sha512-diLiAxHidES67uJ1P5unXBUB4CyOFwodKrctuK0U4Ogw865N9Aw4dLmY0BK0tGKOy3xvkdMGgUXPD6W9z1Ne0Q==", + "dev": true + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.8.tgz", + "integrity": "sha512-/XeuOQqYg+B5kwjDWekXseSwGS7CzE0w9Gjo4Cjkf/uFitNh47NrZHAY2vp/oS2YQVfebPIdbEIvgdy+kIcAog==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.4", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-sass": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", + "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.9.2", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.14.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + } + } + }, + "nodemon": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.15.1.tgz", + "integrity": "sha512-zWNke/X74j3ljDRCXnhURTLJaCxew31ax4azoPQyRYAoUBqNIlZGaNpMcyi/A/ylkGKWFiUzf7HHFyA/cveTcQ==", + "dev": true, + "requires": { + "chokidar": "2.0.2", + "debug": "3.1.0", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.0", + "semver": "5.5.0", + "touch": "3.1.0", + "undefsafe": "2.0.2", + "update-notifier": "2.3.0" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "normalize.css": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.0.tgz", + "integrity": "sha512-iXcbM3NWr0XkNyfiSBsoPezi+0V92P9nj84yVV1/UZxRUrGczgX/X91KMAGM0omWLY2+2Q1gKD/XRn4gQRDB2A==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "optional": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opn": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parcel-bundler": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.6.2.tgz", + "integrity": "sha512-0Lt0oRIOMjCs0sJ/pAUNnlQq/nGNmME/jzNl64hRWdR5Ml62w13f2hT//tmES6IUEeiGo9n3GyQIqG7bzUc2QQ==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-core": "6.26.0", + "babel-generator": "6.26.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-preset-env": "1.6.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "babylon-walk": "1.0.2", + "browser-resolve": "1.11.2", + "browserslist": "2.11.3", + "chalk": "2.3.1", + "chokidar": "2.0.2", + "command-exists": "1.2.2", + "commander": "2.14.1", + "cross-spawn": "6.0.4", + "cssnano": "3.10.0", + "dotenv": "5.0.0", + "filesize": "3.6.0", + "get-port": "3.2.0", + "glob": "7.1.2", + "grapheme-breaker": "0.3.2", + "htmlnano": "0.1.6", + "is-url": "1.2.2", + "js-yaml": "3.10.0", + "json5": "0.5.1", + "micromatch": "3.1.8", + "mkdirp": "0.5.1", + "node-forge": "0.7.1", + "node-libs-browser": "2.1.0", + "opn": "5.2.0", + "physical-cpu-count": "2.0.0", + "postcss": "6.0.19", + "postcss-value-parser": "3.3.0", + "posthtml": "0.11.3", + "posthtml-parser": "0.4.1", + "posthtml-render": "1.1.0", + "resolve": "1.5.0", + "sanitize-filename": "1.6.1", + "semver": "5.5.0", + "serialize-to-js": "1.1.1", + "serve-static": "1.13.2", + "source-map": "0.6.1", + "strip-ansi": "4.0.0", + "toml": "2.3.3", + "tomlify-j0.4": "3.0.0", + "uglify-es": "3.3.9", + "v8-compile-cache": "1.1.2", + "worker-farm": "1.5.2", + "ws": "4.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.4.tgz", + "integrity": "sha512-LDYnK41m8td+nBTk5Jmn55aGVP18iYuUqoM1X3u+ptt7M/g9FPS8C38PNoJTMfjoNx4fmiwWToPpiZklGRLbIA==", + "dev": true, + "requires": { + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "optional": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", + "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", + "dev": true, + "requires": { + "chalk": "2.3.1", + "source-map": "0.6.1", + "supports-color": "5.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "posthtml": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.3.tgz", + "integrity": "sha512-quMHnDckt2DQ9lRi6bYLnuyBDnVzK+McHa8+ar4kTdYbWEo/92hREOu3h70ZirudOOp/my2b3r0m5YtxY52yrA==", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "posthtml-parser": "0.3.3", + "posthtml-render": "1.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "posthtml-parser": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.3.3.tgz", + "integrity": "sha512-H/Z/yXGwl49A7hYQLV1iQ3h87NE0aZ/PMZhFwhw3lKeCAN+Ti4idrHvVvh4/GX10I7u77aQw+QB4vV5/Lzvv5A==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "isobject": "2.1.0", + "object-assign": "4.1.1" + } + } + } + }, + "posthtml-parser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.1.tgz", + "integrity": "sha512-h7vXIQ21Ikz2w5wPClPakNP6mJeJCK6BT0GpqnQrNNABdR7/TchNlFyryL1Bz6Ww53YWCKkr6tdZuHlxY1AVdQ==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "object-assign": "4.1.1" + } + }, + "posthtml-render": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.0.tgz", + "integrity": "sha512-EeUf38sN9VOS6sIe8HhgzE1qpZ+2ARXj/b7IJoUi0CQqxH4qeF6ZxAK808YhhWI4FsT3RCNiSKJ7tDSZ4rkd7w==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true, + "optional": true + }, + "prettier": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.2.tgz", + "integrity": "sha512-TcdNoQIWFoHblurqqU6d1ysopjq7UX0oRcT/hJ8qvBAELiYWn+Ugf0AXdnzISEJ7vuhNnQ98N8jR8Sh53x4IZg==", + "dev": true + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "0.2.1", + "extend-shallow": "2.0.1", + "js-beautify": "1.7.5" + } + }, + "prismjs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.11.0.tgz", + "integrity": "sha1-KXrvM+t5Qhv9sZJzpQkspRWXDSk=", + "dev": true, + "requires": { + "clipboard": "1.7.1" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "dev": true, + "requires": { + "event-stream": "3.3.4" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pstree.remy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", + "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", + "dev": true, + "requires": { + "ps-tree": "1.1.0" + } + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "1.2.0", + "through2": "2.0.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "optional": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.4", + "set-immediate-shim": "1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "optional": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.5", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "safer-eval": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/safer-eval/-/safer-eval-1.2.3.tgz", + "integrity": "sha512-nDwXOhiheoaBT6op02n8wzsshjLXHhh4YAeqsDEoVmy1k2+lGv/ENLsGaWqkaKArUkUx48VO12/ZPa3sI/OEqQ==", + "dev": true, + "requires": { + "clones": "1.1.0" + } + }, + "sanitize-filename": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", + "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "dev": true, + "requires": { + "truncate-utf8-bytes": "1.0.2" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.4.3", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serialize-to-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.1.1.tgz", + "integrity": "sha1-TNOkCj1fLQFGJcuSg835kIACKPU=", + "dev": true, + "requires": { + "js-beautify": "1.6.14", + "safer-eval": "1.2.3" + }, + "dependencies": { + "js-beautify": { + "version": "1.6.14", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.6.14.tgz", + "integrity": "sha1-07j3Mi0CuSd9WL0jgmTDJ+WARM0=", + "dev": true, + "requires": { + "config-chain": "1.1.11", + "editorconfig": "0.13.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "static-eval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz", + "integrity": "sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw==", + "dev": true, + "requires": { + "escodegen": "1.9.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "static-module": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.1.1.tgz", + "integrity": "sha512-PPLCnxRl74wV38rG1T0rH8Fl2wIktTXFo7/varrZjtSGb/vndZIGkpe4HJVd8hoBYXRkRHW6hlCRAHvmDgrYQQ==", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexer2": "0.1.4", + "escodegen": "1.9.0", + "falafel": "2.1.0", + "has": "1.0.1", + "object-inspect": "1.4.1", + "quote-stream": "1.0.2", + "readable-stream": "2.3.4", + "shallow-copy": "0.0.1", + "static-eval": "2.0.0", + "through2": "2.0.3" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + } + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tiny-emitter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", + "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==", + "dev": true, + "optional": true + }, + "tiny-inflate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz", + "integrity": "sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "toml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", + "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==", + "dev": true + }, + "tomlify-j0.4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz", + "integrity": "sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==", + "dev": true + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "1.0.4" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "undefsafe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", + "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", + "dev": true, + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dev": true, + "requires": { + "pako": "0.2.9", + "tiny-inflate": "1.0.2" + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz", + "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==", + "dev": true, + "requires": { + "lodash.endswith": "4.2.1", + "lodash.isfunction": "3.0.9", + "lodash.isstring": "4.0.1", + "lodash.startswith": "4.2.1" + } + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.1", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "v8-compile-cache": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", + "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "0.1.2" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true, + "requires": { + "errno": "0.1.7", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..cfa4953c9 --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "30-seconds-of-css", + "version": "0.0.0", + "description": "A curated collection of useful CSS snippets.", + "main": "index.js", + "scripts": { + "dev": "nodemon -e md,js ./scripts/build.js & parcel", + "build": "node ./scripts/build.js && npm run prettier && npm run parcel", + "parcel": "parcel build index.html --public-url ./", + "prettier": "prettier --single-quote --no-semi --print-width=100 ./js/index.js --write './src/**/*.js' './src/**/*.scss'" + }, + "author": "atomiks", + "license": "MIT", + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-preset-stage-2": "^6.24.1", + "caniuse-db": "^1.0.30000810", + "jsdom": "^11.6.2", + "marked": "^0.3.16", + "node-sass": "^4.7.2", + "nodemon": "^1.15.1", + "normalize.css": "^8.0.0", + "parcel-bundler": "^1.6.2", + "prettier": "^1.10.2", + "pretty": "^2.0.0", + "prismjs": "^1.11.0" + } +} diff --git a/scripts/build.js b/scripts/build.js new file mode 100644 index 000000000..c1b9902ed --- /dev/null +++ b/scripts/build.js @@ -0,0 +1,70 @@ +const fs = require('fs') +const path = require('path') +const marked = require('marked') +const pretty = require('pretty') +const { JSDOM } = require('jsdom') +const caniuseDb = require('caniuse-db/data.json') +const { toKebabCase, emptyHTML } = require('../utils/utils.js') + +const renderer = new marked.Renderer() +renderer.heading = (text, level) => + level === 3 + ? `${text}` + : `${text}` +renderer.link = (url, _, text) => `${text || url}` + +const SNIPPETS_PATH = './snippets' +const SNIPPET_CONTAINER_SELECTOR = '.main > .container' + +const createElement = str => { + const el = document.createElement('div') + el.innerHTML = str + return el.firstElementChild +} + +const template = markdown => ` +
+ ${markdown} +
+` + +const document = new JSDOM(fs.readFileSync('./index.html', 'utf8')).window.document +const snippetContainer = document.querySelector('.main > .container') +const sidebarLinks = document.querySelector('.sidebar__links') +emptyHTML(snippetContainer, sidebarLinks) + +for (const snippetFile of fs.readdirSync(SNIPPETS_PATH)) { + const snippetPath = path.join(SNIPPETS_PATH, snippetFile) + const snippetData = fs.readFileSync(snippetPath, 'utf8') + const markdown = marked(snippetData, { renderer }) + const snippetTemplate = template(markdown) + const el = createElement(snippetTemplate) + snippetContainer.append(el) + + sidebarLinks.append( + createElement( + `${ + el.querySelector('h3').innerHTML + }` + ) + ) + + const featUsageShares = (snippetData.match(/https?:\/\/caniuse\.com\/#feat=.*/g) || []).map( + feat => { + const featData = caniuseDb.data[feat.match(/#feat=(.*)/)[1]] + return featData ? Number(featData.usage_perc_y + featData.usage_perc_a) : 100 + } + ) + + el.querySelector('h4:last-of-type').after( + createElement(` +
+
+ ${featUsageShares.length ? Math.min(...featUsageShares).toPrecision(3) : '99+'}% +
+
+ `) + ) +} + +fs.writeFileSync('./index.html', pretty(document.documentElement.outerHTML, { ocd: true })) diff --git a/snippets/clearfix.md b/snippets/clearfix.md new file mode 100644 index 000000000..033e3d036 --- /dev/null +++ b/snippets/clearfix.md @@ -0,0 +1,60 @@ +### Clearfix + +Ensures that an element self-clears its children. + +#### HTML + +```html +
+
float a
+
float b
+
float c
+
+``` + +#### CSS + +```css +.clearfix::after { + content: ''; + display: table; + clear: both; +} + +.floated { + float: left; +} +``` + +#### Demo + +
+
+
float a
+
float b
+
float c
+
+
+ + + +#### Explanation + +1. `.clearfix::after` defines a pseudo element. +2. `content: ''` allows the pseudo element to affect layout. +3. `clear: both` indicates that the left, right or both sides of the element cannot be adjacent +to earlier floated elements within the same block formatting context. + +#### Browser support + +✅ No caveats. diff --git a/snippets/custom-text-selection.md b/snippets/custom-text-selection.md new file mode 100644 index 000000000..e3b4c3687 --- /dev/null +++ b/snippets/custom-text-selection.md @@ -0,0 +1,41 @@ +### Custom text selection + +Changes the styling of text selection. + +#### HTML + +```html +

Select some of this text.

+``` + +#### CSS + +```css +.text-selection::selection { + background: red; + color: white; +} +``` + +#### Demo + +
+

Select some of this text.

+
+ + + +#### Explanation + +`::selection` defines a pseudo selector on an element to style text within it when selected. + +#### Browser support + +⚠️ Requires prefixes for full support. + +* https://caniuse.com/#feat=css-selection diff --git a/snippets/easing-variables.md b/snippets/easing-variables.md new file mode 100644 index 000000000..88f9d2951 --- /dev/null +++ b/snippets/easing-variables.md @@ -0,0 +1,106 @@ +### Easing variables + +Variables that can be reused for `transition-timing-function` properties, more +powerful than the built-in `ease`, `ease-in`, `ease-out` and `ease-in-out`. + +#### HTML + +```html +
+``` + +#### CSS + +```css +:root { + --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53); + --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19); + --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22); + --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); + --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035); + --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335); + + --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94); + --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1); + --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1); + --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); + --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1); + --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1); + + --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955); + --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1); + --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1); + --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + --ease-in-out-expo: cubic-bezier(1, 0, 0, 1); + --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86); +} + +.easing-variables { + width: 50px; + height: 50px; + background: #333; + transition: transform 1s var(--ease-out-quart); +} + +.easing-variables:hover { + transform: rotate(45deg); +} +``` + +#### Demo + +
+
Hover
+
+ + + +#### Explanation + +The variables are defined globally with the `:root` CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, `:root` represents the `` element and is identical to the selector html, except that its specificity is higher. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=css-variables diff --git a/snippets/etched-text.md b/snippets/etched-text.md new file mode 100644 index 000000000..81f81911e --- /dev/null +++ b/snippets/etched-text.md @@ -0,0 +1,51 @@ +### Etched text + +Creates an effect where text appears to be "etched" or engraved into the background. + +#### HTML + +```html +

I appear etched into the background.

+``` + +#### CSS + +```css +.etched-text { + text-shadow: 0 2px white; + font-size: 1.5rem; + font-weight: bold; + color: #b8bec5; +} +``` + +#### Demo + +
+

I appear etched into the background.

+
+ + + +#### Explanation + +`text-shadow: 0 2px white` creates a white shadow offset `0px` horizontally and `2px` vertically +from the origin position. + +The background must be darker than the shadow for the effect to work. + +The text color should be slightly faded to make it look like it's engraved/carved out +of the background. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=css-textshadow diff --git a/snippets/gradient-text.md b/snippets/gradient-text.md new file mode 100644 index 000000000..c778ccfb8 --- /dev/null +++ b/snippets/gradient-text.md @@ -0,0 +1,51 @@ +### Gradient text + +Gives text a gradient color. + +#### HTML + +```html +

Gradient text

+``` + +#### CSS + +```css +.gradient-text { + background: -webkit-linear-gradient(pink, red); + -webkit-text-fill-color: transparent; + -webkit-background-clip: text; +} +``` + +#### Demo + +
+

+ Gradient text +

+
+ + + +#### Explanation + +1. `background: -webkit-linear-gradient(...)` gives the text element a gradient background. +2. `webkit-text-fill-color: transparent` fills the text with a transparent color. +3. `webkit-background-clip: text` clips the background with the text, filling the text with + the gradient background as the color. + +#### Browser support + +⚠️ Uses non-standard properties. + +* https://caniuse.com/#feat=text-stroke diff --git a/snippets/hairline-border.md b/snippets/hairline-border.md new file mode 100644 index 000000000..42a3e0c47 --- /dev/null +++ b/snippets/hairline-border.md @@ -0,0 +1,83 @@ +### Hairline border + +Gives an element a border equal to 1 native device pixel in width, which can look +very sharp and crisp. + +#### HTML + +```html +
text
+``` + +#### CSS + +```css +.hairline-border { + box-shadow: 0 0 0 1px; +} + +@media (min-resolution: 2dppx) { + .hairline-border { + box-shadow: 0 0 0 0.5px; + } +} + +@media (min-resolution: 3dppx) { + .hairline-border { + box-shadow: 0 0 0 0.33333333px; + } +} + +@media (min-resolution: 4dppx) { + .hairline-border { + box-shadow: 0 0 0 0.25px; + } +} +``` + +#### Demo + +
+

Text with a hairline border around it.

+
+ + + +#### Explanation + +1. `box-shadow`, when only using spread, adds a psuedo-border which can use subpixels\*. +2. Use `@media (min-resolution: ...)` to check the device pixel ratio (`1ddpx` equals 96 DPI), + setting the spread of the `box-shadow` equal to `1 / dppx`. + +#### Browser Support + +⚠️ Needs alternate syntax and JavaScript user agent checking for full support. + +* https://caniuse.com/#feat=css-boxshadow +* https://caniuse.com/#feat=css-media-resolution + +
+ +\*Chrome does not support subpixel values on `border`. Safari does not support subpixel values on `box-shadow`. Firefox supports subpixel values on both. diff --git a/snippets/horizontal-and-vertical-centering.md b/snippets/horizontal-and-vertical-centering.md new file mode 100644 index 000000000..6843798f4 --- /dev/null +++ b/snippets/horizontal-and-vertical-centering.md @@ -0,0 +1,50 @@ +### Horizontal and vertical centering + +Horizontally and vertically centers a child element within a parent element. + +#### HTML + +```html +
+
+
+``` + +#### CSS + +```css +.horizontal-and-vertical-centering { + display: flex; + justify-content: center; + align-items: center; +} +``` + +#### Demo + +
+
+

Centered content.

+
+
+ + + +#### Explanation + +1. `display: flex` enables flexbox. +2. `justify-content: center` centers the child horizontally. +3. `align-items: center` centers the child vertically. + +#### Browser support + +⚠️ Needs prefixes for full support. + +* https://caniuse.com/#feat=flexbox diff --git a/snippets/mouse-cursor-gradient-tracking.md b/snippets/mouse-cursor-gradient-tracking.md new file mode 100644 index 000000000..ac048f607 --- /dev/null +++ b/snippets/mouse-cursor-gradient-tracking.md @@ -0,0 +1,135 @@ +### Mouse cursor gradient tracking + +A hover effect where the gradient follows the mouse cursor. + +#### HTML + +```html + +``` + +#### CSS + +```css +.mouse-cursor-gradient-tracking { + position: relative; + background: #2379f7; + padding: 0.5rem 1rem; + font-size: 1.2rem; + border: none; + color: white; + cursor: pointer; + outline: none; + overflow: hidden; +} + +.mouse-cursor-gradient-tracking span { + position: relative; +} + +.mouse-cursor-gradient-tracking::before { + --size: 0; + content: ''; + position: absolute; + left: var(--x); + top: var(--y); + width: var(--size); + height: var(--size); + background: radial-gradient(circle closest-side, pink, transparent); + transform: translate(-50%, -50%); + transition: width .2s ease, height .2s ease; +} + +.mouse-cursor-gradient-tracking:hover::before { + --size: 200px; +} +``` + +#### JavaScript + +```js +var btn = document.querySelector('.mouse-cursor-gradient-tracking') +btn.onmousemove = function (e) { + var x = e.pageX - btn.offsetLeft + var y = e.pageY - btn.offsetTop + btn.style.setProperty('--x', x + 'px') + btn.style.setProperty('--y', y + 'px') +} +``` + +#### Demo + +
+ +
+ + + + + +#### Explanation + +_TODO_ + +**Note!** + +If the element's parent has a positioning context (`position: relative`), you will need to subtract +its offsets as well. + +```js +var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft +var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop +``` + +#### Browser support +
Requires JavaScript
+⚠️ Requires JavaScript. + +* https://caniuse.com/#feat=css-variables diff --git a/snippets/overflow-scroll-gradient.md b/snippets/overflow-scroll-gradient.md new file mode 100644 index 000000000..cb307a094 --- /dev/null +++ b/snippets/overflow-scroll-gradient.md @@ -0,0 +1,91 @@ +### Overflow scroll gradient + +Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled. + +#### HTML + +```html +
+
+ Content to be scrolled +
+
+``` + +#### CSS + +```css +.overflow-scroll-gradient { + position: relative; +} +.overflow-scroll-gradient::after { + content: ''; + position: absolute; + bottom: 0; + width: 300px; + height: 25px; + background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */ +} +.overflow-scroll-gradient__scroller { + overflow-y: scroll; + background: white; + width: 300px; + height: 250px; + line-height: 1.2; + text-align: center; +} +``` + +#### Demo + +
+
+
+ Content to be scrolled +
+
+
+ + + + + +#### Explanation + +1. `position: relative` on the parent establishes a Cartesian positioning context for psuedo elements. +2. `::after` defines a pseudo element. +3. `background-image: linear-gradient(...)` adds a linear gradient that fades from transparent to white +(top to bottom). +4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. +5. `width: 300px` matches the size of the scrolling element (which is a child of the parent that has + the pseudo element). +6. `height: 25px` is the height of the fading gradient psuedo element, which should be kept relatively small. +7. `bottom: 0` positions the pseudo element at the bottom of the parent. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=css-gradients diff --git a/snippets/popout-menu.md b/snippets/popout-menu.md new file mode 100644 index 000000000..191cd92e2 --- /dev/null +++ b/snippets/popout-menu.md @@ -0,0 +1,77 @@ +### Popout menu + +Reveals an interactive popout menu on hover. + +#### HTML + +```html +
+
+ Popout menu +
+
+``` + +#### CSS + +```css +.reference { + position: relative; +} +.popout-menu { + position: absolute; + visibility: hidden; + left: 100%; +} +.reference:hover > .popout-menu { + visibility: visible; +} +``` + +#### Demo + +
+
+
+ Popout menu +
+
+
+ + + +#### Explanation + +1. `position: relative` on the reference parent establishes a Cartesian positioning context for its child. +2. `position: absolute` takes the popout menu out of the flow of the document and positions it + in relation to the parent. +3. `left: 100%` moves the the popout menu 100% of its parent's width from the left. +4. `visibility: hidden` hides the popout menu initially and allows for transitions (unlike `display: none`). +5. `.reference:hover > .popout-menu` means that when `.reference` is hovered over, select immediate + children with a class of `.popout-menu` and change their `visibility` to `visible`, which shows the popout. + +#### Browser support + +✅ No caveats. diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md new file mode 100644 index 000000000..3f3012ce5 --- /dev/null +++ b/snippets/pretty-text-underline.md @@ -0,0 +1,75 @@ +### Pretty text underline + +A nicer alternative to `text-decoration: underline` where descenders do not clip the underline. +Natively implemented as `text-decoration-skip-ink: auto` but it has less control over the underline. + +#### HTML + +```html +

Pretty text underline without clipping descending letters.

+``` + +#### CSS + +```css +.pretty-text-underline { + display: inline; + font-size: 1.25rem; + text-shadow: 1px 1px 0 #f5f6f9, + -1px 1px 0 #f5f6f9, + -1px -1px 0 #f5f6f9, + 1px -1px 0 #f5f6f9; + background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); + background-position: 0 1.04em; + background-repeat: repeat-x; + background-size: 1px 1px; +} +.pretty-text-underline::selection { + background-color: rgba(0, 150, 255, 0.3); + text-shadow: none; +} +``` + +#### Demo + +
+

Pretty text underline without clipping descending letters.

+
+ + + +#### Explanation + +1. `text-shadow: ...` has 4 values with offsets that cover a 4x4 px area to ensure the underline + has a "thick" shadow that covers the line where descenders clip it. Use a color + that matches the background. For a larger font, use a larger `px` size. +2. `background-image: linear-gradient(...)` creates a 90deg gradient with the current + text color (`currentColor`). +3. The `background-*` properties size the gradient as 1x1px at the bottom and repeats it along the x-axis. +4. The `::selection` pseudo selector ensures the text shadow does not interfere with text + selection. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=css-textshadow +* https://caniuse.com/#feat=css-gradients diff --git a/snippets/shape-separator.md b/snippets/shape-separator.md new file mode 100644 index 000000000..dc5f08108 --- /dev/null +++ b/snippets/shape-separator.md @@ -0,0 +1,66 @@ +### Shape separator + +Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation. + +#### HTML + +```html +
+``` + +#### CSS + +```css +.shape-separator { + position: relative; + height: 48px; +} +.shape-separator::after { + content: ''; + background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+); + position: absolute; + width: 100%; + height: 24px; + bottom: 0; +} +``` + +#### Demo + +
+
+
+ + + +#### Explanation + +1. `position: relative` on the element establishes a Cartesian positioning context for psuedo elements. +2. `::after` defines a pseudo element. +3. `background-image: url(...)` adds the SVG shape (a 24x24 triangle in base64 format) as the background image + of the psuedo element, which repeats by default. It must be the same color as the block that is being + separated. +4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. +5. `width: 100%` ensures the element stretches the entire width of its parent. +6. `height: 24px` is the same height as the shape. +7. `bottom: 0` positions the pseudo element at the bottom of the parent. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=svg diff --git a/snippets/system-font-stack.md b/snippets/system-font-stack.md new file mode 100644 index 000000000..54c1bdfb4 --- /dev/null +++ b/snippets/system-font-stack.md @@ -0,0 +1,48 @@ +### System font stack + +Uses the native font of the operating system to get close to a native app feel. + +#### HTML + +```html +

This text uses the system font.

+``` + +#### CSS + +```css +.system-font-stack { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif; +} +``` + +#### Demo + +
+

This text uses the system font.

+
+ + + +#### Explanation + +The browser looks for each successive font, preferring the first one if possible, and +falls back to the next of it cannot find the font (on the system or defined in CSS). + +1. `-apple-system` is San Francisco, used on iOS and macOS (not Chrome however) +2. `BlinkMacSystemFont` is San Francisco, used on macOS Chrome +3. `Segoe UI` is used on Windows 10 +4. `Roboto` is used on Android +5. `Oxygen-Sans` is used on GNU+Linux +6. `Ubuntu` is used on Linux +7. `"Helvetica Neue"` and `Helvetica` is used on macOS 10.10 and below (wrapped in quotes because it has a space) +8. `Arial` is a font widely supported by all operating systems +9. `sans-serif` is the fallback sans-serif font if none of the other fonts are supported + +#### Browser support + +✅ No caveats. diff --git a/snippets/triangle.md b/snippets/triangle.md new file mode 100644 index 000000000..b39bcf41e --- /dev/null +++ b/snippets/triangle.md @@ -0,0 +1,91 @@ +### Triangle + +Creates a triangle shape with pure CSS. + +#### HTML + +```html +
+``` + +#### CSS + +```css +.triangle { + width: 0; + height: 0; + border-top: 20px solid #333; + border-left: 20px solid transparent; + border-right: 20px solid transparent; +} +``` + +#### Demo + +
+
+
+
+
+
+
+
+
+ + + +#### Explanation + +[View this link for a detailed explanation.](https://stackoverflow.com/q/7073484) + +The color of the border is the color of the triangle. The side the triangle tip points +corresponds to the opposite `border-*` property. For example, a color on `border-top` +means the arrow points downward. + +Experiment with the `px` values to change the proportion of the triangle. + +#### Browser support + +✅ No caveats. diff --git a/snippets/truncate-text.md b/snippets/truncate-text.md new file mode 100644 index 000000000..653432f7a --- /dev/null +++ b/snippets/truncate-text.md @@ -0,0 +1,51 @@ +### Truncate text + +If the text is longer than one line, it will be truncated and end with an ellipsis `...`. + +#### HTML + +```html +

If I exceed one line's width, I will be truncated.

+``` + +#### CSS + +```css +.truncate-text { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +``` + +#### Demo + +
+

+ This text will be truncated if it exceeds 200px in width. +

+
+ + + +#### Explanation + +1. `overflow: hidden` prevents the text from overflowing its dimensions + (for a block, 100% width and auto height). +2. `white-space: nowrap` prevents the text from exceeding one line in height. +3. `text-overflow: ellipsis` makes it so that if the text exceeds its dimensions, it + will end with an ellipsis. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=text-overflow diff --git a/src/css/components/back-to-top-button.scss b/src/css/components/back-to-top-button.scss new file mode 100644 index 000000000..e47e21704 --- /dev/null +++ b/src/css/components/back-to-top-button.scss @@ -0,0 +1,39 @@ +.back-to-top-button { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + font-size: 2rem; + font-weight: bold; + background: white; + width: 4rem; + height: 4rem; + position: fixed; + right: 2rem; + bottom: 2rem; + border-radius: 50%; + user-select: none; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); + transition: all 0.2s ease-out; + visibility: hidden; + opacity: 0; + z-index: 1; + border: 1px solid rgba(0, 32, 128, 0.1); + outline: 0; + + &:hover, + &:focus { + transform: scale(1.1); + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); + color: #35a8ff; + } + + &:focus { + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; + } + + &.is-visible { + visibility: visible; + opacity: 1; + } +} diff --git a/src/css/components/base.scss b/src/css/components/base.scss new file mode 100644 index 000000000..16ac5bc11 --- /dev/null +++ b/src/css/components/base.scss @@ -0,0 +1,60 @@ +html { + font-size: 0.95rem; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, + Arial, sans-serif; + background: #f6f7fd; + color: rgb(50, 75, 100); + line-height: 1.5; +} + +a { + color: #157bda; + text-decoration: none; + word-wrap: break-word; + overflow-wrap: break-word; + + &:hover { + color: #0090ff; + } +} + +hr { + border: 0; + border-top: 1px solid rgba(0, 32, 128, 0.1); +} + +ul, +ol { + padding-left: 1.25rem; +} + +.container { + max-width: 1000px; + padding: 0 2%; + margin: 0 auto; +} + +.main > .container { + padding: 0; +} + +@media (min-width: 579px) { + .main > .container { + padding: 0 2%; + } +} + +@media (min-width: 768px) { + html { + font-size: 1rem; + } +} + +@media (min-width: 992px) { + .content-wrapper { + margin-left: 200px; + } +} diff --git a/src/css/components/hamburger.scss b/src/css/components/hamburger.scss new file mode 100644 index 000000000..e3357ce65 --- /dev/null +++ b/src/css/components/hamburger.scss @@ -0,0 +1,927 @@ +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */ +.hamburger { + padding: 1rem; + display: inline-block; + cursor: pointer; + transition-property: opacity, filter; + transition-duration: 0.15s; + transition-timing-function: linear; + font: inherit; + color: inherit; + text-transform: none; + background-color: transparent; + border: 0; + margin: 0; + overflow: visible; + outline: 0; +} +.hamburger:hover { + opacity: 0.7; +} + +.hamburger-box { + width: 40px; + height: 20px; + display: inline-block; + position: relative; +} + +.hamburger-inner { + display: block; + top: 50%; +} +.hamburger-inner, +.hamburger-inner::before, +.hamburger-inner::after { + width: 36px; + height: 2px; + background-color: #e3f5ff; + border-radius: 4px; + position: absolute; + transition-property: transform; + transition-duration: 0.15s; + transition-timing-function: ease; +} +.hamburger-inner::before, +.hamburger-inner::after { + content: ''; + display: block; +} +.hamburger-inner::before { + top: -10px; +} +.hamburger-inner::after { + bottom: -10px; +} + +/* + * 3DX + */ +.hamburger--3dx .hamburger-box { + perspective: 80px; +} + +.hamburger--3dx .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), + background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.hamburger--3dx .hamburger-inner::before, +.hamburger--3dx .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.hamburger--3dx.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(180deg); +} +.hamburger--3dx.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--3dx.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); +} + +/* + * 3DX Reverse + */ +.hamburger--3dx-r .hamburger-box { + perspective: 80px; +} + +.hamburger--3dx-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), + background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.hamburger--3dx-r .hamburger-inner::before, +.hamburger--3dx-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.hamburger--3dx-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(-180deg); +} +.hamburger--3dx-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--3dx-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); +} + +/* + * 3DY + */ +.hamburger--3dy .hamburger-box { + perspective: 80px; +} + +.hamburger--3dy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), + background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.hamburger--3dy .hamburger-inner::before, +.hamburger--3dy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.hamburger--3dy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(-180deg); +} +.hamburger--3dy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--3dy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); +} + +/* + * 3DY Reverse + */ +.hamburger--3dy-r .hamburger-box { + perspective: 80px; +} + +.hamburger--3dy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), + background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.hamburger--3dy-r .hamburger-inner::before, +.hamburger--3dy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.hamburger--3dy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg); +} +.hamburger--3dy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--3dy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); +} + +/* + * 3DXY + */ +.hamburger--3dxy .hamburger-box { + perspective: 80px; +} + +.hamburger--3dxy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), + background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.hamburger--3dxy .hamburger-inner::before, +.hamburger--3dxy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.hamburger--3dxy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg); +} +.hamburger--3dxy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--3dxy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); +} + +/* + * 3DXY Reverse + */ +.hamburger--3dxy-r .hamburger-box { + perspective: 80px; +} + +.hamburger--3dxy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), + background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.hamburger--3dxy-r .hamburger-inner::before, +.hamburger--3dxy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.hamburger--3dxy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); +} +.hamburger--3dxy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--3dxy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); +} + +/* + * Arrow + */ +.hamburger--arrow.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); +} + +.hamburger--arrow.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); +} + +/* + * Arrow Right + */ +.hamburger--arrow-r.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); +} + +.hamburger--arrow-r.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); +} + +/* + * Arrow Alt + */ +.hamburger--arrowalt .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); +} + +.hamburger--arrowalt .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); +} + +.hamburger--arrowalt.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); +} + +.hamburger--arrowalt.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); +} + +/* + * Arrow Alt Right + */ +.hamburger--arrowalt-r .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); +} + +.hamburger--arrowalt-r .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); +} + +.hamburger--arrowalt-r.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); +} + +.hamburger--arrowalt-r.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); +} + +/* + * Arrow Turn + */ +.hamburger--arrowturn.is-active .hamburger-inner { + transform: rotate(-180deg); +} +.hamburger--arrowturn.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); +} +.hamburger--arrowturn.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); +} + +/* + * Arrow Turn Right + */ +.hamburger--arrowturn-r.is-active .hamburger-inner { + transform: rotate(-180deg); +} +.hamburger--arrowturn-r.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); +} +.hamburger--arrowturn-r.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); +} + +/* + * Boring + */ +.hamburger--boring .hamburger-inner, +.hamburger--boring .hamburger-inner::before, +.hamburger--boring .hamburger-inner::after { + transition-property: none; +} + +.hamburger--boring.is-active .hamburger-inner { + transform: rotate(45deg); +} +.hamburger--boring.is-active .hamburger-inner::before { + top: 0; + opacity: 0; +} +.hamburger--boring.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); +} + +/* + * Collapse + */ +.hamburger--collapse .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--collapse .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; +} +.hamburger--collapse .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), + transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--collapse.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--collapse.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; +} +.hamburger--collapse.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), + transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Collapse Reverse + */ +.hamburger--collapse-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--collapse-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; +} +.hamburger--collapse-r .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), + transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--collapse-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--collapse-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; +} +.hamburger--collapse-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), + transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Elastic + */ +.hamburger--elastic .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); +} +.hamburger--elastic .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; +} +.hamburger--elastic .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); +} + +.hamburger--elastic.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(135deg); + transition-delay: 0.075s; +} +.hamburger--elastic.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; +} +.hamburger--elastic.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-270deg); + transition-delay: 0.075s; +} + +/* + * Elastic Reverse + */ +.hamburger--elastic-r .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); +} +.hamburger--elastic-r .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; +} +.hamburger--elastic-r .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); +} + +.hamburger--elastic-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-135deg); + transition-delay: 0.075s; +} +.hamburger--elastic-r.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; +} +.hamburger--elastic-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(270deg); + transition-delay: 0.075s; +} + +/* + * Emphatic + */ +.hamburger--emphatic { + overflow: hidden; +} +.hamburger--emphatic .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; +} +.hamburger--emphatic .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, + left 0.125s 0.175s ease-in; +} +.hamburger--emphatic .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, + right 0.125s 0.175s ease-in; +} +.hamburger--emphatic.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; +} +.hamburger--emphatic.is-active .hamburger-inner::before { + left: -80px; + top: -80px; + transform: translate3d(80px, 80px, 0) rotate(45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, + transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); +} +.hamburger--emphatic.is-active .hamburger-inner::after { + right: -80px; + top: -80px; + transform: translate3d(-80px, 80px, 0) rotate(-45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, + transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); +} + +/* + * Emphatic Reverse + */ +.hamburger--emphatic-r { + overflow: hidden; +} +.hamburger--emphatic-r .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; +} +.hamburger--emphatic-r .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, + left 0.125s 0.175s ease-in; +} +.hamburger--emphatic-r .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, + right 0.125s 0.175s ease-in; +} +.hamburger--emphatic-r.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; +} +.hamburger--emphatic-r.is-active .hamburger-inner::before { + left: -80px; + top: 80px; + transform: translate3d(80px, -80px, 0) rotate(-45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, + transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); +} +.hamburger--emphatic-r.is-active .hamburger-inner::after { + right: -80px; + top: 80px; + transform: translate3d(-80px, -80px, 0) rotate(45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, + transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); +} + +/* + * Minus + */ +.hamburger--minus .hamburger-inner::before, +.hamburger--minus .hamburger-inner::after { + transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; +} + +.hamburger--minus.is-active .hamburger-inner::before, +.hamburger--minus.is-active .hamburger-inner::after { + opacity: 0; + transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; +} + +.hamburger--minus.is-active .hamburger-inner::before { + top: 0; +} + +.hamburger--minus.is-active .hamburger-inner::after { + bottom: 0; +} + +/* + * Slider + */ +.hamburger--slider .hamburger-inner { + top: 2px; +} +.hamburger--slider .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; +} +.hamburger--slider .hamburger-inner::after { + top: 20px; +} + +.hamburger--slider.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--slider.is-active .hamburger-inner::before { + transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); + opacity: 0; +} +.hamburger--slider.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-90deg); +} + +/* + * Slider Reverse + */ +.hamburger--slider-r .hamburger-inner { + top: 2px; +} +.hamburger--slider-r .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; +} +.hamburger--slider-r .hamburger-inner::after { + top: 20px; +} + +.hamburger--slider-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-45deg); +} +.hamburger--slider-r.is-active .hamburger-inner::before { + transform: rotate(45deg) translate3d(5.71429px, -6px, 0); + opacity: 0; +} +.hamburger--slider-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(90deg); +} + +/* + * Spin + */ +.hamburger--spin .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--spin .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; +} +.hamburger--spin .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--spin.is-active .hamburger-inner { + transform: rotate(225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--spin.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; +} +.hamburger--spin.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Spin Reverse + */ +.hamburger--spin-r .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--spin-r .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; +} +.hamburger--spin-r .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--spin-r.is-active .hamburger-inner { + transform: rotate(-225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--spin-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; +} +.hamburger--spin-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Spring + */ +.hamburger--spring .hamburger-inner { + top: 2px; + transition: background-color 0s 0.13s linear; +} +.hamburger--spring .hamburger-inner::before { + top: 10px; + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), + transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--spring .hamburger-inner::after { + top: 20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), + transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--spring.is-active .hamburger-inner { + transition-delay: 0.22s; + background-color: transparent; +} +.hamburger--spring.is-active .hamburger-inner::before { + top: 0; + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), + transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(45deg); +} +.hamburger--spring.is-active .hamburger-inner::after { + top: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), + transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(-45deg); +} + +/* + * Spring Reverse + */ +.hamburger--spring-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--spring-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; +} +.hamburger--spring-r .hamburger-inner::before { + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), + transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--spring-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--spring-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; +} +.hamburger--spring-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), + transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Stand + */ +.hamburger--stand .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), + background-color 0s 0.075s linear; +} +.hamburger--stand .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--stand .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, + transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--stand.is-active .hamburger-inner { + transform: rotate(90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), + background-color 0s 0.15s linear; +} +.hamburger--stand.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--stand.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, + transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Stand Reverse + */ +.hamburger--stand-r .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), + background-color 0s 0.075s linear; +} +.hamburger--stand-r .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--stand-r .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, + transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--stand-r.is-active .hamburger-inner { + transform: rotate(-90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), + background-color 0s 0.15s linear; +} +.hamburger--stand-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--stand-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, + transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Squeeze + */ +.hamburger--squeeze .hamburger-inner { + transition-duration: 0.075s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} +.hamburger--squeeze .hamburger-inner::before { + transition: top 0.075s 0.12s ease, opacity 0.075s ease; +} +.hamburger--squeeze .hamburger-inner::after { + transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.hamburger--squeeze.is-active .hamburger-inner { + transform: rotate(45deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} +.hamburger--squeeze.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.075s ease, opacity 0.075s 0.12s ease; +} +.hamburger--squeeze.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/* + * Vortex + */ +.hamburger--vortex .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); +} +.hamburger--vortex .hamburger-inner::before, +.hamburger--vortex .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; +} +.hamburger--vortex .hamburger-inner::before { + transition-property: top, opacity; +} +.hamburger--vortex .hamburger-inner::after { + transition-property: bottom, transform; +} + +.hamburger--vortex.is-active .hamburger-inner { + transform: rotate(765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); +} +.hamburger--vortex.is-active .hamburger-inner::before, +.hamburger--vortex.is-active .hamburger-inner::after { + transition-delay: 0s; +} +.hamburger--vortex.is-active .hamburger-inner::before { + top: 0; + opacity: 0; +} +.hamburger--vortex.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); +} + +/* + * Vortex Reverse + */ +.hamburger--vortex-r .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); +} +.hamburger--vortex-r .hamburger-inner::before, +.hamburger--vortex-r .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; +} +.hamburger--vortex-r .hamburger-inner::before { + transition-property: top, opacity; +} +.hamburger--vortex-r .hamburger-inner::after { + transition-property: bottom, transform; +} + +.hamburger--vortex-r.is-active .hamburger-inner { + transform: rotate(-765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); +} +.hamburger--vortex-r.is-active .hamburger-inner::before, +.hamburger--vortex-r.is-active .hamburger-inner::after { + transition-delay: 0s; +} +.hamburger--vortex-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; +} +.hamburger--vortex-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); +} diff --git a/src/css/components/header.scss b/src/css/components/header.scss new file mode 100644 index 000000000..c27de65b0 --- /dev/null +++ b/src/css/components/header.scss @@ -0,0 +1,76 @@ +.header { + position: relative; + padding: 5rem 1rem 4rem; + background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); + color: white; + margin-bottom: 2rem; + text-align: center; + overflow: hidden; + z-index: 1; + + &::before { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); + width: 150%; + height: 150%; + top: 0; + left: 0; + opacity: 0.1; + z-index: -1; + } + + &::after { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); + background-size: 24px 24px; + width: 100%; + left: 0; + height: 24px; + bottom: -1px; + } + + &__logo { + height: 146px; + user-select: none; + } + + &__heading { + font-weight: 200; + font-size: 3rem; + margin: 1rem 0; + line-height: 1.2; + } + + &__description { + font-size: 1.5rem; + max-width: 600px; + margin: 0 auto; + font-weight: 300; + letter-spacing: 0.4px; + } + + &__css { + background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-size: 4rem; + } +} + +@media (min-width: 579px) { + .header { + padding: 6rem 0 5rem; + + &__heading { + font-size: 3.75rem; + } + } +} + +@media (min-width: 992px) { + .header { + padding: 2.5rem 0 5rem; + } +} diff --git a/src/css/components/sidebar.scss b/src/css/components/sidebar.scss new file mode 100644 index 000000000..356225efe --- /dev/null +++ b/src/css/components/sidebar.scss @@ -0,0 +1,104 @@ +.sidebar { + background: #202e4e; + position: fixed; + z-index: 2; + width: 100%; + height: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); + + &__menu { + position: absolute; + font-weight: bold; + border: none; + text-align: left; + text-transform: uppercase; + left: 0; + top: 0; + padding: 0.75rem 1rem; + outline: 0; + } + + &__menu-icon { + height: 24px; + } + + &__links { + background: #202e4e; + overflow-y: auto; + transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + transform-origin: 0% 0%; + transform: rotateX(-90deg); + visibility: hidden; + opacity: 0; + overflow-y: auto; + max-height: 378px; + margin-top: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); + + &.is-active { + transform: rotateX(0); + visibility: visible; + opacity: 1; + } + } + + &__link { + display: block; + color: #e3f5ff; + padding: 0.5rem 0.75rem; + transition: all 0.1s ease-out; + border-left: 2px solid #576a85; + margin: 0.5rem; + font-weight: 500; + font-size: 0.95rem; + + &:hover { + color: #88f4ff; + background: rgba(255, 255, 255, 0.1); + border-color: pink; + } + } +} + +@media (min-width: 992px) { + .sidebar { + left: 0; + top: 0; + bottom: 0; + width: 15%; + max-width: 250px; + min-width: 200px; + height: 100%; + background: linear-gradient(-30deg, #2a3d67, #14264e); + box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); + overflow-y: auto; + color: white; + + &::-webkit-scrollbar-track { + background-color: rgba(0, 0, 0, 0.6); + } + + &::-webkit-scrollbar { + width: 10px; + background-color: #4b6191; + } + + &::-webkit-scrollbar-thumb { + background-color: #4b6191; + } + + &__links { + background: none; + box-shadow: none; + visibility: visible; + opacity: 1; + transform: rotateX(0); + margin-top: 0; + max-height: none; + } + + &__menu { + display: none; + } + } +} diff --git a/src/css/components/snippet.scss b/src/css/components/snippet.scss new file mode 100644 index 000000000..d02e323ad --- /dev/null +++ b/src/css/components/snippet.scss @@ -0,0 +1,128 @@ +.snippet { + position: relative; + background: white; + padding: 2rem 5%; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; + border-radius: 0.25rem; + font-size: 1.1rem; + margin-bottom: 1.5rem; + + h3 { + font-size: 2rem; + padding: 0.5rem 0; + border-bottom: 1px solid rgba(0, 32, 128, 0.1); + margin-bottom: 1.25rem; + margin-top: 0; + line-height: 1.3; + } + + code:not([class*='lang']) { + background: #fcfaff; + border: 1px solid #e2ddff; + color: #4b00da; + border-radius: 0.15rem; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 0.9rem; + padding: 0.2rem 0.4rem; + margin: 0 0.1rem; + } + + ol { + margin-top: 0.5rem; + } + + ol > li { + margin-bottom: 0.5rem; + } + + > p { + margin-top: 0.5rem; + } + + h4 { + display: inline-block; + margin: 1rem 0 0.5rem; + line-height: 2; + padding: 0 0.5rem; + border-radius: 3px; + font-size: 0.9rem; + text-transform: uppercase; + background: #333; + border: 1px solid #c6d6ea; + border-bottom-color: darken(#c6d6ea, 5); + background: white; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); + + &[data-type='HTML'] { + color: white; + border: none; + background: linear-gradient(135deg, #ff4c9f, #ff7b74); + } + &[data-type='CSS'] { + color: white; + border: none; + background: linear-gradient(135deg, #7983ff, #5f9de9); + } + &[data-type='JavaScript'] { + color: white; + border: none; + background: linear-gradient(135deg, #ffb000, #f58818); + } + } + + &__browser-support { + display: inline-block; + font-size: 2rem; + font-weight: 200; + line-height: 1; + margin: 0.5rem 0; + } + + &__subheading.is-html { + color: #e22f70; + } + + &__subheading.is-css { + color: #0a91d4; + } + + &__subheading.is-explanation { + color: #4b00da; + } + + &__support-note { + color: #9fa5b5; + font-weight: bold; + } + + &__requires-javascript { + position: absolute; + background: red; + background: linear-gradient(145deg, #ff003b, #ff4b39); + color: white; + padding: 0.25rem 0.5rem; + font-size: 0.9rem; + transform: rotate(20deg); + font-weight: bold; + top: 1rem; + right: 0; + } +} + +.snippet-demo { + background: #f5f6f9; + border-radius: 0.25rem; + padding: 0.75rem 1.25rem; + + &.is-distinct { + background: linear-gradient(135deg, #ff4c9f, #ff7b74); + } +} + +@media (min-width: 768px) { + .snippet { + &__requires-javascript { + right: -0.5rem; + } + } +} diff --git a/src/css/deps/prism.css b/src/css/deps/prism.css new file mode 100644 index 000000000..4961246f2 --- /dev/null +++ b/src/css/deps/prism.css @@ -0,0 +1,146 @@ +code[class*='language-'], +pre[class*='language-'] { + color: rgb(50, 75, 100); + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 2; + font-size: 1rem; + -webkit-overflow-scrolling: touch; + margin: 0; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*='language-']::-moz-selection, +pre[class*='language-'] ::-moz-selection, +code[class*='language-']::-moz-selection, +code[class*='language-'] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*='language-'] { + overflow: auto; + padding: 0.75rem 1.25rem; +} + +pre.is-option { + margin: 0; + padding: 0; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #f5f6f9; + border-radius: 0.25rem; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8ca2d3; +} + +.token.selector, +.token.attr-name { + color: #da7800; +} + +.token.punctuation { + color: #93a0c7; +} + +.namespace { + opacity: 0.7; +} + +.token.tag { + color: #e22f70; +} + +.token.property, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #0087ca; +} + +.token.string, +.language-css .token.string, +.token.url, +.token.attr-value, +.token.char, +.token.builtin, +.token.inserted { + color: #008a7e; +} + +.token.operator, +.token.entity, +.style .token.string { + color: #f53737; +} + +.token.important, +.token.atrule, +.token.keyword { + color: #7552ff; +} + +.token.function { + color: #396dff; +} + +.token.regex, +.token.variable { + color: #00a8d4; +} + +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/src/css/index.scss b/src/css/index.scss new file mode 100644 index 000000000..a17bae5dc --- /dev/null +++ b/src/css/index.scss @@ -0,0 +1,6 @@ +@import './components/base.scss'; +@import './components/hamburger.scss'; +@import './components/sidebar.scss'; +@import './components/header.scss'; +@import './components/snippet.scss'; +@import './components/back-to-top-button.scss'; diff --git a/src/img/logo.png b/src/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 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 literal 0 HcmV?d00001 diff --git a/src/js/components/BackToTopButton.js b/src/js/components/BackToTopButton.js new file mode 100644 index 000000000..bde569cb6 --- /dev/null +++ b/src/js/components/BackToTopButton.js @@ -0,0 +1,14 @@ +import jump from '../deps/jump' +import { select, scrollY, easeOutQuint } from '../deps/utils' + +const backToTopButton = select('.back-to-top-button') + +window.addEventListener('scroll', () => { + backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible') +}) +backToTopButton.onclick = () => { + jump('.header', { + duration: 750, + easing: easeOutQuint + }) +} diff --git a/src/js/components/Menu.js b/src/js/components/Menu.js new file mode 100644 index 000000000..6bf3ee814 --- /dev/null +++ b/src/js/components/Menu.js @@ -0,0 +1,34 @@ +import jump from '../deps/jump' +import { select, selectAll, easeOutQuint } from '../deps/utils' + +const menu = select('.hamburger') +const links = select('.sidebar__links') +const ACTIVE_CLASS = 'is-active' + +const toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS)) + +menu.addEventListener('click', toggle) + +links.addEventListener('click', e => { + setTimeout(toggle, 40) + if (e.target.classList.contains('sidebar__link')) { + e.preventDefault() + jump(e.target.getAttribute('href'), { + duration: 750, + offset: window.innerWidth <= 768 ? -64 : -32, + easing: easeOutQuint + }) + } +}) + +document.addEventListener('click', e => { + if ( + !e.target.closest('.sidebar__links') && + !e.target.closest('.hamburger') && + links.classList.contains(ACTIVE_CLASS) + ) { + toggle() + } +}) + +export default { toggle } diff --git a/src/js/deps/jump.js b/src/js/deps/jump.js new file mode 100644 index 000000000..fc77c8439 --- /dev/null +++ b/src/js/deps/jump.js @@ -0,0 +1,196 @@ +;(function(global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? (module.exports = factory()) + : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory()) +})(this, function() { + 'use strict' + + // Robert Penner's easeInOutQuad + + // find the rest of his easing functions here: http://robertpenner.com/easing/ + // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js + + var easeInOutQuad = function easeInOutQuad(t, b, c, d) { + t /= d / 2 + if (t < 1) return c / 2 * t * t + b + t-- + return -c / 2 * (t * (t - 2) - 1) + b + } + + var _typeof = + typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' + ? function(obj) { + return typeof obj + } + : function(obj) { + return obj && + typeof Symbol === 'function' && + obj.constructor === Symbol && + obj !== Symbol.prototype + ? 'symbol' + : typeof obj + } + + var jumper = function jumper() { + // private variable cache + // no variables are created during a jump, preventing memory leaks + + var element = void 0 // element to scroll to (node) + + var start = void 0 // where scroll starts (px) + var stop = void 0 // where scroll stops (px) + + var offset = void 0 // adjustment from the stop position (px) + var easing = void 0 // easing function (function) + var a11y = void 0 // accessibility support flag (boolean) + + var distance = void 0 // distance of scroll (px) + var duration = void 0 // scroll duration (ms) + + var timeStart = void 0 // time scroll started (ms) + var timeElapsed = void 0 // time spent scrolling thus far (ms) + + var next = void 0 // next scroll position (px) + + var callback = void 0 // to call when done scrolling (function) + + // scroll position helper + + function location() { + return window.scrollY || window.pageYOffset + } + + // element offset helper + + function top(element) { + return element.getBoundingClientRect().top + start + } + + // rAF loop helper + + function loop(timeCurrent) { + // store time scroll started, if not started already + if (!timeStart) { + timeStart = timeCurrent + } + + // determine time spent scrolling so far + timeElapsed = timeCurrent - timeStart + + // calculate next scroll position + next = easing(timeElapsed, start, distance, duration) + + // scroll to it + window.scrollTo(0, next) + + // check progress + timeElapsed < duration + ? window.requestAnimationFrame(loop) // continue scroll loop + : done() // scrolling is done + } + + // scroll finished helper + + function done() { + // account for rAF time rounding inaccuracies + window.scrollTo(0, start + distance) + + // if scrolling to an element, and accessibility is enabled + if (element && a11y) { + // add tabindex indicating programmatic focus + element.setAttribute('tabindex', '-1') + + // focus the element + element.focus() + } + + // if it exists, fire the callback + if (typeof callback === 'function') { + callback() + } + + // reset time for next jump + timeStart = false + } + + // API + + function jump(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} + + // resolve options, or use defaults + duration = options.duration || 1000 + offset = options.offset || 0 + callback = options.callback // "undefined" is a suitable default, and won't be called + easing = options.easing || easeInOutQuad + a11y = options.a11y || false + + // cache starting position + start = location() + + // resolve target + switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { + // scroll from current position + case 'number': + element = undefined // no element to scroll to + a11y = false // make sure accessibility is off + stop = start + target + break + + // scroll to element (node) + // bounding rect is relative to the viewport + case 'object': + element = target + stop = top(element) + break + + // scroll to element (selector) + // bounding rect is relative to the viewport + case 'string': + element = document.querySelector(target) + stop = top(element) + break + } + + // resolve scroll distance, accounting for offset + distance = stop - start + offset + + // resolve duration + switch (_typeof(options.duration)) { + // number in ms + case 'number': + duration = options.duration + break + + // function passed the distance of the scroll + case 'function': + duration = options.duration(distance) + break + } + + // start the loop + window.requestAnimationFrame(loop) + } + + // expose only the jump method + return jump + } + + // export singleton + + var singleton = jumper() + + return (() => { + let scrolling + const end = () => (scrolling = false) + return (to, options = {}) => { + if (scrolling) return + const scrollY = window.scrollY || window.pageYOffset + if (to !== '.header') location.hash = to + scroll(0, scrollY) + scrolling = true + setTimeout(end, options.duration || 0) + return singleton(to, options) + } + })() +}) diff --git a/src/js/deps/polyfills.js b/src/js/deps/polyfills.js new file mode 100644 index 000000000..d7ee305fd --- /dev/null +++ b/src/js/deps/polyfills.js @@ -0,0 +1,16 @@ +const e = Element.prototype +if (!e.matches) { + e.matches = + e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector +} +if (!e.closest) { + e.closest = function(s) { + var el = this + if (!document.documentElement.contains(el)) return null + do { + if (el.matches(s)) return el + el = el.parentElement || el.parentNode + } while (el !== null && el.nodeType === 1) + return null + } +} diff --git a/src/js/deps/utils.js b/src/js/deps/utils.js new file mode 100644 index 000000000..b3174e437 --- /dev/null +++ b/src/js/deps/utils.js @@ -0,0 +1,40 @@ +export const select = s => document.querySelector(s) +export const selectAll = s => [].slice.call(document.querySelectorAll(s)) +export const scrollY = () => window.scrollY || window.pageYOffset +export const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b + +/* +* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font +* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. +* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. +* Must be applied to all browsers for now. +*/ +;(() => { + const ua = navigator.userAgent + + // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica + const isRelevantMacOS = + /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11 + + // Chrome v64 and FF v58 fix the issue + const isAffectedBrowser = + (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58 + + const allEls = [].slice.call(document.querySelectorAll('*')) + + if (isRelevantMacOS && isAffectedBrowser) { + document.documentElement.style.letterSpacing = '-0.3px' + allEls.forEach(el => { + const fontSize = parseFloat(getComputedStyle(el).fontSize) + if (fontSize >= 20) el.style.letterSpacing = '0.3px' + }) + } else if (isRelevantMacOS && !isAffectedBrowser) { + // Italics fix + allEls.forEach(el => { + const { fontSize, fontStyle } = getComputedStyle(el) + if (fontStyle === 'italic') { + el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px' + } + }) + } +})() diff --git a/src/js/index.js b/src/js/index.js new file mode 100644 index 000000000..dc97aae66 --- /dev/null +++ b/src/js/index.js @@ -0,0 +1,14 @@ +// Deps +import 'normalize.css' +import 'prismjs' + +// CSS +import '../css/deps/prism.css' +import '../css/index.scss' + +// Polyfills +import './deps/polyfills' + +// Components +import Menu from './components/Menu' +import BackToTopButton from './components/BackToTopButton' diff --git a/utils/utils.js b/utils/utils.js new file mode 100644 index 000000000..916e04530 --- /dev/null +++ b/utils/utils.js @@ -0,0 +1,8 @@ +exports.toKebabCase = str => + str && + str + .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) + .map(x => x.toLowerCase()) + .join('-'); + +exports.emptyHTML = (...els) => els.forEach(el => (el.innerHTML = '')) From da84f0af711080f11f081e0c86d4e805ca02b955 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 00:22:14 +1100 Subject: [PATCH 002/561] Init --- dist/4d4edbda57043aeeabeac31d2dd12d0d.css | 2 +- dist/4d4edbda57043aeeabeac31d2dd12d0d.js | 14 +++++++------- dist/index.html | 2 +- index.html | 3 +++ src/css/components/header.scss | 6 +++++- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css index fcf80a9e6..269155a08 100644 --- a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css +++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css @@ -6,4 +6,4 @@ * @author Jonathan Suh @jonsuh * @site https://jonsuh.com/hamburgers * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js index 93bc6779f..5de2d705e 100644 --- a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],15:[function(require,module,exports) { +},{}],16:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],14:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],13:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":15,"../deps/utils":14}],12:[function(require,module,exports) { +},{"../deps/jump":16,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":15,"../deps/utils":14}],8:[function(require,module,exports) { +},{"../deps/jump":16,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[8]) \ No newline at end of file +},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 3577372a2..9873ac10c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
+    30 Seconds of CSS       

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
diff --git a/index.html b/index.html
index b9ecc136b..148c22dd4 100644
--- a/index.html
+++ b/index.html
@@ -40,6 +40,9 @@
           

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

+ + Star +
diff --git a/src/css/components/header.scss b/src/css/components/header.scss index c27de65b0..de9465cb4 100644 --- a/src/css/components/header.scss +++ b/src/css/components/header.scss @@ -46,7 +46,7 @@ &__description { font-size: 1.5rem; max-width: 600px; - margin: 0 auto; + margin: 0 auto 1rem; font-weight: 300; letter-spacing: 0.4px; } @@ -57,6 +57,10 @@ -webkit-text-fill-color: transparent; font-size: 4rem; } + + &__github-button { + color: white; + } } @media (min-width: 579px) { From 5e5809851894a04b7b047bf1adabcf6a3ade0963 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 00:25:34 +1100 Subject: [PATCH 003/561] Change parcel build output from dist to docs --- docs/.nojekyll | 0 .../4d4edbda57043aeeabeac31d2dd12d0d.css | 0 .../4d4edbda57043aeeabeac31d2dd12d0d.js | 18 +++++++++--------- .../76f3fcef6c36c4d7c29fc6fcd102dfe3.png | Bin .../cf2ed1ce6be4ba59eed1079db594cc6e.png | Bin {dist => docs}/index.html | 0 package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 docs/.nojekyll rename {dist => docs}/4d4edbda57043aeeabeac31d2dd12d0d.css (100%) rename {dist => docs}/4d4edbda57043aeeabeac31d2dd12d0d.js (96%) rename {dist => docs}/76f3fcef6c36c4d7c29fc6fcd102dfe3.png (100%) rename {dist => docs}/cf2ed1ce6be4ba59eed1079db594cc6e.png (100%) rename {dist => docs}/index.html (100%) diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css b/docs/4d4edbda57043aeeabeac31d2dd12d0d.css similarity index 100% rename from dist/4d4edbda57043aeeabeac31d2dd12d0d.css rename to docs/4d4edbda57043aeeabeac31d2dd12d0d.css diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js similarity index 96% rename from dist/4d4edbda57043aeeabeac31d2dd12d0d.js rename to docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 5de2d705e..b74c863fe 100644 --- a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],11:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],16:[function(require,module,exports) { +},{}],18:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],15:[function(require,module,exports) { +},{}],19:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { +},{}],13:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":16,"../deps/utils":15}],13:[function(require,module,exports) { +},{"../deps/jump":18,"../deps/utils":19}],14:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":16,"../deps/utils":15}],7:[function(require,module,exports) { +},{"../deps/jump":18,"../deps/utils":19}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":22,"prismjs":23,"../css/deps/prism.css":22,"../css/index.scss":22,"./deps/polyfills":12,"./components/Menu":13,"./components/BackToTopButton":14}]},{},[7]) \ No newline at end of file diff --git a/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png b/docs/76f3fcef6c36c4d7c29fc6fcd102dfe3.png similarity index 100% rename from dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png rename to docs/76f3fcef6c36c4d7c29fc6fcd102dfe3.png diff --git a/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png b/docs/cf2ed1ce6be4ba59eed1079db594cc6e.png similarity index 100% rename from dist/cf2ed1ce6be4ba59eed1079db594cc6e.png rename to docs/cf2ed1ce6be4ba59eed1079db594cc6e.png diff --git a/dist/index.html b/docs/index.html similarity index 100% rename from dist/index.html rename to docs/index.html diff --git a/package.json b/package.json index cfa4953c9..55667e0f4 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "nodemon -e md,js ./scripts/build.js & parcel", "build": "node ./scripts/build.js && npm run prettier && npm run parcel", - "parcel": "parcel build index.html --public-url ./", + "parcel": "parcel build index.html -d docs/ --public-url ./", "prettier": "prettier --single-quote --no-semi --print-width=100 ./js/index.js --write './src/**/*.js' './src/**/*.scss'" }, "author": "atomiks", From 1d6e21d71c3cece2a85e44860c89639bddbb9bb8 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 00:26:32 +1100 Subject: [PATCH 004/561] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8dc67fc72..85d026aa9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Inspired by [30 seconds of code](https://github.com/Chalarangelo/30-seconds-of-c ## View online -https://github.io/atomiks/30-seconds-of-css +https://atomiks.github.io/30-seconds-of-css/ ## Contributing From 63b37dce5640956423a968cde7ec827bf74d98c5 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 00:28:54 +1100 Subject: [PATCH 005/561] Add github buttons script --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 18 +++++++++--------- docs/index.html | 2 +- index.html | 1 + 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index b74c863fe..f53a70436 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],18:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],19:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],13:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":18,"../deps/utils":19}],14:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":18,"../deps/utils":19}],7:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":22,"prismjs":23,"../css/deps/prism.css":22,"../css/index.scss":22,"./deps/polyfills":12,"./components/Menu":13,"./components/BackToTopButton":14}]},{},[7]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 9873ac10c..faef00319 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
+    30 Seconds of CSS        

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
diff --git a/index.html b/index.html
index 148c22dd4..393d6ab69 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
     30 Seconds of CSS
     
     
+    
   
   
     

From 50bc3e1e8fde0e7b6643856a0bccf7247b914484 Mon Sep 17 00:00:00 2001
From: atomiks 
Date: Mon, 26 Feb 2018 00:39:41 +1100
Subject: [PATCH 006/561] rebuild pages


From bf6b9b16249e8d0845c3d7a958fa56af2a04868b Mon Sep 17 00:00:00 2001
From: atomiks 
Date: Mon, 26 Feb 2018 00:41:27 +1100
Subject: [PATCH 007/561] rebuild docs

---
 docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 14 +++++++-------
 docs/index.html                          |  2 +-
 index.html                               |  6 +++---
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
index f53a70436..c894fd86d 100644
--- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
+++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
@@ -1,19 +1,19 @@
-require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
 },{}],11:[function(require,module,exports) {
 var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null});
-},{}],15:[function(require,module,exports) {
+},{}],14:[function(require,module,exports) {
 var global = (1,eval)("this");
 var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}});
-},{}],14:[function(require,module,exports) {
+},{}],15:[function(require,module,exports) {
 "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}();
 },{}],12:[function(require,module,exports) {
 "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u};
-},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) {
+},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) {
 "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})};
-},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) {
+},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) {
 "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}}
-},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
\ No newline at end of file
+},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index faef00319..dddbac818 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,4 +1,4 @@
-    30 Seconds of CSS        

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
+    30 Seconds of CSS        

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
diff --git a/index.html b/index.html
index 393d6ab69..f15954322 100644
--- a/index.html
+++ b/index.html
@@ -41,9 +41,9 @@
           

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

- - Star - + + + Star
From 647da2b2679438387f66a357b2ca3b1071909e85 Mon Sep 17 00:00:00 2001 From: Jensen Kuras Date: Sun, 25 Feb 2018 08:26:37 -0800 Subject: [PATCH 008/561] Corrected classname for demo. Discrepancy between example HTML and CSS classnames. I chose the one used in the demo/html. --- snippets/custom-text-selection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/custom-text-selection.md b/snippets/custom-text-selection.md index e3b4c3687..bfa1edc35 100644 --- a/snippets/custom-text-selection.md +++ b/snippets/custom-text-selection.md @@ -11,7 +11,7 @@ Changes the styling of text selection. #### CSS ```css -.text-selection::selection { +.custom-text-selection::selection { background: red; color: white; } From 5944266e980b05f2ddb2462c22a86904b20741cd Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 08:40:02 +1100 Subject: [PATCH 009/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 6 +++--- docs/index.html | 2 +- index.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index c894fd86d..f88d4fadf 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -10,10 +10,10 @@ var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); },{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { +},{}],13:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],12:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index dddbac818..b28281498 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,7 +12,7 @@ float: left; }

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
-

CSS

.text-selection::selection {
+

CSS

.custom-text-selection::selection {
   background: red;
   color: white;
 }
diff --git a/index.html b/index.html
index f15954322..8aab3eaba 100644
--- a/index.html
+++ b/index.html
@@ -103,7 +103,7 @@
             

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
 
-

CSS

.text-selection::selection {
+            

CSS

.custom-text-selection::selection {
   background: red;
   color: white;
 }

From 4ea2fbdff496f7fe75746aa0072c7689eff3793b Mon Sep 17 00:00:00 2001
From: atomiks 
Date: Mon, 26 Feb 2018 09:02:45 +1000
Subject: [PATCH 010/561] iOS optimizations

---
 dist/4d4edbda57043aeeabeac31d2dd12d0d.css  | 1620 ++++++++++++++++++++
 dist/4d4edbda57043aeeabeac31d2dd12d0d.js   | 1479 ++++++++++++++++++
 dist/4d4edbda57043aeeabeac31d2dd12d0d.map  |    1 +
 dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png  |  Bin 0 -> 35911 bytes
 dist/b083f39334722c9edc40c6bf09cb7190.html |  991 ++++++++++++
 dist/cf2ed1ce6be4ba59eed1079db594cc6e.png  |  Bin 0 -> 2628 bytes
 docs/4d4edbda57043aeeabeac31d2dd12d0d.css  |    2 +-
 docs/4d4edbda57043aeeabeac31d2dd12d0d.js   |   14 +-
 src/css/components/sidebar.scss            |    1 +
 src/js/deps/utils.js                       |    7 +
 10 files changed, 4107 insertions(+), 8 deletions(-)
 create mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.css
 create mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.js
 create mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.map
 create mode 100644 dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png
 create mode 100644 dist/b083f39334722c9edc40c6bf09cb7190.html
 create mode 100644 dist/cf2ed1ce6be4ba59eed1079db594cc6e.png

diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css
new file mode 100644
index 000000000..3a01d8859
--- /dev/null
+++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css
@@ -0,0 +1,1620 @@
+/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+   ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+html {
+  line-height: 1.15; /* 1 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+   ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+  margin: 0;
+}
+
+/**
+ * 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;
+}
+
+/* Grouping content
+   ========================================================================== */
+
+/**
+ * 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 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+   ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+  background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 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 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/**
+ * 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;
+}
+
+/* Forms
+   ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: inherit; /* 1 */
+  font-size: 100%; /* 1 */
+  line-height: 1.15; /* 1 */
+  margin: 0; /* 2 */
+}
+
+/**
+ * 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;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button;
+}
+
+/**
+ * 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;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+  padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 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 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+  vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+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 in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * 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 */
+}
+
+/* Interactive
+   ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+  display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+  display: list-item;
+}
+
+/* Misc
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+  display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+  display: none;
+}
+code[class*='language-'],
+pre[class*='language-'] {
+  color: rgb(50, 75, 100);
+  background: none;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 2;
+  font-size: 1rem;
+  -webkit-overflow-scrolling: touch;
+  margin: 0;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*='language-']::-moz-selection,
+pre[class*='language-'] ::-moz-selection,
+code[class*='language-']::-moz-selection,
+code[class*='language-'] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*='language-']::selection,
+pre[class*='language-'] ::selection,
+code[class*='language-']::selection,
+code[class*='language-'] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+  code[class*='language-'],
+  pre[class*='language-'] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*='language-'] {
+  overflow: auto;
+  padding: 0.75rem 1.25rem;
+}
+
+pre.is-option {
+  margin: 0;
+  padding: 0;
+}
+
+:not(pre) > code[class*='language-'],
+pre[class*='language-'] {
+  background: #f5f6f9;
+  border-radius: 0.25rem;
+}
+
+/* Inline code */
+:not(pre) > code[class*='language-'] {
+  padding: 0.1em;
+  border-radius: 0.3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: #8ca2d3;
+}
+
+.token.selector,
+.token.attr-name {
+  color: #da7800;
+}
+
+.token.punctuation {
+  color: #93a0c7;
+}
+
+.namespace {
+  opacity: 0.7;
+}
+
+.token.tag {
+  color: #e22f70;
+}
+
+.token.property,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #0087ca;
+}
+
+.token.string,
+.language-css .token.string,
+.token.url,
+.token.attr-value,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #008a7e;
+}
+
+.token.operator,
+.token.entity,
+.style .token.string {
+  color: #f53737;
+}
+
+.token.important,
+.token.atrule,
+.token.keyword {
+  color: #7552ff;
+}
+
+.token.function {
+  color: #396dff;
+}
+
+.token.regex,
+.token.variable {
+  color: #00a8d4;
+}
+
+.token.bold {
+  font-weight: bold;
+}
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}
+html {
+  font-size: 0.95rem; }
+
+body {
+  font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  background: #f6f7fd;
+  color: #324b64;
+  line-height: 1.5; }
+
+a {
+  color: #157bda;
+  text-decoration: none;
+  word-wrap: break-word;
+  overflow-wrap: break-word; }
+  a:hover {
+    color: #0090ff; }
+
+hr {
+  border: 0;
+  border-top: 1px solid rgba(0, 32, 128, 0.1); }
+
+ul,
+ol {
+  padding-left: 1.25rem; }
+
+.container {
+  max-width: 1000px;
+  padding: 0 2%;
+  margin: 0 auto; }
+
+.main > .container {
+  padding: 0; }
+
+@media (min-width: 579px) {
+  .main > .container {
+    padding: 0 2%; } }
+
+@media (min-width: 768px) {
+  html {
+    font-size: 1rem; } }
+
+@media (min-width: 992px) {
+  .content-wrapper {
+    margin-left: 200px; } }
+
+/*!
+ * Hamburgers
+ * @description Tasty CSS-animated hamburgers
+ * @author Jonathan Suh @jonsuh
+ * @site https://jonsuh.com/hamburgers
+ * @link https://github.com/jonsuh/hamburgers
+ */
+.hamburger {
+  padding: 1rem;
+  display: inline-block;
+  cursor: pointer;
+  transition-property: opacity, filter;
+  transition-duration: 0.15s;
+  transition-timing-function: linear;
+  font: inherit;
+  color: inherit;
+  text-transform: none;
+  background-color: transparent;
+  border: 0;
+  margin: 0;
+  overflow: visible;
+  outline: 0; }
+
+.hamburger:hover {
+  opacity: 0.7; }
+
+.hamburger-box {
+  width: 40px;
+  height: 20px;
+  display: inline-block;
+  position: relative; }
+
+.hamburger-inner {
+  display: block;
+  top: 50%; }
+
+.hamburger-inner,
+.hamburger-inner::before,
+.hamburger-inner::after {
+  width: 36px;
+  height: 2px;
+  background-color: #e3f5ff;
+  border-radius: 4px;
+  position: absolute;
+  transition-property: transform;
+  transition-duration: 0.15s;
+  transition-timing-function: ease; }
+
+.hamburger-inner::before,
+.hamburger-inner::after {
+  content: '';
+  display: block; }
+
+.hamburger-inner::before {
+  top: -10px; }
+
+.hamburger-inner::after {
+  bottom: -10px; }
+
+/*
+   * 3DX
+   */
+.hamburger--3dx .hamburger-box {
+  perspective: 80px; }
+
+.hamburger--3dx .hamburger-inner {
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dx .hamburger-inner::before,
+.hamburger--3dx .hamburger-inner::after {
+  transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dx.is-active .hamburger-inner {
+  background-color: transparent;
+  transform: rotateY(180deg); }
+
+.hamburger--3dx.is-active .hamburger-inner::before {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--3dx.is-active .hamburger-inner::after {
+  transform: translate3d(0, -10px, 0) rotate(-45deg); }
+
+/*
+   * 3DX Reverse
+   */
+.hamburger--3dx-r .hamburger-box {
+  perspective: 80px; }
+
+.hamburger--3dx-r .hamburger-inner {
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dx-r .hamburger-inner::before,
+.hamburger--3dx-r .hamburger-inner::after {
+  transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dx-r.is-active .hamburger-inner {
+  background-color: transparent;
+  transform: rotateY(-180deg); }
+
+.hamburger--3dx-r.is-active .hamburger-inner::before {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--3dx-r.is-active .hamburger-inner::after {
+  transform: translate3d(0, -10px, 0) rotate(-45deg); }
+
+/*
+   * 3DY
+   */
+.hamburger--3dy .hamburger-box {
+  perspective: 80px; }
+
+.hamburger--3dy .hamburger-inner {
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dy .hamburger-inner::before,
+.hamburger--3dy .hamburger-inner::after {
+  transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dy.is-active .hamburger-inner {
+  background-color: transparent;
+  transform: rotateX(-180deg); }
+
+.hamburger--3dy.is-active .hamburger-inner::before {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--3dy.is-active .hamburger-inner::after {
+  transform: translate3d(0, -10px, 0) rotate(-45deg); }
+
+/*
+   * 3DY Reverse
+   */
+.hamburger--3dy-r .hamburger-box {
+  perspective: 80px; }
+
+.hamburger--3dy-r .hamburger-inner {
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dy-r .hamburger-inner::before,
+.hamburger--3dy-r .hamburger-inner::after {
+  transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dy-r.is-active .hamburger-inner {
+  background-color: transparent;
+  transform: rotateX(180deg); }
+
+.hamburger--3dy-r.is-active .hamburger-inner::before {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--3dy-r.is-active .hamburger-inner::after {
+  transform: translate3d(0, -10px, 0) rotate(-45deg); }
+
+/*
+   * 3DXY
+   */
+.hamburger--3dxy .hamburger-box {
+  perspective: 80px; }
+
+.hamburger--3dxy .hamburger-inner {
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dxy .hamburger-inner::before,
+.hamburger--3dxy .hamburger-inner::after {
+  transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dxy.is-active .hamburger-inner {
+  background-color: transparent;
+  transform: rotateX(180deg) rotateY(180deg); }
+
+.hamburger--3dxy.is-active .hamburger-inner::before {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--3dxy.is-active .hamburger-inner::after {
+  transform: translate3d(0, -10px, 0) rotate(-45deg); }
+
+/*
+   * 3DXY Reverse
+   */
+.hamburger--3dxy-r .hamburger-box {
+  perspective: 80px; }
+
+.hamburger--3dxy-r .hamburger-inner {
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dxy-r .hamburger-inner::before,
+.hamburger--3dxy-r .hamburger-inner::after {
+  transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); }
+
+.hamburger--3dxy-r.is-active .hamburger-inner {
+  background-color: transparent;
+  transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); }
+
+.hamburger--3dxy-r.is-active .hamburger-inner::before {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--3dxy-r.is-active .hamburger-inner::after {
+  transform: translate3d(0, -10px, 0) rotate(-45deg); }
+
+/*
+   * Arrow
+   */
+.hamburger--arrow.is-active .hamburger-inner::before {
+  transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); }
+
+.hamburger--arrow.is-active .hamburger-inner::after {
+  transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); }
+
+/*
+   * Arrow Right
+   */
+.hamburger--arrow-r.is-active .hamburger-inner::before {
+  transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); }
+
+.hamburger--arrow-r.is-active .hamburger-inner::after {
+  transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); }
+
+/*
+   * Arrow Alt
+   */
+.hamburger--arrowalt .hamburger-inner::before {
+  transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); }
+
+.hamburger--arrowalt .hamburger-inner::after {
+  transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); }
+
+.hamburger--arrowalt.is-active .hamburger-inner::before {
+  top: 0;
+  transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1);
+  transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); }
+
+.hamburger--arrowalt.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1);
+  transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); }
+
+/*
+   * Arrow Alt Right
+   */
+.hamburger--arrowalt-r .hamburger-inner::before {
+  transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); }
+
+.hamburger--arrowalt-r .hamburger-inner::after {
+  transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); }
+
+.hamburger--arrowalt-r.is-active .hamburger-inner::before {
+  top: 0;
+  transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1);
+  transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); }
+
+.hamburger--arrowalt-r.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1);
+  transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); }
+
+/*
+ * Arrow Turn
+ */
+.hamburger--arrowturn.is-active .hamburger-inner {
+  transform: rotate(-180deg); }
+
+.hamburger--arrowturn.is-active .hamburger-inner::before {
+  transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); }
+
+.hamburger--arrowturn.is-active .hamburger-inner::after {
+  transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); }
+
+/*
+ * Arrow Turn Right
+ */
+.hamburger--arrowturn-r.is-active .hamburger-inner {
+  transform: rotate(-180deg); }
+
+.hamburger--arrowturn-r.is-active .hamburger-inner::before {
+  transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); }
+
+.hamburger--arrowturn-r.is-active .hamburger-inner::after {
+  transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); }
+
+/*
+   * Boring
+   */
+.hamburger--boring .hamburger-inner,
+.hamburger--boring .hamburger-inner::before,
+.hamburger--boring .hamburger-inner::after {
+  transition-property: none; }
+
+.hamburger--boring.is-active .hamburger-inner {
+  transform: rotate(45deg); }
+
+.hamburger--boring.is-active .hamburger-inner::before {
+  top: 0;
+  opacity: 0; }
+
+.hamburger--boring.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(-90deg); }
+
+/*
+   * Collapse
+   */
+.hamburger--collapse .hamburger-inner {
+  top: auto;
+  bottom: 0;
+  transition-duration: 0.13s;
+  transition-delay: 0.13s;
+  transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--collapse .hamburger-inner::after {
+  top: -20px;
+  transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; }
+
+.hamburger--collapse .hamburger-inner::before {
+  transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--collapse.is-active .hamburger-inner {
+  transform: translate3d(0, -10px, 0) rotate(-45deg);
+  transition-delay: 0.22s;
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--collapse.is-active .hamburger-inner::after {
+  top: 0;
+  opacity: 0;
+  transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; }
+
+.hamburger--collapse.is-active .hamburger-inner::before {
+  top: 0;
+  transform: rotate(-90deg);
+  transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Collapse Reverse
+   */
+.hamburger--collapse-r .hamburger-inner {
+  top: auto;
+  bottom: 0;
+  transition-duration: 0.13s;
+  transition-delay: 0.13s;
+  transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--collapse-r .hamburger-inner::after {
+  top: -20px;
+  transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; }
+
+.hamburger--collapse-r .hamburger-inner::before {
+  transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--collapse-r.is-active .hamburger-inner {
+  transform: translate3d(0, -10px, 0) rotate(45deg);
+  transition-delay: 0.22s;
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--collapse-r.is-active .hamburger-inner::after {
+  top: 0;
+  opacity: 0;
+  transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; }
+
+.hamburger--collapse-r.is-active .hamburger-inner::before {
+  top: 0;
+  transform: rotate(90deg);
+  transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Elastic
+   */
+.hamburger--elastic .hamburger-inner {
+  top: 2px;
+  transition-duration: 0.275s;
+  transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); }
+
+.hamburger--elastic .hamburger-inner::before {
+  top: 10px;
+  transition: opacity 0.125s 0.275s ease; }
+
+.hamburger--elastic .hamburger-inner::after {
+  top: 20px;
+  transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); }
+
+.hamburger--elastic.is-active .hamburger-inner {
+  transform: translate3d(0, 10px, 0) rotate(135deg);
+  transition-delay: 0.075s; }
+
+.hamburger--elastic.is-active .hamburger-inner::before {
+  transition-delay: 0s;
+  opacity: 0; }
+
+.hamburger--elastic.is-active .hamburger-inner::after {
+  transform: translate3d(0, -20px, 0) rotate(-270deg);
+  transition-delay: 0.075s; }
+
+/*
+   * Elastic Reverse
+   */
+.hamburger--elastic-r .hamburger-inner {
+  top: 2px;
+  transition-duration: 0.275s;
+  transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); }
+
+.hamburger--elastic-r .hamburger-inner::before {
+  top: 10px;
+  transition: opacity 0.125s 0.275s ease; }
+
+.hamburger--elastic-r .hamburger-inner::after {
+  top: 20px;
+  transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); }
+
+.hamburger--elastic-r.is-active .hamburger-inner {
+  transform: translate3d(0, 10px, 0) rotate(-135deg);
+  transition-delay: 0.075s; }
+
+.hamburger--elastic-r.is-active .hamburger-inner::before {
+  transition-delay: 0s;
+  opacity: 0; }
+
+.hamburger--elastic-r.is-active .hamburger-inner::after {
+  transform: translate3d(0, -20px, 0) rotate(270deg);
+  transition-delay: 0.075s; }
+
+/*
+   * Emphatic
+   */
+.hamburger--emphatic {
+  overflow: hidden; }
+
+.hamburger--emphatic .hamburger-inner {
+  transition: background-color 0.125s 0.175s ease-in; }
+
+.hamburger--emphatic .hamburger-inner::before {
+  left: 0;
+  transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; }
+
+.hamburger--emphatic .hamburger-inner::after {
+  top: 10px;
+  right: 0;
+  transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; }
+
+.hamburger--emphatic.is-active .hamburger-inner {
+  transition-delay: 0s;
+  transition-timing-function: ease-out;
+  background-color: transparent; }
+
+.hamburger--emphatic.is-active .hamburger-inner::before {
+  left: -80px;
+  top: -80px;
+  transform: translate3d(80px, 80px, 0) rotate(45deg);
+  transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); }
+
+.hamburger--emphatic.is-active .hamburger-inner::after {
+  right: -80px;
+  top: -80px;
+  transform: translate3d(-80px, 80px, 0) rotate(-45deg);
+  transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); }
+
+/*
+   * Emphatic Reverse
+   */
+.hamburger--emphatic-r {
+  overflow: hidden; }
+
+.hamburger--emphatic-r .hamburger-inner {
+  transition: background-color 0.125s 0.175s ease-in; }
+
+.hamburger--emphatic-r .hamburger-inner::before {
+  left: 0;
+  transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; }
+
+.hamburger--emphatic-r .hamburger-inner::after {
+  top: 10px;
+  right: 0;
+  transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; }
+
+.hamburger--emphatic-r.is-active .hamburger-inner {
+  transition-delay: 0s;
+  transition-timing-function: ease-out;
+  background-color: transparent; }
+
+.hamburger--emphatic-r.is-active .hamburger-inner::before {
+  left: -80px;
+  top: 80px;
+  transform: translate3d(80px, -80px, 0) rotate(-45deg);
+  transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); }
+
+.hamburger--emphatic-r.is-active .hamburger-inner::after {
+  right: -80px;
+  top: 80px;
+  transform: translate3d(-80px, -80px, 0) rotate(45deg);
+  transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); }
+
+/*
+   * Minus
+   */
+.hamburger--minus .hamburger-inner::before,
+.hamburger--minus .hamburger-inner::after {
+  transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; }
+
+.hamburger--minus.is-active .hamburger-inner::before,
+.hamburger--minus.is-active .hamburger-inner::after {
+  opacity: 0;
+  transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; }
+
+.hamburger--minus.is-active .hamburger-inner::before {
+  top: 0; }
+
+.hamburger--minus.is-active .hamburger-inner::after {
+  bottom: 0; }
+
+/*
+   * Slider
+   */
+.hamburger--slider .hamburger-inner {
+  top: 2px; }
+
+.hamburger--slider .hamburger-inner::before {
+  top: 10px;
+  transition-property: transform, opacity;
+  transition-timing-function: ease;
+  transition-duration: 0.15s; }
+
+.hamburger--slider .hamburger-inner::after {
+  top: 20px; }
+
+.hamburger--slider.is-active .hamburger-inner {
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--slider.is-active .hamburger-inner::before {
+  transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0);
+  opacity: 0; }
+
+.hamburger--slider.is-active .hamburger-inner::after {
+  transform: translate3d(0, -20px, 0) rotate(-90deg); }
+
+/*
+   * Slider Reverse
+   */
+.hamburger--slider-r .hamburger-inner {
+  top: 2px; }
+
+.hamburger--slider-r .hamburger-inner::before {
+  top: 10px;
+  transition-property: transform, opacity;
+  transition-timing-function: ease;
+  transition-duration: 0.15s; }
+
+.hamburger--slider-r .hamburger-inner::after {
+  top: 20px; }
+
+.hamburger--slider-r.is-active .hamburger-inner {
+  transform: translate3d(0, 10px, 0) rotate(-45deg); }
+
+.hamburger--slider-r.is-active .hamburger-inner::before {
+  transform: rotate(45deg) translate3d(5.71429px, -6px, 0);
+  opacity: 0; }
+
+.hamburger--slider-r.is-active .hamburger-inner::after {
+  transform: translate3d(0, -20px, 0) rotate(90deg); }
+
+/*
+   * Spin
+   */
+.hamburger--spin .hamburger-inner {
+  transition-duration: 0.22s;
+  transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spin .hamburger-inner::before {
+  transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; }
+
+.hamburger--spin .hamburger-inner::after {
+  transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spin.is-active .hamburger-inner {
+  transform: rotate(225deg);
+  transition-delay: 0.12s;
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--spin.is-active .hamburger-inner::before {
+  top: 0;
+  opacity: 0;
+  transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; }
+
+.hamburger--spin.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(-90deg);
+  transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Spin Reverse
+   */
+.hamburger--spin-r .hamburger-inner {
+  transition-duration: 0.22s;
+  transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spin-r .hamburger-inner::before {
+  transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; }
+
+.hamburger--spin-r .hamburger-inner::after {
+  transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spin-r.is-active .hamburger-inner {
+  transform: rotate(-225deg);
+  transition-delay: 0.12s;
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--spin-r.is-active .hamburger-inner::before {
+  top: 0;
+  opacity: 0;
+  transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; }
+
+.hamburger--spin-r.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(90deg);
+  transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Spring
+   */
+.hamburger--spring .hamburger-inner {
+  top: 2px;
+  transition: background-color 0s 0.13s linear; }
+
+.hamburger--spring .hamburger-inner::before {
+  top: 10px;
+  transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spring .hamburger-inner::after {
+  top: 20px;
+  transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spring.is-active .hamburger-inner {
+  transition-delay: 0.22s;
+  background-color: transparent; }
+
+.hamburger--spring.is-active .hamburger-inner::before {
+  top: 0;
+  transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1);
+  transform: translate3d(0, 10px, 0) rotate(45deg); }
+
+.hamburger--spring.is-active .hamburger-inner::after {
+  top: 0;
+  transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1);
+  transform: translate3d(0, 10px, 0) rotate(-45deg); }
+
+/*
+   * Spring Reverse
+   */
+.hamburger--spring-r .hamburger-inner {
+  top: auto;
+  bottom: 0;
+  transition-duration: 0.13s;
+  transition-delay: 0s;
+  transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spring-r .hamburger-inner::after {
+  top: -20px;
+  transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; }
+
+.hamburger--spring-r .hamburger-inner::before {
+  transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--spring-r.is-active .hamburger-inner {
+  transform: translate3d(0, -10px, 0) rotate(-45deg);
+  transition-delay: 0.22s;
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--spring-r.is-active .hamburger-inner::after {
+  top: 0;
+  opacity: 0;
+  transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; }
+
+.hamburger--spring-r.is-active .hamburger-inner::before {
+  top: 0;
+  transform: rotate(90deg);
+  transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Stand
+   */
+.hamburger--stand .hamburger-inner {
+  transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; }
+
+.hamburger--stand .hamburger-inner::before {
+  transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--stand .hamburger-inner::after {
+  transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--stand.is-active .hamburger-inner {
+  transform: rotate(90deg);
+  background-color: transparent;
+  transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; }
+
+.hamburger--stand.is-active .hamburger-inner::before {
+  top: 0;
+  transform: rotate(-45deg);
+  transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--stand.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(45deg);
+  transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Stand Reverse
+   */
+.hamburger--stand-r .hamburger-inner {
+  transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; }
+
+.hamburger--stand-r .hamburger-inner::before {
+  transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--stand-r .hamburger-inner::after {
+  transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--stand-r.is-active .hamburger-inner {
+  transform: rotate(-90deg);
+  background-color: transparent;
+  transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; }
+
+.hamburger--stand-r.is-active .hamburger-inner::before {
+  top: 0;
+  transform: rotate(-45deg);
+  transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--stand-r.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(45deg);
+  transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Squeeze
+   */
+.hamburger--squeeze .hamburger-inner {
+  transition-duration: 0.075s;
+  transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--squeeze .hamburger-inner::before {
+  transition: top 0.075s 0.12s ease, opacity 0.075s ease; }
+
+.hamburger--squeeze .hamburger-inner::after {
+  transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); }
+
+.hamburger--squeeze.is-active .hamburger-inner {
+  transform: rotate(45deg);
+  transition-delay: 0.12s;
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+.hamburger--squeeze.is-active .hamburger-inner::before {
+  top: 0;
+  opacity: 0;
+  transition: top 0.075s ease, opacity 0.075s 0.12s ease; }
+
+.hamburger--squeeze.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(-90deg);
+  transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); }
+
+/*
+   * Vortex
+   */
+.hamburger--vortex .hamburger-inner {
+  transition-duration: 0.2s;
+  transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
+
+.hamburger--vortex .hamburger-inner::before,
+.hamburger--vortex .hamburger-inner::after {
+  transition-duration: 0s;
+  transition-delay: 0.1s;
+  transition-timing-function: linear; }
+
+.hamburger--vortex .hamburger-inner::before {
+  transition-property: top, opacity; }
+
+.hamburger--vortex .hamburger-inner::after {
+  transition-property: bottom, transform; }
+
+.hamburger--vortex.is-active .hamburger-inner {
+  transform: rotate(765deg);
+  transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
+
+.hamburger--vortex.is-active .hamburger-inner::before,
+.hamburger--vortex.is-active .hamburger-inner::after {
+  transition-delay: 0s; }
+
+.hamburger--vortex.is-active .hamburger-inner::before {
+  top: 0;
+  opacity: 0; }
+
+.hamburger--vortex.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(90deg); }
+
+/*
+   * Vortex Reverse
+   */
+.hamburger--vortex-r .hamburger-inner {
+  transition-duration: 0.2s;
+  transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
+
+.hamburger--vortex-r .hamburger-inner::before,
+.hamburger--vortex-r .hamburger-inner::after {
+  transition-duration: 0s;
+  transition-delay: 0.1s;
+  transition-timing-function: linear; }
+
+.hamburger--vortex-r .hamburger-inner::before {
+  transition-property: top, opacity; }
+
+.hamburger--vortex-r .hamburger-inner::after {
+  transition-property: bottom, transform; }
+
+.hamburger--vortex-r.is-active .hamburger-inner {
+  transform: rotate(-765deg);
+  transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
+
+.hamburger--vortex-r.is-active .hamburger-inner::before,
+.hamburger--vortex-r.is-active .hamburger-inner::after {
+  transition-delay: 0s; }
+
+.hamburger--vortex-r.is-active .hamburger-inner::before {
+  top: 0;
+  opacity: 0; }
+
+.hamburger--vortex-r.is-active .hamburger-inner::after {
+  bottom: 0;
+  transform: rotate(-90deg); }
+
+.sidebar {
+  background: #202e4e;
+  position: fixed;
+  z-index: 2;
+  width: 100%;
+  height: 44px;
+  box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); }
+  .sidebar__menu {
+    position: absolute;
+    font-weight: bold;
+    border: none;
+    text-align: left;
+    text-transform: uppercase;
+    left: 0;
+    top: 0;
+    padding: 0.75rem 1rem;
+    outline: 0; }
+  .sidebar__menu-icon {
+    height: 24px; }
+  .sidebar__links {
+    background: #202e4e;
+    overflow-y: auto;
+    transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
+    transform-origin: 0% 0%;
+    transform: rotateX(-90deg);
+    visibility: hidden;
+    opacity: 0;
+    overflow-y: auto;
+    -webkit-overflow-scrolling: touch;
+    max-height: 378px;
+    margin-top: 44px;
+    box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); }
+    .sidebar__links.is-active {
+      transform: rotateX(0);
+      visibility: visible;
+      opacity: 1; }
+  .sidebar__link {
+    display: block;
+    color: #e3f5ff;
+    padding: 0.5rem 0.75rem;
+    transition: all 0.1s ease-out;
+    border-left: 2px solid #576a85;
+    margin: 0.5rem;
+    font-weight: 500;
+    font-size: 0.95rem; }
+    .sidebar__link:hover {
+      color: #88f4ff;
+      background: rgba(255, 255, 255, 0.1);
+      border-color: pink; }
+
+@media (min-width: 992px) {
+  .sidebar {
+    left: 0;
+    top: 0;
+    bottom: 0;
+    width: 15%;
+    max-width: 250px;
+    min-width: 200px;
+    height: 100%;
+    background: linear-gradient(-30deg, #2a3d67, #14264e);
+    box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1);
+    overflow-y: auto;
+    color: white; }
+    .sidebar::-webkit-scrollbar-track {
+      background-color: rgba(0, 0, 0, 0.6); }
+    .sidebar::-webkit-scrollbar {
+      width: 10px;
+      background-color: #4b6191; }
+    .sidebar::-webkit-scrollbar-thumb {
+      background-color: #4b6191; }
+    .sidebar__links {
+      background: none;
+      box-shadow: none;
+      visibility: visible;
+      opacity: 1;
+      transform: rotateX(0);
+      margin-top: 0;
+      max-height: none; }
+    .sidebar__menu {
+      display: none; } }
+
+.header {
+  position: relative;
+  padding: 5rem 1rem 4rem;
+  background: linear-gradient(#5cd2ff, #5b67ff, #681ae4);
+  color: white;
+  margin-bottom: 2rem;
+  text-align: center;
+  overflow: hidden;
+  z-index: 1; }
+  .header::before {
+    content: '';
+    position: absolute;
+    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);
+    width: 150%;
+    height: 150%;
+    top: 0;
+    left: 0;
+    opacity: 0.1;
+    z-index: -1; }
+  .header::after {
+    content: '';
+    position: absolute;
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);
+    background-size: 24px 24px;
+    width: 100%;
+    left: 0;
+    height: 24px;
+    bottom: -1px; }
+  .header__logo {
+    height: 146px;
+    user-select: none; }
+  .header__heading {
+    font-weight: 200;
+    font-size: 3rem;
+    margin: 1rem 0;
+    line-height: 1.2; }
+  .header__description {
+    font-size: 1.5rem;
+    max-width: 600px;
+    margin: 0 auto 1rem;
+    font-weight: 300;
+    letter-spacing: 0.4px; }
+  .header__css {
+    background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff);
+    -webkit-background-clip: text;
+    -webkit-text-fill-color: transparent;
+    font-size: 4rem; }
+  .header__github-button {
+    color: white; }
+
+@media (min-width: 579px) {
+  .header {
+    padding: 6rem 0 5rem; }
+    .header__heading {
+      font-size: 3.75rem; } }
+
+@media (min-width: 992px) {
+  .header {
+    padding: 2.5rem 0 5rem; } }
+
+.snippet {
+  position: relative;
+  background: white;
+  padding: 2rem 5%;
+  box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7;
+  border-radius: 0.25rem;
+  font-size: 1.1rem;
+  margin-bottom: 1.5rem; }
+  .snippet h3 {
+    font-size: 2rem;
+    padding: 0.5rem 0;
+    border-bottom: 1px solid rgba(0, 32, 128, 0.1);
+    margin-bottom: 1.25rem;
+    margin-top: 0;
+    line-height: 1.3; }
+  .snippet code:not([class*='lang']) {
+    background: #fcfaff;
+    border: 1px solid #e2ddff;
+    color: #4b00da;
+    border-radius: 0.15rem;
+    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
+    font-size: 0.9rem;
+    padding: 0.2rem 0.4rem;
+    margin: 0 0.1rem; }
+  .snippet ol {
+    margin-top: 0.5rem; }
+  .snippet ol > li {
+    margin-bottom: 0.5rem; }
+  .snippet > p {
+    margin-top: 0.5rem; }
+  .snippet h4 {
+    display: inline-block;
+    margin: 1rem 0 0.5rem;
+    line-height: 2;
+    padding: 0 0.5rem;
+    border-radius: 3px;
+    font-size: 0.9rem;
+    text-transform: uppercase;
+    background: #333;
+    border: 1px solid #c6d6ea;
+    border-bottom-color: #b3c9e3;
+    background: white;
+    box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); }
+    .snippet h4[data-type='HTML'] {
+      color: white;
+      border: none;
+      background: linear-gradient(135deg, #ff4c9f, #ff7b74); }
+    .snippet h4[data-type='CSS'] {
+      color: white;
+      border: none;
+      background: linear-gradient(135deg, #7983ff, #5f9de9); }
+    .snippet h4[data-type='JavaScript'] {
+      color: white;
+      border: none;
+      background: linear-gradient(135deg, #ffb000, #f58818); }
+  .snippet__browser-support {
+    display: inline-block;
+    font-size: 2rem;
+    font-weight: 200;
+    line-height: 1;
+    margin: 0.5rem 0; }
+  .snippet__subheading.is-html {
+    color: #e22f70; }
+  .snippet__subheading.is-css {
+    color: #0a91d4; }
+  .snippet__subheading.is-explanation {
+    color: #4b00da; }
+  .snippet__support-note {
+    color: #9fa5b5;
+    font-weight: bold; }
+  .snippet__requires-javascript {
+    position: absolute;
+    background: red;
+    background: linear-gradient(145deg, #ff003b, #ff4b39);
+    color: white;
+    padding: 0.25rem 0.5rem;
+    font-size: 0.9rem;
+    transform: rotate(20deg);
+    font-weight: bold;
+    top: 1rem;
+    right: 0; }
+
+.snippet-demo {
+  background: #f5f6f9;
+  border-radius: 0.25rem;
+  padding: 0.75rem 1.25rem; }
+  .snippet-demo.is-distinct {
+    background: linear-gradient(135deg, #ff4c9f, #ff7b74); }
+
+@media (min-width: 768px) {
+  .snippet__requires-javascript {
+    right: -0.5rem; } }
+
+.back-to-top-button {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  font-size: 2rem;
+  font-weight: bold;
+  background: white;
+  width: 4rem;
+  height: 4rem;
+  position: fixed;
+  right: 2rem;
+  bottom: 2rem;
+  border-radius: 50%;
+  user-select: none;
+  box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15);
+  transition: all 0.2s ease-out;
+  visibility: hidden;
+  opacity: 0;
+  z-index: 1;
+  border: 1px solid rgba(0, 32, 128, 0.1);
+  outline: 0; }
+  .back-to-top-button:hover, .back-to-top-button:focus {
+    transform: scale(1.1);
+    box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15);
+    color: #35a8ff; }
+  .back-to-top-button:focus {
+    box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; }
+  .back-to-top-button.is-visible {
+    visibility: visible;
+    opacity: 1; }
diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js
new file mode 100644
index 000000000..9c58f8c04
--- /dev/null
+++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js
@@ -0,0 +1,1479 @@
+// modules are defined as an array
+// [ module function, map of requires ]
+//
+// map of requires is short require name -> numeric require
+//
+// anything defined in a previous bundle is accessed via the
+// orig method which is the require for previous bundles
+
+// eslint-disable-next-line no-global-assign
+require = (function (modules, cache, entry) {
+  // Save the require from previous bundle to this closure if any
+  var previousRequire = typeof require === "function" && require;
+
+  function newRequire(name, jumped) {
+    if (!cache[name]) {
+      if (!modules[name]) {
+        // if we cannot find the module within our internal map or
+        // cache jump to the current global require ie. the last bundle
+        // that was added to the page.
+        var currentRequire = typeof require === "function" && require;
+        if (!jumped && currentRequire) {
+          return currentRequire(name, true);
+        }
+
+        // If there are other bundles on this page the require from the
+        // previous one is saved to 'previousRequire'. Repeat this as
+        // many times as there are bundles until the module is found or
+        // we exhaust the require chain.
+        if (previousRequire) {
+          return previousRequire(name, true);
+        }
+
+        var err = new Error('Cannot find module \'' + name + '\'');
+        err.code = 'MODULE_NOT_FOUND';
+        throw err;
+      }
+
+      localRequire.resolve = resolve;
+
+      var module = cache[name] = new newRequire.Module(name);
+
+      modules[name][0].call(module.exports, localRequire, module, module.exports);
+    }
+
+    return cache[name].exports;
+
+    function localRequire(x){
+      return newRequire(localRequire.resolve(x));
+    }
+
+    function resolve(x){
+      return modules[name][1][x] || x;
+    }
+  }
+
+  function Module(moduleName) {
+    this.id = moduleName;
+    this.bundle = newRequire;
+    this.exports = {};
+  }
+
+  newRequire.isParcelRequire = true;
+  newRequire.Module = Module;
+  newRequire.modules = modules;
+  newRequire.cache = cache;
+  newRequire.parent = previousRequire;
+
+  for (var i = 0; i < entry.length; i++) {
+    newRequire(entry[i]);
+  }
+
+  // Override the current require with this new one
+  return newRequire;
+})({19:[function(require,module,exports) {
+var bundleURL = null;
+function getBundleURLCached() {
+  if (!bundleURL) {
+    bundleURL = getBundleURL();
+  }
+
+  return bundleURL;
+}
+
+function getBundleURL() {
+  // Attempt to find the URL of the current script and use that as the base URL
+  try {
+    throw new Error();
+  } catch (err) {
+    var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g);
+    if (matches) {
+      return getBaseURL(matches[0]);
+    }
+  }
+
+  return '/';
+}
+
+function getBaseURL(url) {
+  return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/';
+}
+
+exports.getBundleURL = getBundleURLCached;
+exports.getBaseURL = getBaseURL;
+},{}],15:[function(require,module,exports) {
+var bundle = require('./bundle-url');
+
+function updateLink(link) {
+  var newLink = link.cloneNode();
+  newLink.onload = function () {
+    link.remove();
+  };
+  newLink.href = link.href.split('?')[0] + '?' + Date.now();
+  link.parentNode.insertBefore(newLink, link.nextSibling);
+}
+
+var cssTimeout = null;
+function reloadCSS() {
+  if (cssTimeout) {
+    return;
+  }
+
+  cssTimeout = setTimeout(function () {
+    var links = document.querySelectorAll('link[rel="stylesheet"]');
+    for (var i = 0; i < links.length; i++) {
+      if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {
+        updateLink(links[i]);
+      }
+    }
+
+    cssTimeout = null;
+  }, 50);
+}
+
+module.exports = reloadCSS;
+},{"./bundle-url":19}],21:[function(require,module,exports) {
+
+        var reloadCSS = require('_css_loader');
+        module.hot.dispose(reloadCSS);
+        module.hot.accept(reloadCSS);
+      
+},{"_css_loader":15}],20:[function(require,module,exports) {
+var global = (1,eval)("this");
+
+/* **********************************************
+     Begin prism-core.js
+********************************************** */
+
+var _self = (typeof window !== 'undefined')
+	? window   // if in browser
+	: (
+		(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
+		? self // if in worker
+		: {}   // if in node js
+	);
+
+/**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ * MIT license http://www.opensource.org/licenses/mit-license.php/
+ * @author Lea Verou http://lea.verou.me
+ */
+
+var Prism = (function(){
+
+// Private helper vars
+var lang = /\blang(?:uage)?-(\w+)\b/i;
+var uniqueId = 0;
+
+var _ = _self.Prism = {
+	manual: _self.Prism && _self.Prism.manual,
+	disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,
+	util: {
+		encode: function (tokens) {
+			if (tokens instanceof Token) {
+				return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
+			} else if (_.util.type(tokens) === 'Array') {
+				return tokens.map(_.util.encode);
+			} else {
+				return tokens.replace(/&/g, '&').replace(/ text.length) {
+						// Something went terribly wrong, ABORT, ABORT!
+						return;
+					}
+
+					if (str instanceof Token) {
+						continue;
+					}
+
+					pattern.lastIndex = 0;
+
+					var match = pattern.exec(str),
+					    delNum = 1;
+
+					// Greedy patterns can override/remove up to two previously matched tokens
+					if (!match && greedy && i != strarr.length - 1) {
+						pattern.lastIndex = pos;
+						match = pattern.exec(text);
+						if (!match) {
+							break;
+						}
+
+						var from = match.index + (lookbehind ? match[1].length : 0),
+						    to = match.index + match[0].length,
+						    k = i,
+						    p = pos;
+
+						for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {
+							p += strarr[k].length;
+							// Move the index i to the element in strarr that is closest to from
+							if (from >= p) {
+								++i;
+								pos = p;
+							}
+						}
+
+						/*
+						 * If strarr[i] is a Token, then the match starts inside another Token, which is invalid
+						 * If strarr[k - 1] is greedy we are in conflict with another greedy pattern
+						 */
+						if (strarr[i] instanceof Token || strarr[k - 1].greedy) {
+							continue;
+						}
+
+						// Number of tokens to delete and replace with the new match
+						delNum = k - i;
+						str = text.slice(pos, p);
+						match.index -= pos;
+					}
+
+					if (!match) {
+						if (oneshot) {
+							break;
+						}
+
+						continue;
+					}
+
+					if(lookbehind) {
+						lookbehindLength = match[1].length;
+					}
+
+					var from = match.index + lookbehindLength,
+					    match = match[0].slice(lookbehindLength),
+					    to = from + match.length,
+					    before = str.slice(0, from),
+					    after = str.slice(to);
+
+					var args = [i, delNum];
+
+					if (before) {
+						++i;
+						pos += before.length;
+						args.push(before);
+					}
+
+					var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);
+
+					args.push(wrapped);
+
+					if (after) {
+						args.push(after);
+					}
+
+					Array.prototype.splice.apply(strarr, args);
+
+					if (delNum != 1)
+						_.matchGrammar(text, strarr, grammar, i, pos, true, token);
+
+					if (oneshot)
+						break;
+				}
+			}
+		}
+	},
+
+	tokenize: function(text, grammar, language) {
+		var strarr = [text];
+
+		var rest = grammar.rest;
+
+		if (rest) {
+			for (var token in rest) {
+				grammar[token] = rest[token];
+			}
+
+			delete grammar.rest;
+		}
+
+		_.matchGrammar(text, strarr, grammar, 0, 0, false);
+
+		return strarr;
+	},
+
+	hooks: {
+		all: {},
+
+		add: function (name, callback) {
+			var hooks = _.hooks.all;
+
+			hooks[name] = hooks[name] || [];
+
+			hooks[name].push(callback);
+		},
+
+		run: function (name, env) {
+			var callbacks = _.hooks.all[name];
+
+			if (!callbacks || !callbacks.length) {
+				return;
+			}
+
+			for (var i=0, callback; callback = callbacks[i++];) {
+				callback(env);
+			}
+		}
+	}
+};
+
+var Token = _.Token = function(type, content, alias, matchedStr, greedy) {
+	this.type = type;
+	this.content = content;
+	this.alias = alias;
+	// Copy of the full string this token was created from
+	this.length = (matchedStr || "").length|0;
+	this.greedy = !!greedy;
+};
+
+Token.stringify = function(o, language, parent) {
+	if (typeof o == 'string') {
+		return o;
+	}
+
+	if (_.util.type(o) === 'Array') {
+		return o.map(function(element) {
+			return Token.stringify(element, language, o);
+		}).join('');
+	}
+
+	var env = {
+		type: o.type,
+		content: Token.stringify(o.content, language, parent),
+		tag: 'span',
+		classes: ['token', o.type],
+		attributes: {},
+		language: language,
+		parent: parent
+	};
+
+	if (o.alias) {
+		var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];
+		Array.prototype.push.apply(env.classes, aliases);
+	}
+
+	_.hooks.run('wrap', env);
+
+	var attributes = Object.keys(env.attributes).map(function(name) {
+		return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"';
+	}).join(' ');
+
+	return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';
+
+};
+
+if (!_self.document) {
+	if (!_self.addEventListener) {
+		// in Node.js
+		return _self.Prism;
+	}
+
+	if (!_.disableWorkerMessageHandler) {
+		// In worker
+		_self.addEventListener('message', function (evt) {
+			var message = JSON.parse(evt.data),
+				lang = message.language,
+				code = message.code,
+				immediateClose = message.immediateClose;
+
+			_self.postMessage(_.highlight(code, _.languages[lang], lang));
+			if (immediateClose) {
+				_self.close();
+			}
+		}, false);
+	}
+
+	return _self.Prism;
+}
+
+//Get current script and highlight
+var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop();
+
+if (script) {
+	_.filename = script.src;
+
+	if (!_.manual && !script.hasAttribute('data-manual')) {
+		if(document.readyState !== "loading") {
+			if (window.requestAnimationFrame) {
+				window.requestAnimationFrame(_.highlightAll);
+			} else {
+				window.setTimeout(_.highlightAll, 16);
+			}
+		}
+		else {
+			document.addEventListener('DOMContentLoaded', _.highlightAll);
+		}
+	}
+}
+
+return _self.Prism;
+
+})();
+
+if (typeof module !== 'undefined' && module.exports) {
+	module.exports = Prism;
+}
+
+// hack for components to work correctly in node.js
+if (typeof global !== 'undefined') {
+	global.Prism = Prism;
+}
+
+
+/* **********************************************
+     Begin prism-markup.js
+********************************************** */
+
+Prism.languages.markup = {
+	'comment': //,
+	'prolog': /<\?[\s\S]+?\?>/,
+	'doctype': //i,
+	'cdata': //i,
+	'tag': {
+		pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,
+		inside: {
+			'tag': {
+				pattern: /^<\/?[^\s>\/]+/i,
+				inside: {
+					'punctuation': /^<\/?/,
+					'namespace': /^[^\s>\/:]+:/
+				}
+			},
+			'attr-value': {
+				pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,
+				inside: {
+					'punctuation': [
+						/^=/,
+						{
+							pattern: /(^|[^\\])["']/,
+							lookbehind: true
+						}
+					]
+				}
+			},
+			'punctuation': /\/?>/,
+			'attr-name': {
+				pattern: /[^\s>\/]+/,
+				inside: {
+					'namespace': /^[^\s>\/:]+:/
+				}
+			}
+
+		}
+	},
+	'entity': /&#?[\da-z]{1,8};/i
+};
+
+Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] =
+	Prism.languages.markup['entity'];
+
+// Plugin to make entity title show the real entity, idea by Roman Komarov
+Prism.hooks.add('wrap', function(env) {
+
+	if (env.type === 'entity') {
+		env.attributes['title'] = env.content.replace(/&/, '&');
+	}
+});
+
+Prism.languages.xml = Prism.languages.markup;
+Prism.languages.html = Prism.languages.markup;
+Prism.languages.mathml = Prism.languages.markup;
+Prism.languages.svg = Prism.languages.markup;
+
+
+/* **********************************************
+     Begin prism-css.js
+********************************************** */
+
+Prism.languages.css = {
+	'comment': /\/\*[\s\S]*?\*\//,
+	'atrule': {
+		pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i,
+		inside: {
+			'rule': /@[\w-]+/
+			// See rest below
+		}
+	},
+	'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
+	'selector': /[^{}\s][^{};]*?(?=\s*\{)/,
+	'string': {
+		pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+		greedy: true
+	},
+	'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,
+	'important': /\B!important\b/i,
+	'function': /[-a-z0-9]+(?=\()/i,
+	'punctuation': /[(){};:]/
+};
+
+Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);
+
+if (Prism.languages.markup) {
+	Prism.languages.insertBefore('markup', 'tag', {
+		'style': {
+			pattern: /()[\s\S]*?(?=<\/style>)/i,
+			lookbehind: true,
+			inside: Prism.languages.css,
+			alias: 'language-css',
+			greedy: true
+		}
+	});
+
+	Prism.languages.insertBefore('inside', 'attr-value', {
+		'style-attr': {
+			pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,
+			inside: {
+				'attr-name': {
+					pattern: /^\s*style/i,
+					inside: Prism.languages.markup.tag.inside
+				},
+				'punctuation': /^\s*=\s*['"]|['"]\s*$/,
+				'attr-value': {
+					pattern: /.+/i,
+					inside: Prism.languages.css
+				}
+			},
+			alias: 'language-css'
+		}
+	}, Prism.languages.markup.tag);
+}
+
+/* **********************************************
+     Begin prism-clike.js
+********************************************** */
+
+Prism.languages.clike = {
+	'comment': [
+		{
+			pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
+			lookbehind: true
+		},
+		{
+			pattern: /(^|[^\\:])\/\/.*/,
+			lookbehind: true
+		}
+	],
+	'string': {
+		pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+		greedy: true
+	},
+	'class-name': {
+		pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,
+		lookbehind: true,
+		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': /[a-z0-9_]+(?=\()/i,
+	'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
+	'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
+	'punctuation': /[{}[\];(),.:]/
+};
+
+
+/* **********************************************
+     Begin prism-javascript.js
+********************************************** */
+
+Prism.languages.javascript = Prism.languages.extend('clike', {
+	'keyword': /\b(?: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|var|void|while|with|yield)\b/,
+	'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,
+	// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
+	'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,
+	'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/
+});
+
+Prism.languages.insertBefore('javascript', 'keyword', {
+	'regex': {
+		pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
+		lookbehind: true,
+		greedy: true
+	},
+	// This must be declared before keyword because we use "function" inside the look-forward
+	'function-variable': {
+		pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,
+		alias: 'function'
+	}
+});
+
+Prism.languages.insertBefore('javascript', 'string', {
+	'template-string': {
+		pattern: /`(?:\\[\s\S]|[^\\`])*`/,
+		greedy: true,
+		inside: {
+			'interpolation': {
+				pattern: /\$\{[^}]+\}/,
+				inside: {
+					'interpolation-punctuation': {
+						pattern: /^\$\{|\}$/,
+						alias: 'punctuation'
+					},
+					rest: Prism.languages.javascript
+				}
+			},
+			'string': /[\s\S]+/
+		}
+	}
+});
+
+if (Prism.languages.markup) {
+	Prism.languages.insertBefore('markup', 'tag', {
+		'script': {
+			pattern: /()[\s\S]*?(?=<\/script>)/i,
+			lookbehind: true,
+			inside: Prism.languages.javascript,
+			alias: 'language-javascript',
+			greedy: true
+		}
+	});
+}
+
+Prism.languages.js = Prism.languages.javascript;
+
+
+/* **********************************************
+     Begin prism-file-highlight.js
+********************************************** */
+
+(function () {
+	if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
+		return;
+	}
+
+	self.Prism.fileHighlight = function() {
+
+		var Extensions = {
+			'js': 'javascript',
+			'py': 'python',
+			'rb': 'ruby',
+			'ps1': 'powershell',
+			'psm1': 'powershell',
+			'sh': 'bash',
+			'bat': 'batch',
+			'h': 'c',
+			'tex': 'latex'
+		};
+
+		Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
+			var src = pre.getAttribute('data-src');
+
+			var language, parent = pre;
+			var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
+			while (parent && !lang.test(parent.className)) {
+				parent = parent.parentNode;
+			}
+
+			if (parent) {
+				language = (pre.className.match(lang) || [, ''])[1];
+			}
+
+			if (!language) {
+				var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
+				language = Extensions[extension] || extension;
+			}
+
+			var code = document.createElement('code');
+			code.className = 'language-' + language;
+
+			pre.textContent = '';
+
+			code.textContent = 'Loading…';
+
+			pre.appendChild(code);
+
+			var xhr = new XMLHttpRequest();
+
+			xhr.open('GET', src, true);
+
+			xhr.onreadystatechange = function () {
+				if (xhr.readyState == 4) {
+
+					if (xhr.status < 400 && xhr.responseText) {
+						code.textContent = xhr.responseText;
+
+						Prism.highlightElement(code);
+					}
+					else if (xhr.status >= 400) {
+						code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
+					}
+					else {
+						code.textContent = '✖ Error: File does not exist or is empty';
+					}
+				}
+			};
+
+			xhr.send(null);
+		});
+
+	};
+
+	document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
+
+})();
+
+},{}],10:[function(require,module,exports) {
+
+        var reloadCSS = require('_css_loader');
+        module.hot.dispose(reloadCSS);
+        module.hot.accept(reloadCSS);
+      
+},{"_css_loader":15}],9:[function(require,module,exports) {
+
+        var reloadCSS = require('_css_loader');
+        module.hot.dispose(reloadCSS);
+        module.hot.accept(reloadCSS);
+      
+},{"_css_loader":15}],11:[function(require,module,exports) {
+var e = Element.prototype;
+if (!e.matches) {
+  e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector;
+}
+if (!e.closest) {
+  e.closest = function (s) {
+    var el = this;
+    if (!document.documentElement.contains(el)) return null;
+    do {
+      if (el.matches(s)) return el;
+      el = el.parentElement || el.parentNode;
+    } while (el !== null && el.nodeType === 1);
+    return null;
+  };
+}
+},{}],16:[function(require,module,exports) {
+var global = (1,eval)("this");
+var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+;(function (global, factory) {
+  (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory();
+})(this, function () {
+  'use strict';
+
+  // Robert Penner's easeInOutQuad
+
+  // find the rest of his easing functions here: http://robertpenner.com/easing/
+  // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js
+
+  var easeInOutQuad = function easeInOutQuad(t, b, c, d) {
+    t /= d / 2;
+    if (t < 1) return c / 2 * t * t + b;
+    t--;
+    return -c / 2 * (t * (t - 2) - 1) + b;
+  };
+
+  var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) {
+    return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
+  } : function (obj) {
+    return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
+  };
+
+  var jumper = function jumper() {
+    // private variable cache
+    // no variables are created during a jump, preventing memory leaks
+
+    var element = void 0; // element to scroll to                   (node)
+
+    var start = void 0; // where scroll starts                    (px)
+    var stop = void 0; // where scroll stops                     (px)
+
+    var offset = void 0; // adjustment from the stop position      (px)
+    var easing = void 0; // easing function                        (function)
+    var a11y = void 0; // accessibility support flag             (boolean)
+
+    var distance = void 0; // distance of scroll                     (px)
+    var duration = void 0; // scroll duration                        (ms)
+
+    var timeStart = void 0; // time scroll started                    (ms)
+    var timeElapsed = void 0; // time spent scrolling thus far          (ms)
+
+    var next = void 0; // next scroll position                   (px)
+
+    var callback = void 0; // to call when done scrolling            (function)
+
+    // scroll position helper
+
+    function location() {
+      return window.scrollY || window.pageYOffset;
+    }
+
+    // element offset helper
+
+    function top(element) {
+      return element.getBoundingClientRect().top + start;
+    }
+
+    // rAF loop helper
+
+    function loop(timeCurrent) {
+      // store time scroll started, if not started already
+      if (!timeStart) {
+        timeStart = timeCurrent;
+      }
+
+      // determine time spent scrolling so far
+      timeElapsed = timeCurrent - timeStart;
+
+      // calculate next scroll position
+      next = easing(timeElapsed, start, distance, duration);
+
+      // scroll to it
+      window.scrollTo(0, next);
+
+      // check progress
+      timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop
+      : done(); // scrolling is done
+    }
+
+    // scroll finished helper
+
+    function done() {
+      // account for rAF time rounding inaccuracies
+      window.scrollTo(0, start + distance);
+
+      // if scrolling to an element, and accessibility is enabled
+      if (element && a11y) {
+        // add tabindex indicating programmatic focus
+        element.setAttribute('tabindex', '-1');
+
+        // focus the element
+        element.focus();
+      }
+
+      // if it exists, fire the callback
+      if (typeof callback === 'function') {
+        callback();
+      }
+
+      // reset time for next jump
+      timeStart = false;
+    }
+
+    // API
+
+    function jump(target) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+      // resolve options, or use defaults
+      duration = options.duration || 1000;
+      offset = options.offset || 0;
+      callback = options.callback; // "undefined" is a suitable default, and won't be called
+      easing = options.easing || easeInOutQuad;
+      a11y = options.a11y || false;
+
+      // cache starting position
+      start = location();
+
+      // resolve target
+      switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {
+        // scroll from current position
+        case 'number':
+          element = undefined; // no element to scroll to
+          a11y = false; // make sure accessibility is off
+          stop = start + target;
+          break;
+
+        // scroll to element (node)
+        // bounding rect is relative to the viewport
+        case 'object':
+          element = target;
+          stop = top(element);
+          break;
+
+        // scroll to element (selector)
+        // bounding rect is relative to the viewport
+        case 'string':
+          element = document.querySelector(target);
+          stop = top(element);
+          break;
+      }
+
+      // resolve scroll distance, accounting for offset
+      distance = stop - start + offset;
+
+      // resolve duration
+      switch (_typeof(options.duration)) {
+        // number in ms
+        case 'number':
+          duration = options.duration;
+          break;
+
+        // function passed the distance of the scroll
+        case 'function':
+          duration = options.duration(distance);
+          break;
+      }
+
+      // start the loop
+      window.requestAnimationFrame(loop);
+    }
+
+    // expose only the jump method
+    return jump;
+  };
+
+  // export singleton
+
+  var singleton = jumper();
+
+  return function () {
+    var scrolling = void 0;
+    var end = function end() {
+      return scrolling = false;
+    };
+    return function (to) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+      if (scrolling) return;
+      var scrollY = window.scrollY || window.pageYOffset;
+      if (to !== '.header') location.hash = to;
+      scroll(0, scrollY);
+      scrolling = true;
+      setTimeout(end, options.duration || 0);
+      return singleton(to, options);
+    };
+  }();
+});
+},{}],17:[function(require,module,exports) {
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var select = exports.select = function select(s) {
+  return document.querySelector(s);
+};
+var selectAll = exports.selectAll = function selectAll(s) {
+  return [].slice.call(document.querySelectorAll(s));
+};
+var scrollY = exports.scrollY = function scrollY() {
+  return window.scrollY || window.pageYOffset;
+};
+var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) {
+  return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b;
+};
+
+/*
+* Make iOS behave normally.
+*/
+if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {
+  document.body.style.cursor = 'pointer';
+}
+
+/*
+* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font
+* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.
+* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.
+* Must be applied to all browsers for now.
+*/
+;(function () {
+  var ua = navigator.userAgent;
+
+  // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica
+  var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11;
+
+  // Chrome v64 and FF v58 fix the issue
+  var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58;
+
+  var allEls = [].slice.call(document.querySelectorAll('*'));
+
+  if (isRelevantMacOS && isAffectedBrowser) {
+    document.documentElement.style.letterSpacing = '-0.3px';
+    allEls.forEach(function (el) {
+      var fontSize = parseFloat(getComputedStyle(el).fontSize);
+      if (fontSize >= 20) el.style.letterSpacing = '0.3px';
+    });
+  } else if (isRelevantMacOS && !isAffectedBrowser) {
+    // Italics fix
+    allEls.forEach(function (el) {
+      var _getComputedStyle = getComputedStyle(el),
+          fontSize = _getComputedStyle.fontSize,
+          fontStyle = _getComputedStyle.fontStyle;
+
+      if (fontStyle === 'italic') {
+        el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px';
+      }
+    });
+  }
+})();
+},{}],12:[function(require,module,exports) {
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _jump = require('../deps/jump');
+
+var _jump2 = _interopRequireDefault(_jump);
+
+var _utils = require('../deps/utils');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var menu = (0, _utils.select)('.hamburger');
+var links = (0, _utils.select)('.sidebar__links');
+var ACTIVE_CLASS = 'is-active';
+
+var toggle = function toggle() {
+  return [menu, links].forEach(function (el) {
+    return el.classList.toggle(ACTIVE_CLASS);
+  });
+};
+
+menu.addEventListener('click', toggle);
+
+links.addEventListener('click', function (e) {
+  setTimeout(toggle, 40);
+  if (e.target.classList.contains('sidebar__link')) {
+    e.preventDefault();
+    (0, _jump2.default)(e.target.getAttribute('href'), {
+      duration: 750,
+      offset: window.innerWidth <= 768 ? -64 : -32,
+      easing: _utils.easeOutQuint
+    });
+  }
+});
+
+document.addEventListener('click', function (e) {
+  if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) {
+    toggle();
+  }
+});
+
+exports.default = { toggle: toggle };
+},{"../deps/jump":16,"../deps/utils":17}],13:[function(require,module,exports) {
+'use strict';
+
+var _jump = require('../deps/jump');
+
+var _jump2 = _interopRequireDefault(_jump);
+
+var _utils = require('../deps/utils');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var backToTopButton = (0, _utils.select)('.back-to-top-button');
+
+window.addEventListener('scroll', function () {
+  backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible');
+});
+backToTopButton.onclick = function () {
+  (0, _jump2.default)('.header', {
+    duration: 750,
+    easing: _utils.easeOutQuint
+  });
+};
+},{"../deps/jump":16,"../deps/utils":17}],7:[function(require,module,exports) {
+'use strict';
+
+require('normalize.css');
+
+require('prismjs');
+
+require('../css/deps/prism.css');
+
+require('../css/index.scss');
+
+require('./deps/polyfills');
+
+var _Menu = require('./components/Menu');
+
+var _Menu2 = _interopRequireDefault(_Menu);
+
+var _BackToTopButton = require('./components/BackToTopButton');
+
+var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+},{"normalize.css":21,"prismjs":20,"../css/deps/prism.css":10,"../css/index.scss":9,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}],30:[function(require,module,exports) {
+
+var global = (1, eval)('this');
+var OldModule = module.bundle.Module;
+function Module(moduleName) {
+  OldModule.call(this, moduleName);
+  this.hot = {
+    accept: function (fn) {
+      this._acceptCallback = fn || function () {};
+    },
+    dispose: function (fn) {
+      this._disposeCallback = fn;
+    }
+  };
+}
+
+module.bundle.Module = Module;
+
+var parent = module.bundle.parent;
+if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
+  var hostname = '' || location.hostname;
+  var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
+  var ws = new WebSocket(protocol + '://' + hostname + ':' + '57120' + '/');
+  ws.onmessage = function (event) {
+    var data = JSON.parse(event.data);
+
+    if (data.type === 'update') {
+      data.assets.forEach(function (asset) {
+        hmrApply(global.require, asset);
+      });
+
+      data.assets.forEach(function (asset) {
+        if (!asset.isNew) {
+          hmrAccept(global.require, asset.id);
+        }
+      });
+    }
+
+    if (data.type === 'reload') {
+      ws.close();
+      ws.onclose = function () {
+        location.reload();
+      };
+    }
+
+    if (data.type === 'error-resolved') {
+      console.log('[parcel] ✨ Error resolved');
+    }
+
+    if (data.type === 'error') {
+      console.error('[parcel] 🚨  ' + data.error.message + '\n' + 'data.error.stack');
+    }
+  };
+}
+
+function getParents(bundle, id) {
+  var modules = bundle.modules;
+  if (!modules) {
+    return [];
+  }
+
+  var parents = [];
+  var k, d, dep;
+
+  for (k in modules) {
+    for (d in modules[k][1]) {
+      dep = modules[k][1][d];
+      if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {
+        parents.push(+k);
+      }
+    }
+  }
+
+  if (bundle.parent) {
+    parents = parents.concat(getParents(bundle.parent, id));
+  }
+
+  return parents;
+}
+
+function hmrApply(bundle, asset) {
+  var modules = bundle.modules;
+  if (!modules) {
+    return;
+  }
+
+  if (modules[asset.id] || !bundle.parent) {
+    var fn = new Function('require', 'module', 'exports', asset.generated.js);
+    asset.isNew = !modules[asset.id];
+    modules[asset.id] = [fn, asset.deps];
+  } else if (bundle.parent) {
+    hmrApply(bundle.parent, asset);
+  }
+}
+
+function hmrAccept(bundle, id) {
+  var modules = bundle.modules;
+  if (!modules) {
+    return;
+  }
+
+  if (!modules[id] && bundle.parent) {
+    return hmrAccept(bundle.parent, id);
+  }
+
+  var cached = bundle.cache[id];
+  if (cached && cached.hot._disposeCallback) {
+    cached.hot._disposeCallback();
+  }
+
+  delete bundle.cache[id];
+  bundle(id);
+
+  cached = bundle.cache[id];
+  if (cached && cached.hot && cached.hot._acceptCallback) {
+    cached.hot._acceptCallback();
+    return true;
+  }
+
+  return getParents(global.require, id).some(function (id) {
+    return hmrAccept(global.require, id);
+  });
+}
+},{}]},{},[30,7])
+//# sourceMappingURL=/dist/4d4edbda57043aeeabeac31d2dd12d0d.map
\ No newline at end of file
diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.map b/dist/4d4edbda57043aeeabeac31d2dd12d0d.map
new file mode 100644
index 000000000..9736dbe58
--- /dev/null
+++ b/dist/4d4edbda57043aeeabeac31d2dd12d0d.map
@@ -0,0 +1 @@
+{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AGhxBO,IAAM5D,0BAAS,SAATA,MAAS;AHixBtB,AGjxBsB,SAAK/D,SAASuD,aAAT,CAAuBzD,CAAvB,CAAL;AHkxBtB,AGlxBsB,CAAf;AHmxBP,AGlxBO,IAAMkE,gCAAY,SAAZA,SAAY;AHmxBzB,AGnxByB,SAAK,GAAGC,KAAH,CAASC,IAAT,CAAclE,SAASmE,gBAAT,CAA0BrE,CAA1B,CAAd,CAAL;AHoxBzB,AGpxByB,CAAlB;AHqxBP,AGpxBO,IAAMwC,4BAAU,SAAVA,OAAU;AHqxBvB,AGrxBuB,SAAMD,OAAOC,OAAP,IAAkBD,OAAOE,WAA/B;AHsxBvB,AGtxBuB,CAAhB;AHuxBP,AGtxBO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","file":"4d4edbda57043aeeabeac31d2dd12d0d.map","sourcesContent":["\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t    delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t    to = match.index + match[0].length,\n\t\t\t\t\t\t    k = i,\n\t\t\t\t\t\t    p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t    match = match[0].slice(lookbehindLength),\n\t\t\t\t\t    to = from + match.length,\n\t\t\t\t\t    before = str.slice(0, from),\n\t\t\t\t\t    after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n  e.matches =\n    e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n  e.closest = function(s) {\n    var el = this\n    if (!document.documentElement.contains(el)) return null\n    do {\n      if (el.matches(s)) return el\n      el = el.parentElement || el.parentNode\n    } while (el !== null && el.nodeType === 1)\n    return null\n  }\n}\n",";(function(global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined'\n    ? (module.exports = factory())\n    : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n  'use strict'\n\n  // Robert Penner's easeInOutQuad\n\n  // find the rest of his easing functions here: http://robertpenner.com/easing/\n  // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n  var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n    t /= d / 2\n    if (t < 1) return c / 2 * t * t + b\n    t--\n    return -c / 2 * (t * (t - 2) - 1) + b\n  }\n\n  var _typeof =\n    typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n      ? function(obj) {\n          return typeof obj\n        }\n      : function(obj) {\n          return obj &&\n            typeof Symbol === 'function' &&\n            obj.constructor === Symbol &&\n            obj !== Symbol.prototype\n            ? 'symbol'\n            : typeof obj\n        }\n\n  var jumper = function jumper() {\n    // private variable cache\n    // no variables are created during a jump, preventing memory leaks\n\n    var element = void 0 // element to scroll to                   (node)\n\n    var start = void 0 // where scroll starts                    (px)\n    var stop = void 0 // where scroll stops                     (px)\n\n    var offset = void 0 // adjustment from the stop position      (px)\n    var easing = void 0 // easing function                        (function)\n    var a11y = void 0 // accessibility support flag             (boolean)\n\n    var distance = void 0 // distance of scroll                     (px)\n    var duration = void 0 // scroll duration                        (ms)\n\n    var timeStart = void 0 // time scroll started                    (ms)\n    var timeElapsed = void 0 // time spent scrolling thus far          (ms)\n\n    var next = void 0 // next scroll position                   (px)\n\n    var callback = void 0 // to call when done scrolling            (function)\n\n    // scroll position helper\n\n    function location() {\n      return window.scrollY || window.pageYOffset\n    }\n\n    // element offset helper\n\n    function top(element) {\n      return element.getBoundingClientRect().top + start\n    }\n\n    // rAF loop helper\n\n    function loop(timeCurrent) {\n      // store time scroll started, if not started already\n      if (!timeStart) {\n        timeStart = timeCurrent\n      }\n\n      // determine time spent scrolling so far\n      timeElapsed = timeCurrent - timeStart\n\n      // calculate next scroll position\n      next = easing(timeElapsed, start, distance, duration)\n\n      // scroll to it\n      window.scrollTo(0, next)\n\n      // check progress\n      timeElapsed < duration\n        ? window.requestAnimationFrame(loop) // continue scroll loop\n        : done() // scrolling is done\n    }\n\n    // scroll finished helper\n\n    function done() {\n      // account for rAF time rounding inaccuracies\n      window.scrollTo(0, start + distance)\n\n      // if scrolling to an element, and accessibility is enabled\n      if (element && a11y) {\n        // add tabindex indicating programmatic focus\n        element.setAttribute('tabindex', '-1')\n\n        // focus the element\n        element.focus()\n      }\n\n      // if it exists, fire the callback\n      if (typeof callback === 'function') {\n        callback()\n      }\n\n      // reset time for next jump\n      timeStart = false\n    }\n\n    // API\n\n    function jump(target) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n      // resolve options, or use defaults\n      duration = options.duration || 1000\n      offset = options.offset || 0\n      callback = options.callback // \"undefined\" is a suitable default, and won't be called\n      easing = options.easing || easeInOutQuad\n      a11y = options.a11y || false\n\n      // cache starting position\n      start = location()\n\n      // resolve target\n      switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n        // scroll from current position\n        case 'number':\n          element = undefined // no element to scroll to\n          a11y = false // make sure accessibility is off\n          stop = start + target\n          break\n\n        // scroll to element (node)\n        // bounding rect is relative to the viewport\n        case 'object':\n          element = target\n          stop = top(element)\n          break\n\n        // scroll to element (selector)\n        // bounding rect is relative to the viewport\n        case 'string':\n          element = document.querySelector(target)\n          stop = top(element)\n          break\n      }\n\n      // resolve scroll distance, accounting for offset\n      distance = stop - start + offset\n\n      // resolve duration\n      switch (_typeof(options.duration)) {\n        // number in ms\n        case 'number':\n          duration = options.duration\n          break\n\n        // function passed the distance of the scroll\n        case 'function':\n          duration = options.duration(distance)\n          break\n      }\n\n      // start the loop\n      window.requestAnimationFrame(loop)\n    }\n\n    // expose only the jump method\n    return jump\n  }\n\n  // export singleton\n\n  var singleton = jumper()\n\n  return (() => {\n    let scrolling\n    const end = () => (scrolling = false)\n    return (to, options = {}) => {\n      if (scrolling) return\n      const scrollY = window.scrollY || window.pageYOffset\n      if (to !== '.header') location.hash = to\n      scroll(0, scrollY)\n      scrolling = true\n      setTimeout(end, options.duration || 0)\n      return singleton(to, options)\n    }\n  })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n  document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n  const ua = navigator.userAgent\n\n  // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n  const isRelevantMacOS =\n    /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n  // Chrome v64 and FF v58 fix the issue\n  const isAffectedBrowser =\n    (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n  const allEls = [].slice.call(document.querySelectorAll('*'))\n\n  if (isRelevantMacOS && isAffectedBrowser) {\n    document.documentElement.style.letterSpacing = '-0.3px'\n    allEls.forEach(el => {\n      const fontSize = parseFloat(getComputedStyle(el).fontSize)\n      if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n    })\n  } else if (isRelevantMacOS && !isAffectedBrowser) {\n    // Italics fix\n    allEls.forEach(el => {\n      const { fontSize, fontStyle } = getComputedStyle(el)\n      if (fontStyle === 'italic') {\n        el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n      }\n    })\n  }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n  setTimeout(toggle, 40)\n  if (e.target.classList.contains('sidebar__link')) {\n    e.preventDefault()\n    jump(e.target.getAttribute('href'), {\n      duration: 750,\n      offset: window.innerWidth <= 768 ? -64 : -32,\n      easing: easeOutQuint\n    })\n  }\n})\n\ndocument.addEventListener('click', e => {\n  if (\n    !e.target.closest('.sidebar__links') &&\n    !e.target.closest('.hamburger') &&\n    links.classList.contains(ACTIVE_CLASS)\n  ) {\n    toggle()\n  }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n  backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n  jump('.header', {\n    duration: 750,\n    easing: easeOutQuint\n  })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n  if (!bundleURL) {\n    bundleURL = getBundleURL();\n  }\n\n  return bundleURL;\n}\n\nfunction getBundleURL() {\n  // Attempt to find the URL of the current script and use that as the base URL\n  try {\n    throw new Error;\n  } catch (err) {\n    var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n    if (matches) {\n      return getBaseURL(matches[0]);\n    }\n  }\n\n  return '/';\n}\n\nfunction getBaseURL(url) {\n  return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n  var newLink = link.cloneNode();\n  newLink.onload = function () {\n    link.remove();\n  };\n  newLink.href = link.href.split('?')[0] + '?' + Date.now();\n  link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n  if (cssTimeout) {\n    return;\n  }\n\n  cssTimeout = setTimeout(function () {\n    var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n    for (var i = 0; i < links.length; i++) {\n      if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n        updateLink(links[i]);\n      }\n    }\n\n    cssTimeout = null;\n  }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]}
\ No newline at end of file
diff --git a/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png b/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png
new file mode 100644
index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12
GIT binary patch
literal 35911
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 literal 0 HcmV?d00001 diff --git a/dist/b083f39334722c9edc40c6bf09cb7190.html b/dist/b083f39334722c9edc40c6bf09cb7190.html new file mode 100644 index 000000000..660d96588 --- /dev/null +++ b/dist/b083f39334722c9edc40c6bf09cb7190.html @@ -0,0 +1,991 @@ + + + + + 30 Seconds of CSS + + + + + + +

+
+
+
+ +

30 Seconds of CSS

+

+ A curated collection of useful CSS snippets you can understand in 30 seconds or less. +

+ + + Star +
+
+
+
+
+

Clearfix

+

Ensures that an element self-clears its children.

+

HTML

<div class="clearfix">
+  <div class="floated">float a</div>
+  <div class="floated">float b</div>
+  <div class="floated">float c</div>
+</div>
+
+

CSS

.clearfix::after {
+  content: '';
+  display: table;
+  clear: both;
+}
+.floated {
+  float: left;
+}
+
+

Demo

+
+
+
float a
+
float b
+
float c
+
+
+ +

Explanation

+
    +
  1. .clearfix::after defines a pseudo element.
  2. +
  3. content: '' allows the pseudo element to affect layout.
  4. +
  5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
  6. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Custom text selection

+

Changes the styling of text selection.

+

HTML

<p class="custom-text-selection">Select some of this text.</p>
+
+

CSS

.custom-text-selection::selection {
+  background: red;
+  color: white;
+}
+
+

Demo

+
+

Select some of this text.

+
+ +

Explanation

+

::selection defines a pseudo selector on an element to style text within it when selected.

+

Browser support

+
+
+ 84.6% +
+
+

⚠️ Requires prefixes for full support.

+ +
+
+

Easing variables

+

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

+

HTML

<div class="easing-variables"></div>
+
+

CSS

:root {
+  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
+  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
+  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
+  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
+  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
+  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
+  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
+  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
+  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
+  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
+  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
+  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
+  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
+  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
+  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
+}
+.easing-variables {
+  width: 50px;
+  height: 50px;
+  background: #333;
+  transition: transform 1s var(--ease-out-quart);
+}
+.easing-variables:hover {
+  transform: rotate(45deg);
+}
+
+

Demo

+
+
Hover
+
+ +

Explanation

+

The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

+

Browser support

+
+
+ 87.2% +
+
+

✅ No caveats.

+ +
+
+

Etched text

+

Creates an effect where text appears to be "etched" or engraved into the background.

+

HTML

<p class="etched-text">I appear etched into the background.</p>
+
+

CSS

.etched-text {
+  text-shadow: 0 2px white;
+  font-size: 1.5rem;
+  font-weight: bold;
+  color: #b8bec5;
+}
+
+

Demo

+
+

I appear etched into the background.

+
+ +

Explanation

+

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

+

The background must be darker than the shadow for the effect to work.

+

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

+

Browser support

+
+
+ 97.9% +
+
+

✅ No caveats.

+ +
+
+

Gradient text

+

Gives text a gradient color.

+

HTML

<p class="gradient-text">Gradient text</p>
+
+

CSS

.gradient-text {
+  background: -webkit-linear-gradient(pink, red);
+  -webkit-text-fill-color: transparent;
+  -webkit-background-clip: text;
+}
+
+

Demo

+
+

+ Gradient text +

+
+ +

Explanation

+
    +
  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. +
  3. webkit-text-fill-color: transparent fills the text with a transparent color.
  4. +
  5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
  6. +
+

Browser support

+
+
+ 90.7% +
+
+

⚠️ Uses non-standard properties.

+ +
+
+

Hairline border

+

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

+

HTML

<div class="hairline-border">text</div>
+
+

CSS

.hairline-border {
+  box-shadow: 0 0 0 1px;
+}
+@media (min-resolution: 2dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.5px;
+  }
+}
+@media (min-resolution: 3dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.33333333px;
+  }
+}
+@media (min-resolution: 4dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.25px;
+  }
+}
+
+

Demo

+
+

Text with a hairline border around it.

+
+ +

Explanation

+
    +
  1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
  2. +
  3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
  4. +
+

Browser Support

+
+
+ 95.0% +
+
+

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

+ +
+

*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

+
+
+

Horizontal and vertical centering

+

Horizontally and vertically centers a child element within a parent element.

+

HTML

<div class="horizontal-and-vertical-centering">
+  <div class="child"></div>
+</div>
+
+

CSS

.horizontal-and-vertical-centering {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+

Demo

+
+
+

Centered content.

+
+
+ +

Explanation

+
    +
  1. display: flex enables flexbox.
  2. +
  3. justify-content: center centers the child horizontally.
  4. +
  5. align-items: center centers the child vertically.
  6. +
+

Browser support

+
+
+ 97.8% +
+
+

⚠️ Needs prefixes for full support.

+ +
+
+

Mouse cursor gradient tracking

+

A hover effect where the gradient follows the mouse cursor.

+

HTML

<button class="mouse-cursor-gradient-tracking">
+  <span>Hover me</span>
+</button>
+
+

CSS

.mouse-cursor-gradient-tracking {
+  position: relative;
+  background: #2379f7;
+  padding: 0.5rem 1rem;
+  font-size: 1.2rem;
+  border: none;
+  color: white;
+  cursor: pointer;
+  outline: none;
+  overflow: hidden;
+}
+.mouse-cursor-gradient-tracking span {
+  position: relative;
+}
+.mouse-cursor-gradient-tracking::before {
+  --size: 0;
+  content: '';
+  position: absolute;
+  left: var(--x);
+  top: var(--y);
+  width: var(--size);
+  height: var(--size);
+  background: radial-gradient(circle closest-side, pink, transparent);
+  transform: translate(-50%, -50%);
+  transition: width .2s ease, height .2s ease;
+}
+.mouse-cursor-gradient-tracking:hover::before {
+  --size: 200px;
+}
+
+

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
+btn.onmousemove = function (e) {
+  var x = e.pageX - btn.offsetLeft
+  var y = e.pageY - btn.offsetTop
+  btn.style.setProperty('--x', x + 'px')
+  btn.style.setProperty('--y', y + 'px')
+}
+
+

Demo

+
+ +
+ + +

Explanation

+

TODO

+

Note!

+

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

+
var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
+var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
+
+

Browser support

+
+
+ 87.2% +
+
+

+
Requires JavaScript
+ ⚠️ Requires JavaScript. +

+ +
+
+

Overflow scroll gradient

+

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

+

HTML

<div class="overflow-scroll-gradient">
+  <div class="overflow-scroll-gradient__scroller">
+    Content to be scrolled
+  </div>
+</div>
+
+

CSS

.overflow-scroll-gradient {
+  position: relative;
+}
+.overflow-scroll-gradient::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  width: 300px;
+  height: 25px;
+  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
+}
+.overflow-scroll-gradient__scroller {
+  overflow-y: scroll;
+  background: white;
+  width: 300px;
+  height: 250px;
+  line-height: 1.2;
+  text-align: center;
+}
+
+

Demo

+
+
+
+ Content to be scrolled +
+
+
+ + +

Explanation

+
    +
  1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  10. +
  11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Popout menu

+

Reveals an interactive popout menu on hover.

+

HTML

<div class="reference">
+  <div class="popout-menu">
+    Popout menu
+  </div>
+</div>
+
+

CSS

.reference {
+  position: relative;
+}
+.popout-menu {
+  position: absolute;
+  visibility: hidden;
+  left: 100%;
+}
+.reference:hover > .popout-menu {
+  visibility: visible;
+}
+
+

Demo

+
+
+
+ Popout menu +
+
+
+ +

Explanation

+
    +
  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. +
  3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  4. +
  5. left: 100% moves the the popout menu 100% of its parent's width from the left.
  6. +
  7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  8. +
  9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, + which shows the popout.
  10. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Pretty text underline

+

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

+

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
+
+

CSS

.pretty-text-underline {
+  display: inline;
+  font-size: 1.25rem;
+  text-shadow: 1px 1px 0 #f5f6f9,
+    -1px 1px 0 #f5f6f9,
+    -1px -1px 0 #f5f6f9,
+    1px -1px 0 #f5f6f9;
+  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
+  background-position: 0 1.04em;
+  background-repeat: repeat-x;
+  background-size: 1px 1px;
+}
+.pretty-text-underline::selection {
+  background-color: rgba(0, 150, 255, 0.3);
+  text-shadow: none;
+}
+
+

Demo

+
+

Pretty text underline without clipping descending letters.

+
+ +

Explanation

+
    +
  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use + a larger px size.
  2. +
  3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  4. +
  5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  6. +
  7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. +
  8. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Shape separator

+

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

+

HTML

<div class="shape-separator"></div>
+
+

CSS

.shape-separator {
+  position: relative;
+  height: 48px;
+}
+.shape-separator::after {
+  content: '';
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
+  position: absolute;
+  width: 100%;
+  height: 24px;
+  bottom: 0;
+}
+
+

Demo

+
+
+
+ +

Explanation

+
    +
  1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. +
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 100% ensures the element stretches the entire width of its parent.
  10. +
  11. height: 24px is the same height as the shape.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 98.0% +
+
+

✅ No caveats.

+ +
+
+

System font stack

+

Uses the native font of the operating system to get close to a native app feel.

+

HTML

<p class="system-font-stack">This text uses the system font.</p>
+
+

CSS

.system-font-stack {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+

Demo

+
+

This text uses the system font.

+
+ +

Explanation

+

The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

+
    +
  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. +
  3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  4. +
  5. Segoe UI is used on Windows 10
  6. +
  7. Roboto is used on Android
  8. +
  9. Oxygen-Sans is used on GNU+Linux
  10. +
  11. Ubuntu is used on Linux
  12. +
  13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  14. +
  15. Arial is a font widely supported by all operating systems
  16. +
  17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
  18. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Triangle

+

Creates a triangle shape with pure CSS.

+

HTML

<div class="triangle"></div>
+
+

CSS

.triangle {
+  width: 0;
+  height: 0;
+  border-top: 20px solid #333;
+  border-left: 20px solid transparent;
+  border-right: 20px solid transparent;
+}
+
+

Demo

+
+
+
+
+
+
+
+
+
+ +

Explanation

+

+ View this link for a detailed explanation. +

+

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

+

Experiment with the px values to change the proportion of the triangle.

+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Truncate text

+

If the text is longer than one line, it will be truncated and end with an ellipsis ....

+

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
+
+

CSS

.truncate-text {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+

Demo

+
+

+ This text will be truncated if it exceeds 200px in width. +

+
+ +

Explanation

+
    +
  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. +
  3. white-space: nowrap prevents the text from exceeding one line in height.
  4. +
  5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  6. +
+

Browser support

+
+
+ 98.1% +
+
+

✅ No caveats.

+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png b/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.css b/docs/4d4edbda57043aeeabeac31d2dd12d0d.css index 269155a08..47a1a17be 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.css +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.css @@ -6,4 +6,4 @@ * @author Jonathan Suh @jonsuh * @site https://jonsuh.com/hamburgers * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index f88d4fadf..f54100dd2 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],14:[function(require,module,exports) { +},{}],16:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); },{}],15:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};!function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); },{}],13:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":14,"../deps/utils":15}],12:[function(require,module,exports) { +},{"../deps/jump":16,"../deps/utils":15}],12:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { +},{"../deps/jump":16,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[7]) \ No newline at end of file +},{"normalize.css":18,"prismjs":19,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[7]) \ No newline at end of file diff --git a/src/css/components/sidebar.scss b/src/css/components/sidebar.scss index 356225efe..78bd98709 100644 --- a/src/css/components/sidebar.scss +++ b/src/css/components/sidebar.scss @@ -31,6 +31,7 @@ visibility: hidden; opacity: 0; overflow-y: auto; + -webkit-overflow-scrolling: touch; max-height: 378px; margin-top: 44px; box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); diff --git a/src/js/deps/utils.js b/src/js/deps/utils.js index b3174e437..bc16eef8e 100644 --- a/src/js/deps/utils.js +++ b/src/js/deps/utils.js @@ -3,6 +3,13 @@ export const selectAll = s => [].slice.call(document.querySelectorAll(s)) export const scrollY = () => window.scrollY || window.pageYOffset export const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b +/* +* Make iOS behave normally. +*/ +if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { + document.body.style.cursor = 'pointer' +} + /* * A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font * (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. From ea92839a0061403f9dd6d3168a426ca145086ea4 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 09:08:12 +1000 Subject: [PATCH 011/561] Remove dist/ --- dist/4d4edbda57043aeeabeac31d2dd12d0d.css | 1620 -------------------- dist/4d4edbda57043aeeabeac31d2dd12d0d.js | 1479 ------------------ dist/4d4edbda57043aeeabeac31d2dd12d0d.map | 1 - dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png | Bin 35911 -> 0 bytes dist/b083f39334722c9edc40c6bf09cb7190.html | 991 ------------ dist/cf2ed1ce6be4ba59eed1079db594cc6e.png | Bin 2628 -> 0 bytes 6 files changed, 4091 deletions(-) delete mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.css delete mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.js delete mode 100644 dist/4d4edbda57043aeeabeac31d2dd12d0d.map delete mode 100644 dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png delete mode 100644 dist/b083f39334722c9edc40c6bf09cb7190.html delete mode 100644 dist/cf2ed1ce6be4ba59eed1079db594cc6e.png diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css b/dist/4d4edbda57043aeeabeac31d2dd12d0d.css deleted file mode 100644 index 3a01d8859..000000000 --- a/dist/4d4edbda57043aeeabeac31d2dd12d0d.css +++ /dev/null @@ -1,1620 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * 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; -} - -/* Grouping content - ========================================================================== */ - -/** - * 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 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 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 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * 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; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * 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; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * 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; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 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 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -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 in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 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 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} -code[class*='language-'], -pre[class*='language-'] { - color: rgb(50, 75, 100); - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 2; - font-size: 1rem; - -webkit-overflow-scrolling: touch; - margin: 0; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*='language-']::-moz-selection, -pre[class*='language-'] ::-moz-selection, -code[class*='language-']::-moz-selection, -code[class*='language-'] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*='language-']::selection, -pre[class*='language-'] ::selection, -code[class*='language-']::selection, -code[class*='language-'] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*='language-'], - pre[class*='language-'] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*='language-'] { - overflow: auto; - padding: 0.75rem 1.25rem; -} - -pre.is-option { - margin: 0; - padding: 0; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: #f5f6f9; - border-radius: 0.25rem; -} - -/* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8ca2d3; -} - -.token.selector, -.token.attr-name { - color: #da7800; -} - -.token.punctuation { - color: #93a0c7; -} - -.namespace { - opacity: 0.7; -} - -.token.tag { - color: #e22f70; -} - -.token.property, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #0087ca; -} - -.token.string, -.language-css .token.string, -.token.url, -.token.attr-value, -.token.char, -.token.builtin, -.token.inserted { - color: #008a7e; -} - -.token.operator, -.token.entity, -.style .token.string { - color: #f53737; -} - -.token.important, -.token.atrule, -.token.keyword { - color: #7552ff; -} - -.token.function { - color: #396dff; -} - -.token.regex, -.token.variable { - color: #00a8d4; -} - -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} -html { - font-size: 0.95rem; } - -body { - font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; - background: #f6f7fd; - color: #324b64; - line-height: 1.5; } - -a { - color: #157bda; - text-decoration: none; - word-wrap: break-word; - overflow-wrap: break-word; } - a:hover { - color: #0090ff; } - -hr { - border: 0; - border-top: 1px solid rgba(0, 32, 128, 0.1); } - -ul, -ol { - padding-left: 1.25rem; } - -.container { - max-width: 1000px; - padding: 0 2%; - margin: 0 auto; } - -.main > .container { - padding: 0; } - -@media (min-width: 579px) { - .main > .container { - padding: 0 2%; } } - -@media (min-width: 768px) { - html { - font-size: 1rem; } } - -@media (min-width: 992px) { - .content-wrapper { - margin-left: 200px; } } - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */ -.hamburger { - padding: 1rem; - display: inline-block; - cursor: pointer; - transition-property: opacity, filter; - transition-duration: 0.15s; - transition-timing-function: linear; - font: inherit; - color: inherit; - text-transform: none; - background-color: transparent; - border: 0; - margin: 0; - overflow: visible; - outline: 0; } - -.hamburger:hover { - opacity: 0.7; } - -.hamburger-box { - width: 40px; - height: 20px; - display: inline-block; - position: relative; } - -.hamburger-inner { - display: block; - top: 50%; } - -.hamburger-inner, -.hamburger-inner::before, -.hamburger-inner::after { - width: 36px; - height: 2px; - background-color: #e3f5ff; - border-radius: 4px; - position: absolute; - transition-property: transform; - transition-duration: 0.15s; - transition-timing-function: ease; } - -.hamburger-inner::before, -.hamburger-inner::after { - content: ''; - display: block; } - -.hamburger-inner::before { - top: -10px; } - -.hamburger-inner::after { - bottom: -10px; } - -/* - * 3DX - */ -.hamburger--3dx .hamburger-box { - perspective: 80px; } - -.hamburger--3dx .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx .hamburger-inner::before, -.hamburger--3dx .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(180deg); } - -.hamburger--3dx.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DX Reverse - */ -.hamburger--3dx-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dx-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r .hamburger-inner::before, -.hamburger--3dx-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(-180deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY - */ -.hamburger--3dy .hamburger-box { - perspective: 80px; } - -.hamburger--3dy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy .hamburger-inner::before, -.hamburger--3dy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(-180deg); } - -.hamburger--3dy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY Reverse - */ -.hamburger--3dy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r .hamburger-inner::before, -.hamburger--3dy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY - */ -.hamburger--3dxy .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy .hamburger-inner::before, -.hamburger--3dxy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg); } - -.hamburger--3dxy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY Reverse - */ -.hamburger--3dxy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r .hamburger-inner::before, -.hamburger--3dxy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * Arrow - */ -.hamburger--arrow.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrow.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Arrow Right - */ -.hamburger--arrow-r.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrow-r.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Alt - */ -.hamburger--arrowalt .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Alt Right - */ -.hamburger--arrowalt-r .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Turn - */ -.hamburger--arrowturn.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrowturn.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Turn Right - */ -.hamburger--arrowturn-r.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Boring - */ -.hamburger--boring .hamburger-inner, -.hamburger--boring .hamburger-inner::before, -.hamburger--boring .hamburger-inner::after { - transition-property: none; } - -.hamburger--boring.is-active .hamburger-inner { - transform: rotate(45deg); } - -.hamburger--boring.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--boring.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -/* - * Collapse - */ -.hamburger--collapse .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Collapse Reverse - */ -.hamburger--collapse-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse-r .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Elastic - */ -.hamburger--elastic .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(135deg); - transition-delay: 0.075s; } - -.hamburger--elastic.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-270deg); - transition-delay: 0.075s; } - -/* - * Elastic Reverse - */ -.hamburger--elastic-r .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic-r .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-135deg); - transition-delay: 0.075s; } - -.hamburger--elastic-r.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(270deg); - transition-delay: 0.075s; } - -/* - * Emphatic - */ -.hamburger--emphatic { - overflow: hidden; } - -.hamburger--emphatic .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic.is-active .hamburger-inner::before { - left: -80px; - top: -80px; - transform: translate3d(80px, 80px, 0) rotate(45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic.is-active .hamburger-inner::after { - right: -80px; - top: -80px; - transform: translate3d(-80px, 80px, 0) rotate(-45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Emphatic Reverse - */ -.hamburger--emphatic-r { - overflow: hidden; } - -.hamburger--emphatic-r .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic-r.is-active .hamburger-inner::before { - left: -80px; - top: 80px; - transform: translate3d(80px, -80px, 0) rotate(-45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic-r.is-active .hamburger-inner::after { - right: -80px; - top: 80px; - transform: translate3d(-80px, -80px, 0) rotate(45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Minus - */ -.hamburger--minus .hamburger-inner::before, -.hamburger--minus .hamburger-inner::after { - transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } - -.hamburger--minus.is-active .hamburger-inner::before, -.hamburger--minus.is-active .hamburger-inner::after { - opacity: 0; - transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } - -.hamburger--minus.is-active .hamburger-inner::before { - top: 0; } - -.hamburger--minus.is-active .hamburger-inner::after { - bottom: 0; } - -/* - * Slider - */ -.hamburger--slider .hamburger-inner { - top: 2px; } - -.hamburger--slider .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider .hamburger-inner::after { - top: 20px; } - -.hamburger--slider.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--slider.is-active .hamburger-inner::before { - transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-90deg); } - -/* - * Slider Reverse - */ -.hamburger--slider-r .hamburger-inner { - top: 2px; } - -.hamburger--slider-r .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider-r .hamburger-inner::after { - top: 20px; } - -.hamburger--slider-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -.hamburger--slider-r.is-active .hamburger-inner::before { - transform: rotate(45deg) translate3d(5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(90deg); } - -/* - * Spin - */ -.hamburger--spin .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin.is-active .hamburger-inner { - transform: rotate(225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spin Reverse - */ -.hamburger--spin-r .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin-r .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r.is-active .hamburger-inner { - transform: rotate(-225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spring - */ -.hamburger--spring .hamburger-inner { - top: 2px; - transition: background-color 0s 0.13s linear; } - -.hamburger--spring .hamburger-inner::before { - top: 10px; - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring .hamburger-inner::after { - top: 20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring.is-active .hamburger-inner { - transition-delay: 0.22s; - background-color: transparent; } - -.hamburger--spring.is-active .hamburger-inner::before { - top: 0; - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--spring.is-active .hamburger-inner::after { - top: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -/* - * Spring Reverse - */ -.hamburger--spring-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } - -.hamburger--spring-r .hamburger-inner::before { - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spring-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } - -.hamburger--spring-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand - */ -.hamburger--stand .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand.is-active .hamburger-inner { - transform: rotate(90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand Reverse - */ -.hamburger--stand-r .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand-r .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r.is-active .hamburger-inner { - transform: rotate(-90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Squeeze - */ -.hamburger--squeeze .hamburger-inner { - transition-duration: 0.075s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze .hamburger-inner::before { - transition: top 0.075s 0.12s ease, opacity 0.075s ease; } - -.hamburger--squeeze .hamburger-inner::after { - transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze.is-active .hamburger-inner { - transform: rotate(45deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--squeeze.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.075s ease, opacity 0.075s 0.12s ease; } - -.hamburger--squeeze.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Vortex - */ -.hamburger--vortex .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex .hamburger-inner::before, -.hamburger--vortex .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex.is-active .hamburger-inner { - transform: rotate(765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex.is-active .hamburger-inner::before, -.hamburger--vortex.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); } - -/* - * Vortex Reverse - */ -.hamburger--vortex-r .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r .hamburger-inner::before, -.hamburger--vortex-r .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex-r .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex-r .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex-r.is-active .hamburger-inner { - transform: rotate(-765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r.is-active .hamburger-inner::before, -.hamburger--vortex-r.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -.sidebar { - background: #202e4e; - position: fixed; - z-index: 2; - width: 100%; - height: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__menu { - position: absolute; - font-weight: bold; - border: none; - text-align: left; - text-transform: uppercase; - left: 0; - top: 0; - padding: 0.75rem 1rem; - outline: 0; } - .sidebar__menu-icon { - height: 24px; } - .sidebar__links { - background: #202e4e; - overflow-y: auto; - transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); - transform-origin: 0% 0%; - transform: rotateX(-90deg); - visibility: hidden; - opacity: 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - max-height: 378px; - margin-top: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__links.is-active { - transform: rotateX(0); - visibility: visible; - opacity: 1; } - .sidebar__link { - display: block; - color: #e3f5ff; - padding: 0.5rem 0.75rem; - transition: all 0.1s ease-out; - border-left: 2px solid #576a85; - margin: 0.5rem; - font-weight: 500; - font-size: 0.95rem; } - .sidebar__link:hover { - color: #88f4ff; - background: rgba(255, 255, 255, 0.1); - border-color: pink; } - -@media (min-width: 992px) { - .sidebar { - left: 0; - top: 0; - bottom: 0; - width: 15%; - max-width: 250px; - min-width: 200px; - height: 100%; - background: linear-gradient(-30deg, #2a3d67, #14264e); - box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); - overflow-y: auto; - color: white; } - .sidebar::-webkit-scrollbar-track { - background-color: rgba(0, 0, 0, 0.6); } - .sidebar::-webkit-scrollbar { - width: 10px; - background-color: #4b6191; } - .sidebar::-webkit-scrollbar-thumb { - background-color: #4b6191; } - .sidebar__links { - background: none; - box-shadow: none; - visibility: visible; - opacity: 1; - transform: rotateX(0); - margin-top: 0; - max-height: none; } - .sidebar__menu { - display: none; } } - -.header { - position: relative; - padding: 5rem 1rem 4rem; - background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); - color: white; - margin-bottom: 2rem; - text-align: center; - overflow: hidden; - z-index: 1; } - .header::before { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); - width: 150%; - height: 150%; - top: 0; - left: 0; - opacity: 0.1; - z-index: -1; } - .header::after { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); - background-size: 24px 24px; - width: 100%; - left: 0; - height: 24px; - bottom: -1px; } - .header__logo { - height: 146px; - user-select: none; } - .header__heading { - font-weight: 200; - font-size: 3rem; - margin: 1rem 0; - line-height: 1.2; } - .header__description { - font-size: 1.5rem; - max-width: 600px; - margin: 0 auto 1rem; - font-weight: 300; - letter-spacing: 0.4px; } - .header__css { - background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-size: 4rem; } - .header__github-button { - color: white; } - -@media (min-width: 579px) { - .header { - padding: 6rem 0 5rem; } - .header__heading { - font-size: 3.75rem; } } - -@media (min-width: 992px) { - .header { - padding: 2.5rem 0 5rem; } } - -.snippet { - position: relative; - background: white; - padding: 2rem 5%; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; - border-radius: 0.25rem; - font-size: 1.1rem; - margin-bottom: 1.5rem; } - .snippet h3 { - font-size: 2rem; - padding: 0.5rem 0; - border-bottom: 1px solid rgba(0, 32, 128, 0.1); - margin-bottom: 1.25rem; - margin-top: 0; - line-height: 1.3; } - .snippet code:not([class*='lang']) { - background: #fcfaff; - border: 1px solid #e2ddff; - color: #4b00da; - border-radius: 0.15rem; - font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 0.9rem; - padding: 0.2rem 0.4rem; - margin: 0 0.1rem; } - .snippet ol { - margin-top: 0.5rem; } - .snippet ol > li { - margin-bottom: 0.5rem; } - .snippet > p { - margin-top: 0.5rem; } - .snippet h4 { - display: inline-block; - margin: 1rem 0 0.5rem; - line-height: 2; - padding: 0 0.5rem; - border-radius: 3px; - font-size: 0.9rem; - text-transform: uppercase; - background: #333; - border: 1px solid #c6d6ea; - border-bottom-color: #b3c9e3; - background: white; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } - .snippet h4[data-type='HTML'] { - color: white; - border: none; - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - .snippet h4[data-type='CSS'] { - color: white; - border: none; - background: linear-gradient(135deg, #7983ff, #5f9de9); } - .snippet h4[data-type='JavaScript'] { - color: white; - border: none; - background: linear-gradient(135deg, #ffb000, #f58818); } - .snippet__browser-support { - display: inline-block; - font-size: 2rem; - font-weight: 200; - line-height: 1; - margin: 0.5rem 0; } - .snippet__subheading.is-html { - color: #e22f70; } - .snippet__subheading.is-css { - color: #0a91d4; } - .snippet__subheading.is-explanation { - color: #4b00da; } - .snippet__support-note { - color: #9fa5b5; - font-weight: bold; } - .snippet__requires-javascript { - position: absolute; - background: red; - background: linear-gradient(145deg, #ff003b, #ff4b39); - color: white; - padding: 0.25rem 0.5rem; - font-size: 0.9rem; - transform: rotate(20deg); - font-weight: bold; - top: 1rem; - right: 0; } - -.snippet-demo { - background: #f5f6f9; - border-radius: 0.25rem; - padding: 0.75rem 1.25rem; } - .snippet-demo.is-distinct { - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - -@media (min-width: 768px) { - .snippet__requires-javascript { - right: -0.5rem; } } - -.back-to-top-button { - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - font-size: 2rem; - font-weight: bold; - background: white; - width: 4rem; - height: 4rem; - position: fixed; - right: 2rem; - bottom: 2rem; - border-radius: 50%; - user-select: none; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); - transition: all 0.2s ease-out; - visibility: hidden; - opacity: 0; - z-index: 1; - border: 1px solid rgba(0, 32, 128, 0.1); - outline: 0; } - .back-to-top-button:hover, .back-to-top-button:focus { - transform: scale(1.1); - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); - color: #35a8ff; } - .back-to-top-button:focus { - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; } - .back-to-top-button.is-visible { - visibility: visible; - opacity: 1; } diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js b/dist/4d4edbda57043aeeabeac31d2dd12d0d.js deleted file mode 100644 index 9c58f8c04..000000000 --- a/dist/4d4edbda57043aeeabeac31d2dd12d0d.js +++ /dev/null @@ -1,1479 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -// eslint-disable-next-line no-global-assign -require = (function (modules, cache, entry) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof require === "function" && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof require === "function" && require; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - - var module = cache[name] = new newRequire.Module(name); - - modules[name][0].call(module.exports, localRequire, module, module.exports); - } - - return cache[name].exports; - - function localRequire(x){ - return newRequire(localRequire.resolve(x)); - } - - function resolve(x){ - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - // Override the current require with this new one - return newRequire; -})({19:[function(require,module,exports) { -var bundleURL = null; -function getBundleURLCached() { - if (!bundleURL) { - bundleURL = getBundleURL(); - } - - return bundleURL; -} - -function getBundleURL() { - // Attempt to find the URL of the current script and use that as the base URL - try { - throw new Error(); - } catch (err) { - var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); - if (matches) { - return getBaseURL(matches[0]); - } - } - - return '/'; -} - -function getBaseURL(url) { - return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; -} - -exports.getBundleURL = getBundleURLCached; -exports.getBaseURL = getBaseURL; -},{}],15:[function(require,module,exports) { -var bundle = require('./bundle-url'); - -function updateLink(link) { - var newLink = link.cloneNode(); - newLink.onload = function () { - link.remove(); - }; - newLink.href = link.href.split('?')[0] + '?' + Date.now(); - link.parentNode.insertBefore(newLink, link.nextSibling); -} - -var cssTimeout = null; -function reloadCSS() { - if (cssTimeout) { - return; - } - - cssTimeout = setTimeout(function () { - var links = document.querySelectorAll('link[rel="stylesheet"]'); - for (var i = 0; i < links.length; i++) { - if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { - updateLink(links[i]); - } - } - - cssTimeout = null; - }, 50); -} - -module.exports = reloadCSS; -},{"./bundle-url":19}],21:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":15}],20:[function(require,module,exports) { -var global = (1,eval)("this"); - -/* ********************************************** - Begin prism-core.js -********************************************** */ - -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * MIT license http://www.opensource.org/licenses/mit-license.php/ - * @author Lea Verou http://lea.verou.me - */ - -var Prism = (function(){ - -// Private helper vars -var lang = /\blang(?:uage)?-(\w+)\b/i; -var uniqueId = 0; - -var _ = _self.Prism = { - manual: _self.Prism && _self.Prism.manual, - disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - util: { - encode: function (tokens) { - if (tokens instanceof Token) { - return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); - } else if (_.util.type(tokens) === 'Array') { - return tokens.map(_.util.encode); - } else { - return tokens.replace(/&/g, '&').replace(/ text.length) { - // Something went terribly wrong, ABORT, ABORT! - return; - } - - if (str instanceof Token) { - continue; - } - - pattern.lastIndex = 0; - - var match = pattern.exec(str), - delNum = 1; - - // Greedy patterns can override/remove up to two previously matched tokens - if (!match && greedy && i != strarr.length - 1) { - pattern.lastIndex = pos; - match = pattern.exec(text); - if (!match) { - break; - } - - var from = match.index + (lookbehind ? match[1].length : 0), - to = match.index + match[0].length, - k = i, - p = pos; - - for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { - p += strarr[k].length; - // Move the index i to the element in strarr that is closest to from - if (from >= p) { - ++i; - pos = p; - } - } - - /* - * If strarr[i] is a Token, then the match starts inside another Token, which is invalid - * If strarr[k - 1] is greedy we are in conflict with another greedy pattern - */ - if (strarr[i] instanceof Token || strarr[k - 1].greedy) { - continue; - } - - // Number of tokens to delete and replace with the new match - delNum = k - i; - str = text.slice(pos, p); - match.index -= pos; - } - - if (!match) { - if (oneshot) { - break; - } - - continue; - } - - if(lookbehind) { - lookbehindLength = match[1].length; - } - - var from = match.index + lookbehindLength, - match = match[0].slice(lookbehindLength), - to = from + match.length, - before = str.slice(0, from), - after = str.slice(to); - - var args = [i, delNum]; - - if (before) { - ++i; - pos += before.length; - args.push(before); - } - - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); - - args.push(wrapped); - - if (after) { - args.push(after); - } - - Array.prototype.splice.apply(strarr, args); - - if (delNum != 1) - _.matchGrammar(text, strarr, grammar, i, pos, true, token); - - if (oneshot) - break; - } - } - } - }, - - tokenize: function(text, grammar, language) { - var strarr = [text]; - - var rest = grammar.rest; - - if (rest) { - for (var token in rest) { - grammar[token] = rest[token]; - } - - delete grammar.rest; - } - - _.matchGrammar(text, strarr, grammar, 0, 0, false); - - return strarr; - }, - - hooks: { - all: {}, - - add: function (name, callback) { - var hooks = _.hooks.all; - - hooks[name] = hooks[name] || []; - - hooks[name].push(callback); - }, - - run: function (name, env) { - var callbacks = _.hooks.all[name]; - - if (!callbacks || !callbacks.length) { - return; - } - - for (var i=0, callback; callback = callbacks[i++];) { - callback(env); - } - } - } -}; - -var Token = _.Token = function(type, content, alias, matchedStr, greedy) { - this.type = type; - this.content = content; - this.alias = alias; - // Copy of the full string this token was created from - this.length = (matchedStr || "").length|0; - this.greedy = !!greedy; -}; - -Token.stringify = function(o, language, parent) { - if (typeof o == 'string') { - return o; - } - - if (_.util.type(o) === 'Array') { - return o.map(function(element) { - return Token.stringify(element, language, o); - }).join(''); - } - - var env = { - type: o.type, - content: Token.stringify(o.content, language, parent), - tag: 'span', - classes: ['token', o.type], - attributes: {}, - language: language, - parent: parent - }; - - if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); - } - - _.hooks.run('wrap', env); - - var attributes = Object.keys(env.attributes).map(function(name) { - return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; - }).join(' '); - - return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; - -}; - -if (!_self.document) { - if (!_self.addEventListener) { - // in Node.js - return _self.Prism; - } - - if (!_.disableWorkerMessageHandler) { - // In worker - _self.addEventListener('message', function (evt) { - var message = JSON.parse(evt.data), - lang = message.language, - code = message.code, - immediateClose = message.immediateClose; - - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) { - _self.close(); - } - }, false); - } - - return _self.Prism; -} - -//Get current script and highlight -var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); - -if (script) { - _.filename = script.src; - - if (!_.manual && !script.hasAttribute('data-manual')) { - if(document.readyState !== "loading") { - if (window.requestAnimationFrame) { - window.requestAnimationFrame(_.highlightAll); - } else { - window.setTimeout(_.highlightAll, 16); - } - } - else { - document.addEventListener('DOMContentLoaded', _.highlightAll); - } - } -} - -return _self.Prism; - -})(); - -if (typeof module !== 'undefined' && module.exports) { - module.exports = Prism; -} - -// hack for components to work correctly in node.js -if (typeof global !== 'undefined') { - global.Prism = Prism; -} - - -/* ********************************************** - Begin prism-markup.js -********************************************** */ - -Prism.languages.markup = { - 'comment': //, - 'prolog': /<\?[\s\S]+?\?>/, - 'doctype': //i, - 'cdata': //i, - 'tag': { - pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, - inside: { - 'tag': { - pattern: /^<\/?[^\s>\/]+/i, - inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } - }, - 'attr-value': { - pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, - inside: { - 'punctuation': [ - /^=/, - { - pattern: /(^|[^\\])["']/, - lookbehind: true - } - ] - } - }, - 'punctuation': /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { - 'namespace': /^[^\s>\/:]+:/ - } - } - - } - }, - 'entity': /&#?[\da-z]{1,8};/i -}; - -Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = - Prism.languages.markup['entity']; - -// Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add('wrap', function(env) { - - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } -}); - -Prism.languages.xml = Prism.languages.markup; -Prism.languages.html = Prism.languages.markup; -Prism.languages.mathml = Prism.languages.markup; -Prism.languages.svg = Prism.languages.markup; - - -/* ********************************************** - Begin prism-css.js -********************************************** */ - -Prism.languages.css = { - 'comment': /\/\*[\s\S]*?\*\//, - 'atrule': { - pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, - inside: { - 'rule': /@[\w-]+/ - // See rest below - } - }, - 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, - 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, - 'string': { - pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, - 'important': /\B!important\b/i, - 'function': /[-a-z0-9]+(?=\()/i, - 'punctuation': /[(){};:]/ -}; - -Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'style': { - pattern: /()[\s\S]*?(?=<\/style>)/i, - lookbehind: true, - inside: Prism.languages.css, - alias: 'language-css', - greedy: true - } - }); - - Prism.languages.insertBefore('inside', 'attr-value', { - 'style-attr': { - pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, - inside: { - 'attr-name': { - pattern: /^\s*style/i, - inside: Prism.languages.markup.tag.inside - }, - 'punctuation': /^\s*=\s*['"]|['"]\s*$/, - 'attr-value': { - pattern: /.+/i, - inside: Prism.languages.css - } - }, - alias: 'language-css' - } - }, Prism.languages.markup.tag); -} - -/* ********************************************** - Begin prism-clike.js -********************************************** */ - -Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, - lookbehind: true, - 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': /[a-z0-9_]+(?=\()/i, - 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, - 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, - 'punctuation': /[{}[\];(),.:]/ -}; - - -/* ********************************************** - Begin prism-javascript.js -********************************************** */ - -Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(?: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|var|void|while|with|yield)\b/, - 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, - // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) - 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, - 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ -}); - -Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, - lookbehind: true, - greedy: true - }, - // This must be declared before keyword because we use "function" inside the look-forward - 'function-variable': { - pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, - alias: 'function' - } -}); - -Prism.languages.insertBefore('javascript', 'string', { - 'template-string': { - pattern: /`(?:\\[\s\S]|[^\\`])*`/, - greedy: true, - inside: { - 'interpolation': { - pattern: /\$\{[^}]+\}/, - inside: { - 'interpolation-punctuation': { - pattern: /^\$\{|\}$/, - alias: 'punctuation' - }, - rest: Prism.languages.javascript - } - }, - 'string': /[\s\S]+/ - } - } -}); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'script': { - pattern: /()[\s\S]*?(?=<\/script>)/i, - lookbehind: true, - inside: Prism.languages.javascript, - alias: 'language-javascript', - greedy: true - } - }); -} - -Prism.languages.js = Prism.languages.javascript; - - -/* ********************************************** - Begin prism-file-highlight.js -********************************************** */ - -(function () { - if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { - return; - } - - self.Prism.fileHighlight = function() { - - var Extensions = { - 'js': 'javascript', - 'py': 'python', - 'rb': 'ruby', - 'ps1': 'powershell', - 'psm1': 'powershell', - 'sh': 'bash', - 'bat': 'batch', - 'h': 'c', - 'tex': 'latex' - }; - - Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { - var src = pre.getAttribute('data-src'); - - var language, parent = pre; - var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; - while (parent && !lang.test(parent.className)) { - parent = parent.parentNode; - } - - if (parent) { - language = (pre.className.match(lang) || [, ''])[1]; - } - - if (!language) { - var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; - language = Extensions[extension] || extension; - } - - var code = document.createElement('code'); - code.className = 'language-' + language; - - pre.textContent = ''; - - code.textContent = 'Loading…'; - - pre.appendChild(code); - - var xhr = new XMLHttpRequest(); - - xhr.open('GET', src, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - - if (xhr.status < 400 && xhr.responseText) { - code.textContent = xhr.responseText; - - Prism.highlightElement(code); - } - else if (xhr.status >= 400) { - code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; - } - else { - code.textContent = '✖ Error: File does not exist or is empty'; - } - } - }; - - xhr.send(null); - }); - - }; - - document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); - -})(); - -},{}],10:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":15}],9:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":15}],11:[function(require,module,exports) { -var e = Element.prototype; -if (!e.matches) { - e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; -} -if (!e.closest) { - e.closest = function (s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; -} -},{}],16:[function(require,module,exports) { -var global = (1,eval)("this"); -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -;(function (global, factory) { - (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); -})(this, function () { - 'use strict'; - - // Robert Penner's easeInOutQuad - - // find the rest of his easing functions here: http://robertpenner.com/easing/ - // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js - - var easeInOutQuad = function easeInOutQuad(t, b, c, d) { - t /= d / 2; - if (t < 1) return c / 2 * t * t + b; - t--; - return -c / 2 * (t * (t - 2) - 1) + b; - }; - - var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { - return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - }; - - var jumper = function jumper() { - // private variable cache - // no variables are created during a jump, preventing memory leaks - - var element = void 0; // element to scroll to (node) - - var start = void 0; // where scroll starts (px) - var stop = void 0; // where scroll stops (px) - - var offset = void 0; // adjustment from the stop position (px) - var easing = void 0; // easing function (function) - var a11y = void 0; // accessibility support flag (boolean) - - var distance = void 0; // distance of scroll (px) - var duration = void 0; // scroll duration (ms) - - var timeStart = void 0; // time scroll started (ms) - var timeElapsed = void 0; // time spent scrolling thus far (ms) - - var next = void 0; // next scroll position (px) - - var callback = void 0; // to call when done scrolling (function) - - // scroll position helper - - function location() { - return window.scrollY || window.pageYOffset; - } - - // element offset helper - - function top(element) { - return element.getBoundingClientRect().top + start; - } - - // rAF loop helper - - function loop(timeCurrent) { - // store time scroll started, if not started already - if (!timeStart) { - timeStart = timeCurrent; - } - - // determine time spent scrolling so far - timeElapsed = timeCurrent - timeStart; - - // calculate next scroll position - next = easing(timeElapsed, start, distance, duration); - - // scroll to it - window.scrollTo(0, next); - - // check progress - timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop - : done(); // scrolling is done - } - - // scroll finished helper - - function done() { - // account for rAF time rounding inaccuracies - window.scrollTo(0, start + distance); - - // if scrolling to an element, and accessibility is enabled - if (element && a11y) { - // add tabindex indicating programmatic focus - element.setAttribute('tabindex', '-1'); - - // focus the element - element.focus(); - } - - // if it exists, fire the callback - if (typeof callback === 'function') { - callback(); - } - - // reset time for next jump - timeStart = false; - } - - // API - - function jump(target) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - // resolve options, or use defaults - duration = options.duration || 1000; - offset = options.offset || 0; - callback = options.callback; // "undefined" is a suitable default, and won't be called - easing = options.easing || easeInOutQuad; - a11y = options.a11y || false; - - // cache starting position - start = location(); - - // resolve target - switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { - // scroll from current position - case 'number': - element = undefined; // no element to scroll to - a11y = false; // make sure accessibility is off - stop = start + target; - break; - - // scroll to element (node) - // bounding rect is relative to the viewport - case 'object': - element = target; - stop = top(element); - break; - - // scroll to element (selector) - // bounding rect is relative to the viewport - case 'string': - element = document.querySelector(target); - stop = top(element); - break; - } - - // resolve scroll distance, accounting for offset - distance = stop - start + offset; - - // resolve duration - switch (_typeof(options.duration)) { - // number in ms - case 'number': - duration = options.duration; - break; - - // function passed the distance of the scroll - case 'function': - duration = options.duration(distance); - break; - } - - // start the loop - window.requestAnimationFrame(loop); - } - - // expose only the jump method - return jump; - }; - - // export singleton - - var singleton = jumper(); - - return function () { - var scrolling = void 0; - var end = function end() { - return scrolling = false; - }; - return function (to) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (scrolling) return; - var scrollY = window.scrollY || window.pageYOffset; - if (to !== '.header') location.hash = to; - scroll(0, scrollY); - scrolling = true; - setTimeout(end, options.duration || 0); - return singleton(to, options); - }; - }(); -}); -},{}],17:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var select = exports.select = function select(s) { - return document.querySelector(s); -}; -var selectAll = exports.selectAll = function selectAll(s) { - return [].slice.call(document.querySelectorAll(s)); -}; -var scrollY = exports.scrollY = function scrollY() { - return window.scrollY || window.pageYOffset; -}; -var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { - return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; -}; - -/* -* Make iOS behave normally. -*/ -if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { - document.body.style.cursor = 'pointer'; -} - -/* -* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font -* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. -* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. -* Must be applied to all browsers for now. -*/ -;(function () { - var ua = navigator.userAgent; - - // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica - var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; - - // Chrome v64 and FF v58 fix the issue - var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; - - var allEls = [].slice.call(document.querySelectorAll('*')); - - if (isRelevantMacOS && isAffectedBrowser) { - document.documentElement.style.letterSpacing = '-0.3px'; - allEls.forEach(function (el) { - var fontSize = parseFloat(getComputedStyle(el).fontSize); - if (fontSize >= 20) el.style.letterSpacing = '0.3px'; - }); - } else if (isRelevantMacOS && !isAffectedBrowser) { - // Italics fix - allEls.forEach(function (el) { - var _getComputedStyle = getComputedStyle(el), - fontSize = _getComputedStyle.fontSize, - fontStyle = _getComputedStyle.fontStyle; - - if (fontStyle === 'italic') { - el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; - } - }); - } -})(); -},{}],12:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var menu = (0, _utils.select)('.hamburger'); -var links = (0, _utils.select)('.sidebar__links'); -var ACTIVE_CLASS = 'is-active'; - -var toggle = function toggle() { - return [menu, links].forEach(function (el) { - return el.classList.toggle(ACTIVE_CLASS); - }); -}; - -menu.addEventListener('click', toggle); - -links.addEventListener('click', function (e) { - setTimeout(toggle, 40); - if (e.target.classList.contains('sidebar__link')) { - e.preventDefault(); - (0, _jump2.default)(e.target.getAttribute('href'), { - duration: 750, - offset: window.innerWidth <= 768 ? -64 : -32, - easing: _utils.easeOutQuint - }); - } -}); - -document.addEventListener('click', function (e) { - if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { - toggle(); - } -}); - -exports.default = { toggle: toggle }; -},{"../deps/jump":16,"../deps/utils":17}],13:[function(require,module,exports) { -'use strict'; - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var backToTopButton = (0, _utils.select)('.back-to-top-button'); - -window.addEventListener('scroll', function () { - backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); -}); -backToTopButton.onclick = function () { - (0, _jump2.default)('.header', { - duration: 750, - easing: _utils.easeOutQuint - }); -}; -},{"../deps/jump":16,"../deps/utils":17}],7:[function(require,module,exports) { -'use strict'; - -require('normalize.css'); - -require('prismjs'); - -require('../css/deps/prism.css'); - -require('../css/index.scss'); - -require('./deps/polyfills'); - -var _Menu = require('./components/Menu'); - -var _Menu2 = _interopRequireDefault(_Menu); - -var _BackToTopButton = require('./components/BackToTopButton'); - -var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -},{"normalize.css":21,"prismjs":20,"../css/deps/prism.css":10,"../css/index.scss":9,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}],30:[function(require,module,exports) { - -var global = (1, eval)('this'); -var OldModule = module.bundle.Module; -function Module(moduleName) { - OldModule.call(this, moduleName); - this.hot = { - accept: function (fn) { - this._acceptCallback = fn || function () {}; - }, - dispose: function (fn) { - this._disposeCallback = fn; - } - }; -} - -module.bundle.Module = Module; - -var parent = module.bundle.parent; -if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { - var hostname = '' || location.hostname; - var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + '57120' + '/'); - ws.onmessage = function (event) { - var data = JSON.parse(event.data); - - if (data.type === 'update') { - data.assets.forEach(function (asset) { - hmrApply(global.require, asset); - }); - - data.assets.forEach(function (asset) { - if (!asset.isNew) { - hmrAccept(global.require, asset.id); - } - }); - } - - if (data.type === 'reload') { - ws.close(); - ws.onclose = function () { - location.reload(); - }; - } - - if (data.type === 'error-resolved') { - console.log('[parcel] ✨ Error resolved'); - } - - if (data.type === 'error') { - console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); - } - }; -} - -function getParents(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return []; - } - - var parents = []; - var k, d, dep; - - for (k in modules) { - for (d in modules[k][1]) { - dep = modules[k][1][d]; - if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { - parents.push(+k); - } - } - } - - if (bundle.parent) { - parents = parents.concat(getParents(bundle.parent, id)); - } - - return parents; -} - -function hmrApply(bundle, asset) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (modules[asset.id] || !bundle.parent) { - var fn = new Function('require', 'module', 'exports', asset.generated.js); - asset.isNew = !modules[asset.id]; - modules[asset.id] = [fn, asset.deps]; - } else if (bundle.parent) { - hmrApply(bundle.parent, asset); - } -} - -function hmrAccept(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (!modules[id] && bundle.parent) { - return hmrAccept(bundle.parent, id); - } - - var cached = bundle.cache[id]; - if (cached && cached.hot._disposeCallback) { - cached.hot._disposeCallback(); - } - - delete bundle.cache[id]; - bundle(id); - - cached = bundle.cache[id]; - if (cached && cached.hot && cached.hot._acceptCallback) { - cached.hot._acceptCallback(); - return true; - } - - return getParents(global.require, id).some(function (id) { - return hmrAccept(global.require, id); - }); -} -},{}]},{},[30,7]) -//# sourceMappingURL=/dist/4d4edbda57043aeeabeac31d2dd12d0d.map \ No newline at end of file diff --git a/dist/4d4edbda57043aeeabeac31d2dd12d0d.map b/dist/4d4edbda57043aeeabeac31d2dd12d0d.map deleted file mode 100644 index 9736dbe58..000000000 --- a/dist/4d4edbda57043aeeabeac31d2dd12d0d.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AGhxBO,IAAM5D,0BAAS,SAATA,MAAS;AHixBtB,AGjxBsB,SAAK/D,SAASuD,aAAT,CAAuBzD,CAAvB,CAAL;AHkxBtB,AGlxBsB,CAAf;AHmxBP,AGlxBO,IAAMkE,gCAAY,SAAZA,SAAY;AHmxBzB,AGnxByB,SAAK,GAAGC,KAAH,CAASC,IAAT,CAAclE,SAASmE,gBAAT,CAA0BrE,CAA1B,CAAd,CAAL;AHoxBzB,AGpxByB,CAAlB;AHqxBP,AGpxBO,IAAMwC,4BAAU,SAAVA,OAAU;AHqxBvB,AGrxBuB,SAAMD,OAAOC,OAAP,IAAkBD,OAAOE,WAA/B;AHsxBvB,AGtxBuB,CAAhB;AHuxBP,AGtxBO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","file":"4d4edbda57043aeeabeac31d2dd12d0d.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file diff --git a/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png b/dist/76f3fcef6c36c4d7c29fc6fcd102dfe3.png deleted file mode 100644 index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35911 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 diff --git a/dist/b083f39334722c9edc40c6bf09cb7190.html b/dist/b083f39334722c9edc40c6bf09cb7190.html deleted file mode 100644 index 660d96588..000000000 --- a/dist/b083f39334722c9edc40c6bf09cb7190.html +++ /dev/null @@ -1,991 +0,0 @@ - - - - - 30 Seconds of CSS - - - - - - -

-
-
-
- -

30 Seconds of CSS

-

- A curated collection of useful CSS snippets you can understand in 30 seconds or less. -

- - - Star -
-
-
-
-
-

Clearfix

-

Ensures that an element self-clears its children.

-

HTML

<div class="clearfix">
-  <div class="floated">float a</div>
-  <div class="floated">float b</div>
-  <div class="floated">float c</div>
-</div>
-
-

CSS

.clearfix::after {
-  content: '';
-  display: table;
-  clear: both;
-}
-.floated {
-  float: left;
-}
-
-

Demo

-
-
-
float a
-
float b
-
float c
-
-
- -

Explanation

-
    -
  1. .clearfix::after defines a pseudo element.
  2. -
  3. content: '' allows the pseudo element to affect layout.
  4. -
  5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
  6. -
-

Browser support

-
-
- 99+% -
-
-

✅ No caveats.

-
-
-

Custom text selection

-

Changes the styling of text selection.

-

HTML

<p class="custom-text-selection">Select some of this text.</p>
-
-

CSS

.custom-text-selection::selection {
-  background: red;
-  color: white;
-}
-
-

Demo

-
-

Select some of this text.

-
- -

Explanation

-

::selection defines a pseudo selector on an element to style text within it when selected.

-

Browser support

-
-
- 84.6% -
-
-

⚠️ Requires prefixes for full support.

- -
-
-

Easing variables

-

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

-

HTML

<div class="easing-variables"></div>
-
-

CSS

:root {
-  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
-  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
-  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
-  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
-  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
-  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
-  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
-  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
-  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
-  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
-  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
-  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
-  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
-  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
-  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
-  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
-  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
-  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
-}
-.easing-variables {
-  width: 50px;
-  height: 50px;
-  background: #333;
-  transition: transform 1s var(--ease-out-quart);
-}
-.easing-variables:hover {
-  transform: rotate(45deg);
-}
-
-

Demo

-
-
Hover
-
- -

Explanation

-

The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

-

Browser support

-
-
- 87.2% -
-
-

✅ No caveats.

- -
-
-

Etched text

-

Creates an effect where text appears to be "etched" or engraved into the background.

-

HTML

<p class="etched-text">I appear etched into the background.</p>
-
-

CSS

.etched-text {
-  text-shadow: 0 2px white;
-  font-size: 1.5rem;
-  font-weight: bold;
-  color: #b8bec5;
-}
-
-

Demo

-
-

I appear etched into the background.

-
- -

Explanation

-

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

-

The background must be darker than the shadow for the effect to work.

-

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

-

Browser support

-
-
- 97.9% -
-
-

✅ No caveats.

- -
-
-

Gradient text

-

Gives text a gradient color.

-

HTML

<p class="gradient-text">Gradient text</p>
-
-

CSS

.gradient-text {
-  background: -webkit-linear-gradient(pink, red);
-  -webkit-text-fill-color: transparent;
-  -webkit-background-clip: text;
-}
-
-

Demo

-
-

- Gradient text -

-
- -

Explanation

-
    -
  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. -
  3. webkit-text-fill-color: transparent fills the text with a transparent color.
  4. -
  5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
  6. -
-

Browser support

-
-
- 90.7% -
-
-

⚠️ Uses non-standard properties.

- -
-
-

Hairline border

-

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

-

HTML

<div class="hairline-border">text</div>
-
-

CSS

.hairline-border {
-  box-shadow: 0 0 0 1px;
-}
-@media (min-resolution: 2dppx) {
-  .hairline-border {
-    box-shadow: 0 0 0 0.5px;
-  }
-}
-@media (min-resolution: 3dppx) {
-  .hairline-border {
-    box-shadow: 0 0 0 0.33333333px;
-  }
-}
-@media (min-resolution: 4dppx) {
-  .hairline-border {
-    box-shadow: 0 0 0 0.25px;
-  }
-}
-
-

Demo

-
-

Text with a hairline border around it.

-
- -

Explanation

-
    -
  1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
  2. -
  3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
  4. -
-

Browser Support

-
-
- 95.0% -
-
-

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

- -
-

*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

-
-
-

Horizontal and vertical centering

-

Horizontally and vertically centers a child element within a parent element.

-

HTML

<div class="horizontal-and-vertical-centering">
-  <div class="child"></div>
-</div>
-
-

CSS

.horizontal-and-vertical-centering {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-

Demo

-
-
-

Centered content.

-
-
- -

Explanation

-
    -
  1. display: flex enables flexbox.
  2. -
  3. justify-content: center centers the child horizontally.
  4. -
  5. align-items: center centers the child vertically.
  6. -
-

Browser support

-
-
- 97.8% -
-
-

⚠️ Needs prefixes for full support.

- -
-
-

Mouse cursor gradient tracking

-

A hover effect where the gradient follows the mouse cursor.

-

HTML

<button class="mouse-cursor-gradient-tracking">
-  <span>Hover me</span>
-</button>
-
-

CSS

.mouse-cursor-gradient-tracking {
-  position: relative;
-  background: #2379f7;
-  padding: 0.5rem 1rem;
-  font-size: 1.2rem;
-  border: none;
-  color: white;
-  cursor: pointer;
-  outline: none;
-  overflow: hidden;
-}
-.mouse-cursor-gradient-tracking span {
-  position: relative;
-}
-.mouse-cursor-gradient-tracking::before {
-  --size: 0;
-  content: '';
-  position: absolute;
-  left: var(--x);
-  top: var(--y);
-  width: var(--size);
-  height: var(--size);
-  background: radial-gradient(circle closest-side, pink, transparent);
-  transform: translate(-50%, -50%);
-  transition: width .2s ease, height .2s ease;
-}
-.mouse-cursor-gradient-tracking:hover::before {
-  --size: 200px;
-}
-
-

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
-btn.onmousemove = function (e) {
-  var x = e.pageX - btn.offsetLeft
-  var y = e.pageY - btn.offsetTop
-  btn.style.setProperty('--x', x + 'px')
-  btn.style.setProperty('--y', y + 'px')
-}
-
-

Demo

-
- -
- - -

Explanation

-

TODO

-

Note!

-

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

-
var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
-var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
-
-

Browser support

-
-
- 87.2% -
-
-

-
Requires JavaScript
- ⚠️ Requires JavaScript. -

- -
-
-

Overflow scroll gradient

-

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

-

HTML

<div class="overflow-scroll-gradient">
-  <div class="overflow-scroll-gradient__scroller">
-    Content to be scrolled
-  </div>
-</div>
-
-

CSS

.overflow-scroll-gradient {
-  position: relative;
-}
-.overflow-scroll-gradient::after {
-  content: '';
-  position: absolute;
-  bottom: 0;
-  width: 300px;
-  height: 25px;
-  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
-}
-.overflow-scroll-gradient__scroller {
-  overflow-y: scroll;
-  background: white;
-  width: 300px;
-  height: 250px;
-  line-height: 1.2;
-  text-align: center;
-}
-
-

Demo

-
-
-
- Content to be scrolled -
-
-
- - -

Explanation

-
    -
  1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
  2. -
  3. ::after defines a pseudo element.
  4. -
  5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  6. -
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. -
  9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  10. -
  11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
  12. -
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. -
-

Browser support

-
-
- 94.8% -
-
-

✅ No caveats.

- -
-
-

Popout menu

-

Reveals an interactive popout menu on hover.

-

HTML

<div class="reference">
-  <div class="popout-menu">
-    Popout menu
-  </div>
-</div>
-
-

CSS

.reference {
-  position: relative;
-}
-.popout-menu {
-  position: absolute;
-  visibility: hidden;
-  left: 100%;
-}
-.reference:hover > .popout-menu {
-  visibility: visible;
-}
-
-

Demo

-
-
-
- Popout menu -
-
-
- -

Explanation

-
    -
  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. -
  3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  4. -
  5. left: 100% moves the the popout menu 100% of its parent's width from the left.
  6. -
  7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  8. -
  9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, - which shows the popout.
  10. -
-

Browser support

-
-
- 99+% -
-
-

✅ No caveats.

-
-
-

Pretty text underline

-

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

-

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
-
-

CSS

.pretty-text-underline {
-  display: inline;
-  font-size: 1.25rem;
-  text-shadow: 1px 1px 0 #f5f6f9,
-    -1px 1px 0 #f5f6f9,
-    -1px -1px 0 #f5f6f9,
-    1px -1px 0 #f5f6f9;
-  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
-  background-position: 0 1.04em;
-  background-repeat: repeat-x;
-  background-size: 1px 1px;
-}
-.pretty-text-underline::selection {
-  background-color: rgba(0, 150, 255, 0.3);
-  text-shadow: none;
-}
-
-

Demo

-
-

Pretty text underline without clipping descending letters.

-
- -

Explanation

-
    -
  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use - a larger px size.
  2. -
  3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  4. -
  5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  6. -
  7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. -
  8. -
-

Browser support

-
-
- 94.8% -
-
-

✅ No caveats.

- -
-
-

Shape separator

-

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

-

HTML

<div class="shape-separator"></div>
-
-

CSS

.shape-separator {
-  position: relative;
-  height: 48px;
-}
-.shape-separator::after {
-  content: '';
-  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
-  position: absolute;
-  width: 100%;
-  height: 24px;
-  bottom: 0;
-}
-
-

Demo

-
-
-
- -

Explanation

-
    -
  1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
  2. -
  3. ::after defines a pseudo element.
  4. -
  5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. -
  6. -
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. -
  9. width: 100% ensures the element stretches the entire width of its parent.
  10. -
  11. height: 24px is the same height as the shape.
  12. -
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. -
-

Browser support

-
-
- 98.0% -
-
-

✅ No caveats.

- -
-
-

System font stack

-

Uses the native font of the operating system to get close to a native app feel.

-

HTML

<p class="system-font-stack">This text uses the system font.</p>
-
-

CSS

.system-font-stack {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-

Demo

-
-

This text uses the system font.

-
- -

Explanation

-

The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

-
    -
  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. -
  3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  4. -
  5. Segoe UI is used on Windows 10
  6. -
  7. Roboto is used on Android
  8. -
  9. Oxygen-Sans is used on GNU+Linux
  10. -
  11. Ubuntu is used on Linux
  12. -
  13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  14. -
  15. Arial is a font widely supported by all operating systems
  16. -
  17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
  18. -
-

Browser support

-
-
- 99+% -
-
-

✅ No caveats.

-
-
-

Triangle

-

Creates a triangle shape with pure CSS.

-

HTML

<div class="triangle"></div>
-
-

CSS

.triangle {
-  width: 0;
-  height: 0;
-  border-top: 20px solid #333;
-  border-left: 20px solid transparent;
-  border-right: 20px solid transparent;
-}
-
-

Demo

-
-
-
-
-
-
-
-
-
- -

Explanation

-

- View this link for a detailed explanation. -

-

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

-

Experiment with the px values to change the proportion of the triangle.

-

Browser support

-
-
- 99+% -
-
-

✅ No caveats.

-
-
-

Truncate text

-

If the text is longer than one line, it will be truncated and end with an ellipsis ....

-

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
-
-

CSS

.truncate-text {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-
-

Demo

-
-

- This text will be truncated if it exceeds 200px in width. -

-
- -

Explanation

-
    -
  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. -
  3. white-space: nowrap prevents the text from exceeding one line in height.
  4. -
  5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  6. -
-

Browser support

-
-
- 98.1% -
-
-

✅ No caveats.

- -
-
-
-
-
- - \ No newline at end of file diff --git a/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png b/dist/cf2ed1ce6be4ba59eed1079db594cc6e.png deleted file mode 100644 index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2628 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 From 66662129459cefa0c377a1a487006eff535564b3 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 20:13:11 +1000 Subject: [PATCH 012/561] Add vertical padding on overflow scroll --- snippets/overflow-scroll-gradient.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/snippets/overflow-scroll-gradient.md b/snippets/overflow-scroll-gradient.md index cb307a094..de850bd81 100644 --- a/snippets/overflow-scroll-gradient.md +++ b/snippets/overflow-scroll-gradient.md @@ -31,6 +31,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor background: white; width: 300px; height: 250px; + padding: 15px 0; line-height: 1.2; text-align: center; } @@ -63,6 +64,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor background: white; width: 300px; height: 250px; + padding: 15px 0; line-height: 1.2; text-align: center; } From 5596dbe926cad5149faea1b7d2e82d51f9cfd5e0 Mon Sep 17 00:00:00 2001 From: atomiks Date: Mon, 26 Feb 2018 20:14:09 +1000 Subject: [PATCH 013/561] Add FF support for custom text selection --- snippets/custom-text-selection.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snippets/custom-text-selection.md b/snippets/custom-text-selection.md index bfa1edc35..96a44ceff 100644 --- a/snippets/custom-text-selection.md +++ b/snippets/custom-text-selection.md @@ -24,7 +24,8 @@ Changes the styling of text selection.

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
+

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
 

CSS

.custom-text-selection::selection {
   background: red;
   color: white;
@@ -148,6 +148,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   background: white;
   width: 300px;
   height: 250px;
+  padding: 15px 0;
   line-height: 1.2;
   text-align: center;
 }
diff --git a/index.html b/index.html
index 8aab3eaba..6f374b689 100644
--- a/index.html
+++ b/index.html
@@ -113,7 +113,8 @@
               

Select some of this text.

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
+

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
 

CSS

.custom-text-selection::selection {
   background: red;
   color: white;
 }
-

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected.

Browser support

84.6%

⚠️ Requires prefixes for full support.

Easing variables

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

HTML

<div class="easing-variables"></div>
+

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected.

Browser support

84.6%

⚠️ Requires prefixes for full support and is not actually in any specification.

Easing variables

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

HTML

<div class="easing-variables"></div>
 

CSS

:root {
   --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
   --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
diff --git a/index.html b/index.html
index 6f374b689..46137b1c9 100644
--- a/index.html
+++ b/index.html
@@ -113,7 +113,10 @@
               

Select some of this text.

+ +#### Explanation +`user-select: none` defines that the text cannot be selected. +#### Browser support + + + +⚠️ Requires prefixes for full support and is not actually in any specification. + + + +* https://caniuse.com/#search=user-select From 7ce95f70e52e6a2b55beeb3cb521107a5a004cd6 Mon Sep 17 00:00:00 2001 From: Mattia Astorino Date: Mon, 26 Feb 2018 21:26:32 +0100 Subject: [PATCH 018/561] fix: Fix clearfix code and update description Updating cleafix code to use display block and fix margin collapse. More info http://cssmojo.com/the-very-latest-clearfix-reloaded/ --- dist/527b39bfa5c417dbf84620127ec95368.png | Bin 0 -> 2628 bytes dist/5f62c8cc1947e40c7e328854a3026c04.png | Bin 0 -> 35911 bytes dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html | 999 ++++++++++++ dist/f06fd0495a34430f242f7611190395d6.css | 1620 ++++++++++++++++++++ dist/f06fd0495a34430f242f7611190395d6.js | 1479 ++++++++++++++++++ dist/f06fd0495a34430f242f7611190395d6.map | 1 + index.html | 5 +- snippets/clearfix.md | 6 +- 8 files changed, 4106 insertions(+), 4 deletions(-) create mode 100644 dist/527b39bfa5c417dbf84620127ec95368.png create mode 100644 dist/5f62c8cc1947e40c7e328854a3026c04.png create mode 100644 dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html create mode 100644 dist/f06fd0495a34430f242f7611190395d6.css create mode 100644 dist/f06fd0495a34430f242f7611190395d6.js create mode 100644 dist/f06fd0495a34430f242f7611190395d6.map diff --git a/dist/527b39bfa5c417dbf84620127ec95368.png b/dist/527b39bfa5c417dbf84620127ec95368.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/dist/5f62c8cc1947e40c7e328854a3026c04.png b/dist/5f62c8cc1947e40c7e328854a3026c04.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 zcmb?>=|5Ee`~R64`@SS(8B$rw(q?BSvJ^#8D#b|BqQ+MCIb&CdC{!3FsdoyIC1u90 z?35)j_9Zf7oiWQf-}(IhhTn~I$;xHbv`pMb+)MHMs>kJgm>aaXlsq$I8?8R8TJ(|xo{ z1q(3sv9<9Q3U}YVHlc^$c6&62FSnh`;ghx!KEGR@fz`iaW(33r?0Tc}pTYQ9;cay4 zX)9I338_oC3`cQ7<0bRdhOEE6zzv~{r3pq$1yf|xK>M#`NvkW@skK@a5I;7BW&y1@ zVL~)Y!{}{8cBnwqQD8_AYn?ufp6Q~Pa^!xh(}V=cS4}=i|L-$0vlAgr-oq)Z0*MN@ z?ujd6zj%jJn{?`fA}!Is6qfeGe>thDyND9v$Eu1V!$=^;@RiA1)UMmJ?QK%x#00g$ zM6$d`i*$~0kYaI}pu01%C?{>C{o8|!Myq>v?nW!oEhKiw*(=wZYPB2)9^!qRW6tqD zlVsp1|EXNq!9ZRTx95;Iv(|3sr^m7Uq3Aki!GUh%4u=?+qj0-baDnt1Wze+y{E}tyuR&oOM7htKaXdocpX{`5NfqMcOhj% zPnqbI^hFU!OT>M7`ZvJ(+ST|pH1mp;bl~Hg??x@qsMSL!BO^!s5n&4>{2KJC7YMqS zkfp;WZQMOcL;<}_QQjzX^(7S|LS=n%km&yHthVp@?M|tOH z!%elPDV4k0@-Hq8n_Mn-HQA~;*`|8--*D7^q;FAkB0;`lCVZNa4d{T6Gh{cH6bz^y ztSP6p?o1OT9Q?9vfK+@Nc#zLS0()3sFB@=dqpFT8&|ZefD{oZZJ`*7}^ymGV2*ota z>?&S)>y|`KbZw0P`wpSPkLMIVf9M`WAJo^2XxdObI!(rm5{1*AAGJY07k!+W5PMh0 zUs&#gl`*ZV6s`wRPiT*k$r0#my*?sQ@(nI&y^^IMFvpA9|@OE>!p>wHLFT zC!C&t?rDOidN)q{lSHz}-y4*Bt~+c5j_>G`4gj(bY6ziXHSTIXG$tN0C5j#r5=)OO zJFzAHDcDd(CL{fIMexpyU~n;5^BR?Lnie(x;bXN zsEW8d*6+WS9X?6bonyJQ7vy5;_)t;8dG_Sv2e%yh z&i~5Ly)d3J=01{PyrB9>Hig}Utk#2tSFOL&+zl0EF zYp}}}Q-JA&erbus-d^G@|3vuLU{;>0Yp-mF59ei9EA_@m%m8`ZfFa+_p8f-BrjQ;} zBr3)NU*x!%6&7HU5BHF*ZUQ2p`9F2H2IlPp(vX7@vm0A<;d&xHup;;bx8&3sze&RF z>?6Ky!Tq!!+E?ES?OiJ|o=ZZ7a*d2#bl2Fws%nmFy>g|RJN zBaltkMR0YmNt{GTcYVj1zaL|LUir%V1Je_LguAA}yY~NR-~&|^KMrk&WYU+NN(9Ox z_3EO(XZRPo+t6RUD?8-bHv^W6F}M2F5P6KXb16tP7-=!fmy0ymC`RE{dn70VJx74n zo+G$t7j9)C6u&%1NhLQoqF7(}yGFX?x<=ehCr_@+?tVhiTYai5F~QN0C_)7;m zt6TOrw89>JZbu$S`O)uWb#H2n9QeC>Sg{_rYeE+N2!~cim;y&4)m0>LL6AMAfSXw6 z**`37AV)kranmVF)E02~$G3B2!L!Oky`3}XxAb*xd8@W-q+Er=UbiX#uh}B8`oUd0 zWy;GSgYy@Z{HYZUZ;AHQ+{o0>xsNSQjDuR z{e%2Ez*KEntOWnbTB~Q0&u@8|Z8k4|gDbq~h^kc}VwJC=z{GfaL7in_?m=Kj ztu6Il(DMp*^Qc*9_qBTuRNlClwj=(RyK5`u4)`}C`h=k~vYvNWpFY6(aRy}*^wW{{ zpHR4O5|bDaaFs538r%h)&Sf@QTOO8`uYTF09Yw|RKK1phlj|kpxEZkWqh9>U1 z;W_^A7J+<5r|>_*gDJEtk^!Lh`$?Y^wrgT9Hv_y26Q4|u3fDAJ%gl2(8j@Fiv*)JX zlku_g0h5xLY7};X{Kp@-@fi0KU;fUZUvaHXn)uAeL{OUY)54+gA_<;523zQTofAAJ zq2_q|N0kHA_VZ22>w});FGoJesx;hMT_KySxvdE} znx?4vuCr9NWrn?hCiI7$xLN_Uzpt;SPj7?K$ygG1Zj)Kzus(o+g|&&38>EZ3zBiy9 z5;?un{H{4R?eP4AK+ui;)2O2BfLS#BmFC2+IG(BRbTfocU&thSBm+$&>ivw}y`w=| zFnwNM9=1Z5|BjZJxNy*suaQpvUinao73CtzdSZe{o(>F zS#nd&5L$fo*P@#DS2UhLv#uVqWng+X@gcxIbLx}Nr*HkZn|zI(g19JBgS5VtWD`0SnnS!~xgu##&m@ReALQ30a+dQR;kmk}1z z2p(k(V+Uuxw+lP&aEZ&M95;#0bl|9PAKs8s*R)f{KI+DXA$t5tRn)F@4WX%|+n$r|VLhS*8DQqRO#J%9NdP@C&~UCAFcwG*;U*S%0uwjLhkXn*5|h zkg2~npgS3ohLPEM``-m!YtR%?A=WHUTo!U(^~^Qk)M{~R7v$&mDN_!t%gi|TMQjbn zi2obTmycJ!Js0;~Pz>W(rcqXZ?DB;v+Tz~5!4iWi0YJQk&=)5@EcETTpntByV*|o# zAR{4x+P(vL42Tf>Z*p=s%s87DymV3=!NKw2uo&{wF($ zIg6}h^-B-KsE#T_c zblDqE35f)P>jU=^hWsSor>*zxc94#iZjK)Ef^Pj;9u>3uxi1j(%Cqe`re=&djxY#U zGS`FweeUv+x^#GSA&OPpMA*rW{5{Gnvi@lJK6JIslpMBL{DZZ|_tYTV6rps#uAX=p z7GmrVWxWW@U6Ux#L*sMNXCQ-J(c3I;J z3P&YbV_$UbYqB9JUFKNtQfu;6Pd`lzg6|{!*vHPl$s$}hzYovd{#$ynkxpvG|L7B_ zEO*a7zThNiVC^_uu9dsG*db#0aX)y^E+<9{7Zaw+3OzX3-;FD**Vma0*+7=N#pQBV zQ~ieFiSqH)t7Wt;@&{Q#5IQZkLp{a>(@(TbU=6R&?;s9EZT=%*@_^mZc?yW}AEMa7 zzV$Yyz5s#K)$931e5?agQu@gwwgtUkQT)Pn1@4Eql9-v^os;t&5;B#s$jXLq-tl^L^4eJ8?BXjmX+Z!*z%)9s)* zw!RdPXfpa`zImb%;o3Nn{Yn&a?YgaFl0%Hyw%Ln6c!I6QdHM8C7^@?5gXrSV z?s*D2!FzWj?gRIq&%ASLGIB&20-XSkE*M5$y+;jQEq-_PGul-#k!46ws=vrL_KqkR z&6i5LLOj0EGXk5mGkhE9n<|Sgy2THCKP^sPNHHxo_83Ycy?wqj7j_p>;@pUXy$|q+ z*R+w>YsCO!_N>&n#|#ak*|dKjODvSFagS4W)M-FmR^R2ve8(Xz63G_-d`IF&z!@%) z8)b%sI$4GjQ=XRv0SU&KfMX?F<~I3u4$^=osCe%*OWK2T;sB?aLr#u(ByiRU#?fc? zHa!EB$l~LtfkzYkLEF03DjSU1)^W-2^l1)w;F_W+IA}NdvpOXOtWnTONb<5O8Dw0v zIZd|Iv^xFKJXe`A#0#y+#*~Op8oaS2smFCTJS>N0;-y%HYm%{T6sNDtvQ%Y`*Qis! zEq*McxZZy$?I~d=kSCxvUmD+6*pJrd@Hyya`}d%SqMGPMhmmC{gUg%z8jK!4P9sm_ zKSMgkqjIiBosIITSsNV9l%^a7S>8EGRi26|)Yk4ys;$0CF)U=TjNMg08tK0%gkjX%w`IMHQiXN`E7DsqP5z+j#+utX&KR;% zbsnuJgW6co$_3HNiZw3^a5qIWsc{(P(VJnJ_#^SXfqvWz;ogB3I-8D6xP%E{C- z-b|cACr2+c+~;O(3oego|2U1{H`Um)ueWgr z@D0r6>?SN!bQdu6zxR12!npl=bl`5rMZS$@^x2rB5P@GCn|e>4Ev5`yd)m-N4yAft zox|vG4swh{bqj@na1$fge^T?;xw}!GiX^5V_u}(# z1+Z|FOVI|b;f*(*JD{qd(bC!LOIeoOi`#aiJtaPyB>E?(tN$23T$%W+V_&-Fcc}T$ zFGJs5NYxOZ3nG_UVY2DF=;BG4(DmYE)USv}Wz6y^SZtQ>6M>^xcE7+KaGdxR)3d~v zT6_|QO*jrKt5Sm)`Q@OJww=GL^i}|VJlXb&o-X|gF+CQuV-gtO=UsYZy5DK39X`04 zSO=xw=gW8y1=|Z6(<=u24zIrPlz_`5h~waHxVSsf@-~xCVJIrIc@W*n7Og~tEhat& z-g6(kAO=kdsd;R9)$qlgp0JTe+@Z%L=s$49$>5=eg|@vq@N}1gD{QBd!&`fA^xXYKLWDi@fvtOkBv+AU(g!kVuqi?yOR;Ylfvxm@xj z14%hwkdzH7%&`vxqS1cb2Q_rxH;u!^6oe27N{}bYOxG8h2*vHd@f}kk#$yv9!^p)f zM-NpaZnd*9@(TPpCvdx601qH$QiGA*AbKK!TPOvg61g$|FiR+|iW0ej zktzO6Ia-BCZjnqb%U(L(-eBDKZ*zr@^&ma={X=^cVOE!%!`Fj4p~&-!^`b}VzG+L(gz?66)FY7|>w8N$w5nA*cLL?E zF%W%(cm{u@KZgjd6in0saj5AM_MKh#!|2z&-rFqt-Eqo%+yz{T3NP$h^7_{iU8;!=i@ zW~jxCe)fqU!X;6!)XfeSk9}==Nzh6kn@SlfM1>~5m3xWZN*V|~dqXTwRKy|IY@ zE=$6#kc?mjs3#%vd*Dth!Y=qoJ|{tfcn70Ie(l6lB0iMUz!(wLgz@gB$v;BAc9-ym z@Rxz(@)QYR5;~l2g~@*G4*p1>?ZDdVUoqdu+OES}8=epDVgI~1?qHiZ{?`E?7KtfF zEqv@Hmx#Y4{2eE!Ke9saCI-)X;(n*K_LPAxRw7lL67QL8Be-DbZ0jU=8AZJ8W!-bY zhV!TTv1$+Ge%^mk^K_I$HL6db`5k5;;{#Ty-YN2!Aa0tJ@BrhWWElh|z!|+3sEMyU z@^3l&GR>f$N43983K|I2O!d&Iwe^JnIJ&TxUko~73`nz{TZ)h9KeQLMovnPi?%^ac zk&^4;tUvcn=iLCDbz`yktDUt%W@7Knc2Y-M`>Vf$)Q>L6Rw zdFUo{wcp8=F(zz(j-#^W{)yfek3IlB3(SY?5mWxuGNxb+Uvul-JmwR@=}91$T}acH zS{qfT|0q?7DJ#eLPS1aLGHI6}+F<5jl*|XreS`wPxn8~$SB*WaNSw1%`qVR1S?JQT zrF{R$mEfg^EtK%S!#x;J0Wkl@OId?Mgb<*N26|qdNTk>5OUrNLI4@)!Fh)o{c%lXU z!%a;QLH}JkahtpjQGM4^WF?sSkY+gUY z@P#}RNG9U;Lx>sTRhNgHbIc?#Nw#Q=)WA$R) zO`VljV=q00$9G#r|H-IO34N6kacaL2v}Z7?T(nFwgAElOW~2>)<@0Iy=tYbZbTLGQ z=s)FT+Qg%OlN+9LPN2(EE#&Ws=|OZVx)$R^2;mEzYU9Vse&9B?q9^YH?okRHFB+*; zV&B>4!e?fwGQS9uhMre}Bz~+z0&MNYv~~nv1A}|T%O)$<(1~!u8LTI~d}d(uYzpBu z!KOO*W&>S$tMa(=y|;N3Kw9Kl{=#Do=Da)fYxPTM=vc@UGMzZ-uvX-0i;P@tE1PXIgL1br zgKK)WK{xKmx)CpFe5HFoSSG^PBd;R;QxsdYDb0tiC&8Y9QXBAtDpFW3{CzgpDA1UW}r*FPA z*iuhIUZ88-MTwXJxmzWujrijW`d50HO6S`Vl>>XmNdr}PX)?5(q4Jls(lvQ)Np=>f z`aH2AKg!n5@FoAVM%AbZxy^zBg@V5XI% zpiu9{hvRgOg1w7kIc!Yq7McxnFK`?b2%Zc6K)LH4wQ0#LYWGcVqn$TA$>y%7aaScY z>Hgh!DYdCQ)J=|BX1CoY+g$AvR6!*Y7XU-eK|<-_aV||3!yQK#5}%gv`wMA#Ee~^I z2T0!J%UjgKQC{FDVcZqW40zewE_c=)>TsZ~R@i zXHK&o-nUaTT)?oalnuA`ojFI5cr+jpk7D|DXW<&$FZnE6T;s@{Mhr7Tevu|IR8IAy zojh$I?aA<|!Iy2e(Yr9md0IM$R(ib@?Ke6Hj>bVGAujE*scvr6uhh~{(XyDx6AQoClk{HbxtgXwxDsM20hNq6 zN&fm#wrG+|AqBlbVD7Kb?vP{LK(CEOH-hdYuxEO{UIEd|bl+1xt4a9lUdErJX2Bp4 z{+f-k=esfHtcIOxDWpRLAgfA$mktb}(Gic`}Z;1|xM;_u(p{E}n z3RylMnCsr@VgoESS4*DTx?=`rdc=Z{;89br+de;YJM zsR{dHTYn!c6KcN#U*@PQ&U1c-jSY#-@u`8`R%&|NVwI~(B<8~QH2Yw${3oMaEItmF z{MXTVE{!2kOqlAAS)Qy6(i4^Z<#X)O#NNJdNllEXDXV}j^}HROwHS+`SNw|MAcoO( z6c>P?<8G5XPul_yeCyQ@u9NPfWOz(jjF?1X@eDDi>oVTt6@Xc36giPu3jG#tmW;wO zib$bs{TzuxUklu&R{{njjwf_EGygE>Vco*rxbVf|qI;Db+rSY)8cXA+CJM*t8oI{!512QNOf?_y_-6o0=tA_NdR?Ml)zxp{nspNzg;M5t<9@GWjO=<$#4L-=#Oow0a94!W% zsX{!Xu+hLF?-?RU+akVh&gYX?-=TZh(?6?M@Rh)0femkQVyom`Wecrb`b+&e!^ps; z+!Oy!Q~nIdQDrV?PCuBf-m%PgsY1U7CVfFD%yVtOOr&635O>*=-$3w14XY;xok%pN zdru8uzOmlx^a;%ThxgzFyws1Pksbr7q^IykhU6oTOd?B*Z=XAOnLUf&iIR=r*_g`l zuc#Ly3;FG*(|FwtC~0f49N(V50`iPc8opTV>{IYO=i-J#F#>ZyN%_&g2Mnq8!i`C@ z|AZ@xk&_Kyeyi2mtua5&@aggR^~xIfp*LpY=eK3Jg4UDE14!Owqp(K^roi-967Q~8 zHCMPA{8D$+dzZCx7MI`QpZmXF~R1r+xW=Cf~lE;`)14&}&+$2(9k5 zo3=!OMNG}j9||VX&+lu}DfPb#g0X?WO6xLY6?Cl-l@CJZwFL6#wJ5jAQY_RTu6)f_ z$9^)=9SmCw>hF=}C1F^Hekp5emL&Ieout4y!6OU}l1ugJBDi5eR%CnN9QFQ^W?l^xsLQ!J7dIh!@T>BX^MhH z6`-Ikk~A@3mc);-+?w14=)i+_Hd?nWbDHIF%IsO*JUQ~DX-r?%jcqR!j}pZwXW;-m z=b*|&qhwPTd1bw=3G zW$e}xDJ$WIx%neQ9y+UK&-(*t--R9t-t5DG5mJxOYwdmnlyWY$W`il#AmuMPiNsF0 z*4?v2c9;Z!aQFtQpZ+ppEiDSJnNKrRYmDNWkI?2fJsoyof(VIl@3a|wUx1Q;wgaHr zCc-!;*^b~c6m<&B__{s+AGzpW^ixk`uA;QFrASiVu?Pfh<@rdh3Z?iXS({UJD=T$e zKwp{vLiUp#N-ce*zJk5e@H?}09J%9filj@qsmuFUNe=urK54je~Y~$?T?U0g| zbDmCUc&T^6%11cHHUp>Q^+G}I1@W;=hLn|l4&~_{DIs^OlZ{WY7d|2GR^E$bcbfIQ zCLN}F&wVpA>OlA8t`kZ*Zw_~j7Asd$ML0+;jIH={@d%_ulTLtg4OyglXQ9^rz>2YRC1>HAZ&!S#IDeRrA* z)eoNi?5WDO&m_z#iWu|ZkOnv5yiOgWbOLXHShwAF0=q87+3&S_2JYF%X>WUp9*Dva z0yF7kZkg;4x;wt)2TBiA^mT2JZ?zI;a-ZJ0C>-gim1+~n)|~Fl*X8x~W>(=G3C)e`O)U33k5~{F>J${}rXOC+ zZnDx-<13>poh#_M9O*t12B%F?!<+TMh~p-c4?BJg%Rk``!5&EbH7}ytLR}oWR448r zd1XoV{-5(tDJg_Kd?8DT^8TO4pwogA>nGOIK9HMTqC;q4;9t=q%S)gyTYQ||bCOWP zmX#vtaV7?-Y;~sSV^Jc~UNUOq6I=fbQj6Pi1;nOBmypBGh?vjA6|rbnK6{}57e166K92l@TH&^&GtVM{=VaMjz?q;8}mu;?Z8%mIk+OxG3D`Ta;y zcB#&$dyJ_s9sI`KS)?qrb*m+=V88<1c}|FGe5-ec&_9 z>D5e&D%;Y3t_;sCmWFP)JQ*d3?Snci#@z55EL8WF_hK<(vbZ2f5U@rHf70foa*P{} z5+aj#QiZXrV`mHasUk0RP<{0x5s0Uc2$QR*>Z5xN-km|1k9@(pW)TE0as~74n$niw z+Fy1O#9Ba;{daWLQtntTGj`V3zN`_O+jEC3@RV17ijK%#4CXh59qnUaQ%pAtL*q(+ z1)9HOJlID`PTa12X#`mD4D-%x9uoyx;5o4(Ih>^x7CGxSIfJht%smqLh>;{XV&Cb{ zAfQUNWJ7fa&Bz+rlx0~T|C5Ur%vU86m5KZw4=LNgv9E9aSE~m1eXTkpe0f+>e}cHc z68-K&Ej~5W%gUUOmP9>N^WesRrtyZwCD5lm+w#|;%-fh?SblvF9SC^A7^`Uh%iCQD zHIce7t(f2y>RxgUjk<8+2VwEEr^mKWDaHZ(x^a8rXNVtkOhN5dhyHU{z)HAx$6ay| zFb<*g)pTOa$A@0r14Zh_cZBZea|aU;bMbO2#!KjL(F(9zgRLjgc^x><*IfGFS*fV= z!EJYJgq06Gu|48>^(j)}oBFp+bVt-}u`F1b7SvTuHd9P;hwTLptr+k3%O`koKhF0-o-spTR5v|E$@peUK1 z=B&qPI7uE%dDp&X&Eyd-EFvk8N*V+A0WC(&@N1b!5%9TKrM$ED$tY*O{lcQA+aki> z5HE{&_ty0%dxUT6Ei*wT{;$ZC%h6*si3e zI71y4#G0iZN+tF4+fCWvZO!M^E%G))ya}x?J%=%$k!C*Xq^~AoW`QD<{%jPNB<`dZ zjN

hsceMcV5aL#e^4rmVa87+%HP6K3O_;{s|?+cCSJ0rqSLFJAY2LHD-G)&0q=5 zh8kQHHxTU`qRWu?fRhKZvO|A-C%PI^#eH?sC+d=yxq_cHDH2#wb3r2CdI|S%D_JG@ zV}SepS-~7@ALp}4|dMVE?9>~@ZdSWWCH4c{C*58!v6 z)Hr>Edqo)f`8kiTKr0Y%x~~VQPfIeWw9t8UfhI*p%^~UltUFzTq1?ngVn1(vhcN_v zD&X&pY2&Y_C5@nfC93^-LVO+g{R{2cW#;!QAVrK4gEyjneRqXGv2v;=ea8w}S|Ie; zM~aZWN*3_Q2I-g$mRD6%90`SWJ0IdnU^Mb3_ZjoBfoOpdpC?|2sKfL=wG?7adzj3p z9qr}rE*x2oc8kA%%M~bf)tg}4&d?yKiy83#!g=av`0GlKE_Q#$9J+*kX!Dn679=zS zXfYjXwqD%D+_(YHev%Zb3;PKT{PNrxx&lm;U?QMr+rCSsOPqqQoQ_dK74!&>S~R-I zc&f|I$@;e~C^z*PO|Mzk$1N6zUFWt1t+wqmCmQn|9|8x?0UCp>F_be^>b~%yI>=N# znoo&~cv?(%7`B-dx2Gr93%`G807fV((XMY+j!2Bs3Pzr2 zJSWeeHUiR1HbpC0%3G5{2K=gepgDb!d~n-tNiwu4P5Um?#De>GbYO-BI*ZU}h4MGn z&GcB6pXZms=Rju!a2=7eCHqS$*fg84)~<<%6a)V1V>Y`!lD~@~V&o|^q-Z95HVaB| zq@TLD=B-^;D0NvTco1_Q$epR!Ep!m{rQ4OA#UguM%gPvv;Z18zvTxNJ-_Db?&LNV1 zE4_84eYk&d!QkbQtImbU(0At1)PiMsL4u>SKpDdRr@0iKJ0OZ{Oj9S)I1OCStYEHU zJ2XFCA2OYq>3M^DRE;x?!gi2I?73CRvqIo+R!0OJ>Mdj+lO{#{2JsgBQir!*Jb`)< zTDJ`ND9xk}!oqfs8{x|LVT=goST-hz@l2?)myLg;K235(D$G~>bDNM#r|KaZS!SBp zCC_*9p7^L(O`MNG#BJ^9ASF4shZ9d- zWF@{A#80EzdK=V3ERlDP#E)_YN;=0hrIR~R!-S&@n*JBTTmqc&sq9?59X$h5nj0p z$W?79StGx&3azzp_=5hwkjuoW{r`oi&C-?nvhRxT^>-$7WgOp&h~{(DO3s1J zXW)Ta7D`f0m23YO4xqQirJ7y{)+37H2cW-tCDwOLd&pigtu(G+E%+?WKdPe{H8?r*AdrY`bN z^g9V#MDy19kVwDnu#H#|^)KuZwfuJ z`KY-5LGxOsZ#G&TQG6DMlKKK0tj<^Kf<+43N6+sb@hwB8pTPX&p1QOBKBjEK?Y8Hc zcq$ETk4U;Z6JJqP$@4R`QbTWhYtaLR;bbRuLCU5lvJ`H;M|I`93_aU}M92RMQ6(Z3ox&bI7^(;ICuV6>u7td!FxggJ@Yn$SwFT@ZXU*;7tl+Q&$HN z`oZJ|^E3oT?5SfMt*ID%tPmUV5J`f7#2UXtf5kvJ6O!fEQPiqWG#gvtbS$jwpdE{0?h=A4`M%s!^~?^-rbUfjHhlnR#VAP6BYtZTmIyE;a_2uE&_)PatO znYs#Cz#9}L96;@!^le`C?91UMPPpA_?k4{j*pKVvDbIILkI6Ap^NCcs!Z;c}^cFqK z6**+66P7x56xAxN%|arAvM*V=nDAq zc3v8{aZ|oO4}1ggQ>{qBz#&Pga%4Ubr}}dREc(QJHTQVKdx)fUg^T&lPF2Rr5rjE^ z*SPcNm)L(<{~E=eD-Jl8-L!HIqn9JKw@$AhPdiCVulSB_hgDEDghMQNy z0}4$)ZnUPe93qq0E_iJ(rVWyl*-BT~2w7L(@%AM4XH8qPBvagUn24g!B(z_wRndbee^|BvnY4;I44s%GRX~_nq>vzHJ&5{st*I6it#7a)omlTF62AzFh7WQwFLH0J zZdd1Q&R0<{NE{E6`~bCh!6dJ7ag35Lkc0C7L?kpJM9J8O z`D%rw3Ym#&YvQ3FKd_CSWKmbX*s3@g;}2(q|NL5uIFHOO`&HdDF_l)oXNj!*66?sa zkyIlAoz>iN-?BlTTq|Fme}o|hfThv*dDR)Vg~?|HcJ?TNbNrVg2e~%W2Il``d-&4VU&riZhln?M|rZR9kQpp|&oJV(nZz^tbGrz&+Om+XM zv~Tc1c8@oSF7OfRvi9Npweea06y`JY>P5#hi-C@3@WF2>glitpHtLFeL=Hgb=EfK_ zBRVQVo*LiB)B4DP}89x*Voa3!sXw38VuoBknUc5KznOSK3ahe+Xe zjdDvPQ`y|A2^VIIo9R^tt?01SlLcWT(Q%v;x$NuToqpnln1z(Ht*{s>W6(37HP?_9 z;n+vF{-KNE@wj|UI5LGDM%NgJrWO3hH?xhnId(9a5&=3w0gHlE0Y1_Q{Geyd(-Lgi zJ3B^FKJW2uD3J~iBpE3iS1PaORs2ZWHp&t{E99n*Q1}FgCcY5g;U46*FQ~EMjzo`u>YshpmLAR6r}kb^YJxfaHNI;H%cF*WkySMmGFvi_AKd zxd6d$vz8g#uFv^n#ULvoL#s(zDYPt zAKPAi9x=dzeR!J7Mj<_wb9K>|03~|?(z@h#L5RE+jK&;NC+!lb%n7(aOd;!9vbbil zp#Ns-sl9wJ#V$((t72m$^b2&NMb<^D<7Akhop;f*vZ$E_Xe~AA_7w27gE~{v8o}&R z1Ppk518`c061?KgmFE00>&53<&YL;{5BEL5>__Z_4bRc=Ysfu+0_I6!ee~+`8cwn; zdJB57wqWPGTy3_lZ@|WnH|p*AKn|C!+SmdPY!r67F9?UDtj1Oz3B6WekY%a}~bb1Tz0#2=tby&uK?0xZjssfRuinZMKrSR5N zk(Ha(NGUx31U?uxV~(?YEe&|#M)AV!&!Pqy8{Dxu#A#CDk+y?#n)*Lx&~nk*{P{6t zAq}#XGBT!)D*EFcPfYit)Qne$nm&@R2~zwb>mE#E%Q(gx(Zl~o(Upfo^|s+Ni=AwV zkdf>=C6(n&T7@WuQbwt?)AEaA<_sy7ijplc+Gw$r3en6UA!S5avdq|Jo3YM%&iUs1 zYyO(+das%Hect=I@B6u5ut~B;nOV!y&PZEbKyxsx_0<TLm@B7|(*+DOvJ&V^EDGZh3U4=ojzO;5cE~E1qUUh--c-YJMGJ zG!l47uu>B`i^@zX2&#qY0s?x__(YPU^0?nz z0I==y0?{(AMBydIUs|B!>Fdu+UTTCoF=xO85L`4doMG5iNtBWZwy?236m=||u5tpc zgcF0IG10x(j1O|5>tEd<#M?y*?W-mtNw@V4<3`Z2!N&UKi-w^%Hj+(r|`wsXI{z`sY;Vr|j8VT|qO z;+3BescQtA5)9d(u;w!R(}x z_fx4JtR<2ua6qgbD%5^#JMjosPQbhJR!TuUbWzet9pT1(4DX|5p&KNcTzJd?NT=lK zpR92<6rAcQ`65;2mco_hcFXAphkUWSCNH`j!EYJXu^&a|>j{*GAJ7v)(o1(^>}&jn zr87L{4l}&{rrYj&cvm~v>@7VJ_tCe2zSD`=qE`~(pUj$(Mu))kH}W0(eL45z_F>Bs z+Ni8`H?bwNHweE)?}W}Jz}IxrdYIR%%@vz9gW4nWh%#ow)bnz45&CW_m5(Y*#j%{6 z4{)s>amr4y#`)eP{ilnzS{UT76f2L(*ChzY5EC3JhI4!5oY`&*F@+pgT6&aL(s!W$ z+SJRD{V{}JC2U>Ey|raI=K6}Z}UPS%W1*d&|g_BYGpAUS0PnyXhZQrFX?i zEFu3XtC%;rN|W-D_a(7Qc~qsU7Oju)pN8x`vB zG%58kSJ{x~ps(}6dL!Q^k|n*Q8nU2T_A`yVdhLkFPSoQBdcB8*pueZJrDTd*ki@~c zOfoLqF-Ggh+QCM6VlV46^Z`+eHIQT~B6@2JoY3pnV76-FA{)Ou*zd~5VJoS@{cn+T zq_pFbjPQ{PNoqW6j$}4d9!RwXaYYPbJ`fEU-vq{it*O4@V%0Ll0CS=$;$@Zoxb4rM zRA>Fm`}Sk!@EvE5o3zrsw|YROH%Os;LJxV5xZw#S`YS4|C$tFcLZ7RijJURx)a+g{ zDeX54;q0*~Fj8qbW*J3(37ZGxubJ5~#g_Wpa%LI-mQP8tA6X+CBzM(+qItt}W*)RK zuK!qC;Pju-Bl>P9)};|o@^1H0)UIJSVlsrAE}_dWn!#JuQGd<>l%+~(!*P~qXD5<7 z=$dHRWXarQU`CE={eoSm%Nx)jrZMVXgPcxv|hAH z*pX6?KJ%c=R5iF3p+$Gam6OSeQhHeJO8Y_w?F+SHNiTpF0!Sqx8%DG>KhH6G?3Y>j zfk!p$_tf$&s84$Y;qv#$v)G%Qp;3l;8G7I*ja|`Q?mt&%<~MMNSS<`!9B|%b3$B$Q zF>inkSmns!z-lk@b@wB7r`LwInk8n;cN7-&Qy(U{oY&q(ROIL+0@kq9NoCPTo|V0k z>jbq`>CBh?OU$8iru&}@WCZ0bDP<+umG)`( zP&fI2cZE&THm3-v6GXfc`>X%H*l*$dqxbAC&M-txwWb9V^YwM&IRDRcm_^gJLal^TK}Aa;gIOfur>= zCG|k>SfC~T3flcSdxuh~#Uy;;Ut)ozRiq@tT*3L!&fT)cRsva3Yr^5u0NEFK%a+4s zSIVdBHFeGpBp1*hW)f1NYwe)Jh=ZjyQhZ#R@)ILiCE z0|9FL?jK%;Tx{nOC`-beHMHvahC=AYZs6M%!UnnXhIY()!uAhy0m?Q~_aDE=IW;y~ z>1t1ewkH>Dbn?w8GYCF_EWXoZJB0DVLX zG=?_iN(L*rTgR_XU5`Q*?kfVFDjn7%Pe;nj=I!po6RV2AtGnR`T=~yK&^6!)r{L(Syz+#q%#MiN zOZzkJ#tw28i+>vs9mvgBp5liG3EIoZN4v}lVaGhRRw?zrQM8%Q4rf#huRV_(pJuyW zgI9|EdH)n52klxUYyO#q_63%6(SoyB4~g#p?d&bzG(eRis`afeJyU%4iW6Vd)=RO9 zD<_}c8!VosZ~2}%mQmmZS{>J-YEpM&_exc{N!32e+zMpoRmm3&#kUI3Y7eXP9dQvO zmQI^Vg9K-ZZ)(M;eeau&D7T1RmRM%!vwBtu%!E|~q|BawuGlmm)AUZYj{Pu) zR~X}L0Jh4&=`(v*D7OT8Cgih%eqSG;rA6{>c;*W4zXaZ5pIuZ~hPkll%!eE3%Z{K|E@-KAobFjAd4dRAt*T35+h%!9))H({%hDmYfo(fF-45(IV)ZZ zA<}6%@yhshZD?uZM46Ar=lRVAL}t&scBElFjD(x{Y#k%Lte#8SOu#mQL1ZXt26RNd zkpqo!)hIiIoH-uWK-x5Sre>_4v3vyu7ZUecCTACL0Q#aXu7gWTH3Sh!T><;CKAs8+ zFp|knZUWCE4z;DpalxoGBxAn7@zxjgEO1nY`j)|Dtxpkn62@o-ge*Mo((w>sFdB{hH19Ad=#g}QW7M3uxTu>+1U_syNeK2~l9Wty0`Ww!vcyRp~)lv`+%LwJpn6B*?4Wb~DE zBXq9W;RG+m+{`(@S?)6*u_TzGt<#BqhD)Ly1J2Qd*|&NqDh=>H;Lu`P0CpVF)QFtZ z+K0cqm?dZ5mkAUu&y`Y`iNJQ)bU{T*Ti)=~ZN04M*#U(sQOxCR6F7+<*_Xu!#C$yi z;M868DbPkn_sM@igpGE=ft5q;DjA@Kh@$afHid(QuW3spJDKT(&^62)um$t zw9}K@Ag;Ek2!91c%zPN|Qu32fRi?+xSJGWLtkUkhWLD3Fu@&?62BE11vRzspIhx&1 zeA#!7;n5*uUP>?w0K8wz%YQ}&r)TO!Ym`f|p$2)GP^e)V^TT!%-bX31kixh-iyGlP z?D7=k^E4{ftiqi5M2h$=J_jGhE<~*{mRc-YKr0p|lGEU7!zh8<`o{XfWpL*1>xSgRGa80;f)J*M+k8d?JGYZm}&v; zc<9$*!VskjEtM<)(QH~8^{sL=R`^kBE^Nv{x$dp)1{(Tq#oGjxVR=_QzeQ!(9Ah!e ztKh+>s{Zrje>u>3c-2oKob5~rQyPA|u zb(vvBq4UET7Gk(wsaMSUO5jTlV5B(~_A<-A8(zWGYNq4`x*tOaWDZS4U7PgPPP~G) zUMR}GAtJ4oqBH4+__NV@MX>P2a)A{t!2Q6Y$~I;+I10?Yq%Dv34@N5HNs(V@KZ%tZ zF6D28quva!YcIoYHb@Vej?p98-cC`r z#@xTCb{vqro_!LAbHeF5vZYH<($z#jb_Sjwv|El#07+sScm1Wj#qec7o@3|_(5aFS z{(96w@+c|)B8C6YK8bSth>d)hRw?K>VZ!^Sih4nhs2vYK+SskUIC^yh&h&d2VYws| zXHQrU8&5N@z^VGwxG7MNYCZe`S$?;e)D|(9z1Jq;Pu0Vq!BGQ!&r_eZhSN#b{RU$I)gx56o|5 zD9-mLP{@zchPpze>>6z=bYxEmL~njZPnkw-bF`*)gP zcfRL#)Zpurxb??zYSBv7ZgIQUsFk5-C2@aLnf>6NplJWO?hC5)EWyw>l038w?Mr7% zDK_~SOUdACAYp7GSdt=LYRRd6SZH}j+g!Gy%x({9vjdq-^*M2RMJ~x+U>@-PEP6-^ z_#U6K-0&|EflMXQ{N$adkpYgG1s-x7BCq)&744G_D#*KXRa7~1Qyeo}u})4EO3RHr zQ0B~I{LUdSjD=-2uom(P`gU19_0S0JFrD6GabvIUwtIUs{qm1xJUVH5SNHc;%^ksE zvSG(E)qQeL9lTJu%2%uE!^iBGYEJoep|UUGDRJ)@nLhSkj(Bbwk=$i-ouO*he{9+* zdQSd4eP&Yl_awi2+6^B=>+2{IEO{EcbW*d2rL4?3#yX+Rfu%{8G~z4C+Dt|Lzl&pB zVu;8~ll^J}sO^r*7XN9E7%_Y(&JHaDbBmPoy%d60R*U}a!)hjg3WsqW5kenzq(~WX z}0F&`}<2&c;i3?mi?F9_1hvdTAe~C)7kA_ zs74h0UwWER#baCIoJh}Mj&%p5BYs#za30;Gpp*3W0oxBy793EdOGlu>-^rWHN{s(u z1%LSDWsj%|cBiOmXjRX=fl`I4Hh>~AWwnPC97o! zN2B$0y|X_h{Rh8J#XQ`c`g9cZf$t3O!yA8YhpxXTiD30v7axc&E!A;z6H)Cd1#%JV zKjsFQL|&IJcdt}QRkzmMgeh^qN%=hr>5Gnx|G2}bm@P2CeXC|vVfy$HP4C(DDevTO z+0PyTzWyTJm8{`~Co%s+ADUiE$GX;!ZQLS3&t?!97k=`!OTHA6Rcm&)XBWl&_vv(Y zcr-69Bk>iZ<;lX9!L=gRZHE4grxG;}B`pFeJnJR(rz_zxE8o)P8@zDuXBZPIk$vEC z!)hF~Or$O{9aQZFYC4$De)(aOZWLo0J|X$?XvA**jcG8@WH@8_)chqu!RA`h`P)vU zMse9tGD4q6yk+J_N>)HR*5Vsp#5v9Ifb+m6z$d!7qKClmF2&!h7Pwz(VT5jroLf^K zmHlDb)Ox6HpYrca(B@Xx1V} zmDX;_TyEqTOomlnGG5D+>W{jIK&kx!#JCw(=)ZN3m=01=?|lb*`G9X3Bl$AzJlNLL_(GW zX6M55OgMegnE^MQ*^doV-1X`mskij16jaZNzId{c^G`%d+JG3IfRU^7sv*%Y#1+%p z?9hoF+c;HCE%zA4u_2-)SB4fbQst~lYbQU6(fbNVF^b)Z5$P>w;+WTC?%&i9_?>y| zm)Sa(ZG;?g7!PbQn3rk0G~!%^@+QJKW{;@Pk#*vv%Ps6YjXacfg}p6ZX(JC;hNygy z4E~AA^L@znrg(kB5Gmh)lQP3G$o!vv*WeXDBz-o=$qnJ$+udW$fCzt zWti%Hn?;7K#YLNd@OVj~jD1u4AGU|L@XrnRSopw9wj7+vcm7qRp9jp9DfqSpKNh6# z#WU{|?bxDFeQ;d&-R9wYUf z`MnSvv5`~iajip?B>8|>R)bEiqBbpS8+%SSQF-|P0F#Bc*4Q-p7f?W_{epMu-a zmi(Ty6~U0p*%9q1-%7TFxo16ismlze z1c*mQ!FI}_#T;Len<_8I%l)p-RIuM4(Hgh`YsmTieSvj|>bls_NwcGKg~d=#B^TvD zUn&kLoK!fq#cQ@YpM9B@~+R92^22ldS{vqq_ZjA z)647^wf9o*W0s%F09??aHzk_s@Uxh1aH@A}zxFw#|NT9I=a^#b%xA}f(o;6whZ#rv z!C>H^MZBN4ozDCzp>4`f3+=S;baJv;bb9)c_Eat>SvKToh6Lho%3c)n$0;vQJFInbW z?diYCGaHolw{kCY_B~{4*g?9mvn5JmkMpk!c*4NHGQ6lP^mDL+PRLC6wCnRP^+EIa z#DlmqjHl=L$N(7p-IihB*36!_mc|k^y^_LY!ez{@)%EUJ);nS1M?^;wCu^9F(KB)> zidS@)U>F_4dW&i%p<}BV!(>$jRg$m!y?{vGX6bnnAA|y5FmlU~5_v1ea}=^r<4e3Q zwk4Z{BO_}Viz*Z_i5!IgU?02`XPEbbbCR*yiux5)SwY?Nz@P-w0$w&PV-UhMa?UU- z$Ln_Gg?^g`r$Z#4SN-)CGT24c0z>zwamMG$l);$#<2Qbv#|~Pt>IwgGp~K2}8P3`> z=pLEO2khZu7FGhs%2Jz1>WpFpr?2*Pl?C_+pV3J#W0Pd?$;%T;vbH~$V*JzlulpesZ5>*6hauhnRgywLO-}8-C!?I`7E_|M9~YAcqjhRy6#ZHcu`57rxpVA->0F+Mz3T7FV4>E(~i|A$dAF z<7;MbJX%;Le=t2_L7XMS$ptkS2Ze53OIG@nq5Va>m_rTc8{f)C3HG)}#71^Ry}3!K zUJ4S$N%;gWJLMec%^kUfdd6Z*zC4wb?}QRxCue~9s4O%}C7C0)&l4l%B%*977D`qV z7WAk@#&RxLB#b5B(C8{_I2-q$v>lz_w$uPUni40Up?6Q(Sp;>!h?FhBV^3k8_&dYH zXXpy8!Iz1&Syeh7OmswT^y zVV;pnx^HFK(4lrVn=X|CyB1Tb+(FI@ns>C8OUXa^7Ab znJ>I^G8}J_ph83Xi*~Xh_!j1gXe!pPIw|j@+%J@g-fV!BlqH^{tDr0+od6{G*3_ld zWqm-lI6Xkkm@!kMacemF5~5l$ocMEBXx}+i?=-5ZmNN`HLlb_TxUXc?ntyzYnitvT zz@+bBpgV*0XU;bs;~vLu&OsP07qEVV{Ol=jxd0Vnqi_exKDJ{8^E`16P;c4Vx40qf zxje=4vPzKDk$4fe>;ePqBqw#LX8@)k8OoW)wo1a2K`}tx_GHnworWRy?wOffI|>i{ zq1ACnTc)8w?v@p8xV_4Tt}JidU$kKolIsKNtmuJ~{GR9?QQGT6%PcZF_Fs?5?f!%j zUZ)*(v6s?63p-|g4=ZGLVw6|T?U4@tn9vH98pB}+wUdLX!wdZXTIMBpWdtF&W|XO$ zQN~)KiP9&1FO$d*txg>Efl3>OMO%qg8(8y=AVRer#z;O=qjCy~EGwy)PNYD(z%h%` z6kB+hsk%!WP`}EvQ^D_jERk(7rSRYzXU7<~NlY!y=N(p@fr{yH*4mbngzcY)et$k4 z$yk5p==E}P<^>>rxHue@8w?L7&;2HaNHnXElQR06F#18hF?59FCo9`d-6vlt!3_`$ zdIw~KFyq-TS_~#!uI%FYc$9zkzhMNw90!K)MC1cL6gi~rB~ADP6bqyp0WW72bqaR& zUV1a+8$R^tiNL*}hN-hqwoXT~Wte@efXj99yJfp~Xffli9(1>&Ye*o5`o0{U%s&KW z881Z1g=jsZu6Vp2>09-=1ijEY-LMN33Ae-`ujONRd-~GY54(YCWF2f}Wq3or`3k#Q zq47l`idg}w}(3mXFy zV@;g^>`!DL=GMXjT-UeR-7_Cmmc#joX5_bw?G_}_OTz!&eQmU1+qf>Tr$dO{3$Xl6 zL$@j8YZv5%dxVLhd6+o}Tq%Uzn%Ay`%UzS&Daz~tao7yu7U*oZSmZ-l6CqwTENT8S z0W9>TQ5~kk75r&4K)A?Lv3DZr9oxfss3mwmo4wx7Pb>b<@Y9dwT_68(4c;%XvzGKe z&175A1){Y|DPqypKZGU{i{Bhf@uXy7dbkL_G~Wo;MBEjn zN`Uv6alrcFHqg`1?_oM|4>o-y_|rgn5SAYEu7T)qHfsFW^z$ZAV)yPe?`LW@(*G#Q zR+>F!iIJ6FBhK*qk&L`;p+p6ab*M-cMo$0bUdCfQqpf7J;Vca`$rxq!#=|AeSm%G! zvX_k*X|-zz1iM|FtF@NWi&njeVHF=Swv0F>Nz?=U6zs=XMtL`$h{A5qkuW&$VJCW- z?J!9?IR|Hno;#)Rk#;WsOvI`2`-ebBEal%njn-AnV#pfR_vY8<6I8|ejjzkC&jnz0 z?RD=Yc96y3$0FnGr~v1+vtp^oql7Wi`joH_$OZQOL{gv0uSKeXb?o^Ju|RPD2XGqg zgA=t0`>7RDGakn`(uT=#osP0{8CadO$8g=!9gdN7!9GQd*BR)_Ym3}Nt}n*NVsoE2 z(YT`P!%Sa>D1Hq7W5-B~YhpRH z?bsEO-|Yg)=bVIjC$^O~g@mg-q6TC-!8y0r`i>^CWDRk50AoI%_w$8nn>$LH=67xs zh_B#Y0dEe0jdow-4Xv=2fGpNVsYY0|7fXDHU+D9K8j>|K+v-fZ-Xt1j#%Y5O-Lsa; z*~)Y*U7Pq_dL#9 zBU^c@iohAh8yJzZt$cPsp;}_&FT0Dgzv{z(Cg=I}B>|hk6^PCgUaA((WRecMbs(vd zAJ`XV$m`{Twrt5=j6Ita>JRoF299;H6W7ho7NwBXgeI#rqdTMhv6G8_*h?`L`0P;| z#=~!ww=kg%;2U%@$L3ks($9ZVyx+!(T?G4nC6=yYT!{B}PZYePK} z#@P7JELgDTx-H;Oy*ftf^v0ZniNzJyj= z#%T-FxVk)2ZGyoa&aU%fp*t|wFb@8Z2DsF;Hh-K`QUVR#rnd0UcWP#9rE$iA0v}wG~Jn9GXR)m&q0IrjF<5rxK@iTlVr7(az zdC(6?Z!Ep%yUo5J(WzCxORYOfJ_d=szldJ#18ZhL&$v~PH|p8(6I{oq6)Fo#mcg!B zbUMpg=Kig74EHiQ>L02yPb&x`2;NYqs5U!vf|N?oq&N(5GpnFKMP>E7f4=-$BK}=} z5AB|=8k(`&McjEBxVSAv3xAb+`!Gqt5x0 zVN|MQxWUH!MyW^iY;+(tV(KZrMJnB>L-C~xhw_CJFKLJ7nsgy6;4zHHQSM{xQPn1W z@GW3*w??iL#u#M%vTRhO*y{{iEt3`fDfhNSAG!mc`Qjk8t@Ct=+jg;> z4`^Ctdvf%OlP_uGbEJLZZY*&^we)s`46z-| zT5?I;PhF&g@#l$u2G1xAHi*lu<^p{{dolbMw-30F8FvZ8?7_75jy;YD#u#1cosD=F zIIJz}57A?LSYGYE?MjU9n8#Y*2Fj6eb8%W>N9+L&<%NGw0wnb{1Wy^m>(F^w$BA4v}L-r1Z{4~#gDXjZBE-1yl0N6=yx~hw!Zy;L?;k5 zZ+Acr**!7^E{K&bOsFm=?iKC;rG)2&FH-YB6=QX)97>aF7dXROxg@5k8#e9=PEDv? zF+>=JJ`Yy?6=W9)I>@b^jOm&kPN`K|a))CMJ0V^>eJIe-6UJ$T62nCVdrCX2~~QSL1S;2sS3@;#`hwk#M5e!>2- z9EmKU9qZsjZ$?fXn!m?kPhIPWM(4$gC1b#?h0D0ixiE~M8^%0mDcdSRb91bxtWZZz zCkS}xAj?_zbSJ?I2(zXpgey}O^Zvs88`6K=mEG+}}CcggDO1|Xige(@AC zmPM`Lw7fP zU*=ga60JhDnNcrb;`!@z`phE}U_&W(8Ds3-?u(~=`-|2*xz*BdmT)E^>h28<0ad!f zkO86F@|wx5f`*L~;&shu$JqL^Ks$mCe03Hoh~WRaOJ4fDlqP|wB41o2T{1ciWCxj@ z&V~nZvSf;->n*1 z$kB7gWlU6qmSc%3!1cIwupHlYBBE9a3AhzeP8`F$z*Amx&n$9!|JF`#d4GYXbIye4 zJ+SQQnXez*8Fpo;P8DEEH+F$DXRbRoN+?agxz0DOFakIdw=?<*#t5Yy!zjxEaxcmY z4^pl=|9e|OBzZgId^+pZ zLfNqfT9bQ)_@iB`bN6L5Baz!W6605SAh5<2|%x{#(ph zj>EuyH?10(BLil76rx1=hd5i(%XPNqX>+|%;UQ;nCNFcbVUQ3A)M85$u)ypup5`;j zNr8eXl!o26!4Yq&Bq%XNh=XR=9N>IHlu*@CLFO|bvZC(;@- z$eVxQ8XIZ^{Eq%jX2~nQAL(@T#0`FARUvBQn!-KUvu$f-boNpQKRiHKnv&UHVz|e zB(*Mp&LuPwqkIB)zJuoW){H^v7-9>D!qRMe1IBe{wFef-6p~`-!2sZqCPufaUNNfF-rasZ~|IK#c6 zmX?YAaBMrL$gOhmmjU`ssyA=QO?;rCy&ydI0J5=&(;MY2CgZ@_q6v`~i5vi2)K#-W zt)&T!QJ0Ys7t{}*ph#5f+vdK%PW3H1IB9o#UZE-8*YhEW$E_k5{=*5$yAvtPMlrT1 zxmAV;&`<&`W1=fZ^sQytD7RM zq;JN=zQA%Rg=J6vr23yx;x7vLZn1@L<;#g$N0dw#h2$?1y`*8)W81*$Y|cLXeq|!( zsA|46H5oB>dyC*-h-J%=J)&S~3>e>6iCPSJohV{htl_LJz>$MJ!&-75C)Ef{>e z$@MvcrUy|PA^iExCV8Rn>tq_sVS#n%xSSR+DV~1}?L${u&o6E?$E3zeFKs^JB9Loc zDA3A_P?gtP9B$j~hMrT^wR4lvQ%qJmyrxCdbYUOf>|IrI9nol@eIxn{OT{*Rk6oo) z=nbpkhzKc4S!_J(6Rr7VC18cigkK5P%wnJtN6cNB6rSs)Y3Fe9ft5t{tx7~4^LTO# z4~<)C_kVV=TnD{5=` zpx9qw>Tl`}XpLn1__abHwk7(stth>9k!j$T#yn^Q`xr%^zz|m+D`NEWxv#*+-1Ue~ z8Y7}@sGc9yD`)3^0`)ZN3LHVD(KJfTD3LHg?E~KM#*c;M8pgs1Vbg?{UnCbfpUS`J zdevn~IH2(vQ==O>jfT!8A6o@C>?3K?+P=z4X&01$0S{uX>!RPaTC)7%o7~NyT}38dI`0%&ZWxb9Lm_Le&HH3eE73!@?&5?g z*=`jjucFq-*vl@WXN4w~+akZF94BljlQ(}Xk{2AAP=(>&Q{dE013aPqsA~9L?LqR| zb8ca0z&Izj;^j3Mk4~KS0!%P6u|Ku*i}Y!lJ*(Ar3iszww)P3aqNf5k|55vz!N?WV zl{JOzKySpoCbh)=d#baQ^JA>Q-W96v!iw)lhIeTP+vf%NhEyXk( z=zTIrsm4cAIF&&Gn|!vV&;{7rA=^+Hy2P05>cV1lZq#0iFms>1Yu`f(jj_|C+&x?E z92{$Nj~D(8!a~&`Y ziRY~9^*H{CGxUvrU254rlwH@?Fy@}p9^O&0o(w7TXLK=lH<0Bv)72IW3YTNdkjK60 z3H17S+HaFQ8mpQygxRi-8J$o4jK%iFN8F{_1z%lH?7XFy5MHdHd25OLTKf9g&ms28s=?G9q^-(W5MN{WA>TzZK#G$r-l=IirXa0%u}R&#dzbA)Yuw%fkRONwqk$K86SP`&&jQe`a3>thPLq-J-3Ff)Pb)O^x{~Q zX5TcUB5(`Q4@u$>R*)xLI4<$=#xc?c>EBxQHK=LK2BoV%rD0&N8(TsR`vBX;h3{OW z`EFDn`@TA+ThHv%LF~tW$$>O~%E_g&#qt!rZJ+}jC{GweI_J@@naLR4g|)v__<-P0 zV}xXHP&mFi8e(1MklxE(^tq^HJM&upysoFs2YJ-pA`Tq8?(TDi$bNf+@C3to1#Lb& z$qEEZQ0?gT|H|Gl#I567-U8=|-u#z)AWNLr!<>hekO+}6buklP6xoHtX@O+6Qu;a= z6(I)-!ne8i3Yx6}GHNN4$rYBZJBb-TKWNt2PT42#joaIAbNARmUVdpxjOxe%f32Ep zD7(Ls8GGQ*1qntYEMe!#kJW1Vp*rJ@dM}O+KJjV(-TLr$VdbvsM>W4yX0cvIPW2rJ zvoahbf<4Z>dVOQ?c>n3s*#6B9t4hA;m>W4?70oc%i1*4GbH&m)A4=SgnIXL z_j{o|_G+=Hny7J%6;8qDDQpby5l$AwHP_jK6}kx~%!xaB$9>#Sw{=e=Zi)BZ*VE_= zPT!C%<2h@kD^)!edHxiW<6zIL{ul3O-urvhz%1w461^9G(}vq})@Tg2#g zHAJso5;INT8Pr3QB?iEoWeuw&C*8t?idxGy{z6^eWdHJHd?`D>{Oc_EM)s}*eKqAA zeq@LAL%WW8bs_v#2~#(+pumjCidN||{FadtM?boG^UALA!?@4$A344z%WIlOme+ir z|2dwhOSQ^edOLL$Ah@oCO$pw_Zw!^i^kSHQJ!!-ZM4Vb7vPr z+PR;2!sy7X`wO+xAQNzS%B$}E(FX6P0^4imig*u3A%60I=hVP!z49c095 z$4k23WXV!l*4u+~mvRrK`;tCk2bhZj^mF9o$}^HOyv}vX$$#Mwl3z`0zlZIg&(I)# z)Lv@XfOG$fuw8Uh@oS>GH6?{$6^AnK3-@7n0&g&r^q!?8 z6Go&~sXtJmVfbE^0+DZ`P)s^>G=7@TPhN|5Nm9?z4-e7EC!z@7L_2PP@-QOXM}0TR zI-!d>HQrv<$hK4C;kK!zOH6x(l|!lH8xv^N);BX^#~N067OqXtyFp6chbL(UZw;~E zcafOIHah}t_2|FDBNZ$QT`u;0$a`o7g5HcgBhF!(EioH@1)9fI ze2nVq&pyWpn#pb;=VEpE5v!m`N40nrcb)0*4hrrM<&0so-FIN?2Z9vd&#)wrtVD;N zH&5rzf9U!+Tt$Zzo(nA3Yy4}v!;v$xYwR0LJx-w|P)IpIzr6{N#K54C-c5IH&FGRI z-<}=NXQZNM-jWjt-+L67A@&{RRB&|=`TNLDu2%G@7V^S~<3>;f_LB!@G_6Ia&ZyT* z8q5IASOfISLlV&}1Ww50gAleqgJI>T%+EZP<(6^ZcueksbD$;*zcjPvHWi zQE85NfbseYym~J-xt5=t!)7hCUot?m5IqBU=q|&&U3Hh?ZsZiiADg;{H|9*u)b%6C ze(HA6rGGMfPce8X?ntdFSM*=}41G_EZ|h>i$*SQ%-d#Q9^h|i*I0MdubXW(0D2Z4 z4^wqfv2SfCk+f54d`rf|U3)gYSsK!lyu#PULhi|7$UhnBXr_Viz*JpsXXj;%NDHd_ z#HK9JMwv>$fcE%gqS(FTtgt963Sud7EaH>H@P}-d&T!oNy{awd;;UC*`FTy;ni089 z(Q5gC!#jW6olrXke*5FfcD-WGj;zq6Z5Tu`H)P z%E7X~zJ1FKL-BWEB%>i6%2hl$n|y~7dcOoiah2YQz0+4!@=%(6Z$>d#fgMUA#cY2% zw#iX)!Ny%Je4n4^nH$m#b-&BbYmLam&iu7}?usprcQw9qwoZ%AtdtBDh}-zml!hPf zt>=%E)O8T+$r77R0;m}Tt4|k%n+|^vb#k<*EaM;hvwumBHxvW>O)$v-B5A zP{eF^kF(nR=&zm(#$jD%0Y>wDKl)nDHU0J;6?)0gwxmX-Hp}hdr#=YlkrywFq64P7 z8@cIN9owgrUBd}~pmQe@3DMsqfvb9SbPcF1m+#C>602%L3GIlB>qH%_ zoetN|aJM2q6PWXe-QXIA!a9|>eRyT~&)>>+ z`Eoti7yRf1;O+KWyFov;^RuVFW|yevAF}@p82uu{U*G{?IdAs+V;OKL0{H(O7oczr zfP#JgBdfm`=WjyJH6dHX+zNL8LFmF=ly&0ZERDin`u9a%lA94`+{hK-cnSVW!5u#e z_0=p8_!Fl2x(z>g#Me6X0N9N3UdZ~hN2zqSi~Ml*!nKl1xL$h&`o9)RaXUV`_QyW1)^+KPT9f5a@f$h}y=XwrOf2|A{jeVF~ne@XouK`}iUpz(WioU@Gyh{7iGOTEK38Uyb-!fS`(XzF(eYnvKLnUFcl+542*PXvF3|7aVEz9~{NNwt{G;8s z2|G^$e%LRYeQFL%fJK5IxcvO%f8-A2YI7+cZ%HbBf5c}ZH*6`(na;1p=( zGWpgB`}>>V)8g;O`+L3r+Y@}U&C-2GSNLx2DCXkCS%!tR zjV6tzD}p^NN-%GL8^q38MMJ{fM}mEn_&dDchi;twML?Q_)K$FKcgGxT|dKk56YO<<$uUuhmz@q5%?%s~QM88(W^ zSsI;I%KTjX0n2h{GwQnO1h9{kz-$Tm%66*$L=k`S-M=*|^#vOMT!3DVKTCZ(ML(zn z{FdKn{{^c*;{RFMSI-y;$X>T-nICQ{)Xp%Wm}w zVSp6Csp4+!^jp1AkQ9KVj;zY!LQfms?|X3)2LOGS#{DzQt}#G%u{XC>(8OCdZc zVc&$izf=8Zt+f@e-SBwAn=FJ{wo$p z_`f5X)o+h(zlTKLAX~+(WB}~?c7h)@7*D{M@7ZE-*5n}tFhGJoQS(nFCfT@?JoWBp9G_Fr7q%M5|Y0if$o;4=$=O3>G9m%m5M(6h0kUkAJo z`-;0nUI9x}7GU>M2BRx*BQgj4qK-WNN$7VH$4T(7mf$}_i$5~}dHgqJ5cdFxYyH#u zAMN(&{%b-XrvEb7heFRh08vAfuPrGEz1erm!_%l`-ZXI6`+B;>c~*~Jq6Nt#FNbG5== zKG*+3RIYB6ZDto5kfqV>2m8bS5NXL(@S3=wE0>Ix0_ZP>>KZUi0{vwvg>e${W5mh& zJXL~!uGZ7EK3(&-B>WR4@CWPjm$cqp^I+Zi`*q>J>lpECv)|+u@rw9rmPU^bInFC) zv$(^Wt@g>%Xx3ni|7qe;kyp(8YY4mz`;zE%(i5JC8aX?ZCA3Ln~ zC~=K=UF1#ReQ`-j`%UBjU%rFHeIjonZ;IcDZ>GCv@ZEn}Og7ufT9G%2&EneB|1XX0 zy^u$UM?~IaHi~=gI6Ax+e$OMt46y{6pv_{N_=EUDmPQ%{jEBdHe~7$;ST3%#JMia4 zpC0yoeo;)aY|WQN-a#x9W3n{TXyD~NNh}k22h(CFg)2;W_7;7+NleB_@m&kJS&Soo zNAjpRJWC^u3a!+qAQP>#SSOa)y>^N?*wU!`cT(2oa4}v?vHzz>5V+GBY!Eky1G6;J zXmV!S)nbjvyAW&a#PT=sN85#`o55|O*k6ox7~`BWU)h*MjG8=n49lRv9Q*dG6`}~-VryMcVEzUmCqxDGatF@6W{pqO}JL{afNMX4v~i zI_9U5M%yQaJ;e#)G839NyP?3pE*6NHR`36FSsH1i(U5Z3)$9rvird9wVg-t7b_VOk zD;6tpoBh8XErw=kq>)C4o*Z^EJHrHVszuNJOx$dD?&rj-Ca@kaJN!%BFMcoP*?;p? h%d*@j<>L38@juW58%rJ)s)hgn002ovPDHLkV1g>l@F@TQ literal 0 HcmV?d00001 diff --git a/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html b/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html new file mode 100644 index 000000000..3dce6aad9 --- /dev/null +++ b/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html @@ -0,0 +1,999 @@ + + + + + 30 Seconds of CSS + + + + + + +

+
+
+
+ +

30 Seconds of CSS

+

+ A curated collection of useful CSS snippets you can understand in 30 seconds or less. +

+ + + Star +
+
+
+
+
+

Clearfix

+

Ensures that an element self-clears its children.

+
Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.
+

HTML

<div class="clearfix">
+  <div class="floated">float a</div>
+  <div class="floated">float b</div>
+  <div class="floated">float c</div>
+</div>
+
+

CSS

.clearfix::after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.floated {
+  float: left;
+}
+
+

Demo

+
+
+
float a
+
float b
+
float c
+
+
+ +

Explanation

+
    +
  1. .clearfix::after defines a pseudo element.
  2. +
  3. content: '' allows the pseudo element to affect layout.
  4. +
  5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
  6. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Custom text selection

+

Changes the styling of text selection.

+

HTML

<p class="custom-text-selection">Select some of this text.</p>
+
+

CSS

.custom-text-selection::selection {
+  background: red;
+  color: white;
+}
+
+

Demo

+
+

Select some of this text.

+
+ +

Explanation

+

::selection defines a pseudo selector on an element to style text within it when selected.

+

Browser support

+
+
+ 84.6% +
+
+

⚠️ Requires prefixes for full support and is not actually +in any specification.

+ +
+
+

Easing variables

+

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

+

HTML

<div class="easing-variables"></div>
+
+

CSS

:root {
+  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
+  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
+  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
+  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
+  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
+  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
+  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
+  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
+  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
+  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
+  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
+  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
+  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
+  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
+  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
+}
+.easing-variables {
+  width: 50px;
+  height: 50px;
+  background: #333;
+  transition: transform 1s var(--ease-out-quart);
+}
+.easing-variables:hover {
+  transform: rotate(45deg);
+}
+
+

Demo

+
+
Hover
+
+ +

Explanation

+

The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

+

Browser support

+
+
+ 87.2% +
+
+

✅ No caveats.

+ +
+
+

Etched text

+

Creates an effect where text appears to be "etched" or engraved into the background.

+

HTML

<p class="etched-text">I appear etched into the background.</p>
+
+

CSS

.etched-text {
+  text-shadow: 0 2px white;
+  font-size: 1.5rem;
+  font-weight: bold;
+  color: #b8bec5;
+}
+
+

Demo

+
+

I appear etched into the background.

+
+ +

Explanation

+

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

+

The background must be darker than the shadow for the effect to work.

+

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

+

Browser support

+
+
+ 97.9% +
+
+

✅ No caveats.

+ +
+
+

Gradient text

+

Gives text a gradient color.

+

HTML

<p class="gradient-text">Gradient text</p>
+
+

CSS

.gradient-text {
+  background: -webkit-linear-gradient(pink, red);
+  -webkit-text-fill-color: transparent;
+  -webkit-background-clip: text;
+}
+
+

Demo

+
+

+ Gradient text +

+
+ +

Explanation

+
    +
  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. +
  3. webkit-text-fill-color: transparent fills the text with a transparent color.
  4. +
  5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
  6. +
+

Browser support

+
+
+ 90.7% +
+
+

⚠️ Uses non-standard properties.

+ +
+
+

Hairline border

+

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

+

HTML

<div class="hairline-border">text</div>
+
+

CSS

.hairline-border {
+  box-shadow: 0 0 0 1px;
+}
+@media (min-resolution: 2dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.5px;
+  }
+}
+@media (min-resolution: 3dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.33333333px;
+  }
+}
+@media (min-resolution: 4dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.25px;
+  }
+}
+
+

Demo

+
+

Text with a hairline border around it.

+
+ +

Explanation

+
    +
  1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
  2. +
  3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
  4. +
+

Browser Support

+
+
+ 95.0% +
+
+

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

+ +
+

*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

+
+
+

Horizontal and vertical centering

+

Horizontally and vertically centers a child element within a parent element.

+

HTML

<div class="horizontal-and-vertical-centering">
+  <div class="child"></div>
+</div>
+
+

CSS

.horizontal-and-vertical-centering {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+

Demo

+
+
+

Centered content.

+
+
+ +

Explanation

+
    +
  1. display: flex enables flexbox.
  2. +
  3. justify-content: center centers the child horizontally.
  4. +
  5. align-items: center centers the child vertically.
  6. +
+

Browser support

+
+
+ 97.8% +
+
+

⚠️ Needs prefixes for full support.

+ +
+
+

Mouse cursor gradient tracking

+

A hover effect where the gradient follows the mouse cursor.

+

HTML

<button class="mouse-cursor-gradient-tracking">
+  <span>Hover me</span>
+</button>
+
+

CSS

.mouse-cursor-gradient-tracking {
+  position: relative;
+  background: #2379f7;
+  padding: 0.5rem 1rem;
+  font-size: 1.2rem;
+  border: none;
+  color: white;
+  cursor: pointer;
+  outline: none;
+  overflow: hidden;
+}
+.mouse-cursor-gradient-tracking span {
+  position: relative;
+}
+.mouse-cursor-gradient-tracking::before {
+  --size: 0;
+  content: '';
+  position: absolute;
+  left: var(--x);
+  top: var(--y);
+  width: var(--size);
+  height: var(--size);
+  background: radial-gradient(circle closest-side, pink, transparent);
+  transform: translate(-50%, -50%);
+  transition: width .2s ease, height .2s ease;
+}
+.mouse-cursor-gradient-tracking:hover::before {
+  --size: 200px;
+}
+
+

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
+btn.onmousemove = function (e) {
+  var x = e.pageX - btn.offsetLeft
+  var y = e.pageY - btn.offsetTop
+  btn.style.setProperty('--x', x + 'px')
+  btn.style.setProperty('--y', y + 'px')
+}
+
+

Demo

+
+ +
+ + +

Explanation

+

TODO

+

Note!

+

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

+
var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
+var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
+
+

Browser support

+
+
+ 87.2% +
+
+

+
Requires JavaScript
+ ⚠️ Requires JavaScript. +

+ +
+
+

Overflow scroll gradient

+

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

+

HTML

<div class="overflow-scroll-gradient">
+  <div class="overflow-scroll-gradient__scroller">
+    Content to be scrolled
+  </div>
+</div>
+
+

CSS

.overflow-scroll-gradient {
+  position: relative;
+}
+.overflow-scroll-gradient::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  width: 300px;
+  height: 25px;
+  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
+}
+.overflow-scroll-gradient__scroller {
+  overflow-y: scroll;
+  background: white;
+  width: 300px;
+  height: 250px;
+  padding: 15px 0;
+  line-height: 1.2;
+  text-align: center;
+}
+
+

Demo

+
+
+
+ Content to be scrolled +
+
+
+ + +

Explanation

+
    +
  1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  10. +
  11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Popout menu

+

Reveals an interactive popout menu on hover.

+

HTML

<div class="reference">
+  <div class="popout-menu">
+    Popout menu
+  </div>
+</div>
+
+

CSS

.reference {
+  position: relative;
+}
+.popout-menu {
+  position: absolute;
+  visibility: hidden;
+  left: 100%;
+}
+.reference:hover > .popout-menu {
+  visibility: visible;
+}
+
+

Demo

+
+
+
+ Popout menu +
+
+
+ +

Explanation

+
    +
  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. +
  3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  4. +
  5. left: 100% moves the the popout menu 100% of its parent's width from the left.
  6. +
  7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  8. +
  9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, + which shows the popout.
  10. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Pretty text underline

+

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

+

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
+
+

CSS

.pretty-text-underline {
+  display: inline;
+  font-size: 1.25rem;
+  text-shadow: 1px 1px 0 #f5f6f9,
+    -1px 1px 0 #f5f6f9,
+    -1px -1px 0 #f5f6f9,
+    1px -1px 0 #f5f6f9;
+  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
+  background-position: 0 1.04em;
+  background-repeat: repeat-x;
+  background-size: 1px 1px;
+}
+.pretty-text-underline::selection {
+  background-color: rgba(0, 150, 255, 0.3);
+  text-shadow: none;
+}
+
+

Demo

+
+

Pretty text underline without clipping descending letters.

+
+ +

Explanation

+
    +
  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use + a larger px size.
  2. +
  3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  4. +
  5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  6. +
  7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. +
  8. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Shape separator

+

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

+

HTML

<div class="shape-separator"></div>
+
+

CSS

.shape-separator {
+  position: relative;
+  height: 48px;
+}
+.shape-separator::after {
+  content: '';
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
+  position: absolute;
+  width: 100%;
+  height: 24px;
+  bottom: 0;
+}
+
+

Demo

+
+
+
+ +

Explanation

+
    +
  1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. +
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 100% ensures the element stretches the entire width of its parent.
  10. +
  11. height: 24px is the same height as the shape.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 98.0% +
+
+

✅ No caveats.

+ +
+
+

System font stack

+

Uses the native font of the operating system to get close to a native app feel.

+

HTML

<p class="system-font-stack">This text uses the system font.</p>
+
+

CSS

.system-font-stack {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+

Demo

+
+

This text uses the system font.

+
+ +

Explanation

+

The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

+
    +
  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. +
  3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  4. +
  5. Segoe UI is used on Windows 10
  6. +
  7. Roboto is used on Android
  8. +
  9. Oxygen-Sans is used on GNU+Linux
  10. +
  11. Ubuntu is used on Linux
  12. +
  13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  14. +
  15. Arial is a font widely supported by all operating systems
  16. +
  17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
  18. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Triangle

+

Creates a triangle shape with pure CSS.

+

HTML

<div class="triangle"></div>
+
+

CSS

.triangle {
+  width: 0;
+  height: 0;
+  border-top: 20px solid #333;
+  border-left: 20px solid transparent;
+  border-right: 20px solid transparent;
+}
+
+

Demo

+
+
+
+
+
+
+
+
+
+ +

Explanation

+

+ View this link for a detailed explanation. +

+

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

+

Experiment with the px values to change the proportion of the triangle.

+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Truncate text

+

If the text is longer than one line, it will be truncated and end with an ellipsis ....

+

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
+
+

CSS

.truncate-text {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+

Demo

+
+

+ This text will be truncated if it exceeds 200px in width. +

+
+ +

Explanation

+
    +
  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. +
  3. white-space: nowrap prevents the text from exceeding one line in height.
  4. +
  5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  6. +
+

Browser support

+
+
+ 98.1% +
+
+

✅ No caveats.

+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.css b/dist/f06fd0495a34430f242f7611190395d6.css new file mode 100644 index 000000000..3a01d8859 --- /dev/null +++ b/dist/f06fd0495a34430f242f7611190395d6.css @@ -0,0 +1,1620 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * 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; +} + +/* Grouping content + ========================================================================== */ + +/** + * 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 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 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 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * 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; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * 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; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * 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; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 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 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +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 in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 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 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} +code[class*='language-'], +pre[class*='language-'] { + color: rgb(50, 75, 100); + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 2; + font-size: 1rem; + -webkit-overflow-scrolling: touch; + margin: 0; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*='language-']::-moz-selection, +pre[class*='language-'] ::-moz-selection, +code[class*='language-']::-moz-selection, +code[class*='language-'] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*='language-'] { + overflow: auto; + padding: 0.75rem 1.25rem; +} + +pre.is-option { + margin: 0; + padding: 0; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #f5f6f9; + border-radius: 0.25rem; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8ca2d3; +} + +.token.selector, +.token.attr-name { + color: #da7800; +} + +.token.punctuation { + color: #93a0c7; +} + +.namespace { + opacity: 0.7; +} + +.token.tag { + color: #e22f70; +} + +.token.property, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #0087ca; +} + +.token.string, +.language-css .token.string, +.token.url, +.token.attr-value, +.token.char, +.token.builtin, +.token.inserted { + color: #008a7e; +} + +.token.operator, +.token.entity, +.style .token.string { + color: #f53737; +} + +.token.important, +.token.atrule, +.token.keyword { + color: #7552ff; +} + +.token.function { + color: #396dff; +} + +.token.regex, +.token.variable { + color: #00a8d4; +} + +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} +html { + font-size: 0.95rem; } + +body { + font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; + background: #f6f7fd; + color: #324b64; + line-height: 1.5; } + +a { + color: #157bda; + text-decoration: none; + word-wrap: break-word; + overflow-wrap: break-word; } + a:hover { + color: #0090ff; } + +hr { + border: 0; + border-top: 1px solid rgba(0, 32, 128, 0.1); } + +ul, +ol { + padding-left: 1.25rem; } + +.container { + max-width: 1000px; + padding: 0 2%; + margin: 0 auto; } + +.main > .container { + padding: 0; } + +@media (min-width: 579px) { + .main > .container { + padding: 0 2%; } } + +@media (min-width: 768px) { + html { + font-size: 1rem; } } + +@media (min-width: 992px) { + .content-wrapper { + margin-left: 200px; } } + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */ +.hamburger { + padding: 1rem; + display: inline-block; + cursor: pointer; + transition-property: opacity, filter; + transition-duration: 0.15s; + transition-timing-function: linear; + font: inherit; + color: inherit; + text-transform: none; + background-color: transparent; + border: 0; + margin: 0; + overflow: visible; + outline: 0; } + +.hamburger:hover { + opacity: 0.7; } + +.hamburger-box { + width: 40px; + height: 20px; + display: inline-block; + position: relative; } + +.hamburger-inner { + display: block; + top: 50%; } + +.hamburger-inner, +.hamburger-inner::before, +.hamburger-inner::after { + width: 36px; + height: 2px; + background-color: #e3f5ff; + border-radius: 4px; + position: absolute; + transition-property: transform; + transition-duration: 0.15s; + transition-timing-function: ease; } + +.hamburger-inner::before, +.hamburger-inner::after { + content: ''; + display: block; } + +.hamburger-inner::before { + top: -10px; } + +.hamburger-inner::after { + bottom: -10px; } + +/* + * 3DX + */ +.hamburger--3dx .hamburger-box { + perspective: 80px; } + +.hamburger--3dx .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx .hamburger-inner::before, +.hamburger--3dx .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(180deg); } + +.hamburger--3dx.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dx.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DX Reverse + */ +.hamburger--3dx-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dx-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx-r .hamburger-inner::before, +.hamburger--3dx-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(-180deg); } + +.hamburger--3dx-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dx-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DY + */ +.hamburger--3dy .hamburger-box { + perspective: 80px; } + +.hamburger--3dy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy .hamburger-inner::before, +.hamburger--3dy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(-180deg); } + +.hamburger--3dy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DY Reverse + */ +.hamburger--3dy-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy-r .hamburger-inner::before, +.hamburger--3dy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg); } + +.hamburger--3dy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DXY + */ +.hamburger--3dxy .hamburger-box { + perspective: 80px; } + +.hamburger--3dxy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy .hamburger-inner::before, +.hamburger--3dxy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg); } + +.hamburger--3dxy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dxy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DXY Reverse + */ +.hamburger--3dxy-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dxy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy-r .hamburger-inner::before, +.hamburger--3dxy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } + +.hamburger--3dxy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dxy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * Arrow + */ +.hamburger--arrow.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +.hamburger--arrow.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +/* + * Arrow Right + */ +.hamburger--arrow-r.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +.hamburger--arrow-r.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +/* + * Arrow Alt + */ +.hamburger--arrowalt .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +.hamburger--arrowalt.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +/* + * Arrow Alt Right + */ +.hamburger--arrowalt-r .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt-r .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt-r.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +.hamburger--arrowalt-r.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +/* + * Arrow Turn + */ +.hamburger--arrowturn.is-active .hamburger-inner { + transform: rotate(-180deg); } + +.hamburger--arrowturn.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +.hamburger--arrowturn.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +/* + * Arrow Turn Right + */ +.hamburger--arrowturn-r.is-active .hamburger-inner { + transform: rotate(-180deg); } + +.hamburger--arrowturn-r.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +.hamburger--arrowturn-r.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +/* + * Boring + */ +.hamburger--boring .hamburger-inner, +.hamburger--boring .hamburger-inner::before, +.hamburger--boring .hamburger-inner::after { + transition-property: none; } + +.hamburger--boring.is-active .hamburger-inner { + transform: rotate(45deg); } + +.hamburger--boring.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--boring.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); } + +/* + * Collapse + */ +.hamburger--collapse .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } + +.hamburger--collapse .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--collapse.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } + +.hamburger--collapse.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Collapse Reverse + */ +.hamburger--collapse-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } + +.hamburger--collapse-r .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--collapse-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } + +.hamburger--collapse-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Elastic + */ +.hamburger--elastic .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; } + +.hamburger--elastic .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(135deg); + transition-delay: 0.075s; } + +.hamburger--elastic.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; } + +.hamburger--elastic.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-270deg); + transition-delay: 0.075s; } + +/* + * Elastic Reverse + */ +.hamburger--elastic-r .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic-r .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; } + +.hamburger--elastic-r .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-135deg); + transition-delay: 0.075s; } + +.hamburger--elastic-r.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; } + +.hamburger--elastic-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(270deg); + transition-delay: 0.075s; } + +/* + * Emphatic + */ +.hamburger--emphatic { + overflow: hidden; } + +.hamburger--emphatic .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; } + +.hamburger--emphatic .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } + +.hamburger--emphatic .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } + +.hamburger--emphatic.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; } + +.hamburger--emphatic.is-active .hamburger-inner::before { + left: -80px; + top: -80px; + transform: translate3d(80px, 80px, 0) rotate(45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +.hamburger--emphatic.is-active .hamburger-inner::after { + right: -80px; + top: -80px; + transform: translate3d(-80px, 80px, 0) rotate(-45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +/* + * Emphatic Reverse + */ +.hamburger--emphatic-r { + overflow: hidden; } + +.hamburger--emphatic-r .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; } + +.hamburger--emphatic-r.is-active .hamburger-inner::before { + left: -80px; + top: 80px; + transform: translate3d(80px, -80px, 0) rotate(-45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +.hamburger--emphatic-r.is-active .hamburger-inner::after { + right: -80px; + top: 80px; + transform: translate3d(-80px, -80px, 0) rotate(45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +/* + * Minus + */ +.hamburger--minus .hamburger-inner::before, +.hamburger--minus .hamburger-inner::after { + transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } + +.hamburger--minus.is-active .hamburger-inner::before, +.hamburger--minus.is-active .hamburger-inner::after { + opacity: 0; + transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } + +.hamburger--minus.is-active .hamburger-inner::before { + top: 0; } + +.hamburger--minus.is-active .hamburger-inner::after { + bottom: 0; } + +/* + * Slider + */ +.hamburger--slider .hamburger-inner { + top: 2px; } + +.hamburger--slider .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; } + +.hamburger--slider .hamburger-inner::after { + top: 20px; } + +.hamburger--slider.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--slider.is-active .hamburger-inner::before { + transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); + opacity: 0; } + +.hamburger--slider.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-90deg); } + +/* + * Slider Reverse + */ +.hamburger--slider-r .hamburger-inner { + top: 2px; } + +.hamburger--slider-r .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; } + +.hamburger--slider-r .hamburger-inner::after { + top: 20px; } + +.hamburger--slider-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-45deg); } + +.hamburger--slider-r.is-active .hamburger-inner::before { + transform: rotate(45deg) translate3d(5.71429px, -6px, 0); + opacity: 0; } + +.hamburger--slider-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(90deg); } + +/* + * Spin + */ +.hamburger--spin .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } + +.hamburger--spin .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin.is-active .hamburger-inner { + transform: rotate(225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spin.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } + +.hamburger--spin.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Spin Reverse + */ +.hamburger--spin-r .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin-r .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } + +.hamburger--spin-r .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin-r.is-active .hamburger-inner { + transform: rotate(-225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spin-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } + +.hamburger--spin-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Spring + */ +.hamburger--spring .hamburger-inner { + top: 2px; + transition: background-color 0s 0.13s linear; } + +.hamburger--spring .hamburger-inner::before { + top: 10px; + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring .hamburger-inner::after { + top: 20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring.is-active .hamburger-inner { + transition-delay: 0.22s; + background-color: transparent; } + +.hamburger--spring.is-active .hamburger-inner::before { + top: 0; + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--spring.is-active .hamburger-inner::after { + top: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(-45deg); } + +/* + * Spring Reverse + */ +.hamburger--spring-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } + +.hamburger--spring-r .hamburger-inner::before { + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spring-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } + +.hamburger--spring-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Stand + */ +.hamburger--stand .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } + +.hamburger--stand .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand.is-active .hamburger-inner { + transform: rotate(90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } + +.hamburger--stand.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--stand.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Stand Reverse + */ +.hamburger--stand-r .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } + +.hamburger--stand-r .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand-r .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand-r.is-active .hamburger-inner { + transform: rotate(-90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } + +.hamburger--stand-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--stand-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Squeeze + */ +.hamburger--squeeze .hamburger-inner { + transition-duration: 0.075s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--squeeze .hamburger-inner::before { + transition: top 0.075s 0.12s ease, opacity 0.075s ease; } + +.hamburger--squeeze .hamburger-inner::after { + transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--squeeze.is-active .hamburger-inner { + transform: rotate(45deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--squeeze.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.075s ease, opacity 0.075s 0.12s ease; } + +.hamburger--squeeze.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Vortex + */ +.hamburger--vortex .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex .hamburger-inner::before, +.hamburger--vortex .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; } + +.hamburger--vortex .hamburger-inner::before { + transition-property: top, opacity; } + +.hamburger--vortex .hamburger-inner::after { + transition-property: bottom, transform; } + +.hamburger--vortex.is-active .hamburger-inner { + transform: rotate(765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex.is-active .hamburger-inner::before, +.hamburger--vortex.is-active .hamburger-inner::after { + transition-delay: 0s; } + +.hamburger--vortex.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--vortex.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); } + +/* + * Vortex Reverse + */ +.hamburger--vortex-r .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex-r .hamburger-inner::before, +.hamburger--vortex-r .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; } + +.hamburger--vortex-r .hamburger-inner::before { + transition-property: top, opacity; } + +.hamburger--vortex-r .hamburger-inner::after { + transition-property: bottom, transform; } + +.hamburger--vortex-r.is-active .hamburger-inner { + transform: rotate(-765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex-r.is-active .hamburger-inner::before, +.hamburger--vortex-r.is-active .hamburger-inner::after { + transition-delay: 0s; } + +.hamburger--vortex-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--vortex-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); } + +.sidebar { + background: #202e4e; + position: fixed; + z-index: 2; + width: 100%; + height: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } + .sidebar__menu { + position: absolute; + font-weight: bold; + border: none; + text-align: left; + text-transform: uppercase; + left: 0; + top: 0; + padding: 0.75rem 1rem; + outline: 0; } + .sidebar__menu-icon { + height: 24px; } + .sidebar__links { + background: #202e4e; + overflow-y: auto; + transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + transform-origin: 0% 0%; + transform: rotateX(-90deg); + visibility: hidden; + opacity: 0; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + max-height: 378px; + margin-top: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } + .sidebar__links.is-active { + transform: rotateX(0); + visibility: visible; + opacity: 1; } + .sidebar__link { + display: block; + color: #e3f5ff; + padding: 0.5rem 0.75rem; + transition: all 0.1s ease-out; + border-left: 2px solid #576a85; + margin: 0.5rem; + font-weight: 500; + font-size: 0.95rem; } + .sidebar__link:hover { + color: #88f4ff; + background: rgba(255, 255, 255, 0.1); + border-color: pink; } + +@media (min-width: 992px) { + .sidebar { + left: 0; + top: 0; + bottom: 0; + width: 15%; + max-width: 250px; + min-width: 200px; + height: 100%; + background: linear-gradient(-30deg, #2a3d67, #14264e); + box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); + overflow-y: auto; + color: white; } + .sidebar::-webkit-scrollbar-track { + background-color: rgba(0, 0, 0, 0.6); } + .sidebar::-webkit-scrollbar { + width: 10px; + background-color: #4b6191; } + .sidebar::-webkit-scrollbar-thumb { + background-color: #4b6191; } + .sidebar__links { + background: none; + box-shadow: none; + visibility: visible; + opacity: 1; + transform: rotateX(0); + margin-top: 0; + max-height: none; } + .sidebar__menu { + display: none; } } + +.header { + position: relative; + padding: 5rem 1rem 4rem; + background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); + color: white; + margin-bottom: 2rem; + text-align: center; + overflow: hidden; + z-index: 1; } + .header::before { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); + width: 150%; + height: 150%; + top: 0; + left: 0; + opacity: 0.1; + z-index: -1; } + .header::after { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); + background-size: 24px 24px; + width: 100%; + left: 0; + height: 24px; + bottom: -1px; } + .header__logo { + height: 146px; + user-select: none; } + .header__heading { + font-weight: 200; + font-size: 3rem; + margin: 1rem 0; + line-height: 1.2; } + .header__description { + font-size: 1.5rem; + max-width: 600px; + margin: 0 auto 1rem; + font-weight: 300; + letter-spacing: 0.4px; } + .header__css { + background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-size: 4rem; } + .header__github-button { + color: white; } + +@media (min-width: 579px) { + .header { + padding: 6rem 0 5rem; } + .header__heading { + font-size: 3.75rem; } } + +@media (min-width: 992px) { + .header { + padding: 2.5rem 0 5rem; } } + +.snippet { + position: relative; + background: white; + padding: 2rem 5%; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; + border-radius: 0.25rem; + font-size: 1.1rem; + margin-bottom: 1.5rem; } + .snippet h3 { + font-size: 2rem; + padding: 0.5rem 0; + border-bottom: 1px solid rgba(0, 32, 128, 0.1); + margin-bottom: 1.25rem; + margin-top: 0; + line-height: 1.3; } + .snippet code:not([class*='lang']) { + background: #fcfaff; + border: 1px solid #e2ddff; + color: #4b00da; + border-radius: 0.15rem; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 0.9rem; + padding: 0.2rem 0.4rem; + margin: 0 0.1rem; } + .snippet ol { + margin-top: 0.5rem; } + .snippet ol > li { + margin-bottom: 0.5rem; } + .snippet > p { + margin-top: 0.5rem; } + .snippet h4 { + display: inline-block; + margin: 1rem 0 0.5rem; + line-height: 2; + padding: 0 0.5rem; + border-radius: 3px; + font-size: 0.9rem; + text-transform: uppercase; + background: #333; + border: 1px solid #c6d6ea; + border-bottom-color: #b3c9e3; + background: white; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } + .snippet h4[data-type='HTML'] { + color: white; + border: none; + background: linear-gradient(135deg, #ff4c9f, #ff7b74); } + .snippet h4[data-type='CSS'] { + color: white; + border: none; + background: linear-gradient(135deg, #7983ff, #5f9de9); } + .snippet h4[data-type='JavaScript'] { + color: white; + border: none; + background: linear-gradient(135deg, #ffb000, #f58818); } + .snippet__browser-support { + display: inline-block; + font-size: 2rem; + font-weight: 200; + line-height: 1; + margin: 0.5rem 0; } + .snippet__subheading.is-html { + color: #e22f70; } + .snippet__subheading.is-css { + color: #0a91d4; } + .snippet__subheading.is-explanation { + color: #4b00da; } + .snippet__support-note { + color: #9fa5b5; + font-weight: bold; } + .snippet__requires-javascript { + position: absolute; + background: red; + background: linear-gradient(145deg, #ff003b, #ff4b39); + color: white; + padding: 0.25rem 0.5rem; + font-size: 0.9rem; + transform: rotate(20deg); + font-weight: bold; + top: 1rem; + right: 0; } + +.snippet-demo { + background: #f5f6f9; + border-radius: 0.25rem; + padding: 0.75rem 1.25rem; } + .snippet-demo.is-distinct { + background: linear-gradient(135deg, #ff4c9f, #ff7b74); } + +@media (min-width: 768px) { + .snippet__requires-javascript { + right: -0.5rem; } } + +.back-to-top-button { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + font-size: 2rem; + font-weight: bold; + background: white; + width: 4rem; + height: 4rem; + position: fixed; + right: 2rem; + bottom: 2rem; + border-radius: 50%; + user-select: none; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); + transition: all 0.2s ease-out; + visibility: hidden; + opacity: 0; + z-index: 1; + border: 1px solid rgba(0, 32, 128, 0.1); + outline: 0; } + .back-to-top-button:hover, .back-to-top-button:focus { + transform: scale(1.1); + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); + color: #35a8ff; } + .back-to-top-button:focus { + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; } + .back-to-top-button.is-visible { + visibility: visible; + opacity: 1; } diff --git a/dist/f06fd0495a34430f242f7611190395d6.js b/dist/f06fd0495a34430f242f7611190395d6.js new file mode 100644 index 000000000..f1cb9279d --- /dev/null +++ b/dist/f06fd0495a34430f242f7611190395d6.js @@ -0,0 +1,1479 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles + +// eslint-disable-next-line no-global-assign +require = (function (modules, cache, entry) { + // Save the require from previous bundle to this closure if any + var previousRequire = typeof require === "function" && require; + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = typeof require === "function" && require; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + + var module = cache[name] = new newRequire.Module(name); + + modules[name][0].call(module.exports, localRequire, module, module.exports); + } + + return cache[name].exports; + + function localRequire(x){ + return newRequire(localRequire.resolve(x)); + } + + function resolve(x){ + return modules[name][1][x] || x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + + for (var i = 0; i < entry.length; i++) { + newRequire(entry[i]); + } + + // Override the current require with this new one + return newRequire; +})({13:[function(require,module,exports) { +var bundleURL = null; +function getBundleURLCached() { + if (!bundleURL) { + bundleURL = getBundleURL(); + } + + return bundleURL; +} + +function getBundleURL() { + // Attempt to find the URL of the current script and use that as the base URL + try { + throw new Error(); + } catch (err) { + var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); + if (matches) { + return getBaseURL(matches[0]); + } + } + + return '/'; +} + +function getBaseURL(url) { + return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; +} + +exports.getBundleURL = getBundleURLCached; +exports.getBaseURL = getBaseURL; +},{}],10:[function(require,module,exports) { +var bundle = require('./bundle-url'); + +function updateLink(link) { + var newLink = link.cloneNode(); + newLink.onload = function () { + link.remove(); + }; + newLink.href = link.href.split('?')[0] + '?' + Date.now(); + link.parentNode.insertBefore(newLink, link.nextSibling); +} + +var cssTimeout = null; +function reloadCSS() { + if (cssTimeout) { + return; + } + + cssTimeout = setTimeout(function () { + var links = document.querySelectorAll('link[rel="stylesheet"]'); + for (var i = 0; i < links.length; i++) { + if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { + updateLink(links[i]); + } + } + + cssTimeout = null; + }, 50); +} + +module.exports = reloadCSS; +},{"./bundle-url":13}],14:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":10}],15:[function(require,module,exports) { +var global = (1,eval)("this"); + +/* ********************************************** + Begin prism-core.js +********************************************** */ + +var _self = (typeof window !== 'undefined') + ? window // if in browser + : ( + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) + ? self // if in worker + : {} // if in node js + ); + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * MIT license http://www.opensource.org/licenses/mit-license.php/ + * @author Lea Verou http://lea.verou.me + */ + +var Prism = (function(){ + +// Private helper vars +var lang = /\blang(?:uage)?-(\w+)\b/i; +var uniqueId = 0; + +var _ = _self.Prism = { + manual: _self.Prism && _self.Prism.manual, + disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, + util: { + encode: function (tokens) { + if (tokens instanceof Token) { + return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); + } else if (_.util.type(tokens) === 'Array') { + return tokens.map(_.util.encode); + } else { + return tokens.replace(/&/g, '&').replace(/ text.length) { + // Something went terribly wrong, ABORT, ABORT! + return; + } + + if (str instanceof Token) { + continue; + } + + pattern.lastIndex = 0; + + var match = pattern.exec(str), + delNum = 1; + + // Greedy patterns can override/remove up to two previously matched tokens + if (!match && greedy && i != strarr.length - 1) { + pattern.lastIndex = pos; + match = pattern.exec(text); + if (!match) { + break; + } + + var from = match.index + (lookbehind ? match[1].length : 0), + to = match.index + match[0].length, + k = i, + p = pos; + + for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { + p += strarr[k].length; + // Move the index i to the element in strarr that is closest to from + if (from >= p) { + ++i; + pos = p; + } + } + + /* + * If strarr[i] is a Token, then the match starts inside another Token, which is invalid + * If strarr[k - 1] is greedy we are in conflict with another greedy pattern + */ + if (strarr[i] instanceof Token || strarr[k - 1].greedy) { + continue; + } + + // Number of tokens to delete and replace with the new match + delNum = k - i; + str = text.slice(pos, p); + match.index -= pos; + } + + if (!match) { + if (oneshot) { + break; + } + + continue; + } + + if(lookbehind) { + lookbehindLength = match[1].length; + } + + var from = match.index + lookbehindLength, + match = match[0].slice(lookbehindLength), + to = from + match.length, + before = str.slice(0, from), + after = str.slice(to); + + var args = [i, delNum]; + + if (before) { + ++i; + pos += before.length; + args.push(before); + } + + var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); + + args.push(wrapped); + + if (after) { + args.push(after); + } + + Array.prototype.splice.apply(strarr, args); + + if (delNum != 1) + _.matchGrammar(text, strarr, grammar, i, pos, true, token); + + if (oneshot) + break; + } + } + } + }, + + tokenize: function(text, grammar, language) { + var strarr = [text]; + + var rest = grammar.rest; + + if (rest) { + for (var token in rest) { + grammar[token] = rest[token]; + } + + delete grammar.rest; + } + + _.matchGrammar(text, strarr, grammar, 0, 0, false); + + return strarr; + }, + + hooks: { + all: {}, + + add: function (name, callback) { + var hooks = _.hooks.all; + + hooks[name] = hooks[name] || []; + + hooks[name].push(callback); + }, + + run: function (name, env) { + var callbacks = _.hooks.all[name]; + + if (!callbacks || !callbacks.length) { + return; + } + + for (var i=0, callback; callback = callbacks[i++];) { + callback(env); + } + } + } +}; + +var Token = _.Token = function(type, content, alias, matchedStr, greedy) { + this.type = type; + this.content = content; + this.alias = alias; + // Copy of the full string this token was created from + this.length = (matchedStr || "").length|0; + this.greedy = !!greedy; +}; + +Token.stringify = function(o, language, parent) { + if (typeof o == 'string') { + return o; + } + + if (_.util.type(o) === 'Array') { + return o.map(function(element) { + return Token.stringify(element, language, o); + }).join(''); + } + + var env = { + type: o.type, + content: Token.stringify(o.content, language, parent), + tag: 'span', + classes: ['token', o.type], + attributes: {}, + language: language, + parent: parent + }; + + if (o.alias) { + var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; + Array.prototype.push.apply(env.classes, aliases); + } + + _.hooks.run('wrap', env); + + var attributes = Object.keys(env.attributes).map(function(name) { + return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; + }).join(' '); + + return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; + +}; + +if (!_self.document) { + if (!_self.addEventListener) { + // in Node.js + return _self.Prism; + } + + if (!_.disableWorkerMessageHandler) { + // In worker + _self.addEventListener('message', function (evt) { + var message = JSON.parse(evt.data), + lang = message.language, + code = message.code, + immediateClose = message.immediateClose; + + _self.postMessage(_.highlight(code, _.languages[lang], lang)); + if (immediateClose) { + _self.close(); + } + }, false); + } + + return _self.Prism; +} + +//Get current script and highlight +var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); + +if (script) { + _.filename = script.src; + + if (!_.manual && !script.hasAttribute('data-manual')) { + if(document.readyState !== "loading") { + if (window.requestAnimationFrame) { + window.requestAnimationFrame(_.highlightAll); + } else { + window.setTimeout(_.highlightAll, 16); + } + } + else { + document.addEventListener('DOMContentLoaded', _.highlightAll); + } + } +} + +return _self.Prism; + +})(); + +if (typeof module !== 'undefined' && module.exports) { + module.exports = Prism; +} + +// hack for components to work correctly in node.js +if (typeof global !== 'undefined') { + global.Prism = Prism; +} + + +/* ********************************************** + Begin prism-markup.js +********************************************** */ + +Prism.languages.markup = { + 'comment': //, + 'prolog': /<\?[\s\S]+?\?>/, + 'doctype': //i, + 'cdata': //i, + 'tag': { + pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, + inside: { + 'tag': { + pattern: /^<\/?[^\s>\/]+/i, + inside: { + 'punctuation': /^<\/?/, + 'namespace': /^[^\s>\/:]+:/ + } + }, + 'attr-value': { + pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, + inside: { + 'punctuation': [ + /^=/, + { + pattern: /(^|[^\\])["']/, + lookbehind: true + } + ] + } + }, + 'punctuation': /\/?>/, + 'attr-name': { + pattern: /[^\s>\/]+/, + inside: { + 'namespace': /^[^\s>\/:]+:/ + } + } + + } + }, + 'entity': /&#?[\da-z]{1,8};/i +}; + +Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = + Prism.languages.markup['entity']; + +// Plugin to make entity title show the real entity, idea by Roman Komarov +Prism.hooks.add('wrap', function(env) { + + if (env.type === 'entity') { + env.attributes['title'] = env.content.replace(/&/, '&'); + } +}); + +Prism.languages.xml = Prism.languages.markup; +Prism.languages.html = Prism.languages.markup; +Prism.languages.mathml = Prism.languages.markup; +Prism.languages.svg = Prism.languages.markup; + + +/* ********************************************** + Begin prism-css.js +********************************************** */ + +Prism.languages.css = { + 'comment': /\/\*[\s\S]*?\*\//, + 'atrule': { + pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, + inside: { + 'rule': /@[\w-]+/ + // See rest below + } + }, + 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, + 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, + 'string': { + pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, + 'important': /\B!important\b/i, + 'function': /[-a-z0-9]+(?=\()/i, + 'punctuation': /[(){};:]/ +}; + +Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'style': { + pattern: /()[\s\S]*?(?=<\/style>)/i, + lookbehind: true, + inside: Prism.languages.css, + alias: 'language-css', + greedy: true + } + }); + + Prism.languages.insertBefore('inside', 'attr-value', { + 'style-attr': { + pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, + inside: { + 'attr-name': { + pattern: /^\s*style/i, + inside: Prism.languages.markup.tag.inside + }, + 'punctuation': /^\s*=\s*['"]|['"]\s*$/, + 'attr-value': { + pattern: /.+/i, + inside: Prism.languages.css + } + }, + alias: 'language-css' + } + }, Prism.languages.markup.tag); +} + +/* ********************************************** + Begin prism-clike.js +********************************************** */ + +Prism.languages.clike = { + 'comment': [ + { + pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, + lookbehind: true + }, + { + pattern: /(^|[^\\:])\/\/.*/, + lookbehind: true + } + ], + 'string': { + pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'class-name': { + pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, + lookbehind: true, + 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': /[a-z0-9_]+(?=\()/i, + 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, + 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, + 'punctuation': /[{}[\];(),.:]/ +}; + + +/* ********************************************** + Begin prism-javascript.js +********************************************** */ + +Prism.languages.javascript = Prism.languages.extend('clike', { + 'keyword': /\b(?: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|var|void|while|with|yield)\b/, + 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, + // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) + 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, + 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ +}); + +Prism.languages.insertBefore('javascript', 'keyword', { + 'regex': { + pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, + lookbehind: true, + greedy: true + }, + // This must be declared before keyword because we use "function" inside the look-forward + 'function-variable': { + pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, + alias: 'function' + } +}); + +Prism.languages.insertBefore('javascript', 'string', { + 'template-string': { + pattern: /`(?:\\[\s\S]|[^\\`])*`/, + greedy: true, + inside: { + 'interpolation': { + pattern: /\$\{[^}]+\}/, + inside: { + 'interpolation-punctuation': { + pattern: /^\$\{|\}$/, + alias: 'punctuation' + }, + rest: Prism.languages.javascript + } + }, + 'string': /[\s\S]+/ + } + } +}); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'script': { + pattern: /()[\s\S]*?(?=<\/script>)/i, + lookbehind: true, + inside: Prism.languages.javascript, + alias: 'language-javascript', + greedy: true + } + }); +} + +Prism.languages.js = Prism.languages.javascript; + + +/* ********************************************** + Begin prism-file-highlight.js +********************************************** */ + +(function () { + if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { + return; + } + + self.Prism.fileHighlight = function() { + + var Extensions = { + 'js': 'javascript', + 'py': 'python', + 'rb': 'ruby', + 'ps1': 'powershell', + 'psm1': 'powershell', + 'sh': 'bash', + 'bat': 'batch', + 'h': 'c', + 'tex': 'latex' + }; + + Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { + var src = pre.getAttribute('data-src'); + + var language, parent = pre; + var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; + while (parent && !lang.test(parent.className)) { + parent = parent.parentNode; + } + + if (parent) { + language = (pre.className.match(lang) || [, ''])[1]; + } + + if (!language) { + var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; + language = Extensions[extension] || extension; + } + + var code = document.createElement('code'); + code.className = 'language-' + language; + + pre.textContent = ''; + + code.textContent = 'Loading…'; + + pre.appendChild(code); + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', src, true); + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + + if (xhr.status < 400 && xhr.responseText) { + code.textContent = xhr.responseText; + + Prism.highlightElement(code); + } + else if (xhr.status >= 400) { + code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; + } + else { + code.textContent = '✖ Error: File does not exist or is empty'; + } + } + }; + + xhr.send(null); + }); + + }; + + document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); + +})(); + +},{}],6:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":10}],5:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":10}],7:[function(require,module,exports) { +var e = Element.prototype; +if (!e.matches) { + e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; +} +if (!e.closest) { + e.closest = function (s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; +} +},{}],11:[function(require,module,exports) { +var global = (1,eval)("this"); +var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +;(function (global, factory) { + (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); +})(this, function () { + 'use strict'; + + // Robert Penner's easeInOutQuad + + // find the rest of his easing functions here: http://robertpenner.com/easing/ + // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js + + var easeInOutQuad = function easeInOutQuad(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; + }; + + var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { + return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + }; + + var jumper = function jumper() { + // private variable cache + // no variables are created during a jump, preventing memory leaks + + var element = void 0; // element to scroll to (node) + + var start = void 0; // where scroll starts (px) + var stop = void 0; // where scroll stops (px) + + var offset = void 0; // adjustment from the stop position (px) + var easing = void 0; // easing function (function) + var a11y = void 0; // accessibility support flag (boolean) + + var distance = void 0; // distance of scroll (px) + var duration = void 0; // scroll duration (ms) + + var timeStart = void 0; // time scroll started (ms) + var timeElapsed = void 0; // time spent scrolling thus far (ms) + + var next = void 0; // next scroll position (px) + + var callback = void 0; // to call when done scrolling (function) + + // scroll position helper + + function location() { + return window.scrollY || window.pageYOffset; + } + + // element offset helper + + function top(element) { + return element.getBoundingClientRect().top + start; + } + + // rAF loop helper + + function loop(timeCurrent) { + // store time scroll started, if not started already + if (!timeStart) { + timeStart = timeCurrent; + } + + // determine time spent scrolling so far + timeElapsed = timeCurrent - timeStart; + + // calculate next scroll position + next = easing(timeElapsed, start, distance, duration); + + // scroll to it + window.scrollTo(0, next); + + // check progress + timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop + : done(); // scrolling is done + } + + // scroll finished helper + + function done() { + // account for rAF time rounding inaccuracies + window.scrollTo(0, start + distance); + + // if scrolling to an element, and accessibility is enabled + if (element && a11y) { + // add tabindex indicating programmatic focus + element.setAttribute('tabindex', '-1'); + + // focus the element + element.focus(); + } + + // if it exists, fire the callback + if (typeof callback === 'function') { + callback(); + } + + // reset time for next jump + timeStart = false; + } + + // API + + function jump(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + // resolve options, or use defaults + duration = options.duration || 1000; + offset = options.offset || 0; + callback = options.callback; // "undefined" is a suitable default, and won't be called + easing = options.easing || easeInOutQuad; + a11y = options.a11y || false; + + // cache starting position + start = location(); + + // resolve target + switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { + // scroll from current position + case 'number': + element = undefined; // no element to scroll to + a11y = false; // make sure accessibility is off + stop = start + target; + break; + + // scroll to element (node) + // bounding rect is relative to the viewport + case 'object': + element = target; + stop = top(element); + break; + + // scroll to element (selector) + // bounding rect is relative to the viewport + case 'string': + element = document.querySelector(target); + stop = top(element); + break; + } + + // resolve scroll distance, accounting for offset + distance = stop - start + offset; + + // resolve duration + switch (_typeof(options.duration)) { + // number in ms + case 'number': + duration = options.duration; + break; + + // function passed the distance of the scroll + case 'function': + duration = options.duration(distance); + break; + } + + // start the loop + window.requestAnimationFrame(loop); + } + + // expose only the jump method + return jump; + }; + + // export singleton + + var singleton = jumper(); + + return function () { + var scrolling = void 0; + var end = function end() { + return scrolling = false; + }; + return function (to) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (scrolling) return; + var scrollY = window.scrollY || window.pageYOffset; + if (to !== '.header') location.hash = to; + scroll(0, scrollY); + scrolling = true; + setTimeout(end, options.duration || 0); + return singleton(to, options); + }; + }(); +}); +},{}],12:[function(require,module,exports) { +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var select = exports.select = function select(s) { + return document.querySelector(s); +}; +var selectAll = exports.selectAll = function selectAll(s) { + return [].slice.call(document.querySelectorAll(s)); +}; +var scrollY = exports.scrollY = function scrollY() { + return window.scrollY || window.pageYOffset; +}; +var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { + return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; +}; + +/* +* Make iOS behave normally. +*/ +if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { + document.body.style.cursor = 'pointer'; +} + +/* +* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font +* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. +* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. +* Must be applied to all browsers for now. +*/ +;(function () { + var ua = navigator.userAgent; + + // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica + var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; + + // Chrome v64 and FF v58 fix the issue + var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; + + var allEls = [].slice.call(document.querySelectorAll('*')); + + if (isRelevantMacOS && isAffectedBrowser) { + document.documentElement.style.letterSpacing = '-0.3px'; + allEls.forEach(function (el) { + var fontSize = parseFloat(getComputedStyle(el).fontSize); + if (fontSize >= 20) el.style.letterSpacing = '0.3px'; + }); + } else if (isRelevantMacOS && !isAffectedBrowser) { + // Italics fix + allEls.forEach(function (el) { + var _getComputedStyle = getComputedStyle(el), + fontSize = _getComputedStyle.fontSize, + fontStyle = _getComputedStyle.fontStyle; + + if (fontStyle === 'italic') { + el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; + } + }); + } +})(); +},{}],8:[function(require,module,exports) { +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _jump = require('../deps/jump'); + +var _jump2 = _interopRequireDefault(_jump); + +var _utils = require('../deps/utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var menu = (0, _utils.select)('.hamburger'); +var links = (0, _utils.select)('.sidebar__links'); +var ACTIVE_CLASS = 'is-active'; + +var toggle = function toggle() { + return [menu, links].forEach(function (el) { + return el.classList.toggle(ACTIVE_CLASS); + }); +}; + +menu.addEventListener('click', toggle); + +links.addEventListener('click', function (e) { + setTimeout(toggle, 40); + if (e.target.classList.contains('sidebar__link')) { + e.preventDefault(); + (0, _jump2.default)(e.target.getAttribute('href'), { + duration: 750, + offset: window.innerWidth <= 768 ? -64 : -32, + easing: _utils.easeOutQuint + }); + } +}); + +document.addEventListener('click', function (e) { + if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { + toggle(); + } +}); + +exports.default = { toggle: toggle }; +},{"../deps/jump":11,"../deps/utils":12}],9:[function(require,module,exports) { +'use strict'; + +var _jump = require('../deps/jump'); + +var _jump2 = _interopRequireDefault(_jump); + +var _utils = require('../deps/utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var backToTopButton = (0, _utils.select)('.back-to-top-button'); + +window.addEventListener('scroll', function () { + backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); +}); +backToTopButton.onclick = function () { + (0, _jump2.default)('.header', { + duration: 750, + easing: _utils.easeOutQuint + }); +}; +},{"../deps/jump":11,"../deps/utils":12}],3:[function(require,module,exports) { +'use strict'; + +require('normalize.css'); + +require('prismjs'); + +require('../css/deps/prism.css'); + +require('../css/index.scss'); + +require('./deps/polyfills'); + +var _Menu = require('./components/Menu'); + +var _Menu2 = _interopRequireDefault(_Menu); + +var _BackToTopButton = require('./components/BackToTopButton'); + +var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"normalize.css":14,"prismjs":15,"../css/deps/prism.css":6,"../css/index.scss":5,"./deps/polyfills":7,"./components/Menu":8,"./components/BackToTopButton":9}],16:[function(require,module,exports) { + +var global = (1, eval)('this'); +var OldModule = module.bundle.Module; +function Module(moduleName) { + OldModule.call(this, moduleName); + this.hot = { + accept: function (fn) { + this._acceptCallback = fn || function () {}; + }, + dispose: function (fn) { + this._disposeCallback = fn; + } + }; +} + +module.bundle.Module = Module; + +var parent = module.bundle.parent; +if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { + var hostname = '' || location.hostname; + var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; + var ws = new WebSocket(protocol + '://' + hostname + ':' + '53207' + '/'); + ws.onmessage = function (event) { + var data = JSON.parse(event.data); + + if (data.type === 'update') { + data.assets.forEach(function (asset) { + hmrApply(global.require, asset); + }); + + data.assets.forEach(function (asset) { + if (!asset.isNew) { + hmrAccept(global.require, asset.id); + } + }); + } + + if (data.type === 'reload') { + ws.close(); + ws.onclose = function () { + location.reload(); + }; + } + + if (data.type === 'error-resolved') { + console.log('[parcel] ✨ Error resolved'); + } + + if (data.type === 'error') { + console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); + } + }; +} + +function getParents(bundle, id) { + var modules = bundle.modules; + if (!modules) { + return []; + } + + var parents = []; + var k, d, dep; + + for (k in modules) { + for (d in modules[k][1]) { + dep = modules[k][1][d]; + if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { + parents.push(+k); + } + } + } + + if (bundle.parent) { + parents = parents.concat(getParents(bundle.parent, id)); + } + + return parents; +} + +function hmrApply(bundle, asset) { + var modules = bundle.modules; + if (!modules) { + return; + } + + if (modules[asset.id] || !bundle.parent) { + var fn = new Function('require', 'module', 'exports', asset.generated.js); + asset.isNew = !modules[asset.id]; + modules[asset.id] = [fn, asset.deps]; + } else if (bundle.parent) { + hmrApply(bundle.parent, asset); + } +} + +function hmrAccept(bundle, id) { + var modules = bundle.modules; + if (!modules) { + return; + } + + if (!modules[id] && bundle.parent) { + return hmrAccept(bundle.parent, id); + } + + var cached = bundle.cache[id]; + if (cached && cached.hot._disposeCallback) { + cached.hot._disposeCallback(); + } + + delete bundle.cache[id]; + bundle(id); + + cached = bundle.cache[id]; + if (cached && cached.hot && cached.hot._acceptCallback) { + cached.hot._acceptCallback(); + return true; + } + + return getParents(global.require, id).some(function (id) { + return hmrAccept(global.require, id); + }); +} +},{}]},{},[16,3]) +//# sourceMappingURL=/dist/f06fd0495a34430f242f7611190395d6.map \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.map b/dist/f06fd0495a34430f242f7611190395d6.map new file mode 100644 index 000000000..5cefc8211 --- /dev/null +++ b/dist/f06fd0495a34430f242f7611190395d6.map @@ -0,0 +1 @@ +{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACt0BA,IAAMtI,IAAIC,QAAQC,SAAlB;AACA,IAAI,CAACF,EAAEG,OAAP,EAAgB;AACdH,IAAEG,OAAF,GACEH,EAAEI,eAAF,IAAqBJ,EAAEK,iBAAvB,IAA4CL,EAAEM,qBAA9C,IAAuEN,EAAEO,kBAD3E;AAED;AACD,IAAI,CAACP,EAAEQ,OAAP,EAAgB;AACdR,IAAEQ,OAAF,GAAY,UAASC,CAAT,EAAY;AACtB,QAAIC,KAAK,IAAT;AACA,QAAI,CAACC,SAASC,eAAT,CAAyBC,QAAzB,CAAkCH,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,OAAG;AACD,UAAIA,GAAGP,OAAH,CAAWM,CAAX,CA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","file":"f06fd0495a34430f242f7611190395d6.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 46137b1c9..abf8c425a 100644 --- a/index.html +++ b/index.html @@ -51,6 +51,7 @@

Clearfix

Ensures that an element self-clears its children.

+
Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
@@ -59,7 +60,7 @@
 

CSS

.clearfix::after {
   content: '';
-  display: table;
+  display: block;
   clear: both;
 }
 .floated {
@@ -77,7 +78,7 @@
              

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
+

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo element.
  2. content: '' allows the pseudo element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
 

CSS

.custom-text-selection::selection {
   background: red;
   color: white;

From 46f53bfec4b650c65ab12e03d64a6293dd5e78bb Mon Sep 17 00:00:00 2001
From: atomiks 
Date: Tue, 27 Feb 2018 09:03:43 +1100
Subject: [PATCH 020/561] rebuild docs

---
 docs/4d4edbda57043aeeabeac31d2dd12d0d.css |   2 +-
 docs/4d4edbda57043aeeabeac31d2dd12d0d.js  |  16 ++++++++--------
 docs/527b39bfa5c417dbf84620127ec95368.png | Bin 2628 -> 0 bytes
 docs/5f62c8cc1947e40c7e328854a3026c04.png | Bin 35911 -> 0 bytes
 docs/f06fd0495a34430f242f7611190395d6.css |   9 ---------
 docs/f06fd0495a34430f242f7611190395d6.js  |  19 -------------------
 docs/index.html                           |   2 +-
 7 files changed, 10 insertions(+), 38 deletions(-)
 delete mode 100644 docs/527b39bfa5c417dbf84620127ec95368.png
 delete mode 100644 docs/5f62c8cc1947e40c7e328854a3026c04.png
 delete mode 100644 docs/f06fd0495a34430f242f7611190395d6.css
 delete mode 100644 docs/f06fd0495a34430f242f7611190395d6.js

diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.css b/docs/4d4edbda57043aeeabeac31d2dd12d0d.css
index 47a1a17be..132a1d653 100644
--- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.css
+++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.css
@@ -6,4 +6,4 @@
  * @author Jonathan Suh @jonsuh
  * @site https://jonsuh.com/hamburgers
  * @link https://github.com/jonsuh/hamburgers
- */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1}
\ No newline at end of file
+ */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1}
\ No newline at end of file
diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
index fefb94435..f88569c04 100644
--- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
+++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
@@ -1,19 +1,19 @@
-require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
-},{}],13:[function(require,module,exports) {
+},{}],12:[function(require,module,exports) {
 var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null});
-},{}],14:[function(require,module,exports) {
+},{}],15:[function(require,module,exports) {
 var global = (1,eval)("this");
 var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}});
-},{}],15:[function(require,module,exports) {
+},{}],16:[function(require,module,exports) {
 "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}();
 },{}],11:[function(require,module,exports) {
 "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u};
-},{"../deps/jump":14,"../deps/utils":15}],12:[function(require,module,exports) {
+},{"../deps/jump":15,"../deps/utils":16}],13:[function(require,module,exports) {
 "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})};
-},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) {
+},{"../deps/jump":15,"../deps/utils":16}],7:[function(require,module,exports) {
 "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}}
-},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":13,"./components/Menu":11,"./components/BackToTopButton":12}]},{},[7])
\ No newline at end of file
+},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":12,"./components/Menu":11,"./components/BackToTopButton":13}]},{},[7])
\ No newline at end of file
diff --git a/docs/527b39bfa5c417dbf84620127ec95368.png b/docs/527b39bfa5c417dbf84620127ec95368.png
deleted file mode 100644
index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2628
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

diff --git a/docs/5f62c8cc1947e40c7e328854a3026c04.png b/docs/5f62c8cc1947e40c7e328854a3026c04.png
deleted file mode 100644
index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35911
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 diff --git a/docs/f06fd0495a34430f242f7611190395d6.css b/docs/f06fd0495a34430f242f7611190395d6.css deleted file mode 100644 index 47a1a17be..000000000 --- a/docs/f06fd0495a34430f242f7611190395d6.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/f06fd0495a34430f242f7611190395d6.js b/docs/f06fd0495a34430f242f7611190395d6.js deleted file mode 100644 index 70e68a4c0..000000000 --- a/docs/f06fd0495a34430f242f7611190395d6.js +++ /dev/null @@ -1,19 +0,0 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],15:[function(require,module,exports) { -var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],22:[function(require,module,exports) { -var global = (1,eval)("this"); -var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],23:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],16:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":22,"../deps/utils":23}],17:[function(require,module,exports) { -"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":22,"../deps/utils":23}],8:[function(require,module,exports) { -"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":26,"prismjs":27,"../css/deps/prism.css":26,"../css/index.scss":26,"./deps/polyfills":15,"./components/Menu":16,"./components/BackToTopButton":17}]},{},[8]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 6d3a2b70c..1464c06d4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
+    30 Seconds of CSS        

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Clearfix

Ensures that an element self-clears its children.

Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>

From c752d6f6d19a19ae7210a766b0dcf995cc4d9ce0 Mon Sep 17 00:00:00 2001
From: ohansemmanuel 
Date: Tue, 27 Feb 2018 02:15:54 +0100
Subject: [PATCH 021/561] fix typo in system-font-stack.md

---
 dist/410f94d6c61e5beb62212a28c82ecef3.png  |  Bin 0 -> 2628 bytes
 dist/6f87738ba5ca74ac9104fc97c6eee446.html |  999 ++++++++++++
 dist/719042b6d7879d0a403a9eaac2211738.css  | 1621 ++++++++++++++++++++
 dist/719042b6d7879d0a403a9eaac2211738.js   | 1479 ++++++++++++++++++
 dist/719042b6d7879d0a403a9eaac2211738.map  |    1 +
 dist/ac46b6c579212c73b4f2afaa428f354c.png  |  Bin 0 -> 35911 bytes
 index.html                                 |    2 +-
 snippets/system-font-stack.md              |    2 +-
 8 files changed, 4102 insertions(+), 2 deletions(-)
 create mode 100644 dist/410f94d6c61e5beb62212a28c82ecef3.png
 create mode 100644 dist/6f87738ba5ca74ac9104fc97c6eee446.html
 create mode 100644 dist/719042b6d7879d0a403a9eaac2211738.css
 create mode 100644 dist/719042b6d7879d0a403a9eaac2211738.js
 create mode 100644 dist/719042b6d7879d0a403a9eaac2211738.map
 create mode 100644 dist/ac46b6c579212c73b4f2afaa428f354c.png

diff --git a/dist/410f94d6c61e5beb62212a28c82ecef3.png b/dist/410f94d6c61e5beb62212a28c82ecef3.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a
GIT binary patch
literal 2628
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

literal 0
HcmV?d00001

diff --git a/dist/6f87738ba5ca74ac9104fc97c6eee446.html b/dist/6f87738ba5ca74ac9104fc97c6eee446.html
new file mode 100644
index 000000000..de0e697ba
--- /dev/null
+++ b/dist/6f87738ba5ca74ac9104fc97c6eee446.html
@@ -0,0 +1,999 @@
+
+  
+    
+    
+    30 Seconds of CSS
+    
+    
+    
+  
+  
+    
+    
+    
+
+
+ +

30 Seconds of CSS

+

+ A curated collection of useful CSS snippets you can understand in 30 seconds or less. +

+ + + Star +
+
+
+
+
+

Clearfix

+

Ensures that an element self-clears its children.

+
Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.
+

HTML

<div class="clearfix">
+  <div class="floated">float a</div>
+  <div class="floated">float b</div>
+  <div class="floated">float c</div>
+</div>
+
+

CSS

.clearfix::after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.floated {
+  float: left;
+}
+
+

Demo

+
+
+
float a
+
float b
+
float c
+
+
+ +

Explanation

+
    +
  1. .clearfix::after defines a pseudo element.
  2. +
  3. content: '' allows the pseudo element to affect layout.
  4. +
  5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
  6. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Custom text selection

+

Changes the styling of text selection.

+

HTML

<p class="custom-text-selection">Select some of this text.</p>
+
+

CSS

.custom-text-selection::selection {
+  background: red;
+  color: white;
+}
+
+

Demo

+
+

Select some of this text.

+
+ +

Explanation

+

::selection defines a pseudo selector on an element to style text within it when selected.

+

Browser support

+
+
+ 84.6% +
+
+

⚠️ Requires prefixes for full support and is not actually +in any specification.

+ +
+
+

Easing variables

+

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

+

HTML

<div class="easing-variables"></div>
+
+

CSS

:root {
+  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
+  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
+  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
+  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
+  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
+  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
+  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
+  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
+  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
+  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
+  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
+  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
+  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
+  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
+  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
+}
+.easing-variables {
+  width: 50px;
+  height: 50px;
+  background: #333;
+  transition: transform 1s var(--ease-out-quart);
+}
+.easing-variables:hover {
+  transform: rotate(45deg);
+}
+
+

Demo

+
+
Hover
+
+ +

Explanation

+

The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

+

Browser support

+
+
+ 87.2% +
+
+

✅ No caveats.

+ +
+
+

Etched text

+

Creates an effect where text appears to be "etched" or engraved into the background.

+

HTML

<p class="etched-text">I appear etched into the background.</p>
+
+

CSS

.etched-text {
+  text-shadow: 0 2px white;
+  font-size: 1.5rem;
+  font-weight: bold;
+  color: #b8bec5;
+}
+
+

Demo

+
+

I appear etched into the background.

+
+ +

Explanation

+

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

+

The background must be darker than the shadow for the effect to work.

+

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

+

Browser support

+
+
+ 97.9% +
+
+

✅ No caveats.

+ +
+
+

Gradient text

+

Gives text a gradient color.

+

HTML

<p class="gradient-text">Gradient text</p>
+
+

CSS

.gradient-text {
+  background: -webkit-linear-gradient(pink, red);
+  -webkit-text-fill-color: transparent;
+  -webkit-background-clip: text;
+}
+
+

Demo

+
+

+ Gradient text +

+
+ +

Explanation

+
    +
  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. +
  3. webkit-text-fill-color: transparent fills the text with a transparent color.
  4. +
  5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
  6. +
+

Browser support

+
+
+ 90.7% +
+
+

⚠️ Uses non-standard properties.

+ +
+
+

Hairline border

+

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

+

HTML

<div class="hairline-border">text</div>
+
+

CSS

.hairline-border {
+  box-shadow: 0 0 0 1px;
+}
+@media (min-resolution: 2dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.5px;
+  }
+}
+@media (min-resolution: 3dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.33333333px;
+  }
+}
+@media (min-resolution: 4dppx) {
+  .hairline-border {
+    box-shadow: 0 0 0 0.25px;
+  }
+}
+
+

Demo

+
+

Text with a hairline border around it.

+
+ +

Explanation

+
    +
  1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
  2. +
  3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
  4. +
+

Browser Support

+
+
+ 95.0% +
+
+

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

+ +
+

*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

+
+
+

Horizontal and vertical centering

+

Horizontally and vertically centers a child element within a parent element.

+

HTML

<div class="horizontal-and-vertical-centering">
+  <div class="child"></div>
+</div>
+
+

CSS

.horizontal-and-vertical-centering {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+

Demo

+
+
+

Centered content.

+
+
+ +

Explanation

+
    +
  1. display: flex enables flexbox.
  2. +
  3. justify-content: center centers the child horizontally.
  4. +
  5. align-items: center centers the child vertically.
  6. +
+

Browser support

+
+
+ 97.8% +
+
+

⚠️ Needs prefixes for full support.

+ +
+
+

Mouse cursor gradient tracking

+

A hover effect where the gradient follows the mouse cursor.

+

HTML

<button class="mouse-cursor-gradient-tracking">
+  <span>Hover me</span>
+</button>
+
+

CSS

.mouse-cursor-gradient-tracking {
+  position: relative;
+  background: #2379f7;
+  padding: 0.5rem 1rem;
+  font-size: 1.2rem;
+  border: none;
+  color: white;
+  cursor: pointer;
+  outline: none;
+  overflow: hidden;
+}
+.mouse-cursor-gradient-tracking span {
+  position: relative;
+}
+.mouse-cursor-gradient-tracking::before {
+  --size: 0;
+  content: '';
+  position: absolute;
+  left: var(--x);
+  top: var(--y);
+  width: var(--size);
+  height: var(--size);
+  background: radial-gradient(circle closest-side, pink, transparent);
+  transform: translate(-50%, -50%);
+  transition: width .2s ease, height .2s ease;
+}
+.mouse-cursor-gradient-tracking:hover::before {
+  --size: 200px;
+}
+
+

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
+btn.onmousemove = function (e) {
+  var x = e.pageX - btn.offsetLeft
+  var y = e.pageY - btn.offsetTop
+  btn.style.setProperty('--x', x + 'px')
+  btn.style.setProperty('--y', y + 'px')
+}
+
+

Demo

+
+ +
+ + +

Explanation

+

TODO

+

Note!

+

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

+
var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
+var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
+
+

Browser support

+
+
+ 87.2% +
+
+

+
Requires JavaScript
+ ⚠️ Requires JavaScript. +

+ +
+
+

Overflow scroll gradient

+

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

+

HTML

<div class="overflow-scroll-gradient">
+  <div class="overflow-scroll-gradient__scroller">
+    Content to be scrolled
+  </div>
+</div>
+
+

CSS

.overflow-scroll-gradient {
+  position: relative;
+}
+.overflow-scroll-gradient::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  width: 300px;
+  height: 25px;
+  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
+}
+.overflow-scroll-gradient__scroller {
+  overflow-y: scroll;
+  background: white;
+  width: 300px;
+  height: 250px;
+  padding: 15px 0;
+  line-height: 1.2;
+  text-align: center;
+}
+
+

Demo

+
+
+
+ Content to be scrolled +
+
+
+ + +

Explanation

+
    +
  1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  10. +
  11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Popout menu

+

Reveals an interactive popout menu on hover.

+

HTML

<div class="reference">
+  <div class="popout-menu">
+    Popout menu
+  </div>
+</div>
+
+

CSS

.reference {
+  position: relative;
+}
+.popout-menu {
+  position: absolute;
+  visibility: hidden;
+  left: 100%;
+}
+.reference:hover > .popout-menu {
+  visibility: visible;
+}
+
+

Demo

+
+
+
+ Popout menu +
+
+
+ +

Explanation

+
    +
  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. +
  3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  4. +
  5. left: 100% moves the the popout menu 100% of its parent's width from the left.
  6. +
  7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  8. +
  9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, + which shows the popout.
  10. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Pretty text underline

+

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

+

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
+
+

CSS

.pretty-text-underline {
+  display: inline;
+  font-size: 1.25rem;
+  text-shadow: 1px 1px 0 #f5f6f9,
+    -1px 1px 0 #f5f6f9,
+    -1px -1px 0 #f5f6f9,
+    1px -1px 0 #f5f6f9;
+  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
+  background-position: 0 1.04em;
+  background-repeat: repeat-x;
+  background-size: 1px 1px;
+}
+.pretty-text-underline::selection {
+  background-color: rgba(0, 150, 255, 0.3);
+  text-shadow: none;
+}
+
+

Demo

+
+

Pretty text underline without clipping descending letters.

+
+ +

Explanation

+
    +
  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use + a larger px size.
  2. +
  3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  4. +
  5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  6. +
  7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. +
  8. +
+

Browser support

+
+
+ 94.8% +
+
+

✅ No caveats.

+ +
+
+

Shape separator

+

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

+

HTML

<div class="shape-separator"></div>
+
+

CSS

.shape-separator {
+  position: relative;
+  height: 48px;
+}
+.shape-separator::after {
+  content: '';
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
+  position: absolute;
+  width: 100%;
+  height: 24px;
+  bottom: 0;
+}
+
+

Demo

+
+
+
+ +

Explanation

+
    +
  1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
  2. +
  3. ::after defines a pseudo element.
  4. +
  5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. +
  6. +
  7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  8. +
  9. width: 100% ensures the element stretches the entire width of its parent.
  10. +
  11. height: 24px is the same height as the shape.
  12. +
  13. bottom: 0 positions the pseudo element at the bottom of the parent.
  14. +
+

Browser support

+
+
+ 98.0% +
+
+

✅ No caveats.

+ +
+
+

System font stack

+

Uses the native font of the operating system to get close to a native app feel.

+

HTML

<p class="system-font-stack">This text uses the system font.</p>
+
+

CSS

.system-font-stack {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+

Demo

+
+

This text uses the system font.

+
+ +

Explanation

+

The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

+
    +
  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. +
  3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  4. +
  5. Segoe UI is used on Windows 10
  6. +
  7. Roboto is used on Android
  8. +
  9. Oxygen-Sans is used on GNU+Linux
  10. +
  11. Ubuntu is used on Linux
  12. +
  13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  14. +
  15. Arial is a font widely supported by all operating systems
  16. +
  17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
  18. +
+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Triangle

+

Creates a triangle shape with pure CSS.

+

HTML

<div class="triangle"></div>
+
+

CSS

.triangle {
+  width: 0;
+  height: 0;
+  border-top: 20px solid #333;
+  border-left: 20px solid transparent;
+  border-right: 20px solid transparent;
+}
+
+

Demo

+
+
+
+
+
+
+
+
+
+ +

Explanation

+

+ View this link for a detailed explanation. +

+

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

+

Experiment with the px values to change the proportion of the triangle.

+

Browser support

+
+
+ 99+% +
+
+

✅ No caveats.

+
+
+

Truncate text

+

If the text is longer than one line, it will be truncated and end with an ellipsis ....

+

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
+
+

CSS

.truncate-text {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+

Demo

+
+

+ This text will be truncated if it exceeds 200px in width. +

+
+ +

Explanation

+
    +
  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. +
  3. white-space: nowrap prevents the text from exceeding one line in height.
  4. +
  5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  6. +
+

Browser support

+
+
+ 98.1% +
+
+

✅ No caveats.

+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/dist/719042b6d7879d0a403a9eaac2211738.css b/dist/719042b6d7879d0a403a9eaac2211738.css new file mode 100644 index 000000000..96d98ca15 --- /dev/null +++ b/dist/719042b6d7879d0a403a9eaac2211738.css @@ -0,0 +1,1621 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * 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; +} + +/* Grouping content + ========================================================================== */ + +/** + * 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 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 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 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * 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; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * 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; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * 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; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 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 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +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 in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 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 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} +code[class*='language-'], +pre[class*='language-'] { + color: rgb(50, 75, 100); + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 2; + font-size: 1rem; + -webkit-overflow-scrolling: touch; + margin: 0; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*='language-']::-moz-selection, +pre[class*='language-'] ::-moz-selection, +code[class*='language-']::-moz-selection, +code[class*='language-'] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*='language-'] { + overflow: auto; + padding: 0.75rem 1.25rem; +} + +pre.is-option { + margin: 0; + padding: 0; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #f5f6f9; + border-radius: 0.25rem; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8ca2d3; +} + +.token.selector, +.token.attr-name { + color: #da7800; +} + +.token.punctuation { + color: #93a0c7; +} + +.namespace { + opacity: 0.7; +} + +.token.tag { + color: #e22f70; +} + +.token.property, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #0087ca; +} + +.token.string, +.language-css .token.string, +.token.url, +.token.attr-value, +.token.char, +.token.builtin, +.token.inserted { + color: #008a7e; +} + +.token.operator, +.token.entity, +.style .token.string { + color: #f53737; +} + +.token.important, +.token.atrule, +.token.keyword { + color: #7552ff; +} + +.token.function { + color: #396dff; +} + +.token.regex, +.token.variable { + color: #00a8d4; +} + +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} +html { + font-size: 0.95rem; } + +body { + font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; + background: #f6f7fd; + color: #324b64; + line-height: 1.5; } + +a { + color: #157bda; + text-decoration: none; + word-wrap: break-word; + overflow-wrap: break-word; } + a:hover { + color: #0090ff; } + +hr { + border: 0; + border-top: 1px solid rgba(0, 32, 128, 0.1); } + +ul, +ol { + padding-left: 1.25rem; } + +.container { + max-width: 1000px; + padding: 0 2%; + margin: 0 auto; } + +.main > .container { + padding: 0; } + +@media (min-width: 579px) { + .main > .container { + padding: 0 2%; } } + +@media (min-width: 768px) { + html { + font-size: 1rem; } } + +@media (min-width: 992px) { + .content-wrapper { + margin-left: 200px; } } + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */ +.hamburger { + padding: 1rem; + display: inline-block; + cursor: pointer; + transition-property: opacity, filter; + transition-duration: 0.15s; + transition-timing-function: linear; + font: inherit; + color: inherit; + text-transform: none; + background-color: transparent; + border: 0; + margin: 0; + overflow: visible; + outline: 0; } + +.hamburger:hover { + opacity: 0.7; } + +.hamburger-box { + width: 40px; + height: 20px; + display: inline-block; + position: relative; } + +.hamburger-inner { + display: block; + top: 50%; } + +.hamburger-inner, +.hamburger-inner::before, +.hamburger-inner::after { + width: 36px; + height: 2px; + background-color: #e3f5ff; + border-radius: 4px; + position: absolute; + transition-property: transform; + transition-duration: 0.15s; + transition-timing-function: ease; } + +.hamburger-inner::before, +.hamburger-inner::after { + content: ''; + display: block; } + +.hamburger-inner::before { + top: -10px; } + +.hamburger-inner::after { + bottom: -10px; } + +/* + * 3DX + */ +.hamburger--3dx .hamburger-box { + perspective: 80px; } + +.hamburger--3dx .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx .hamburger-inner::before, +.hamburger--3dx .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(180deg); } + +.hamburger--3dx.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dx.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DX Reverse + */ +.hamburger--3dx-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dx-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx-r .hamburger-inner::before, +.hamburger--3dx-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(-180deg); } + +.hamburger--3dx-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dx-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DY + */ +.hamburger--3dy .hamburger-box { + perspective: 80px; } + +.hamburger--3dy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy .hamburger-inner::before, +.hamburger--3dy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(-180deg); } + +.hamburger--3dy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DY Reverse + */ +.hamburger--3dy-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy-r .hamburger-inner::before, +.hamburger--3dy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg); } + +.hamburger--3dy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DXY + */ +.hamburger--3dxy .hamburger-box { + perspective: 80px; } + +.hamburger--3dxy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy .hamburger-inner::before, +.hamburger--3dxy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg); } + +.hamburger--3dxy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dxy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DXY Reverse + */ +.hamburger--3dxy-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dxy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy-r .hamburger-inner::before, +.hamburger--3dxy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } + +.hamburger--3dxy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dxy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * Arrow + */ +.hamburger--arrow.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +.hamburger--arrow.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +/* + * Arrow Right + */ +.hamburger--arrow-r.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +.hamburger--arrow-r.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +/* + * Arrow Alt + */ +.hamburger--arrowalt .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +.hamburger--arrowalt.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +/* + * Arrow Alt Right + */ +.hamburger--arrowalt-r .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt-r .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt-r.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +.hamburger--arrowalt-r.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +/* + * Arrow Turn + */ +.hamburger--arrowturn.is-active .hamburger-inner { + transform: rotate(-180deg); } + +.hamburger--arrowturn.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +.hamburger--arrowturn.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +/* + * Arrow Turn Right + */ +.hamburger--arrowturn-r.is-active .hamburger-inner { + transform: rotate(-180deg); } + +.hamburger--arrowturn-r.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +.hamburger--arrowturn-r.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +/* + * Boring + */ +.hamburger--boring .hamburger-inner, +.hamburger--boring .hamburger-inner::before, +.hamburger--boring .hamburger-inner::after { + transition-property: none; } + +.hamburger--boring.is-active .hamburger-inner { + transform: rotate(45deg); } + +.hamburger--boring.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--boring.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); } + +/* + * Collapse + */ +.hamburger--collapse .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } + +.hamburger--collapse .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--collapse.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } + +.hamburger--collapse.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Collapse Reverse + */ +.hamburger--collapse-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } + +.hamburger--collapse-r .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--collapse-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } + +.hamburger--collapse-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Elastic + */ +.hamburger--elastic .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; } + +.hamburger--elastic .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(135deg); + transition-delay: 0.075s; } + +.hamburger--elastic.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; } + +.hamburger--elastic.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-270deg); + transition-delay: 0.075s; } + +/* + * Elastic Reverse + */ +.hamburger--elastic-r .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic-r .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; } + +.hamburger--elastic-r .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-135deg); + transition-delay: 0.075s; } + +.hamburger--elastic-r.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; } + +.hamburger--elastic-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(270deg); + transition-delay: 0.075s; } + +/* + * Emphatic + */ +.hamburger--emphatic { + overflow: hidden; } + +.hamburger--emphatic .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; } + +.hamburger--emphatic .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } + +.hamburger--emphatic .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } + +.hamburger--emphatic.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; } + +.hamburger--emphatic.is-active .hamburger-inner::before { + left: -80px; + top: -80px; + transform: translate3d(80px, 80px, 0) rotate(45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +.hamburger--emphatic.is-active .hamburger-inner::after { + right: -80px; + top: -80px; + transform: translate3d(-80px, 80px, 0) rotate(-45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +/* + * Emphatic Reverse + */ +.hamburger--emphatic-r { + overflow: hidden; } + +.hamburger--emphatic-r .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; } + +.hamburger--emphatic-r.is-active .hamburger-inner::before { + left: -80px; + top: 80px; + transform: translate3d(80px, -80px, 0) rotate(-45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +.hamburger--emphatic-r.is-active .hamburger-inner::after { + right: -80px; + top: 80px; + transform: translate3d(-80px, -80px, 0) rotate(45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +/* + * Minus + */ +.hamburger--minus .hamburger-inner::before, +.hamburger--minus .hamburger-inner::after { + transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } + +.hamburger--minus.is-active .hamburger-inner::before, +.hamburger--minus.is-active .hamburger-inner::after { + opacity: 0; + transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } + +.hamburger--minus.is-active .hamburger-inner::before { + top: 0; } + +.hamburger--minus.is-active .hamburger-inner::after { + bottom: 0; } + +/* + * Slider + */ +.hamburger--slider .hamburger-inner { + top: 2px; } + +.hamburger--slider .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; } + +.hamburger--slider .hamburger-inner::after { + top: 20px; } + +.hamburger--slider.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--slider.is-active .hamburger-inner::before { + transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); + opacity: 0; } + +.hamburger--slider.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-90deg); } + +/* + * Slider Reverse + */ +.hamburger--slider-r .hamburger-inner { + top: 2px; } + +.hamburger--slider-r .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; } + +.hamburger--slider-r .hamburger-inner::after { + top: 20px; } + +.hamburger--slider-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-45deg); } + +.hamburger--slider-r.is-active .hamburger-inner::before { + transform: rotate(45deg) translate3d(5.71429px, -6px, 0); + opacity: 0; } + +.hamburger--slider-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(90deg); } + +/* + * Spin + */ +.hamburger--spin .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } + +.hamburger--spin .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin.is-active .hamburger-inner { + transform: rotate(225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spin.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } + +.hamburger--spin.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Spin Reverse + */ +.hamburger--spin-r .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin-r .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } + +.hamburger--spin-r .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin-r.is-active .hamburger-inner { + transform: rotate(-225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spin-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } + +.hamburger--spin-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Spring + */ +.hamburger--spring .hamburger-inner { + top: 2px; + transition: background-color 0s 0.13s linear; } + +.hamburger--spring .hamburger-inner::before { + top: 10px; + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring .hamburger-inner::after { + top: 20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring.is-active .hamburger-inner { + transition-delay: 0.22s; + background-color: transparent; } + +.hamburger--spring.is-active .hamburger-inner::before { + top: 0; + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--spring.is-active .hamburger-inner::after { + top: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(-45deg); } + +/* + * Spring Reverse + */ +.hamburger--spring-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } + +.hamburger--spring-r .hamburger-inner::before { + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spring-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } + +.hamburger--spring-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Stand + */ +.hamburger--stand .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } + +.hamburger--stand .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand.is-active .hamburger-inner { + transform: rotate(90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } + +.hamburger--stand.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--stand.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Stand Reverse + */ +.hamburger--stand-r .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } + +.hamburger--stand-r .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand-r .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand-r.is-active .hamburger-inner { + transform: rotate(-90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } + +.hamburger--stand-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--stand-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Squeeze + */ +.hamburger--squeeze .hamburger-inner { + transition-duration: 0.075s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--squeeze .hamburger-inner::before { + transition: top 0.075s 0.12s ease, opacity 0.075s ease; } + +.hamburger--squeeze .hamburger-inner::after { + transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--squeeze.is-active .hamburger-inner { + transform: rotate(45deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--squeeze.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.075s ease, opacity 0.075s 0.12s ease; } + +.hamburger--squeeze.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Vortex + */ +.hamburger--vortex .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex .hamburger-inner::before, +.hamburger--vortex .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; } + +.hamburger--vortex .hamburger-inner::before { + transition-property: top, opacity; } + +.hamburger--vortex .hamburger-inner::after { + transition-property: bottom, transform; } + +.hamburger--vortex.is-active .hamburger-inner { + transform: rotate(765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex.is-active .hamburger-inner::before, +.hamburger--vortex.is-active .hamburger-inner::after { + transition-delay: 0s; } + +.hamburger--vortex.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--vortex.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); } + +/* + * Vortex Reverse + */ +.hamburger--vortex-r .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex-r .hamburger-inner::before, +.hamburger--vortex-r .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; } + +.hamburger--vortex-r .hamburger-inner::before { + transition-property: top, opacity; } + +.hamburger--vortex-r .hamburger-inner::after { + transition-property: bottom, transform; } + +.hamburger--vortex-r.is-active .hamburger-inner { + transform: rotate(-765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex-r.is-active .hamburger-inner::before, +.hamburger--vortex-r.is-active .hamburger-inner::after { + transition-delay: 0s; } + +.hamburger--vortex-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--vortex-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); } + +.sidebar { + background: #202e4e; + position: fixed; + z-index: 2; + width: 100%; + height: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } + .sidebar__menu { + position: absolute; + font-weight: bold; + border: none; + text-align: left; + text-transform: uppercase; + left: 0; + top: 0; + padding: 0.75rem 1rem; + outline: 0; } + .sidebar__menu-icon { + height: 24px; } + .sidebar__links { + background: #202e4e; + overflow-y: auto; + transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + transform-origin: 0% 0%; + transform: rotateX(-90deg); + visibility: hidden; + opacity: 0; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + max-height: 378px; + margin-top: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } + .sidebar__links.is-active { + transform: rotateX(0); + visibility: visible; + opacity: 1; } + .sidebar__link { + display: block; + color: #e3f5ff; + padding: 0.5rem 0.75rem; + transition: all 0.1s ease-out; + border-left: 2px solid #576a85; + margin: 0.5rem; + font-weight: 500; + font-size: 0.95rem; } + .sidebar__link:hover { + color: #88f4ff; + background: rgba(255, 255, 255, 0.1); + border-color: pink; } + +@media (min-width: 992px) { + .sidebar { + left: 0; + top: 0; + bottom: 0; + width: 15%; + max-width: 250px; + min-width: 200px; + height: 100%; + background: linear-gradient(-30deg, #2a3d67, #14264e); + box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); + overflow-y: auto; + color: white; } + .sidebar::-webkit-scrollbar-track { + background-color: rgba(0, 0, 0, 0.6); } + .sidebar::-webkit-scrollbar { + width: 10px; + background-color: #4b6191; } + .sidebar::-webkit-scrollbar-thumb { + background-color: #4b6191; } + .sidebar__links { + background: none; + box-shadow: none; + visibility: visible; + opacity: 1; + transform: rotateX(0); + margin-top: 0; + max-height: none; } + .sidebar__menu { + display: none; } } + +.header { + position: relative; + padding: 5rem 1rem 4rem; + background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); + color: white; + margin-bottom: 2rem; + text-align: center; + overflow: hidden; + z-index: 1; } + .header::before { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); + width: 150%; + height: 150%; + top: 0; + left: 0; + opacity: 0.1; + z-index: -1; } + .header::after { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); + background-size: 24px 24px; + width: 100%; + left: 0; + height: 24px; + bottom: -1px; } + .header__logo { + height: 146px; + user-select: none; } + .header__heading { + font-weight: 200; + font-size: 3rem; + margin: 1rem 0; + line-height: 1.2; } + .header__description { + font-size: 1.5rem; + max-width: 600px; + margin: 0 auto 1rem; + font-weight: 300; + letter-spacing: 0.4px; } + .header__css { + background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-size: 4rem; } + .header__github-button { + color: white; } + +@media (min-width: 579px) { + .header { + padding: 6rem 0 5rem; } + .header__heading { + font-size: 3.75rem; } } + +@media (min-width: 992px) { + .header { + padding: 2.5rem 0 5rem; } } + +.snippet { + position: relative; + background: white; + padding: 2rem 5%; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; + border-radius: 0.25rem; + font-size: 1.1rem; + margin-bottom: 1.5rem; } + .snippet h3 { + font-size: 2rem; + padding: 0.5rem 0; + border-bottom: 1px solid rgba(0, 32, 128, 0.1); + margin-bottom: 1.25rem; + margin-top: 0; + line-height: 1.3; } + .snippet code:not([class*='lang']) { + background: #fcfaff; + border: 1px solid #e2ddff; + color: #4b00da; + border-radius: 0.15rem; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 0.9rem; + padding: 0.2rem 0.4rem; + margin: 0 0.1rem; } + .snippet ol { + margin-top: 0.5rem; } + .snippet ol > li { + margin-bottom: 0.5rem; } + .snippet > p { + margin-top: 0.5rem; } + .snippet h4 { + display: inline-block; + margin: 1rem 0 0.5rem; + line-height: 2; + padding: 0 0.5rem; + border-radius: 3px; + font-size: 0.9rem; + text-transform: uppercase; + background: #333; + border: 1px solid #c6d6ea; + border-bottom-color: #b3c9e3; + background: white; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } + .snippet h4[data-type='HTML'] { + color: white; + border: none; + background: linear-gradient(135deg, #ff4c9f, #ff7b74); } + .snippet h4[data-type='CSS'] { + color: white; + border: none; + background: linear-gradient(135deg, #7983ff, #5f9de9); } + .snippet h4[data-type='JavaScript'] { + color: white; + border: none; + background: linear-gradient(135deg, #ffb000, #f58818); } + .snippet__browser-support { + display: inline-block; + font-size: 2rem; + font-weight: 200; + line-height: 1; + margin: 0.5rem 0; } + .snippet__subheading.is-html { + color: #e22f70; } + .snippet__subheading.is-css { + color: #0a91d4; } + .snippet__subheading.is-explanation { + color: #4b00da; } + .snippet__support-note { + color: #9fa5b5; + font-weight: bold; } + .snippet__requires-javascript { + position: absolute; + background: red; + background: linear-gradient(145deg, #ff003b, #ff4b39); + color: white; + padding: 0.25rem 0.5rem; + font-size: 0.9rem; + transform: rotate(20deg); + font-weight: bold; + top: 1rem; + right: 0; } + +.snippet-demo { + background: #f5f6f9; + border-radius: 0.25rem; + padding: 0.75rem 1.25rem; } + .snippet-demo.is-distinct { + background: linear-gradient(135deg, #ff4c9f, #ff7b74); } + +@media (min-width: 768px) { + .snippet__requires-javascript { + right: -0.5rem; } } + +.back-to-top-button { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + font-size: 2rem; + font-weight: bold; + background: white; + width: 4rem; + height: 4rem; + position: fixed; + right: 2rem; + bottom: 2rem; + border-radius: 50%; + user-select: none; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); + transition: all 0.2s ease-out; + visibility: hidden; + opacity: 0; + z-index: 1; + border: 1px solid rgba(0, 32, 128, 0.1); + outline: 0; } + .back-to-top-button:hover, .back-to-top-button:focus { + transform: scale(1.1); + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); + color: #35a8ff; } + .back-to-top-button:focus { + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; + outline-style: none; } + .back-to-top-button.is-visible { + visibility: visible; + opacity: 1; } diff --git a/dist/719042b6d7879d0a403a9eaac2211738.js b/dist/719042b6d7879d0a403a9eaac2211738.js new file mode 100644 index 000000000..af89280bf --- /dev/null +++ b/dist/719042b6d7879d0a403a9eaac2211738.js @@ -0,0 +1,1479 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles + +// eslint-disable-next-line no-global-assign +require = (function (modules, cache, entry) { + // Save the require from previous bundle to this closure if any + var previousRequire = typeof require === "function" && require; + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = typeof require === "function" && require; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + + var module = cache[name] = new newRequire.Module(name); + + modules[name][0].call(module.exports, localRequire, module, module.exports); + } + + return cache[name].exports; + + function localRequire(x){ + return newRequire(localRequire.resolve(x)); + } + + function resolve(x){ + return modules[name][1][x] || x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + + for (var i = 0; i < entry.length; i++) { + newRequire(entry[i]); + } + + // Override the current require with this new one + return newRequire; +})({22:[function(require,module,exports) { +var bundleURL = null; +function getBundleURLCached() { + if (!bundleURL) { + bundleURL = getBundleURL(); + } + + return bundleURL; +} + +function getBundleURL() { + // Attempt to find the URL of the current script and use that as the base URL + try { + throw new Error(); + } catch (err) { + var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); + if (matches) { + return getBaseURL(matches[0]); + } + } + + return '/'; +} + +function getBaseURL(url) { + return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; +} + +exports.getBundleURL = getBundleURLCached; +exports.getBaseURL = getBaseURL; +},{}],21:[function(require,module,exports) { +var bundle = require('./bundle-url'); + +function updateLink(link) { + var newLink = link.cloneNode(); + newLink.onload = function () { + link.remove(); + }; + newLink.href = link.href.split('?')[0] + '?' + Date.now(); + link.parentNode.insertBefore(newLink, link.nextSibling); +} + +var cssTimeout = null; +function reloadCSS() { + if (cssTimeout) { + return; + } + + cssTimeout = setTimeout(function () { + var links = document.querySelectorAll('link[rel="stylesheet"]'); + for (var i = 0; i < links.length; i++) { + if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { + updateLink(links[i]); + } + } + + cssTimeout = null; + }, 50); +} + +module.exports = reloadCSS; +},{"./bundle-url":22}],17:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":21}],18:[function(require,module,exports) { +var global = (1,eval)("this"); + +/* ********************************************** + Begin prism-core.js +********************************************** */ + +var _self = (typeof window !== 'undefined') + ? window // if in browser + : ( + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) + ? self // if in worker + : {} // if in node js + ); + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * MIT license http://www.opensource.org/licenses/mit-license.php/ + * @author Lea Verou http://lea.verou.me + */ + +var Prism = (function(){ + +// Private helper vars +var lang = /\blang(?:uage)?-(\w+)\b/i; +var uniqueId = 0; + +var _ = _self.Prism = { + manual: _self.Prism && _self.Prism.manual, + disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, + util: { + encode: function (tokens) { + if (tokens instanceof Token) { + return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); + } else if (_.util.type(tokens) === 'Array') { + return tokens.map(_.util.encode); + } else { + return tokens.replace(/&/g, '&').replace(/ text.length) { + // Something went terribly wrong, ABORT, ABORT! + return; + } + + if (str instanceof Token) { + continue; + } + + pattern.lastIndex = 0; + + var match = pattern.exec(str), + delNum = 1; + + // Greedy patterns can override/remove up to two previously matched tokens + if (!match && greedy && i != strarr.length - 1) { + pattern.lastIndex = pos; + match = pattern.exec(text); + if (!match) { + break; + } + + var from = match.index + (lookbehind ? match[1].length : 0), + to = match.index + match[0].length, + k = i, + p = pos; + + for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { + p += strarr[k].length; + // Move the index i to the element in strarr that is closest to from + if (from >= p) { + ++i; + pos = p; + } + } + + /* + * If strarr[i] is a Token, then the match starts inside another Token, which is invalid + * If strarr[k - 1] is greedy we are in conflict with another greedy pattern + */ + if (strarr[i] instanceof Token || strarr[k - 1].greedy) { + continue; + } + + // Number of tokens to delete and replace with the new match + delNum = k - i; + str = text.slice(pos, p); + match.index -= pos; + } + + if (!match) { + if (oneshot) { + break; + } + + continue; + } + + if(lookbehind) { + lookbehindLength = match[1].length; + } + + var from = match.index + lookbehindLength, + match = match[0].slice(lookbehindLength), + to = from + match.length, + before = str.slice(0, from), + after = str.slice(to); + + var args = [i, delNum]; + + if (before) { + ++i; + pos += before.length; + args.push(before); + } + + var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); + + args.push(wrapped); + + if (after) { + args.push(after); + } + + Array.prototype.splice.apply(strarr, args); + + if (delNum != 1) + _.matchGrammar(text, strarr, grammar, i, pos, true, token); + + if (oneshot) + break; + } + } + } + }, + + tokenize: function(text, grammar, language) { + var strarr = [text]; + + var rest = grammar.rest; + + if (rest) { + for (var token in rest) { + grammar[token] = rest[token]; + } + + delete grammar.rest; + } + + _.matchGrammar(text, strarr, grammar, 0, 0, false); + + return strarr; + }, + + hooks: { + all: {}, + + add: function (name, callback) { + var hooks = _.hooks.all; + + hooks[name] = hooks[name] || []; + + hooks[name].push(callback); + }, + + run: function (name, env) { + var callbacks = _.hooks.all[name]; + + if (!callbacks || !callbacks.length) { + return; + } + + for (var i=0, callback; callback = callbacks[i++];) { + callback(env); + } + } + } +}; + +var Token = _.Token = function(type, content, alias, matchedStr, greedy) { + this.type = type; + this.content = content; + this.alias = alias; + // Copy of the full string this token was created from + this.length = (matchedStr || "").length|0; + this.greedy = !!greedy; +}; + +Token.stringify = function(o, language, parent) { + if (typeof o == 'string') { + return o; + } + + if (_.util.type(o) === 'Array') { + return o.map(function(element) { + return Token.stringify(element, language, o); + }).join(''); + } + + var env = { + type: o.type, + content: Token.stringify(o.content, language, parent), + tag: 'span', + classes: ['token', o.type], + attributes: {}, + language: language, + parent: parent + }; + + if (o.alias) { + var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; + Array.prototype.push.apply(env.classes, aliases); + } + + _.hooks.run('wrap', env); + + var attributes = Object.keys(env.attributes).map(function(name) { + return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; + }).join(' '); + + return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; + +}; + +if (!_self.document) { + if (!_self.addEventListener) { + // in Node.js + return _self.Prism; + } + + if (!_.disableWorkerMessageHandler) { + // In worker + _self.addEventListener('message', function (evt) { + var message = JSON.parse(evt.data), + lang = message.language, + code = message.code, + immediateClose = message.immediateClose; + + _self.postMessage(_.highlight(code, _.languages[lang], lang)); + if (immediateClose) { + _self.close(); + } + }, false); + } + + return _self.Prism; +} + +//Get current script and highlight +var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); + +if (script) { + _.filename = script.src; + + if (!_.manual && !script.hasAttribute('data-manual')) { + if(document.readyState !== "loading") { + if (window.requestAnimationFrame) { + window.requestAnimationFrame(_.highlightAll); + } else { + window.setTimeout(_.highlightAll, 16); + } + } + else { + document.addEventListener('DOMContentLoaded', _.highlightAll); + } + } +} + +return _self.Prism; + +})(); + +if (typeof module !== 'undefined' && module.exports) { + module.exports = Prism; +} + +// hack for components to work correctly in node.js +if (typeof global !== 'undefined') { + global.Prism = Prism; +} + + +/* ********************************************** + Begin prism-markup.js +********************************************** */ + +Prism.languages.markup = { + 'comment': //, + 'prolog': /<\?[\s\S]+?\?>/, + 'doctype': //i, + 'cdata': //i, + 'tag': { + pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, + inside: { + 'tag': { + pattern: /^<\/?[^\s>\/]+/i, + inside: { + 'punctuation': /^<\/?/, + 'namespace': /^[^\s>\/:]+:/ + } + }, + 'attr-value': { + pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, + inside: { + 'punctuation': [ + /^=/, + { + pattern: /(^|[^\\])["']/, + lookbehind: true + } + ] + } + }, + 'punctuation': /\/?>/, + 'attr-name': { + pattern: /[^\s>\/]+/, + inside: { + 'namespace': /^[^\s>\/:]+:/ + } + } + + } + }, + 'entity': /&#?[\da-z]{1,8};/i +}; + +Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = + Prism.languages.markup['entity']; + +// Plugin to make entity title show the real entity, idea by Roman Komarov +Prism.hooks.add('wrap', function(env) { + + if (env.type === 'entity') { + env.attributes['title'] = env.content.replace(/&/, '&'); + } +}); + +Prism.languages.xml = Prism.languages.markup; +Prism.languages.html = Prism.languages.markup; +Prism.languages.mathml = Prism.languages.markup; +Prism.languages.svg = Prism.languages.markup; + + +/* ********************************************** + Begin prism-css.js +********************************************** */ + +Prism.languages.css = { + 'comment': /\/\*[\s\S]*?\*\//, + 'atrule': { + pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, + inside: { + 'rule': /@[\w-]+/ + // See rest below + } + }, + 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, + 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, + 'string': { + pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, + 'important': /\B!important\b/i, + 'function': /[-a-z0-9]+(?=\()/i, + 'punctuation': /[(){};:]/ +}; + +Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'style': { + pattern: /()[\s\S]*?(?=<\/style>)/i, + lookbehind: true, + inside: Prism.languages.css, + alias: 'language-css', + greedy: true + } + }); + + Prism.languages.insertBefore('inside', 'attr-value', { + 'style-attr': { + pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, + inside: { + 'attr-name': { + pattern: /^\s*style/i, + inside: Prism.languages.markup.tag.inside + }, + 'punctuation': /^\s*=\s*['"]|['"]\s*$/, + 'attr-value': { + pattern: /.+/i, + inside: Prism.languages.css + } + }, + alias: 'language-css' + } + }, Prism.languages.markup.tag); +} + +/* ********************************************** + Begin prism-clike.js +********************************************** */ + +Prism.languages.clike = { + 'comment': [ + { + pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, + lookbehind: true + }, + { + pattern: /(^|[^\\:])\/\/.*/, + lookbehind: true + } + ], + 'string': { + pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'class-name': { + pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, + lookbehind: true, + 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': /[a-z0-9_]+(?=\()/i, + 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, + 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, + 'punctuation': /[{}[\];(),.:]/ +}; + + +/* ********************************************** + Begin prism-javascript.js +********************************************** */ + +Prism.languages.javascript = Prism.languages.extend('clike', { + 'keyword': /\b(?: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|var|void|while|with|yield)\b/, + 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, + // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) + 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, + 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ +}); + +Prism.languages.insertBefore('javascript', 'keyword', { + 'regex': { + pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, + lookbehind: true, + greedy: true + }, + // This must be declared before keyword because we use "function" inside the look-forward + 'function-variable': { + pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, + alias: 'function' + } +}); + +Prism.languages.insertBefore('javascript', 'string', { + 'template-string': { + pattern: /`(?:\\[\s\S]|[^\\`])*`/, + greedy: true, + inside: { + 'interpolation': { + pattern: /\$\{[^}]+\}/, + inside: { + 'interpolation-punctuation': { + pattern: /^\$\{|\}$/, + alias: 'punctuation' + }, + rest: Prism.languages.javascript + } + }, + 'string': /[\s\S]+/ + } + } +}); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'script': { + pattern: /()[\s\S]*?(?=<\/script>)/i, + lookbehind: true, + inside: Prism.languages.javascript, + alias: 'language-javascript', + greedy: true + } + }); +} + +Prism.languages.js = Prism.languages.javascript; + + +/* ********************************************** + Begin prism-file-highlight.js +********************************************** */ + +(function () { + if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { + return; + } + + self.Prism.fileHighlight = function() { + + var Extensions = { + 'js': 'javascript', + 'py': 'python', + 'rb': 'ruby', + 'ps1': 'powershell', + 'psm1': 'powershell', + 'sh': 'bash', + 'bat': 'batch', + 'h': 'c', + 'tex': 'latex' + }; + + Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { + var src = pre.getAttribute('data-src'); + + var language, parent = pre; + var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; + while (parent && !lang.test(parent.className)) { + parent = parent.parentNode; + } + + if (parent) { + language = (pre.className.match(lang) || [, ''])[1]; + } + + if (!language) { + var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; + language = Extensions[extension] || extension; + } + + var code = document.createElement('code'); + code.className = 'language-' + language; + + pre.textContent = ''; + + code.textContent = 'Loading…'; + + pre.appendChild(code); + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', src, true); + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + + if (xhr.status < 400 && xhr.responseText) { + code.textContent = xhr.responseText; + + Prism.highlightElement(code); + } + else if (xhr.status >= 400) { + code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; + } + else { + code.textContent = '✖ Error: File does not exist or is empty'; + } + } + }; + + xhr.send(null); + }); + + }; + + document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); + +})(); + +},{}],13:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":21}],12:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":21}],14:[function(require,module,exports) { +var e = Element.prototype; +if (!e.matches) { + e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; +} +if (!e.closest) { + e.closest = function (s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; +} +},{}],20:[function(require,module,exports) { +var global = (1,eval)("this"); +var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +;(function (global, factory) { + (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); +})(this, function () { + 'use strict'; + + // Robert Penner's easeInOutQuad + + // find the rest of his easing functions here: http://robertpenner.com/easing/ + // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js + + var easeInOutQuad = function easeInOutQuad(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; + }; + + var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { + return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + }; + + var jumper = function jumper() { + // private variable cache + // no variables are created during a jump, preventing memory leaks + + var element = void 0; // element to scroll to (node) + + var start = void 0; // where scroll starts (px) + var stop = void 0; // where scroll stops (px) + + var offset = void 0; // adjustment from the stop position (px) + var easing = void 0; // easing function (function) + var a11y = void 0; // accessibility support flag (boolean) + + var distance = void 0; // distance of scroll (px) + var duration = void 0; // scroll duration (ms) + + var timeStart = void 0; // time scroll started (ms) + var timeElapsed = void 0; // time spent scrolling thus far (ms) + + var next = void 0; // next scroll position (px) + + var callback = void 0; // to call when done scrolling (function) + + // scroll position helper + + function location() { + return window.scrollY || window.pageYOffset; + } + + // element offset helper + + function top(element) { + return element.getBoundingClientRect().top + start; + } + + // rAF loop helper + + function loop(timeCurrent) { + // store time scroll started, if not started already + if (!timeStart) { + timeStart = timeCurrent; + } + + // determine time spent scrolling so far + timeElapsed = timeCurrent - timeStart; + + // calculate next scroll position + next = easing(timeElapsed, start, distance, duration); + + // scroll to it + window.scrollTo(0, next); + + // check progress + timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop + : done(); // scrolling is done + } + + // scroll finished helper + + function done() { + // account for rAF time rounding inaccuracies + window.scrollTo(0, start + distance); + + // if scrolling to an element, and accessibility is enabled + if (element && a11y) { + // add tabindex indicating programmatic focus + element.setAttribute('tabindex', '-1'); + + // focus the element + element.focus(); + } + + // if it exists, fire the callback + if (typeof callback === 'function') { + callback(); + } + + // reset time for next jump + timeStart = false; + } + + // API + + function jump(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + // resolve options, or use defaults + duration = options.duration || 1000; + offset = options.offset || 0; + callback = options.callback; // "undefined" is a suitable default, and won't be called + easing = options.easing || easeInOutQuad; + a11y = options.a11y || false; + + // cache starting position + start = location(); + + // resolve target + switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { + // scroll from current position + case 'number': + element = undefined; // no element to scroll to + a11y = false; // make sure accessibility is off + stop = start + target; + break; + + // scroll to element (node) + // bounding rect is relative to the viewport + case 'object': + element = target; + stop = top(element); + break; + + // scroll to element (selector) + // bounding rect is relative to the viewport + case 'string': + element = document.querySelector(target); + stop = top(element); + break; + } + + // resolve scroll distance, accounting for offset + distance = stop - start + offset; + + // resolve duration + switch (_typeof(options.duration)) { + // number in ms + case 'number': + duration = options.duration; + break; + + // function passed the distance of the scroll + case 'function': + duration = options.duration(distance); + break; + } + + // start the loop + window.requestAnimationFrame(loop); + } + + // expose only the jump method + return jump; + }; + + // export singleton + + var singleton = jumper(); + + return function () { + var scrolling = void 0; + var end = function end() { + return scrolling = false; + }; + return function (to) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (scrolling) return; + var scrollY = window.scrollY || window.pageYOffset; + if (to !== '.header') location.hash = to; + scroll(0, scrollY); + scrolling = true; + setTimeout(end, options.duration || 0); + return singleton(to, options); + }; + }(); +}); +},{}],19:[function(require,module,exports) { +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var select = exports.select = function select(s) { + return document.querySelector(s); +}; +var selectAll = exports.selectAll = function selectAll(s) { + return [].slice.call(document.querySelectorAll(s)); +}; +var scrollY = exports.scrollY = function scrollY() { + return window.scrollY || window.pageYOffset; +}; +var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { + return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; +}; + +/* +* Make iOS behave normally. +*/ +if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { + document.body.style.cursor = 'pointer'; +} + +/* +* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font +* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. +* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. +* Must be applied to all browsers for now. +*/ +;(function () { + var ua = navigator.userAgent; + + // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica + var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; + + // Chrome v64 and FF v58 fix the issue + var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; + + var allEls = [].slice.call(document.querySelectorAll('*')); + + if (isRelevantMacOS && isAffectedBrowser) { + document.documentElement.style.letterSpacing = '-0.3px'; + allEls.forEach(function (el) { + var fontSize = parseFloat(getComputedStyle(el).fontSize); + if (fontSize >= 20) el.style.letterSpacing = '0.3px'; + }); + } else if (isRelevantMacOS && !isAffectedBrowser) { + // Italics fix + allEls.forEach(function (el) { + var _getComputedStyle = getComputedStyle(el), + fontSize = _getComputedStyle.fontSize, + fontStyle = _getComputedStyle.fontStyle; + + if (fontStyle === 'italic') { + el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; + } + }); + } +})(); +},{}],15:[function(require,module,exports) { +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _jump = require('../deps/jump'); + +var _jump2 = _interopRequireDefault(_jump); + +var _utils = require('../deps/utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var menu = (0, _utils.select)('.hamburger'); +var links = (0, _utils.select)('.sidebar__links'); +var ACTIVE_CLASS = 'is-active'; + +var toggle = function toggle() { + return [menu, links].forEach(function (el) { + return el.classList.toggle(ACTIVE_CLASS); + }); +}; + +menu.addEventListener('click', toggle); + +links.addEventListener('click', function (e) { + setTimeout(toggle, 40); + if (e.target.classList.contains('sidebar__link')) { + e.preventDefault(); + (0, _jump2.default)(e.target.getAttribute('href'), { + duration: 750, + offset: window.innerWidth <= 768 ? -64 : -32, + easing: _utils.easeOutQuint + }); + } +}); + +document.addEventListener('click', function (e) { + if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { + toggle(); + } +}); + +exports.default = { toggle: toggle }; +},{"../deps/jump":20,"../deps/utils":19}],16:[function(require,module,exports) { +'use strict'; + +var _jump = require('../deps/jump'); + +var _jump2 = _interopRequireDefault(_jump); + +var _utils = require('../deps/utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var backToTopButton = (0, _utils.select)('.back-to-top-button'); + +window.addEventListener('scroll', function () { + backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); +}); +backToTopButton.onclick = function () { + (0, _jump2.default)('.header', { + duration: 750, + easing: _utils.easeOutQuint + }); +}; +},{"../deps/jump":20,"../deps/utils":19}],8:[function(require,module,exports) { +'use strict'; + +require('normalize.css'); + +require('prismjs'); + +require('../css/deps/prism.css'); + +require('../css/index.scss'); + +require('./deps/polyfills'); + +var _Menu = require('./components/Menu'); + +var _Menu2 = _interopRequireDefault(_Menu); + +var _BackToTopButton = require('./components/BackToTopButton'); + +var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"normalize.css":17,"prismjs":18,"../css/deps/prism.css":13,"../css/index.scss":12,"./deps/polyfills":14,"./components/Menu":15,"./components/BackToTopButton":16}],23:[function(require,module,exports) { + +var global = (1, eval)('this'); +var OldModule = module.bundle.Module; +function Module(moduleName) { + OldModule.call(this, moduleName); + this.hot = { + accept: function (fn) { + this._acceptCallback = fn || function () {}; + }, + dispose: function (fn) { + this._disposeCallback = fn; + } + }; +} + +module.bundle.Module = Module; + +var parent = module.bundle.parent; +if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { + var hostname = '' || location.hostname; + var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; + var ws = new WebSocket(protocol + '://' + hostname + ':' + '56686' + '/'); + ws.onmessage = function (event) { + var data = JSON.parse(event.data); + + if (data.type === 'update') { + data.assets.forEach(function (asset) { + hmrApply(global.require, asset); + }); + + data.assets.forEach(function (asset) { + if (!asset.isNew) { + hmrAccept(global.require, asset.id); + } + }); + } + + if (data.type === 'reload') { + ws.close(); + ws.onclose = function () { + location.reload(); + }; + } + + if (data.type === 'error-resolved') { + console.log('[parcel] ✨ Error resolved'); + } + + if (data.type === 'error') { + console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); + } + }; +} + +function getParents(bundle, id) { + var modules = bundle.modules; + if (!modules) { + return []; + } + + var parents = []; + var k, d, dep; + + for (k in modules) { + for (d in modules[k][1]) { + dep = modules[k][1][d]; + if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { + parents.push(+k); + } + } + } + + if (bundle.parent) { + parents = parents.concat(getParents(bundle.parent, id)); + } + + return parents; +} + +function hmrApply(bundle, asset) { + var modules = bundle.modules; + if (!modules) { + return; + } + + if (modules[asset.id] || !bundle.parent) { + var fn = new Function('require', 'module', 'exports', asset.generated.js); + asset.isNew = !modules[asset.id]; + modules[asset.id] = [fn, asset.deps]; + } else if (bundle.parent) { + hmrApply(bundle.parent, asset); + } +} + +function hmrAccept(bundle, id) { + var modules = bundle.modules; + if (!modules) { + return; + } + + if (!modules[id] && bundle.parent) { + return hmrAccept(bundle.parent, id); + } + + var cached = bundle.cache[id]; + if (cached && cached.hot._disposeCallback) { + cached.hot._disposeCallback(); + } + + delete bundle.cache[id]; + bundle(id); + + cached = bundle.cache[id]; + if (cached && cached.hot && cached.hot._acceptCallback) { + cached.hot._acceptCallback(); + return true; + } + + return getParents(global.require, id).some(function (id) { + return hmrAccept(global.require, id); + }); +} +},{}]},{},[23,8]) +//# sourceMappingURL=/dist/719042b6d7879d0a403a9eaac2211738.map \ No newline at end of file diff --git a/dist/719042b6d7879d0a403a9eaac2211738.map b/dist/719042b6d7879d0a403a9eaac2211738.map new file mode 100644 index 000000000..9e3ad56b2 --- /dev/null +++ b/dist/719042b6d7879d0a403a9eaac2211738.map @@ -0,0 +1 @@ +{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACt0BA,IAAMtI,IAAIC,QAAQC,SAAlB;AACA,IAAI,CAACF,EAAEG,OAAP,EAAgB;AACdH,IAAEG,OAAF,GACEH,EAAEI,eAAF,IAAqBJ,EAAEK,iBAAvB,IAA4CL,EAAEM,qBAA9C,IAAuEN,EAAEO,kBAD3E;AAED;AACD,IAAI,CAACP,EAAEQ,OAAP,EAAgB;AACdR,IAAEQ,OAAF,GAAY,UAASC,CAAT,EAAY;AACtB,QAAIC,KAAK,IAAT;AACA,QAAI,CAACC,SAASC,eAAT,CAAyBC,QAAzB,CAAkCH,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,OAAG;AACD,UAAIA,GAAGP,OAAH,CAAWM,CAAX,CA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","file":"719042b6d7879d0a403a9eaac2211738.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file diff --git a/dist/ac46b6c579212c73b4f2afaa428f354c.png b/dist/ac46b6c579212c73b4f2afaa428f354c.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index abf8c425a..fc64ad9c7 100644 --- a/index.html +++ b/index.html @@ -852,7 +852,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop }

Explanation

-

The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

+

The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  3. diff --git a/snippets/system-font-stack.md b/snippets/system-font-stack.md index 54c1bdfb4..5b725be11 100644 --- a/snippets/system-font-stack.md +++ b/snippets/system-font-stack.md @@ -31,7 +31,7 @@ Uses the native font of the operating system to get close to a native app feel. #### Explanation The browser looks for each successive font, preferring the first one if possible, and -falls back to the next of it cannot find the font (on the system or defined in CSS). +falls back to the next if it cannot find the font (on the system or defined in CSS). 1. `-apple-system` is San Francisco, used on iOS and macOS (not Chrome however) 2. `BlinkMacSystemFont` is San Francisco, used on macOS Chrome From 87959ebfa53555ad738cf568eb482dee86ac2baa Mon Sep 17 00:00:00 2001 From: ohansemmanuel Date: Tue, 27 Feb 2018 02:18:11 +0100 Subject: [PATCH 022/561] sound more natural in the clearfix description --- dist/6f87738ba5ca74ac9104fc97c6eee446.html | 4 ++-- index.html | 4 ++-- snippets/clearfix.md | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/6f87738ba5ca74ac9104fc97c6eee446.html b/dist/6f87738ba5ca74ac9104fc97c6eee446.html index de0e697ba..c01759261 100644 --- a/dist/6f87738ba5ca74ac9104fc97c6eee446.html +++ b/dist/6f87738ba5ca74ac9104fc97c6eee446.html @@ -51,7 +51,7 @@

    Clearfix

    Ensures that an element self-clears its children.

    -
    Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.
    +
    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
    @@ -59,7 +59,7 @@
     </div>
     

    CSS

    .clearfix::after {
    -  content: '';
    +  content: "";
       display: block;
       clear: both;
     }
    diff --git a/index.html b/index.html
    index fc64ad9c7..5bb02998a 100644
    --- a/index.html
    +++ b/index.html
    @@ -51,7 +51,7 @@
               

    Clearfix

    Ensures that an element self-clears its children.

    -
    Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.
    +
    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
    @@ -59,7 +59,7 @@
     </div>
     

    CSS

    .clearfix::after {
    -  content: '';
    +  content: "";
       display: block;
       clear: both;
     }
    diff --git a/snippets/clearfix.md b/snippets/clearfix.md
    index b552877e1..a4edfc105 100644
    --- a/snippets/clearfix.md
    +++ b/snippets/clearfix.md
    @@ -2,7 +2,7 @@
     
     Ensures that an element self-clears its children.
     
    -###### Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.
    +###### Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.
     
     #### HTML
     
    @@ -18,7 +18,7 @@ Ensures that an element self-clears its children.
     
     ```css
     .clearfix::after {
    -  content: '';
    +  content: "";
       display: block;
       clear: both;
     }
    @@ -55,7 +55,7 @@ Ensures that an element self-clears its children.
     1. `.clearfix::after` defines a pseudo element.
     2. `content: ''` allows the pseudo element to affect layout.
     3. `clear: both` indicates that the left, right or both sides of the element cannot be adjacent
    -to earlier floated elements within the same block formatting context.
    +   to earlier floated elements within the same block formatting context.
     
     #### Browser support
     
    
    From c09dabc9d5399a0517fe65e017cc83e7722c66af Mon Sep 17 00:00:00 2001
    From: ohansemmanuel 
    Date: Tue, 27 Feb 2018 02:19:17 +0100
    Subject: [PATCH 023/561] add missing hyphen in pseudo-element
    
    ---
     dist/6f87738ba5ca74ac9104fc97c6eee446.html | 4 ++--
     index.html                                 | 4 ++--
     snippets/clearfix.md                       | 4 ++--
     3 files changed, 6 insertions(+), 6 deletions(-)
    
    diff --git a/dist/6f87738ba5ca74ac9104fc97c6eee446.html b/dist/6f87738ba5ca74ac9104fc97c6eee446.html
    index c01759261..24ffa0db7 100644
    --- a/dist/6f87738ba5ca74ac9104fc97c6eee446.html
    +++ b/dist/6f87738ba5ca74ac9104fc97c6eee446.html
    @@ -87,8 +87,8 @@
                 
                 

    Explanation

      -
    1. .clearfix::after defines a pseudo element.
    2. -
    3. content: '' allows the pseudo element to affect layout.
    4. +
    5. .clearfix::after defines a pseudo-element.
    6. +
    7. content: '' allows the pseudo-element to affect layout.
    8. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    diff --git a/index.html b/index.html index 5bb02998a..83657bb85 100644 --- a/index.html +++ b/index.html @@ -87,8 +87,8 @@

    Explanation

      -
    1. .clearfix::after defines a pseudo element.
    2. -
    3. content: '' allows the pseudo element to affect layout.
    4. +
    5. .clearfix::after defines a pseudo-element.
    6. +
    7. content: '' allows the pseudo-element to affect layout.
    8. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    diff --git a/snippets/clearfix.md b/snippets/clearfix.md index a4edfc105..e1fe64e6a 100644 --- a/snippets/clearfix.md +++ b/snippets/clearfix.md @@ -52,8 +52,8 @@ Ensures that an element self-clears its children. #### Explanation -1. `.clearfix::after` defines a pseudo element. -2. `content: ''` allows the pseudo element to affect layout. +1. `.clearfix::after` defines a pseudo-element. +2. `content: ''` allows the pseudo-element to affect layout. 3. `clear: both` indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context. From c7b286c2aca8645ecebf8d42037b1d6f1af99145 Mon Sep 17 00:00:00 2001 From: ohansemmanuel Date: Tue, 27 Feb 2018 02:22:56 +0100 Subject: [PATCH 024/561] fix typo in easing-variables.md --- dist/6f87738ba5ca74ac9104fc97c6eee446.html | 4 ++-- index.html | 4 ++-- snippets/easing-variables.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/6f87738ba5ca74ac9104fc97c6eee446.html b/dist/6f87738ba5ca74ac9104fc97c6eee446.html index 24ffa0db7..93d0eda04 100644 --- a/dist/6f87738ba5ca74ac9104fc97c6eee446.html +++ b/dist/6f87738ba5ca74ac9104fc97c6eee446.html @@ -216,8 +216,8 @@ in any specification.

    }

    Explanation

    -

    The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

    +

    The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

    Browser support

    diff --git a/index.html b/index.html index 83657bb85..84106a7fd 100644 --- a/index.html +++ b/index.html @@ -216,8 +216,8 @@ in any specification.

    }

    Explanation

    -

    The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

    +

    The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

    Browser support

    diff --git a/snippets/easing-variables.md b/snippets/easing-variables.md index 88f9d2951..de2ba1600 100644 --- a/snippets/easing-variables.md +++ b/snippets/easing-variables.md @@ -97,7 +97,7 @@ powerful than the built-in `ease`, `ease-in`, `ease-out` and `ease-in-out`. #### Explanation -The variables are defined globally with the `:root` CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, `:root` represents the `` element and is identical to the selector html, except that its specificity is higher. +The variables are defined globally within the `:root` CSS pseudo-class which matches the root element of a tree representing the document. In HTML, `:root` represents the `` element and is identical to the selector `html`, except that its specificity is higher. #### Browser support From f29913e737f2826ac92d967bbaae754fcb6e7855 Mon Sep 17 00:00:00 2001 From: ohansemmanuel Date: Tue, 27 Feb 2018 02:26:41 +0100 Subject: [PATCH 025/561] rebuild the project docs --- docs/410f94d6c61e5beb62212a28c82ecef3.png | Bin 0 -> 2628 bytes docs/719042b6d7879d0a403a9eaac2211738.css | 9 +++++++++ docs/719042b6d7879d0a403a9eaac2211738.js | 19 +++++++++++++++++++ docs/ac46b6c579212c73b4f2afaa428f354c.png | Bin 0 -> 35911 bytes docs/index.html | 10 +++++----- 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 docs/410f94d6c61e5beb62212a28c82ecef3.png create mode 100644 docs/719042b6d7879d0a403a9eaac2211738.css create mode 100644 docs/719042b6d7879d0a403a9eaac2211738.js create mode 100644 docs/ac46b6c579212c73b4f2afaa428f354c.png diff --git a/docs/410f94d6c61e5beb62212a28c82ecef3.png b/docs/410f94d6c61e5beb62212a28c82ecef3.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/docs/719042b6d7879d0a403a9eaac2211738.css b/docs/719042b6d7879d0a403a9eaac2211738.css new file mode 100644 index 000000000..132a1d653 --- /dev/null +++ b/docs/719042b6d7879d0a403a9eaac2211738.css @@ -0,0 +1,9 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/719042b6d7879d0a403a9eaac2211738.js b/docs/719042b6d7879d0a403a9eaac2211738.js new file mode 100644 index 000000000..8ac58ff14 --- /dev/null +++ b/docs/719042b6d7879d0a403a9eaac2211738.js @@ -0,0 +1,19 @@ +require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); +},{}],14:[function(require,module,exports) { +var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); +},{}],19:[function(require,module,exports) { +var global = (1,eval)("this"); +var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); +},{}],20:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); +},{}],15:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; +},{"../deps/jump":19,"../deps/utils":20}],16:[function(require,module,exports) { +"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; +},{"../deps/jump":19,"../deps/utils":20}],8:[function(require,module,exports) { +"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} +},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":14,"./components/Menu":15,"./components/BackToTopButton":16}]},{},[8]) \ No newline at end of file diff --git a/docs/ac46b6c579212c73b4f2afaa428f354c.png b/docs/ac46b6c579212c73b4f2afaa428f354c.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index 1464c06d4..36086b2b5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,17 +1,17 @@ - 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +    30 Seconds of CSS        

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
     </div>
     

    CSS

    .clearfix::after {
    -  content: '';
    +  content: "";
       display: block;
       clear: both;
     }
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo element.
    2. content: '' allows the pseudo element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Custom text selection

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Custom text selection

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
     

    CSS

    .custom-text-selection::selection {
       background: red;
       color: white;
    @@ -46,7 +46,7 @@
     .easing-variables:hover {
       transform: rotate(45deg);
     }
    -

    Demo

    Hover

    Explanation

    The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

    Browser support

    87.2%

    ✅ No caveats.

    Etched text

    Creates an effect where text appears to be "etched" or engraved into the background.

    HTML

    <p class="etched-text">I appear etched into the background.</p>
    +

    Demo

    Hover

    Explanation

    The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

    Browser support

    87.2%

    ✅ No caveats.

    Etched text

    Creates an effect where text appears to be "etched" or engraved into the background.

    HTML

    <p class="etched-text">I appear etched into the background.</p>
     

    CSS

    .etched-text {
       text-shadow: 0 2px white;
       font-size: 1.5rem;
    @@ -202,7 +202,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
     

    CSS

    .system-font-stack {
       font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
     }
    -

    Demo

    This text uses the system font.

    Explanation

    The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

    1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
    2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
    3. Segoe UI is used on Windows 10
    4. Roboto is used on Android
    5. Oxygen-Sans is used on GNU+Linux
    6. Ubuntu is used on Linux
    7. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
    8. Arial is a font widely supported by all operating systems
    9. sans-serif is the fallback sans-serif font if none of the other fonts are supported

    Browser support

    99+%

    ✅ No caveats.

    Triangle

    Creates a triangle shape with pure CSS.

    HTML

    <div class="triangle"></div>
    +

    Demo

    This text uses the system font.

    Explanation

    The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

    1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
    2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
    3. Segoe UI is used on Windows 10
    4. Roboto is used on Android
    5. Oxygen-Sans is used on GNU+Linux
    6. Ubuntu is used on Linux
    7. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
    8. Arial is a font widely supported by all operating systems
    9. sans-serif is the fallback sans-serif font if none of the other fonts are supported

    Browser support

    99+%

    ✅ No caveats.

    Triangle

    Creates a triangle shape with pure CSS.

    HTML

    <div class="triangle"></div>
     

    CSS

    .triangle {
       width: 0;
       height: 0;
    
    From 5960f737d7884a3592e3336eeb9b7a21b5e1fa55 Mon Sep 17 00:00:00 2001
    From: atomiks 
    Date: Tue, 27 Feb 2018 11:40:08 +1000
    Subject: [PATCH 026/561] rebuild docs
    
    ---
     dist/410f94d6c61e5beb62212a28c82ecef3.png  |  Bin 2628 -> 0 bytes
     dist/527b39bfa5c417dbf84620127ec95368.png  |  Bin 2628 -> 0 bytes
     dist/5f62c8cc1947e40c7e328854a3026c04.png  |  Bin 35911 -> 0 bytes
     dist/6f87738ba5ca74ac9104fc97c6eee446.html |  999 ------------
     dist/719042b6d7879d0a403a9eaac2211738.css  | 1621 --------------------
     dist/719042b6d7879d0a403a9eaac2211738.js   | 1479 ------------------
     dist/719042b6d7879d0a403a9eaac2211738.map  |    1 -
     dist/ac46b6c579212c73b4f2afaa428f354c.png  |  Bin 35911 -> 0 bytes
     dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html |  999 ------------
     dist/f06fd0495a34430f242f7611190395d6.css  | 1620 -------------------
     dist/f06fd0495a34430f242f7611190395d6.js   | 1479 ------------------
     dist/f06fd0495a34430f242f7611190395d6.map  |    1 -
     docs/410f94d6c61e5beb62212a28c82ecef3.png  |  Bin 2628 -> 0 bytes
     docs/4d4edbda57043aeeabeac31d2dd12d0d.js   |   18 +-
     docs/719042b6d7879d0a403a9eaac2211738.css  |    9 -
     docs/719042b6d7879d0a403a9eaac2211738.js   |   19 -
     docs/ac46b6c579212c73b4f2afaa428f354c.png  |  Bin 35911 -> 0 bytes
     docs/favicon.ico                           |  Bin 0 -> 1150 bytes
     docs/index.html                            |    2 +-
     19 files changed, 10 insertions(+), 8237 deletions(-)
     delete mode 100644 dist/410f94d6c61e5beb62212a28c82ecef3.png
     delete mode 100644 dist/527b39bfa5c417dbf84620127ec95368.png
     delete mode 100644 dist/5f62c8cc1947e40c7e328854a3026c04.png
     delete mode 100644 dist/6f87738ba5ca74ac9104fc97c6eee446.html
     delete mode 100644 dist/719042b6d7879d0a403a9eaac2211738.css
     delete mode 100644 dist/719042b6d7879d0a403a9eaac2211738.js
     delete mode 100644 dist/719042b6d7879d0a403a9eaac2211738.map
     delete mode 100644 dist/ac46b6c579212c73b4f2afaa428f354c.png
     delete mode 100644 dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html
     delete mode 100644 dist/f06fd0495a34430f242f7611190395d6.css
     delete mode 100644 dist/f06fd0495a34430f242f7611190395d6.js
     delete mode 100644 dist/f06fd0495a34430f242f7611190395d6.map
     delete mode 100644 docs/410f94d6c61e5beb62212a28c82ecef3.png
     delete mode 100644 docs/719042b6d7879d0a403a9eaac2211738.css
     delete mode 100644 docs/719042b6d7879d0a403a9eaac2211738.js
     delete mode 100644 docs/ac46b6c579212c73b4f2afaa428f354c.png
     create mode 100644 docs/favicon.ico
    
    diff --git a/dist/410f94d6c61e5beb62212a28c82ecef3.png b/dist/410f94d6c61e5beb62212a28c82ecef3.png
    deleted file mode 100644
    index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 2628
    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
    
    diff --git a/dist/527b39bfa5c417dbf84620127ec95368.png b/dist/527b39bfa5c417dbf84620127ec95368.png
    deleted file mode 100644
    index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 2628
    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
    
    diff --git a/dist/5f62c8cc1947e40c7e328854a3026c04.png b/dist/5f62c8cc1947e40c7e328854a3026c04.png
    deleted file mode 100644
    index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 35911
    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 diff --git a/dist/6f87738ba5ca74ac9104fc97c6eee446.html b/dist/6f87738ba5ca74ac9104fc97c6eee446.html deleted file mode 100644 index 93d0eda04..000000000 --- a/dist/6f87738ba5ca74ac9104fc97c6eee446.html +++ /dev/null @@ -1,999 +0,0 @@ - - - - - 30 Seconds of CSS - - - - - - -

    -
    -
    -
    - -

    30 Seconds of CSS

    -

    - A curated collection of useful CSS snippets you can understand in 30 seconds or less. -

    - - - Star -
    -
    -
    -
    -
    -

    Clearfix

    -

    Ensures that an element self-clears its children.

    -
    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.
    -

    HTML

    <div class="clearfix">
    -  <div class="floated">float a</div>
    -  <div class="floated">float b</div>
    -  <div class="floated">float c</div>
    -</div>
    -
    -

    CSS

    .clearfix::after {
    -  content: "";
    -  display: block;
    -  clear: both;
    -}
    -.floated {
    -  float: left;
    -}
    -
    -

    Demo

    -
    -
    -
    float a
    -
    float b
    -
    float c
    -
    -
    - -

    Explanation

    -
      -
    1. .clearfix::after defines a pseudo-element.
    2. -
    3. content: '' allows the pseudo-element to affect layout.
    4. -
    5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
    6. -
    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Custom text selection

    -

    Changes the styling of text selection.

    -

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
    -
    -

    CSS

    .custom-text-selection::selection {
    -  background: red;
    -  color: white;
    -}
    -
    -

    Demo

    -
    -

    Select some of this text.

    -
    - -

    Explanation

    -

    ::selection defines a pseudo selector on an element to style text within it when selected.

    -

    Browser support

    -
    -
    - 84.6% -
    -
    -

    ⚠️ Requires prefixes for full support and is not actually -in any specification.

    - -
    -
    -

    Easing variables

    -

    Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

    -

    HTML

    <div class="easing-variables"></div>
    -
    -

    CSS

    :root {
    -  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
    -  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    -  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
    -  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
    -  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
    -  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    -  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
    -  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
    -  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
    -  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
    -  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
    -  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
    -  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
    -  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
    -  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
    -  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
    -  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
    -}
    -.easing-variables {
    -  width: 50px;
    -  height: 50px;
    -  background: #333;
    -  transition: transform 1s var(--ease-out-quart);
    -}
    -.easing-variables:hover {
    -  transform: rotate(45deg);
    -}
    -
    -

    Demo

    -
    -
    Hover
    -
    - -

    Explanation

    -

    The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

    -

    Browser support

    -
    -
    - 87.2% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Etched text

    -

    Creates an effect where text appears to be "etched" or engraved into the background.

    -

    HTML

    <p class="etched-text">I appear etched into the background.</p>
    -
    -

    CSS

    .etched-text {
    -  text-shadow: 0 2px white;
    -  font-size: 1.5rem;
    -  font-weight: bold;
    -  color: #b8bec5;
    -}
    -
    -

    Demo

    -
    -

    I appear etched into the background.

    -
    - -

    Explanation

    -

    text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

    -

    The background must be darker than the shadow for the effect to work.

    -

    The text color should be slightly faded to make it look like it's engraved/carved out of the background.

    -

    Browser support

    -
    -
    - 97.9% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Gradient text

    -

    Gives text a gradient color.

    -

    HTML

    <p class="gradient-text">Gradient text</p>
    -
    -

    CSS

    .gradient-text {
    -  background: -webkit-linear-gradient(pink, red);
    -  -webkit-text-fill-color: transparent;
    -  -webkit-background-clip: text;
    -}
    -
    -

    Demo

    -
    -

    - Gradient text -

    -
    - -

    Explanation

    -
      -
    1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
    2. -
    3. webkit-text-fill-color: transparent fills the text with a transparent color.
    4. -
    5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
    6. -
    -

    Browser support

    -
    -
    - 90.7% -
    -
    -

    ⚠️ Uses non-standard properties.

    - -
    -
    -

    Hairline border

    -

    Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

    -

    HTML

    <div class="hairline-border">text</div>
    -
    -

    CSS

    .hairline-border {
    -  box-shadow: 0 0 0 1px;
    -}
    -@media (min-resolution: 2dppx) {
    -  .hairline-border {
    -    box-shadow: 0 0 0 0.5px;
    -  }
    -}
    -@media (min-resolution: 3dppx) {
    -  .hairline-border {
    -    box-shadow: 0 0 0 0.33333333px;
    -  }
    -}
    -@media (min-resolution: 4dppx) {
    -  .hairline-border {
    -    box-shadow: 0 0 0 0.25px;
    -  }
    -}
    -
    -

    Demo

    -
    -

    Text with a hairline border around it.

    -
    - -

    Explanation

    -
      -
    1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
    2. -
    3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
    4. -
    -

    Browser Support

    -
    -
    - 95.0% -
    -
    -

    ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

    - -
    -

    *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

    -
    -
    -

    Horizontal and vertical centering

    -

    Horizontally and vertically centers a child element within a parent element.

    -

    HTML

    <div class="horizontal-and-vertical-centering">
    -  <div class="child"></div>
    -</div>
    -
    -

    CSS

    .horizontal-and-vertical-centering {
    -  display: flex;
    -  justify-content: center;
    -  align-items: center;
    -}
    -
    -

    Demo

    -
    -
    -

    Centered content.

    -
    -
    - -

    Explanation

    -
      -
    1. display: flex enables flexbox.
    2. -
    3. justify-content: center centers the child horizontally.
    4. -
    5. align-items: center centers the child vertically.
    6. -
    -

    Browser support

    -
    -
    - 97.8% -
    -
    -

    ⚠️ Needs prefixes for full support.

    - -
    -
    -

    Mouse cursor gradient tracking

    -

    A hover effect where the gradient follows the mouse cursor.

    -

    HTML

    <button class="mouse-cursor-gradient-tracking">
    -  <span>Hover me</span>
    -</button>
    -
    -

    CSS

    .mouse-cursor-gradient-tracking {
    -  position: relative;
    -  background: #2379f7;
    -  padding: 0.5rem 1rem;
    -  font-size: 1.2rem;
    -  border: none;
    -  color: white;
    -  cursor: pointer;
    -  outline: none;
    -  overflow: hidden;
    -}
    -.mouse-cursor-gradient-tracking span {
    -  position: relative;
    -}
    -.mouse-cursor-gradient-tracking::before {
    -  --size: 0;
    -  content: '';
    -  position: absolute;
    -  left: var(--x);
    -  top: var(--y);
    -  width: var(--size);
    -  height: var(--size);
    -  background: radial-gradient(circle closest-side, pink, transparent);
    -  transform: translate(-50%, -50%);
    -  transition: width .2s ease, height .2s ease;
    -}
    -.mouse-cursor-gradient-tracking:hover::before {
    -  --size: 200px;
    -}
    -
    -

    JavaScript

    var btn = document.querySelector('.mouse-cursor-gradient-tracking')
    -btn.onmousemove = function (e) {
    -  var x = e.pageX - btn.offsetLeft
    -  var y = e.pageY - btn.offsetTop
    -  btn.style.setProperty('--x', x + 'px')
    -  btn.style.setProperty('--y', y + 'px')
    -}
    -
    -

    Demo

    -
    - -
    - - -

    Explanation

    -

    TODO

    -

    Note!

    -

    If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

    -
    var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
    -var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
    -
    -

    Browser support

    -
    -
    - 87.2% -
    -
    -

    -
    Requires JavaScript
    - ⚠️ Requires JavaScript. -

    - -
    -
    -

    Overflow scroll gradient

    -

    Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

    -

    HTML

    <div class="overflow-scroll-gradient">
    -  <div class="overflow-scroll-gradient__scroller">
    -    Content to be scrolled
    -  </div>
    -</div>
    -
    -

    CSS

    .overflow-scroll-gradient {
    -  position: relative;
    -}
    -.overflow-scroll-gradient::after {
    -  content: '';
    -  position: absolute;
    -  bottom: 0;
    -  width: 300px;
    -  height: 25px;
    -  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
    -}
    -.overflow-scroll-gradient__scroller {
    -  overflow-y: scroll;
    -  background: white;
    -  width: 300px;
    -  height: 250px;
    -  padding: 15px 0;
    -  line-height: 1.2;
    -  text-align: center;
    -}
    -
    -

    Demo

    -
    -
    -
    - Content to be scrolled -
    -
    -
    - - -

    Explanation

    -
      -
    1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
    2. -
    3. ::after defines a pseudo element.
    4. -
    5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
    6. -
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. -
    9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
    10. -
    11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
    12. -
    13. bottom: 0 positions the pseudo element at the bottom of the parent.
    14. -
    -

    Browser support

    -
    -
    - 94.8% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Popout menu

    -

    Reveals an interactive popout menu on hover.

    -

    HTML

    <div class="reference">
    -  <div class="popout-menu">
    -    Popout menu
    -  </div>
    -</div>
    -
    -

    CSS

    .reference {
    -  position: relative;
    -}
    -.popout-menu {
    -  position: absolute;
    -  visibility: hidden;
    -  left: 100%;
    -}
    -.reference:hover > .popout-menu {
    -  visibility: visible;
    -}
    -
    -

    Demo

    -
    -
    -
    - Popout menu -
    -
    -
    - -

    Explanation

    -
      -
    1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
    2. -
    3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
    4. -
    5. left: 100% moves the the popout menu 100% of its parent's width from the left.
    6. -
    7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
    8. -
    9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, - which shows the popout.
    10. -
    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Pretty text underline

    -

    A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

    -

    HTML

    <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
    -
    -

    CSS

    .pretty-text-underline {
    -  display: inline;
    -  font-size: 1.25rem;
    -  text-shadow: 1px 1px 0 #f5f6f9,
    -    -1px 1px 0 #f5f6f9,
    -    -1px -1px 0 #f5f6f9,
    -    1px -1px 0 #f5f6f9;
    -  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
    -  background-position: 0 1.04em;
    -  background-repeat: repeat-x;
    -  background-size: 1px 1px;
    -}
    -.pretty-text-underline::selection {
    -  background-color: rgba(0, 150, 255, 0.3);
    -  text-shadow: none;
    -}
    -
    -

    Demo

    -
    -

    Pretty text underline without clipping descending letters.

    -
    - -

    Explanation

    -
      -
    1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use - a larger px size.
    2. -
    3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
    4. -
    5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
    6. -
    7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. -
    8. -
    -

    Browser support

    -
    -
    - 94.8% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Shape separator

    -

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    -

    HTML

    <div class="shape-separator"></div>
    -
    -

    CSS

    .shape-separator {
    -  position: relative;
    -  height: 48px;
    -}
    -.shape-separator::after {
    -  content: '';
    -  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
    -  position: absolute;
    -  width: 100%;
    -  height: 24px;
    -  bottom: 0;
    -}
    -
    -

    Demo

    -
    -
    -
    - -

    Explanation

    -
      -
    1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
    2. -
    3. ::after defines a pseudo element.
    4. -
    5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. -
    6. -
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. -
    9. width: 100% ensures the element stretches the entire width of its parent.
    10. -
    11. height: 24px is the same height as the shape.
    12. -
    13. bottom: 0 positions the pseudo element at the bottom of the parent.
    14. -
    -

    Browser support

    -
    -
    - 98.0% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    System font stack

    -

    Uses the native font of the operating system to get close to a native app feel.

    -

    HTML

    <p class="system-font-stack">This text uses the system font.</p>
    -
    -

    CSS

    .system-font-stack {
    -  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
    -}
    -
    -

    Demo

    -
    -

    This text uses the system font.

    -
    - -

    Explanation

    -

    The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

    -
      -
    1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
    2. -
    3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
    4. -
    5. Segoe UI is used on Windows 10
    6. -
    7. Roboto is used on Android
    8. -
    9. Oxygen-Sans is used on GNU+Linux
    10. -
    11. Ubuntu is used on Linux
    12. -
    13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
    14. -
    15. Arial is a font widely supported by all operating systems
    16. -
    17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
    18. -
    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Triangle

    -

    Creates a triangle shape with pure CSS.

    -

    HTML

    <div class="triangle"></div>
    -
    -

    CSS

    .triangle {
    -  width: 0;
    -  height: 0;
    -  border-top: 20px solid #333;
    -  border-left: 20px solid transparent;
    -  border-right: 20px solid transparent;
    -}
    -
    -

    Demo

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -

    Explanation

    -

    - View this link for a detailed explanation. -

    -

    The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

    -

    Experiment with the px values to change the proportion of the triangle.

    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Truncate text

    -

    If the text is longer than one line, it will be truncated and end with an ellipsis ....

    -

    HTML

    <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
    -
    -

    CSS

    .truncate-text {
    -  overflow: hidden;
    -  white-space: nowrap;
    -  text-overflow: ellipsis;
    -}
    -
    -

    Demo

    -
    -

    - This text will be truncated if it exceeds 200px in width. -

    -
    - -

    Explanation

    -
      -
    1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
    2. -
    3. white-space: nowrap prevents the text from exceeding one line in height.
    4. -
    5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
    6. -
    -

    Browser support

    -
    -
    - 98.1% -
    -
    -

    ✅ No caveats.

    - -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/dist/719042b6d7879d0a403a9eaac2211738.css b/dist/719042b6d7879d0a403a9eaac2211738.css deleted file mode 100644 index 96d98ca15..000000000 --- a/dist/719042b6d7879d0a403a9eaac2211738.css +++ /dev/null @@ -1,1621 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * 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; -} - -/* Grouping content - ========================================================================== */ - -/** - * 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 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 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 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * 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; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * 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; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * 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; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 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 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -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 in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 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 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} -code[class*='language-'], -pre[class*='language-'] { - color: rgb(50, 75, 100); - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 2; - font-size: 1rem; - -webkit-overflow-scrolling: touch; - margin: 0; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*='language-']::-moz-selection, -pre[class*='language-'] ::-moz-selection, -code[class*='language-']::-moz-selection, -code[class*='language-'] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*='language-']::selection, -pre[class*='language-'] ::selection, -code[class*='language-']::selection, -code[class*='language-'] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*='language-'], - pre[class*='language-'] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*='language-'] { - overflow: auto; - padding: 0.75rem 1.25rem; -} - -pre.is-option { - margin: 0; - padding: 0; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: #f5f6f9; - border-radius: 0.25rem; -} - -/* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8ca2d3; -} - -.token.selector, -.token.attr-name { - color: #da7800; -} - -.token.punctuation { - color: #93a0c7; -} - -.namespace { - opacity: 0.7; -} - -.token.tag { - color: #e22f70; -} - -.token.property, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #0087ca; -} - -.token.string, -.language-css .token.string, -.token.url, -.token.attr-value, -.token.char, -.token.builtin, -.token.inserted { - color: #008a7e; -} - -.token.operator, -.token.entity, -.style .token.string { - color: #f53737; -} - -.token.important, -.token.atrule, -.token.keyword { - color: #7552ff; -} - -.token.function { - color: #396dff; -} - -.token.regex, -.token.variable { - color: #00a8d4; -} - -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} -html { - font-size: 0.95rem; } - -body { - font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; - background: #f6f7fd; - color: #324b64; - line-height: 1.5; } - -a { - color: #157bda; - text-decoration: none; - word-wrap: break-word; - overflow-wrap: break-word; } - a:hover { - color: #0090ff; } - -hr { - border: 0; - border-top: 1px solid rgba(0, 32, 128, 0.1); } - -ul, -ol { - padding-left: 1.25rem; } - -.container { - max-width: 1000px; - padding: 0 2%; - margin: 0 auto; } - -.main > .container { - padding: 0; } - -@media (min-width: 579px) { - .main > .container { - padding: 0 2%; } } - -@media (min-width: 768px) { - html { - font-size: 1rem; } } - -@media (min-width: 992px) { - .content-wrapper { - margin-left: 200px; } } - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */ -.hamburger { - padding: 1rem; - display: inline-block; - cursor: pointer; - transition-property: opacity, filter; - transition-duration: 0.15s; - transition-timing-function: linear; - font: inherit; - color: inherit; - text-transform: none; - background-color: transparent; - border: 0; - margin: 0; - overflow: visible; - outline: 0; } - -.hamburger:hover { - opacity: 0.7; } - -.hamburger-box { - width: 40px; - height: 20px; - display: inline-block; - position: relative; } - -.hamburger-inner { - display: block; - top: 50%; } - -.hamburger-inner, -.hamburger-inner::before, -.hamburger-inner::after { - width: 36px; - height: 2px; - background-color: #e3f5ff; - border-radius: 4px; - position: absolute; - transition-property: transform; - transition-duration: 0.15s; - transition-timing-function: ease; } - -.hamburger-inner::before, -.hamburger-inner::after { - content: ''; - display: block; } - -.hamburger-inner::before { - top: -10px; } - -.hamburger-inner::after { - bottom: -10px; } - -/* - * 3DX - */ -.hamburger--3dx .hamburger-box { - perspective: 80px; } - -.hamburger--3dx .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx .hamburger-inner::before, -.hamburger--3dx .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(180deg); } - -.hamburger--3dx.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DX Reverse - */ -.hamburger--3dx-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dx-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r .hamburger-inner::before, -.hamburger--3dx-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(-180deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY - */ -.hamburger--3dy .hamburger-box { - perspective: 80px; } - -.hamburger--3dy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy .hamburger-inner::before, -.hamburger--3dy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(-180deg); } - -.hamburger--3dy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY Reverse - */ -.hamburger--3dy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r .hamburger-inner::before, -.hamburger--3dy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY - */ -.hamburger--3dxy .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy .hamburger-inner::before, -.hamburger--3dxy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg); } - -.hamburger--3dxy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY Reverse - */ -.hamburger--3dxy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r .hamburger-inner::before, -.hamburger--3dxy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * Arrow - */ -.hamburger--arrow.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrow.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Arrow Right - */ -.hamburger--arrow-r.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrow-r.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Alt - */ -.hamburger--arrowalt .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Alt Right - */ -.hamburger--arrowalt-r .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Turn - */ -.hamburger--arrowturn.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrowturn.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Turn Right - */ -.hamburger--arrowturn-r.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Boring - */ -.hamburger--boring .hamburger-inner, -.hamburger--boring .hamburger-inner::before, -.hamburger--boring .hamburger-inner::after { - transition-property: none; } - -.hamburger--boring.is-active .hamburger-inner { - transform: rotate(45deg); } - -.hamburger--boring.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--boring.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -/* - * Collapse - */ -.hamburger--collapse .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Collapse Reverse - */ -.hamburger--collapse-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse-r .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Elastic - */ -.hamburger--elastic .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(135deg); - transition-delay: 0.075s; } - -.hamburger--elastic.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-270deg); - transition-delay: 0.075s; } - -/* - * Elastic Reverse - */ -.hamburger--elastic-r .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic-r .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-135deg); - transition-delay: 0.075s; } - -.hamburger--elastic-r.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(270deg); - transition-delay: 0.075s; } - -/* - * Emphatic - */ -.hamburger--emphatic { - overflow: hidden; } - -.hamburger--emphatic .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic.is-active .hamburger-inner::before { - left: -80px; - top: -80px; - transform: translate3d(80px, 80px, 0) rotate(45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic.is-active .hamburger-inner::after { - right: -80px; - top: -80px; - transform: translate3d(-80px, 80px, 0) rotate(-45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Emphatic Reverse - */ -.hamburger--emphatic-r { - overflow: hidden; } - -.hamburger--emphatic-r .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic-r.is-active .hamburger-inner::before { - left: -80px; - top: 80px; - transform: translate3d(80px, -80px, 0) rotate(-45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic-r.is-active .hamburger-inner::after { - right: -80px; - top: 80px; - transform: translate3d(-80px, -80px, 0) rotate(45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Minus - */ -.hamburger--minus .hamburger-inner::before, -.hamburger--minus .hamburger-inner::after { - transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } - -.hamburger--minus.is-active .hamburger-inner::before, -.hamburger--minus.is-active .hamburger-inner::after { - opacity: 0; - transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } - -.hamburger--minus.is-active .hamburger-inner::before { - top: 0; } - -.hamburger--minus.is-active .hamburger-inner::after { - bottom: 0; } - -/* - * Slider - */ -.hamburger--slider .hamburger-inner { - top: 2px; } - -.hamburger--slider .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider .hamburger-inner::after { - top: 20px; } - -.hamburger--slider.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--slider.is-active .hamburger-inner::before { - transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-90deg); } - -/* - * Slider Reverse - */ -.hamburger--slider-r .hamburger-inner { - top: 2px; } - -.hamburger--slider-r .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider-r .hamburger-inner::after { - top: 20px; } - -.hamburger--slider-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -.hamburger--slider-r.is-active .hamburger-inner::before { - transform: rotate(45deg) translate3d(5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(90deg); } - -/* - * Spin - */ -.hamburger--spin .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin.is-active .hamburger-inner { - transform: rotate(225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spin Reverse - */ -.hamburger--spin-r .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin-r .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r.is-active .hamburger-inner { - transform: rotate(-225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spring - */ -.hamburger--spring .hamburger-inner { - top: 2px; - transition: background-color 0s 0.13s linear; } - -.hamburger--spring .hamburger-inner::before { - top: 10px; - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring .hamburger-inner::after { - top: 20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring.is-active .hamburger-inner { - transition-delay: 0.22s; - background-color: transparent; } - -.hamburger--spring.is-active .hamburger-inner::before { - top: 0; - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--spring.is-active .hamburger-inner::after { - top: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -/* - * Spring Reverse - */ -.hamburger--spring-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } - -.hamburger--spring-r .hamburger-inner::before { - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spring-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } - -.hamburger--spring-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand - */ -.hamburger--stand .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand.is-active .hamburger-inner { - transform: rotate(90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand Reverse - */ -.hamburger--stand-r .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand-r .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r.is-active .hamburger-inner { - transform: rotate(-90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Squeeze - */ -.hamburger--squeeze .hamburger-inner { - transition-duration: 0.075s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze .hamburger-inner::before { - transition: top 0.075s 0.12s ease, opacity 0.075s ease; } - -.hamburger--squeeze .hamburger-inner::after { - transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze.is-active .hamburger-inner { - transform: rotate(45deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--squeeze.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.075s ease, opacity 0.075s 0.12s ease; } - -.hamburger--squeeze.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Vortex - */ -.hamburger--vortex .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex .hamburger-inner::before, -.hamburger--vortex .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex.is-active .hamburger-inner { - transform: rotate(765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex.is-active .hamburger-inner::before, -.hamburger--vortex.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); } - -/* - * Vortex Reverse - */ -.hamburger--vortex-r .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r .hamburger-inner::before, -.hamburger--vortex-r .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex-r .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex-r .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex-r.is-active .hamburger-inner { - transform: rotate(-765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r.is-active .hamburger-inner::before, -.hamburger--vortex-r.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -.sidebar { - background: #202e4e; - position: fixed; - z-index: 2; - width: 100%; - height: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__menu { - position: absolute; - font-weight: bold; - border: none; - text-align: left; - text-transform: uppercase; - left: 0; - top: 0; - padding: 0.75rem 1rem; - outline: 0; } - .sidebar__menu-icon { - height: 24px; } - .sidebar__links { - background: #202e4e; - overflow-y: auto; - transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); - transform-origin: 0% 0%; - transform: rotateX(-90deg); - visibility: hidden; - opacity: 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - max-height: 378px; - margin-top: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__links.is-active { - transform: rotateX(0); - visibility: visible; - opacity: 1; } - .sidebar__link { - display: block; - color: #e3f5ff; - padding: 0.5rem 0.75rem; - transition: all 0.1s ease-out; - border-left: 2px solid #576a85; - margin: 0.5rem; - font-weight: 500; - font-size: 0.95rem; } - .sidebar__link:hover { - color: #88f4ff; - background: rgba(255, 255, 255, 0.1); - border-color: pink; } - -@media (min-width: 992px) { - .sidebar { - left: 0; - top: 0; - bottom: 0; - width: 15%; - max-width: 250px; - min-width: 200px; - height: 100%; - background: linear-gradient(-30deg, #2a3d67, #14264e); - box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); - overflow-y: auto; - color: white; } - .sidebar::-webkit-scrollbar-track { - background-color: rgba(0, 0, 0, 0.6); } - .sidebar::-webkit-scrollbar { - width: 10px; - background-color: #4b6191; } - .sidebar::-webkit-scrollbar-thumb { - background-color: #4b6191; } - .sidebar__links { - background: none; - box-shadow: none; - visibility: visible; - opacity: 1; - transform: rotateX(0); - margin-top: 0; - max-height: none; } - .sidebar__menu { - display: none; } } - -.header { - position: relative; - padding: 5rem 1rem 4rem; - background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); - color: white; - margin-bottom: 2rem; - text-align: center; - overflow: hidden; - z-index: 1; } - .header::before { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); - width: 150%; - height: 150%; - top: 0; - left: 0; - opacity: 0.1; - z-index: -1; } - .header::after { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); - background-size: 24px 24px; - width: 100%; - left: 0; - height: 24px; - bottom: -1px; } - .header__logo { - height: 146px; - user-select: none; } - .header__heading { - font-weight: 200; - font-size: 3rem; - margin: 1rem 0; - line-height: 1.2; } - .header__description { - font-size: 1.5rem; - max-width: 600px; - margin: 0 auto 1rem; - font-weight: 300; - letter-spacing: 0.4px; } - .header__css { - background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-size: 4rem; } - .header__github-button { - color: white; } - -@media (min-width: 579px) { - .header { - padding: 6rem 0 5rem; } - .header__heading { - font-size: 3.75rem; } } - -@media (min-width: 992px) { - .header { - padding: 2.5rem 0 5rem; } } - -.snippet { - position: relative; - background: white; - padding: 2rem 5%; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; - border-radius: 0.25rem; - font-size: 1.1rem; - margin-bottom: 1.5rem; } - .snippet h3 { - font-size: 2rem; - padding: 0.5rem 0; - border-bottom: 1px solid rgba(0, 32, 128, 0.1); - margin-bottom: 1.25rem; - margin-top: 0; - line-height: 1.3; } - .snippet code:not([class*='lang']) { - background: #fcfaff; - border: 1px solid #e2ddff; - color: #4b00da; - border-radius: 0.15rem; - font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 0.9rem; - padding: 0.2rem 0.4rem; - margin: 0 0.1rem; } - .snippet ol { - margin-top: 0.5rem; } - .snippet ol > li { - margin-bottom: 0.5rem; } - .snippet > p { - margin-top: 0.5rem; } - .snippet h4 { - display: inline-block; - margin: 1rem 0 0.5rem; - line-height: 2; - padding: 0 0.5rem; - border-radius: 3px; - font-size: 0.9rem; - text-transform: uppercase; - background: #333; - border: 1px solid #c6d6ea; - border-bottom-color: #b3c9e3; - background: white; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } - .snippet h4[data-type='HTML'] { - color: white; - border: none; - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - .snippet h4[data-type='CSS'] { - color: white; - border: none; - background: linear-gradient(135deg, #7983ff, #5f9de9); } - .snippet h4[data-type='JavaScript'] { - color: white; - border: none; - background: linear-gradient(135deg, #ffb000, #f58818); } - .snippet__browser-support { - display: inline-block; - font-size: 2rem; - font-weight: 200; - line-height: 1; - margin: 0.5rem 0; } - .snippet__subheading.is-html { - color: #e22f70; } - .snippet__subheading.is-css { - color: #0a91d4; } - .snippet__subheading.is-explanation { - color: #4b00da; } - .snippet__support-note { - color: #9fa5b5; - font-weight: bold; } - .snippet__requires-javascript { - position: absolute; - background: red; - background: linear-gradient(145deg, #ff003b, #ff4b39); - color: white; - padding: 0.25rem 0.5rem; - font-size: 0.9rem; - transform: rotate(20deg); - font-weight: bold; - top: 1rem; - right: 0; } - -.snippet-demo { - background: #f5f6f9; - border-radius: 0.25rem; - padding: 0.75rem 1.25rem; } - .snippet-demo.is-distinct { - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - -@media (min-width: 768px) { - .snippet__requires-javascript { - right: -0.5rem; } } - -.back-to-top-button { - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - font-size: 2rem; - font-weight: bold; - background: white; - width: 4rem; - height: 4rem; - position: fixed; - right: 2rem; - bottom: 2rem; - border-radius: 50%; - user-select: none; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); - transition: all 0.2s ease-out; - visibility: hidden; - opacity: 0; - z-index: 1; - border: 1px solid rgba(0, 32, 128, 0.1); - outline: 0; } - .back-to-top-button:hover, .back-to-top-button:focus { - transform: scale(1.1); - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); - color: #35a8ff; } - .back-to-top-button:focus { - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; - outline-style: none; } - .back-to-top-button.is-visible { - visibility: visible; - opacity: 1; } diff --git a/dist/719042b6d7879d0a403a9eaac2211738.js b/dist/719042b6d7879d0a403a9eaac2211738.js deleted file mode 100644 index af89280bf..000000000 --- a/dist/719042b6d7879d0a403a9eaac2211738.js +++ /dev/null @@ -1,1479 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -// eslint-disable-next-line no-global-assign -require = (function (modules, cache, entry) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof require === "function" && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof require === "function" && require; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - - var module = cache[name] = new newRequire.Module(name); - - modules[name][0].call(module.exports, localRequire, module, module.exports); - } - - return cache[name].exports; - - function localRequire(x){ - return newRequire(localRequire.resolve(x)); - } - - function resolve(x){ - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - // Override the current require with this new one - return newRequire; -})({22:[function(require,module,exports) { -var bundleURL = null; -function getBundleURLCached() { - if (!bundleURL) { - bundleURL = getBundleURL(); - } - - return bundleURL; -} - -function getBundleURL() { - // Attempt to find the URL of the current script and use that as the base URL - try { - throw new Error(); - } catch (err) { - var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); - if (matches) { - return getBaseURL(matches[0]); - } - } - - return '/'; -} - -function getBaseURL(url) { - return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; -} - -exports.getBundleURL = getBundleURLCached; -exports.getBaseURL = getBaseURL; -},{}],21:[function(require,module,exports) { -var bundle = require('./bundle-url'); - -function updateLink(link) { - var newLink = link.cloneNode(); - newLink.onload = function () { - link.remove(); - }; - newLink.href = link.href.split('?')[0] + '?' + Date.now(); - link.parentNode.insertBefore(newLink, link.nextSibling); -} - -var cssTimeout = null; -function reloadCSS() { - if (cssTimeout) { - return; - } - - cssTimeout = setTimeout(function () { - var links = document.querySelectorAll('link[rel="stylesheet"]'); - for (var i = 0; i < links.length; i++) { - if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { - updateLink(links[i]); - } - } - - cssTimeout = null; - }, 50); -} - -module.exports = reloadCSS; -},{"./bundle-url":22}],17:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":21}],18:[function(require,module,exports) { -var global = (1,eval)("this"); - -/* ********************************************** - Begin prism-core.js -********************************************** */ - -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * MIT license http://www.opensource.org/licenses/mit-license.php/ - * @author Lea Verou http://lea.verou.me - */ - -var Prism = (function(){ - -// Private helper vars -var lang = /\blang(?:uage)?-(\w+)\b/i; -var uniqueId = 0; - -var _ = _self.Prism = { - manual: _self.Prism && _self.Prism.manual, - disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - util: { - encode: function (tokens) { - if (tokens instanceof Token) { - return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); - } else if (_.util.type(tokens) === 'Array') { - return tokens.map(_.util.encode); - } else { - return tokens.replace(/&/g, '&').replace(/ text.length) { - // Something went terribly wrong, ABORT, ABORT! - return; - } - - if (str instanceof Token) { - continue; - } - - pattern.lastIndex = 0; - - var match = pattern.exec(str), - delNum = 1; - - // Greedy patterns can override/remove up to two previously matched tokens - if (!match && greedy && i != strarr.length - 1) { - pattern.lastIndex = pos; - match = pattern.exec(text); - if (!match) { - break; - } - - var from = match.index + (lookbehind ? match[1].length : 0), - to = match.index + match[0].length, - k = i, - p = pos; - - for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { - p += strarr[k].length; - // Move the index i to the element in strarr that is closest to from - if (from >= p) { - ++i; - pos = p; - } - } - - /* - * If strarr[i] is a Token, then the match starts inside another Token, which is invalid - * If strarr[k - 1] is greedy we are in conflict with another greedy pattern - */ - if (strarr[i] instanceof Token || strarr[k - 1].greedy) { - continue; - } - - // Number of tokens to delete and replace with the new match - delNum = k - i; - str = text.slice(pos, p); - match.index -= pos; - } - - if (!match) { - if (oneshot) { - break; - } - - continue; - } - - if(lookbehind) { - lookbehindLength = match[1].length; - } - - var from = match.index + lookbehindLength, - match = match[0].slice(lookbehindLength), - to = from + match.length, - before = str.slice(0, from), - after = str.slice(to); - - var args = [i, delNum]; - - if (before) { - ++i; - pos += before.length; - args.push(before); - } - - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); - - args.push(wrapped); - - if (after) { - args.push(after); - } - - Array.prototype.splice.apply(strarr, args); - - if (delNum != 1) - _.matchGrammar(text, strarr, grammar, i, pos, true, token); - - if (oneshot) - break; - } - } - } - }, - - tokenize: function(text, grammar, language) { - var strarr = [text]; - - var rest = grammar.rest; - - if (rest) { - for (var token in rest) { - grammar[token] = rest[token]; - } - - delete grammar.rest; - } - - _.matchGrammar(text, strarr, grammar, 0, 0, false); - - return strarr; - }, - - hooks: { - all: {}, - - add: function (name, callback) { - var hooks = _.hooks.all; - - hooks[name] = hooks[name] || []; - - hooks[name].push(callback); - }, - - run: function (name, env) { - var callbacks = _.hooks.all[name]; - - if (!callbacks || !callbacks.length) { - return; - } - - for (var i=0, callback; callback = callbacks[i++];) { - callback(env); - } - } - } -}; - -var Token = _.Token = function(type, content, alias, matchedStr, greedy) { - this.type = type; - this.content = content; - this.alias = alias; - // Copy of the full string this token was created from - this.length = (matchedStr || "").length|0; - this.greedy = !!greedy; -}; - -Token.stringify = function(o, language, parent) { - if (typeof o == 'string') { - return o; - } - - if (_.util.type(o) === 'Array') { - return o.map(function(element) { - return Token.stringify(element, language, o); - }).join(''); - } - - var env = { - type: o.type, - content: Token.stringify(o.content, language, parent), - tag: 'span', - classes: ['token', o.type], - attributes: {}, - language: language, - parent: parent - }; - - if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); - } - - _.hooks.run('wrap', env); - - var attributes = Object.keys(env.attributes).map(function(name) { - return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; - }).join(' '); - - return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; - -}; - -if (!_self.document) { - if (!_self.addEventListener) { - // in Node.js - return _self.Prism; - } - - if (!_.disableWorkerMessageHandler) { - // In worker - _self.addEventListener('message', function (evt) { - var message = JSON.parse(evt.data), - lang = message.language, - code = message.code, - immediateClose = message.immediateClose; - - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) { - _self.close(); - } - }, false); - } - - return _self.Prism; -} - -//Get current script and highlight -var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); - -if (script) { - _.filename = script.src; - - if (!_.manual && !script.hasAttribute('data-manual')) { - if(document.readyState !== "loading") { - if (window.requestAnimationFrame) { - window.requestAnimationFrame(_.highlightAll); - } else { - window.setTimeout(_.highlightAll, 16); - } - } - else { - document.addEventListener('DOMContentLoaded', _.highlightAll); - } - } -} - -return _self.Prism; - -})(); - -if (typeof module !== 'undefined' && module.exports) { - module.exports = Prism; -} - -// hack for components to work correctly in node.js -if (typeof global !== 'undefined') { - global.Prism = Prism; -} - - -/* ********************************************** - Begin prism-markup.js -********************************************** */ - -Prism.languages.markup = { - 'comment': //, - 'prolog': /<\?[\s\S]+?\?>/, - 'doctype': //i, - 'cdata': //i, - 'tag': { - pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, - inside: { - 'tag': { - pattern: /^<\/?[^\s>\/]+/i, - inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } - }, - 'attr-value': { - pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, - inside: { - 'punctuation': [ - /^=/, - { - pattern: /(^|[^\\])["']/, - lookbehind: true - } - ] - } - }, - 'punctuation': /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { - 'namespace': /^[^\s>\/:]+:/ - } - } - - } - }, - 'entity': /&#?[\da-z]{1,8};/i -}; - -Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = - Prism.languages.markup['entity']; - -// Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add('wrap', function(env) { - - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } -}); - -Prism.languages.xml = Prism.languages.markup; -Prism.languages.html = Prism.languages.markup; -Prism.languages.mathml = Prism.languages.markup; -Prism.languages.svg = Prism.languages.markup; - - -/* ********************************************** - Begin prism-css.js -********************************************** */ - -Prism.languages.css = { - 'comment': /\/\*[\s\S]*?\*\//, - 'atrule': { - pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, - inside: { - 'rule': /@[\w-]+/ - // See rest below - } - }, - 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, - 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, - 'string': { - pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, - 'important': /\B!important\b/i, - 'function': /[-a-z0-9]+(?=\()/i, - 'punctuation': /[(){};:]/ -}; - -Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'style': { - pattern: /()[\s\S]*?(?=<\/style>)/i, - lookbehind: true, - inside: Prism.languages.css, - alias: 'language-css', - greedy: true - } - }); - - Prism.languages.insertBefore('inside', 'attr-value', { - 'style-attr': { - pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, - inside: { - 'attr-name': { - pattern: /^\s*style/i, - inside: Prism.languages.markup.tag.inside - }, - 'punctuation': /^\s*=\s*['"]|['"]\s*$/, - 'attr-value': { - pattern: /.+/i, - inside: Prism.languages.css - } - }, - alias: 'language-css' - } - }, Prism.languages.markup.tag); -} - -/* ********************************************** - Begin prism-clike.js -********************************************** */ - -Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, - lookbehind: true, - 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': /[a-z0-9_]+(?=\()/i, - 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, - 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, - 'punctuation': /[{}[\];(),.:]/ -}; - - -/* ********************************************** - Begin prism-javascript.js -********************************************** */ - -Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(?: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|var|void|while|with|yield)\b/, - 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, - // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) - 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, - 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ -}); - -Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, - lookbehind: true, - greedy: true - }, - // This must be declared before keyword because we use "function" inside the look-forward - 'function-variable': { - pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, - alias: 'function' - } -}); - -Prism.languages.insertBefore('javascript', 'string', { - 'template-string': { - pattern: /`(?:\\[\s\S]|[^\\`])*`/, - greedy: true, - inside: { - 'interpolation': { - pattern: /\$\{[^}]+\}/, - inside: { - 'interpolation-punctuation': { - pattern: /^\$\{|\}$/, - alias: 'punctuation' - }, - rest: Prism.languages.javascript - } - }, - 'string': /[\s\S]+/ - } - } -}); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'script': { - pattern: /()[\s\S]*?(?=<\/script>)/i, - lookbehind: true, - inside: Prism.languages.javascript, - alias: 'language-javascript', - greedy: true - } - }); -} - -Prism.languages.js = Prism.languages.javascript; - - -/* ********************************************** - Begin prism-file-highlight.js -********************************************** */ - -(function () { - if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { - return; - } - - self.Prism.fileHighlight = function() { - - var Extensions = { - 'js': 'javascript', - 'py': 'python', - 'rb': 'ruby', - 'ps1': 'powershell', - 'psm1': 'powershell', - 'sh': 'bash', - 'bat': 'batch', - 'h': 'c', - 'tex': 'latex' - }; - - Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { - var src = pre.getAttribute('data-src'); - - var language, parent = pre; - var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; - while (parent && !lang.test(parent.className)) { - parent = parent.parentNode; - } - - if (parent) { - language = (pre.className.match(lang) || [, ''])[1]; - } - - if (!language) { - var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; - language = Extensions[extension] || extension; - } - - var code = document.createElement('code'); - code.className = 'language-' + language; - - pre.textContent = ''; - - code.textContent = 'Loading…'; - - pre.appendChild(code); - - var xhr = new XMLHttpRequest(); - - xhr.open('GET', src, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - - if (xhr.status < 400 && xhr.responseText) { - code.textContent = xhr.responseText; - - Prism.highlightElement(code); - } - else if (xhr.status >= 400) { - code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; - } - else { - code.textContent = '✖ Error: File does not exist or is empty'; - } - } - }; - - xhr.send(null); - }); - - }; - - document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); - -})(); - -},{}],13:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":21}],12:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":21}],14:[function(require,module,exports) { -var e = Element.prototype; -if (!e.matches) { - e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; -} -if (!e.closest) { - e.closest = function (s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; -} -},{}],20:[function(require,module,exports) { -var global = (1,eval)("this"); -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -;(function (global, factory) { - (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); -})(this, function () { - 'use strict'; - - // Robert Penner's easeInOutQuad - - // find the rest of his easing functions here: http://robertpenner.com/easing/ - // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js - - var easeInOutQuad = function easeInOutQuad(t, b, c, d) { - t /= d / 2; - if (t < 1) return c / 2 * t * t + b; - t--; - return -c / 2 * (t * (t - 2) - 1) + b; - }; - - var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { - return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - }; - - var jumper = function jumper() { - // private variable cache - // no variables are created during a jump, preventing memory leaks - - var element = void 0; // element to scroll to (node) - - var start = void 0; // where scroll starts (px) - var stop = void 0; // where scroll stops (px) - - var offset = void 0; // adjustment from the stop position (px) - var easing = void 0; // easing function (function) - var a11y = void 0; // accessibility support flag (boolean) - - var distance = void 0; // distance of scroll (px) - var duration = void 0; // scroll duration (ms) - - var timeStart = void 0; // time scroll started (ms) - var timeElapsed = void 0; // time spent scrolling thus far (ms) - - var next = void 0; // next scroll position (px) - - var callback = void 0; // to call when done scrolling (function) - - // scroll position helper - - function location() { - return window.scrollY || window.pageYOffset; - } - - // element offset helper - - function top(element) { - return element.getBoundingClientRect().top + start; - } - - // rAF loop helper - - function loop(timeCurrent) { - // store time scroll started, if not started already - if (!timeStart) { - timeStart = timeCurrent; - } - - // determine time spent scrolling so far - timeElapsed = timeCurrent - timeStart; - - // calculate next scroll position - next = easing(timeElapsed, start, distance, duration); - - // scroll to it - window.scrollTo(0, next); - - // check progress - timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop - : done(); // scrolling is done - } - - // scroll finished helper - - function done() { - // account for rAF time rounding inaccuracies - window.scrollTo(0, start + distance); - - // if scrolling to an element, and accessibility is enabled - if (element && a11y) { - // add tabindex indicating programmatic focus - element.setAttribute('tabindex', '-1'); - - // focus the element - element.focus(); - } - - // if it exists, fire the callback - if (typeof callback === 'function') { - callback(); - } - - // reset time for next jump - timeStart = false; - } - - // API - - function jump(target) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - // resolve options, or use defaults - duration = options.duration || 1000; - offset = options.offset || 0; - callback = options.callback; // "undefined" is a suitable default, and won't be called - easing = options.easing || easeInOutQuad; - a11y = options.a11y || false; - - // cache starting position - start = location(); - - // resolve target - switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { - // scroll from current position - case 'number': - element = undefined; // no element to scroll to - a11y = false; // make sure accessibility is off - stop = start + target; - break; - - // scroll to element (node) - // bounding rect is relative to the viewport - case 'object': - element = target; - stop = top(element); - break; - - // scroll to element (selector) - // bounding rect is relative to the viewport - case 'string': - element = document.querySelector(target); - stop = top(element); - break; - } - - // resolve scroll distance, accounting for offset - distance = stop - start + offset; - - // resolve duration - switch (_typeof(options.duration)) { - // number in ms - case 'number': - duration = options.duration; - break; - - // function passed the distance of the scroll - case 'function': - duration = options.duration(distance); - break; - } - - // start the loop - window.requestAnimationFrame(loop); - } - - // expose only the jump method - return jump; - }; - - // export singleton - - var singleton = jumper(); - - return function () { - var scrolling = void 0; - var end = function end() { - return scrolling = false; - }; - return function (to) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (scrolling) return; - var scrollY = window.scrollY || window.pageYOffset; - if (to !== '.header') location.hash = to; - scroll(0, scrollY); - scrolling = true; - setTimeout(end, options.duration || 0); - return singleton(to, options); - }; - }(); -}); -},{}],19:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var select = exports.select = function select(s) { - return document.querySelector(s); -}; -var selectAll = exports.selectAll = function selectAll(s) { - return [].slice.call(document.querySelectorAll(s)); -}; -var scrollY = exports.scrollY = function scrollY() { - return window.scrollY || window.pageYOffset; -}; -var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { - return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; -}; - -/* -* Make iOS behave normally. -*/ -if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { - document.body.style.cursor = 'pointer'; -} - -/* -* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font -* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. -* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. -* Must be applied to all browsers for now. -*/ -;(function () { - var ua = navigator.userAgent; - - // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica - var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; - - // Chrome v64 and FF v58 fix the issue - var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; - - var allEls = [].slice.call(document.querySelectorAll('*')); - - if (isRelevantMacOS && isAffectedBrowser) { - document.documentElement.style.letterSpacing = '-0.3px'; - allEls.forEach(function (el) { - var fontSize = parseFloat(getComputedStyle(el).fontSize); - if (fontSize >= 20) el.style.letterSpacing = '0.3px'; - }); - } else if (isRelevantMacOS && !isAffectedBrowser) { - // Italics fix - allEls.forEach(function (el) { - var _getComputedStyle = getComputedStyle(el), - fontSize = _getComputedStyle.fontSize, - fontStyle = _getComputedStyle.fontStyle; - - if (fontStyle === 'italic') { - el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; - } - }); - } -})(); -},{}],15:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var menu = (0, _utils.select)('.hamburger'); -var links = (0, _utils.select)('.sidebar__links'); -var ACTIVE_CLASS = 'is-active'; - -var toggle = function toggle() { - return [menu, links].forEach(function (el) { - return el.classList.toggle(ACTIVE_CLASS); - }); -}; - -menu.addEventListener('click', toggle); - -links.addEventListener('click', function (e) { - setTimeout(toggle, 40); - if (e.target.classList.contains('sidebar__link')) { - e.preventDefault(); - (0, _jump2.default)(e.target.getAttribute('href'), { - duration: 750, - offset: window.innerWidth <= 768 ? -64 : -32, - easing: _utils.easeOutQuint - }); - } -}); - -document.addEventListener('click', function (e) { - if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { - toggle(); - } -}); - -exports.default = { toggle: toggle }; -},{"../deps/jump":20,"../deps/utils":19}],16:[function(require,module,exports) { -'use strict'; - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var backToTopButton = (0, _utils.select)('.back-to-top-button'); - -window.addEventListener('scroll', function () { - backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); -}); -backToTopButton.onclick = function () { - (0, _jump2.default)('.header', { - duration: 750, - easing: _utils.easeOutQuint - }); -}; -},{"../deps/jump":20,"../deps/utils":19}],8:[function(require,module,exports) { -'use strict'; - -require('normalize.css'); - -require('prismjs'); - -require('../css/deps/prism.css'); - -require('../css/index.scss'); - -require('./deps/polyfills'); - -var _Menu = require('./components/Menu'); - -var _Menu2 = _interopRequireDefault(_Menu); - -var _BackToTopButton = require('./components/BackToTopButton'); - -var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -},{"normalize.css":17,"prismjs":18,"../css/deps/prism.css":13,"../css/index.scss":12,"./deps/polyfills":14,"./components/Menu":15,"./components/BackToTopButton":16}],23:[function(require,module,exports) { - -var global = (1, eval)('this'); -var OldModule = module.bundle.Module; -function Module(moduleName) { - OldModule.call(this, moduleName); - this.hot = { - accept: function (fn) { - this._acceptCallback = fn || function () {}; - }, - dispose: function (fn) { - this._disposeCallback = fn; - } - }; -} - -module.bundle.Module = Module; - -var parent = module.bundle.parent; -if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { - var hostname = '' || location.hostname; - var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + '56686' + '/'); - ws.onmessage = function (event) { - var data = JSON.parse(event.data); - - if (data.type === 'update') { - data.assets.forEach(function (asset) { - hmrApply(global.require, asset); - }); - - data.assets.forEach(function (asset) { - if (!asset.isNew) { - hmrAccept(global.require, asset.id); - } - }); - } - - if (data.type === 'reload') { - ws.close(); - ws.onclose = function () { - location.reload(); - }; - } - - if (data.type === 'error-resolved') { - console.log('[parcel] ✨ Error resolved'); - } - - if (data.type === 'error') { - console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); - } - }; -} - -function getParents(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return []; - } - - var parents = []; - var k, d, dep; - - for (k in modules) { - for (d in modules[k][1]) { - dep = modules[k][1][d]; - if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { - parents.push(+k); - } - } - } - - if (bundle.parent) { - parents = parents.concat(getParents(bundle.parent, id)); - } - - return parents; -} - -function hmrApply(bundle, asset) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (modules[asset.id] || !bundle.parent) { - var fn = new Function('require', 'module', 'exports', asset.generated.js); - asset.isNew = !modules[asset.id]; - modules[asset.id] = [fn, asset.deps]; - } else if (bundle.parent) { - hmrApply(bundle.parent, asset); - } -} - -function hmrAccept(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (!modules[id] && bundle.parent) { - return hmrAccept(bundle.parent, id); - } - - var cached = bundle.cache[id]; - if (cached && cached.hot._disposeCallback) { - cached.hot._disposeCallback(); - } - - delete bundle.cache[id]; - bundle(id); - - cached = bundle.cache[id]; - if (cached && cached.hot && cached.hot._acceptCallback) { - cached.hot._acceptCallback(); - return true; - } - - return getParents(global.require, id).some(function (id) { - return hmrAccept(global.require, id); - }); -} -},{}]},{},[23,8]) -//# sourceMappingURL=/dist/719042b6d7879d0a403a9eaac2211738.map \ No newline at end of file diff --git a/dist/719042b6d7879d0a403a9eaac2211738.map b/dist/719042b6d7879d0a403a9eaac2211738.map deleted file mode 100644 index 9e3ad56b2..000000000 --- a/dist/719042b6d7879d0a403a9eaac2211738.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACt0BA,IAAMtI,IAAIC,QAAQC,SAAlB;AACA,IAAI,CAACF,EAAEG,OAAP,EAAgB;AACdH,IAAEG,OAAF,GACEH,EAAEI,eAAF,IAAqBJ,EAAEK,iBAAvB,IAA4CL,EAAEM,qBAA9C,IAAuEN,EAAEO,kBAD3E;AAED;AACD,IAAI,CAACP,EAAEQ,OAAP,EAAgB;AACdR,IAAEQ,OAAF,GAAY,UAASC,CAAT,EAAY;AACtB,QAAIC,KAAK,IAAT;AACA,QAAI,CAACC,SAASC,eAAT,CAAyBC,QAAzB,CAAkCH,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,OAAG;AACD,UAAIA,GAAGP,OAAH,CAAWM,CAAX,CA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","file":"719042b6d7879d0a403a9eaac2211738.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file diff --git a/dist/ac46b6c579212c73b4f2afaa428f354c.png b/dist/ac46b6c579212c73b4f2afaa428f354c.png deleted file mode 100644 index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35911 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 diff --git a/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html b/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html deleted file mode 100644 index 3dce6aad9..000000000 --- a/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html +++ /dev/null @@ -1,999 +0,0 @@ - - - - - 30 Seconds of CSS - - - - - - -

    -
    -
    -
    - -

    30 Seconds of CSS

    -

    - A curated collection of useful CSS snippets you can understand in 30 seconds or less. -

    - - - Star -
    -
    -
    -
    -
    -

    Clearfix

    -

    Ensures that an element self-clears its children.

    -
    Note: This is useful only if you are still using float to build layouts. Please consider to use a modern approach with flexbox layout or grid layout.
    -

    HTML

    <div class="clearfix">
    -  <div class="floated">float a</div>
    -  <div class="floated">float b</div>
    -  <div class="floated">float c</div>
    -</div>
    -
    -

    CSS

    .clearfix::after {
    -  content: '';
    -  display: block;
    -  clear: both;
    -}
    -.floated {
    -  float: left;
    -}
    -
    -

    Demo

    -
    -
    -
    float a
    -
    float b
    -
    float c
    -
    -
    - -

    Explanation

    -
      -
    1. .clearfix::after defines a pseudo element.
    2. -
    3. content: '' allows the pseudo element to affect layout.
    4. -
    5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
    6. -
    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Custom text selection

    -

    Changes the styling of text selection.

    -

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
    -
    -

    CSS

    .custom-text-selection::selection {
    -  background: red;
    -  color: white;
    -}
    -
    -

    Demo

    -
    -

    Select some of this text.

    -
    - -

    Explanation

    -

    ::selection defines a pseudo selector on an element to style text within it when selected.

    -

    Browser support

    -
    -
    - 84.6% -
    -
    -

    ⚠️ Requires prefixes for full support and is not actually -in any specification.

    - -
    -
    -

    Easing variables

    -

    Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

    -

    HTML

    <div class="easing-variables"></div>
    -
    -

    CSS

    :root {
    -  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
    -  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    -  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
    -  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
    -  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
    -  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    -  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
    -  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
    -  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
    -  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
    -  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
    -  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
    -  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
    -  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
    -  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
    -  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
    -  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
    -}
    -.easing-variables {
    -  width: 50px;
    -  height: 50px;
    -  background: #333;
    -  transition: transform 1s var(--ease-out-quart);
    -}
    -.easing-variables:hover {
    -  transform: rotate(45deg);
    -}
    -
    -

    Demo

    -
    -
    Hover
    -
    - -

    Explanation

    -

    The variables are defined globally with the :root CSS pseudo-class, which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

    -

    Browser support

    -
    -
    - 87.2% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Etched text

    -

    Creates an effect where text appears to be "etched" or engraved into the background.

    -

    HTML

    <p class="etched-text">I appear etched into the background.</p>
    -
    -

    CSS

    .etched-text {
    -  text-shadow: 0 2px white;
    -  font-size: 1.5rem;
    -  font-weight: bold;
    -  color: #b8bec5;
    -}
    -
    -

    Demo

    -
    -

    I appear etched into the background.

    -
    - -

    Explanation

    -

    text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

    -

    The background must be darker than the shadow for the effect to work.

    -

    The text color should be slightly faded to make it look like it's engraved/carved out of the background.

    -

    Browser support

    -
    -
    - 97.9% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Gradient text

    -

    Gives text a gradient color.

    -

    HTML

    <p class="gradient-text">Gradient text</p>
    -
    -

    CSS

    .gradient-text {
    -  background: -webkit-linear-gradient(pink, red);
    -  -webkit-text-fill-color: transparent;
    -  -webkit-background-clip: text;
    -}
    -
    -

    Demo

    -
    -

    - Gradient text -

    -
    - -

    Explanation

    -
      -
    1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
    2. -
    3. webkit-text-fill-color: transparent fills the text with a transparent color.
    4. -
    5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
    6. -
    -

    Browser support

    -
    -
    - 90.7% -
    -
    -

    ⚠️ Uses non-standard properties.

    - -
    -
    -

    Hairline border

    -

    Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

    -

    HTML

    <div class="hairline-border">text</div>
    -
    -

    CSS

    .hairline-border {
    -  box-shadow: 0 0 0 1px;
    -}
    -@media (min-resolution: 2dppx) {
    -  .hairline-border {
    -    box-shadow: 0 0 0 0.5px;
    -  }
    -}
    -@media (min-resolution: 3dppx) {
    -  .hairline-border {
    -    box-shadow: 0 0 0 0.33333333px;
    -  }
    -}
    -@media (min-resolution: 4dppx) {
    -  .hairline-border {
    -    box-shadow: 0 0 0 0.25px;
    -  }
    -}
    -
    -

    Demo

    -
    -

    Text with a hairline border around it.

    -
    - -

    Explanation

    -
      -
    1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
    2. -
    3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
    4. -
    -

    Browser Support

    -
    -
    - 95.0% -
    -
    -

    ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

    - -
    -

    *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

    -
    -
    -

    Horizontal and vertical centering

    -

    Horizontally and vertically centers a child element within a parent element.

    -

    HTML

    <div class="horizontal-and-vertical-centering">
    -  <div class="child"></div>
    -</div>
    -
    -

    CSS

    .horizontal-and-vertical-centering {
    -  display: flex;
    -  justify-content: center;
    -  align-items: center;
    -}
    -
    -

    Demo

    -
    -
    -

    Centered content.

    -
    -
    - -

    Explanation

    -
      -
    1. display: flex enables flexbox.
    2. -
    3. justify-content: center centers the child horizontally.
    4. -
    5. align-items: center centers the child vertically.
    6. -
    -

    Browser support

    -
    -
    - 97.8% -
    -
    -

    ⚠️ Needs prefixes for full support.

    - -
    -
    -

    Mouse cursor gradient tracking

    -

    A hover effect where the gradient follows the mouse cursor.

    -

    HTML

    <button class="mouse-cursor-gradient-tracking">
    -  <span>Hover me</span>
    -</button>
    -
    -

    CSS

    .mouse-cursor-gradient-tracking {
    -  position: relative;
    -  background: #2379f7;
    -  padding: 0.5rem 1rem;
    -  font-size: 1.2rem;
    -  border: none;
    -  color: white;
    -  cursor: pointer;
    -  outline: none;
    -  overflow: hidden;
    -}
    -.mouse-cursor-gradient-tracking span {
    -  position: relative;
    -}
    -.mouse-cursor-gradient-tracking::before {
    -  --size: 0;
    -  content: '';
    -  position: absolute;
    -  left: var(--x);
    -  top: var(--y);
    -  width: var(--size);
    -  height: var(--size);
    -  background: radial-gradient(circle closest-side, pink, transparent);
    -  transform: translate(-50%, -50%);
    -  transition: width .2s ease, height .2s ease;
    -}
    -.mouse-cursor-gradient-tracking:hover::before {
    -  --size: 200px;
    -}
    -
    -

    JavaScript

    var btn = document.querySelector('.mouse-cursor-gradient-tracking')
    -btn.onmousemove = function (e) {
    -  var x = e.pageX - btn.offsetLeft
    -  var y = e.pageY - btn.offsetTop
    -  btn.style.setProperty('--x', x + 'px')
    -  btn.style.setProperty('--y', y + 'px')
    -}
    -
    -

    Demo

    -
    - -
    - - -

    Explanation

    -

    TODO

    -

    Note!

    -

    If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

    -
    var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
    -var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
    -
    -

    Browser support

    -
    -
    - 87.2% -
    -
    -

    -
    Requires JavaScript
    - ⚠️ Requires JavaScript. -

    - -
    -
    -

    Overflow scroll gradient

    -

    Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

    -

    HTML

    <div class="overflow-scroll-gradient">
    -  <div class="overflow-scroll-gradient__scroller">
    -    Content to be scrolled
    -  </div>
    -</div>
    -
    -

    CSS

    .overflow-scroll-gradient {
    -  position: relative;
    -}
    -.overflow-scroll-gradient::after {
    -  content: '';
    -  position: absolute;
    -  bottom: 0;
    -  width: 300px;
    -  height: 25px;
    -  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
    -}
    -.overflow-scroll-gradient__scroller {
    -  overflow-y: scroll;
    -  background: white;
    -  width: 300px;
    -  height: 250px;
    -  padding: 15px 0;
    -  line-height: 1.2;
    -  text-align: center;
    -}
    -
    -

    Demo

    -
    -
    -
    - Content to be scrolled -
    -
    -
    - - -

    Explanation

    -
      -
    1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
    2. -
    3. ::after defines a pseudo element.
    4. -
    5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
    6. -
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. -
    9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
    10. -
    11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
    12. -
    13. bottom: 0 positions the pseudo element at the bottom of the parent.
    14. -
    -

    Browser support

    -
    -
    - 94.8% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Popout menu

    -

    Reveals an interactive popout menu on hover.

    -

    HTML

    <div class="reference">
    -  <div class="popout-menu">
    -    Popout menu
    -  </div>
    -</div>
    -
    -

    CSS

    .reference {
    -  position: relative;
    -}
    -.popout-menu {
    -  position: absolute;
    -  visibility: hidden;
    -  left: 100%;
    -}
    -.reference:hover > .popout-menu {
    -  visibility: visible;
    -}
    -
    -

    Demo

    -
    -
    -
    - Popout menu -
    -
    -
    - -

    Explanation

    -
      -
    1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
    2. -
    3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
    4. -
    5. left: 100% moves the the popout menu 100% of its parent's width from the left.
    6. -
    7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
    8. -
    9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, - which shows the popout.
    10. -
    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Pretty text underline

    -

    A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

    -

    HTML

    <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
    -
    -

    CSS

    .pretty-text-underline {
    -  display: inline;
    -  font-size: 1.25rem;
    -  text-shadow: 1px 1px 0 #f5f6f9,
    -    -1px 1px 0 #f5f6f9,
    -    -1px -1px 0 #f5f6f9,
    -    1px -1px 0 #f5f6f9;
    -  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
    -  background-position: 0 1.04em;
    -  background-repeat: repeat-x;
    -  background-size: 1px 1px;
    -}
    -.pretty-text-underline::selection {
    -  background-color: rgba(0, 150, 255, 0.3);
    -  text-shadow: none;
    -}
    -
    -

    Demo

    -
    -

    Pretty text underline without clipping descending letters.

    -
    - -

    Explanation

    -
      -
    1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use - a larger px size.
    2. -
    3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
    4. -
    5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
    6. -
    7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. -
    8. -
    -

    Browser support

    -
    -
    - 94.8% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    Shape separator

    -

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    -

    HTML

    <div class="shape-separator"></div>
    -
    -

    CSS

    .shape-separator {
    -  position: relative;
    -  height: 48px;
    -}
    -.shape-separator::after {
    -  content: '';
    -  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
    -  position: absolute;
    -  width: 100%;
    -  height: 24px;
    -  bottom: 0;
    -}
    -
    -

    Demo

    -
    -
    -
    - -

    Explanation

    -
      -
    1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
    2. -
    3. ::after defines a pseudo element.
    4. -
    5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. -
    6. -
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. -
    9. width: 100% ensures the element stretches the entire width of its parent.
    10. -
    11. height: 24px is the same height as the shape.
    12. -
    13. bottom: 0 positions the pseudo element at the bottom of the parent.
    14. -
    -

    Browser support

    -
    -
    - 98.0% -
    -
    -

    ✅ No caveats.

    - -
    -
    -

    System font stack

    -

    Uses the native font of the operating system to get close to a native app feel.

    -

    HTML

    <p class="system-font-stack">This text uses the system font.</p>
    -
    -

    CSS

    .system-font-stack {
    -  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
    -}
    -
    -

    Demo

    -
    -

    This text uses the system font.

    -
    - -

    Explanation

    -

    The browser looks for each successive font, preferring the first one if possible, and falls back to the next of it cannot find the font (on the system or defined in CSS).

    -
      -
    1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
    2. -
    3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
    4. -
    5. Segoe UI is used on Windows 10
    6. -
    7. Roboto is used on Android
    8. -
    9. Oxygen-Sans is used on GNU+Linux
    10. -
    11. Ubuntu is used on Linux
    12. -
    13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
    14. -
    15. Arial is a font widely supported by all operating systems
    16. -
    17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
    18. -
    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Triangle

    -

    Creates a triangle shape with pure CSS.

    -

    HTML

    <div class="triangle"></div>
    -
    -

    CSS

    .triangle {
    -  width: 0;
    -  height: 0;
    -  border-top: 20px solid #333;
    -  border-left: 20px solid transparent;
    -  border-right: 20px solid transparent;
    -}
    -
    -

    Demo

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -

    Explanation

    -

    - View this link for a detailed explanation. -

    -

    The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

    -

    Experiment with the px values to change the proportion of the triangle.

    -

    Browser support

    -
    -
    - 99+% -
    -
    -

    ✅ No caveats.

    -
    -
    -

    Truncate text

    -

    If the text is longer than one line, it will be truncated and end with an ellipsis ....

    -

    HTML

    <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
    -
    -

    CSS

    .truncate-text {
    -  overflow: hidden;
    -  white-space: nowrap;
    -  text-overflow: ellipsis;
    -}
    -
    -

    Demo

    -
    -

    - This text will be truncated if it exceeds 200px in width. -

    -
    - -

    Explanation

    -
      -
    1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
    2. -
    3. white-space: nowrap prevents the text from exceeding one line in height.
    4. -
    5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
    6. -
    -

    Browser support

    -
    -
    - 98.1% -
    -
    -

    ✅ No caveats.

    - -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.css b/dist/f06fd0495a34430f242f7611190395d6.css deleted file mode 100644 index 3a01d8859..000000000 --- a/dist/f06fd0495a34430f242f7611190395d6.css +++ /dev/null @@ -1,1620 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * 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; -} - -/* Grouping content - ========================================================================== */ - -/** - * 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 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 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 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * 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; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * 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; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * 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; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 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 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -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 in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 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 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} -code[class*='language-'], -pre[class*='language-'] { - color: rgb(50, 75, 100); - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 2; - font-size: 1rem; - -webkit-overflow-scrolling: touch; - margin: 0; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*='language-']::-moz-selection, -pre[class*='language-'] ::-moz-selection, -code[class*='language-']::-moz-selection, -code[class*='language-'] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*='language-']::selection, -pre[class*='language-'] ::selection, -code[class*='language-']::selection, -code[class*='language-'] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*='language-'], - pre[class*='language-'] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*='language-'] { - overflow: auto; - padding: 0.75rem 1.25rem; -} - -pre.is-option { - margin: 0; - padding: 0; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: #f5f6f9; - border-radius: 0.25rem; -} - -/* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8ca2d3; -} - -.token.selector, -.token.attr-name { - color: #da7800; -} - -.token.punctuation { - color: #93a0c7; -} - -.namespace { - opacity: 0.7; -} - -.token.tag { - color: #e22f70; -} - -.token.property, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #0087ca; -} - -.token.string, -.language-css .token.string, -.token.url, -.token.attr-value, -.token.char, -.token.builtin, -.token.inserted { - color: #008a7e; -} - -.token.operator, -.token.entity, -.style .token.string { - color: #f53737; -} - -.token.important, -.token.atrule, -.token.keyword { - color: #7552ff; -} - -.token.function { - color: #396dff; -} - -.token.regex, -.token.variable { - color: #00a8d4; -} - -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} -html { - font-size: 0.95rem; } - -body { - font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; - background: #f6f7fd; - color: #324b64; - line-height: 1.5; } - -a { - color: #157bda; - text-decoration: none; - word-wrap: break-word; - overflow-wrap: break-word; } - a:hover { - color: #0090ff; } - -hr { - border: 0; - border-top: 1px solid rgba(0, 32, 128, 0.1); } - -ul, -ol { - padding-left: 1.25rem; } - -.container { - max-width: 1000px; - padding: 0 2%; - margin: 0 auto; } - -.main > .container { - padding: 0; } - -@media (min-width: 579px) { - .main > .container { - padding: 0 2%; } } - -@media (min-width: 768px) { - html { - font-size: 1rem; } } - -@media (min-width: 992px) { - .content-wrapper { - margin-left: 200px; } } - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */ -.hamburger { - padding: 1rem; - display: inline-block; - cursor: pointer; - transition-property: opacity, filter; - transition-duration: 0.15s; - transition-timing-function: linear; - font: inherit; - color: inherit; - text-transform: none; - background-color: transparent; - border: 0; - margin: 0; - overflow: visible; - outline: 0; } - -.hamburger:hover { - opacity: 0.7; } - -.hamburger-box { - width: 40px; - height: 20px; - display: inline-block; - position: relative; } - -.hamburger-inner { - display: block; - top: 50%; } - -.hamburger-inner, -.hamburger-inner::before, -.hamburger-inner::after { - width: 36px; - height: 2px; - background-color: #e3f5ff; - border-radius: 4px; - position: absolute; - transition-property: transform; - transition-duration: 0.15s; - transition-timing-function: ease; } - -.hamburger-inner::before, -.hamburger-inner::after { - content: ''; - display: block; } - -.hamburger-inner::before { - top: -10px; } - -.hamburger-inner::after { - bottom: -10px; } - -/* - * 3DX - */ -.hamburger--3dx .hamburger-box { - perspective: 80px; } - -.hamburger--3dx .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx .hamburger-inner::before, -.hamburger--3dx .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(180deg); } - -.hamburger--3dx.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DX Reverse - */ -.hamburger--3dx-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dx-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r .hamburger-inner::before, -.hamburger--3dx-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(-180deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY - */ -.hamburger--3dy .hamburger-box { - perspective: 80px; } - -.hamburger--3dy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy .hamburger-inner::before, -.hamburger--3dy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(-180deg); } - -.hamburger--3dy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY Reverse - */ -.hamburger--3dy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r .hamburger-inner::before, -.hamburger--3dy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY - */ -.hamburger--3dxy .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy .hamburger-inner::before, -.hamburger--3dxy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg); } - -.hamburger--3dxy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY Reverse - */ -.hamburger--3dxy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r .hamburger-inner::before, -.hamburger--3dxy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * Arrow - */ -.hamburger--arrow.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrow.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Arrow Right - */ -.hamburger--arrow-r.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrow-r.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Alt - */ -.hamburger--arrowalt .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Alt Right - */ -.hamburger--arrowalt-r .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Turn - */ -.hamburger--arrowturn.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrowturn.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Turn Right - */ -.hamburger--arrowturn-r.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Boring - */ -.hamburger--boring .hamburger-inner, -.hamburger--boring .hamburger-inner::before, -.hamburger--boring .hamburger-inner::after { - transition-property: none; } - -.hamburger--boring.is-active .hamburger-inner { - transform: rotate(45deg); } - -.hamburger--boring.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--boring.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -/* - * Collapse - */ -.hamburger--collapse .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Collapse Reverse - */ -.hamburger--collapse-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse-r .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Elastic - */ -.hamburger--elastic .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(135deg); - transition-delay: 0.075s; } - -.hamburger--elastic.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-270deg); - transition-delay: 0.075s; } - -/* - * Elastic Reverse - */ -.hamburger--elastic-r .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic-r .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-135deg); - transition-delay: 0.075s; } - -.hamburger--elastic-r.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(270deg); - transition-delay: 0.075s; } - -/* - * Emphatic - */ -.hamburger--emphatic { - overflow: hidden; } - -.hamburger--emphatic .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic.is-active .hamburger-inner::before { - left: -80px; - top: -80px; - transform: translate3d(80px, 80px, 0) rotate(45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic.is-active .hamburger-inner::after { - right: -80px; - top: -80px; - transform: translate3d(-80px, 80px, 0) rotate(-45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Emphatic Reverse - */ -.hamburger--emphatic-r { - overflow: hidden; } - -.hamburger--emphatic-r .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic-r.is-active .hamburger-inner::before { - left: -80px; - top: 80px; - transform: translate3d(80px, -80px, 0) rotate(-45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic-r.is-active .hamburger-inner::after { - right: -80px; - top: 80px; - transform: translate3d(-80px, -80px, 0) rotate(45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Minus - */ -.hamburger--minus .hamburger-inner::before, -.hamburger--minus .hamburger-inner::after { - transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } - -.hamburger--minus.is-active .hamburger-inner::before, -.hamburger--minus.is-active .hamburger-inner::after { - opacity: 0; - transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } - -.hamburger--minus.is-active .hamburger-inner::before { - top: 0; } - -.hamburger--minus.is-active .hamburger-inner::after { - bottom: 0; } - -/* - * Slider - */ -.hamburger--slider .hamburger-inner { - top: 2px; } - -.hamburger--slider .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider .hamburger-inner::after { - top: 20px; } - -.hamburger--slider.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--slider.is-active .hamburger-inner::before { - transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-90deg); } - -/* - * Slider Reverse - */ -.hamburger--slider-r .hamburger-inner { - top: 2px; } - -.hamburger--slider-r .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider-r .hamburger-inner::after { - top: 20px; } - -.hamburger--slider-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -.hamburger--slider-r.is-active .hamburger-inner::before { - transform: rotate(45deg) translate3d(5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(90deg); } - -/* - * Spin - */ -.hamburger--spin .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin.is-active .hamburger-inner { - transform: rotate(225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spin Reverse - */ -.hamburger--spin-r .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin-r .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r.is-active .hamburger-inner { - transform: rotate(-225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spring - */ -.hamburger--spring .hamburger-inner { - top: 2px; - transition: background-color 0s 0.13s linear; } - -.hamburger--spring .hamburger-inner::before { - top: 10px; - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring .hamburger-inner::after { - top: 20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring.is-active .hamburger-inner { - transition-delay: 0.22s; - background-color: transparent; } - -.hamburger--spring.is-active .hamburger-inner::before { - top: 0; - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--spring.is-active .hamburger-inner::after { - top: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -/* - * Spring Reverse - */ -.hamburger--spring-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } - -.hamburger--spring-r .hamburger-inner::before { - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spring-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } - -.hamburger--spring-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand - */ -.hamburger--stand .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand.is-active .hamburger-inner { - transform: rotate(90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand Reverse - */ -.hamburger--stand-r .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand-r .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r.is-active .hamburger-inner { - transform: rotate(-90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Squeeze - */ -.hamburger--squeeze .hamburger-inner { - transition-duration: 0.075s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze .hamburger-inner::before { - transition: top 0.075s 0.12s ease, opacity 0.075s ease; } - -.hamburger--squeeze .hamburger-inner::after { - transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze.is-active .hamburger-inner { - transform: rotate(45deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--squeeze.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.075s ease, opacity 0.075s 0.12s ease; } - -.hamburger--squeeze.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Vortex - */ -.hamburger--vortex .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex .hamburger-inner::before, -.hamburger--vortex .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex.is-active .hamburger-inner { - transform: rotate(765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex.is-active .hamburger-inner::before, -.hamburger--vortex.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); } - -/* - * Vortex Reverse - */ -.hamburger--vortex-r .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r .hamburger-inner::before, -.hamburger--vortex-r .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex-r .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex-r .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex-r.is-active .hamburger-inner { - transform: rotate(-765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r.is-active .hamburger-inner::before, -.hamburger--vortex-r.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -.sidebar { - background: #202e4e; - position: fixed; - z-index: 2; - width: 100%; - height: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__menu { - position: absolute; - font-weight: bold; - border: none; - text-align: left; - text-transform: uppercase; - left: 0; - top: 0; - padding: 0.75rem 1rem; - outline: 0; } - .sidebar__menu-icon { - height: 24px; } - .sidebar__links { - background: #202e4e; - overflow-y: auto; - transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); - transform-origin: 0% 0%; - transform: rotateX(-90deg); - visibility: hidden; - opacity: 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - max-height: 378px; - margin-top: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__links.is-active { - transform: rotateX(0); - visibility: visible; - opacity: 1; } - .sidebar__link { - display: block; - color: #e3f5ff; - padding: 0.5rem 0.75rem; - transition: all 0.1s ease-out; - border-left: 2px solid #576a85; - margin: 0.5rem; - font-weight: 500; - font-size: 0.95rem; } - .sidebar__link:hover { - color: #88f4ff; - background: rgba(255, 255, 255, 0.1); - border-color: pink; } - -@media (min-width: 992px) { - .sidebar { - left: 0; - top: 0; - bottom: 0; - width: 15%; - max-width: 250px; - min-width: 200px; - height: 100%; - background: linear-gradient(-30deg, #2a3d67, #14264e); - box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); - overflow-y: auto; - color: white; } - .sidebar::-webkit-scrollbar-track { - background-color: rgba(0, 0, 0, 0.6); } - .sidebar::-webkit-scrollbar { - width: 10px; - background-color: #4b6191; } - .sidebar::-webkit-scrollbar-thumb { - background-color: #4b6191; } - .sidebar__links { - background: none; - box-shadow: none; - visibility: visible; - opacity: 1; - transform: rotateX(0); - margin-top: 0; - max-height: none; } - .sidebar__menu { - display: none; } } - -.header { - position: relative; - padding: 5rem 1rem 4rem; - background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); - color: white; - margin-bottom: 2rem; - text-align: center; - overflow: hidden; - z-index: 1; } - .header::before { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); - width: 150%; - height: 150%; - top: 0; - left: 0; - opacity: 0.1; - z-index: -1; } - .header::after { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); - background-size: 24px 24px; - width: 100%; - left: 0; - height: 24px; - bottom: -1px; } - .header__logo { - height: 146px; - user-select: none; } - .header__heading { - font-weight: 200; - font-size: 3rem; - margin: 1rem 0; - line-height: 1.2; } - .header__description { - font-size: 1.5rem; - max-width: 600px; - margin: 0 auto 1rem; - font-weight: 300; - letter-spacing: 0.4px; } - .header__css { - background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-size: 4rem; } - .header__github-button { - color: white; } - -@media (min-width: 579px) { - .header { - padding: 6rem 0 5rem; } - .header__heading { - font-size: 3.75rem; } } - -@media (min-width: 992px) { - .header { - padding: 2.5rem 0 5rem; } } - -.snippet { - position: relative; - background: white; - padding: 2rem 5%; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; - border-radius: 0.25rem; - font-size: 1.1rem; - margin-bottom: 1.5rem; } - .snippet h3 { - font-size: 2rem; - padding: 0.5rem 0; - border-bottom: 1px solid rgba(0, 32, 128, 0.1); - margin-bottom: 1.25rem; - margin-top: 0; - line-height: 1.3; } - .snippet code:not([class*='lang']) { - background: #fcfaff; - border: 1px solid #e2ddff; - color: #4b00da; - border-radius: 0.15rem; - font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 0.9rem; - padding: 0.2rem 0.4rem; - margin: 0 0.1rem; } - .snippet ol { - margin-top: 0.5rem; } - .snippet ol > li { - margin-bottom: 0.5rem; } - .snippet > p { - margin-top: 0.5rem; } - .snippet h4 { - display: inline-block; - margin: 1rem 0 0.5rem; - line-height: 2; - padding: 0 0.5rem; - border-radius: 3px; - font-size: 0.9rem; - text-transform: uppercase; - background: #333; - border: 1px solid #c6d6ea; - border-bottom-color: #b3c9e3; - background: white; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } - .snippet h4[data-type='HTML'] { - color: white; - border: none; - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - .snippet h4[data-type='CSS'] { - color: white; - border: none; - background: linear-gradient(135deg, #7983ff, #5f9de9); } - .snippet h4[data-type='JavaScript'] { - color: white; - border: none; - background: linear-gradient(135deg, #ffb000, #f58818); } - .snippet__browser-support { - display: inline-block; - font-size: 2rem; - font-weight: 200; - line-height: 1; - margin: 0.5rem 0; } - .snippet__subheading.is-html { - color: #e22f70; } - .snippet__subheading.is-css { - color: #0a91d4; } - .snippet__subheading.is-explanation { - color: #4b00da; } - .snippet__support-note { - color: #9fa5b5; - font-weight: bold; } - .snippet__requires-javascript { - position: absolute; - background: red; - background: linear-gradient(145deg, #ff003b, #ff4b39); - color: white; - padding: 0.25rem 0.5rem; - font-size: 0.9rem; - transform: rotate(20deg); - font-weight: bold; - top: 1rem; - right: 0; } - -.snippet-demo { - background: #f5f6f9; - border-radius: 0.25rem; - padding: 0.75rem 1.25rem; } - .snippet-demo.is-distinct { - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - -@media (min-width: 768px) { - .snippet__requires-javascript { - right: -0.5rem; } } - -.back-to-top-button { - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - font-size: 2rem; - font-weight: bold; - background: white; - width: 4rem; - height: 4rem; - position: fixed; - right: 2rem; - bottom: 2rem; - border-radius: 50%; - user-select: none; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); - transition: all 0.2s ease-out; - visibility: hidden; - opacity: 0; - z-index: 1; - border: 1px solid rgba(0, 32, 128, 0.1); - outline: 0; } - .back-to-top-button:hover, .back-to-top-button:focus { - transform: scale(1.1); - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); - color: #35a8ff; } - .back-to-top-button:focus { - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; } - .back-to-top-button.is-visible { - visibility: visible; - opacity: 1; } diff --git a/dist/f06fd0495a34430f242f7611190395d6.js b/dist/f06fd0495a34430f242f7611190395d6.js deleted file mode 100644 index f1cb9279d..000000000 --- a/dist/f06fd0495a34430f242f7611190395d6.js +++ /dev/null @@ -1,1479 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -// eslint-disable-next-line no-global-assign -require = (function (modules, cache, entry) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof require === "function" && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof require === "function" && require; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - - var module = cache[name] = new newRequire.Module(name); - - modules[name][0].call(module.exports, localRequire, module, module.exports); - } - - return cache[name].exports; - - function localRequire(x){ - return newRequire(localRequire.resolve(x)); - } - - function resolve(x){ - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - // Override the current require with this new one - return newRequire; -})({13:[function(require,module,exports) { -var bundleURL = null; -function getBundleURLCached() { - if (!bundleURL) { - bundleURL = getBundleURL(); - } - - return bundleURL; -} - -function getBundleURL() { - // Attempt to find the URL of the current script and use that as the base URL - try { - throw new Error(); - } catch (err) { - var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); - if (matches) { - return getBaseURL(matches[0]); - } - } - - return '/'; -} - -function getBaseURL(url) { - return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; -} - -exports.getBundleURL = getBundleURLCached; -exports.getBaseURL = getBaseURL; -},{}],10:[function(require,module,exports) { -var bundle = require('./bundle-url'); - -function updateLink(link) { - var newLink = link.cloneNode(); - newLink.onload = function () { - link.remove(); - }; - newLink.href = link.href.split('?')[0] + '?' + Date.now(); - link.parentNode.insertBefore(newLink, link.nextSibling); -} - -var cssTimeout = null; -function reloadCSS() { - if (cssTimeout) { - return; - } - - cssTimeout = setTimeout(function () { - var links = document.querySelectorAll('link[rel="stylesheet"]'); - for (var i = 0; i < links.length; i++) { - if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { - updateLink(links[i]); - } - } - - cssTimeout = null; - }, 50); -} - -module.exports = reloadCSS; -},{"./bundle-url":13}],14:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":10}],15:[function(require,module,exports) { -var global = (1,eval)("this"); - -/* ********************************************** - Begin prism-core.js -********************************************** */ - -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * MIT license http://www.opensource.org/licenses/mit-license.php/ - * @author Lea Verou http://lea.verou.me - */ - -var Prism = (function(){ - -// Private helper vars -var lang = /\blang(?:uage)?-(\w+)\b/i; -var uniqueId = 0; - -var _ = _self.Prism = { - manual: _self.Prism && _self.Prism.manual, - disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - util: { - encode: function (tokens) { - if (tokens instanceof Token) { - return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); - } else if (_.util.type(tokens) === 'Array') { - return tokens.map(_.util.encode); - } else { - return tokens.replace(/&/g, '&').replace(/ text.length) { - // Something went terribly wrong, ABORT, ABORT! - return; - } - - if (str instanceof Token) { - continue; - } - - pattern.lastIndex = 0; - - var match = pattern.exec(str), - delNum = 1; - - // Greedy patterns can override/remove up to two previously matched tokens - if (!match && greedy && i != strarr.length - 1) { - pattern.lastIndex = pos; - match = pattern.exec(text); - if (!match) { - break; - } - - var from = match.index + (lookbehind ? match[1].length : 0), - to = match.index + match[0].length, - k = i, - p = pos; - - for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { - p += strarr[k].length; - // Move the index i to the element in strarr that is closest to from - if (from >= p) { - ++i; - pos = p; - } - } - - /* - * If strarr[i] is a Token, then the match starts inside another Token, which is invalid - * If strarr[k - 1] is greedy we are in conflict with another greedy pattern - */ - if (strarr[i] instanceof Token || strarr[k - 1].greedy) { - continue; - } - - // Number of tokens to delete and replace with the new match - delNum = k - i; - str = text.slice(pos, p); - match.index -= pos; - } - - if (!match) { - if (oneshot) { - break; - } - - continue; - } - - if(lookbehind) { - lookbehindLength = match[1].length; - } - - var from = match.index + lookbehindLength, - match = match[0].slice(lookbehindLength), - to = from + match.length, - before = str.slice(0, from), - after = str.slice(to); - - var args = [i, delNum]; - - if (before) { - ++i; - pos += before.length; - args.push(before); - } - - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); - - args.push(wrapped); - - if (after) { - args.push(after); - } - - Array.prototype.splice.apply(strarr, args); - - if (delNum != 1) - _.matchGrammar(text, strarr, grammar, i, pos, true, token); - - if (oneshot) - break; - } - } - } - }, - - tokenize: function(text, grammar, language) { - var strarr = [text]; - - var rest = grammar.rest; - - if (rest) { - for (var token in rest) { - grammar[token] = rest[token]; - } - - delete grammar.rest; - } - - _.matchGrammar(text, strarr, grammar, 0, 0, false); - - return strarr; - }, - - hooks: { - all: {}, - - add: function (name, callback) { - var hooks = _.hooks.all; - - hooks[name] = hooks[name] || []; - - hooks[name].push(callback); - }, - - run: function (name, env) { - var callbacks = _.hooks.all[name]; - - if (!callbacks || !callbacks.length) { - return; - } - - for (var i=0, callback; callback = callbacks[i++];) { - callback(env); - } - } - } -}; - -var Token = _.Token = function(type, content, alias, matchedStr, greedy) { - this.type = type; - this.content = content; - this.alias = alias; - // Copy of the full string this token was created from - this.length = (matchedStr || "").length|0; - this.greedy = !!greedy; -}; - -Token.stringify = function(o, language, parent) { - if (typeof o == 'string') { - return o; - } - - if (_.util.type(o) === 'Array') { - return o.map(function(element) { - return Token.stringify(element, language, o); - }).join(''); - } - - var env = { - type: o.type, - content: Token.stringify(o.content, language, parent), - tag: 'span', - classes: ['token', o.type], - attributes: {}, - language: language, - parent: parent - }; - - if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); - } - - _.hooks.run('wrap', env); - - var attributes = Object.keys(env.attributes).map(function(name) { - return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; - }).join(' '); - - return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; - -}; - -if (!_self.document) { - if (!_self.addEventListener) { - // in Node.js - return _self.Prism; - } - - if (!_.disableWorkerMessageHandler) { - // In worker - _self.addEventListener('message', function (evt) { - var message = JSON.parse(evt.data), - lang = message.language, - code = message.code, - immediateClose = message.immediateClose; - - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) { - _self.close(); - } - }, false); - } - - return _self.Prism; -} - -//Get current script and highlight -var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); - -if (script) { - _.filename = script.src; - - if (!_.manual && !script.hasAttribute('data-manual')) { - if(document.readyState !== "loading") { - if (window.requestAnimationFrame) { - window.requestAnimationFrame(_.highlightAll); - } else { - window.setTimeout(_.highlightAll, 16); - } - } - else { - document.addEventListener('DOMContentLoaded', _.highlightAll); - } - } -} - -return _self.Prism; - -})(); - -if (typeof module !== 'undefined' && module.exports) { - module.exports = Prism; -} - -// hack for components to work correctly in node.js -if (typeof global !== 'undefined') { - global.Prism = Prism; -} - - -/* ********************************************** - Begin prism-markup.js -********************************************** */ - -Prism.languages.markup = { - 'comment': //, - 'prolog': /<\?[\s\S]+?\?>/, - 'doctype': //i, - 'cdata': //i, - 'tag': { - pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, - inside: { - 'tag': { - pattern: /^<\/?[^\s>\/]+/i, - inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } - }, - 'attr-value': { - pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, - inside: { - 'punctuation': [ - /^=/, - { - pattern: /(^|[^\\])["']/, - lookbehind: true - } - ] - } - }, - 'punctuation': /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { - 'namespace': /^[^\s>\/:]+:/ - } - } - - } - }, - 'entity': /&#?[\da-z]{1,8};/i -}; - -Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = - Prism.languages.markup['entity']; - -// Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add('wrap', function(env) { - - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } -}); - -Prism.languages.xml = Prism.languages.markup; -Prism.languages.html = Prism.languages.markup; -Prism.languages.mathml = Prism.languages.markup; -Prism.languages.svg = Prism.languages.markup; - - -/* ********************************************** - Begin prism-css.js -********************************************** */ - -Prism.languages.css = { - 'comment': /\/\*[\s\S]*?\*\//, - 'atrule': { - pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, - inside: { - 'rule': /@[\w-]+/ - // See rest below - } - }, - 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, - 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, - 'string': { - pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, - 'important': /\B!important\b/i, - 'function': /[-a-z0-9]+(?=\()/i, - 'punctuation': /[(){};:]/ -}; - -Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'style': { - pattern: /()[\s\S]*?(?=<\/style>)/i, - lookbehind: true, - inside: Prism.languages.css, - alias: 'language-css', - greedy: true - } - }); - - Prism.languages.insertBefore('inside', 'attr-value', { - 'style-attr': { - pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, - inside: { - 'attr-name': { - pattern: /^\s*style/i, - inside: Prism.languages.markup.tag.inside - }, - 'punctuation': /^\s*=\s*['"]|['"]\s*$/, - 'attr-value': { - pattern: /.+/i, - inside: Prism.languages.css - } - }, - alias: 'language-css' - } - }, Prism.languages.markup.tag); -} - -/* ********************************************** - Begin prism-clike.js -********************************************** */ - -Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, - lookbehind: true, - 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': /[a-z0-9_]+(?=\()/i, - 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, - 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, - 'punctuation': /[{}[\];(),.:]/ -}; - - -/* ********************************************** - Begin prism-javascript.js -********************************************** */ - -Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(?: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|var|void|while|with|yield)\b/, - 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, - // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) - 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, - 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ -}); - -Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, - lookbehind: true, - greedy: true - }, - // This must be declared before keyword because we use "function" inside the look-forward - 'function-variable': { - pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, - alias: 'function' - } -}); - -Prism.languages.insertBefore('javascript', 'string', { - 'template-string': { - pattern: /`(?:\\[\s\S]|[^\\`])*`/, - greedy: true, - inside: { - 'interpolation': { - pattern: /\$\{[^}]+\}/, - inside: { - 'interpolation-punctuation': { - pattern: /^\$\{|\}$/, - alias: 'punctuation' - }, - rest: Prism.languages.javascript - } - }, - 'string': /[\s\S]+/ - } - } -}); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'script': { - pattern: /()[\s\S]*?(?=<\/script>)/i, - lookbehind: true, - inside: Prism.languages.javascript, - alias: 'language-javascript', - greedy: true - } - }); -} - -Prism.languages.js = Prism.languages.javascript; - - -/* ********************************************** - Begin prism-file-highlight.js -********************************************** */ - -(function () { - if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { - return; - } - - self.Prism.fileHighlight = function() { - - var Extensions = { - 'js': 'javascript', - 'py': 'python', - 'rb': 'ruby', - 'ps1': 'powershell', - 'psm1': 'powershell', - 'sh': 'bash', - 'bat': 'batch', - 'h': 'c', - 'tex': 'latex' - }; - - Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { - var src = pre.getAttribute('data-src'); - - var language, parent = pre; - var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; - while (parent && !lang.test(parent.className)) { - parent = parent.parentNode; - } - - if (parent) { - language = (pre.className.match(lang) || [, ''])[1]; - } - - if (!language) { - var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; - language = Extensions[extension] || extension; - } - - var code = document.createElement('code'); - code.className = 'language-' + language; - - pre.textContent = ''; - - code.textContent = 'Loading…'; - - pre.appendChild(code); - - var xhr = new XMLHttpRequest(); - - xhr.open('GET', src, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - - if (xhr.status < 400 && xhr.responseText) { - code.textContent = xhr.responseText; - - Prism.highlightElement(code); - } - else if (xhr.status >= 400) { - code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; - } - else { - code.textContent = '✖ Error: File does not exist or is empty'; - } - } - }; - - xhr.send(null); - }); - - }; - - document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); - -})(); - -},{}],6:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":10}],5:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":10}],7:[function(require,module,exports) { -var e = Element.prototype; -if (!e.matches) { - e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; -} -if (!e.closest) { - e.closest = function (s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; -} -},{}],11:[function(require,module,exports) { -var global = (1,eval)("this"); -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -;(function (global, factory) { - (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); -})(this, function () { - 'use strict'; - - // Robert Penner's easeInOutQuad - - // find the rest of his easing functions here: http://robertpenner.com/easing/ - // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js - - var easeInOutQuad = function easeInOutQuad(t, b, c, d) { - t /= d / 2; - if (t < 1) return c / 2 * t * t + b; - t--; - return -c / 2 * (t * (t - 2) - 1) + b; - }; - - var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { - return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - }; - - var jumper = function jumper() { - // private variable cache - // no variables are created during a jump, preventing memory leaks - - var element = void 0; // element to scroll to (node) - - var start = void 0; // where scroll starts (px) - var stop = void 0; // where scroll stops (px) - - var offset = void 0; // adjustment from the stop position (px) - var easing = void 0; // easing function (function) - var a11y = void 0; // accessibility support flag (boolean) - - var distance = void 0; // distance of scroll (px) - var duration = void 0; // scroll duration (ms) - - var timeStart = void 0; // time scroll started (ms) - var timeElapsed = void 0; // time spent scrolling thus far (ms) - - var next = void 0; // next scroll position (px) - - var callback = void 0; // to call when done scrolling (function) - - // scroll position helper - - function location() { - return window.scrollY || window.pageYOffset; - } - - // element offset helper - - function top(element) { - return element.getBoundingClientRect().top + start; - } - - // rAF loop helper - - function loop(timeCurrent) { - // store time scroll started, if not started already - if (!timeStart) { - timeStart = timeCurrent; - } - - // determine time spent scrolling so far - timeElapsed = timeCurrent - timeStart; - - // calculate next scroll position - next = easing(timeElapsed, start, distance, duration); - - // scroll to it - window.scrollTo(0, next); - - // check progress - timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop - : done(); // scrolling is done - } - - // scroll finished helper - - function done() { - // account for rAF time rounding inaccuracies - window.scrollTo(0, start + distance); - - // if scrolling to an element, and accessibility is enabled - if (element && a11y) { - // add tabindex indicating programmatic focus - element.setAttribute('tabindex', '-1'); - - // focus the element - element.focus(); - } - - // if it exists, fire the callback - if (typeof callback === 'function') { - callback(); - } - - // reset time for next jump - timeStart = false; - } - - // API - - function jump(target) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - // resolve options, or use defaults - duration = options.duration || 1000; - offset = options.offset || 0; - callback = options.callback; // "undefined" is a suitable default, and won't be called - easing = options.easing || easeInOutQuad; - a11y = options.a11y || false; - - // cache starting position - start = location(); - - // resolve target - switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { - // scroll from current position - case 'number': - element = undefined; // no element to scroll to - a11y = false; // make sure accessibility is off - stop = start + target; - break; - - // scroll to element (node) - // bounding rect is relative to the viewport - case 'object': - element = target; - stop = top(element); - break; - - // scroll to element (selector) - // bounding rect is relative to the viewport - case 'string': - element = document.querySelector(target); - stop = top(element); - break; - } - - // resolve scroll distance, accounting for offset - distance = stop - start + offset; - - // resolve duration - switch (_typeof(options.duration)) { - // number in ms - case 'number': - duration = options.duration; - break; - - // function passed the distance of the scroll - case 'function': - duration = options.duration(distance); - break; - } - - // start the loop - window.requestAnimationFrame(loop); - } - - // expose only the jump method - return jump; - }; - - // export singleton - - var singleton = jumper(); - - return function () { - var scrolling = void 0; - var end = function end() { - return scrolling = false; - }; - return function (to) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (scrolling) return; - var scrollY = window.scrollY || window.pageYOffset; - if (to !== '.header') location.hash = to; - scroll(0, scrollY); - scrolling = true; - setTimeout(end, options.duration || 0); - return singleton(to, options); - }; - }(); -}); -},{}],12:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var select = exports.select = function select(s) { - return document.querySelector(s); -}; -var selectAll = exports.selectAll = function selectAll(s) { - return [].slice.call(document.querySelectorAll(s)); -}; -var scrollY = exports.scrollY = function scrollY() { - return window.scrollY || window.pageYOffset; -}; -var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { - return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; -}; - -/* -* Make iOS behave normally. -*/ -if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { - document.body.style.cursor = 'pointer'; -} - -/* -* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font -* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. -* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. -* Must be applied to all browsers for now. -*/ -;(function () { - var ua = navigator.userAgent; - - // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica - var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; - - // Chrome v64 and FF v58 fix the issue - var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; - - var allEls = [].slice.call(document.querySelectorAll('*')); - - if (isRelevantMacOS && isAffectedBrowser) { - document.documentElement.style.letterSpacing = '-0.3px'; - allEls.forEach(function (el) { - var fontSize = parseFloat(getComputedStyle(el).fontSize); - if (fontSize >= 20) el.style.letterSpacing = '0.3px'; - }); - } else if (isRelevantMacOS && !isAffectedBrowser) { - // Italics fix - allEls.forEach(function (el) { - var _getComputedStyle = getComputedStyle(el), - fontSize = _getComputedStyle.fontSize, - fontStyle = _getComputedStyle.fontStyle; - - if (fontStyle === 'italic') { - el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; - } - }); - } -})(); -},{}],8:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var menu = (0, _utils.select)('.hamburger'); -var links = (0, _utils.select)('.sidebar__links'); -var ACTIVE_CLASS = 'is-active'; - -var toggle = function toggle() { - return [menu, links].forEach(function (el) { - return el.classList.toggle(ACTIVE_CLASS); - }); -}; - -menu.addEventListener('click', toggle); - -links.addEventListener('click', function (e) { - setTimeout(toggle, 40); - if (e.target.classList.contains('sidebar__link')) { - e.preventDefault(); - (0, _jump2.default)(e.target.getAttribute('href'), { - duration: 750, - offset: window.innerWidth <= 768 ? -64 : -32, - easing: _utils.easeOutQuint - }); - } -}); - -document.addEventListener('click', function (e) { - if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { - toggle(); - } -}); - -exports.default = { toggle: toggle }; -},{"../deps/jump":11,"../deps/utils":12}],9:[function(require,module,exports) { -'use strict'; - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var backToTopButton = (0, _utils.select)('.back-to-top-button'); - -window.addEventListener('scroll', function () { - backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); -}); -backToTopButton.onclick = function () { - (0, _jump2.default)('.header', { - duration: 750, - easing: _utils.easeOutQuint - }); -}; -},{"../deps/jump":11,"../deps/utils":12}],3:[function(require,module,exports) { -'use strict'; - -require('normalize.css'); - -require('prismjs'); - -require('../css/deps/prism.css'); - -require('../css/index.scss'); - -require('./deps/polyfills'); - -var _Menu = require('./components/Menu'); - -var _Menu2 = _interopRequireDefault(_Menu); - -var _BackToTopButton = require('./components/BackToTopButton'); - -var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -},{"normalize.css":14,"prismjs":15,"../css/deps/prism.css":6,"../css/index.scss":5,"./deps/polyfills":7,"./components/Menu":8,"./components/BackToTopButton":9}],16:[function(require,module,exports) { - -var global = (1, eval)('this'); -var OldModule = module.bundle.Module; -function Module(moduleName) { - OldModule.call(this, moduleName); - this.hot = { - accept: function (fn) { - this._acceptCallback = fn || function () {}; - }, - dispose: function (fn) { - this._disposeCallback = fn; - } - }; -} - -module.bundle.Module = Module; - -var parent = module.bundle.parent; -if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { - var hostname = '' || location.hostname; - var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + '53207' + '/'); - ws.onmessage = function (event) { - var data = JSON.parse(event.data); - - if (data.type === 'update') { - data.assets.forEach(function (asset) { - hmrApply(global.require, asset); - }); - - data.assets.forEach(function (asset) { - if (!asset.isNew) { - hmrAccept(global.require, asset.id); - } - }); - } - - if (data.type === 'reload') { - ws.close(); - ws.onclose = function () { - location.reload(); - }; - } - - if (data.type === 'error-resolved') { - console.log('[parcel] ✨ Error resolved'); - } - - if (data.type === 'error') { - console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); - } - }; -} - -function getParents(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return []; - } - - var parents = []; - var k, d, dep; - - for (k in modules) { - for (d in modules[k][1]) { - dep = modules[k][1][d]; - if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { - parents.push(+k); - } - } - } - - if (bundle.parent) { - parents = parents.concat(getParents(bundle.parent, id)); - } - - return parents; -} - -function hmrApply(bundle, asset) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (modules[asset.id] || !bundle.parent) { - var fn = new Function('require', 'module', 'exports', asset.generated.js); - asset.isNew = !modules[asset.id]; - modules[asset.id] = [fn, asset.deps]; - } else if (bundle.parent) { - hmrApply(bundle.parent, asset); - } -} - -function hmrAccept(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (!modules[id] && bundle.parent) { - return hmrAccept(bundle.parent, id); - } - - var cached = bundle.cache[id]; - if (cached && cached.hot._disposeCallback) { - cached.hot._disposeCallback(); - } - - delete bundle.cache[id]; - bundle(id); - - cached = bundle.cache[id]; - if (cached && cached.hot && cached.hot._acceptCallback) { - cached.hot._acceptCallback(); - return true; - } - - return getParents(global.require, id).some(function (id) { - return hmrAccept(global.require, id); - }); -} -},{}]},{},[16,3]) -//# sourceMappingURL=/dist/f06fd0495a34430f242f7611190395d6.map \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.map b/dist/f06fd0495a34430f242f7611190395d6.map deleted file mode 100644 index 5cefc8211..000000000 --- a/dist/f06fd0495a34430f242f7611190395d6.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACt0BA,IAAMtI,IAAIC,QAAQC,SAAlB;AACA,IAAI,CAACF,EAAEG,OAAP,EAAgB;AACdH,IAAEG,OAAF,GACEH,EAAEI,eAAF,IAAqBJ,EAAEK,iBAAvB,IAA4CL,EAAEM,qBAA9C,IAAuEN,EAAEO,kBAD3E;AAED;AACD,IAAI,CAACP,EAAEQ,OAAP,EAAgB;AACdR,IAAEQ,OAAF,GAAY,UAASC,CAAT,EAAY;AACtB,QAAIC,KAAK,IAAT;AACA,QAAI,CAACC,SAASC,eAAT,CAAyBC,QAAzB,CAAkCH,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,OAAG;AACD,UAAIA,GAAGP,OAAH,CAAWM,CAAX,CAAJ,EAAmB,OAAOC,EAAP;AACnBA,WAAKA,GAAGI,aAAH,IAAoBJ,GAAGK,UAA5B;AACD,KAHD,QAGSL,OAAO,IAAP,IAAeA,GAAGM,QAAH,KAAgB,CAHxC;AAIA,WAAO,IAAP;AACD,GARD;AASD;;;;;ACfD,CAAC,CAAC,UAASC,MAAT,EAAiBC,OAAjB,EAA0B;AAC1B,UAAOC,OAAP,0CAAOA,OAAP,OAAmB,QAAnB,IAA+B,OAAOC,MAAP,KAAkB,WAAjD,GACKA,OAAOD,OAAP,GAAiBD,SADtB,GAEI,OAAOG,MAAP,KAAkB,UAAlB,IAAgCA,OAAOC,GAAvC,GAA6CD,OAAOH,OAAP,CAA7C,GAAgED,OAAOM,IAAP,GAAcL,SAFlF;AAGD,CAJA,EAIE,IAJF,EAIQ,YAAW;AAClB;;AAEA;;AAEA;AACA;;AAEA,MAAIM,gBAAgB,SAASA,aAAT,CAAuBC,CAAvB,EAA0BC,CAA1B,EAA6BC,CAA7B,EAAgCC,CAAhC,EAAmC;AACrDH,SAAKG,IAAI,CAAT;AACA,QAAIH,IAAI,CAAR,EAAW,OAAOE,IAAI,CAAJ,GAAQF,CAAR,GAAYA,CAAZ,GAAgBC,CAAvB;AACXD;AACA,WAAO,CAACE,CAAD,GAAK,CAAL,IAAUF,KAAKA,IAAI,CAAT,IAAc,CAAxB,IAA6BC,CAApC;AACD,GALD;;AAOA,MAAIG,UACF,OAAOC,MAAP,KAAkB,UAAlB,IAAgC,SAAOA,OAAOC,QAAd,MAA2B,QAA3D,GACI,UAASC,GAAT,EAAc;AACZ,kBAAcA,GAAd,0CAAcA,GAAd;AACD,GAHL,GAII,UAASA,GAAT,EAAc;AACZ,WAAOA,OACL,OAAOF,MAAP,KAAkB,UADb,IAELE,IAAIC,WAAJ,KAAoBH,MAFf,IAGLE,QAAQF,OAAO5B,SAHV,GAIH,QAJG,UAKI8B,GALJ,0CAKIA,GALJ,CAAP;AAMD,GAZP;;AAcA,MAAIE,SAAS,SAASA,MAAT,GAAkB;AAC7B;AACA;;AAEA,QAAIC,UAAU,KAAK,CAAnB,CAJ6B,CAIR;;AAErB,QAAIC,QAAQ,KAAK,CAAjB,CAN6B,CAMV;AACnB,QAAIC,OAAO,KAAK,CAAhB,CAP6B,CAOX;;AAElB,QAAIC,SAAS,KAAK,CAAlB,CAT6B,CAST;AACpB,QAAIC,SAAS,KAAK,CAAlB,CAV6B,CAUT;AACpB,QAAIC,OAAO,KAAK,CAAhB,CAX6B,CAWX;;AAElB,QAAIC,WAAW,KAAK,CAApB,CAb6B,CAaP;AACtB,QAAIC,WAAW,KAAK,CAApB,CAd6B,CAcP;;AAEtB,QAAIC,YAAY,KAAK,CAArB,CAhB6B,CAgBN;AACvB,QAAIC,cAAc,KAAK,CAAvB,CAjB6B,CAiBJ;;AAEzB,QAAIC,OAAO,KAAK,CAAhB,CAnB6B,CAmBX;;AAElB,QAAIC,WAAW,KAAK,CAApB,CArB6B,CAqBP;;AAEtB;;AAEA,aAASC,QAAT,GAAoB;AAClB,aAAOC,OAAOC,OAAP,IAAkBD,OAAOE,WAAhC;AACD;;AAED;;AAEA,aAASC,GAAT,CAAahB,OAAb,EAAsB;AACpB,aAAOA,QAAQiB,qBAAR,GAAgCD,GAAhC,GAAsCf,KAA7C;AACD;;AAED;;AAEA,aAASiB,IAAT,CAAcC,WAAd,EAA2B;AACzB;AACA,UAAI,CAACX,SAAL,EAAgB;AACdA,oBAAYW,WAAZ;AACD;;AAED;AACAV,oBAAcU,cAAcX,SAA5B;;AAEA;AACAE,aAAON,OAAOK,WAAP,EAAoBR,KAApB,EAA2BK,QAA3B,EAAqCC,QAArC,CAAP;;AAEA;AACAM,aAAOO,QAAP,CAAgB,CAAhB,EAAmBV,IAAnB;;AAEA;AACAD,oBAAcF,QAAd,GACIM,OAAOQ,qBAAP,CAA6BH,IAA7B,CADJ,CACuC;AADvC,QAEII,MAFJ,CAhByB,CAkBd;AACZ;;AAED;;AAEA,aAASA,IAAT,GAAgB;AACd;AACAT,aAAOO,QAAP,CAAgB,CAAhB,EAAmBnB,QAAQK,QAA3B;;AAEA;AACA,UAAIN,WAAWK,IAAf,EAAqB;AACnB;AACAL,gBAAQuB,YAAR,CAAqB,UAArB,EAAiC,IAAjC;;AAEA;AACAvB,gBAAQwB,KAAR;AACD;;AAED;AACA,UAAI,OAAOb,QAAP,KAAoB,UAAxB,EAAoC;AAClCA;AACD;;AAED;AACAH,kBAAY,KAAZ;AACD;;AAED;;AAEA,aAASiB,IAAT,CAAcC,MAAd,EAAsB;AACpB,UAAIC,UAAUC,UAAUC,MAAV,GAAmB,CAAnB,IAAwBD,UAAU,CAAV,MAAiBE,SAAzC,GAAqDF,UAAU,CAAV,CAArD,GAAoE,EAAlF;;AAEA;AACArB,iBAAWoB,QAAQpB,QAAR,IAAoB,IAA/B;AACAJ,eAASwB,QAAQxB,MAAR,IAAkB,CAA3B;AACAQ,iBAAWgB,QAAQhB,QAAnB,CANoB,CAMQ;AAC5BP,eAASuB,QAAQvB,MAAR,IAAkBf,aAA3B;AACAgB,aAAOsB,QAAQtB,IAAR,IAAgB,KAAvB;;AAEA;AACAJ,cAAQW,UAAR;;AAEA;AACA,cAAQ,OAAOc,MAAP,KAAkB,WAAlB,GAAgC,WAAhC,GAA8ChC,QAAQgC,MAAR,CAAtD;AACE;AACA,aAAK,QAAL;AACE1B,oBAAU8B,SAAV,CADF,CACsB;AACpBzB,iBAAO,KAAP,CAFF,CAEe;AACbH,iBAAOD,QAAQyB,MAAf;AACA;;AAEF;AACA;AACA,aAAK,QAAL;AACE1B,oBAAU0B,MAAV;AACAxB,iBAAOc,IAAIhB,OAAJ,CAAP;AACA;;AAEF;AACA;AACA,aAAK,QAAL;AACEA,oBAAUxB,SAASuD,aAAT,CAAuBL,MAAvB,CAAV;AACAxB,iBAAOc,IAAIhB,OAAJ,CAAP;AACA;AApBJ;;AAuBA;AACAM,iBAAWJ,OAAOD,KAAP,GAAeE,MAA1B;;AAEA;AACA,cAAQT,QAAQiC,QAAQpB,QAAhB,CAAR;AACE;AACA,aAAK,QAAL;AACEA,qBAAWoB,QAAQpB,QAAnB;AACA;;AAEF;AACA,aAAK,UAAL;AACEA,qBAAWoB,QAAQpB,QAAR,CAAiBD,QAAjB,CAAX;AACA;AATJ;;AAYA;AACAO,aAAOQ,qBAAP,CAA6BH,IAA7B;AACD;;AAED;AACA,WAAOO,IAAP;AACD,GA/ID;;AAiJA;;AAEA,MAAIO,YAAYjC,QAAhB;;AAEA,SAAQ,YAAM;AACZ,QAAIkC,kBAAJ;AACA,QAAMC,MAAM,SAANA,GAAM;AAAA,aAAOD,YAAY,KAAnB;AAAA,KAAZ;AACA,WAAO,UAACE,EAAD,EAAsB;AAAA,UAAjBR,OAAiB,uEAAP,EAAO;;AAC3B,UAAIM,SAAJ,EAAe;AACf,UAAMnB,UAAUD,OAAOC,OAAP,IAAkBD,OAAOE,WAAzC;AACA,UAAIoB,OAAO,SAAX,EAAsBvB,SAASwB,IAAT,GAAgBD,EAAhB;AACtBE,aAAO,CAAP,EAAUvB,OAAV;AACAmB,kBAAY,IAAZ;AACAK,iBAAWJ,GAAX,EAAgBP,QAAQpB,QAAR,IAAoB,CAApC;AACA,aAAOyB,UAAUG,EAAV,EAAcR,OAAd,CAAP;AACD,KARD;AASD,GAZM,EAAP;AAaD,CAnMA;;;;;;;ACAM,IAAMY,0BAAS,SAATA,MAAS;AAAA,SAAK/D,SAASuD,aAAT,CAAuBzD,CAAvB,CAAL;AAAA,CAAf;AACA,IAAMkE,gCAAY,SAAZA,SAAY;AAAA,SAAK,GAAGC,KAAH,CAASC,IAAT,CAAclE,SAASmE,gBAAT,CAA0BrE,CAA1B,CAAd,CAAL;AAAA,CAAlB;AACA,IAAMwC,4BAAU,SAAVA,OAAU;AAAA,SAAMD,OAAOC,OAAP,IAAkBD,OAAOE,WAA/B;AAAA,CAAhB;AACA,IAAM6B,sCAAe,SAAfA,YAAe,CAACtD,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV;AAAA,SAAgBD,KAAK,CAACF,IAAIA,IAAIG,CAAJ,GAAQ,CAAb,aAAkBH,CAAlB,EAAuB,CAAvB,IAA2B,CAAhC,IAAqCC,CAArD;AAAA,CAArB;;AAEP;;;AAGA,IAAI,mBAAmBsD,IAAnB,CAAwBC,UAAUC,QAAlC,KAA+C,CAAClC,OAAOmC,QAA3D,EAAqE;AACnExE,WAASyE,IAAT,CAAcC,KAAd,CAAoBC,MAApB,GAA6B,SAA7B;AACD;;AAED;;;;;;AAMA,CAAC,CAAC,YAAM;AACN,MAAMC,KAAKN,UAAUO,SAArB;;AAEA;AACA,MAAMC,kBACJ,MAAMT,IAAN,CAAWC,UAAUC,QAArB,KAAkC,CAACK,GAAGG,KAAH,CAAS,sBAAT,KAAoC,EAArC,EAAyC,CAAzC,KAA+C,EADnF;;AAGA;AACA,MAAMC,oBACJ,CAACJ,GAAGG,KAAH,CAAS,iBAAT,KAA+B,EAAhC,EAAoC,CAApC,IAAyC,EAAzC,IAA+C,CAACH,GAAGG,KAAH,CAAS,kBAAT,KAAgC,EAAjC,EAAqC,CAArC,IAA0C,EAD3F;;AAGA,MAAME,SAAS,GAAGhB,KAAH,CAASC,IAAT,CAAclE,SAASmE,gBAAT,CAA0B,GAA1B,CAAd,CAAf;;AAEA,MAAIW,mBAAmBE,iBAAvB,EAA0C;AACxChF,aAASC,eAAT,CAAyByE,KAAzB,CAA+BQ,aAA/B,GAA+C,QAA/C;AACAD,WAAOE,OAAP,CAAe,cAAM;AACnB,UAAMC,WAAWC,WAAWC,iBAAiBvF,EAAjB,EAAqBqF,QAAhC,CAAjB;AACA,UAAIA,YAAY,EAAhB,EAAoBrF,GAAG2E,KAAH,CAASQ,aAAT,GAAyB,OAAzB;AACrB,KAHD;AAID,GAND,MAMO,IAAIJ,mBAAmB,CAACE,iBAAxB,EAA2C;AAChD;AACAC,WAAOE,OAAP,CAAe,cAAM;AAAA,8BACaG,iBAAiBvF,EAAjB,CADb;AAAA,UACXqF,QADW,qBACXA,QADW;AAAA,UACDG,SADC,qBACDA,SADC;;AAEnB,UAAIA,cAAc,QAAlB,EAA4B;AAC1BxF,WAAG2E,KAAH,CAASQ,aAAT,GAAyBG,WAAWD,QAAX,KAAwB,EAAxB,GAA6B,OAA7B,GAAuC,QAAhE;AACD;AACF,KALD;AAMD;AACF,CA5BA;;;;;;;;AClBD;;;;AACA;;;;AAEA,IAAMI,OAAO,mBAAO,YAAP,CAAb;AACA,IAAMC,QAAQ,mBAAO,iBAAP,CAAd;AACA,IAAMC,eAAe,WAArB;;AAEA,IAAMC,SAAS,SAATA,MAAS;AAAA,SAAM,CAACH,IAAD,EAAOC,KAAP,EAAcN,OAAd,CAAsB;AAAA,WAAMpF,GAAG6F,SAAH,CAAaD,MAAb,CAAoBD,YAApB,CAAN;AAAA,GAAtB,CAAN;AAAA,CAAf;;AAEAF,KAAKK,gBAAL,CAAsB,OAAtB,EAA+BF,MAA/B;;AAEAF,MAAMI,gBAAN,CAAuB,OAAvB,EAAgC,aAAK;AACnC/B,aAAW6B,MAAX,EAAmB,EAAnB;AACA,MAAItG,EAAE6D,MAAF,CAAS0C,SAAT,CAAmB1F,QAAnB,CAA4B,eAA5B,CAAJ,EAAkD;AAChDb,MAAEyG,cAAF;AACA,wBAAKzG,EAAE6D,MAAF,CAAS6C,YAAT,CAAsB,MAAtB,CAAL,EAAoC;AAClChE,gBAAU,GADwB;AAElCJ,cAAQU,OAAO2D,UAAP,IAAqB,GAArB,GAA2B,CAAC,EAA5B,GAAiC,CAAC,EAFR;AAGlCpE;AAHkC,KAApC;AAKD;AACF,CAVD;;AAYA5B,SAAS6F,gBAAT,CAA0B,OAA1B,EAAmC,aAAK;AACtC,MACE,CAACxG,EAAE6D,MAAF,CAASrD,OAAT,CAAiB,iBAAjB,CAAD,IACA,CAACR,EAAE6D,MAAF,CAASrD,OAAT,CAAiB,YAAjB,CADD,IAEA4F,MAAMG,SAAN,CAAgB1F,QAAhB,CAAyBwF,YAAzB,CAHF,EAIE;AACAC;AACD;AACF,CARD;;kBAUe,EAAEA,cAAF;;;;ACjCf;;;;AACA;;;;AAEA,IAAMM,kBAAkB,mBAAO,qBAAP,CAAxB;;AAEA5D,OAAOwD,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACtCI,kBAAgBL,SAAhB,CAA0B,wBAAY,GAAZ,GAAkB,KAAlB,GAA0B,QAApD,EAA8D,YAA9D;AACD,CAFD;AAGAK,gBAAgBC,OAAhB,GAA0B,YAAM;AAC9B,sBAAK,SAAL,EAAgB;AACdnE,cAAU,GADI;AAEdH;AAFc,GAAhB;AAID,CALD;;;;ACPA;;AACA;;AAGA;;AACA;;AAGA;;AAGA;;;;AACA","file":"f06fd0495a34430f242f7611190395d6.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file diff --git a/docs/410f94d6c61e5beb62212a28c82ecef3.png b/docs/410f94d6c61e5beb62212a28c82ecef3.png deleted file mode 100644 index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2628 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 diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index f88569c04..39f493b20 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],16:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],11:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":15,"../deps/utils":16}],13:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":15,"../deps/utils":16}],7:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":12,"./components/Menu":11,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/719042b6d7879d0a403a9eaac2211738.css b/docs/719042b6d7879d0a403a9eaac2211738.css deleted file mode 100644 index 132a1d653..000000000 --- a/docs/719042b6d7879d0a403a9eaac2211738.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/719042b6d7879d0a403a9eaac2211738.js b/docs/719042b6d7879d0a403a9eaac2211738.js deleted file mode 100644 index 8ac58ff14..000000000 --- a/docs/719042b6d7879d0a403a9eaac2211738.js +++ /dev/null @@ -1,19 +0,0 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],14:[function(require,module,exports) { -var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],19:[function(require,module,exports) { -var global = (1,eval)("this"); -var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],20:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],15:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":19,"../deps/utils":20}],16:[function(require,module,exports) { -"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":19,"../deps/utils":20}],8:[function(require,module,exports) { -"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":14,"./components/Menu":15,"./components/BackToTopButton":16}]},{},[8]) \ No newline at end of file diff --git a/docs/ac46b6c579212c73b4f2afaa428f354c.png b/docs/ac46b6c579212c73b4f2afaa428f354c.png deleted file mode 100644 index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35911 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 diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a98fbaab43b95ae0ab62aca9a8e5ba682a59bf12 GIT binary patch literal 1150 zcmbW1%Wo4`6vn3#yDmU1P`hKvvfUu@4^%44N>yPARZ9d?76pk%5`%$|mx&1>%EN~6 zPLn8v0xFM)K$_NpU_@T>c$^7w0wjKrhtt?*Jofy0=h}m^?u^d4XYSnZJKw!?&M3+k z;@+}F5q`T;wns6%c99=;V4~&d|pPOu^?@=XSjH}5}(IS zM}wOS?h1U3bwsCCxyD)RU@gm%;hpO~fjvn?y+?Yzk9_tzR`wd^S`Xo1kKn9e;Ex`; z)+!W=T&1zwe~I7yUUCeP%+|A*tRk7HWHEY}1@$1Lsv!5L)b!|1R|#9xJoWm8%$sI} zaOy14l$ZJC1~N3$T(g^Q-;d-o=Sa;R0^=b~LPzYwoaC^b-&0K}GKkJKv`ia%x|#V* z6SE)d_+jT)JifP|?5BE`7F?ubM_EmdlTI5Fzp|9TSAT{D#t41tMKf-rrrY_z6}r0i zQTFX-0>LA!WIZGjXIV)c!&tvt%3VNLC%N6>CC&_?>=S{1K*Z=~%D77H&)-n}-Pepn z+{Ck9VypE;=Z-U{HuYL8lUfG 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +    30 Seconds of CSS        

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    
    From df9d010d19f0c7f0adcab51b056658889d550f10 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Tobias=20Ljungstr=C3=B6m?= 
    Date: Tue, 27 Feb 2018 09:44:44 +0100
    Subject: [PATCH 027/561] Add caveat to Pretty Text Underline
    
    The caveat described is visible in Firefox, at least.
    ---
     snippets/pretty-text-underline.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md
    index 3f3012ce5..6dd6c6557 100644
    --- a/snippets/pretty-text-underline.md
    +++ b/snippets/pretty-text-underline.md
    @@ -69,7 +69,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control
     
     #### Browser support
     
    -✅ No caveats.
    +⚠️ When selecting the text some browsers will also select the text shadow, making the text look very heavy.
     
     * https://caniuse.com/#feat=css-textshadow
     * https://caniuse.com/#feat=css-gradients
    
    From 6d23e97baad4a503b752cb8b660ef34bfccb4f42 Mon Sep 17 00:00:00 2001
    From: atomiks 
    Date: Tue, 27 Feb 2018 18:45:26 +1000
    Subject: [PATCH 028/561] Add constant-width-to-height-ratio snippet
    
    ---
     index.html                                 | 35 +++++++++++++++++
     snippets/constant-width-to-height-ratio.md | 45 ++++++++++++++++++++++
     2 files changed, 80 insertions(+)
     create mode 100644 snippets/constant-width-to-height-ratio.md
    
    diff --git a/index.html b/index.html
    index 84106a7fd..da9624dbc 100644
    --- a/index.html
    +++ b/index.html
    @@ -17,6 +17,7 @@
           
           
                 

    ✅ No caveats.

    +
    +

    Constant width to height ratio

    +

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    +

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +
    +

    CSS

    .constant-width-to-height-ratio {
    +  background: #333;
    +  width: 50%;
    +  padding-top: 50%;
    +}
    +
    +

    Demo

    +

    Resize your browser window to see the proportion of the element remain the same.

    +
    +
    +
    + +

    Explanation

    +

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its width, i.e. 50% means the height + will be 50% of the element's width. This allows its proportion to remain constant.

    +

    Browser support

    +
    +
    + 99+% +
    +
    +

    ⚠️ padding-top pushes any content within the element to the bottom.

    +

    Custom text selection

    Changes the styling of text selection.

    diff --git a/snippets/constant-width-to-height-ratio.md b/snippets/constant-width-to-height-ratio.md new file mode 100644 index 000000000..fb2eb53e9 --- /dev/null +++ b/snippets/constant-width-to-height-ratio.md @@ -0,0 +1,45 @@ +### Constant width to height ratio + +Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion +(i.e., its width to height ratio remains constant). + +#### HTML + +```html +
    +``` + +#### CSS + +```css +.constant-width-to-height-ratio { + background: #333; + width: 50%; + padding-top: 50%; +} +``` + +#### Demo + +Resize your browser window to see the proportion of the element remain the same. + +
    +
    +
    + + + +#### Explanation + +`padding-top` and `padding-bottom` can be used as an alternative to `height` such that the percentage value +causes an element's height to become a percentage of its width, i.e. `50%` means the height will be 50% of the element's width. This allows its proportion to remain constant. + +#### Browser support + +⚠️ `padding-top` pushes any content within the element to the bottom. From 06e7239de44bd00a83b4c34957244f0ade39f064 Mon Sep 17 00:00:00 2001 From: atomiks Date: Tue, 27 Feb 2018 19:01:03 +1000 Subject: [PATCH 029/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 6 +++--- docs/index.html | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 39f493b20..8ac739f4b 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,6 +1,6 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { @@ -16,4 +16,4 @@ var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iter "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 301567a88..76a730895 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +    30 Seconds of CSS        

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -11,7 +11,13 @@
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Custom text selection

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    CSS

    .constant-width-to-height-ratio {
    +  background: #333;
    +  width: 50%;
    +  padding-top: 50%;
    +}
    +

    Demo

    Resize your browser window to see the proportion of the element remain the same.

    Explanation

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its width, i.e. 50% means the height will be 50% of the element's width. This allows its proportion to remain constant.

    Browser support

    99+%

    ⚠️ padding-top pushes any content within the element to the bottom.

    Custom text selection

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
     

    CSS

    .custom-text-selection::selection {
       background: red;
       color: white;
    
    From cfd8c77b058ea00724261b986b28e998975f1e3a Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Tobias=20Ljungstr=C3=B6m?= 
    Date: Tue, 27 Feb 2018 13:38:45 +0100
    Subject: [PATCH 030/561] Add firefox vendor prefix code and warning
    
    ---
     snippets/pretty-text-underline.md | 11 ++++++++++-
     1 file changed, 10 insertions(+), 1 deletion(-)
    
    diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md
    index 6dd6c6557..e1a45c062 100644
    --- a/snippets/pretty-text-underline.md
    +++ b/snippets/pretty-text-underline.md
    @@ -24,6 +24,10 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control
       background-repeat: repeat-x;
       background-size: 1px 1px;
     }
    +.pretty-text-underline::-moz-selection {
    +  background-color: rgba(0, 150, 255, 0.3);
    +  text-shadow: none;
    +}
     .pretty-text-underline::selection {
       background-color: rgba(0, 150, 255, 0.3);
       text-shadow: none;
    @@ -50,6 +54,11 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control
       background-size: 1px 1px;
     }
     
    +.snippet-demo__pretty-text-underline::-moz-selection {
    +  background-color: rgba(0, 150, 255, 0.3);
    +  text-shadow: none;
    +}
    +
     .snippet-demo__pretty-text-underline::selection {
       background-color: rgba(0, 150, 255, 0.3);
       text-shadow: none;
    @@ -69,7 +78,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control
     
     #### Browser support
     
    -⚠️ When selecting the text some browsers will also select the text shadow, making the text look very heavy.
    +⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.
     
     * https://caniuse.com/#feat=css-textshadow
     * https://caniuse.com/#feat=css-gradients
    
    From 37a4bc19fb40eecb74dad4c9e632b4cbccf76a60 Mon Sep 17 00:00:00 2001
    From: Limon Monte 
    Date: Tue, 27 Feb 2018 15:19:27 +0200
    Subject: [PATCH 031/561] Fix ellipsis character
    
    ---
     snippets/truncate-text.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/snippets/truncate-text.md b/snippets/truncate-text.md
    index 653432f7a..58f4db15d 100644
    --- a/snippets/truncate-text.md
    +++ b/snippets/truncate-text.md
    @@ -1,6 +1,6 @@
     ### Truncate text
     
    -If the text is longer than one line, it will be truncated and end with an ellipsis `...`.
    +If the text is longer than one line, it will be truncated and end with an ellipsis `…`.
     
     #### HTML
     
    
    From 0bf47bf69aa7c53ebafd0f2658e5839ae8e0cc00 Mon Sep 17 00:00:00 2001
    From: Angelos Chalaris 
    Date: Tue, 27 Feb 2018 17:32:35 +0200
    Subject: [PATCH 032/561] Add donut-spinner snippet
    
    ---
     docs/464d45b6c0aa745a9d68e563688b3354.png | Bin 0 -> 2628 bytes
     docs/6a92da93c8b31945626bd085895f2309.png | Bin 0 -> 35911 bytes
     docs/a4a44c59f0a5b432531e0c4e83a00cf4.css |   9 ++++
     docs/a4a44c59f0a5b432531e0c4e83a00cf4.js  |  19 +++++++
     docs/index.html                           |  20 +++++--
     index.html                                |  61 ++++++++++++++++++++++
     snippets/donut-spinner.md                 |  61 ++++++++++++++++++++++
     7 files changed, 167 insertions(+), 3 deletions(-)
     create mode 100644 docs/464d45b6c0aa745a9d68e563688b3354.png
     create mode 100644 docs/6a92da93c8b31945626bd085895f2309.png
     create mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.css
     create mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.js
     create mode 100644 snippets/donut-spinner.md
    
    diff --git a/docs/464d45b6c0aa745a9d68e563688b3354.png b/docs/464d45b6c0aa745a9d68e563688b3354.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a
    GIT binary patch
    literal 2628
    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
    
    literal 0
    HcmV?d00001
    
    diff --git a/docs/6a92da93c8b31945626bd085895f2309.png b/docs/6a92da93c8b31945626bd085895f2309.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12
    GIT binary patch
    literal 35911
    zcmb?>=|5Ee`~R64`@SS(8B$rw(q?BSvJ^#8D#b|BqQ+MCIb&CdC{!3FsdoyIC1u90
    z?35)j_9Zf7oiWQf-}(IhhTn~I$;xHbv`pMb+)MHMs>kJgm>aaXlsq$I8?8R8TJ(|xo{
    z1q(3sv9<9Q3U}YVHlc^$c6&62FSnh`;ghx!KEGR@fz`iaW(33r?0Tc}pTYQ9;cay4
    zX)9I338_oC3`cQ7<0bRdhOEE6zzv~{r3pq$1yf|xK>M#`NvkW@skK@a5I;7BW&y1@
    zVL~)Y!{}{8cBnwqQD8_AYn?ufp6Q~Pa^!xh(}V=cS4}=i|L-$0vlAgr-oq)Z0*MN@
    z?ujd6zj%jJn{?`fA}!Is6qfeGe>thDyND9v$Eu1V!$=^;@RiA1)UMmJ?QK%x#00g$
    zM6$d`i*$~0kYaI}pu01%C?{>C{o8|!Myq>v?nW!oEhKiw*(=wZYPB2)9^!qRW6tqD
    zlVsp1|EXNq!9ZRTx95;Iv(|3sr^m7Uq3Aki!GUh%4u=?+qj0-baDnt1Wze+y{E}tyuR&oOM7htKaXdocpX{`5NfqMcOhj%
    zPnqbI^hFU!OT>M7`ZvJ(+ST|pH1mp;bl~Hg??x@qsMSL!BO^!s5n&4>{2KJC7YMqS
    zkfp;WZQMOcL;<}_QQjzX^(7S|LS=n%km&yHthVp@?M|tOH
    z!%elPDV4k0@-Hq8n_Mn-HQA~;*`|8--*D7^q;FAkB0;`lCVZNa4d{T6Gh{cH6bz^y
    ztSP6p?o1OT9Q?9vfK+@Nc#zLS0()3sFB@=dqpFT8&|ZefD{oZZJ`*7}^ymGV2*ota
    z>?&S)>y|`KbZw0P`wpSPkLMIVf9M`WAJo^2XxdObI!(rm5{1*AAGJY07k!+W5PMh0
    zUs&#gl`*ZV6s`wRPiT*k$r0#my*?sQ@(nI&y^^IMFvpA9|@OE>!p>wHLFT
    zC!C&t?rDOidN)q{lSHz}-y4*Bt~+c5j_>G`4gj(bY6ziXHSTIXG$tN0C5j#r5=)OO
    zJFzAHDcDd(CL{fIMexpyU~n;5^BR?Lnie(x;bXN
    zsEW8d*6+WS9X?6bonyJQ7vy5;_)t;8dG_Sv2e%yh
    z&i~5Ly)d3J=01{PyrB9>Hig}Utk#2tSFOL&+zl0EF
    zYp}}}Q-JA&erbus-d^G@|3vuLU{;>0Yp-mF59ei9EA_@m%m8`ZfFa+_p8f-BrjQ;}
    zBr3)NU*x!%6&7HU5BHF*ZUQ2p`9F2H2IlPp(vX7@vm0A<;d&xHup;;bx8&3sze&RF
    z>?6Ky!Tq!!+E?ES?OiJ|o=ZZ7a*d2#bl2Fws%nmFy>g|RJN
    zBaltkMR0YmNt{GTcYVj1zaL|LUir%V1Je_LguAA}yY~NR-~&|^KMrk&WYU+NN(9Ox
    z_3EO(XZRPo+t6RUD?8-bHv^W6F}M2F5P6KXb16tP7-=!fmy0ymC`RE{dn70VJx74n
    zo+G$t7j9)C6u&%1NhLQoqF7(}yGFX?x<=ehCr_@+?tVhiTYai5F~QN0C_)7;m
    zt6TOrw89>JZbu$S`O)uWb#H2n9QeC>Sg{_rYeE+N2!~cim;y&4)m0>LL6AMAfSXw6
    z**`37AV)kranmVF)E02~$G3B2!L!Oky`3}XxAb*xd8@W-q+Er=UbiX#uh}B8`oUd0
    zWy;GSgYy@Z{HYZUZ;AHQ+{o0>xsNSQjDuR
    z{e%2Ez*KEntOWnbTB~Q0&u@8|Z8k4|gDbq~h^kc}VwJC=z{GfaL7in_?m=Kj
    ztu6Il(DMp*^Qc*9_qBTuRNlClwj=(RyK5`u4)`}C`h=k~vYvNWpFY6(aRy}*^wW{{
    zpHR4O5|bDaaFs538r%h)&Sf@QTOO8`uYTF09Yw|RKK1phlj|kpxEZkWqh9>U1
    z;W_^A7J+<5r|>_*gDJEtk^!Lh`$?Y^wrgT9Hv_y26Q4|u3fDAJ%gl2(8j@Fiv*)JX
    zlku_g0h5xLY7};X{Kp@-@fi0KU;fUZUvaHXn)uAeL{OUY)54+gA_<;523zQTofAAJ
    zq2_q|N0kHA_VZ22>w});FGoJesx;hMT_KySxvdE}
    znx?4vuCr9NWrn?hCiI7$xLN_Uzpt;SPj7?K$ygG1Zj)Kzus(o+g|&&38>EZ3zBiy9
    z5;?un{H{4R?eP4AK+ui;)2O2BfLS#BmFC2+IG(BRbTfocU&thSBm+$&>ivw}y`w=|
    zFnwNM9=1Z5|BjZJxNy*suaQpvUinao73CtzdSZe{o(>F
    zS#nd&5L$fo*P@#DS2UhLv#uVqWng+X@gcxIbLx}Nr*HkZn|zI(g19JBgS5VtWD`0SnnS!~xgu##&m@ReALQ30a+dQR;kmk}1z
    z2p(k(V+Uuxw+lP&aEZ&M95;#0bl|9PAKs8s*R)f{KI+DXA$t5tRn)F@4WX%|+n$r|VLhS*8DQqRO#J%9NdP@C&~UCAFcwG*;U*S%0uwjLhkXn*5|h
    zkg2~npgS3ohLPEM``-m!YtR%?A=WHUTo!U(^~^Qk)M{~R7v$&mDN_!t%gi|TMQjbn
    zi2obTmycJ!Js0;~Pz>W(rcqXZ?DB;v+Tz~5!4iWi0YJQk&=)5@EcETTpntByV*|o#
    zAR{4x+P(vL42Tf>Z*p=s%s87DymV3=!NKw2uo&{wF($
    zIg6}h^-B-KsE#T_c
    zblDqE35f)P>jU=^hWsSor>*zxc94#iZjK)Ef^Pj;9u>3uxi1j(%Cqe`re=&djxY#U
    zGS`FweeUv+x^#GSA&OPpMA*rW{5{Gnvi@lJK6JIslpMBL{DZZ|_tYTV6rps#uAX=p
    z7GmrVWxWW@U6Ux#L*sMNXCQ-J(c3I;J
    z3P&YbV_$UbYqB9JUFKNtQfu;6Pd`lzg6|{!*vHPl$s$}hzYovd{#$ynkxpvG|L7B_
    zEO*a7zThNiVC^_uu9dsG*db#0aX)y^E+<9{7Zaw+3OzX3-;FD**Vma0*+7=N#pQBV
    zQ~ieFiSqH)t7Wt;@&{Q#5IQZkLp{a>(@(TbU=6R&?;s9EZT=%*@_^mZc?yW}AEMa7
    zzV$Yyz5s#K)$931e5?agQu@gwwgtUkQT)Pn1@4Eql9-v^os;t&5;B#s$jXLq-tl^L^4eJ8?BXjmX+Z!*z%)9s)*
    zw!RdPXfpa`zImb%;o3Nn{Yn&a?YgaFl0%Hyw%Ln6c!I6QdHM8C7^@?5gXrSV
    z?s*D2!FzWj?gRIq&%ASLGIB&20-XSkE*M5$y+;jQEq-_PGul-#k!46ws=vrL_KqkR
    z&6i5LLOj0EGXk5mGkhE9n<|Sgy2THCKP^sPNHHxo_83Ycy?wqj7j_p>;@pUXy$|q+
    z*R+w>YsCO!_N>&n#|#ak*|dKjODvSFagS4W)M-FmR^R2ve8(Xz63G_-d`IF&z!@%)
    z8)b%sI$4GjQ=XRv0SU&KfMX?F<~I3u4$^=osCe%*OWK2T;sB?aLr#u(ByiRU#?fc?
    zHa!EB$l~LtfkzYkLEF03DjSU1)^W-2^l1)w;F_W+IA}NdvpOXOtWnTONb<5O8Dw0v
    zIZd|Iv^xFKJXe`A#0#y+#*~Op8oaS2smFCTJS>N0;-y%HYm%{T6sNDtvQ%Y`*Qis!
    zEq*McxZZy$?I~d=kSCxvUmD+6*pJrd@Hyya`}d%SqMGPMhmmC{gUg%z8jK!4P9sm_
    zKSMgkqjIiBosIITSsNV9l%^a7S>8EGRi26|)Yk4ys;$0CF)U=TjNMg08tK0%gkjX%w`IMHQiXN`E7DsqP5z+j#+utX&KR;%
    zbsnuJgW6co$_3HNiZw3^a5qIWsc{(P(VJnJ_#^SXfqvWz;ogB3I-8D6xP%E{C-
    z-b|cACr2+c+~;O(3oego|2U1{H`Um)ueWgr
    z@D0r6>?SN!bQdu6zxR12!npl=bl`5rMZS$@^x2rB5P@GCn|e>4Ev5`yd)m-N4yAft
    zox|vG4swh{bqj@na1$fge^T?;xw}!GiX^5V_u}(#
    z1+Z|FOVI|b;f*(*JD{qd(bC!LOIeoOi`#aiJtaPyB>E?(tN$23T$%W+V_&-Fcc}T$
    zFGJs5NYxOZ3nG_UVY2DF=;BG4(DmYE)USv}Wz6y^SZtQ>6M>^xcE7+KaGdxR)3d~v
    zT6_|QO*jrKt5Sm)`Q@OJww=GL^i}|VJlXb&o-X|gF+CQuV-gtO=UsYZy5DK39X`04
    zSO=xw=gW8y1=|Z6(<=u24zIrPlz_`5h~waHxVSsf@-~xCVJIrIc@W*n7Og~tEhat&
    z-g6(kAO=kdsd;R9)$qlgp0JTe+@Z%L=s$49$>5=eg|@vq@N}1gD{QBd!&`fA^xXYKLWDi@fvtOkBv+AU(g!kVuqi?yOR;Ylfvxm@xj
    z14%hwkdzH7%&`vxqS1cb2Q_rxH;u!^6oe27N{}bYOxG8h2*vHd@f}kk#$yv9!^p)f
    zM-NpaZnd*9@(TPpCvdx601qH$QiGA*AbKK!TPOvg61g$|FiR+|iW0ej
    zktzO6Ia-BCZjnqb%U(L(-eBDKZ*zr@^&ma={X=^cVOE!%!`Fj4p~&-!^`b}VzG+L(gz?66)FY7|>w8N$w5nA*cLL?E
    zF%W%(cm{u@KZgjd6in0saj5AM_MKh#!|2z&-rFqt-Eqo%+yz{T3NP$h^7_{iU8;!=i@
    zW~jxCe)fqU!X;6!)XfeSk9}==Nzh6kn@SlfM1>~5m3xWZN*V|~dqXTwRKy|IY@
    zE=$6#kc?mjs3#%vd*Dth!Y=qoJ|{tfcn70Ie(l6lB0iMUz!(wLgz@gB$v;BAc9-ym
    z@Rxz(@)QYR5;~l2g~@*G4*p1>?ZDdVUoqdu+OES}8=epDVgI~1?qHiZ{?`E?7KtfF
    zEqv@Hmx#Y4{2eE!Ke9saCI-)X;(n*K_LPAxRw7lL67QL8Be-DbZ0jU=8AZJ8W!-bY
    zhV!TTv1$+Ge%^mk^K_I$HL6db`5k5;;{#Ty-YN2!Aa0tJ@BrhWWElh|z!|+3sEMyU
    z@^3l&GR>f$N43983K|I2O!d&Iwe^JnIJ&TxUko~73`nz{TZ)h9KeQLMovnPi?%^ac
    zk&^4;tUvcn=iLCDbz`yktDUt%W@7Knc2Y-M`>Vf$)Q>L6Rw
    zdFUo{wcp8=F(zz(j-#^W{)yfek3IlB3(SY?5mWxuGNxb+Uvul-JmwR@=}91$T}acH
    zS{qfT|0q?7DJ#eLPS1aLGHI6}+F<5jl*|XreS`wPxn8~$SB*WaNSw1%`qVR1S?JQT
    zrF{R$mEfg^EtK%S!#x;J0Wkl@OId?Mgb<*N26|qdNTk>5OUrNLI4@)!Fh)o{c%lXU
    z!%a;QLH}JkahtpjQGM4^WF?sSkY+gUY
    z@P#}RNG9U;Lx>sTRhNgHbIc?#Nw#Q=)WA$R)
    zO`VljV=q00$9G#r|H-IO34N6kacaL2v}Z7?T(nFwgAElOW~2>)<@0Iy=tYbZbTLGQ
    z=s)FT+Qg%OlN+9LPN2(EE#&Ws=|OZVx)$R^2;mEzYU9Vse&9B?q9^YH?okRHFB+*;
    zV&B>4!e?fwGQS9uhMre}Bz~+z0&MNYv~~nv1A}|T%O)$<(1~!u8LTI~d}d(uYzpBu
    z!KOO*W&>S$tMa(=y|;N3Kw9Kl{=#Do=Da)fYxPTM=vc@UGMzZ-uvX-0i;P@tE1PXIgL1br
    zgKK)WK{xKmx)CpFe5HFoSSG^PBd;R;QxsdYDb0tiC&8Y9QXBAtDpFW3{CzgpDA1UW}r*FPA
    z*iuhIUZ88-MTwXJxmzWujrijW`d50HO6S`Vl>>XmNdr}PX)?5(q4Jls(lvQ)Np=>f
    z`aH2AKg!n5@FoAVM%AbZxy^zBg@V5XI%
    zpiu9{hvRgOg1w7kIc!Yq7McxnFK`?b2%Zc6K)LH4wQ0#LYWGcVqn$TA$>y%7aaScY
    z>Hgh!DYdCQ)J=|BX1CoY+g$AvR6!*Y7XU-eK|<-_aV||3!yQK#5}%gv`wMA#Ee~^I
    z2T0!J%UjgKQC{FDVcZqW40zewE_c=)>TsZ~R@i
    zXHK&o-nUaTT)?oalnuA`ojFI5cr+jpk7D|DXW<&$FZnE6T;s@{Mhr7Tevu|IR8IAy
    zojh$I?aA<|!Iy2e(Yr9md0IM$R(ib@?Ke6Hj>bVGAujE*scvr6uhh~{(XyDx6AQoClk{HbxtgXwxDsM20hNq6
    zN&fm#wrG+|AqBlbVD7Kb?vP{LK(CEOH-hdYuxEO{UIEd|bl+1xt4a9lUdErJX2Bp4
    z{+f-k=esfHtcIOxDWpRLAgfA$mktb}(Gic`}Z;1|xM;_u(p{E}n
    z3RylMnCsr@VgoESS4*DTx?=`rdc=Z{;89br+de;YJM
    zsR{dHTYn!c6KcN#U*@PQ&U1c-jSY#-@u`8`R%&|NVwI~(B<8~QH2Yw${3oMaEItmF
    z{MXTVE{!2kOqlAAS)Qy6(i4^Z<#X)O#NNJdNllEXDXV}j^}HROwHS+`SNw|MAcoO(
    z6c>P?<8G5XPul_yeCyQ@u9NPfWOz(jjF?1X@eDDi>oVTt6@Xc36giPu3jG#tmW;wO
    zib$bs{TzuxUklu&R{{njjwf_EGygE>Vco*rxbVf|qI;Db+rSY)8cXA+CJM*t8oI{!512QNOf?_y_-6o0=tA_NdR?Ml)zxp{nspNzg;M5t<9@GWjO=<$#4L-=#Oow0a94!W%
    zsX{!Xu+hLF?-?RU+akVh&gYX?-=TZh(?6?M@Rh)0femkQVyom`Wecrb`b+&e!^ps;
    z+!Oy!Q~nIdQDrV?PCuBf-m%PgsY1U7CVfFD%yVtOOr&635O>*=-$3w14XY;xok%pN
    zdru8uzOmlx^a;%ThxgzFyws1Pksbr7q^IykhU6oTOd?B*Z=XAOnLUf&iIR=r*_g`l
    zuc#Ly3;FG*(|FwtC~0f49N(V50`iPc8opTV>{IYO=i-J#F#>ZyN%_&g2Mnq8!i`C@
    z|AZ@xk&_Kyeyi2mtua5&@aggR^~xIfp*LpY=eK3Jg4UDE14!Owqp(K^roi-967Q~8
    zHCMPA{8D$+dzZCx7MI`QpZmXF~R1r+xW=Cf~lE;`)14&}&+$2(9k5
    zo3=!OMNG}j9||VX&+lu}DfPb#g0X?WO6xLY6?Cl-l@CJZwFL6#wJ5jAQY_RTu6)f_
    z$9^)=9SmCw>hF=}C1F^Hekp5emL&Ieout4y!6OU}l1ugJBDi5eR%CnN9QFQ^W?l^xsLQ!J7dIh!@T>BX^MhH
    z6`-Ikk~A@3mc);-+?w14=)i+_Hd?nWbDHIF%IsO*JUQ~DX-r?%jcqR!j}pZwXW;-m
    z=b*|&qhwPTd1bw=3G
    zW$e}xDJ$WIx%neQ9y+UK&-(*t--R9t-t5DG5mJxOYwdmnlyWY$W`il#AmuMPiNsF0
    z*4?v2c9;Z!aQFtQpZ+ppEiDSJnNKrRYmDNWkI?2fJsoyof(VIl@3a|wUx1Q;wgaHr
    zCc-!;*^b~c6m<&B__{s+AGzpW^ixk`uA;QFrASiVu?Pfh<@rdh3Z?iXS({UJD=T$e
    zKwp{vLiUp#N-ce*zJk5e@H?}09J%9filj@qsmuFUNe=urK54je~Y~$?T?U0g|
    zbDmCUc&T^6%11cHHUp>Q^+G}I1@W;=hLn|l4&~_{DIs^OlZ{WY7d|2GR^E$bcbfIQ
    zCLN}F&wVpA>OlA8t`kZ*Zw_~j7Asd$ML0+;jIH={@d%_ulTLtg4OyglXQ9^rz>2YRC1>HAZ&!S#IDeRrA*
    z)eoNi?5WDO&m_z#iWu|ZkOnv5yiOgWbOLXHShwAF0=q87+3&S_2JYF%X>WUp9*Dva
    z0yF7kZkg;4x;wt)2TBiA^mT2JZ?zI;a-ZJ0C>-gim1+~n)|~Fl*X8x~W>(=G3C)e`O)U33k5~{F>J${}rXOC+
    zZnDx-<13>poh#_M9O*t12B%F?!<+TMh~p-c4?BJg%Rk``!5&EbH7}ytLR}oWR448r
    zd1XoV{-5(tDJg_Kd?8DT^8TO4pwogA>nGOIK9HMTqC;q4;9t=q%S)gyTYQ||bCOWP
    zmX#vtaV7?-Y;~sSV^Jc~UNUOq6I=fbQj6Pi1;nOBmypBGh?vjA6|rbnK6{}57e166K92l@TH&^&GtVM{=VaMjz?q;8}mu;?Z8%mIk+OxG3D`Ta;y
    zcB#&$dyJ_s9sI`KS)?qrb*m+=V88<1c}|FGe5-ec&_9
    z>D5e&D%;Y3t_;sCmWFP)JQ*d3?Snci#@z55EL8WF_hK<(vbZ2f5U@rHf70foa*P{}
    z5+aj#QiZXrV`mHasUk0RP<{0x5s0Uc2$QR*>Z5xN-km|1k9@(pW)TE0as~74n$niw
    z+Fy1O#9Ba;{daWLQtntTGj`V3zN`_O+jEC3@RV17ijK%#4CXh59qnUaQ%pAtL*q(+
    z1)9HOJlID`PTa12X#`mD4D-%x9uoyx;5o4(Ih>^x7CGxSIfJht%smqLh>;{XV&Cb{
    zAfQUNWJ7fa&Bz+rlx0~T|C5Ur%vU86m5KZw4=LNgv9E9aSE~m1eXTkpe0f+>e}cHc
    z68-K&Ej~5W%gUUOmP9>N^WesRrtyZwCD5lm+w#|;%-fh?SblvF9SC^A7^`Uh%iCQD
    zHIce7t(f2y>RxgUjk<8+2VwEEr^mKWDaHZ(x^a8rXNVtkOhN5dhyHU{z)HAx$6ay|
    zFb<*g)pTOa$A@0r14Zh_cZBZea|aU;bMbO2#!KjL(F(9zgRLjgc^x><*IfGFS*fV=
    z!EJYJgq06Gu|48>^(j)}oBFp+bVt-}u`F1b7SvTuHd9P;hwTLptr+k3%O`koKhF0-o-spTR5v|E$@peUK1
    z=B&qPI7uE%dDp&X&Eyd-EFvk8N*V+A0WC(&@N1b!5%9TKrM$ED$tY*O{lcQA+aki>
    z5HE{&_ty0%dxUT6Ei*wT{;$ZC%h6*si3e
    zI71y4#G0iZN+tF4+fCWvZO!M^E%G))ya}x?J%=%$k!C*Xq^~AoW`QD<{%jPNB<`dZ
    zjN

    hsceMcV5aL#e^4rmVa87+%HP6K3O_;{s|?+cCSJ0rqSLFJAY2LHD-G)&0q=5 zh8kQHHxTU`qRWu?fRhKZvO|A-C%PI^#eH?sC+d=yxq_cHDH2#wb3r2CdI|S%D_JG@ zV}SepS-~7@ALp}4|dMVE?9>~@ZdSWWCH4c{C*58!v6 z)Hr>Edqo)f`8kiTKr0Y%x~~VQPfIeWw9t8UfhI*p%^~UltUFzTq1?ngVn1(vhcN_v zD&X&pY2&Y_C5@nfC93^-LVO+g{R{2cW#;!QAVrK4gEyjneRqXGv2v;=ea8w}S|Ie; zM~aZWN*3_Q2I-g$mRD6%90`SWJ0IdnU^Mb3_ZjoBfoOpdpC?|2sKfL=wG?7adzj3p z9qr}rE*x2oc8kA%%M~bf)tg}4&d?yKiy83#!g=av`0GlKE_Q#$9J+*kX!Dn679=zS zXfYjXwqD%D+_(YHev%Zb3;PKT{PNrxx&lm;U?QMr+rCSsOPqqQoQ_dK74!&>S~R-I zc&f|I$@;e~C^z*PO|Mzk$1N6zUFWt1t+wqmCmQn|9|8x?0UCp>F_be^>b~%yI>=N# znoo&~cv?(%7`B-dx2Gr93%`G807fV((XMY+j!2Bs3Pzr2 zJSWeeHUiR1HbpC0%3G5{2K=gepgDb!d~n-tNiwu4P5Um?#De>GbYO-BI*ZU}h4MGn z&GcB6pXZms=Rju!a2=7eCHqS$*fg84)~<<%6a)V1V>Y`!lD~@~V&o|^q-Z95HVaB| zq@TLD=B-^;D0NvTco1_Q$epR!Ep!m{rQ4OA#UguM%gPvv;Z18zvTxNJ-_Db?&LNV1 zE4_84eYk&d!QkbQtImbU(0At1)PiMsL4u>SKpDdRr@0iKJ0OZ{Oj9S)I1OCStYEHU zJ2XFCA2OYq>3M^DRE;x?!gi2I?73CRvqIo+R!0OJ>Mdj+lO{#{2JsgBQir!*Jb`)< zTDJ`ND9xk}!oqfs8{x|LVT=goST-hz@l2?)myLg;K235(D$G~>bDNM#r|KaZS!SBp zCC_*9p7^L(O`MNG#BJ^9ASF4shZ9d- zWF@{A#80EzdK=V3ERlDP#E)_YN;=0hrIR~R!-S&@n*JBTTmqc&sq9?59X$h5nj0p z$W?79StGx&3azzp_=5hwkjuoW{r`oi&C-?nvhRxT^>-$7WgOp&h~{(DO3s1J zXW)Ta7D`f0m23YO4xqQirJ7y{)+37H2cW-tCDwOLd&pigtu(G+E%+?WKdPe{H8?r*AdrY`bN z^g9V#MDy19kVwDnu#H#|^)KuZwfuJ z`KY-5LGxOsZ#G&TQG6DMlKKK0tj<^Kf<+43N6+sb@hwB8pTPX&p1QOBKBjEK?Y8Hc zcq$ETk4U;Z6JJqP$@4R`QbTWhYtaLR;bbRuLCU5lvJ`H;M|I`93_aU}M92RMQ6(Z3ox&bI7^(;ICuV6>u7td!FxggJ@Yn$SwFT@ZXU*;7tl+Q&$HN z`oZJ|^E3oT?5SfMt*ID%tPmUV5J`f7#2UXtf5kvJ6O!fEQPiqWG#gvtbS$jwpdE{0?h=A4`M%s!^~?^-rbUfjHhlnR#VAP6BYtZTmIyE;a_2uE&_)PatO znYs#Cz#9}L96;@!^le`C?91UMPPpA_?k4{j*pKVvDbIILkI6Ap^NCcs!Z;c}^cFqK z6**+66P7x56xAxN%|arAvM*V=nDAq zc3v8{aZ|oO4}1ggQ>{qBz#&Pga%4Ubr}}dREc(QJHTQVKdx)fUg^T&lPF2Rr5rjE^ z*SPcNm)L(<{~E=eD-Jl8-L!HIqn9JKw@$AhPdiCVulSB_hgDEDghMQNy z0}4$)ZnUPe93qq0E_iJ(rVWyl*-BT~2w7L(@%AM4XH8qPBvagUn24g!B(z_wRndbee^|BvnY4;I44s%GRX~_nq>vzHJ&5{st*I6it#7a)omlTF62AzFh7WQwFLH0J zZdd1Q&R0<{NE{E6`~bCh!6dJ7ag35Lkc0C7L?kpJM9J8O z`D%rw3Ym#&YvQ3FKd_CSWKmbX*s3@g;}2(q|NL5uIFHOO`&HdDF_l)oXNj!*66?sa zkyIlAoz>iN-?BlTTq|Fme}o|hfThv*dDR)Vg~?|HcJ?TNbNrVg2e~%W2Il``d-&4VU&riZhln?M|rZR9kQpp|&oJV(nZz^tbGrz&+Om+XM zv~Tc1c8@oSF7OfRvi9Npweea06y`JY>P5#hi-C@3@WF2>glitpHtLFeL=Hgb=EfK_ zBRVQVo*LiB)B4DP}89x*Voa3!sXw38VuoBknUc5KznOSK3ahe+Xe zjdDvPQ`y|A2^VIIo9R^tt?01SlLcWT(Q%v;x$NuToqpnln1z(Ht*{s>W6(37HP?_9 z;n+vF{-KNE@wj|UI5LGDM%NgJrWO3hH?xhnId(9a5&=3w0gHlE0Y1_Q{Geyd(-Lgi zJ3B^FKJW2uD3J~iBpE3iS1PaORs2ZWHp&t{E99n*Q1}FgCcY5g;U46*FQ~EMjzo`u>YshpmLAR6r}kb^YJxfaHNI;H%cF*WkySMmGFvi_AKd zxd6d$vz8g#uFv^n#ULvoL#s(zDYPt zAKPAi9x=dzeR!J7Mj<_wb9K>|03~|?(z@h#L5RE+jK&;NC+!lb%n7(aOd;!9vbbil zp#Ns-sl9wJ#V$((t72m$^b2&NMb<^D<7Akhop;f*vZ$E_Xe~AA_7w27gE~{v8o}&R z1Ppk518`c061?KgmFE00>&53<&YL;{5BEL5>__Z_4bRc=Ysfu+0_I6!ee~+`8cwn; zdJB57wqWPGTy3_lZ@|WnH|p*AKn|C!+SmdPY!r67F9?UDtj1Oz3B6WekY%a}~bb1Tz0#2=tby&uK?0xZjssfRuinZMKrSR5N zk(Ha(NGUx31U?uxV~(?YEe&|#M)AV!&!Pqy8{Dxu#A#CDk+y?#n)*Lx&~nk*{P{6t zAq}#XGBT!)D*EFcPfYit)Qne$nm&@R2~zwb>mE#E%Q(gx(Zl~o(Upfo^|s+Ni=AwV zkdf>=C6(n&T7@WuQbwt?)AEaA<_sy7ijplc+Gw$r3en6UA!S5avdq|Jo3YM%&iUs1 zYyO(+das%Hect=I@B6u5ut~B;nOV!y&PZEbKyxsx_0<TLm@B7|(*+DOvJ&V^EDGZh3U4=ojzO;5cE~E1qUUh--c-YJMGJ zG!l47uu>B`i^@zX2&#qY0s?x__(YPU^0?nz z0I==y0?{(AMBydIUs|B!>Fdu+UTTCoF=xO85L`4doMG5iNtBWZwy?236m=||u5tpc zgcF0IG10x(j1O|5>tEd<#M?y*?W-mtNw@V4<3`Z2!N&UKi-w^%Hj+(r|`wsXI{z`sY;Vr|j8VT|qO z;+3BescQtA5)9d(u;w!R(}x z_fx4JtR<2ua6qgbD%5^#JMjosPQbhJR!TuUbWzet9pT1(4DX|5p&KNcTzJd?NT=lK zpR92<6rAcQ`65;2mco_hcFXAphkUWSCNH`j!EYJXu^&a|>j{*GAJ7v)(o1(^>}&jn zr87L{4l}&{rrYj&cvm~v>@7VJ_tCe2zSD`=qE`~(pUj$(Mu))kH}W0(eL45z_F>Bs z+Ni8`H?bwNHweE)?}W}Jz}IxrdYIR%%@vz9gW4nWh%#ow)bnz45&CW_m5(Y*#j%{6 z4{)s>amr4y#`)eP{ilnzS{UT76f2L(*ChzY5EC3JhI4!5oY`&*F@+pgT6&aL(s!W$ z+SJRD{V{}JC2U>Ey|raI=K6}Z}UPS%W1*d&|g_BYGpAUS0PnyXhZQrFX?i zEFu3XtC%;rN|W-D_a(7Qc~qsU7Oju)pN8x`vB zG%58kSJ{x~ps(}6dL!Q^k|n*Q8nU2T_A`yVdhLkFPSoQBdcB8*pueZJrDTd*ki@~c zOfoLqF-Ggh+QCM6VlV46^Z`+eHIQT~B6@2JoY3pnV76-FA{)Ou*zd~5VJoS@{cn+T zq_pFbjPQ{PNoqW6j$}4d9!RwXaYYPbJ`fEU-vq{it*O4@V%0Ll0CS=$;$@Zoxb4rM zRA>Fm`}Sk!@EvE5o3zrsw|YROH%Os;LJxV5xZw#S`YS4|C$tFcLZ7RijJURx)a+g{ zDeX54;q0*~Fj8qbW*J3(37ZGxubJ5~#g_Wpa%LI-mQP8tA6X+CBzM(+qItt}W*)RK zuK!qC;Pju-Bl>P9)};|o@^1H0)UIJSVlsrAE}_dWn!#JuQGd<>l%+~(!*P~qXD5<7 z=$dHRWXarQU`CE={eoSm%Nx)jrZMVXgPcxv|hAH z*pX6?KJ%c=R5iF3p+$Gam6OSeQhHeJO8Y_w?F+SHNiTpF0!Sqx8%DG>KhH6G?3Y>j zfk!p$_tf$&s84$Y;qv#$v)G%Qp;3l;8G7I*ja|`Q?mt&%<~MMNSS<`!9B|%b3$B$Q zF>inkSmns!z-lk@b@wB7r`LwInk8n;cN7-&Qy(U{oY&q(ROIL+0@kq9NoCPTo|V0k z>jbq`>CBh?OU$8iru&}@WCZ0bDP<+umG)`( zP&fI2cZE&THm3-v6GXfc`>X%H*l*$dqxbAC&M-txwWb9V^YwM&IRDRcm_^gJLal^TK}Aa;gIOfur>= zCG|k>SfC~T3flcSdxuh~#Uy;;Ut)ozRiq@tT*3L!&fT)cRsva3Yr^5u0NEFK%a+4s zSIVdBHFeGpBp1*hW)f1NYwe)Jh=ZjyQhZ#R@)ILiCE z0|9FL?jK%;Tx{nOC`-beHMHvahC=AYZs6M%!UnnXhIY()!uAhy0m?Q~_aDE=IW;y~ z>1t1ewkH>Dbn?w8GYCF_EWXoZJB0DVLX zG=?_iN(L*rTgR_XU5`Q*?kfVFDjn7%Pe;nj=I!po6RV2AtGnR`T=~yK&^6!)r{L(Syz+#q%#MiN zOZzkJ#tw28i+>vs9mvgBp5liG3EIoZN4v}lVaGhRRw?zrQM8%Q4rf#huRV_(pJuyW zgI9|EdH)n52klxUYyO#q_63%6(SoyB4~g#p?d&bzG(eRis`afeJyU%4iW6Vd)=RO9 zD<_}c8!VosZ~2}%mQmmZS{>J-YEpM&_exc{N!32e+zMpoRmm3&#kUI3Y7eXP9dQvO zmQI^Vg9K-ZZ)(M;eeau&D7T1RmRM%!vwBtu%!E|~q|BawuGlmm)AUZYj{Pu) zR~X}L0Jh4&=`(v*D7OT8Cgih%eqSG;rA6{>c;*W4zXaZ5pIuZ~hPkll%!eE3%Z{K|E@-KAobFjAd4dRAt*T35+h%!9))H({%hDmYfo(fF-45(IV)ZZ zA<}6%@yhshZD?uZM46Ar=lRVAL}t&scBElFjD(x{Y#k%Lte#8SOu#mQL1ZXt26RNd zkpqo!)hIiIoH-uWK-x5Sre>_4v3vyu7ZUecCTACL0Q#aXu7gWTH3Sh!T><;CKAs8+ zFp|knZUWCE4z;DpalxoGBxAn7@zxjgEO1nY`j)|Dtxpkn62@o-ge*Mo((w>sFdB{hH19Ad=#g}QW7M3uxTu>+1U_syNeK2~l9Wty0`Ww!vcyRp~)lv`+%LwJpn6B*?4Wb~DE zBXq9W;RG+m+{`(@S?)6*u_TzGt<#BqhD)Ly1J2Qd*|&NqDh=>H;Lu`P0CpVF)QFtZ z+K0cqm?dZ5mkAUu&y`Y`iNJQ)bU{T*Ti)=~ZN04M*#U(sQOxCR6F7+<*_Xu!#C$yi z;M868DbPkn_sM@igpGE=ft5q;DjA@Kh@$afHid(QuW3spJDKT(&^62)um$t zw9}K@Ag;Ek2!91c%zPN|Qu32fRi?+xSJGWLtkUkhWLD3Fu@&?62BE11vRzspIhx&1 zeA#!7;n5*uUP>?w0K8wz%YQ}&r)TO!Ym`f|p$2)GP^e)V^TT!%-bX31kixh-iyGlP z?D7=k^E4{ftiqi5M2h$=J_jGhE<~*{mRc-YKr0p|lGEU7!zh8<`o{XfWpL*1>xSgRGa80;f)J*M+k8d?JGYZm}&v; zc<9$*!VskjEtM<)(QH~8^{sL=R`^kBE^Nv{x$dp)1{(Tq#oGjxVR=_QzeQ!(9Ah!e ztKh+>s{Zrje>u>3c-2oKob5~rQyPA|u zb(vvBq4UET7Gk(wsaMSUO5jTlV5B(~_A<-A8(zWGYNq4`x*tOaWDZS4U7PgPPP~G) zUMR}GAtJ4oqBH4+__NV@MX>P2a)A{t!2Q6Y$~I;+I10?Yq%Dv34@N5HNs(V@KZ%tZ zF6D28quva!YcIoYHb@Vej?p98-cC`r z#@xTCb{vqro_!LAbHeF5vZYH<($z#jb_Sjwv|El#07+sScm1Wj#qec7o@3|_(5aFS z{(96w@+c|)B8C6YK8bSth>d)hRw?K>VZ!^Sih4nhs2vYK+SskUIC^yh&h&d2VYws| zXHQrU8&5N@z^VGwxG7MNYCZe`S$?;e)D|(9z1Jq;Pu0Vq!BGQ!&r_eZhSN#b{RU$I)gx56o|5 zD9-mLP{@zchPpze>>6z=bYxEmL~njZPnkw-bF`*)gP zcfRL#)Zpurxb??zYSBv7ZgIQUsFk5-C2@aLnf>6NplJWO?hC5)EWyw>l038w?Mr7% zDK_~SOUdACAYp7GSdt=LYRRd6SZH}j+g!Gy%x({9vjdq-^*M2RMJ~x+U>@-PEP6-^ z_#U6K-0&|EflMXQ{N$adkpYgG1s-x7BCq)&744G_D#*KXRa7~1Qyeo}u})4EO3RHr zQ0B~I{LUdSjD=-2uom(P`gU19_0S0JFrD6GabvIUwtIUs{qm1xJUVH5SNHc;%^ksE zvSG(E)qQeL9lTJu%2%uE!^iBGYEJoep|UUGDRJ)@nLhSkj(Bbwk=$i-ouO*he{9+* zdQSd4eP&Yl_awi2+6^B=>+2{IEO{EcbW*d2rL4?3#yX+Rfu%{8G~z4C+Dt|Lzl&pB zVu;8~ll^J}sO^r*7XN9E7%_Y(&JHaDbBmPoy%d60R*U}a!)hjg3WsqW5kenzq(~WX z}0F&`}<2&c;i3?mi?F9_1hvdTAe~C)7kA_ zs74h0UwWER#baCIoJh}Mj&%p5BYs#za30;Gpp*3W0oxBy793EdOGlu>-^rWHN{s(u z1%LSDWsj%|cBiOmXjRX=fl`I4Hh>~AWwnPC97o! zN2B$0y|X_h{Rh8J#XQ`c`g9cZf$t3O!yA8YhpxXTiD30v7axc&E!A;z6H)Cd1#%JV zKjsFQL|&IJcdt}QRkzmMgeh^qN%=hr>5Gnx|G2}bm@P2CeXC|vVfy$HP4C(DDevTO z+0PyTzWyTJm8{`~Co%s+ADUiE$GX;!ZQLS3&t?!97k=`!OTHA6Rcm&)XBWl&_vv(Y zcr-69Bk>iZ<;lX9!L=gRZHE4grxG;}B`pFeJnJR(rz_zxE8o)P8@zDuXBZPIk$vEC z!)hF~Or$O{9aQZFYC4$De)(aOZWLo0J|X$?XvA**jcG8@WH@8_)chqu!RA`h`P)vU zMse9tGD4q6yk+J_N>)HR*5Vsp#5v9Ifb+m6z$d!7qKClmF2&!h7Pwz(VT5jroLf^K zmHlDb)Ox6HpYrca(B@Xx1V} zmDX;_TyEqTOomlnGG5D+>W{jIK&kx!#JCw(=)ZN3m=01=?|lb*`G9X3Bl$AzJlNLL_(GW zX6M55OgMegnE^MQ*^doV-1X`mskij16jaZNzId{c^G`%d+JG3IfRU^7sv*%Y#1+%p z?9hoF+c;HCE%zA4u_2-)SB4fbQst~lYbQU6(fbNVF^b)Z5$P>w;+WTC?%&i9_?>y| zm)Sa(ZG;?g7!PbQn3rk0G~!%^@+QJKW{;@Pk#*vv%Ps6YjXacfg}p6ZX(JC;hNygy z4E~AA^L@znrg(kB5Gmh)lQP3G$o!vv*WeXDBz-o=$qnJ$+udW$fCzt zWti%Hn?;7K#YLNd@OVj~jD1u4AGU|L@XrnRSopw9wj7+vcm7qRp9jp9DfqSpKNh6# z#WU{|?bxDFeQ;d&-R9wYUf z`MnSvv5`~iajip?B>8|>R)bEiqBbpS8+%SSQF-|P0F#Bc*4Q-p7f?W_{epMu-a zmi(Ty6~U0p*%9q1-%7TFxo16ismlze z1c*mQ!FI}_#T;Len<_8I%l)p-RIuM4(Hgh`YsmTieSvj|>bls_NwcGKg~d=#B^TvD zUn&kLoK!fq#cQ@YpM9B@~+R92^22ldS{vqq_ZjA z)647^wf9o*W0s%F09??aHzk_s@Uxh1aH@A}zxFw#|NT9I=a^#b%xA}f(o;6whZ#rv z!C>H^MZBN4ozDCzp>4`f3+=S;baJv;bb9)c_Eat>SvKToh6Lho%3c)n$0;vQJFInbW z?diYCGaHolw{kCY_B~{4*g?9mvn5JmkMpk!c*4NHGQ6lP^mDL+PRLC6wCnRP^+EIa z#DlmqjHl=L$N(7p-IihB*36!_mc|k^y^_LY!ez{@)%EUJ);nS1M?^;wCu^9F(KB)> zidS@)U>F_4dW&i%p<}BV!(>$jRg$m!y?{vGX6bnnAA|y5FmlU~5_v1ea}=^r<4e3Q zwk4Z{BO_}Viz*Z_i5!IgU?02`XPEbbbCR*yiux5)SwY?Nz@P-w0$w&PV-UhMa?UU- z$Ln_Gg?^g`r$Z#4SN-)CGT24c0z>zwamMG$l);$#<2Qbv#|~Pt>IwgGp~K2}8P3`> z=pLEO2khZu7FGhs%2Jz1>WpFpr?2*Pl?C_+pV3J#W0Pd?$;%T;vbH~$V*JzlulpesZ5>*6hauhnRgywLO-}8-C!?I`7E_|M9~YAcqjhRy6#ZHcu`57rxpVA->0F+Mz3T7FV4>E(~i|A$dAF z<7;MbJX%;Le=t2_L7XMS$ptkS2Ze53OIG@nq5Va>m_rTc8{f)C3HG)}#71^Ry}3!K zUJ4S$N%;gWJLMec%^kUfdd6Z*zC4wb?}QRxCue~9s4O%}C7C0)&l4l%B%*977D`qV z7WAk@#&RxLB#b5B(C8{_I2-q$v>lz_w$uPUni40Up?6Q(Sp;>!h?FhBV^3k8_&dYH zXXpy8!Iz1&Syeh7OmswT^y zVV;pnx^HFK(4lrVn=X|CyB1Tb+(FI@ns>C8OUXa^7Ab znJ>I^G8}J_ph83Xi*~Xh_!j1gXe!pPIw|j@+%J@g-fV!BlqH^{tDr0+od6{G*3_ld zWqm-lI6Xkkm@!kMacemF5~5l$ocMEBXx}+i?=-5ZmNN`HLlb_TxUXc?ntyzYnitvT zz@+bBpgV*0XU;bs;~vLu&OsP07qEVV{Ol=jxd0Vnqi_exKDJ{8^E`16P;c4Vx40qf zxje=4vPzKDk$4fe>;ePqBqw#LX8@)k8OoW)wo1a2K`}tx_GHnworWRy?wOffI|>i{ zq1ACnTc)8w?v@p8xV_4Tt}JidU$kKolIsKNtmuJ~{GR9?QQGT6%PcZF_Fs?5?f!%j zUZ)*(v6s?63p-|g4=ZGLVw6|T?U4@tn9vH98pB}+wUdLX!wdZXTIMBpWdtF&W|XO$ zQN~)KiP9&1FO$d*txg>Efl3>OMO%qg8(8y=AVRer#z;O=qjCy~EGwy)PNYD(z%h%` z6kB+hsk%!WP`}EvQ^D_jERk(7rSRYzXU7<~NlY!y=N(p@fr{yH*4mbngzcY)et$k4 z$yk5p==E}P<^>>rxHue@8w?L7&;2HaNHnXElQR06F#18hF?59FCo9`d-6vlt!3_`$ zdIw~KFyq-TS_~#!uI%FYc$9zkzhMNw90!K)MC1cL6gi~rB~ADP6bqyp0WW72bqaR& zUV1a+8$R^tiNL*}hN-hqwoXT~Wte@efXj99yJfp~Xffli9(1>&Ye*o5`o0{U%s&KW z881Z1g=jsZu6Vp2>09-=1ijEY-LMN33Ae-`ujONRd-~GY54(YCWF2f}Wq3or`3k#Q zq47l`idg}w}(3mXFy zV@;g^>`!DL=GMXjT-UeR-7_Cmmc#joX5_bw?G_}_OTz!&eQmU1+qf>Tr$dO{3$Xl6 zL$@j8YZv5%dxVLhd6+o}Tq%Uzn%Ay`%UzS&Daz~tao7yu7U*oZSmZ-l6CqwTENT8S z0W9>TQ5~kk75r&4K)A?Lv3DZr9oxfss3mwmo4wx7Pb>b<@Y9dwT_68(4c;%XvzGKe z&175A1){Y|DPqypKZGU{i{Bhf@uXy7dbkL_G~Wo;MBEjn zN`Uv6alrcFHqg`1?_oM|4>o-y_|rgn5SAYEu7T)qHfsFW^z$ZAV)yPe?`LW@(*G#Q zR+>F!iIJ6FBhK*qk&L`;p+p6ab*M-cMo$0bUdCfQqpf7J;Vca`$rxq!#=|AeSm%G! zvX_k*X|-zz1iM|FtF@NWi&njeVHF=Swv0F>Nz?=U6zs=XMtL`$h{A5qkuW&$VJCW- z?J!9?IR|Hno;#)Rk#;WsOvI`2`-ebBEal%njn-AnV#pfR_vY8<6I8|ejjzkC&jnz0 z?RD=Yc96y3$0FnGr~v1+vtp^oql7Wi`joH_$OZQOL{gv0uSKeXb?o^Ju|RPD2XGqg zgA=t0`>7RDGakn`(uT=#osP0{8CadO$8g=!9gdN7!9GQd*BR)_Ym3}Nt}n*NVsoE2 z(YT`P!%Sa>D1Hq7W5-B~YhpRH z?bsEO-|Yg)=bVIjC$^O~g@mg-q6TC-!8y0r`i>^CWDRk50AoI%_w$8nn>$LH=67xs zh_B#Y0dEe0jdow-4Xv=2fGpNVsYY0|7fXDHU+D9K8j>|K+v-fZ-Xt1j#%Y5O-Lsa; z*~)Y*U7Pq_dL#9 zBU^c@iohAh8yJzZt$cPsp;}_&FT0Dgzv{z(Cg=I}B>|hk6^PCgUaA((WRecMbs(vd zAJ`XV$m`{Twrt5=j6Ita>JRoF299;H6W7ho7NwBXgeI#rqdTMhv6G8_*h?`L`0P;| z#=~!ww=kg%;2U%@$L3ks($9ZVyx+!(T?G4nC6=yYT!{B}PZYePK} z#@P7JELgDTx-H;Oy*ftf^v0ZniNzJyj= z#%T-FxVk)2ZGyoa&aU%fp*t|wFb@8Z2DsF;Hh-K`QUVR#rnd0UcWP#9rE$iA0v}wG~Jn9GXR)m&q0IrjF<5rxK@iTlVr7(az zdC(6?Z!Ep%yUo5J(WzCxORYOfJ_d=szldJ#18ZhL&$v~PH|p8(6I{oq6)Fo#mcg!B zbUMpg=Kig74EHiQ>L02yPb&x`2;NYqs5U!vf|N?oq&N(5GpnFKMP>E7f4=-$BK}=} z5AB|=8k(`&McjEBxVSAv3xAb+`!Gqt5x0 zVN|MQxWUH!MyW^iY;+(tV(KZrMJnB>L-C~xhw_CJFKLJ7nsgy6;4zHHQSM{xQPn1W z@GW3*w??iL#u#M%vTRhO*y{{iEt3`fDfhNSAG!mc`Qjk8t@Ct=+jg;> z4`^Ctdvf%OlP_uGbEJLZZY*&^we)s`46z-| zT5?I;PhF&g@#l$u2G1xAHi*lu<^p{{dolbMw-30F8FvZ8?7_75jy;YD#u#1cosD=F zIIJz}57A?LSYGYE?MjU9n8#Y*2Fj6eb8%W>N9+L&<%NGw0wnb{1Wy^m>(F^w$BA4v}L-r1Z{4~#gDXjZBE-1yl0N6=yx~hw!Zy;L?;k5 zZ+Acr**!7^E{K&bOsFm=?iKC;rG)2&FH-YB6=QX)97>aF7dXROxg@5k8#e9=PEDv? zF+>=JJ`Yy?6=W9)I>@b^jOm&kPN`K|a))CMJ0V^>eJIe-6UJ$T62nCVdrCX2~~QSL1S;2sS3@;#`hwk#M5e!>2- z9EmKU9qZsjZ$?fXn!m?kPhIPWM(4$gC1b#?h0D0ixiE~M8^%0mDcdSRb91bxtWZZz zCkS}xAj?_zbSJ?I2(zXpgey}O^Zvs88`6K=mEG+}}CcggDO1|Xige(@AC zmPM`Lw7fP zU*=ga60JhDnNcrb;`!@z`phE}U_&W(8Ds3-?u(~=`-|2*xz*BdmT)E^>h28<0ad!f zkO86F@|wx5f`*L~;&shu$JqL^Ks$mCe03Hoh~WRaOJ4fDlqP|wB41o2T{1ciWCxj@ z&V~nZvSf;->n*1 z$kB7gWlU6qmSc%3!1cIwupHlYBBE9a3AhzeP8`F$z*Amx&n$9!|JF`#d4GYXbIye4 zJ+SQQnXez*8Fpo;P8DEEH+F$DXRbRoN+?agxz0DOFakIdw=?<*#t5Yy!zjxEaxcmY z4^pl=|9e|OBzZgId^+pZ zLfNqfT9bQ)_@iB`bN6L5Baz!W6605SAh5<2|%x{#(ph zj>EuyH?10(BLil76rx1=hd5i(%XPNqX>+|%;UQ;nCNFcbVUQ3A)M85$u)ypup5`;j zNr8eXl!o26!4Yq&Bq%XNh=XR=9N>IHlu*@CLFO|bvZC(;@- z$eVxQ8XIZ^{Eq%jX2~nQAL(@T#0`FARUvBQn!-KUvu$f-boNpQKRiHKnv&UHVz|e zB(*Mp&LuPwqkIB)zJuoW){H^v7-9>D!qRMe1IBe{wFef-6p~`-!2sZqCPufaUNNfF-rasZ~|IK#c6 zmX?YAaBMrL$gOhmmjU`ssyA=QO?;rCy&ydI0J5=&(;MY2CgZ@_q6v`~i5vi2)K#-W zt)&T!QJ0Ys7t{}*ph#5f+vdK%PW3H1IB9o#UZE-8*YhEW$E_k5{=*5$yAvtPMlrT1 zxmAV;&`<&`W1=fZ^sQytD7RM zq;JN=zQA%Rg=J6vr23yx;x7vLZn1@L<;#g$N0dw#h2$?1y`*8)W81*$Y|cLXeq|!( zsA|46H5oB>dyC*-h-J%=J)&S~3>e>6iCPSJohV{htl_LJz>$MJ!&-75C)Ef{>e z$@MvcrUy|PA^iExCV8Rn>tq_sVS#n%xSSR+DV~1}?L${u&o6E?$E3zeFKs^JB9Loc zDA3A_P?gtP9B$j~hMrT^wR4lvQ%qJmyrxCdbYUOf>|IrI9nol@eIxn{OT{*Rk6oo) z=nbpkhzKc4S!_J(6Rr7VC18cigkK5P%wnJtN6cNB6rSs)Y3Fe9ft5t{tx7~4^LTO# z4~<)C_kVV=TnD{5=` zpx9qw>Tl`}XpLn1__abHwk7(stth>9k!j$T#yn^Q`xr%^zz|m+D`NEWxv#*+-1Ue~ z8Y7}@sGc9yD`)3^0`)ZN3LHVD(KJfTD3LHg?E~KM#*c;M8pgs1Vbg?{UnCbfpUS`J zdevn~IH2(vQ==O>jfT!8A6o@C>?3K?+P=z4X&01$0S{uX>!RPaTC)7%o7~NyT}38dI`0%&ZWxb9Lm_Le&HH3eE73!@?&5?g z*=`jjucFq-*vl@WXN4w~+akZF94BljlQ(}Xk{2AAP=(>&Q{dE013aPqsA~9L?LqR| zb8ca0z&Izj;^j3Mk4~KS0!%P6u|Ku*i}Y!lJ*(Ar3iszww)P3aqNf5k|55vz!N?WV zl{JOzKySpoCbh)=d#baQ^JA>Q-W96v!iw)lhIeTP+vf%NhEyXk( z=zTIrsm4cAIF&&Gn|!vV&;{7rA=^+Hy2P05>cV1lZq#0iFms>1Yu`f(jj_|C+&x?E z92{$Nj~D(8!a~&`Y ziRY~9^*H{CGxUvrU254rlwH@?Fy@}p9^O&0o(w7TXLK=lH<0Bv)72IW3YTNdkjK60 z3H17S+HaFQ8mpQygxRi-8J$o4jK%iFN8F{_1z%lH?7XFy5MHdHd25OLTKf9g&ms28s=?G9q^-(W5MN{WA>TzZK#G$r-l=IirXa0%u}R&#dzbA)Yuw%fkRONwqk$K86SP`&&jQe`a3>thPLq-J-3Ff)Pb)O^x{~Q zX5TcUB5(`Q4@u$>R*)xLI4<$=#xc?c>EBxQHK=LK2BoV%rD0&N8(TsR`vBX;h3{OW z`EFDn`@TA+ThHv%LF~tW$$>O~%E_g&#qt!rZJ+}jC{GweI_J@@naLR4g|)v__<-P0 zV}xXHP&mFi8e(1MklxE(^tq^HJM&upysoFs2YJ-pA`Tq8?(TDi$bNf+@C3to1#Lb& z$qEEZQ0?gT|H|Gl#I567-U8=|-u#z)AWNLr!<>hekO+}6buklP6xoHtX@O+6Qu;a= z6(I)-!ne8i3Yx6}GHNN4$rYBZJBb-TKWNt2PT42#joaIAbNARmUVdpxjOxe%f32Ep zD7(Ls8GGQ*1qntYEMe!#kJW1Vp*rJ@dM}O+KJjV(-TLr$VdbvsM>W4yX0cvIPW2rJ zvoahbf<4Z>dVOQ?c>n3s*#6B9t4hA;m>W4?70oc%i1*4GbH&m)A4=SgnIXL z_j{o|_G+=Hny7J%6;8qDDQpby5l$AwHP_jK6}kx~%!xaB$9>#Sw{=e=Zi)BZ*VE_= zPT!C%<2h@kD^)!edHxiW<6zIL{ul3O-urvhz%1w461^9G(}vq})@Tg2#g zHAJso5;INT8Pr3QB?iEoWeuw&C*8t?idxGy{z6^eWdHJHd?`D>{Oc_EM)s}*eKqAA zeq@LAL%WW8bs_v#2~#(+pumjCidN||{FadtM?boG^UALA!?@4$A344z%WIlOme+ir z|2dwhOSQ^edOLL$Ah@oCO$pw_Zw!^i^kSHQJ!!-ZM4Vb7vPr z+PR;2!sy7X`wO+xAQNzS%B$}E(FX6P0^4imig*u3A%60I=hVP!z49c095 z$4k23WXV!l*4u+~mvRrK`;tCk2bhZj^mF9o$}^HOyv}vX$$#Mwl3z`0zlZIg&(I)# z)Lv@XfOG$fuw8Uh@oS>GH6?{$6^AnK3-@7n0&g&r^q!?8 z6Go&~sXtJmVfbE^0+DZ`P)s^>G=7@TPhN|5Nm9?z4-e7EC!z@7L_2PP@-QOXM}0TR zI-!d>HQrv<$hK4C;kK!zOH6x(l|!lH8xv^N);BX^#~N067OqXtyFp6chbL(UZw;~E zcafOIHah}t_2|FDBNZ$QT`u;0$a`o7g5HcgBhF!(EioH@1)9fI ze2nVq&pyWpn#pb;=VEpE5v!m`N40nrcb)0*4hrrM<&0so-FIN?2Z9vd&#)wrtVD;N zH&5rzf9U!+Tt$Zzo(nA3Yy4}v!;v$xYwR0LJx-w|P)IpIzr6{N#K54C-c5IH&FGRI z-<}=NXQZNM-jWjt-+L67A@&{RRB&|=`TNLDu2%G@7V^S~<3>;f_LB!@G_6Ia&ZyT* z8q5IASOfISLlV&}1Ww50gAleqgJI>T%+EZP<(6^ZcueksbD$;*zcjPvHWi zQE85NfbseYym~J-xt5=t!)7hCUot?m5IqBU=q|&&U3Hh?ZsZiiADg;{H|9*u)b%6C ze(HA6rGGMfPce8X?ntdFSM*=}41G_EZ|h>i$*SQ%-d#Q9^h|i*I0MdubXW(0D2Z4 z4^wqfv2SfCk+f54d`rf|U3)gYSsK!lyu#PULhi|7$UhnBXr_Viz*JpsXXj;%NDHd_ z#HK9JMwv>$fcE%gqS(FTtgt963Sud7EaH>H@P}-d&T!oNy{awd;;UC*`FTy;ni089 z(Q5gC!#jW6olrXke*5FfcD-WGj;zq6Z5Tu`H)P z%E7X~zJ1FKL-BWEB%>i6%2hl$n|y~7dcOoiah2YQz0+4!@=%(6Z$>d#fgMUA#cY2% zw#iX)!Ny%Je4n4^nH$m#b-&BbYmLam&iu7}?usprcQw9qwoZ%AtdtBDh}-zml!hPf zt>=%E)O8T+$r77R0;m}Tt4|k%n+|^vb#k<*EaM;hvwumBHxvW>O)$v-B5A zP{eF^kF(nR=&zm(#$jD%0Y>wDKl)nDHU0J;6?)0gwxmX-Hp}hdr#=YlkrywFq64P7 z8@cIN9owgrUBd}~pmQe@3DMsqfvb9SbPcF1m+#C>602%L3GIlB>qH%_ zoetN|aJM2q6PWXe-QXIA!a9|>eRyT~&)>>+ z`Eoti7yRf1;O+KWyFov;^RuVFW|yevAF}@p82uu{U*G{?IdAs+V;OKL0{H(O7oczr zfP#JgBdfm`=WjyJH6dHX+zNL8LFmF=ly&0ZERDin`u9a%lA94`+{hK-cnSVW!5u#e z_0=p8_!Fl2x(z>g#Me6X0N9N3UdZ~hN2zqSi~Ml*!nKl1xL$h&`o9)RaXUV`_QyW1)^+KPT9f5a@f$h}y=XwrOf2|A{jeVF~ne@XouK`}iUpz(WioU@Gyh{7iGOTEK38Uyb-!fS`(XzF(eYnvKLnUFcl+542*PXvF3|7aVEz9~{NNwt{G;8s z2|G^$e%LRYeQFL%fJK5IxcvO%f8-A2YI7+cZ%HbBf5c}ZH*6`(na;1p=( zGWpgB`}>>V)8g;O`+L3r+Y@}U&C-2GSNLx2DCXkCS%!tR zjV6tzD}p^NN-%GL8^q38MMJ{fM}mEn_&dDchi;twML?Q_)K$FKcgGxT|dKk56YO<<$uUuhmz@q5%?%s~QM88(W^ zSsI;I%KTjX0n2h{GwQnO1h9{kz-$Tm%66*$L=k`S-M=*|^#vOMT!3DVKTCZ(ML(zn z{FdKn{{^c*;{RFMSI-y;$X>T-nICQ{)Xp%Wm}w zVSp6Csp4+!^jp1AkQ9KVj;zY!LQfms?|X3)2LOGS#{DzQt}#G%u{XC>(8OCdZc zVc&$izf=8Zt+f@e-SBwAn=FJ{wo$p z_`f5X)o+h(zlTKLAX~+(WB}~?c7h)@7*D{M@7ZE-*5n}tFhGJoQS(nFCfT@?JoWBp9G_Fr7q%M5|Y0if$o;4=$=O3>G9m%m5M(6h0kUkAJo z`-;0nUI9x}7GU>M2BRx*BQgj4qK-WNN$7VH$4T(7mf$}_i$5~}dHgqJ5cdFxYyH#u zAMN(&{%b-XrvEb7heFRh08vAfuPrGEz1erm!_%l`-ZXI6`+B;>c~*~Jq6Nt#FNbG5== zKG*+3RIYB6ZDto5kfqV>2m8bS5NXL(@S3=wE0>Ix0_ZP>>KZUi0{vwvg>e${W5mh& zJXL~!uGZ7EK3(&-B>WR4@CWPjm$cqp^I+Zi`*q>J>lpECv)|+u@rw9rmPU^bInFC) zv$(^Wt@g>%Xx3ni|7qe;kyp(8YY4mz`;zE%(i5JC8aX?ZCA3Ln~ zC~=K=UF1#ReQ`-j`%UBjU%rFHeIjonZ;IcDZ>GCv@ZEn}Og7ufT9G%2&EneB|1XX0 zy^u$UM?~IaHi~=gI6Ax+e$OMt46y{6pv_{N_=EUDmPQ%{jEBdHe~7$;ST3%#JMia4 zpC0yoeo;)aY|WQN-a#x9W3n{TXyD~NNh}k22h(CFg)2;W_7;7+NleB_@m&kJS&Soo zNAjpRJWC^u3a!+qAQP>#SSOa)y>^N?*wU!`cT(2oa4}v?vHzz>5V+GBY!Eky1G6;J zXmV!S)nbjvyAW&a#PT=sN85#`o55|O*k6ox7~`BWU)h*MjG8=n49lRv9Q*dG6`}~-VryMcVEzUmCqxDGatF@6W{pqO}JL{afNMX4v~i zI_9U5M%yQaJ;e#)G839NyP?3pE*6NHR`36FSsH1i(U5Z3)$9rvird9wVg-t7b_VOk zD;6tpoBh8XErw=kq>)C4o*Z^EJHrHVszuNJOx$dD?&rj-Ca@kaJN!%BFMcoP*?;p? h%d*@j<>L38@juW58%rJ)s)hgn002ovPDHLkV1g>l@F@TQ literal 0 HcmV?d00001 diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css new file mode 100644 index 000000000..132a1d653 --- /dev/null +++ b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css @@ -0,0 +1,9 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js new file mode 100644 index 000000000..968428d43 --- /dev/null +++ b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js @@ -0,0 +1,19 @@ +require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); +},{}],14:[function(require,module,exports) { +var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); +},{}],22:[function(require,module,exports) { +var global = (1,eval)("this"); +var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); +},{}],23:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); +},{}],15:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; +},{"../deps/jump":22,"../deps/utils":23}],16:[function(require,module,exports) { +"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; +},{"../deps/jump":22,"../deps/utils":23}],9:[function(require,module,exports) { +"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} +},{"normalize.css":24,"prismjs":25,"../css/deps/prism.css":24,"../css/index.scss":24,"./deps/polyfills":14,"./components/Menu":15,"./components/BackToTopButton":16}]},{},[9]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 76a730895..e56801e8f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +    30 Seconds of CSS        

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -11,7 +11,7 @@
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    @@ -22,7 +22,21 @@
       background: red;
       color: white;
     }
    -

    Demo

    Select some of this text.

    Explanation

    ::selection defines a pseudo selector on an element to style text within it when selected.

    Browser support

    84.6%

    ⚠️ Requires prefixes for full support and is not actually in any specification.

    Easing variables

    Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

    HTML

    <div class="easing-variables"></div>
    +

    Demo

    Select some of this text.

    Explanation

    ::selection defines a pseudo selector on an element to style text within it when selected.

    Browser support

    84.6%

    ⚠️ Requires prefixes for full support and is not actually in any specification.

    Donut spinner

    Creates a donut spinner that can be used to indicate the loading of content.

    HTML

    <div class="donut"></div>
    +

    CSS

    @keyframes donut-spin {
    +    0% { transform: rotate(0deg); }
    +    100% { transform: rotate(360deg);}
    +}
    +.donut {
    +  display: inline-block;
    +  border: 4px solid rgba(0, 0, 0, 0.25);
    +  border-left-color: blue;
    +  border-radius: 50%;
    +  width: 20px;
    +  height: 20px;
    +  animation: donut-spin 1.2s linear infinite;
    +}
    +

    Demo

    Explanation

    Use a semi-transparent border for the whole element, except one side that will serve as the loading indicator for the donut. Use animation to rotate the element.

    Browser support

    94.8%

    ⚠️ Requires prefixes for full support.

    Easing variables

    Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

    HTML

    <div class="easing-variables"></div>
     

    CSS

    :root {
       --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
       --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    diff --git a/index.html b/index.html
    index da9624dbc..24ce6079f 100644
    --- a/index.html
    +++ b/index.html
    @@ -19,6 +19,7 @@
             Clearfix
             Constant width to height ratio
             Custom text selection
    +        Donut spinner
             Easing variables
             Etched text
             Gradient text
    @@ -174,6 +175,66 @@ in any specification.

    +
    +

    Donut spinner

    +

    Creates a donut spinner that can be used to indicate the loading of content.

    +

    HTML

    <div class="donut"></div>
    +
    +

    CSS

    @keyframes donut-spin {
    +    0% { transform: rotate(0deg); }
    +    100% { transform: rotate(360deg);}
    +}
    +.donut {
    +  display: inline-block;
    +  border: 4px solid rgba(0, 0, 0, 0.25);
    +  border-left-color: blue;
    +  border-radius: 50%;
    +  width: 20px;
    +  height: 20px;
    +  animation: donut-spin 1.2s linear infinite;
    +}
    +
    +

    Demo

    +
    +
    +
    + +

    Explanation

    +

    Use a semi-transparent border for the whole element, except one side that will serve as the loading indicator for the donut. Use animation to rotate the element.

    +

    Browser support

    +
    +
    + 94.8% +
    +
    +

    ⚠️ Requires prefixes for full support.

    + +

    Easing variables

    Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

    diff --git a/snippets/donut-spinner.md b/snippets/donut-spinner.md new file mode 100644 index 000000000..cb7f8a4a5 --- /dev/null +++ b/snippets/donut-spinner.md @@ -0,0 +1,61 @@ +### Donut spinner + +Creates a donut spinner that can be used to indicate the loading of content. + +#### HTML + +```html +
    +``` + +#### CSS + +```css +@keyframes donut-spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg);} +} +.donut { + display: inline-block; + border: 4px solid rgba(0, 0, 0, 0.25); + border-left-color: blue; + border-radius: 50%; + width: 20px; + height: 20px; + animation: donut-spin 1.2s linear infinite; +} +``` + +#### Demo + +
    +
    +
    + + + +#### Explanation + +Use a semi-transparent `border` for the whole element, except one side that will +serve as the loading indicator for the donut. Use `animation` to rotate the element. + +#### Browser support + +⚠️ Requires prefixes for full support. + +* https://caniuse.com/#feat=css-animation +* https://caniuse.com/#feat=transforms2d From 05178e6c7b6039caa1866c579922653b39cdbe0c Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 27 Feb 2018 17:53:19 +0200 Subject: [PATCH 033/561] [LICENSE] Creative Commons Zero v1.0 Universal Adds CC0 1.0 Universal License to the repo (same one as 30-seconds-of-code). --- LICENSE | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..670154e35 --- /dev/null +++ b/LICENSE @@ -0,0 +1,116 @@ +CC0 1.0 Universal + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not limited +to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + + v. rights protecting the extraction, dissemination, use and reuse of data in + a Work; + + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time +extensions), (iii) in any current or future medium and for any number of +copies, and (iv) for any purpose whatsoever, including without limitation +commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +the Waiver for the benefit of each member of the public at large and to the +detriment of Affirmer's heirs and successors, fully intending that such Waiver +shall not be subject to revocation, rescission, cancellation, termination, or +any other legal or equitable action to disrupt the quiet enjoyment of the Work +by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account +Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +is so judged Affirmer hereby grants to each affected person a royalty-free, +non transferable, non sublicensable, non exclusive, irrevocable and +unconditional license to exercise Affirmer's Copyright and Related Rights in +the Work (i) in all territories worldwide, (ii) for the maximum duration +provided by applicable law or treaty (including future time extensions), (iii) +in any current or future medium and for any number of copies, and (iv) for any +purpose whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed effective as +of the date CC0 was applied by Affirmer to the Work. Should any part of the +License for any reason be judged legally invalid or ineffective under +applicable law, such partial invalidity or ineffectiveness shall not +invalidate the remainder of the License, and in such case Affirmer hereby +affirms that he or she will not (i) exercise any of his or her remaining +Copyright and Related Rights in the Work or (ii) assert any associated claims +and causes of action with respect to the Work, in either case contrary to +Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + + b. Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without limitation + any person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions + or other rights required for any use of the Work. + + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to this + CC0 or use of the Work. + +For more information, please see + From caa4ad241b74d289d7cf24866979ca2b0faf253f Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 27 Feb 2018 18:01:03 +0200 Subject: [PATCH 034/561] Issue and PR templates --- .github/ISSUE_TEMPLATE.md | 25 +++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..80717b4fd --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,25 @@ + + + + + +## [FEATURE] _REPLACE THIS WITH A BRIEF SUMMARY OF THE SUGGESTED SNIPPET_ +**Category:** +### Description + + + + + +## [BUG] _REPLACE THIS WITH A BRIEF SUMMARY OF YOUR ISSUE_ +### Expected Snippet Behavior + + + +### Current Snippet Behavior + + + +### Possible Solution + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..33959ccdc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ + + + + +## Description + +**Resolves** #(issue number) + +## What does your PR belong to? +- [ ] Website +- [ ] Snippets +- [ ] General / Things regarding the repository (like CI Integration) +- [ ] Tests + +## Types of changes +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] Enhancement (non-breaking improvement of a snippet) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to change) + +## Checklist: + +- [ ] My code follows the code style of this project. +- [ ] My change requires a change to the documentation. +- [ ] I have updated the documentation accordingly. +- [ ] I have checked that the changes are working properly +- [ ] I have checked that there isn't any PR doing the same +- [ ] I have read the **CONTRIBUTING** document. From 56460df9d5341c6a0dba5850805091c36a9f1b47 Mon Sep 17 00:00:00 2001 From: jbader Date: Tue, 27 Feb 2018 11:59:09 -0500 Subject: [PATCH 035/561] Adding snippet. --- snippets/box-sizing-reset.md | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 snippets/box-sizing-reset.md diff --git a/snippets/box-sizing-reset.md b/snippets/box-sizing-reset.md new file mode 100644 index 000000000..09d77a9b5 --- /dev/null +++ b/snippets/box-sizing-reset.md @@ -0,0 +1,44 @@ +### Clearfix + +Resets the box-model so that `width`s and `height`s are not affected by their `border`s and/or `padding`. + +#### CSS + +```css +.html { + box-sizing: border-box; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} +``` + +#### Demo + +
    Demo
    + + + +#### Explanation + +1. `box-sizing: border-box` makes the addition of `padding` or `border`s not affect an elements `width` and/or `height`. +2. `box-sizing: inherit` makes an element respect its parents `box-sizing` rule. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=css3-boxsizing From 468a67c12ca0ae872253972196fdb9a72d09b43f Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 05:32:23 +1000 Subject: [PATCH 036/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 6 +++--- docs/index.html | 10 +++++++--- index.html | 12 ++++++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 8ac739f4b..39f493b20 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,6 +1,6 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { @@ -16,4 +16,4 @@ var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iter "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 76a730895..a24958ed4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,7 +11,7 @@ .floated { float: left; } -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    @@ -187,11 +187,15 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       background-repeat: repeat-x;
       background-size: 1px 1px;
     }
    +.pretty-text-underline::-moz-selection {
    +  background-color: rgba(0, 150, 255, 0.3);
    +  text-shadow: none;
    +}
     .pretty-text-underline::selection {
       background-color: rgba(0, 150, 255, 0.3);
       text-shadow: none;
     }
    -

    Demo

    Pretty text underline without clipping descending letters.

    Explanation

    1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
    2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
    3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
    4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

    Browser support

    94.8%

    ✅ No caveats.

    Shape separator

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    HTML

    <div class="shape-separator"></div>
    +

    Demo

    Pretty text underline without clipping descending letters.

    Explanation

    1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
    2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
    3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
    4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

    Browser support

    94.8%

    ⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

    Shape separator

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    HTML

    <div class="shape-separator"></div>
     

    CSS

    .shape-separator {
       position: relative;
       height: 48px;
    @@ -216,7 +220,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       border-left: 20px solid transparent;
       border-right: 20px solid transparent;
     }
    -

    Demo

    Explanation

    View this link for a detailed explanation.

    The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

    Experiment with the px values to change the proportion of the triangle.

    Browser support

    99+%

    ✅ No caveats.

    Truncate text

    If the text is longer than one line, it will be truncated and end with an ellipsis ....

    HTML

    <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
    +

    Demo

    Explanation

    View this link for a detailed explanation.

    The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

    Experiment with the px values to change the proportion of the triangle.

    Browser support

    99+%

    ✅ No caveats.

    Truncate text

    If the text is longer than one line, it will be truncated and end with an ellipsis .

    HTML

    <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
     

    CSS

    .truncate-text {
       overflow: hidden;
       white-space: nowrap;
    diff --git a/index.html b/index.html
    index da9624dbc..31772d19f 100644
    --- a/index.html
    +++ b/index.html
    @@ -758,6 +758,10 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       background-repeat: repeat-x;
       background-size: 1px 1px;
     }
    +.pretty-text-underline::-moz-selection {
    +  background-color: rgba(0, 150, 255, 0.3);
    +  text-shadow: none;
    +}
     .pretty-text-underline::selection {
       background-color: rgba(0, 150, 255, 0.3);
       text-shadow: none;
    @@ -777,6 +781,10 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                     background-repeat: repeat-x;
                     background-size: 1px 1px;
                   }
    +              .snippet-demo__pretty-text-underline::-moz-selection {
    +                background-color: rgba(0, 150, 255, 0.3);
    +                text-shadow: none;
    +              }
                   .snippet-demo__pretty-text-underline::selection {
                     background-color: rgba(0, 150, 255, 0.3);
                     text-shadow: none;
    @@ -797,7 +805,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                     94.8%
                   
    -

    ✅ No caveats.

    +

    ⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

    Truncate text

    -

    If the text is longer than one line, it will be truncated and end with an ellipsis ....

    +

    If the text is longer than one line, it will be truncated and end with an ellipsis .

    HTML

    <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
     

    CSS

    .truncate-text {
    
    From 10b866ba178a8d42890c1d25b07ddde76566af91 Mon Sep 17 00:00:00 2001
    From: atomiks 
    Date: Wed, 28 Feb 2018 05:36:01 +1000
    Subject: [PATCH 037/561] fix #17
    
    ---
     docs/4d4edbda57043aeeabeac31d2dd12d0d.js   | 6 +++---
     docs/index.html                            | 2 +-
     index.html                                 | 4 ++--
     snippets/constant-width-to-height-ratio.md | 2 +-
     4 files changed, 7 insertions(+), 7 deletions(-)
    
    diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    index 39f493b20..8ac739f4b 100644
    --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    @@ -1,6 +1,6 @@
    -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
     },{}],11:[function(require,module,exports) {
    @@ -16,4 +16,4 @@ var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iter
     "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})};
     },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) {
     "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}}
    -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
    \ No newline at end of file
    +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
    \ No newline at end of file
    diff --git a/docs/index.html b/docs/index.html
    index a24958ed4..10fda79e7 100644
    --- a/docs/index.html
    +++ b/docs/index.html
    @@ -17,7 +17,7 @@
       width: 50%;
       padding-top: 50%;
     }
    -

    Demo

    Resize your browser window to see the proportion of the element remain the same.

    Explanation

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its width, i.e. 50% means the height will be 50% of the element's width. This allows its proportion to remain constant.

    Browser support

    99+%

    ⚠️ padding-top pushes any content within the element to the bottom.

    Custom text selection

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
    +

    Demo

    Resize your browser window to see the proportion of the element remain the same.

    Explanation

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

    Browser support

    99+%

    ⚠️ padding-top pushes any content within the element to the bottom.

    Custom text selection

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
     

    CSS

    .custom-text-selection::selection {
       background: red;
       color: white;
    diff --git a/index.html b/index.html
    index 31772d19f..548f0695a 100644
    --- a/index.html
    +++ b/index.html
    @@ -124,8 +124,8 @@
                   }
                 
                 

    Explanation

    -

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its width, i.e. 50% means the height - will be 50% of the element's width. This allows its proportion to remain constant.

    +

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means + the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

    Browser support

    diff --git a/snippets/constant-width-to-height-ratio.md b/snippets/constant-width-to-height-ratio.md index fb2eb53e9..ff7ef0122 100644 --- a/snippets/constant-width-to-height-ratio.md +++ b/snippets/constant-width-to-height-ratio.md @@ -38,7 +38,7 @@ Resize your browser window to see the proportion of the element remain the same. #### Explanation `padding-top` and `padding-bottom` can be used as an alternative to `height` such that the percentage value -causes an element's height to become a percentage of its width, i.e. `50%` means the height will be 50% of the element's width. This allows its proportion to remain constant. +causes an element's height to become a percentage of its parent's width, i.e. `50%` means the height will be 50% of the parent element's width, which means it acts the same as `width`. This allows its proportion to remain constant. #### Browser support From 528be97e5b14570b381cedf23371ff047b885e7a Mon Sep 17 00:00:00 2001 From: Jack Moore Date: Tue, 27 Feb 2018 14:51:27 -0500 Subject: [PATCH 038/561] Disable pointer events on pseudo element This disables pointer events on the pseudo element so that it won't block clicks to the content element. --- snippets/overflow-scroll-gradient.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/snippets/overflow-scroll-gradient.md b/snippets/overflow-scroll-gradient.md index de850bd81..c0010ddb6 100644 --- a/snippets/overflow-scroll-gradient.md +++ b/snippets/overflow-scroll-gradient.md @@ -25,6 +25,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor width: 300px; height: 25px; background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */ + pointer-events: none; } .overflow-scroll-gradient__scroller { overflow-y: scroll; @@ -58,6 +59,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor width: 300px; height: 25px; bottom: 0; + pointer-events: none; } .snippet-demo__overflow-scroll-gradient__scroller { overflow-y: scroll; From 9d192d00d67e2f75271d52a7cadcfb155c1345a9 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 06:17:18 +1000 Subject: [PATCH 039/561] fix: use px values for pretty text underline --- snippets/pretty-text-underline.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md index e1a45c062..171fe9d80 100644 --- a/snippets/pretty-text-underline.md +++ b/snippets/pretty-text-underline.md @@ -14,13 +14,13 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control ```css .pretty-text-underline { display: inline; - font-size: 1.25rem; + font-size: 18px; text-shadow: 1px 1px 0 #f5f6f9, -1px 1px 0 #f5f6f9, -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); - background-position: 0 1.04em; + background-position: 0 18px; background-repeat: repeat-x; background-size: 1px 1px; } @@ -49,7 +49,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); - background-position: 0 1.04em; + background-position: 0 18px; background-repeat: repeat-x; background-size: 1px 1px; } From e4a81702e0c7112933c41ac4e5f658502b4d2ae8 Mon Sep 17 00:00:00 2001 From: Mattia Astorino Date: Tue, 27 Feb 2018 22:45:56 +0100 Subject: [PATCH 040/561] fix: Improve ::selection example and description --- dist/527b39bfa5c417dbf84620127ec95368.png | Bin 0 -> 2628 bytes dist/5f62c8cc1947e40c7e328854a3026c04.png | Bin 0 -> 35911 bytes dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html | 1056 +++++++++++++ dist/f06fd0495a34430f242f7611190395d6.css | 1621 ++++++++++++++++++++ dist/f06fd0495a34430f242f7611190395d6.js | 1479 ++++++++++++++++++ dist/f06fd0495a34430f242f7611190395d6.map | 1 + index.html | 20 +- snippets/custom-text-selection.md | 17 +- 8 files changed, 4189 insertions(+), 5 deletions(-) create mode 100644 dist/527b39bfa5c417dbf84620127ec95368.png create mode 100644 dist/5f62c8cc1947e40c7e328854a3026c04.png create mode 100644 dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html create mode 100644 dist/f06fd0495a34430f242f7611190395d6.css create mode 100644 dist/f06fd0495a34430f242f7611190395d6.js create mode 100644 dist/f06fd0495a34430f242f7611190395d6.map diff --git a/dist/527b39bfa5c417dbf84620127ec95368.png b/dist/527b39bfa5c417dbf84620127ec95368.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/dist/5f62c8cc1947e40c7e328854a3026c04.png b/dist/5f62c8cc1947e40c7e328854a3026c04.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 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 literal 0 HcmV?d00001 diff --git a/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html b/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html new file mode 100644 index 000000000..1d80367a4 --- /dev/null +++ b/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html @@ -0,0 +1,1056 @@ + + + + + 30 Seconds of CSS + + + + + + +

    +
    +
    +
    + +

    30 Seconds of CSS

    +

    + A curated collection of useful CSS snippets you can understand in 30 seconds or less. +

    + + + Star +
    +
    +
    +
    +
    +

    Clearfix

    +

    Ensures that an element self-clears its children.

    +
    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.
    +

    HTML

    <div class="clearfix">
    +  <div class="floated">float a</div>
    +  <div class="floated">float b</div>
    +  <div class="floated">float c</div>
    +</div>
    +
    +

    CSS

    .clearfix::after {
    +  content: "";
    +  display: block;
    +  clear: both;
    +}
    +.floated {
    +  float: left;
    +}
    +
    +

    Demo

    +
    +
    +
    float a
    +
    float b
    +
    float c
    +
    +
    + +

    Explanation

    +
      +
    1. .clearfix::after defines a pseudo-element.
    2. +
    3. content: '' allows the pseudo-element to affect layout.
    4. +
    5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
    6. +
    +

    Browser support

    +
    +
    + 99+% +
    +
    +

    ✅ No caveats.

    +
    +
    +

    Constant width to height ratio

    +

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    +

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +
    +

    CSS

    .constant-width-to-height-ratio {
    +  background: #333;
    +  width: 50%;
    +  padding-top: 50%;
    +}
    +
    +

    Demo

    +

    Resize your browser window to see the proportion of the element remain the same.

    +
    +
    +
    + +

    Explanation

    +

    padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means + the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

    +

    Browser support

    +
    +
    + 99+% +
    +
    +

    ⚠️ padding-top pushes any content within the element to the bottom.

    +
    +
    +

    Custom text selection

    +

    Changes the styling of text selection.

    +

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
    +
    +

    CSS

    ::selection {
    +  background: aquamarine;
    +  color: black;
    +}
    +.custom-text-selection::selection {
    +  background: red;
    +  color: white;
    +}
    +
    +

    Demo

    +
    +

    Global aquamarine selection color

    +

    Red selection color.

    +
    + +

    Explanation

    +

    ::selection and ::-moz-selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, + to any selectable element.

    +

    Browser support

    +
    +
    + 84.6% +
    +
    +

    ⚠️ Requires prefixes for full support and is not actually +in any specification.

    + +
    +
    +

    Easing variables

    +

    Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

    +

    HTML

    <div class="easing-variables"></div>
    +
    +

    CSS

    :root {
    +  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
    +  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    +  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
    +  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    +  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
    +  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
    +  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    +  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
    +  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
    +  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
    +  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
    +  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
    +  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
    +  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
    +  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
    +  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
    +  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
    +  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
    +}
    +.easing-variables {
    +  width: 50px;
    +  height: 50px;
    +  background: #333;
    +  transition: transform 1s var(--ease-out-quart);
    +}
    +.easing-variables:hover {
    +  transform: rotate(45deg);
    +}
    +
    +

    Demo

    +
    +
    Hover
    +
    + +

    Explanation

    +

    The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical + to the selector html, except that its specificity is higher.

    +

    Browser support

    +
    +
    + 87.2% +
    +
    +

    ✅ No caveats.

    + +
    +
    +

    Etched text

    +

    Creates an effect where text appears to be "etched" or engraved into the background.

    +

    HTML

    <p class="etched-text">I appear etched into the background.</p>
    +
    +

    CSS

    .etched-text {
    +  text-shadow: 0 2px white;
    +  font-size: 1.5rem;
    +  font-weight: bold;
    +  color: #b8bec5;
    +}
    +
    +

    Demo

    +
    +

    I appear etched into the background.

    +
    + +

    Explanation

    +

    text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

    +

    The background must be darker than the shadow for the effect to work.

    +

    The text color should be slightly faded to make it look like it's engraved/carved out of the background.

    +

    Browser support

    +
    +
    + 97.9% +
    +
    +

    ✅ No caveats.

    + +
    +
    +

    Gradient text

    +

    Gives text a gradient color.

    +

    HTML

    <p class="gradient-text">Gradient text</p>
    +
    +

    CSS

    .gradient-text {
    +  background: -webkit-linear-gradient(pink, red);
    +  -webkit-text-fill-color: transparent;
    +  -webkit-background-clip: text;
    +}
    +
    +

    Demo

    +
    +

    + Gradient text +

    +
    + +

    Explanation

    +
      +
    1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
    2. +
    3. webkit-text-fill-color: transparent fills the text with a transparent color.
    4. +
    5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
    6. +
    +

    Browser support

    +
    +
    + 90.7% +
    +
    +

    ⚠️ Uses non-standard properties.

    + +
    +
    +

    Hairline border

    +

    Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

    +

    HTML

    <div class="hairline-border">text</div>
    +
    +

    CSS

    .hairline-border {
    +  box-shadow: 0 0 0 1px;
    +}
    +@media (min-resolution: 2dppx) {
    +  .hairline-border {
    +    box-shadow: 0 0 0 0.5px;
    +  }
    +}
    +@media (min-resolution: 3dppx) {
    +  .hairline-border {
    +    box-shadow: 0 0 0 0.33333333px;
    +  }
    +}
    +@media (min-resolution: 4dppx) {
    +  .hairline-border {
    +    box-shadow: 0 0 0 0.25px;
    +  }
    +}
    +
    +

    Demo

    +
    +

    Text with a hairline border around it.

    +
    + +

    Explanation

    +
      +
    1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
    2. +
    3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
    4. +
    +

    Browser Support

    +
    +
    + 95.0% +
    +
    +

    ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

    + +
    +

    *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

    +
    +
    +

    Horizontal and vertical centering

    +

    Horizontally and vertically centers a child element within a parent element.

    +

    HTML

    <div class="horizontal-and-vertical-centering">
    +  <div class="child"></div>
    +</div>
    +
    +

    CSS

    .horizontal-and-vertical-centering {
    +  display: flex;
    +  justify-content: center;
    +  align-items: center;
    +}
    +
    +

    Demo

    +
    +
    +

    Centered content.

    +
    +
    + +

    Explanation

    +
      +
    1. display: flex enables flexbox.
    2. +
    3. justify-content: center centers the child horizontally.
    4. +
    5. align-items: center centers the child vertically.
    6. +
    +

    Browser support

    +
    +
    + 97.8% +
    +
    +

    ⚠️ Needs prefixes for full support.

    + +
    +
    +

    Mouse cursor gradient tracking

    +

    A hover effect where the gradient follows the mouse cursor.

    +

    HTML

    <button class="mouse-cursor-gradient-tracking">
    +  <span>Hover me</span>
    +</button>
    +
    +

    CSS

    .mouse-cursor-gradient-tracking {
    +  position: relative;
    +  background: #2379f7;
    +  padding: 0.5rem 1rem;
    +  font-size: 1.2rem;
    +  border: none;
    +  color: white;
    +  cursor: pointer;
    +  outline: none;
    +  overflow: hidden;
    +}
    +.mouse-cursor-gradient-tracking span {
    +  position: relative;
    +}
    +.mouse-cursor-gradient-tracking::before {
    +  --size: 0;
    +  content: '';
    +  position: absolute;
    +  left: var(--x);
    +  top: var(--y);
    +  width: var(--size);
    +  height: var(--size);
    +  background: radial-gradient(circle closest-side, pink, transparent);
    +  transform: translate(-50%, -50%);
    +  transition: width .2s ease, height .2s ease;
    +}
    +.mouse-cursor-gradient-tracking:hover::before {
    +  --size: 200px;
    +}
    +
    +

    JavaScript

    var btn = document.querySelector('.mouse-cursor-gradient-tracking')
    +btn.onmousemove = function (e) {
    +  var x = e.pageX - btn.offsetLeft
    +  var y = e.pageY - btn.offsetTop
    +  btn.style.setProperty('--x', x + 'px')
    +  btn.style.setProperty('--y', y + 'px')
    +}
    +
    +

    Demo

    +
    + +
    + + +

    Explanation

    +

    TODO

    +

    Note!

    +

    If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

    +
    var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
    +var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
    +
    +

    Browser support

    +
    +
    + 87.2% +
    +
    +

    +
    Requires JavaScript
    + ⚠️ Requires JavaScript. +

    + +
    +
    +

    Overflow scroll gradient

    +

    Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

    +

    HTML

    <div class="overflow-scroll-gradient">
    +  <div class="overflow-scroll-gradient__scroller">
    +    Content to be scrolled
    +  </div>
    +</div>
    +
    +

    CSS

    .overflow-scroll-gradient {
    +  position: relative;
    +}
    +.overflow-scroll-gradient::after {
    +  content: '';
    +  position: absolute;
    +  bottom: 0;
    +  width: 300px;
    +  height: 25px;
    +  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
    +}
    +.overflow-scroll-gradient__scroller {
    +  overflow-y: scroll;
    +  background: white;
    +  width: 300px;
    +  height: 250px;
    +  padding: 15px 0;
    +  line-height: 1.2;
    +  text-align: center;
    +}
    +
    +

    Demo

    +
    +
    +
    + Content to be scrolled +
    +
    +
    + + +

    Explanation

    +
      +
    1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
    2. +
    3. ::after defines a pseudo element.
    4. +
    5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
    6. +
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. +
    9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
    10. +
    11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
    12. +
    13. bottom: 0 positions the pseudo element at the bottom of the parent.
    14. +
    +

    Browser support

    +
    +
    + 94.8% +
    +
    +

    ✅ No caveats.

    + +
    +
    +

    Popout menu

    +

    Reveals an interactive popout menu on hover.

    +

    HTML

    <div class="reference">
    +  <div class="popout-menu">
    +    Popout menu
    +  </div>
    +</div>
    +
    +

    CSS

    .reference {
    +  position: relative;
    +}
    +.popout-menu {
    +  position: absolute;
    +  visibility: hidden;
    +  left: 100%;
    +}
    +.reference:hover > .popout-menu {
    +  visibility: visible;
    +}
    +
    +

    Demo

    +
    +
    +
    + Popout menu +
    +
    +
    + +

    Explanation

    +
      +
    1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
    2. +
    3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
    4. +
    5. left: 100% moves the the popout menu 100% of its parent's width from the left.
    6. +
    7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
    8. +
    9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, + which shows the popout.
    10. +
    +

    Browser support

    +
    +
    + 99+% +
    +
    +

    ✅ No caveats.

    +
    +
    +

    Pretty text underline

    +

    A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

    +

    HTML

    <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
    +
    +

    CSS

    .pretty-text-underline {
    +  display: inline;
    +  font-size: 1.25rem;
    +  text-shadow: 1px 1px 0 #f5f6f9,
    +    -1px 1px 0 #f5f6f9,
    +    -1px -1px 0 #f5f6f9,
    +    1px -1px 0 #f5f6f9;
    +  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
    +  background-position: 0 1.04em;
    +  background-repeat: repeat-x;
    +  background-size: 1px 1px;
    +}
    +.pretty-text-underline::-moz-selection {
    +  background-color: rgba(0, 150, 255, 0.3);
    +  text-shadow: none;
    +}
    +.pretty-text-underline::selection {
    +  background-color: rgba(0, 150, 255, 0.3);
    +  text-shadow: none;
    +}
    +
    +

    Demo

    +
    +

    Pretty text underline without clipping descending letters.

    +
    + +

    Explanation

    +
      +
    1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use + a larger px size.
    2. +
    3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
    4. +
    5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
    6. +
    7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. +
    8. +
    +

    Browser support

    +
    +
    + 94.8% +
    +
    +

    ⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

    + +
    +
    +

    Shape separator

    +

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    +

    HTML

    <div class="shape-separator"></div>
    +
    +

    CSS

    .shape-separator {
    +  position: relative;
    +  height: 48px;
    +}
    +.shape-separator::after {
    +  content: '';
    +  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
    +  position: absolute;
    +  width: 100%;
    +  height: 24px;
    +  bottom: 0;
    +}
    +
    +

    Demo

    +
    +
    +
    + +

    Explanation

    +
      +
    1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
    2. +
    3. ::after defines a pseudo element.
    4. +
    5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. +
    6. +
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. +
    9. width: 100% ensures the element stretches the entire width of its parent.
    10. +
    11. height: 24px is the same height as the shape.
    12. +
    13. bottom: 0 positions the pseudo element at the bottom of the parent.
    14. +
    +

    Browser support

    +
    +
    + 98.0% +
    +
    +

    ✅ No caveats.

    + +
    +
    +

    System font stack

    +

    Uses the native font of the operating system to get close to a native app feel.

    +

    HTML

    <p class="system-font-stack">This text uses the system font.</p>
    +
    +

    CSS

    .system-font-stack {
    +  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
    +}
    +
    +

    Demo

    +
    +

    This text uses the system font.

    +
    + +

    Explanation

    +

    The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

    +
      +
    1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
    2. +
    3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
    4. +
    5. Segoe UI is used on Windows 10
    6. +
    7. Roboto is used on Android
    8. +
    9. Oxygen-Sans is used on GNU+Linux
    10. +
    11. Ubuntu is used on Linux
    12. +
    13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
    14. +
    15. Arial is a font widely supported by all operating systems
    16. +
    17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
    18. +
    +

    Browser support

    +
    +
    + 99+% +
    +
    +

    ✅ No caveats.

    +
    +
    +

    Triangle

    +

    Creates a triangle shape with pure CSS.

    +

    HTML

    <div class="triangle"></div>
    +
    +

    CSS

    .triangle {
    +  width: 0;
    +  height: 0;
    +  border-top: 20px solid #333;
    +  border-left: 20px solid transparent;
    +  border-right: 20px solid transparent;
    +}
    +
    +

    Demo

    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +

    Explanation

    +

    + View this link for a detailed explanation. +

    +

    The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

    +

    Experiment with the px values to change the proportion of the triangle.

    +

    Browser support

    +
    +
    + 99+% +
    +
    +

    ✅ No caveats.

    +
    +
    +

    Truncate text

    +

    If the text is longer than one line, it will be truncated and end with an ellipsis .

    +

    HTML

    <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
    +
    +

    CSS

    .truncate-text {
    +  overflow: hidden;
    +  white-space: nowrap;
    +  text-overflow: ellipsis;
    +}
    +
    +

    Demo

    +
    +

    + This text will be truncated if it exceeds 200px in width. +

    +
    + +

    Explanation

    +
      +
    1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
    2. +
    3. white-space: nowrap prevents the text from exceeding one line in height.
    4. +
    5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
    6. +
    +

    Browser support

    +
    +
    + 98.1% +
    +
    +

    ✅ No caveats.

    + +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.css b/dist/f06fd0495a34430f242f7611190395d6.css new file mode 100644 index 000000000..96d98ca15 --- /dev/null +++ b/dist/f06fd0495a34430f242f7611190395d6.css @@ -0,0 +1,1621 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * 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; +} + +/* Grouping content + ========================================================================== */ + +/** + * 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 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 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 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * 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; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * 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; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * 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; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 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 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +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 in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 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 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} +code[class*='language-'], +pre[class*='language-'] { + color: rgb(50, 75, 100); + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 2; + font-size: 1rem; + -webkit-overflow-scrolling: touch; + margin: 0; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*='language-']::-moz-selection, +pre[class*='language-'] ::-moz-selection, +code[class*='language-']::-moz-selection, +code[class*='language-'] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*='language-'] { + overflow: auto; + padding: 0.75rem 1.25rem; +} + +pre.is-option { + margin: 0; + padding: 0; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #f5f6f9; + border-radius: 0.25rem; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8ca2d3; +} + +.token.selector, +.token.attr-name { + color: #da7800; +} + +.token.punctuation { + color: #93a0c7; +} + +.namespace { + opacity: 0.7; +} + +.token.tag { + color: #e22f70; +} + +.token.property, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #0087ca; +} + +.token.string, +.language-css .token.string, +.token.url, +.token.attr-value, +.token.char, +.token.builtin, +.token.inserted { + color: #008a7e; +} + +.token.operator, +.token.entity, +.style .token.string { + color: #f53737; +} + +.token.important, +.token.atrule, +.token.keyword { + color: #7552ff; +} + +.token.function { + color: #396dff; +} + +.token.regex, +.token.variable { + color: #00a8d4; +} + +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} +html { + font-size: 0.95rem; } + +body { + font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; + background: #f6f7fd; + color: #324b64; + line-height: 1.5; } + +a { + color: #157bda; + text-decoration: none; + word-wrap: break-word; + overflow-wrap: break-word; } + a:hover { + color: #0090ff; } + +hr { + border: 0; + border-top: 1px solid rgba(0, 32, 128, 0.1); } + +ul, +ol { + padding-left: 1.25rem; } + +.container { + max-width: 1000px; + padding: 0 2%; + margin: 0 auto; } + +.main > .container { + padding: 0; } + +@media (min-width: 579px) { + .main > .container { + padding: 0 2%; } } + +@media (min-width: 768px) { + html { + font-size: 1rem; } } + +@media (min-width: 992px) { + .content-wrapper { + margin-left: 200px; } } + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */ +.hamburger { + padding: 1rem; + display: inline-block; + cursor: pointer; + transition-property: opacity, filter; + transition-duration: 0.15s; + transition-timing-function: linear; + font: inherit; + color: inherit; + text-transform: none; + background-color: transparent; + border: 0; + margin: 0; + overflow: visible; + outline: 0; } + +.hamburger:hover { + opacity: 0.7; } + +.hamburger-box { + width: 40px; + height: 20px; + display: inline-block; + position: relative; } + +.hamburger-inner { + display: block; + top: 50%; } + +.hamburger-inner, +.hamburger-inner::before, +.hamburger-inner::after { + width: 36px; + height: 2px; + background-color: #e3f5ff; + border-radius: 4px; + position: absolute; + transition-property: transform; + transition-duration: 0.15s; + transition-timing-function: ease; } + +.hamburger-inner::before, +.hamburger-inner::after { + content: ''; + display: block; } + +.hamburger-inner::before { + top: -10px; } + +.hamburger-inner::after { + bottom: -10px; } + +/* + * 3DX + */ +.hamburger--3dx .hamburger-box { + perspective: 80px; } + +.hamburger--3dx .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx .hamburger-inner::before, +.hamburger--3dx .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(180deg); } + +.hamburger--3dx.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dx.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DX Reverse + */ +.hamburger--3dx-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dx-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx-r .hamburger-inner::before, +.hamburger--3dx-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dx-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateY(-180deg); } + +.hamburger--3dx-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dx-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DY + */ +.hamburger--3dy .hamburger-box { + perspective: 80px; } + +.hamburger--3dy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy .hamburger-inner::before, +.hamburger--3dy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(-180deg); } + +.hamburger--3dy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DY Reverse + */ +.hamburger--3dy-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy-r .hamburger-inner::before, +.hamburger--3dy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg); } + +.hamburger--3dy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DXY + */ +.hamburger--3dxy .hamburger-box { + perspective: 80px; } + +.hamburger--3dxy .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy .hamburger-inner::before, +.hamburger--3dxy .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg); } + +.hamburger--3dxy.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dxy.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * 3DXY Reverse + */ +.hamburger--3dxy-r .hamburger-box { + perspective: 80px; } + +.hamburger--3dxy-r .hamburger-inner { + transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy-r .hamburger-inner::before, +.hamburger--3dxy-r .hamburger-inner::after { + transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } + +.hamburger--3dxy-r.is-active .hamburger-inner { + background-color: transparent; + transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } + +.hamburger--3dxy-r.is-active .hamburger-inner::before { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--3dxy-r.is-active .hamburger-inner::after { + transform: translate3d(0, -10px, 0) rotate(-45deg); } + +/* + * Arrow + */ +.hamburger--arrow.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +.hamburger--arrow.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +/* + * Arrow Right + */ +.hamburger--arrow-r.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +.hamburger--arrow-r.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +/* + * Arrow Alt + */ +.hamburger--arrowalt .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +.hamburger--arrowalt.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +/* + * Arrow Alt Right + */ +.hamburger--arrowalt-r .hamburger-inner::before { + transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt-r .hamburger-inner::after { + transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.hamburger--arrowalt-r.is-active .hamburger-inner::before { + top: 0; + transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); + transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +.hamburger--arrowalt-r.is-active .hamburger-inner::after { + bottom: 0; + transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); + transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } + +/* + * Arrow Turn + */ +.hamburger--arrowturn.is-active .hamburger-inner { + transform: rotate(-180deg); } + +.hamburger--arrowturn.is-active .hamburger-inner::before { + transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +.hamburger--arrowturn.is-active .hamburger-inner::after { + transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +/* + * Arrow Turn Right + */ +.hamburger--arrowturn-r.is-active .hamburger-inner { + transform: rotate(-180deg); } + +.hamburger--arrowturn-r.is-active .hamburger-inner::before { + transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } + +.hamburger--arrowturn-r.is-active .hamburger-inner::after { + transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } + +/* + * Boring + */ +.hamburger--boring .hamburger-inner, +.hamburger--boring .hamburger-inner::before, +.hamburger--boring .hamburger-inner::after { + transition-property: none; } + +.hamburger--boring.is-active .hamburger-inner { + transform: rotate(45deg); } + +.hamburger--boring.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--boring.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); } + +/* + * Collapse + */ +.hamburger--collapse .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } + +.hamburger--collapse .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--collapse.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } + +.hamburger--collapse.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Collapse Reverse + */ +.hamburger--collapse-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0.13s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } + +.hamburger--collapse-r .hamburger-inner::before { + transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--collapse-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--collapse-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } + +.hamburger--collapse-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Elastic + */ +.hamburger--elastic .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; } + +.hamburger--elastic .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(135deg); + transition-delay: 0.075s; } + +.hamburger--elastic.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; } + +.hamburger--elastic.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-270deg); + transition-delay: 0.075s; } + +/* + * Elastic Reverse + */ +.hamburger--elastic-r .hamburger-inner { + top: 2px; + transition-duration: 0.275s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic-r .hamburger-inner::before { + top: 10px; + transition: opacity 0.125s 0.275s ease; } + +.hamburger--elastic-r .hamburger-inner::after { + top: 20px; + transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } + +.hamburger--elastic-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-135deg); + transition-delay: 0.075s; } + +.hamburger--elastic-r.is-active .hamburger-inner::before { + transition-delay: 0s; + opacity: 0; } + +.hamburger--elastic-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(270deg); + transition-delay: 0.075s; } + +/* + * Emphatic + */ +.hamburger--emphatic { + overflow: hidden; } + +.hamburger--emphatic .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; } + +.hamburger--emphatic .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } + +.hamburger--emphatic .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } + +.hamburger--emphatic.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; } + +.hamburger--emphatic.is-active .hamburger-inner::before { + left: -80px; + top: -80px; + transform: translate3d(80px, 80px, 0) rotate(45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +.hamburger--emphatic.is-active .hamburger-inner::after { + right: -80px; + top: -80px; + transform: translate3d(-80px, 80px, 0) rotate(-45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +/* + * Emphatic Reverse + */ +.hamburger--emphatic-r { + overflow: hidden; } + +.hamburger--emphatic-r .hamburger-inner { + transition: background-color 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r .hamburger-inner::before { + left: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r .hamburger-inner::after { + top: 10px; + right: 0; + transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } + +.hamburger--emphatic-r.is-active .hamburger-inner { + transition-delay: 0s; + transition-timing-function: ease-out; + background-color: transparent; } + +.hamburger--emphatic-r.is-active .hamburger-inner::before { + left: -80px; + top: 80px; + transform: translate3d(80px, -80px, 0) rotate(-45deg); + transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +.hamburger--emphatic-r.is-active .hamburger-inner::after { + right: -80px; + top: 80px; + transform: translate3d(-80px, -80px, 0) rotate(45deg); + transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } + +/* + * Minus + */ +.hamburger--minus .hamburger-inner::before, +.hamburger--minus .hamburger-inner::after { + transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } + +.hamburger--minus.is-active .hamburger-inner::before, +.hamburger--minus.is-active .hamburger-inner::after { + opacity: 0; + transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } + +.hamburger--minus.is-active .hamburger-inner::before { + top: 0; } + +.hamburger--minus.is-active .hamburger-inner::after { + bottom: 0; } + +/* + * Slider + */ +.hamburger--slider .hamburger-inner { + top: 2px; } + +.hamburger--slider .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; } + +.hamburger--slider .hamburger-inner::after { + top: 20px; } + +.hamburger--slider.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--slider.is-active .hamburger-inner::before { + transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); + opacity: 0; } + +.hamburger--slider.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(-90deg); } + +/* + * Slider Reverse + */ +.hamburger--slider-r .hamburger-inner { + top: 2px; } + +.hamburger--slider-r .hamburger-inner::before { + top: 10px; + transition-property: transform, opacity; + transition-timing-function: ease; + transition-duration: 0.15s; } + +.hamburger--slider-r .hamburger-inner::after { + top: 20px; } + +.hamburger--slider-r.is-active .hamburger-inner { + transform: translate3d(0, 10px, 0) rotate(-45deg); } + +.hamburger--slider-r.is-active .hamburger-inner::before { + transform: rotate(45deg) translate3d(5.71429px, -6px, 0); + opacity: 0; } + +.hamburger--slider-r.is-active .hamburger-inner::after { + transform: translate3d(0, -20px, 0) rotate(90deg); } + +/* + * Spin + */ +.hamburger--spin .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } + +.hamburger--spin .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin.is-active .hamburger-inner { + transform: rotate(225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spin.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } + +.hamburger--spin.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Spin Reverse + */ +.hamburger--spin-r .hamburger-inner { + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin-r .hamburger-inner::before { + transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } + +.hamburger--spin-r .hamburger-inner::after { + transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spin-r.is-active .hamburger-inner { + transform: rotate(-225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spin-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } + +.hamburger--spin-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); + transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Spring + */ +.hamburger--spring .hamburger-inner { + top: 2px; + transition: background-color 0s 0.13s linear; } + +.hamburger--spring .hamburger-inner::before { + top: 10px; + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring .hamburger-inner::after { + top: 20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring.is-active .hamburger-inner { + transition-delay: 0.22s; + background-color: transparent; } + +.hamburger--spring.is-active .hamburger-inner::before { + top: 0; + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(45deg); } + +.hamburger--spring.is-active .hamburger-inner::after { + top: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 10px, 0) rotate(-45deg); } + +/* + * Spring Reverse + */ +.hamburger--spring-r .hamburger-inner { + top: auto; + bottom: 0; + transition-duration: 0.13s; + transition-delay: 0s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring-r .hamburger-inner::after { + top: -20px; + transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } + +.hamburger--spring-r .hamburger-inner::before { + transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--spring-r.is-active .hamburger-inner { + transform: translate3d(0, -10px, 0) rotate(-45deg); + transition-delay: 0.22s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--spring-r.is-active .hamburger-inner::after { + top: 0; + opacity: 0; + transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } + +.hamburger--spring-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(90deg); + transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Stand + */ +.hamburger--stand .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } + +.hamburger--stand .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand.is-active .hamburger-inner { + transform: rotate(90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } + +.hamburger--stand.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--stand.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Stand Reverse + */ +.hamburger--stand-r .hamburger-inner { + transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } + +.hamburger--stand-r .hamburger-inner::before { + transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand-r .hamburger-inner::after { + transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--stand-r.is-active .hamburger-inner { + transform: rotate(-90deg); + background-color: transparent; + transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } + +.hamburger--stand-r.is-active .hamburger-inner::before { + top: 0; + transform: rotate(-45deg); + transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--stand-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(45deg); + transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Squeeze + */ +.hamburger--squeeze .hamburger-inner { + transition-duration: 0.075s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--squeeze .hamburger-inner::before { + transition: top 0.075s 0.12s ease, opacity 0.075s ease; } + +.hamburger--squeeze .hamburger-inner::after { + transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } + +.hamburger--squeeze.is-active .hamburger-inner { + transform: rotate(45deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + +.hamburger--squeeze.is-active .hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.075s ease, opacity 0.075s 0.12s ease; } + +.hamburger--squeeze.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); + transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } + +/* + * Vortex + */ +.hamburger--vortex .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex .hamburger-inner::before, +.hamburger--vortex .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; } + +.hamburger--vortex .hamburger-inner::before { + transition-property: top, opacity; } + +.hamburger--vortex .hamburger-inner::after { + transition-property: bottom, transform; } + +.hamburger--vortex.is-active .hamburger-inner { + transform: rotate(765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex.is-active .hamburger-inner::before, +.hamburger--vortex.is-active .hamburger-inner::after { + transition-delay: 0s; } + +.hamburger--vortex.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--vortex.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(90deg); } + +/* + * Vortex Reverse + */ +.hamburger--vortex-r .hamburger-inner { + transition-duration: 0.2s; + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex-r .hamburger-inner::before, +.hamburger--vortex-r .hamburger-inner::after { + transition-duration: 0s; + transition-delay: 0.1s; + transition-timing-function: linear; } + +.hamburger--vortex-r .hamburger-inner::before { + transition-property: top, opacity; } + +.hamburger--vortex-r .hamburger-inner::after { + transition-property: bottom, transform; } + +.hamburger--vortex-r.is-active .hamburger-inner { + transform: rotate(-765deg); + transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } + +.hamburger--vortex-r.is-active .hamburger-inner::before, +.hamburger--vortex-r.is-active .hamburger-inner::after { + transition-delay: 0s; } + +.hamburger--vortex-r.is-active .hamburger-inner::before { + top: 0; + opacity: 0; } + +.hamburger--vortex-r.is-active .hamburger-inner::after { + bottom: 0; + transform: rotate(-90deg); } + +.sidebar { + background: #202e4e; + position: fixed; + z-index: 2; + width: 100%; + height: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } + .sidebar__menu { + position: absolute; + font-weight: bold; + border: none; + text-align: left; + text-transform: uppercase; + left: 0; + top: 0; + padding: 0.75rem 1rem; + outline: 0; } + .sidebar__menu-icon { + height: 24px; } + .sidebar__links { + background: #202e4e; + overflow-y: auto; + transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + transform-origin: 0% 0%; + transform: rotateX(-90deg); + visibility: hidden; + opacity: 0; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + max-height: 378px; + margin-top: 44px; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } + .sidebar__links.is-active { + transform: rotateX(0); + visibility: visible; + opacity: 1; } + .sidebar__link { + display: block; + color: #e3f5ff; + padding: 0.5rem 0.75rem; + transition: all 0.1s ease-out; + border-left: 2px solid #576a85; + margin: 0.5rem; + font-weight: 500; + font-size: 0.95rem; } + .sidebar__link:hover { + color: #88f4ff; + background: rgba(255, 255, 255, 0.1); + border-color: pink; } + +@media (min-width: 992px) { + .sidebar { + left: 0; + top: 0; + bottom: 0; + width: 15%; + max-width: 250px; + min-width: 200px; + height: 100%; + background: linear-gradient(-30deg, #2a3d67, #14264e); + box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); + overflow-y: auto; + color: white; } + .sidebar::-webkit-scrollbar-track { + background-color: rgba(0, 0, 0, 0.6); } + .sidebar::-webkit-scrollbar { + width: 10px; + background-color: #4b6191; } + .sidebar::-webkit-scrollbar-thumb { + background-color: #4b6191; } + .sidebar__links { + background: none; + box-shadow: none; + visibility: visible; + opacity: 1; + transform: rotateX(0); + margin-top: 0; + max-height: none; } + .sidebar__menu { + display: none; } } + +.header { + position: relative; + padding: 5rem 1rem 4rem; + background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); + color: white; + margin-bottom: 2rem; + text-align: center; + overflow: hidden; + z-index: 1; } + .header::before { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); + width: 150%; + height: 150%; + top: 0; + left: 0; + opacity: 0.1; + z-index: -1; } + .header::after { + content: ''; + position: absolute; + background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); + background-size: 24px 24px; + width: 100%; + left: 0; + height: 24px; + bottom: -1px; } + .header__logo { + height: 146px; + user-select: none; } + .header__heading { + font-weight: 200; + font-size: 3rem; + margin: 1rem 0; + line-height: 1.2; } + .header__description { + font-size: 1.5rem; + max-width: 600px; + margin: 0 auto 1rem; + font-weight: 300; + letter-spacing: 0.4px; } + .header__css { + background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-size: 4rem; } + .header__github-button { + color: white; } + +@media (min-width: 579px) { + .header { + padding: 6rem 0 5rem; } + .header__heading { + font-size: 3.75rem; } } + +@media (min-width: 992px) { + .header { + padding: 2.5rem 0 5rem; } } + +.snippet { + position: relative; + background: white; + padding: 2rem 5%; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; + border-radius: 0.25rem; + font-size: 1.1rem; + margin-bottom: 1.5rem; } + .snippet h3 { + font-size: 2rem; + padding: 0.5rem 0; + border-bottom: 1px solid rgba(0, 32, 128, 0.1); + margin-bottom: 1.25rem; + margin-top: 0; + line-height: 1.3; } + .snippet code:not([class*='lang']) { + background: #fcfaff; + border: 1px solid #e2ddff; + color: #4b00da; + border-radius: 0.15rem; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 0.9rem; + padding: 0.2rem 0.4rem; + margin: 0 0.1rem; } + .snippet ol { + margin-top: 0.5rem; } + .snippet ol > li { + margin-bottom: 0.5rem; } + .snippet > p { + margin-top: 0.5rem; } + .snippet h4 { + display: inline-block; + margin: 1rem 0 0.5rem; + line-height: 2; + padding: 0 0.5rem; + border-radius: 3px; + font-size: 0.9rem; + text-transform: uppercase; + background: #333; + border: 1px solid #c6d6ea; + border-bottom-color: #b3c9e3; + background: white; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } + .snippet h4[data-type='HTML'] { + color: white; + border: none; + background: linear-gradient(135deg, #ff4c9f, #ff7b74); } + .snippet h4[data-type='CSS'] { + color: white; + border: none; + background: linear-gradient(135deg, #7983ff, #5f9de9); } + .snippet h4[data-type='JavaScript'] { + color: white; + border: none; + background: linear-gradient(135deg, #ffb000, #f58818); } + .snippet__browser-support { + display: inline-block; + font-size: 2rem; + font-weight: 200; + line-height: 1; + margin: 0.5rem 0; } + .snippet__subheading.is-html { + color: #e22f70; } + .snippet__subheading.is-css { + color: #0a91d4; } + .snippet__subheading.is-explanation { + color: #4b00da; } + .snippet__support-note { + color: #9fa5b5; + font-weight: bold; } + .snippet__requires-javascript { + position: absolute; + background: red; + background: linear-gradient(145deg, #ff003b, #ff4b39); + color: white; + padding: 0.25rem 0.5rem; + font-size: 0.9rem; + transform: rotate(20deg); + font-weight: bold; + top: 1rem; + right: 0; } + +.snippet-demo { + background: #f5f6f9; + border-radius: 0.25rem; + padding: 0.75rem 1.25rem; } + .snippet-demo.is-distinct { + background: linear-gradient(135deg, #ff4c9f, #ff7b74); } + +@media (min-width: 768px) { + .snippet__requires-javascript { + right: -0.5rem; } } + +.back-to-top-button { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + font-size: 2rem; + font-weight: bold; + background: white; + width: 4rem; + height: 4rem; + position: fixed; + right: 2rem; + bottom: 2rem; + border-radius: 50%; + user-select: none; + box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); + transition: all 0.2s ease-out; + visibility: hidden; + opacity: 0; + z-index: 1; + border: 1px solid rgba(0, 32, 128, 0.1); + outline: 0; } + .back-to-top-button:hover, .back-to-top-button:focus { + transform: scale(1.1); + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); + color: #35a8ff; } + .back-to-top-button:focus { + box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; + outline-style: none; } + .back-to-top-button.is-visible { + visibility: visible; + opacity: 1; } diff --git a/dist/f06fd0495a34430f242f7611190395d6.js b/dist/f06fd0495a34430f242f7611190395d6.js new file mode 100644 index 000000000..c5c3cb94d --- /dev/null +++ b/dist/f06fd0495a34430f242f7611190395d6.js @@ -0,0 +1,1479 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles + +// eslint-disable-next-line no-global-assign +require = (function (modules, cache, entry) { + // Save the require from previous bundle to this closure if any + var previousRequire = typeof require === "function" && require; + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = typeof require === "function" && require; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + + var module = cache[name] = new newRequire.Module(name); + + modules[name][0].call(module.exports, localRequire, module, module.exports); + } + + return cache[name].exports; + + function localRequire(x){ + return newRequire(localRequire.resolve(x)); + } + + function resolve(x){ + return modules[name][1][x] || x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + + for (var i = 0; i < entry.length; i++) { + newRequire(entry[i]); + } + + // Override the current require with this new one + return newRequire; +})({18:[function(require,module,exports) { +var bundleURL = null; +function getBundleURLCached() { + if (!bundleURL) { + bundleURL = getBundleURL(); + } + + return bundleURL; +} + +function getBundleURL() { + // Attempt to find the URL of the current script and use that as the base URL + try { + throw new Error(); + } catch (err) { + var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); + if (matches) { + return getBaseURL(matches[0]); + } + } + + return '/'; +} + +function getBaseURL(url) { + return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; +} + +exports.getBundleURL = getBundleURLCached; +exports.getBaseURL = getBaseURL; +},{}],15:[function(require,module,exports) { +var bundle = require('./bundle-url'); + +function updateLink(link) { + var newLink = link.cloneNode(); + newLink.onload = function () { + link.remove(); + }; + newLink.href = link.href.split('?')[0] + '?' + Date.now(); + link.parentNode.insertBefore(newLink, link.nextSibling); +} + +var cssTimeout = null; +function reloadCSS() { + if (cssTimeout) { + return; + } + + cssTimeout = setTimeout(function () { + var links = document.querySelectorAll('link[rel="stylesheet"]'); + for (var i = 0; i < links.length; i++) { + if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { + updateLink(links[i]); + } + } + + cssTimeout = null; + }, 50); +} + +module.exports = reloadCSS; +},{"./bundle-url":18}],20:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":15}],19:[function(require,module,exports) { +var global = (1,eval)("this"); + +/* ********************************************** + Begin prism-core.js +********************************************** */ + +var _self = (typeof window !== 'undefined') + ? window // if in browser + : ( + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) + ? self // if in worker + : {} // if in node js + ); + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * MIT license http://www.opensource.org/licenses/mit-license.php/ + * @author Lea Verou http://lea.verou.me + */ + +var Prism = (function(){ + +// Private helper vars +var lang = /\blang(?:uage)?-(\w+)\b/i; +var uniqueId = 0; + +var _ = _self.Prism = { + manual: _self.Prism && _self.Prism.manual, + disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, + util: { + encode: function (tokens) { + if (tokens instanceof Token) { + return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); + } else if (_.util.type(tokens) === 'Array') { + return tokens.map(_.util.encode); + } else { + return tokens.replace(/&/g, '&').replace(/ text.length) { + // Something went terribly wrong, ABORT, ABORT! + return; + } + + if (str instanceof Token) { + continue; + } + + pattern.lastIndex = 0; + + var match = pattern.exec(str), + delNum = 1; + + // Greedy patterns can override/remove up to two previously matched tokens + if (!match && greedy && i != strarr.length - 1) { + pattern.lastIndex = pos; + match = pattern.exec(text); + if (!match) { + break; + } + + var from = match.index + (lookbehind ? match[1].length : 0), + to = match.index + match[0].length, + k = i, + p = pos; + + for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { + p += strarr[k].length; + // Move the index i to the element in strarr that is closest to from + if (from >= p) { + ++i; + pos = p; + } + } + + /* + * If strarr[i] is a Token, then the match starts inside another Token, which is invalid + * If strarr[k - 1] is greedy we are in conflict with another greedy pattern + */ + if (strarr[i] instanceof Token || strarr[k - 1].greedy) { + continue; + } + + // Number of tokens to delete and replace with the new match + delNum = k - i; + str = text.slice(pos, p); + match.index -= pos; + } + + if (!match) { + if (oneshot) { + break; + } + + continue; + } + + if(lookbehind) { + lookbehindLength = match[1].length; + } + + var from = match.index + lookbehindLength, + match = match[0].slice(lookbehindLength), + to = from + match.length, + before = str.slice(0, from), + after = str.slice(to); + + var args = [i, delNum]; + + if (before) { + ++i; + pos += before.length; + args.push(before); + } + + var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); + + args.push(wrapped); + + if (after) { + args.push(after); + } + + Array.prototype.splice.apply(strarr, args); + + if (delNum != 1) + _.matchGrammar(text, strarr, grammar, i, pos, true, token); + + if (oneshot) + break; + } + } + } + }, + + tokenize: function(text, grammar, language) { + var strarr = [text]; + + var rest = grammar.rest; + + if (rest) { + for (var token in rest) { + grammar[token] = rest[token]; + } + + delete grammar.rest; + } + + _.matchGrammar(text, strarr, grammar, 0, 0, false); + + return strarr; + }, + + hooks: { + all: {}, + + add: function (name, callback) { + var hooks = _.hooks.all; + + hooks[name] = hooks[name] || []; + + hooks[name].push(callback); + }, + + run: function (name, env) { + var callbacks = _.hooks.all[name]; + + if (!callbacks || !callbacks.length) { + return; + } + + for (var i=0, callback; callback = callbacks[i++];) { + callback(env); + } + } + } +}; + +var Token = _.Token = function(type, content, alias, matchedStr, greedy) { + this.type = type; + this.content = content; + this.alias = alias; + // Copy of the full string this token was created from + this.length = (matchedStr || "").length|0; + this.greedy = !!greedy; +}; + +Token.stringify = function(o, language, parent) { + if (typeof o == 'string') { + return o; + } + + if (_.util.type(o) === 'Array') { + return o.map(function(element) { + return Token.stringify(element, language, o); + }).join(''); + } + + var env = { + type: o.type, + content: Token.stringify(o.content, language, parent), + tag: 'span', + classes: ['token', o.type], + attributes: {}, + language: language, + parent: parent + }; + + if (o.alias) { + var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; + Array.prototype.push.apply(env.classes, aliases); + } + + _.hooks.run('wrap', env); + + var attributes = Object.keys(env.attributes).map(function(name) { + return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; + }).join(' '); + + return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; + +}; + +if (!_self.document) { + if (!_self.addEventListener) { + // in Node.js + return _self.Prism; + } + + if (!_.disableWorkerMessageHandler) { + // In worker + _self.addEventListener('message', function (evt) { + var message = JSON.parse(evt.data), + lang = message.language, + code = message.code, + immediateClose = message.immediateClose; + + _self.postMessage(_.highlight(code, _.languages[lang], lang)); + if (immediateClose) { + _self.close(); + } + }, false); + } + + return _self.Prism; +} + +//Get current script and highlight +var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); + +if (script) { + _.filename = script.src; + + if (!_.manual && !script.hasAttribute('data-manual')) { + if(document.readyState !== "loading") { + if (window.requestAnimationFrame) { + window.requestAnimationFrame(_.highlightAll); + } else { + window.setTimeout(_.highlightAll, 16); + } + } + else { + document.addEventListener('DOMContentLoaded', _.highlightAll); + } + } +} + +return _self.Prism; + +})(); + +if (typeof module !== 'undefined' && module.exports) { + module.exports = Prism; +} + +// hack for components to work correctly in node.js +if (typeof global !== 'undefined') { + global.Prism = Prism; +} + + +/* ********************************************** + Begin prism-markup.js +********************************************** */ + +Prism.languages.markup = { + 'comment': //, + 'prolog': /<\?[\s\S]+?\?>/, + 'doctype': //i, + 'cdata': //i, + 'tag': { + pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, + inside: { + 'tag': { + pattern: /^<\/?[^\s>\/]+/i, + inside: { + 'punctuation': /^<\/?/, + 'namespace': /^[^\s>\/:]+:/ + } + }, + 'attr-value': { + pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, + inside: { + 'punctuation': [ + /^=/, + { + pattern: /(^|[^\\])["']/, + lookbehind: true + } + ] + } + }, + 'punctuation': /\/?>/, + 'attr-name': { + pattern: /[^\s>\/]+/, + inside: { + 'namespace': /^[^\s>\/:]+:/ + } + } + + } + }, + 'entity': /&#?[\da-z]{1,8};/i +}; + +Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = + Prism.languages.markup['entity']; + +// Plugin to make entity title show the real entity, idea by Roman Komarov +Prism.hooks.add('wrap', function(env) { + + if (env.type === 'entity') { + env.attributes['title'] = env.content.replace(/&/, '&'); + } +}); + +Prism.languages.xml = Prism.languages.markup; +Prism.languages.html = Prism.languages.markup; +Prism.languages.mathml = Prism.languages.markup; +Prism.languages.svg = Prism.languages.markup; + + +/* ********************************************** + Begin prism-css.js +********************************************** */ + +Prism.languages.css = { + 'comment': /\/\*[\s\S]*?\*\//, + 'atrule': { + pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, + inside: { + 'rule': /@[\w-]+/ + // See rest below + } + }, + 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, + 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, + 'string': { + pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, + 'important': /\B!important\b/i, + 'function': /[-a-z0-9]+(?=\()/i, + 'punctuation': /[(){};:]/ +}; + +Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'style': { + pattern: /()[\s\S]*?(?=<\/style>)/i, + lookbehind: true, + inside: Prism.languages.css, + alias: 'language-css', + greedy: true + } + }); + + Prism.languages.insertBefore('inside', 'attr-value', { + 'style-attr': { + pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, + inside: { + 'attr-name': { + pattern: /^\s*style/i, + inside: Prism.languages.markup.tag.inside + }, + 'punctuation': /^\s*=\s*['"]|['"]\s*$/, + 'attr-value': { + pattern: /.+/i, + inside: Prism.languages.css + } + }, + alias: 'language-css' + } + }, Prism.languages.markup.tag); +} + +/* ********************************************** + Begin prism-clike.js +********************************************** */ + +Prism.languages.clike = { + 'comment': [ + { + pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, + lookbehind: true + }, + { + pattern: /(^|[^\\:])\/\/.*/, + lookbehind: true + } + ], + 'string': { + pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'class-name': { + pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, + lookbehind: true, + 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': /[a-z0-9_]+(?=\()/i, + 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, + 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, + 'punctuation': /[{}[\];(),.:]/ +}; + + +/* ********************************************** + Begin prism-javascript.js +********************************************** */ + +Prism.languages.javascript = Prism.languages.extend('clike', { + 'keyword': /\b(?: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|var|void|while|with|yield)\b/, + 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, + // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) + 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, + 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ +}); + +Prism.languages.insertBefore('javascript', 'keyword', { + 'regex': { + pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, + lookbehind: true, + greedy: true + }, + // This must be declared before keyword because we use "function" inside the look-forward + 'function-variable': { + pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, + alias: 'function' + } +}); + +Prism.languages.insertBefore('javascript', 'string', { + 'template-string': { + pattern: /`(?:\\[\s\S]|[^\\`])*`/, + greedy: true, + inside: { + 'interpolation': { + pattern: /\$\{[^}]+\}/, + inside: { + 'interpolation-punctuation': { + pattern: /^\$\{|\}$/, + alias: 'punctuation' + }, + rest: Prism.languages.javascript + } + }, + 'string': /[\s\S]+/ + } + } +}); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'script': { + pattern: /()[\s\S]*?(?=<\/script>)/i, + lookbehind: true, + inside: Prism.languages.javascript, + alias: 'language-javascript', + greedy: true + } + }); +} + +Prism.languages.js = Prism.languages.javascript; + + +/* ********************************************** + Begin prism-file-highlight.js +********************************************** */ + +(function () { + if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { + return; + } + + self.Prism.fileHighlight = function() { + + var Extensions = { + 'js': 'javascript', + 'py': 'python', + 'rb': 'ruby', + 'ps1': 'powershell', + 'psm1': 'powershell', + 'sh': 'bash', + 'bat': 'batch', + 'h': 'c', + 'tex': 'latex' + }; + + Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { + var src = pre.getAttribute('data-src'); + + var language, parent = pre; + var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; + while (parent && !lang.test(parent.className)) { + parent = parent.parentNode; + } + + if (parent) { + language = (pre.className.match(lang) || [, ''])[1]; + } + + if (!language) { + var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; + language = Extensions[extension] || extension; + } + + var code = document.createElement('code'); + code.className = 'language-' + language; + + pre.textContent = ''; + + code.textContent = 'Loading…'; + + pre.appendChild(code); + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', src, true); + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + + if (xhr.status < 400 && xhr.responseText) { + code.textContent = xhr.responseText; + + Prism.highlightElement(code); + } + else if (xhr.status >= 400) { + code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; + } + else { + code.textContent = '✖ Error: File does not exist or is empty'; + } + } + }; + + xhr.send(null); + }); + + }; + + document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); + +})(); + +},{}],10:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":15}],9:[function(require,module,exports) { + + var reloadCSS = require('_css_loader'); + module.hot.dispose(reloadCSS); + module.hot.accept(reloadCSS); + +},{"_css_loader":15}],11:[function(require,module,exports) { +var e = Element.prototype; +if (!e.matches) { + e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; +} +if (!e.closest) { + e.closest = function (s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; +} +},{}],17:[function(require,module,exports) { +var global = (1,eval)("this"); +var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +;(function (global, factory) { + (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); +})(this, function () { + 'use strict'; + + // Robert Penner's easeInOutQuad + + // find the rest of his easing functions here: http://robertpenner.com/easing/ + // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js + + var easeInOutQuad = function easeInOutQuad(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; + }; + + var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { + return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + }; + + var jumper = function jumper() { + // private variable cache + // no variables are created during a jump, preventing memory leaks + + var element = void 0; // element to scroll to (node) + + var start = void 0; // where scroll starts (px) + var stop = void 0; // where scroll stops (px) + + var offset = void 0; // adjustment from the stop position (px) + var easing = void 0; // easing function (function) + var a11y = void 0; // accessibility support flag (boolean) + + var distance = void 0; // distance of scroll (px) + var duration = void 0; // scroll duration (ms) + + var timeStart = void 0; // time scroll started (ms) + var timeElapsed = void 0; // time spent scrolling thus far (ms) + + var next = void 0; // next scroll position (px) + + var callback = void 0; // to call when done scrolling (function) + + // scroll position helper + + function location() { + return window.scrollY || window.pageYOffset; + } + + // element offset helper + + function top(element) { + return element.getBoundingClientRect().top + start; + } + + // rAF loop helper + + function loop(timeCurrent) { + // store time scroll started, if not started already + if (!timeStart) { + timeStart = timeCurrent; + } + + // determine time spent scrolling so far + timeElapsed = timeCurrent - timeStart; + + // calculate next scroll position + next = easing(timeElapsed, start, distance, duration); + + // scroll to it + window.scrollTo(0, next); + + // check progress + timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop + : done(); // scrolling is done + } + + // scroll finished helper + + function done() { + // account for rAF time rounding inaccuracies + window.scrollTo(0, start + distance); + + // if scrolling to an element, and accessibility is enabled + if (element && a11y) { + // add tabindex indicating programmatic focus + element.setAttribute('tabindex', '-1'); + + // focus the element + element.focus(); + } + + // if it exists, fire the callback + if (typeof callback === 'function') { + callback(); + } + + // reset time for next jump + timeStart = false; + } + + // API + + function jump(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + // resolve options, or use defaults + duration = options.duration || 1000; + offset = options.offset || 0; + callback = options.callback; // "undefined" is a suitable default, and won't be called + easing = options.easing || easeInOutQuad; + a11y = options.a11y || false; + + // cache starting position + start = location(); + + // resolve target + switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { + // scroll from current position + case 'number': + element = undefined; // no element to scroll to + a11y = false; // make sure accessibility is off + stop = start + target; + break; + + // scroll to element (node) + // bounding rect is relative to the viewport + case 'object': + element = target; + stop = top(element); + break; + + // scroll to element (selector) + // bounding rect is relative to the viewport + case 'string': + element = document.querySelector(target); + stop = top(element); + break; + } + + // resolve scroll distance, accounting for offset + distance = stop - start + offset; + + // resolve duration + switch (_typeof(options.duration)) { + // number in ms + case 'number': + duration = options.duration; + break; + + // function passed the distance of the scroll + case 'function': + duration = options.duration(distance); + break; + } + + // start the loop + window.requestAnimationFrame(loop); + } + + // expose only the jump method + return jump; + }; + + // export singleton + + var singleton = jumper(); + + return function () { + var scrolling = void 0; + var end = function end() { + return scrolling = false; + }; + return function (to) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (scrolling) return; + var scrollY = window.scrollY || window.pageYOffset; + if (to !== '.header') location.hash = to; + scroll(0, scrollY); + scrolling = true; + setTimeout(end, options.duration || 0); + return singleton(to, options); + }; + }(); +}); +},{}],16:[function(require,module,exports) { +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var select = exports.select = function select(s) { + return document.querySelector(s); +}; +var selectAll = exports.selectAll = function selectAll(s) { + return [].slice.call(document.querySelectorAll(s)); +}; +var scrollY = exports.scrollY = function scrollY() { + return window.scrollY || window.pageYOffset; +}; +var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { + return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; +}; + +/* +* Make iOS behave normally. +*/ +if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { + document.body.style.cursor = 'pointer'; +} + +/* +* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font +* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. +* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. +* Must be applied to all browsers for now. +*/ +;(function () { + var ua = navigator.userAgent; + + // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica + var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; + + // Chrome v64 and FF v58 fix the issue + var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; + + var allEls = [].slice.call(document.querySelectorAll('*')); + + if (isRelevantMacOS && isAffectedBrowser) { + document.documentElement.style.letterSpacing = '-0.3px'; + allEls.forEach(function (el) { + var fontSize = parseFloat(getComputedStyle(el).fontSize); + if (fontSize >= 20) el.style.letterSpacing = '0.3px'; + }); + } else if (isRelevantMacOS && !isAffectedBrowser) { + // Italics fix + allEls.forEach(function (el) { + var _getComputedStyle = getComputedStyle(el), + fontSize = _getComputedStyle.fontSize, + fontStyle = _getComputedStyle.fontStyle; + + if (fontStyle === 'italic') { + el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; + } + }); + } +})(); +},{}],12:[function(require,module,exports) { +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _jump = require('../deps/jump'); + +var _jump2 = _interopRequireDefault(_jump); + +var _utils = require('../deps/utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var menu = (0, _utils.select)('.hamburger'); +var links = (0, _utils.select)('.sidebar__links'); +var ACTIVE_CLASS = 'is-active'; + +var toggle = function toggle() { + return [menu, links].forEach(function (el) { + return el.classList.toggle(ACTIVE_CLASS); + }); +}; + +menu.addEventListener('click', toggle); + +links.addEventListener('click', function (e) { + setTimeout(toggle, 40); + if (e.target.classList.contains('sidebar__link')) { + e.preventDefault(); + (0, _jump2.default)(e.target.getAttribute('href'), { + duration: 750, + offset: window.innerWidth <= 768 ? -64 : -32, + easing: _utils.easeOutQuint + }); + } +}); + +document.addEventListener('click', function (e) { + if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { + toggle(); + } +}); + +exports.default = { toggle: toggle }; +},{"../deps/jump":17,"../deps/utils":16}],13:[function(require,module,exports) { +'use strict'; + +var _jump = require('../deps/jump'); + +var _jump2 = _interopRequireDefault(_jump); + +var _utils = require('../deps/utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var backToTopButton = (0, _utils.select)('.back-to-top-button'); + +window.addEventListener('scroll', function () { + backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); +}); +backToTopButton.onclick = function () { + (0, _jump2.default)('.header', { + duration: 750, + easing: _utils.easeOutQuint + }); +}; +},{"../deps/jump":17,"../deps/utils":16}],7:[function(require,module,exports) { +'use strict'; + +require('normalize.css'); + +require('prismjs'); + +require('../css/deps/prism.css'); + +require('../css/index.scss'); + +require('./deps/polyfills'); + +var _Menu = require('./components/Menu'); + +var _Menu2 = _interopRequireDefault(_Menu); + +var _BackToTopButton = require('./components/BackToTopButton'); + +var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"normalize.css":20,"prismjs":19,"../css/deps/prism.css":10,"../css/index.scss":9,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}],21:[function(require,module,exports) { + +var global = (1, eval)('this'); +var OldModule = module.bundle.Module; +function Module(moduleName) { + OldModule.call(this, moduleName); + this.hot = { + accept: function (fn) { + this._acceptCallback = fn || function () {}; + }, + dispose: function (fn) { + this._disposeCallback = fn; + } + }; +} + +module.bundle.Module = Module; + +var parent = module.bundle.parent; +if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { + var hostname = '' || location.hostname; + var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; + var ws = new WebSocket(protocol + '://' + hostname + ':' + '57220' + '/'); + ws.onmessage = function (event) { + var data = JSON.parse(event.data); + + if (data.type === 'update') { + data.assets.forEach(function (asset) { + hmrApply(global.require, asset); + }); + + data.assets.forEach(function (asset) { + if (!asset.isNew) { + hmrAccept(global.require, asset.id); + } + }); + } + + if (data.type === 'reload') { + ws.close(); + ws.onclose = function () { + location.reload(); + }; + } + + if (data.type === 'error-resolved') { + console.log('[parcel] ✨ Error resolved'); + } + + if (data.type === 'error') { + console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); + } + }; +} + +function getParents(bundle, id) { + var modules = bundle.modules; + if (!modules) { + return []; + } + + var parents = []; + var k, d, dep; + + for (k in modules) { + for (d in modules[k][1]) { + dep = modules[k][1][d]; + if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { + parents.push(+k); + } + } + } + + if (bundle.parent) { + parents = parents.concat(getParents(bundle.parent, id)); + } + + return parents; +} + +function hmrApply(bundle, asset) { + var modules = bundle.modules; + if (!modules) { + return; + } + + if (modules[asset.id] || !bundle.parent) { + var fn = new Function('require', 'module', 'exports', asset.generated.js); + asset.isNew = !modules[asset.id]; + modules[asset.id] = [fn, asset.deps]; + } else if (bundle.parent) { + hmrApply(bundle.parent, asset); + } +} + +function hmrAccept(bundle, id) { + var modules = bundle.modules; + if (!modules) { + return; + } + + if (!modules[id] && bundle.parent) { + return hmrAccept(bundle.parent, id); + } + + var cached = bundle.cache[id]; + if (cached && cached.hot._disposeCallback) { + cached.hot._disposeCallback(); + } + + delete bundle.cache[id]; + bundle(id); + + cached = bundle.cache[id]; + if (cached && cached.hot && cached.hot._acceptCallback) { + cached.hot._acceptCallback(); + return true; + } + + return getParents(global.require, id).some(function (id) { + return hmrAccept(global.require, id); + }); +} +},{}]},{},[21,7]) +//# sourceMappingURL=/dist/f06fd0495a34430f242f7611190395d6.map \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.map b/dist/f06fd0495a34430f242f7611190395d6.map new file mode 100644 index 000000000..5cefc8211 --- /dev/null +++ b/dist/f06fd0495a34430f242f7611190395d6.map @@ -0,0 +1 @@ +{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACt0BA,IAAMtI,IAAIC,QAAQC,SAAlB;AACA,IAAI,CAACF,EAAEG,OAAP,EAAgB;AACdH,IAAEG,OAAF,GACEH,EAAEI,eAAF,IAAqBJ,EAAEK,iBAAvB,IAA4CL,EAAEM,qBAA9C,IAAuEN,EAAEO,kBAD3E;AAED;AACD,IAAI,CAACP,EAAEQ,OAAP,EAAgB;AACdR,IAAEQ,OAAF,GAAY,UAASC,CAAT,EAAY;AACtB,QAAIC,KAAK,IAAT;AACA,QAAI,CAACC,SAASC,eAAT,CAAyBC,QAAzB,CAAkCH,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,OAAG;AACD,UAAIA,GAAGP,OAAH,CAAWM,CAAX,CA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","file":"f06fd0495a34430f242f7611190395d6.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 548f0695a..ead3fe9a6 100644 --- a/index.html +++ b/index.html @@ -139,16 +139,29 @@

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
     
    -

    CSS

    .custom-text-selection::selection {
    +            

    CSS

    ::selection {
    +  background: aquamarine;
    +  color: black;
    +}
    +.custom-text-selection::selection {
       background: red;
       color: white;
     }
     

    Demo

    -

    Select some of this text.

    +

    Global aquamarine selection color

    +

    Red selection color.

    Explanation

    -

    ::selection defines a pseudo selector on an element to style text within it when selected.

    +

    ::selection and ::-moz-selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, + to any selectable element.

    Browser support

    diff --git a/snippets/custom-text-selection.md b/snippets/custom-text-selection.md index c3cc6f1fb..5199c1cee 100644 --- a/snippets/custom-text-selection.md +++ b/snippets/custom-text-selection.md @@ -11,6 +11,10 @@ Changes the styling of text selection. #### CSS ```css +::selection { + background: aquamarine; + color: black; +} .custom-text-selection::selection { background: red; color: white; @@ -20,10 +24,19 @@ Changes the styling of text selection. #### Demo
    -

    Select some of this text.

    +

    Global aquamarine selection color

    +

    Red selection color.

    Explanation

    -

    ::selection and ::-moz-selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, - to any selectable element.

    +

    ::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

    Browser support

    diff --git a/dist/f06fd0495a34430f242f7611190395d6.js b/dist/f06fd0495a34430f242f7611190395d6.js index c5c3cb94d..1c5159a21 100644 --- a/dist/f06fd0495a34430f242f7611190395d6.js +++ b/dist/f06fd0495a34430f242f7611190395d6.js @@ -71,7 +71,7 @@ require = (function (modules, cache, entry) { // Override the current require with this new one return newRequire; -})({18:[function(require,module,exports) { +})({13:[function(require,module,exports) { var bundleURL = null; function getBundleURLCached() { if (!bundleURL) { @@ -101,7 +101,7 @@ function getBaseURL(url) { exports.getBundleURL = getBundleURLCached; exports.getBaseURL = getBaseURL; -},{}],15:[function(require,module,exports) { +},{}],10:[function(require,module,exports) { var bundle = require('./bundle-url'); function updateLink(link) { @@ -132,13 +132,13 @@ function reloadCSS() { } module.exports = reloadCSS; -},{"./bundle-url":18}],20:[function(require,module,exports) { +},{"./bundle-url":13}],14:[function(require,module,exports) { var reloadCSS = require('_css_loader'); module.hot.dispose(reloadCSS); module.hot.accept(reloadCSS); -},{"_css_loader":15}],19:[function(require,module,exports) { +},{"_css_loader":10}],15:[function(require,module,exports) { var global = (1,eval)("this"); /* ********************************************** @@ -979,19 +979,19 @@ Prism.languages.js = Prism.languages.javascript; })(); -},{}],10:[function(require,module,exports) { +},{}],6:[function(require,module,exports) { var reloadCSS = require('_css_loader'); module.hot.dispose(reloadCSS); module.hot.accept(reloadCSS); -},{"_css_loader":15}],9:[function(require,module,exports) { +},{"_css_loader":10}],5:[function(require,module,exports) { var reloadCSS = require('_css_loader'); module.hot.dispose(reloadCSS); module.hot.accept(reloadCSS); -},{"_css_loader":15}],11:[function(require,module,exports) { +},{"_css_loader":10}],7:[function(require,module,exports) { var e = Element.prototype; if (!e.matches) { e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; @@ -1007,7 +1007,7 @@ if (!e.closest) { return null; }; } -},{}],17:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { var global = (1,eval)("this"); var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; @@ -1200,7 +1200,7 @@ var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbo }; }(); }); -},{}],16:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -1262,7 +1262,7 @@ if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { }); } })(); -},{}],12:[function(require,module,exports) { +},{}],8:[function(require,module,exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -1308,7 +1308,7 @@ document.addEventListener('click', function (e) { }); exports.default = { toggle: toggle }; -},{"../deps/jump":17,"../deps/utils":16}],13:[function(require,module,exports) { +},{"../deps/jump":11,"../deps/utils":12}],9:[function(require,module,exports) { 'use strict'; var _jump = require('../deps/jump'); @@ -1330,7 +1330,7 @@ backToTopButton.onclick = function () { easing: _utils.easeOutQuint }); }; -},{"../deps/jump":17,"../deps/utils":16}],7:[function(require,module,exports) { +},{"../deps/jump":11,"../deps/utils":12}],3:[function(require,module,exports) { 'use strict'; require('normalize.css'); @@ -1352,7 +1352,7 @@ var _BackToTopButton = require('./components/BackToTopButton'); var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -},{"normalize.css":20,"prismjs":19,"../css/deps/prism.css":10,"../css/index.scss":9,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}],21:[function(require,module,exports) { +},{"normalize.css":14,"prismjs":15,"../css/deps/prism.css":6,"../css/index.scss":5,"./deps/polyfills":7,"./components/Menu":8,"./components/BackToTopButton":9}],16:[function(require,module,exports) { var global = (1, eval)('this'); var OldModule = module.bundle.Module; @@ -1374,7 +1374,7 @@ var parent = module.bundle.parent; if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { var hostname = '' || location.hostname; var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + '57220' + '/'); + var ws = new WebSocket(protocol + '://' + hostname + ':' + '58660' + '/'); ws.onmessage = function (event) { var data = JSON.parse(event.data); @@ -1475,5 +1475,5 @@ function hmrAccept(bundle, id) { return hmrAccept(global.require, id); }); } -},{}]},{},[21,7]) +},{}]},{},[16,3]) //# sourceMappingURL=/dist/f06fd0495a34430f242f7611190395d6.map \ No newline at end of file diff --git a/index.html b/index.html index ead3fe9a6..42cb0dbef 100644 --- a/index.html +++ b/index.html @@ -144,36 +144,26 @@ color: black; } .custom-text-selection::selection { - background: red; + background: deeppink; color: white; }

    Demo

    -

    Global aquamarine selection color

    -

    Red selection color.

    +

    Select some of this text.

    Explanation

    -

    ::selection and ::-moz-selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, - to any selectable element.

    +

    ::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

    Browser support

    diff --git a/snippets/custom-text-selection.md b/snippets/custom-text-selection.md index 5199c1cee..ff5136934 100644 --- a/snippets/custom-text-selection.md +++ b/snippets/custom-text-selection.md @@ -16,7 +16,7 @@ Changes the styling of text selection. color: black; } .custom-text-selection::selection { - background: red; + background: deeppink; color: white; } ``` @@ -24,32 +24,23 @@ Changes the styling of text selection. #### Demo
    -

    Global aquamarine selection color

    -

    Red selection color.

    +

    Select some of this text.

    #### Explanation -`::selection` and `::-moz-selection` defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element. +`::selection` defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element. #### Browser support From 5177c4ee2be432554c48922bace780fa31d423c9 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Tue, 27 Feb 2018 21:01:17 -0500 Subject: [PATCH 042/561] update buttons and nav semantics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the back to top button and menu button each lack appropriate accessible names. The primary page navigation is presently contained within an `aside` rather than a `nav` element. This commit adds accessible names to the previously mentioned buttons, so they will be appropriately conveyed to screen readers. It also changes the navigation from an `aside` to `nav` and provides the navigation with an `aria-label=“table of contents”` as all the links are in page links to the different sections of this document. --- index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 548f0695a..203a24208 100644 --- a/index.html +++ b/index.html @@ -8,9 +8,9 @@ - -
    - +
    @@ -47,7 +47,7 @@ Star
    -
    +

    Clearfix

    @@ -1039,4 +1039,4 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
    - \ No newline at end of file + From 233a149095f59675e4236a0c4a2a3e4f9fd4df4c Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 16:46:04 +1000 Subject: [PATCH 043/561] Update overflow-scroll-gradient.md --- snippets/overflow-scroll-gradient.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/snippets/overflow-scroll-gradient.md b/snippets/overflow-scroll-gradient.md index c0010ddb6..0c4c3e644 100644 --- a/snippets/overflow-scroll-gradient.md +++ b/snippets/overflow-scroll-gradient.md @@ -78,15 +78,16 @@ document.querySelector('.snippet-demo__overflow-scroll-gradient__scroller').inne #### Explanation -1. `position: relative` on the parent establishes a Cartesian positioning context for psuedo elements. +1. `position: relative` on the parent establishes a Cartesian positioning context for psuedo-elements. 2. `::after` defines a pseudo element. 3. `background-image: linear-gradient(...)` adds a linear gradient that fades from transparent to white (top to bottom). 4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. 5. `width: 300px` matches the size of the scrolling element (which is a child of the parent that has the pseudo element). -6. `height: 25px` is the height of the fading gradient psuedo element, which should be kept relatively small. -7. `bottom: 0` positions the pseudo element at the bottom of the parent. +6. `height: 25px` is the height of the fading gradient psuedo-element, which should be kept relatively small. +7. `bottom: 0` positions the pseudo-element at the bottom of the parent. +8. `pointer-events: none` specifies that the psuedo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive. #### Browser support From db63bf8121a5206ea1d840efa7e619947b78b3c9 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 16:51:23 +1000 Subject: [PATCH 044/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 8 ++++---- docs/index.html | 5 +++-- index.html | 9 ++++++--- snippets/pretty-text-underline.md | 6 +++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 8ac739f4b..7bcc14567 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -5,15 +5,15 @@ var global = (1,eval)("this"); var e=(0,eval)("this"),t="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},a=function(){var e=/\blang(?:uage)?-(\w+)\b/i,a=0,n=t.Prism={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],14:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); },{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} },{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 10fda79e7..1eb7f7cbf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,7 +11,7 @@ .floated { float: left; } -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    @@ -148,6 +148,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       width: 300px;
       height: 25px;
       background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
    +  pointer-events: none;
     }
     .overflow-scroll-gradient__scroller {
       overflow-y: scroll;
    @@ -158,7 +159,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       line-height: 1.2;
       text-align: center;
     }
    -

    Demo

    Content to be scrolled

    Explanation

    1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
    2. ::after defines a pseudo element.
    3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
    4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
    6. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
    7. bottom: 0 positions the pseudo element at the bottom of the parent.

    Browser support

    94.8%

    ✅ No caveats.

    Popout menu

    Reveals an interactive popout menu on hover.

    HTML

    <div class="reference">
    +

    Demo

    Content to be scrolled

    Explanation

    1. position: relative on the parent establishes a Cartesian positioning context for psuedo-elements.
    2. ::after defines a pseudo element.
    3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
    4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
    6. height: 25px is the height of the fading gradient psuedo-element, which should be kept relatively small.
    7. bottom: 0 positions the pseudo-element at the bottom of the parent.
    8. pointer-events: none specifies that the psuedo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

    Browser support

    94.8%

    ✅ No caveats.

    Popout menu

    Reveals an interactive popout menu on hover.

    HTML

    <div class="reference">
       <div class="popout-menu">
         Popout menu
       </div>
    diff --git a/index.html b/index.html
    index 548f0695a..8f099d52e 100644
    --- a/index.html
    +++ b/index.html
    @@ -605,6 +605,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       width: 300px;
       height: 25px;
       background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
    +  pointer-events: none;
     }
     .overflow-scroll-gradient__scroller {
       overflow-y: scroll;
    @@ -635,6 +636,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                     width: 300px;
                     height: 25px;
                     bottom: 0;
    +                pointer-events: none;
                   }
                   .snippet-demo__overflow-scroll-gradient__scroller {
                     overflow-y: scroll;
    @@ -651,13 +653,14 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                 
                 

    Explanation

      -
    1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
    2. +
    3. position: relative on the parent establishes a Cartesian positioning context for psuedo-elements.
    4. ::after defines a pseudo element.
    5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
    6. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    7. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
    8. -
    9. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
    10. -
    11. bottom: 0 positions the pseudo element at the bottom of the parent.
    12. +
    13. height: 25px is the height of the fading gradient psuedo-element, which should be kept relatively small.
    14. +
    15. bottom: 0 positions the pseudo-element at the bottom of the parent.
    16. +
    17. pointer-events: none specifies that the psuedo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

    Browser support

    diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md index e1a45c062..171fe9d80 100644 --- a/snippets/pretty-text-underline.md +++ b/snippets/pretty-text-underline.md @@ -14,13 +14,13 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control ```css .pretty-text-underline { display: inline; - font-size: 1.25rem; + font-size: 18px; text-shadow: 1px 1px 0 #f5f6f9, -1px 1px 0 #f5f6f9, -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); - background-position: 0 1.04em; + background-position: 0 18px; background-repeat: repeat-x; background-size: 1px 1px; } @@ -49,7 +49,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); - background-position: 0 1.04em; + background-position: 0 18px; background-repeat: repeat-x; background-size: 1px 1px; } From 2dc414e40f5948253d32d2da413edb5268ea4a91 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 17:55:27 +1000 Subject: [PATCH 045/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 10 +++++----- docs/index.html | 8 ++++---- index.html | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 7bcc14567..86e4b2365 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,6 +1,6 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { @@ -10,10 +10,10 @@ var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); },{}],14:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { +},{}],13:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],12:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 1eb7f7cbf..fc4a4b2a1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +    30 Seconds of CSS        

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -11,7 +11,7 @@
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    @@ -178,13 +178,13 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
     

    Demo

    Popout menu

    Explanation

    1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
    2. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
    3. left: 100% moves the the popout menu 100% of its parent's width from the left.
    4. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
    5. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.

    Browser support

    99+%

    ✅ No caveats.

    Pretty text underline

    A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

    HTML

    <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
     

    CSS

    .pretty-text-underline {
       display: inline;
    -  font-size: 1.25rem;
    +  font-size: 18px;
       text-shadow: 1px 1px 0 #f5f6f9,
         -1px 1px 0 #f5f6f9,
         -1px -1px 0 #f5f6f9,
         1px -1px 0 #f5f6f9;
       background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
    -  background-position: 0 1.04em;
    +  background-position: 0 18px;
       background-repeat: repeat-x;
       background-size: 1px 1px;
     }
    diff --git a/index.html b/index.html
    index 08d301ffb..66eeb2f93 100644
    --- a/index.html
    +++ b/index.html
    @@ -751,13 +751,13 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
     

    CSS

    .pretty-text-underline {
       display: inline;
    -  font-size: 1.25rem;
    +  font-size: 18px;
       text-shadow: 1px 1px 0 #f5f6f9,
         -1px 1px 0 #f5f6f9,
         -1px -1px 0 #f5f6f9,
         1px -1px 0 #f5f6f9;
       background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
    -  background-position: 0 1.04em;
    +  background-position: 0 18px;
       background-repeat: repeat-x;
       background-size: 1px 1px;
     }
    @@ -780,7 +780,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                     font-size: 18px !important;
                     text-shadow: 1px 1px 0 #f5f6f9, -1px 1px 0 #f5f6f9, -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9;
                     background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
    -                background-position: 0 1.04em;
    +                background-position: 0 18px;
                     background-repeat: repeat-x;
                     background-size: 1px 1px;
                   }
    @@ -1042,4 +1042,4 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
         
    - + \ No newline at end of file From a568a45dfaf8e63db74ff27a307eb8868bc4e9cc Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 17:59:52 +1000 Subject: [PATCH 046/561] fix #15 --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 12 ++++++------ docs/index.html | 2 +- index.html | 2 +- snippets/truncate-text.md | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 86e4b2365..39f493b20 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -5,15 +5,15 @@ var global = (1,eval)("this"); var e=(0,eval)("this"),t="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},a=function(){var e=/\blang(?:uage)?-(\w+)\b/i,a=0,n=t.Prism={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],14:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],13:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":15,"../deps/utils":14}],12:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":13,"./components/BackToTopButton":12}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index fc4a4b2a1..be0b62a62 100644 --- a/docs/index.html +++ b/docs/index.html @@ -227,4 +227,4 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop white-space: nowrap; text-overflow: ellipsis; } -

    Demo

    This text will be truncated if it exceeds 200px in width.

    Explanation

    1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
    2. white-space: nowrap prevents the text from exceeding one line in height.
    3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.

    Browser support

    98.1%

    ✅ No caveats.

    \ No newline at end of file +

    Demo

    This text will be truncated if it exceeds 200px in width.

    Explanation

    1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
    2. white-space: nowrap prevents the text from exceeding one line in height.
    3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.

    Browser support

    98.1%

    ⚠️ Only works for single line elements.

    \ No newline at end of file diff --git a/index.html b/index.html index 66eeb2f93..dfb817cda 100644 --- a/index.html +++ b/index.html @@ -1030,7 +1030,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop 98.1%
    -

    ✅ No caveats.

    +

    ⚠️ Only works for single line elements.

    • https://caniuse.com/#feat=text-overflow diff --git a/snippets/truncate-text.md b/snippets/truncate-text.md index 58f4db15d..ce2fe0779 100644 --- a/snippets/truncate-text.md +++ b/snippets/truncate-text.md @@ -46,6 +46,6 @@ If the text is longer than one line, it will be truncated and end with an ellips #### Browser support -✅ No caveats. +⚠️ Only works for single line elements. * https://caniuse.com/#feat=text-overflow From 7c4751f2875007aebcfbc6603c6c590cf5ba637d Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 18:06:13 +1000 Subject: [PATCH 047/561] Add logo --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 85d026aa9..9f2090ac9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # 30 Seconds of CSS +![logo](https://i.imgur.com/2L1bMyy.png) + A curated collection of useful CSS snippets you can understand in 30 seconds or less. Inspired by [30 seconds of code](https://github.com/Chalarangelo/30-seconds-of-code). From 29700dd3e76832c8b5b0fdf3cb28cfcb2a0ef8b0 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 18:09:34 +1000 Subject: [PATCH 048/561] Show GitHub star count --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 18 +++++++++--------- docs/index.html | 2 +- index.html | 4 +--- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 39f493b20..897578359 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],11:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],14:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { +},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":12,"./components/Menu":11,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index be0b62a62..7f94c2ec1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
      +    30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
         <div class="floated">float a</div>
         <div class="floated">float b</div>
         <div class="floated">float c</div>
      diff --git a/index.html b/index.html
      index dfb817cda..1c6c91f76 100644
      --- a/index.html
      +++ b/index.html
      @@ -42,9 +42,7 @@
                 

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      - - - Star + Star
      From 506a73f175fe38b0317ab5772bf82bbf86012f20 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 18:14:41 +1000 Subject: [PATCH 049/561] Fix stripping of doctype declaration --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 18 +++++++++--------- docs/index.html | 4 ++-- index.html | 4 +++- scripts/build.js | 8 +++++++- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 897578359..39f493b20 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],14:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],11:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":12,"./components/Menu":11,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 7f94c2ec1..e76089d62 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
      +      30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
         <div class="floated">float a</div>
         <div class="floated">float b</div>
         <div class="floated">float c</div>
      @@ -227,4 +227,4 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
         white-space: nowrap;
         text-overflow: ellipsis;
       }
      -

      Demo

      This text will be truncated if it exceeds 200px in width.

      Explanation

      1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
      2. white-space: nowrap prevents the text from exceeding one line in height.
      3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.

      Browser support

      98.1%

      ⚠️ Only works for single line elements.

      \ No newline at end of file +

      Demo

      This text will be truncated if it exceeds 200px in width.

      Explanation

      1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
      2. white-space: nowrap prevents the text from exceeding one line in height.
      3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.

      Browser support

      98.1%

      ⚠️ Only works for single line elements.

      \ No newline at end of file diff --git a/index.html b/index.html index 1c6c91f76..547e46d77 100644 --- a/index.html +++ b/index.html @@ -1,3 +1,5 @@ + + @@ -1040,4 +1042,4 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
      - \ No newline at end of file + diff --git a/scripts/build.js b/scripts/build.js index c1b9902ed..11cd3b39e 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -67,4 +67,10 @@ for (const snippetFile of fs.readdirSync(SNIPPETS_PATH)) { ) } -fs.writeFileSync('./index.html', pretty(document.documentElement.outerHTML, { ocd: true })) +// doctype declaration gets stripped, add it back in +const html = ` + +${pretty(document.documentElement.outerHTML, { ocd: true })} +` + +fs.writeFileSync('./index.html', html) From eb5e62a9fc1b11e8e8468626213e86624aeba81a Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 18:24:33 +1000 Subject: [PATCH 050/561] Update donut-spinner.md --- snippets/donut-spinner.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snippets/donut-spinner.md b/snippets/donut-spinner.md index cb7f8a4a5..8481a53de 100644 --- a/snippets/donut-spinner.md +++ b/snippets/donut-spinner.md @@ -12,8 +12,8 @@ Creates a donut spinner that can be used to indicate the loading of content. ```css @keyframes donut-spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg);} + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } } .donut { display: inline-block; From a133e35a5f3fc68aca889d9cc37eb30214ef49ed Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 18:26:49 +1000 Subject: [PATCH 051/561] rebuild docs --- .gitignore | 1 + docs/464d45b6c0aa745a9d68e563688b3354.png | Bin 2628 -> 0 bytes docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 6 +- docs/6a92da93c8b31945626bd085895f2309.png | Bin 35911 -> 0 bytes docs/a4a44c59f0a5b432531e0c4e83a00cf4.css | 9 - docs/a4a44c59f0a5b432531e0c4e83a00cf4.js | 19 - docs/index.html | 899 ++-------------------- index.html | 4 +- scripts/build.js | 3 +- 9 files changed, 56 insertions(+), 885 deletions(-) delete mode 100644 docs/464d45b6c0aa745a9d68e563688b3354.png delete mode 100644 docs/6a92da93c8b31945626bd085895f2309.png delete mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.css delete mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.js diff --git a/.gitignore b/.gitignore index 17447dfd3..ae7a50935 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules/ .cache/ .DS_Store +dist/ diff --git a/docs/464d45b6c0aa745a9d68e563688b3354.png b/docs/464d45b6c0aa745a9d68e563688b3354.png deleted file mode 100644 index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2628 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 diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 39f493b20..8ac739f4b 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,6 +1,6 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { @@ -16,4 +16,4 @@ var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iter "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/6a92da93c8b31945626bd085895f2309.png b/docs/6a92da93c8b31945626bd085895f2309.png deleted file mode 100644 index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35911 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 diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css deleted file mode 100644 index 132a1d653..000000000 --- a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js deleted file mode 100644 index 968428d43..000000000 --- a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js +++ /dev/null @@ -1,19 +0,0 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],14:[function(require,module,exports) { -var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],22:[function(require,module,exports) { -var global = (1,eval)("this"); -var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],23:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],15:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":22,"../deps/utils":23}],16:[function(require,module,exports) { -"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":22,"../deps/utils":23}],9:[function(require,module,exports) { -"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":24,"prismjs":25,"../css/deps/prism.css":24,"../css/index.scss":24,"./deps/polyfills":14,"./components/Menu":15,"./components/BackToTopButton":16}]},{},[9]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 547e46d77..8c9e26501 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,65 +1,9 @@ - - - - - - - 30 Seconds of CSS - - - - - - -

      -
      -
      -
      - -

      30 Seconds of CSS

      -

      - A curated collection of useful CSS snippets you can understand in 30 seconds or less. -

      - Star -
      -
      -
      -
      -
      -

      Clearfix

      -

      Ensures that an element self-clears its children.

      -
      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.
      -

      HTML

      <div class="clearfix">
      +      30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
         <div class="floated">float a</div>
         <div class="floated">float b</div>
         <div class="floated">float c</div>
       </div>
      -
      -

      CSS

      .clearfix::after {
      +

      CSS

      .clearfix::after {
         content: "";
         display: block;
         clear: both;
      @@ -67,119 +11,33 @@
       .floated {
         float: left;
       }
      -
      -

      Demo

      -
      -
      -
      float a
      -
      float b
      -
      float c
      -
      -
      - -

      Explanation

      -
        -
      1. .clearfix::after defines a pseudo-element.
      2. -
      3. content: '' allows the pseudo-element to affect layout.
      4. -
      5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
      6. -
      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Constant width to height ratio

      -

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      -

      HTML

      <div class="constant-width-to-height-ratio"></div>
      -
      -

      CSS

      .constant-width-to-height-ratio {
      +

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
      +

      CSS

      .constant-width-to-height-ratio {
         background: #333;
         width: 50%;
         padding-top: 50%;
       }
      -
      -

      Demo

      -

      Resize your browser window to see the proportion of the element remain the same.

      -
      -
      -
      - -

      Explanation

      -

      padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means - the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ⚠️ padding-top pushes any content within the element to the bottom.

      -
      -
      -

      Custom text selection

      -

      Changes the styling of text selection.

      -

      HTML

      <p class="custom-text-selection">Select some of this text.</p>
      -
      -

      CSS

      .custom-text-selection::selection {
      +

      Demo

      Resize your browser window to see the proportion of the element remain the same.

      Explanation

      padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

      Browser support

      99+%

      ⚠️ padding-top pushes any content within the element to the bottom.

      Custom text selection

      Changes the styling of text selection.

      HTML

      <p class="custom-text-selection">Select some of this text.</p>
      +

      CSS

      .custom-text-selection::selection {
         background: red;
         color: white;
       }
      -
      -

      Demo

      -
      -

      Select some of this text.

      -
      - -

      Explanation

      -

      ::selection defines a pseudo selector on an element to style text within it when selected.

      -

      Browser support

      -
      -
      - 84.6% -
      -
      -

      ⚠️ Requires prefixes for full support and is not actually -in any specification.

      - -
      -
      -

      Easing variables

      -

      Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

      -

      HTML

      <div class="easing-variables"></div>
      -
      -

      CSS

      :root {
      +

      Demo

      Select some of this text.

      Explanation

      ::selection defines a pseudo selector on an element to style text within it when selected.

      Browser support

      84.6%

      ⚠️ Requires prefixes for full support and is not actually in any specification.

      Donut spinner

      Creates a donut spinner that can be used to indicate the loading of content.

      HTML

      <div class="donut"></div>
      +

      CSS

      @keyframes donut-spin {
      +  0% { transform: rotate(0deg); }
      +  100% { transform: rotate(360deg); }
      +}
      +.donut {
      +  display: inline-block;
      +  border: 4px solid rgba(0, 0, 0, 0.25);
      +  border-left-color: blue;
      +  border-radius: 50%;
      +  width: 20px;
      +  height: 20px;
      +  animation: donut-spin 1.2s linear infinite;
      +}
      +

      Demo

      Explanation

      Use a semi-transparent border for the whole element, except one side that will serve as the loading indicator for the donut. Use animation to rotate the element.

      Browser support

      94.8%

      ⚠️ Requires prefixes for full support.

      Easing variables

      Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

      HTML

      <div class="easing-variables"></div>
      +

      CSS

      :root {
         --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
         --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
         --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
      @@ -208,157 +66,21 @@ in any specification.

      .easing-variables:hover { transform: rotate(45deg); } -
      -

      Demo

      -
      -
      Hover
      -
      - -

      Explanation

      -

      The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

      -

      Browser support

      -
      -
      - 87.2% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      Etched text

      -

      Creates an effect where text appears to be "etched" or engraved into the background.

      -

      HTML

      <p class="etched-text">I appear etched into the background.</p>
      -
      -

      CSS

      .etched-text {
      +

      Demo

      Hover

      Explanation

      The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

      Browser support

      87.2%

      ✅ No caveats.

      Etched text

      Creates an effect where text appears to be "etched" or engraved into the background.

      HTML

      <p class="etched-text">I appear etched into the background.</p>
      +

      CSS

      .etched-text {
         text-shadow: 0 2px white;
         font-size: 1.5rem;
         font-weight: bold;
         color: #b8bec5;
       }
      -
      -

      Demo

      -
      -

      I appear etched into the background.

      -
      - -

      Explanation

      -

      text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

      -

      The background must be darker than the shadow for the effect to work.

      -

      The text color should be slightly faded to make it look like it's engraved/carved out of the background.

      -

      Browser support

      -
      -
      - 97.9% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      Gradient text

      -

      Gives text a gradient color.

      -

      HTML

      <p class="gradient-text">Gradient text</p>
      -
      -

      CSS

      .gradient-text {
      +

      Demo

      I appear etched into the background.

      Explanation

      text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

      The background must be darker than the shadow for the effect to work.

      The text color should be slightly faded to make it look like it's engraved/carved out of the background.

      Browser support

      97.9%

      ✅ No caveats.

      Gradient text

      Gives text a gradient color.

      HTML

      <p class="gradient-text">Gradient text</p>
      +

      CSS

      .gradient-text {
         background: -webkit-linear-gradient(pink, red);
         -webkit-text-fill-color: transparent;
         -webkit-background-clip: text;
       }
      -
      -

      Demo

      -
      -

      - Gradient text -

      -
      - -

      Explanation

      -
        -
      1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
      2. -
      3. webkit-text-fill-color: transparent fills the text with a transparent color.
      4. -
      5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
      6. -
      -

      Browser support

      -
      -
      - 90.7% -
      -
      -

      ⚠️ Uses non-standard properties.

      - -
      -
      -

      Hairline border

      -

      Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

      -

      HTML

      <div class="hairline-border">text</div>
      -
      -

      CSS

      .hairline-border {
      +

      Demo

      Gradient text

      Explanation

      1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
      2. webkit-text-fill-color: transparent fills the text with a transparent color.
      3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.

      Browser support

      90.7%

      ⚠️ Uses non-standard properties.

      Hairline border

      Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

      HTML

      <div class="hairline-border">text</div>
      +

      CSS

      .hairline-border {
         box-shadow: 0 0 0 1px;
       }
       @media (min-resolution: 2dppx) {
      @@ -376,108 +98,18 @@ in any specification.

      box-shadow: 0 0 0 0.25px; } } -
      -

      Demo

      -
      -

      Text with a hairline border around it.

      -
      - -

      Explanation

      -
        -
      1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
      2. -
      3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
      4. -
      -

      Browser Support

      -
      -
      - 95.0% -
      -
      -

      ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

      - -
      -

      *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

      -
      -
      -

      Horizontal and vertical centering

      -

      Horizontally and vertically centers a child element within a parent element.

      -

      HTML

      <div class="horizontal-and-vertical-centering">
      +

      Demo

      Text with a hairline border around it.

      Explanation

      1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
      2. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.

      Browser Support

      95.0%

      ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.


      *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

      Horizontal and vertical centering

      Horizontally and vertically centers a child element within a parent element.

      HTML

      <div class="horizontal-and-vertical-centering">
         <div class="child"></div>
       </div>
      -
      -

      CSS

      .horizontal-and-vertical-centering {
      +

      CSS

      .horizontal-and-vertical-centering {
         display: flex;
         justify-content: center;
         align-items: center;
       }
      -
      -

      Demo

      -
      -
      -

      Centered content.

      -
      -
      - -

      Explanation

      -
        -
      1. display: flex enables flexbox.
      2. -
      3. justify-content: center centers the child horizontally.
      4. -
      5. align-items: center centers the child vertically.
      6. -
      -

      Browser support

      -
      -
      - 97.8% -
      -
      -

      ⚠️ Needs prefixes for full support.

      - -
      -
      -

      Mouse cursor gradient tracking

      -

      A hover effect where the gradient follows the mouse cursor.

      -

      HTML

      <button class="mouse-cursor-gradient-tracking">
      +

      Demo

      Centered content.

      Explanation

      1. display: flex enables flexbox.
      2. justify-content: center centers the child horizontally.
      3. align-items: center centers the child vertically.

      Browser support

      97.8%

      ⚠️ Needs prefixes for full support.

      Mouse cursor gradient tracking

      A hover effect where the gradient follows the mouse cursor.

      HTML

      <button class="mouse-cursor-gradient-tracking">
         <span>Hover me</span>
       </button>
      -
      -

      CSS

      .mouse-cursor-gradient-tracking {
      +

      CSS

      .mouse-cursor-gradient-tracking {
         position: relative;
         background: #2379f7;
         padding: 0.5rem 1rem;
      @@ -506,96 +138,21 @@ in any specification.

      .mouse-cursor-gradient-tracking:hover::before { --size: 200px; } -
      -

      JavaScript

      var btn = document.querySelector('.mouse-cursor-gradient-tracking')
      +

      JavaScript

      var btn = document.querySelector('.mouse-cursor-gradient-tracking')
       btn.onmousemove = function (e) {
         var x = e.pageX - btn.offsetLeft
         var y = e.pageY - btn.offsetTop
         btn.style.setProperty('--x', x + 'px')
         btn.style.setProperty('--y', y + 'px')
       }
      -
      -

      Demo

      -
      - -
      - - -

      Explanation

      -

      TODO

      -

      Note!

      -

      If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

      -
      var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
      +

      Demo

      Explanation

      TODO

      Note!

      If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

      var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
       var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
      -
      -

      Browser support

      -
      -
      - 87.2% -
      -
      -

      -
      Requires JavaScript
      - ⚠️ Requires JavaScript. -

      - -
      -
      -

      Overflow scroll gradient

      -

      Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

      -

      HTML

      <div class="overflow-scroll-gradient">
      +

      Browser support

      87.2%

      Requires JavaScript
      ⚠️ Requires JavaScript.

      Overflow scroll gradient

      Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

      HTML

      <div class="overflow-scroll-gradient">
         <div class="overflow-scroll-gradient__scroller">
           Content to be scrolled
         </div>
       </div>
      -
      -

      CSS

      .overflow-scroll-gradient {
      +

      CSS

      .overflow-scroll-gradient {
         position: relative;
       }
       .overflow-scroll-gradient::after {
      @@ -616,75 +173,12 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
         line-height: 1.2;
         text-align: center;
       }
      -
      -

      Demo

      -
      -
      -
      - Content to be scrolled -
      -
      -
      - - -

      Explanation

      -
        -
      1. position: relative on the parent establishes a Cartesian positioning context for psuedo-elements.
      2. -
      3. ::after defines a pseudo element.
      4. -
      5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
      6. -
      7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
      8. -
      9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
      10. -
      11. height: 25px is the height of the fading gradient psuedo-element, which should be kept relatively small.
      12. -
      13. bottom: 0 positions the pseudo-element at the bottom of the parent.
      14. -
      15. pointer-events: none specifies that the psuedo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.
      16. -
      -

      Browser support

      -
      -
      - 94.8% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      Popout menu

      -

      Reveals an interactive popout menu on hover.

      -

      HTML

      <div class="reference">
      +

      Demo

      Content to be scrolled

      Explanation

      1. position: relative on the parent establishes a Cartesian positioning context for psuedo-elements.
      2. ::after defines a pseudo element.
      3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
      4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
      5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
      6. height: 25px is the height of the fading gradient psuedo-element, which should be kept relatively small.
      7. bottom: 0 positions the pseudo-element at the bottom of the parent.
      8. pointer-events: none specifies that the psuedo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

      Browser support

      94.8%

      ✅ No caveats.

      Popout menu

      Reveals an interactive popout menu on hover.

      HTML

      <div class="reference">
         <div class="popout-menu">
           Popout menu
         </div>
       </div>
      -
      -

      CSS

      .reference {
      +

      CSS

      .reference {
         position: relative;
       }
       .popout-menu {
      @@ -695,61 +189,8 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
       .reference:hover > .popout-menu {
         visibility: visible;
       }
      -
      -

      Demo

      -
      -
      -
      - Popout menu -
      -
      -
      - -

      Explanation

      -
        -
      1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
      2. -
      3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
      4. -
      5. left: 100% moves the the popout menu 100% of its parent's width from the left.
      6. -
      7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
      8. -
      9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, - which shows the popout.
      10. -
      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Pretty text underline

      -

      A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

      -

      HTML

      <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
      -
      -

      CSS

      .pretty-text-underline {
      +

      Demo

      Popout menu

      Explanation

      1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
      2. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
      3. left: 100% moves the the popout menu 100% of its parent's width from the left.
      4. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
      5. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.

      Browser support

      99+%

      ✅ No caveats.

      Pretty text underline

      A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

      HTML

      <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
      +

      CSS

      .pretty-text-underline {
         display: inline;
         font-size: 18px;
         text-shadow: 1px 1px 0 #f5f6f9,
      @@ -769,61 +210,8 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
         background-color: rgba(0, 150, 255, 0.3);
         text-shadow: none;
       }
      -
      -

      Demo

      -
      -

      Pretty text underline without clipping descending letters.

      -
      - -

      Explanation

      -
        -
      1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use - a larger px size.
      2. -
      3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
      4. -
      5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
      6. -
      7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. -
      8. -
      -

      Browser support

      -
      -
      - 94.8% -
      -
      -

      ⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

      - -
      -
      -

      Shape separator

      -

      Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

      -

      HTML

      <div class="shape-separator"></div>
      -
      -

      CSS

      .shape-separator {
      +

      Demo

      Pretty text underline without clipping descending letters.

      Explanation

      1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
      2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
      3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
      4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

      Browser support

      94.8%

      ⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

      Shape separator

      Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

      HTML

      <div class="shape-separator"></div>
      +

      CSS

      .shape-separator {
         position: relative;
         height: 48px;
       }
      @@ -835,211 +223,22 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
         height: 24px;
         bottom: 0;
       }
      -
      -

      Demo

      -
      -
      -
      - -

      Explanation

      -
        -
      1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
      2. -
      3. ::after defines a pseudo element.
      4. -
      5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. -
      6. -
      7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
      8. -
      9. width: 100% ensures the element stretches the entire width of its parent.
      10. -
      11. height: 24px is the same height as the shape.
      12. -
      13. bottom: 0 positions the pseudo element at the bottom of the parent.
      14. -
      -

      Browser support

      -
      -
      - 98.0% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      System font stack

      -

      Uses the native font of the operating system to get close to a native app feel.

      -

      HTML

      <p class="system-font-stack">This text uses the system font.</p>
      -
      -

      CSS

      .system-font-stack {
      +

      Demo

      Explanation

      1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
      2. ::after defines a pseudo element.
      3. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated.
      4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
      5. width: 100% ensures the element stretches the entire width of its parent.
      6. height: 24px is the same height as the shape.
      7. bottom: 0 positions the pseudo element at the bottom of the parent.

      Browser support

      98.0%

      ✅ No caveats.

      System font stack

      Uses the native font of the operating system to get close to a native app feel.

      HTML

      <p class="system-font-stack">This text uses the system font.</p>
      +

      CSS

      .system-font-stack {
         font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
       }
      -
      -

      Demo

      -
      -

      This text uses the system font.

      -
      - -

      Explanation

      -

      The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

      -
        -
      1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
      2. -
      3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
      4. -
      5. Segoe UI is used on Windows 10
      6. -
      7. Roboto is used on Android
      8. -
      9. Oxygen-Sans is used on GNU+Linux
      10. -
      11. Ubuntu is used on Linux
      12. -
      13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
      14. -
      15. Arial is a font widely supported by all operating systems
      16. -
      17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
      18. -
      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Triangle

      -

      Creates a triangle shape with pure CSS.

      -

      HTML

      <div class="triangle"></div>
      -
      -

      CSS

      .triangle {
      +

      Demo

      This text uses the system font.

      Explanation

      The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

      1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
      2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
      3. Segoe UI is used on Windows 10
      4. Roboto is used on Android
      5. Oxygen-Sans is used on GNU+Linux
      6. Ubuntu is used on Linux
      7. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
      8. Arial is a font widely supported by all operating systems
      9. sans-serif is the fallback sans-serif font if none of the other fonts are supported

      Browser support

      99+%

      ✅ No caveats.

      Triangle

      Creates a triangle shape with pure CSS.

      HTML

      <div class="triangle"></div>
      +

      CSS

      .triangle {
         width: 0;
         height: 0;
         border-top: 20px solid #333;
         border-left: 20px solid transparent;
         border-right: 20px solid transparent;
       }
      -
      -

      Demo

      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -

      Explanation

      -

      - View this link for a detailed explanation. -

      -

      The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

      -

      Experiment with the px values to change the proportion of the triangle.

      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Truncate text

      -

      If the text is longer than one line, it will be truncated and end with an ellipsis .

      -

      HTML

      <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
      -
      -

      CSS

      .truncate-text {
      +

      Demo

      Explanation

      View this link for a detailed explanation.

      The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

      Experiment with the px values to change the proportion of the triangle.

      Browser support

      99+%

      ✅ No caveats.

      Truncate text

      If the text is longer than one line, it will be truncated and end with an ellipsis .

      HTML

      <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
      +

      CSS

      .truncate-text {
         overflow: hidden;
         white-space: nowrap;
         text-overflow: ellipsis;
       }
      -
      -

      Demo

      -
      -

      - This text will be truncated if it exceeds 200px in width. -

      -
      - -

      Explanation

      -
        -
      1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
      2. -
      3. white-space: nowrap prevents the text from exceeding one line in height.
      4. -
      5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
      6. -
      -

      Browser support

      -
      -
      - 98.1% -
      -
      -

      ⚠️ Only works for single line elements.

      - -
      -
      -
      -
      -
      - - +

      Demo

      This text will be truncated if it exceeds 200px in width.

      Explanation

      1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
      2. white-space: nowrap prevents the text from exceeding one line in height.
      3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.

      Browser support

      98.1%

      ⚠️ Only works for single line elements.

      \ No newline at end of file diff --git a/index.html b/index.html index 9a565ff72..43a5e25a1 100644 --- a/index.html +++ b/index.html @@ -181,8 +181,8 @@ in any specification.

      HTML

      <div class="donut"></div>
       

      CSS

      @keyframes donut-spin {
      -    0% { transform: rotate(0deg); }
      -    100% { transform: rotate(360deg);}
      +  0% { transform: rotate(0deg); }
      +  100% { transform: rotate(360deg); }
       }
       .donut {
         display: inline-block;
      diff --git a/scripts/build.js b/scripts/build.js
      index 11cd3b39e..a2aa0a056 100644
      --- a/scripts/build.js
      +++ b/scripts/build.js
      @@ -68,8 +68,7 @@ for (const snippetFile of fs.readdirSync(SNIPPETS_PATH)) {
       }
       
       // doctype declaration gets stripped, add it back in
      -const html = `
      -
      +const html = `
       ${pretty(document.documentElement.outerHTML, { ocd: true })}
       `
       
      
      From 6c20c6c81e8b561bce51c6beafcad936ddf400e4 Mon Sep 17 00:00:00 2001
      From: atomiks 
      Date: Wed, 28 Feb 2018 20:00:23 +1000
      Subject: [PATCH 052/561] reset pretty-text-underline
      
      ---
       docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 8 ++++----
       docs/index.html                          | 6 +++---
       index.html                               | 5 ++---
       snippets/pretty-text-underline.md        | 4 ++--
       4 files changed, 11 insertions(+), 12 deletions(-)
      
      diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
      index 8ac739f4b..7bcc14567 100644
      --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
      +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
      @@ -5,15 +5,15 @@ var global = (1,eval)("this");
       var e=(0,eval)("this"),t="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},a=function(){var e=/\blang(?:uage)?-(\w+)\b/i,a=0,n=t.Prism={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
       },{}],11:[function(require,module,exports) {
       var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null});
      -},{}],14:[function(require,module,exports) {
      +},{}],15:[function(require,module,exports) {
       var global = (1,eval)("this");
       var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}});
      -},{}],15:[function(require,module,exports) {
      +},{}],14:[function(require,module,exports) {
       "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}();
       },{}],12:[function(require,module,exports) {
       "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u};
      -},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) {
      +},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) {
       "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})};
      -},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) {
      +},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) {
       "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}}
       },{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
      \ No newline at end of file
      diff --git a/docs/index.html b/docs/index.html
      index 8c9e26501..5ae8fb99d 100644
      --- a/docs/index.html
      +++ b/docs/index.html
      @@ -1,4 +1,4 @@
      -      30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
      +     30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
         <div class="floated">float a</div>
         <div class="floated">float b</div>
         <div class="floated">float c</div>
      @@ -11,7 +11,7 @@
       .floated {
         float: left;
       }
      -

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
      +

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
       

      CSS

      .constant-width-to-height-ratio {
         background: #333;
         width: 50%;
      @@ -198,7 +198,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
           -1px -1px 0 #f5f6f9,
           1px -1px 0 #f5f6f9;
         background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
      -  background-position: 0 18px;
      +  background-position: 0 1.04em;
         background-repeat: repeat-x;
         background-size: 1px 1px;
       }
      diff --git a/index.html b/index.html
      index 43a5e25a1..b26ab9acb 100644
      --- a/index.html
      +++ b/index.html
      @@ -1,4 +1,3 @@
      -
       
       
         
      @@ -818,7 +817,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
           -1px -1px 0 #f5f6f9,
           1px -1px 0 #f5f6f9;
         background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
      -  background-position: 0 18px;
      +  background-position: 0 1.04em;
         background-repeat: repeat-x;
         background-size: 1px 1px;
       }
      @@ -841,7 +840,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                       font-size: 18px !important;
                       text-shadow: 1px 1px 0 #f5f6f9, -1px 1px 0 #f5f6f9, -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9;
                       background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
      -                background-position: 0 18px;
      +                background-position: 0 1.04em;
                       background-repeat: repeat-x;
                       background-size: 1px 1px;
                     }
      diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md
      index 171fe9d80..c1d17cff2 100644
      --- a/snippets/pretty-text-underline.md
      +++ b/snippets/pretty-text-underline.md
      @@ -20,7 +20,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control
           -1px -1px 0 #f5f6f9,
           1px -1px 0 #f5f6f9;
         background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
      -  background-position: 0 18px;
      +  background-position: 0 1.04em;
         background-repeat: repeat-x;
         background-size: 1px 1px;
       }
      @@ -49,7 +49,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control
           -1px -1px 0 #f5f6f9,
           1px -1px 0 #f5f6f9;
         background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
      -  background-position: 0 18px;
      +  background-position: 0 1.04em;
         background-repeat: repeat-x;
         background-size: 1px 1px;
       }
      
      From 76f6a77e22c2c0fb1ee4625e9aede9c7aa58938d Mon Sep 17 00:00:00 2001
      From: Angelos Chalaris 
      Date: Wed, 28 Feb 2018 12:08:50 +0200
      Subject: [PATCH 053/561] Remove built files
      
      ---
       dist/527b39bfa5c417dbf84620127ec95368.png  |  Bin 2628 -> 0 bytes
       dist/5f62c8cc1947e40c7e328854a3026c04.png  |  Bin 35911 -> 0 bytes
       dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html | 1046 -------------
       dist/f06fd0495a34430f242f7611190395d6.css  | 1621 --------------------
       dist/f06fd0495a34430f242f7611190395d6.js   | 1479 ------------------
       dist/f06fd0495a34430f242f7611190395d6.map  |    1 -
       6 files changed, 4147 deletions(-)
       delete mode 100644 dist/527b39bfa5c417dbf84620127ec95368.png
       delete mode 100644 dist/5f62c8cc1947e40c7e328854a3026c04.png
       delete mode 100644 dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html
       delete mode 100644 dist/f06fd0495a34430f242f7611190395d6.css
       delete mode 100644 dist/f06fd0495a34430f242f7611190395d6.js
       delete mode 100644 dist/f06fd0495a34430f242f7611190395d6.map
      
      diff --git a/dist/527b39bfa5c417dbf84620127ec95368.png b/dist/527b39bfa5c417dbf84620127ec95368.png
      deleted file mode 100644
      index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 2628
      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
      
      diff --git a/dist/5f62c8cc1947e40c7e328854a3026c04.png b/dist/5f62c8cc1947e40c7e328854a3026c04.png
      deleted file mode 100644
      index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 35911
      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 diff --git a/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html b/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html deleted file mode 100644 index 6d6ebeace..000000000 --- a/dist/e5eecc0ff495d3dfb2c9cc2b763389dc.html +++ /dev/null @@ -1,1046 +0,0 @@ - - - - - 30 Seconds of CSS - - - - - - -

      -
      -
      -
      - -

      30 Seconds of CSS

      -

      - A curated collection of useful CSS snippets you can understand in 30 seconds or less. -

      - - - Star -
      -
      -
      -
      -
      -

      Clearfix

      -

      Ensures that an element self-clears its children.

      -
      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.
      -

      HTML

      <div class="clearfix">
      -  <div class="floated">float a</div>
      -  <div class="floated">float b</div>
      -  <div class="floated">float c</div>
      -</div>
      -
      -

      CSS

      .clearfix::after {
      -  content: "";
      -  display: block;
      -  clear: both;
      -}
      -.floated {
      -  float: left;
      -}
      -
      -

      Demo

      -
      -
      -
      float a
      -
      float b
      -
      float c
      -
      -
      - -

      Explanation

      -
        -
      1. .clearfix::after defines a pseudo-element.
      2. -
      3. content: '' allows the pseudo-element to affect layout.
      4. -
      5. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
      6. -
      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Constant width to height ratio

      -

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      -

      HTML

      <div class="constant-width-to-height-ratio"></div>
      -
      -

      CSS

      .constant-width-to-height-ratio {
      -  background: #333;
      -  width: 50%;
      -  padding-top: 50%;
      -}
      -
      -

      Demo

      -

      Resize your browser window to see the proportion of the element remain the same.

      -
      -
      -
      - -

      Explanation

      -

      padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means - the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ⚠️ padding-top pushes any content within the element to the bottom.

      -
      -
      -

      Custom text selection

      -

      Changes the styling of text selection.

      -

      HTML

      <p class="custom-text-selection">Select some of this text.</p>
      -
      -

      CSS

      ::selection {
      -  background: aquamarine;
      -  color: black;
      -}
      -.custom-text-selection::selection {
      -  background: deeppink;
      -  color: white;
      -}
      -
      -

      Demo

      -
      -

      Select some of this text.

      -
      - -

      Explanation

      -

      ::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

      -

      Browser support

      -
      -
      - 84.6% -
      -
      -

      ⚠️ Requires prefixes for full support and is not actually -in any specification.

      - -
      -
      -

      Easing variables

      -

      Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

      -

      HTML

      <div class="easing-variables"></div>
      -
      -

      CSS

      :root {
      -  --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
      -  --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
      -  --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
      -  --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
      -  --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
      -  --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
      -  --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
      -  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
      -  --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
      -  --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
      -  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
      -  --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
      -  --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
      -  --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
      -  --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
      -  --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
      -  --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
      -  --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
      -}
      -.easing-variables {
      -  width: 50px;
      -  height: 50px;
      -  background: #333;
      -  transition: transform 1s var(--ease-out-quart);
      -}
      -.easing-variables:hover {
      -  transform: rotate(45deg);
      -}
      -
      -

      Demo

      -
      -
      Hover
      -
      - -

      Explanation

      -

      The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical - to the selector html, except that its specificity is higher.

      -

      Browser support

      -
      -
      - 87.2% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      Etched text

      -

      Creates an effect where text appears to be "etched" or engraved into the background.

      -

      HTML

      <p class="etched-text">I appear etched into the background.</p>
      -
      -

      CSS

      .etched-text {
      -  text-shadow: 0 2px white;
      -  font-size: 1.5rem;
      -  font-weight: bold;
      -  color: #b8bec5;
      -}
      -
      -

      Demo

      -
      -

      I appear etched into the background.

      -
      - -

      Explanation

      -

      text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

      -

      The background must be darker than the shadow for the effect to work.

      -

      The text color should be slightly faded to make it look like it's engraved/carved out of the background.

      -

      Browser support

      -
      -
      - 97.9% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      Gradient text

      -

      Gives text a gradient color.

      -

      HTML

      <p class="gradient-text">Gradient text</p>
      -
      -

      CSS

      .gradient-text {
      -  background: -webkit-linear-gradient(pink, red);
      -  -webkit-text-fill-color: transparent;
      -  -webkit-background-clip: text;
      -}
      -
      -

      Demo

      -
      -

      - Gradient text -

      -
      - -

      Explanation

      -
        -
      1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
      2. -
      3. webkit-text-fill-color: transparent fills the text with a transparent color.
      4. -
      5. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
      6. -
      -

      Browser support

      -
      -
      - 90.7% -
      -
      -

      ⚠️ Uses non-standard properties.

      - -
      -
      -

      Hairline border

      -

      Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

      -

      HTML

      <div class="hairline-border">text</div>
      -
      -

      CSS

      .hairline-border {
      -  box-shadow: 0 0 0 1px;
      -}
      -@media (min-resolution: 2dppx) {
      -  .hairline-border {
      -    box-shadow: 0 0 0 0.5px;
      -  }
      -}
      -@media (min-resolution: 3dppx) {
      -  .hairline-border {
      -    box-shadow: 0 0 0 0.33333333px;
      -  }
      -}
      -@media (min-resolution: 4dppx) {
      -  .hairline-border {
      -    box-shadow: 0 0 0 0.25px;
      -  }
      -}
      -
      -

      Demo

      -
      -

      Text with a hairline border around it.

      -
      - -

      Explanation

      -
        -
      1. box-shadow, when only using spread, adds a psuedo-border which can use subpixels*.
      2. -
      3. Use @media (min-resolution: ...) to check the device pixel ratio (1ddpx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
      4. -
      -

      Browser Support

      -
      -
      - 95.0% -
      -
      -

      ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.

      - -
      -

      *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

      -
      -
      -

      Horizontal and vertical centering

      -

      Horizontally and vertically centers a child element within a parent element.

      -

      HTML

      <div class="horizontal-and-vertical-centering">
      -  <div class="child"></div>
      -</div>
      -
      -

      CSS

      .horizontal-and-vertical-centering {
      -  display: flex;
      -  justify-content: center;
      -  align-items: center;
      -}
      -
      -

      Demo

      -
      -
      -

      Centered content.

      -
      -
      - -

      Explanation

      -
        -
      1. display: flex enables flexbox.
      2. -
      3. justify-content: center centers the child horizontally.
      4. -
      5. align-items: center centers the child vertically.
      6. -
      -

      Browser support

      -
      -
      - 97.8% -
      -
      -

      ⚠️ Needs prefixes for full support.

      - -
      -
      -

      Mouse cursor gradient tracking

      -

      A hover effect where the gradient follows the mouse cursor.

      -

      HTML

      <button class="mouse-cursor-gradient-tracking">
      -  <span>Hover me</span>
      -</button>
      -
      -

      CSS

      .mouse-cursor-gradient-tracking {
      -  position: relative;
      -  background: #2379f7;
      -  padding: 0.5rem 1rem;
      -  font-size: 1.2rem;
      -  border: none;
      -  color: white;
      -  cursor: pointer;
      -  outline: none;
      -  overflow: hidden;
      -}
      -.mouse-cursor-gradient-tracking span {
      -  position: relative;
      -}
      -.mouse-cursor-gradient-tracking::before {
      -  --size: 0;
      -  content: '';
      -  position: absolute;
      -  left: var(--x);
      -  top: var(--y);
      -  width: var(--size);
      -  height: var(--size);
      -  background: radial-gradient(circle closest-side, pink, transparent);
      -  transform: translate(-50%, -50%);
      -  transition: width .2s ease, height .2s ease;
      -}
      -.mouse-cursor-gradient-tracking:hover::before {
      -  --size: 200px;
      -}
      -
      -

      JavaScript

      var btn = document.querySelector('.mouse-cursor-gradient-tracking')
      -btn.onmousemove = function (e) {
      -  var x = e.pageX - btn.offsetLeft
      -  var y = e.pageY - btn.offsetTop
      -  btn.style.setProperty('--x', x + 'px')
      -  btn.style.setProperty('--y', y + 'px')
      -}
      -
      -

      Demo

      -
      - -
      - - -

      Explanation

      -

      TODO

      -

      Note!

      -

      If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

      -
      var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
      -var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
      -
      -

      Browser support

      -
      -
      - 87.2% -
      -
      -

      -
      Requires JavaScript
      - ⚠️ Requires JavaScript. -

      - -
      -
      -

      Overflow scroll gradient

      -

      Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

      -

      HTML

      <div class="overflow-scroll-gradient">
      -  <div class="overflow-scroll-gradient__scroller">
      -    Content to be scrolled
      -  </div>
      -</div>
      -
      -

      CSS

      .overflow-scroll-gradient {
      -  position: relative;
      -}
      -.overflow-scroll-gradient::after {
      -  content: '';
      -  position: absolute;
      -  bottom: 0;
      -  width: 300px;
      -  height: 25px;
      -  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
      -}
      -.overflow-scroll-gradient__scroller {
      -  overflow-y: scroll;
      -  background: white;
      -  width: 300px;
      -  height: 250px;
      -  padding: 15px 0;
      -  line-height: 1.2;
      -  text-align: center;
      -}
      -
      -

      Demo

      -
      -
      -
      - Content to be scrolled -
      -
      -
      - - -

      Explanation

      -
        -
      1. position: relative on the parent establishes a Cartesian positioning context for psuedo elements.
      2. -
      3. ::after defines a pseudo element.
      4. -
      5. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
      6. -
      7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
      8. -
      9. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
      10. -
      11. height: 25px is the height of the fading gradient psuedo element, which should be kept relatively small.
      12. -
      13. bottom: 0 positions the pseudo element at the bottom of the parent.
      14. -
      -

      Browser support

      -
      -
      - 94.8% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      Popout menu

      -

      Reveals an interactive popout menu on hover.

      -

      HTML

      <div class="reference">
      -  <div class="popout-menu">
      -    Popout menu
      -  </div>
      -</div>
      -
      -

      CSS

      .reference {
      -  position: relative;
      -}
      -.popout-menu {
      -  position: absolute;
      -  visibility: hidden;
      -  left: 100%;
      -}
      -.reference:hover > .popout-menu {
      -  visibility: visible;
      -}
      -
      -

      Demo

      -
      -
      -
      - Popout menu -
      -
      -
      - -

      Explanation

      -
        -
      1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
      2. -
      3. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
      4. -
      5. left: 100% moves the the popout menu 100% of its parent's width from the left.
      6. -
      7. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
      8. -
      9. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, - which shows the popout.
      10. -
      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Pretty text underline

      -

      A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

      -

      HTML

      <p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
      -
      -

      CSS

      .pretty-text-underline {
      -  display: inline;
      -  font-size: 1.25rem;
      -  text-shadow: 1px 1px 0 #f5f6f9,
      -    -1px 1px 0 #f5f6f9,
      -    -1px -1px 0 #f5f6f9,
      -    1px -1px 0 #f5f6f9;
      -  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
      -  background-position: 0 1.04em;
      -  background-repeat: repeat-x;
      -  background-size: 1px 1px;
      -}
      -.pretty-text-underline::-moz-selection {
      -  background-color: rgba(0, 150, 255, 0.3);
      -  text-shadow: none;
      -}
      -.pretty-text-underline::selection {
      -  background-color: rgba(0, 150, 255, 0.3);
      -  text-shadow: none;
      -}
      -
      -

      Demo

      -
      -

      Pretty text underline without clipping descending letters.

      -
      - -

      Explanation

      -
        -
      1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use - a larger px size.
      2. -
      3. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
      4. -
      5. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
      6. -
      7. The ::selection pseudo selector ensures the text shadow does not interfere with text selection. -
      8. -
      -

      Browser support

      -
      -
      - 94.8% -
      -
      -

      ⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

      - -
      -
      -

      Shape separator

      -

      Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

      -

      HTML

      <div class="shape-separator"></div>
      -
      -

      CSS

      .shape-separator {
      -  position: relative;
      -  height: 48px;
      -}
      -.shape-separator::after {
      -  content: '';
      -  background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
      -  position: absolute;
      -  width: 100%;
      -  height: 24px;
      -  bottom: 0;
      -}
      -
      -

      Demo

      -
      -
      -
      - -

      Explanation

      -
        -
      1. position: relative on the element establishes a Cartesian positioning context for psuedo elements.
      2. -
      3. ::after defines a pseudo element.
      4. -
      5. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the psuedo element, which repeats by default. It must be the same color as the block that is being separated. -
      6. -
      7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
      8. -
      9. width: 100% ensures the element stretches the entire width of its parent.
      10. -
      11. height: 24px is the same height as the shape.
      12. -
      13. bottom: 0 positions the pseudo element at the bottom of the parent.
      14. -
      -

      Browser support

      -
      -
      - 98.0% -
      -
      -

      ✅ No caveats.

      - -
      -
      -

      System font stack

      -

      Uses the native font of the operating system to get close to a native app feel.

      -

      HTML

      <p class="system-font-stack">This text uses the system font.</p>
      -
      -

      CSS

      .system-font-stack {
      -  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
      -}
      -
      -

      Demo

      -
      -

      This text uses the system font.

      -
      - -

      Explanation

      -

      The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

      -
        -
      1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
      2. -
      3. BlinkMacSystemFont is San Francisco, used on macOS Chrome
      4. -
      5. Segoe UI is used on Windows 10
      6. -
      7. Roboto is used on Android
      8. -
      9. Oxygen-Sans is used on GNU+Linux
      10. -
      11. Ubuntu is used on Linux
      12. -
      13. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
      14. -
      15. Arial is a font widely supported by all operating systems
      16. -
      17. sans-serif is the fallback sans-serif font if none of the other fonts are supported
      18. -
      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Triangle

      -

      Creates a triangle shape with pure CSS.

      -

      HTML

      <div class="triangle"></div>
      -
      -

      CSS

      .triangle {
      -  width: 0;
      -  height: 0;
      -  border-top: 20px solid #333;
      -  border-left: 20px solid transparent;
      -  border-right: 20px solid transparent;
      -}
      -
      -

      Demo

      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -

      Explanation

      -

      - View this link for a detailed explanation. -

      -

      The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

      -

      Experiment with the px values to change the proportion of the triangle.

      -

      Browser support

      -
      -
      - 99+% -
      -
      -

      ✅ No caveats.

      -
      -
      -

      Truncate text

      -

      If the text is longer than one line, it will be truncated and end with an ellipsis .

      -

      HTML

      <p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
      -
      -

      CSS

      .truncate-text {
      -  overflow: hidden;
      -  white-space: nowrap;
      -  text-overflow: ellipsis;
      -}
      -
      -

      Demo

      -
      -

      - This text will be truncated if it exceeds 200px in width. -

      -
      - -

      Explanation

      -
        -
      1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
      2. -
      3. white-space: nowrap prevents the text from exceeding one line in height.
      4. -
      5. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
      6. -
      -

      Browser support

      -
      -
      - 98.1% -
      -
      -

      ✅ No caveats.

      - -
      -
      -
      -
      -
      - - \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.css b/dist/f06fd0495a34430f242f7611190395d6.css deleted file mode 100644 index 96d98ca15..000000000 --- a/dist/f06fd0495a34430f242f7611190395d6.css +++ /dev/null @@ -1,1621 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * 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; -} - -/* Grouping content - ========================================================================== */ - -/** - * 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 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 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 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * 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; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * 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; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * 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; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 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 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -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 in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 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 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} -code[class*='language-'], -pre[class*='language-'] { - color: rgb(50, 75, 100); - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 2; - font-size: 1rem; - -webkit-overflow-scrolling: touch; - margin: 0; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*='language-']::-moz-selection, -pre[class*='language-'] ::-moz-selection, -code[class*='language-']::-moz-selection, -code[class*='language-'] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*='language-']::selection, -pre[class*='language-'] ::selection, -code[class*='language-']::selection, -code[class*='language-'] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*='language-'], - pre[class*='language-'] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*='language-'] { - overflow: auto; - padding: 0.75rem 1.25rem; -} - -pre.is-option { - margin: 0; - padding: 0; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: #f5f6f9; - border-radius: 0.25rem; -} - -/* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8ca2d3; -} - -.token.selector, -.token.attr-name { - color: #da7800; -} - -.token.punctuation { - color: #93a0c7; -} - -.namespace { - opacity: 0.7; -} - -.token.tag { - color: #e22f70; -} - -.token.property, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #0087ca; -} - -.token.string, -.language-css .token.string, -.token.url, -.token.attr-value, -.token.char, -.token.builtin, -.token.inserted { - color: #008a7e; -} - -.token.operator, -.token.entity, -.style .token.string { - color: #f53737; -} - -.token.important, -.token.atrule, -.token.keyword { - color: #7552ff; -} - -.token.function { - color: #396dff; -} - -.token.regex, -.token.variable { - color: #00a8d4; -} - -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} -html { - font-size: 0.95rem; } - -body { - font-family: -apple-system, BlinkMacSystemFont, Roboto, Segoe UI, 'Helvetica Neue', Helvetica, Arial, sans-serif; - background: #f6f7fd; - color: #324b64; - line-height: 1.5; } - -a { - color: #157bda; - text-decoration: none; - word-wrap: break-word; - overflow-wrap: break-word; } - a:hover { - color: #0090ff; } - -hr { - border: 0; - border-top: 1px solid rgba(0, 32, 128, 0.1); } - -ul, -ol { - padding-left: 1.25rem; } - -.container { - max-width: 1000px; - padding: 0 2%; - margin: 0 auto; } - -.main > .container { - padding: 0; } - -@media (min-width: 579px) { - .main > .container { - padding: 0 2%; } } - -@media (min-width: 768px) { - html { - font-size: 1rem; } } - -@media (min-width: 992px) { - .content-wrapper { - margin-left: 200px; } } - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */ -.hamburger { - padding: 1rem; - display: inline-block; - cursor: pointer; - transition-property: opacity, filter; - transition-duration: 0.15s; - transition-timing-function: linear; - font: inherit; - color: inherit; - text-transform: none; - background-color: transparent; - border: 0; - margin: 0; - overflow: visible; - outline: 0; } - -.hamburger:hover { - opacity: 0.7; } - -.hamburger-box { - width: 40px; - height: 20px; - display: inline-block; - position: relative; } - -.hamburger-inner { - display: block; - top: 50%; } - -.hamburger-inner, -.hamburger-inner::before, -.hamburger-inner::after { - width: 36px; - height: 2px; - background-color: #e3f5ff; - border-radius: 4px; - position: absolute; - transition-property: transform; - transition-duration: 0.15s; - transition-timing-function: ease; } - -.hamburger-inner::before, -.hamburger-inner::after { - content: ''; - display: block; } - -.hamburger-inner::before { - top: -10px; } - -.hamburger-inner::after { - bottom: -10px; } - -/* - * 3DX - */ -.hamburger--3dx .hamburger-box { - perspective: 80px; } - -.hamburger--3dx .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx .hamburger-inner::before, -.hamburger--3dx .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(180deg); } - -.hamburger--3dx.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DX Reverse - */ -.hamburger--3dx-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dx-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r .hamburger-inner::before, -.hamburger--3dx-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dx-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateY(-180deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dx-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY - */ -.hamburger--3dy .hamburger-box { - perspective: 80px; } - -.hamburger--3dy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy .hamburger-inner::before, -.hamburger--3dy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(-180deg); } - -.hamburger--3dy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DY Reverse - */ -.hamburger--3dy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r .hamburger-inner::before, -.hamburger--3dy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY - */ -.hamburger--3dxy .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy .hamburger-inner::before, -.hamburger--3dxy .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg); } - -.hamburger--3dxy.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * 3DXY Reverse - */ -.hamburger--3dxy-r .hamburger-box { - perspective: 80px; } - -.hamburger--3dxy-r .hamburger-inner { - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r .hamburger-inner::before, -.hamburger--3dxy-r .hamburger-inner::after { - transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); } - -.hamburger--3dxy-r.is-active .hamburger-inner { - background-color: transparent; - transform: rotateX(180deg) rotateY(180deg) rotateZ(-180deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::before { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--3dxy-r.is-active .hamburger-inner::after { - transform: translate3d(0, -10px, 0) rotate(-45deg); } - -/* - * Arrow - */ -.hamburger--arrow.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrow.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Arrow Right - */ -.hamburger--arrow-r.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrow-r.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Alt - */ -.hamburger--arrowalt .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(-8px, -10px, 0) rotate(-45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(-8px, 10px, 0) rotate(45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Alt Right - */ -.hamburger--arrowalt-r .hamburger-inner::before { - transition: top 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r .hamburger-inner::after { - transition: bottom 0.1s 0.1s ease, transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::before { - top: 0; - transform: translate3d(8px, -10px, 0) rotate(45deg) scale(0.7, 1); - transition: top 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -.hamburger--arrowalt-r.is-active .hamburger-inner::after { - bottom: 0; - transform: translate3d(8px, 10px, 0) rotate(-45deg) scale(0.7, 1); - transition: bottom 0.1s ease, transform 0.1s 0.1s cubic-bezier(0.895, 0.03, 0.685, 0.22); } - -/* - * Arrow Turn - */ -.hamburger--arrowturn.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn.is-active .hamburger-inner::before { - transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -.hamburger--arrowturn.is-active .hamburger-inner::after { - transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -/* - * Arrow Turn Right - */ -.hamburger--arrowturn-r.is-active .hamburger-inner { - transform: rotate(-180deg); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::before { - transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } - -.hamburger--arrowturn-r.is-active .hamburger-inner::after { - transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } - -/* - * Boring - */ -.hamburger--boring .hamburger-inner, -.hamburger--boring .hamburger-inner::before, -.hamburger--boring .hamburger-inner::after { - transition-property: none; } - -.hamburger--boring.is-active .hamburger-inner { - transform: rotate(45deg); } - -.hamburger--boring.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--boring.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -/* - * Collapse - */ -.hamburger--collapse .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Collapse Reverse - */ -.hamburger--collapse-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0.13s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } - -.hamburger--collapse-r .hamburger-inner::before { - transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--collapse-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--collapse-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } - -.hamburger--collapse-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Elastic - */ -.hamburger--elastic .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(135deg); - transition-delay: 0.075s; } - -.hamburger--elastic.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-270deg); - transition-delay: 0.075s; } - -/* - * Elastic Reverse - */ -.hamburger--elastic-r .hamburger-inner { - top: 2px; - transition-duration: 0.275s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r .hamburger-inner::before { - top: 10px; - transition: opacity 0.125s 0.275s ease; } - -.hamburger--elastic-r .hamburger-inner::after { - top: 20px; - transition: transform 0.275s cubic-bezier(0.68, -0.55, 0.265, 1.55); } - -.hamburger--elastic-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-135deg); - transition-delay: 0.075s; } - -.hamburger--elastic-r.is-active .hamburger-inner::before { - transition-delay: 0s; - opacity: 0; } - -.hamburger--elastic-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(270deg); - transition-delay: 0.075s; } - -/* - * Emphatic - */ -.hamburger--emphatic { - overflow: hidden; } - -.hamburger--emphatic .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic.is-active .hamburger-inner::before { - left: -80px; - top: -80px; - transform: translate3d(80px, 80px, 0) rotate(45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic.is-active .hamburger-inner::after { - right: -80px; - top: -80px; - transform: translate3d(-80px, 80px, 0) rotate(-45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Emphatic Reverse - */ -.hamburger--emphatic-r { - overflow: hidden; } - -.hamburger--emphatic-r .hamburger-inner { - transition: background-color 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::before { - left: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, left 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r .hamburger-inner::after { - top: 10px; - right: 0; - transition: transform 0.125s cubic-bezier(0.6, 0.04, 0.98, 0.335), top 0.05s 0.125s linear, right 0.125s 0.175s ease-in; } - -.hamburger--emphatic-r.is-active .hamburger-inner { - transition-delay: 0s; - transition-timing-function: ease-out; - background-color: transparent; } - -.hamburger--emphatic-r.is-active .hamburger-inner::before { - left: -80px; - top: 80px; - transform: translate3d(80px, -80px, 0) rotate(-45deg); - transition: left 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -.hamburger--emphatic-r.is-active .hamburger-inner::after { - right: -80px; - top: 80px; - transform: translate3d(-80px, -80px, 0) rotate(45deg); - transition: right 0.125s ease-out, top 0.05s 0.125s linear, transform 0.125s 0.175s cubic-bezier(0.075, 0.82, 0.165, 1); } - -/* - * Minus - */ -.hamburger--minus .hamburger-inner::before, -.hamburger--minus .hamburger-inner::after { - transition: bottom 0.08s 0s ease-out, top 0.08s 0s ease-out, opacity 0s linear; } - -.hamburger--minus.is-active .hamburger-inner::before, -.hamburger--minus.is-active .hamburger-inner::after { - opacity: 0; - transition: bottom 0.08s ease-out, top 0.08s ease-out, opacity 0s 0.08s linear; } - -.hamburger--minus.is-active .hamburger-inner::before { - top: 0; } - -.hamburger--minus.is-active .hamburger-inner::after { - bottom: 0; } - -/* - * Slider - */ -.hamburger--slider .hamburger-inner { - top: 2px; } - -.hamburger--slider .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider .hamburger-inner::after { - top: 20px; } - -.hamburger--slider.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--slider.is-active .hamburger-inner::before { - transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(-90deg); } - -/* - * Slider Reverse - */ -.hamburger--slider-r .hamburger-inner { - top: 2px; } - -.hamburger--slider-r .hamburger-inner::before { - top: 10px; - transition-property: transform, opacity; - transition-timing-function: ease; - transition-duration: 0.15s; } - -.hamburger--slider-r .hamburger-inner::after { - top: 20px; } - -.hamburger--slider-r.is-active .hamburger-inner { - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -.hamburger--slider-r.is-active .hamburger-inner::before { - transform: rotate(45deg) translate3d(5.71429px, -6px, 0); - opacity: 0; } - -.hamburger--slider-r.is-active .hamburger-inner::after { - transform: translate3d(0, -20px, 0) rotate(90deg); } - -/* - * Spin - */ -.hamburger--spin .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin.is-active .hamburger-inner { - transform: rotate(225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spin Reverse - */ -.hamburger--spin-r .hamburger-inner { - transition-duration: 0.22s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r .hamburger-inner::before { - transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } - -.hamburger--spin-r .hamburger-inner::after { - transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spin-r.is-active .hamburger-inner { - transform: rotate(-225deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spin-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } - -.hamburger--spin-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); - transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Spring - */ -.hamburger--spring .hamburger-inner { - top: 2px; - transition: background-color 0s 0.13s linear; } - -.hamburger--spring .hamburger-inner::before { - top: 10px; - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring .hamburger-inner::after { - top: 20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring.is-active .hamburger-inner { - transition-delay: 0.22s; - background-color: transparent; } - -.hamburger--spring.is-active .hamburger-inner::before { - top: 0; - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(45deg); } - -.hamburger--spring.is-active .hamburger-inner::after { - top: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); - transform: translate3d(0, 10px, 0) rotate(-45deg); } - -/* - * Spring Reverse - */ -.hamburger--spring-r .hamburger-inner { - top: auto; - bottom: 0; - transition-duration: 0.13s; - transition-delay: 0s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r .hamburger-inner::after { - top: -20px; - transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0s linear; } - -.hamburger--spring-r .hamburger-inner::before { - transition: top 0.1s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--spring-r.is-active .hamburger-inner { - transform: translate3d(0, -10px, 0) rotate(-45deg); - transition-delay: 0.22s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--spring-r.is-active .hamburger-inner::after { - top: 0; - opacity: 0; - transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0s 0.22s linear; } - -.hamburger--spring-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(90deg); - transition: top 0.1s 0.15s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.22s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand - */ -.hamburger--stand .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand.is-active .hamburger-inner { - transform: rotate(90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Stand Reverse - */ -.hamburger--stand-r .hamburger-inner { - transition: transform 0.075s 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), background-color 0s 0.075s linear; } - -.hamburger--stand-r .hamburger-inner::before { - transition: top 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r .hamburger-inner::after { - transition: bottom 0.075s 0.075s ease-in, transform 0.075s 0s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--stand-r.is-active .hamburger-inner { - transform: rotate(-90deg); - background-color: transparent; - transition: transform 0.075s 0s cubic-bezier(0.215, 0.61, 0.355, 1), background-color 0s 0.15s linear; } - -.hamburger--stand-r.is-active .hamburger-inner::before { - top: 0; - transform: rotate(-45deg); - transition: top 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--stand-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(45deg); - transition: bottom 0.075s 0.1s ease-out, transform 0.075s 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Squeeze - */ -.hamburger--squeeze .hamburger-inner { - transition-duration: 0.075s; - transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze .hamburger-inner::before { - transition: top 0.075s 0.12s ease, opacity 0.075s ease; } - -.hamburger--squeeze .hamburger-inner::after { - transition: bottom 0.075s 0.12s ease, transform 0.075s cubic-bezier(0.55, 0.055, 0.675, 0.19); } - -.hamburger--squeeze.is-active .hamburger-inner { - transform: rotate(45deg); - transition-delay: 0.12s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } - -.hamburger--squeeze.is-active .hamburger-inner::before { - top: 0; - opacity: 0; - transition: top 0.075s ease, opacity 0.075s 0.12s ease; } - -.hamburger--squeeze.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); - transition: bottom 0.075s ease, transform 0.075s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } - -/* - * Vortex - */ -.hamburger--vortex .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex .hamburger-inner::before, -.hamburger--vortex .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex.is-active .hamburger-inner { - transform: rotate(765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex.is-active .hamburger-inner::before, -.hamburger--vortex.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(90deg); } - -/* - * Vortex Reverse - */ -.hamburger--vortex-r .hamburger-inner { - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r .hamburger-inner::before, -.hamburger--vortex-r .hamburger-inner::after { - transition-duration: 0s; - transition-delay: 0.1s; - transition-timing-function: linear; } - -.hamburger--vortex-r .hamburger-inner::before { - transition-property: top, opacity; } - -.hamburger--vortex-r .hamburger-inner::after { - transition-property: bottom, transform; } - -.hamburger--vortex-r.is-active .hamburger-inner { - transform: rotate(-765deg); - transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); } - -.hamburger--vortex-r.is-active .hamburger-inner::before, -.hamburger--vortex-r.is-active .hamburger-inner::after { - transition-delay: 0s; } - -.hamburger--vortex-r.is-active .hamburger-inner::before { - top: 0; - opacity: 0; } - -.hamburger--vortex-r.is-active .hamburger-inner::after { - bottom: 0; - transform: rotate(-90deg); } - -.sidebar { - background: #202e4e; - position: fixed; - z-index: 2; - width: 100%; - height: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__menu { - position: absolute; - font-weight: bold; - border: none; - text-align: left; - text-transform: uppercase; - left: 0; - top: 0; - padding: 0.75rem 1rem; - outline: 0; } - .sidebar__menu-icon { - height: 24px; } - .sidebar__links { - background: #202e4e; - overflow-y: auto; - transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); - transform-origin: 0% 0%; - transform: rotateX(-90deg); - visibility: hidden; - opacity: 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - max-height: 378px; - margin-top: 44px; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); } - .sidebar__links.is-active { - transform: rotateX(0); - visibility: visible; - opacity: 1; } - .sidebar__link { - display: block; - color: #e3f5ff; - padding: 0.5rem 0.75rem; - transition: all 0.1s ease-out; - border-left: 2px solid #576a85; - margin: 0.5rem; - font-weight: 500; - font-size: 0.95rem; } - .sidebar__link:hover { - color: #88f4ff; - background: rgba(255, 255, 255, 0.1); - border-color: pink; } - -@media (min-width: 992px) { - .sidebar { - left: 0; - top: 0; - bottom: 0; - width: 15%; - max-width: 250px; - min-width: 200px; - height: 100%; - background: linear-gradient(-30deg, #2a3d67, #14264e); - box-shadow: 0.4rem 0.4rem 0.8rem rgba(0, 32, 64, 0.1); - overflow-y: auto; - color: white; } - .sidebar::-webkit-scrollbar-track { - background-color: rgba(0, 0, 0, 0.6); } - .sidebar::-webkit-scrollbar { - width: 10px; - background-color: #4b6191; } - .sidebar::-webkit-scrollbar-thumb { - background-color: #4b6191; } - .sidebar__links { - background: none; - box-shadow: none; - visibility: visible; - opacity: 1; - transform: rotateX(0); - margin-top: 0; - max-height: none; } - .sidebar__menu { - display: none; } } - -.header { - position: relative; - padding: 5rem 1rem 4rem; - background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); - color: white; - margin-bottom: 2rem; - text-align: center; - overflow: hidden; - z-index: 1; } - .header::before { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==); - width: 150%; - height: 150%; - top: 0; - left: 0; - opacity: 0.1; - z-index: -1; } - .header::after { - content: ''; - position: absolute; - background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+); - background-size: 24px 24px; - width: 100%; - left: 0; - height: 24px; - bottom: -1px; } - .header__logo { - height: 146px; - user-select: none; } - .header__heading { - font-weight: 200; - font-size: 3rem; - margin: 1rem 0; - line-height: 1.2; } - .header__description { - font-size: 1.5rem; - max-width: 600px; - margin: 0 auto 1rem; - font-weight: 300; - letter-spacing: 0.4px; } - .header__css { - background: -webkit-linear-gradient(-45deg, #f8ffc0, #88f4ff); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-size: 4rem; } - .header__github-button { - color: white; } - -@media (min-width: 579px) { - .header { - padding: 6rem 0 5rem; } - .header__heading { - font-size: 3.75rem; } } - -@media (min-width: 992px) { - .header { - padding: 2.5rem 0 5rem; } } - -.snippet { - position: relative; - background: white; - padding: 2rem 5%; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.1), 0 0 0 1px #f0f2f7; - border-radius: 0.25rem; - font-size: 1.1rem; - margin-bottom: 1.5rem; } - .snippet h3 { - font-size: 2rem; - padding: 0.5rem 0; - border-bottom: 1px solid rgba(0, 32, 128, 0.1); - margin-bottom: 1.25rem; - margin-top: 0; - line-height: 1.3; } - .snippet code:not([class*='lang']) { - background: #fcfaff; - border: 1px solid #e2ddff; - color: #4b00da; - border-radius: 0.15rem; - font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 0.9rem; - padding: 0.2rem 0.4rem; - margin: 0 0.1rem; } - .snippet ol { - margin-top: 0.5rem; } - .snippet ol > li { - margin-bottom: 0.5rem; } - .snippet > p { - margin-top: 0.5rem; } - .snippet h4 { - display: inline-block; - margin: 1rem 0 0.5rem; - line-height: 2; - padding: 0 0.5rem; - border-radius: 3px; - font-size: 0.9rem; - text-transform: uppercase; - background: #333; - border: 1px solid #c6d6ea; - border-bottom-color: #b3c9e3; - background: white; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); } - .snippet h4[data-type='HTML'] { - color: white; - border: none; - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - .snippet h4[data-type='CSS'] { - color: white; - border: none; - background: linear-gradient(135deg, #7983ff, #5f9de9); } - .snippet h4[data-type='JavaScript'] { - color: white; - border: none; - background: linear-gradient(135deg, #ffb000, #f58818); } - .snippet__browser-support { - display: inline-block; - font-size: 2rem; - font-weight: 200; - line-height: 1; - margin: 0.5rem 0; } - .snippet__subheading.is-html { - color: #e22f70; } - .snippet__subheading.is-css { - color: #0a91d4; } - .snippet__subheading.is-explanation { - color: #4b00da; } - .snippet__support-note { - color: #9fa5b5; - font-weight: bold; } - .snippet__requires-javascript { - position: absolute; - background: red; - background: linear-gradient(145deg, #ff003b, #ff4b39); - color: white; - padding: 0.25rem 0.5rem; - font-size: 0.9rem; - transform: rotate(20deg); - font-weight: bold; - top: 1rem; - right: 0; } - -.snippet-demo { - background: #f5f6f9; - border-radius: 0.25rem; - padding: 0.75rem 1.25rem; } - .snippet-demo.is-distinct { - background: linear-gradient(135deg, #ff4c9f, #ff7b74); } - -@media (min-width: 768px) { - .snippet__requires-javascript { - right: -0.5rem; } } - -.back-to-top-button { - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - font-size: 2rem; - font-weight: bold; - background: white; - width: 4rem; - height: 4rem; - position: fixed; - right: 2rem; - bottom: 2rem; - border-radius: 50%; - user-select: none; - box-shadow: 0 0.4rem 0.8rem -0.1rem rgba(0, 32, 128, 0.15); - transition: all 0.2s ease-out; - visibility: hidden; - opacity: 0; - z-index: 1; - border: 1px solid rgba(0, 32, 128, 0.1); - outline: 0; } - .back-to-top-button:hover, .back-to-top-button:focus { - transform: scale(1.1); - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15); - color: #35a8ff; } - .back-to-top-button:focus { - box-shadow: 0 0.8rem 1.6rem -0.2rem rgba(0, 32, 128, 0.15), 0 0 2px 2px #35a8ff; - outline-style: none; } - .back-to-top-button.is-visible { - visibility: visible; - opacity: 1; } diff --git a/dist/f06fd0495a34430f242f7611190395d6.js b/dist/f06fd0495a34430f242f7611190395d6.js deleted file mode 100644 index 1c5159a21..000000000 --- a/dist/f06fd0495a34430f242f7611190395d6.js +++ /dev/null @@ -1,1479 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles - -// eslint-disable-next-line no-global-assign -require = (function (modules, cache, entry) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof require === "function" && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof require === "function" && require; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - - var module = cache[name] = new newRequire.Module(name); - - modules[name][0].call(module.exports, localRequire, module, module.exports); - } - - return cache[name].exports; - - function localRequire(x){ - return newRequire(localRequire.resolve(x)); - } - - function resolve(x){ - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - - for (var i = 0; i < entry.length; i++) { - newRequire(entry[i]); - } - - // Override the current require with this new one - return newRequire; -})({13:[function(require,module,exports) { -var bundleURL = null; -function getBundleURLCached() { - if (!bundleURL) { - bundleURL = getBundleURL(); - } - - return bundleURL; -} - -function getBundleURL() { - // Attempt to find the URL of the current script and use that as the base URL - try { - throw new Error(); - } catch (err) { - var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g); - if (matches) { - return getBaseURL(matches[0]); - } - } - - return '/'; -} - -function getBaseURL(url) { - return ('' + url).replace(/^((?:https?|file|ftp):\/\/.+)\/[^/]+$/, '$1') + '/'; -} - -exports.getBundleURL = getBundleURLCached; -exports.getBaseURL = getBaseURL; -},{}],10:[function(require,module,exports) { -var bundle = require('./bundle-url'); - -function updateLink(link) { - var newLink = link.cloneNode(); - newLink.onload = function () { - link.remove(); - }; - newLink.href = link.href.split('?')[0] + '?' + Date.now(); - link.parentNode.insertBefore(newLink, link.nextSibling); -} - -var cssTimeout = null; -function reloadCSS() { - if (cssTimeout) { - return; - } - - cssTimeout = setTimeout(function () { - var links = document.querySelectorAll('link[rel="stylesheet"]'); - for (var i = 0; i < links.length; i++) { - if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) { - updateLink(links[i]); - } - } - - cssTimeout = null; - }, 50); -} - -module.exports = reloadCSS; -},{"./bundle-url":13}],14:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":10}],15:[function(require,module,exports) { -var global = (1,eval)("this"); - -/* ********************************************** - Begin prism-core.js -********************************************** */ - -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * MIT license http://www.opensource.org/licenses/mit-license.php/ - * @author Lea Verou http://lea.verou.me - */ - -var Prism = (function(){ - -// Private helper vars -var lang = /\blang(?:uage)?-(\w+)\b/i; -var uniqueId = 0; - -var _ = _self.Prism = { - manual: _self.Prism && _self.Prism.manual, - disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - util: { - encode: function (tokens) { - if (tokens instanceof Token) { - return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); - } else if (_.util.type(tokens) === 'Array') { - return tokens.map(_.util.encode); - } else { - return tokens.replace(/&/g, '&').replace(/ text.length) { - // Something went terribly wrong, ABORT, ABORT! - return; - } - - if (str instanceof Token) { - continue; - } - - pattern.lastIndex = 0; - - var match = pattern.exec(str), - delNum = 1; - - // Greedy patterns can override/remove up to two previously matched tokens - if (!match && greedy && i != strarr.length - 1) { - pattern.lastIndex = pos; - match = pattern.exec(text); - if (!match) { - break; - } - - var from = match.index + (lookbehind ? match[1].length : 0), - to = match.index + match[0].length, - k = i, - p = pos; - - for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { - p += strarr[k].length; - // Move the index i to the element in strarr that is closest to from - if (from >= p) { - ++i; - pos = p; - } - } - - /* - * If strarr[i] is a Token, then the match starts inside another Token, which is invalid - * If strarr[k - 1] is greedy we are in conflict with another greedy pattern - */ - if (strarr[i] instanceof Token || strarr[k - 1].greedy) { - continue; - } - - // Number of tokens to delete and replace with the new match - delNum = k - i; - str = text.slice(pos, p); - match.index -= pos; - } - - if (!match) { - if (oneshot) { - break; - } - - continue; - } - - if(lookbehind) { - lookbehindLength = match[1].length; - } - - var from = match.index + lookbehindLength, - match = match[0].slice(lookbehindLength), - to = from + match.length, - before = str.slice(0, from), - after = str.slice(to); - - var args = [i, delNum]; - - if (before) { - ++i; - pos += before.length; - args.push(before); - } - - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); - - args.push(wrapped); - - if (after) { - args.push(after); - } - - Array.prototype.splice.apply(strarr, args); - - if (delNum != 1) - _.matchGrammar(text, strarr, grammar, i, pos, true, token); - - if (oneshot) - break; - } - } - } - }, - - tokenize: function(text, grammar, language) { - var strarr = [text]; - - var rest = grammar.rest; - - if (rest) { - for (var token in rest) { - grammar[token] = rest[token]; - } - - delete grammar.rest; - } - - _.matchGrammar(text, strarr, grammar, 0, 0, false); - - return strarr; - }, - - hooks: { - all: {}, - - add: function (name, callback) { - var hooks = _.hooks.all; - - hooks[name] = hooks[name] || []; - - hooks[name].push(callback); - }, - - run: function (name, env) { - var callbacks = _.hooks.all[name]; - - if (!callbacks || !callbacks.length) { - return; - } - - for (var i=0, callback; callback = callbacks[i++];) { - callback(env); - } - } - } -}; - -var Token = _.Token = function(type, content, alias, matchedStr, greedy) { - this.type = type; - this.content = content; - this.alias = alias; - // Copy of the full string this token was created from - this.length = (matchedStr || "").length|0; - this.greedy = !!greedy; -}; - -Token.stringify = function(o, language, parent) { - if (typeof o == 'string') { - return o; - } - - if (_.util.type(o) === 'Array') { - return o.map(function(element) { - return Token.stringify(element, language, o); - }).join(''); - } - - var env = { - type: o.type, - content: Token.stringify(o.content, language, parent), - tag: 'span', - classes: ['token', o.type], - attributes: {}, - language: language, - parent: parent - }; - - if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); - } - - _.hooks.run('wrap', env); - - var attributes = Object.keys(env.attributes).map(function(name) { - return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; - }).join(' '); - - return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; - -}; - -if (!_self.document) { - if (!_self.addEventListener) { - // in Node.js - return _self.Prism; - } - - if (!_.disableWorkerMessageHandler) { - // In worker - _self.addEventListener('message', function (evt) { - var message = JSON.parse(evt.data), - lang = message.language, - code = message.code, - immediateClose = message.immediateClose; - - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) { - _self.close(); - } - }, false); - } - - return _self.Prism; -} - -//Get current script and highlight -var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); - -if (script) { - _.filename = script.src; - - if (!_.manual && !script.hasAttribute('data-manual')) { - if(document.readyState !== "loading") { - if (window.requestAnimationFrame) { - window.requestAnimationFrame(_.highlightAll); - } else { - window.setTimeout(_.highlightAll, 16); - } - } - else { - document.addEventListener('DOMContentLoaded', _.highlightAll); - } - } -} - -return _self.Prism; - -})(); - -if (typeof module !== 'undefined' && module.exports) { - module.exports = Prism; -} - -// hack for components to work correctly in node.js -if (typeof global !== 'undefined') { - global.Prism = Prism; -} - - -/* ********************************************** - Begin prism-markup.js -********************************************** */ - -Prism.languages.markup = { - 'comment': //, - 'prolog': /<\?[\s\S]+?\?>/, - 'doctype': //i, - 'cdata': //i, - 'tag': { - pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, - inside: { - 'tag': { - pattern: /^<\/?[^\s>\/]+/i, - inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } - }, - 'attr-value': { - pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, - inside: { - 'punctuation': [ - /^=/, - { - pattern: /(^|[^\\])["']/, - lookbehind: true - } - ] - } - }, - 'punctuation': /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { - 'namespace': /^[^\s>\/:]+:/ - } - } - - } - }, - 'entity': /&#?[\da-z]{1,8};/i -}; - -Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = - Prism.languages.markup['entity']; - -// Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add('wrap', function(env) { - - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } -}); - -Prism.languages.xml = Prism.languages.markup; -Prism.languages.html = Prism.languages.markup; -Prism.languages.mathml = Prism.languages.markup; -Prism.languages.svg = Prism.languages.markup; - - -/* ********************************************** - Begin prism-css.js -********************************************** */ - -Prism.languages.css = { - 'comment': /\/\*[\s\S]*?\*\//, - 'atrule': { - pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, - inside: { - 'rule': /@[\w-]+/ - // See rest below - } - }, - 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, - 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, - 'string': { - pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, - 'important': /\B!important\b/i, - 'function': /[-a-z0-9]+(?=\()/i, - 'punctuation': /[(){};:]/ -}; - -Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'style': { - pattern: /()[\s\S]*?(?=<\/style>)/i, - lookbehind: true, - inside: Prism.languages.css, - alias: 'language-css', - greedy: true - } - }); - - Prism.languages.insertBefore('inside', 'attr-value', { - 'style-attr': { - pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, - inside: { - 'attr-name': { - pattern: /^\s*style/i, - inside: Prism.languages.markup.tag.inside - }, - 'punctuation': /^\s*=\s*['"]|['"]\s*$/, - 'attr-value': { - pattern: /.+/i, - inside: Prism.languages.css - } - }, - alias: 'language-css' - } - }, Prism.languages.markup.tag); -} - -/* ********************************************** - Begin prism-clike.js -********************************************** */ - -Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, - lookbehind: true, - 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': /[a-z0-9_]+(?=\()/i, - 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, - 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, - 'punctuation': /[{}[\];(),.:]/ -}; - - -/* ********************************************** - Begin prism-javascript.js -********************************************** */ - -Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(?: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|var|void|while|with|yield)\b/, - 'number': /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, - // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) - 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, - 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ -}); - -Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, - lookbehind: true, - greedy: true - }, - // This must be declared before keyword because we use "function" inside the look-forward - 'function-variable': { - pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, - alias: 'function' - } -}); - -Prism.languages.insertBefore('javascript', 'string', { - 'template-string': { - pattern: /`(?:\\[\s\S]|[^\\`])*`/, - greedy: true, - inside: { - 'interpolation': { - pattern: /\$\{[^}]+\}/, - inside: { - 'interpolation-punctuation': { - pattern: /^\$\{|\}$/, - alias: 'punctuation' - }, - rest: Prism.languages.javascript - } - }, - 'string': /[\s\S]+/ - } - } -}); - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'script': { - pattern: /()[\s\S]*?(?=<\/script>)/i, - lookbehind: true, - inside: Prism.languages.javascript, - alias: 'language-javascript', - greedy: true - } - }); -} - -Prism.languages.js = Prism.languages.javascript; - - -/* ********************************************** - Begin prism-file-highlight.js -********************************************** */ - -(function () { - if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { - return; - } - - self.Prism.fileHighlight = function() { - - var Extensions = { - 'js': 'javascript', - 'py': 'python', - 'rb': 'ruby', - 'ps1': 'powershell', - 'psm1': 'powershell', - 'sh': 'bash', - 'bat': 'batch', - 'h': 'c', - 'tex': 'latex' - }; - - Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { - var src = pre.getAttribute('data-src'); - - var language, parent = pre; - var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; - while (parent && !lang.test(parent.className)) { - parent = parent.parentNode; - } - - if (parent) { - language = (pre.className.match(lang) || [, ''])[1]; - } - - if (!language) { - var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; - language = Extensions[extension] || extension; - } - - var code = document.createElement('code'); - code.className = 'language-' + language; - - pre.textContent = ''; - - code.textContent = 'Loading…'; - - pre.appendChild(code); - - var xhr = new XMLHttpRequest(); - - xhr.open('GET', src, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - - if (xhr.status < 400 && xhr.responseText) { - code.textContent = xhr.responseText; - - Prism.highlightElement(code); - } - else if (xhr.status >= 400) { - code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; - } - else { - code.textContent = '✖ Error: File does not exist or is empty'; - } - } - }; - - xhr.send(null); - }); - - }; - - document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); - -})(); - -},{}],6:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":10}],5:[function(require,module,exports) { - - var reloadCSS = require('_css_loader'); - module.hot.dispose(reloadCSS); - module.hot.accept(reloadCSS); - -},{"_css_loader":10}],7:[function(require,module,exports) { -var e = Element.prototype; -if (!e.matches) { - e.matches = e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector; -} -if (!e.closest) { - e.closest = function (s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; -} -},{}],11:[function(require,module,exports) { -var global = (1,eval)("this"); -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -;(function (global, factory) { - (typeof exports === 'undefined' ? 'undefined' : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Jump = factory(); -})(this, function () { - 'use strict'; - - // Robert Penner's easeInOutQuad - - // find the rest of his easing functions here: http://robertpenner.com/easing/ - // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js - - var easeInOutQuad = function easeInOutQuad(t, b, c, d) { - t /= d / 2; - if (t < 1) return c / 2 * t * t + b; - t--; - return -c / 2 * (t * (t - 2) - 1) + b; - }; - - var _typeof = typeof Symbol === 'function' && _typeof2(Symbol.iterator) === 'symbol' ? function (obj) { - return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - }; - - var jumper = function jumper() { - // private variable cache - // no variables are created during a jump, preventing memory leaks - - var element = void 0; // element to scroll to (node) - - var start = void 0; // where scroll starts (px) - var stop = void 0; // where scroll stops (px) - - var offset = void 0; // adjustment from the stop position (px) - var easing = void 0; // easing function (function) - var a11y = void 0; // accessibility support flag (boolean) - - var distance = void 0; // distance of scroll (px) - var duration = void 0; // scroll duration (ms) - - var timeStart = void 0; // time scroll started (ms) - var timeElapsed = void 0; // time spent scrolling thus far (ms) - - var next = void 0; // next scroll position (px) - - var callback = void 0; // to call when done scrolling (function) - - // scroll position helper - - function location() { - return window.scrollY || window.pageYOffset; - } - - // element offset helper - - function top(element) { - return element.getBoundingClientRect().top + start; - } - - // rAF loop helper - - function loop(timeCurrent) { - // store time scroll started, if not started already - if (!timeStart) { - timeStart = timeCurrent; - } - - // determine time spent scrolling so far - timeElapsed = timeCurrent - timeStart; - - // calculate next scroll position - next = easing(timeElapsed, start, distance, duration); - - // scroll to it - window.scrollTo(0, next); - - // check progress - timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop - : done(); // scrolling is done - } - - // scroll finished helper - - function done() { - // account for rAF time rounding inaccuracies - window.scrollTo(0, start + distance); - - // if scrolling to an element, and accessibility is enabled - if (element && a11y) { - // add tabindex indicating programmatic focus - element.setAttribute('tabindex', '-1'); - - // focus the element - element.focus(); - } - - // if it exists, fire the callback - if (typeof callback === 'function') { - callback(); - } - - // reset time for next jump - timeStart = false; - } - - // API - - function jump(target) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - // resolve options, or use defaults - duration = options.duration || 1000; - offset = options.offset || 0; - callback = options.callback; // "undefined" is a suitable default, and won't be called - easing = options.easing || easeInOutQuad; - a11y = options.a11y || false; - - // cache starting position - start = location(); - - // resolve target - switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { - // scroll from current position - case 'number': - element = undefined; // no element to scroll to - a11y = false; // make sure accessibility is off - stop = start + target; - break; - - // scroll to element (node) - // bounding rect is relative to the viewport - case 'object': - element = target; - stop = top(element); - break; - - // scroll to element (selector) - // bounding rect is relative to the viewport - case 'string': - element = document.querySelector(target); - stop = top(element); - break; - } - - // resolve scroll distance, accounting for offset - distance = stop - start + offset; - - // resolve duration - switch (_typeof(options.duration)) { - // number in ms - case 'number': - duration = options.duration; - break; - - // function passed the distance of the scroll - case 'function': - duration = options.duration(distance); - break; - } - - // start the loop - window.requestAnimationFrame(loop); - } - - // expose only the jump method - return jump; - }; - - // export singleton - - var singleton = jumper(); - - return function () { - var scrolling = void 0; - var end = function end() { - return scrolling = false; - }; - return function (to) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (scrolling) return; - var scrollY = window.scrollY || window.pageYOffset; - if (to !== '.header') location.hash = to; - scroll(0, scrollY); - scrolling = true; - setTimeout(end, options.duration || 0); - return singleton(to, options); - }; - }(); -}); -},{}],12:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var select = exports.select = function select(s) { - return document.querySelector(s); -}; -var selectAll = exports.selectAll = function selectAll(s) { - return [].slice.call(document.querySelectorAll(s)); -}; -var scrollY = exports.scrollY = function scrollY() { - return window.scrollY || window.pageYOffset; -}; -var easeOutQuint = exports.easeOutQuint = function easeOutQuint(t, b, c, d) { - return c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + b; -}; - -/* -* Make iOS behave normally. -*/ -if (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) { - document.body.style.cursor = 'pointer'; -} - -/* -* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font -* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64. -* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added. -* Must be applied to all browsers for now. -*/ -;(function () { - var ua = navigator.userAgent; - - // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica - var isRelevantMacOS = /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\d{1,2})/) || [])[1] >= 11; - - // Chrome v64 and FF v58 fix the issue - var isAffectedBrowser = (ua.match(/Chrome\/(\d+)\./) || [])[1] < 64 || (ua.match(/Firefox\/(\d+)\./) || [])[1] < 58; - - var allEls = [].slice.call(document.querySelectorAll('*')); - - if (isRelevantMacOS && isAffectedBrowser) { - document.documentElement.style.letterSpacing = '-0.3px'; - allEls.forEach(function (el) { - var fontSize = parseFloat(getComputedStyle(el).fontSize); - if (fontSize >= 20) el.style.letterSpacing = '0.3px'; - }); - } else if (isRelevantMacOS && !isAffectedBrowser) { - // Italics fix - allEls.forEach(function (el) { - var _getComputedStyle = getComputedStyle(el), - fontSize = _getComputedStyle.fontSize, - fontStyle = _getComputedStyle.fontStyle; - - if (fontStyle === 'italic') { - el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'; - } - }); - } -})(); -},{}],8:[function(require,module,exports) { -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var menu = (0, _utils.select)('.hamburger'); -var links = (0, _utils.select)('.sidebar__links'); -var ACTIVE_CLASS = 'is-active'; - -var toggle = function toggle() { - return [menu, links].forEach(function (el) { - return el.classList.toggle(ACTIVE_CLASS); - }); -}; - -menu.addEventListener('click', toggle); - -links.addEventListener('click', function (e) { - setTimeout(toggle, 40); - if (e.target.classList.contains('sidebar__link')) { - e.preventDefault(); - (0, _jump2.default)(e.target.getAttribute('href'), { - duration: 750, - offset: window.innerWidth <= 768 ? -64 : -32, - easing: _utils.easeOutQuint - }); - } -}); - -document.addEventListener('click', function (e) { - if (!e.target.closest('.sidebar__links') && !e.target.closest('.hamburger') && links.classList.contains(ACTIVE_CLASS)) { - toggle(); - } -}); - -exports.default = { toggle: toggle }; -},{"../deps/jump":11,"../deps/utils":12}],9:[function(require,module,exports) { -'use strict'; - -var _jump = require('../deps/jump'); - -var _jump2 = _interopRequireDefault(_jump); - -var _utils = require('../deps/utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var backToTopButton = (0, _utils.select)('.back-to-top-button'); - -window.addEventListener('scroll', function () { - backToTopButton.classList[(0, _utils.scrollY)() > 500 ? 'add' : 'remove']('is-visible'); -}); -backToTopButton.onclick = function () { - (0, _jump2.default)('.header', { - duration: 750, - easing: _utils.easeOutQuint - }); -}; -},{"../deps/jump":11,"../deps/utils":12}],3:[function(require,module,exports) { -'use strict'; - -require('normalize.css'); - -require('prismjs'); - -require('../css/deps/prism.css'); - -require('../css/index.scss'); - -require('./deps/polyfills'); - -var _Menu = require('./components/Menu'); - -var _Menu2 = _interopRequireDefault(_Menu); - -var _BackToTopButton = require('./components/BackToTopButton'); - -var _BackToTopButton2 = _interopRequireDefault(_BackToTopButton); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -},{"normalize.css":14,"prismjs":15,"../css/deps/prism.css":6,"../css/index.scss":5,"./deps/polyfills":7,"./components/Menu":8,"./components/BackToTopButton":9}],16:[function(require,module,exports) { - -var global = (1, eval)('this'); -var OldModule = module.bundle.Module; -function Module(moduleName) { - OldModule.call(this, moduleName); - this.hot = { - accept: function (fn) { - this._acceptCallback = fn || function () {}; - }, - dispose: function (fn) { - this._disposeCallback = fn; - } - }; -} - -module.bundle.Module = Module; - -var parent = module.bundle.parent; -if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { - var hostname = '' || location.hostname; - var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + '58660' + '/'); - ws.onmessage = function (event) { - var data = JSON.parse(event.data); - - if (data.type === 'update') { - data.assets.forEach(function (asset) { - hmrApply(global.require, asset); - }); - - data.assets.forEach(function (asset) { - if (!asset.isNew) { - hmrAccept(global.require, asset.id); - } - }); - } - - if (data.type === 'reload') { - ws.close(); - ws.onclose = function () { - location.reload(); - }; - } - - if (data.type === 'error-resolved') { - console.log('[parcel] ✨ Error resolved'); - } - - if (data.type === 'error') { - console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); - } - }; -} - -function getParents(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return []; - } - - var parents = []; - var k, d, dep; - - for (k in modules) { - for (d in modules[k][1]) { - dep = modules[k][1][d]; - if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { - parents.push(+k); - } - } - } - - if (bundle.parent) { - parents = parents.concat(getParents(bundle.parent, id)); - } - - return parents; -} - -function hmrApply(bundle, asset) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (modules[asset.id] || !bundle.parent) { - var fn = new Function('require', 'module', 'exports', asset.generated.js); - asset.isNew = !modules[asset.id]; - modules[asset.id] = [fn, asset.deps]; - } else if (bundle.parent) { - hmrApply(bundle.parent, asset); - } -} - -function hmrAccept(bundle, id) { - var modules = bundle.modules; - if (!modules) { - return; - } - - if (!modules[id] && bundle.parent) { - return hmrAccept(bundle.parent, id); - } - - var cached = bundle.cache[id]; - if (cached && cached.hot._disposeCallback) { - cached.hot._disposeCallback(); - } - - delete bundle.cache[id]; - bundle(id); - - cached = bundle.cache[id]; - if (cached && cached.hot && cached.hot._acceptCallback) { - cached.hot._acceptCallback(); - return true; - } - - return getParents(global.require, id).some(function (id) { - return hmrAccept(global.require, id); - }); -} -},{}]},{},[16,3]) -//# sourceMappingURL=/dist/f06fd0495a34430f242f7611190395d6.map \ No newline at end of file diff --git a/dist/f06fd0495a34430f242f7611190395d6.map b/dist/f06fd0495a34430f242f7611190395d6.map deleted file mode 100644 index 5cefc8211..000000000 --- a/dist/f06fd0495a34430f242f7611190395d6.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["30-seconds-of-css/node_modules/prismjs/prism.js","30-seconds-of-css/src/js/deps/polyfills.js","30-seconds-of-css/src/js/deps/jump.js","30-seconds-of-css/src/js/deps/utils.js","30-seconds-of-css/src/js/components/Menu.js","30-seconds-of-css/src/js/components/BackToTopButton.js","30-seconds-of-css/src/js/index.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/bundle-url.js","30-seconds-of-css/node_modules/parcel-bundler/src/builtins/css-loader.js"],"names":["e","Element","prototype","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","closest","s","el","document","documentElement","contains","parentElement","parentNode","nodeType","global","factory","exports","module","define","amd","Jump","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","jumper","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","done","setAttribute","focus","jump","target","options","arguments","length","undefined","querySelector","singleton","scrolling","end","to","hash","scroll","setTimeout","select","selectAll","slice","call","querySelectorAll","easeOutQuint","test","navigator","platform","MSStream","body","style","cursor","ua","userAgent","isRelevantMacOS","match","isAffectedBrowser","allEls","letterSpacing","forEach","fontSize","parseFloat","getComputedStyle","fontStyle","menu","links","ACTIVE_CLASS","toggle","classList","addEventListener","preventDefault","getAttribute","innerWidth","backToTopButton","onclick","bundleURL","getBundleURLCached","getBundleURL","Error","err","stack","getBaseURL","url","replace","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","Date","now","insertBefore","nextSibling","cssTimeout","reloadCSS","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOAA,IAAI8G,YAAY,IAAhB;AACA,SAASC,kBAAT,GAA8B;AAC5B,MAAI,CAACD,SAAL,EAAgB;AACdA,gBAAYE,cAAZ;AACD;;AAED,SAAOF,SAAP;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB;AACA,MAAI;AACF,UAAM,IAAIC,KAAJ,EAAN;AACD,GAFD,CAEE,OAAOC,GAAP,EAAY;AACZ,QAAI/G,UAAU,CAAC,KAAK+G,IAAIC,KAAV,EAAiBzB,KAAjB,CAAuB,gCAAvB,CAAd;AACA,QAAIvF,OAAJ,EAAa;AACX,aAAOiH,WAAWjH,QAAQ,CAAR,CAAX,CAAP;AACD;AACF;;AAED,SAAO,GAAP;AACD;;AAED,SAASiH,UAAT,CAAoBC,GAApB,EAAyB;AACvB,SAAO,CAAC,KAAKA,GAAN,EAAWC,OAAX,CAAmB,uCAAnB,EAA4D,IAA5D,IAAoE,GAA3E;AACD;;AAEDnG,QAAQ6F,YAAR,GAAuBD,kBAAvB;AACA5F,QAAQiG,UAAR,GAAqBA,UAArB;;AC5BA,IAAIG,SAASC,QAAQ,cAAR,CAAb;;AAEA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,MAAIC,UAAUD,KAAKE,SAAL,EAAd;AACAD,UAAQE,MAAR,GAAiB,YAAY;AAC3BH,SAAKI,MAAL;AACD,GAFD;AAGAH,UAAQI,IAAR,GAAeL,KAAKK,IAAL,CAAUC,KAAV,CAAgB,GAAhB,EAAqB,CAArB,IAA0B,GAA1B,GAAgCC,KAAKC,GAAL,EAA/C;AACAR,OAAK3G,UAAL,CAAgBoH,YAAhB,CAA6BR,OAA7B,EAAsCD,KAAKU,WAA3C;AACD;;AAED,IAAIC,aAAa,IAAjB;AACA,SAASC,SAAT,GAAqB;AACnB,MAAID,UAAJ,EAAgB;AACd;AACD;;AAEDA,eAAa5D,WAAW,YAAY;AAClC,QAAI2B,QAAQzF,SAASmE,gBAAT,CAA0B,wBAA1B,CAAZ;AACA,SAAK,IAAIyD,IAAI,CAAb,EAAgBA,IAAInC,MAAMpC,MAA1B,EAAkCuE,GAAlC,EAAuC;AACrC,UAAIhB,OAAOH,UAAP,CAAkBhB,MAAMmC,CAAN,EAASR,IAA3B,MAAqCR,OAAOP,YAAP,EAAzC,EAAgE;AAC9DS,mBAAWrB,MAAMmC,CAAN,CAAX;AACD;AACF;;AAEDF,iBAAa,IAAb;AACD,GATY,EASV,EATU,CAAb;AAUD;;AAEDjH,OAAOD,OAAP,GAAiBmH,SAAjB;;;;;;;;;AR7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACt0BA,IAAMtI,IAAIC,QAAQC,SAAlB;AACA,IAAI,CAACF,EAAEG,OAAP,EAAgB;AACdH,IAAEG,OAAF,GACEH,EAAEI,eAAF,IAAqBJ,EAAEK,iBAAvB,IAA4CL,EAAEM,qBAA9C,IAAuEN,EAAEO,kBAD3E;AAED;AACD,IAAI,CAACP,EAAEQ,OAAP,EAAgB;AACdR,IAAEQ,OAAF,GAAY,UAASC,CAAT,EAAY;AACtB,QAAIC,KAAK,IAAT;AACA,QAAI,CAACC,SAASC,eAAT,CAAyBC,QAAzB,CAAkCH,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,OAAG;AACD,UAAIA,GAAGP,OAAH,CAAWM,CAAX,CA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","file":"f06fd0495a34430f242f7611190395d6.map","sourcesContent":["\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\n\t\t\t\t\tif (delNum != 1)\n\t\t\t\t\t\t_.matchGrammar(text, strarr, grammar, i, pos, true, token);\n\n\t\t\t\t\tif (oneshot)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\t_.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (!_.manual && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^|[^\\\\])[\"']/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(?:;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^{}\\s][^{};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(?:true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(?: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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(?:0[xX][\\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*\\()/i,\n\t'operator': /-[-=]?|\\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[[^\\]\\r\\n]+]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i,\n\t\talias: 'function'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\s\\S]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript',\n\t\t\tgreedy: true\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language, parent = pre;\n\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\n\t\t\tif (parent) {\n\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t}\n\n\t\t\tif (!language) {\n\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t}\n\n\t\t\tvar code = document.createElement('code');\n\t\t\tcode.className = 'language-' + language;\n\n\t\t\tpre.textContent = '';\n\n\t\t\tcode.textContent = 'Loading…';\n\n\t\t\tpre.appendChild(code);\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', src, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t}\n\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t});\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","const e = Element.prototype\nif (!e.matches) {\n e.matches =\n e.matchesSelector || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector\n}\nif (!e.closest) {\n e.closest = function(s) {\n var el = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (el.matches(s)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el.nodeType === 1)\n return null\n }\n}\n",";(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory())\n})(this, function() {\n 'use strict'\n\n // Robert Penner's easeInOutQuad\n\n // find the rest of his easing functions here: http://robertpenner.com/easing/\n // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\n var easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n\n var _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj\n }\n : function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj\n }\n\n var jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0 // element to scroll to (node)\n\n var start = void 0 // where scroll starts (px)\n var stop = void 0 // where scroll stops (px)\n\n var offset = void 0 // adjustment from the stop position (px)\n var easing = void 0 // easing function (function)\n var a11y = void 0 // accessibility support flag (boolean)\n\n var distance = void 0 // distance of scroll (px)\n var duration = void 0 // scroll duration (ms)\n\n var timeStart = void 0 // time scroll started (ms)\n var timeElapsed = void 0 // time spent scrolling thus far (ms)\n\n var next = void 0 // next scroll position (px)\n\n var callback = void 0 // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration)\n\n // scroll to it\n window.scrollTo(0, next)\n\n // check progress\n timeElapsed < duration\n ? window.requestAnimationFrame(loop) // continue scroll loop\n : done() // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance)\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1')\n\n // focus the element\n element.focus()\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback()\n }\n\n // reset time for next jump\n timeStart = false\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}\n\n // resolve options, or use defaults\n duration = options.duration || 1000\n offset = options.offset || 0\n callback = options.callback // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad\n a11y = options.a11y || false\n\n // cache starting position\n start = location()\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined // no element to scroll to\n a11y = false // make sure accessibility is off\n stop = start + target\n break\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target\n stop = top(element)\n break\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target)\n stop = top(element)\n break\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration\n break\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance)\n break\n }\n\n // start the loop\n window.requestAnimationFrame(loop)\n }\n\n // expose only the jump method\n return jump\n }\n\n // export singleton\n\n var singleton = jumper()\n\n return (() => {\n let scrolling\n const end = () => (scrolling = false)\n return (to, options = {}) => {\n if (scrolling) return\n const scrollY = window.scrollY || window.pageYOffset\n if (to !== '.header') location.hash = to\n scroll(0, scrollY)\n scrolling = true\n setTimeout(end, options.duration || 0)\n return singleton(to, options)\n }\n })()\n})\n","export const select = s => document.querySelector(s)\nexport const selectAll = s => [].slice.call(document.querySelectorAll(s))\nexport const scrollY = () => window.scrollY || window.pageYOffset\nexport const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b\n\n/*\n* Make iOS behave normally.\n*/\nif (/iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream) {\n document.body.style.cursor = 'pointer'\n}\n\n/*\n* A small utility to fix the letter kerning on macOS Chrome and Firefox when using the system font\n* (San Francisco). It is now fixed in the text rendering engine in FF 58 and Chrome 64.\n* UPDATE: It appears the applied fix doesn't work when the font is in italics. New fix has been added.\n* Must be applied to all browsers for now.\n*/\n;(() => {\n const ua = navigator.userAgent\n\n // macOS 10.11 (El Capitan) came with San Francisco. Previous versions used Helvetica\n const isRelevantMacOS =\n /Mac/.test(navigator.platform) && (ua.match(/OS X 10[._](\\d{1,2})/) || [])[1] >= 11\n\n // Chrome v64 and FF v58 fix the issue\n const isAffectedBrowser =\n (ua.match(/Chrome\\/(\\d+)\\./) || [])[1] < 64 || (ua.match(/Firefox\\/(\\d+)\\./) || [])[1] < 58\n\n const allEls = [].slice.call(document.querySelectorAll('*'))\n\n if (isRelevantMacOS && isAffectedBrowser) {\n document.documentElement.style.letterSpacing = '-0.3px'\n allEls.forEach(el => {\n const fontSize = parseFloat(getComputedStyle(el).fontSize)\n if (fontSize >= 20) el.style.letterSpacing = '0.3px'\n })\n } else if (isRelevantMacOS && !isAffectedBrowser) {\n // Italics fix\n allEls.forEach(el => {\n const { fontSize, fontStyle } = getComputedStyle(el)\n if (fontStyle === 'italic') {\n el.style.letterSpacing = parseFloat(fontSize) >= 20 ? '0.3px' : '-0.3px'\n }\n })\n }\n})()\n","import jump from '../deps/jump'\nimport { select, selectAll, easeOutQuint } from '../deps/utils'\n\nconst menu = select('.hamburger')\nconst links = select('.sidebar__links')\nconst ACTIVE_CLASS = 'is-active'\n\nconst toggle = () => [menu, links].forEach(el => el.classList.toggle(ACTIVE_CLASS))\n\nmenu.addEventListener('click', toggle)\n\nlinks.addEventListener('click', e => {\n setTimeout(toggle, 40)\n if (e.target.classList.contains('sidebar__link')) {\n e.preventDefault()\n jump(e.target.getAttribute('href'), {\n duration: 750,\n offset: window.innerWidth <= 768 ? -64 : -32,\n easing: easeOutQuint\n })\n }\n})\n\ndocument.addEventListener('click', e => {\n if (\n !e.target.closest('.sidebar__links') &&\n !e.target.closest('.hamburger') &&\n links.classList.contains(ACTIVE_CLASS)\n ) {\n toggle()\n }\n})\n\nexport default { toggle }\n","import jump from '../deps/jump'\nimport { select, scrollY, easeOutQuint } from '../deps/utils'\n\nconst backToTopButton = select('.back-to-top-button')\n\nwindow.addEventListener('scroll', () => {\n backToTopButton.classList[scrollY() > 500 ? 'add' : 'remove']('is-visible')\n})\nbackToTopButton.onclick = () => {\n jump('.header', {\n duration: 750,\n easing: easeOutQuint\n })\n}\n","// Deps\nimport 'normalize.css'\nimport 'prismjs'\n\n// CSS\nimport '../css/deps/prism.css'\nimport '../css/index.scss'\n\n// Polyfills\nimport './deps/polyfills'\n\n// Components\nimport Menu from './components/Menu'\nimport BackToTopButton from './components/BackToTopButton'\n","var bundleURL = null;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n\n return bundleURL;\n}\n\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n\n return '/';\n}\n\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\n","var bundle = require('./bundle-url');\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n newLink.onload = function () {\n link.remove();\n };\n newLink.href = link.href.split('?')[0] + '?' + Date.now();\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nmodule.exports = reloadCSS;\n"]} \ No newline at end of file From f6b743c357f09966f2ac37d59d8b27d5d8c84049 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 28 Feb 2018 12:15:33 +0200 Subject: [PATCH 054/561] Update ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 80717b4fd..7229e1098 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,25 +1,5 @@ - - -## [FEATURE] _REPLACE THIS WITH A BRIEF SUMMARY OF THE SUGGESTED SNIPPET_ -**Category:** -### Description - - - - - -## [BUG] _REPLACE THIS WITH A BRIEF SUMMARY OF YOUR ISSUE_ -### Expected Snippet Behavior - - - -### Current Snippet Behavior - - - -### Possible Solution - - +### Description + From fa8d60dcda8baca3266ac733064c4fb93c023d48 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 28 Feb 2018 12:19:47 +0200 Subject: [PATCH 055/561] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 33959ccdc..1d9ed544f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,28 +1 @@ - - - - -## Description - -**Resolves** #(issue number) - -## What does your PR belong to? -- [ ] Website -- [ ] Snippets -- [ ] General / Things regarding the repository (like CI Integration) -- [ ] Tests - -## Types of changes -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] Enhancement (non-breaking improvement of a snippet) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to change) - -## Checklist: - -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. -- [ ] I have checked that the changes are working properly -- [ ] I have checked that there isn't any PR doing the same -- [ ] I have read the **CONTRIBUTING** document. + From 6721b9ac01b7aea30afb729fc5fb0c82926e97c2 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 28 Feb 2018 12:19:57 +0200 Subject: [PATCH 056/561] Update ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 7229e1098..bd29aa535 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1 @@ - - - -### Description - + From ca989ed1e68fdf55970b9208d3707a9759f685cf Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 28 Feb 2018 12:25:26 +0200 Subject: [PATCH 057/561] Build docs --- docs/464d45b6c0aa745a9d68e563688b3354.png | Bin 0 -> 2628 bytes docs/6a92da93c8b31945626bd085895f2309.png | Bin 0 -> 35911 bytes docs/a4a44c59f0a5b432531e0c4e83a00cf4.css | 9 +++++++++ docs/a4a44c59f0a5b432531e0c4e83a00cf4.js | 19 +++++++++++++++++++ docs/index.html | 14 +++++++++----- 5 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 docs/464d45b6c0aa745a9d68e563688b3354.png create mode 100644 docs/6a92da93c8b31945626bd085895f2309.png create mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.css create mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.js diff --git a/docs/464d45b6c0aa745a9d68e563688b3354.png b/docs/464d45b6c0aa745a9d68e563688b3354.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a GIT binary patch literal 2628 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 literal 0 HcmV?d00001 diff --git a/docs/6a92da93c8b31945626bd085895f2309.png b/docs/6a92da93c8b31945626bd085895f2309.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 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 literal 0 HcmV?d00001 diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css new file mode 100644 index 000000000..132a1d653 --- /dev/null +++ b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css @@ -0,0 +1,9 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js new file mode 100644 index 000000000..0268c5e30 --- /dev/null +++ b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js @@ -0,0 +1,19 @@ +require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); +},{}],13:[function(require,module,exports) { +var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); +},{}],14:[function(require,module,exports) { +var global = (1,eval)("this"); +var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); +},{}],15:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); +},{}],12:[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; +},{"../deps/jump":14,"../deps/utils":15}],11:[function(require,module,exports) { +"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; +},{"../deps/jump":14,"../deps/utils":15}],8:[function(require,module,exports) { +"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":13,"./components/Menu":12,"./components/BackToTopButton":11}]},{},[8]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 5ae8fb99d..7465f0a29 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
      +     30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
         <div class="floated">float a</div>
         <div class="floated">float b</div>
         <div class="floated">float c</div>
      @@ -11,18 +11,22 @@
       .floated {
         float: left;
       }
      -

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
      +

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
       

      CSS

      .constant-width-to-height-ratio {
         background: #333;
         width: 50%;
         padding-top: 50%;
       }
       

      Demo

      Resize your browser window to see the proportion of the element remain the same.

      Explanation

      padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

      Browser support

      99+%

      ⚠️ padding-top pushes any content within the element to the bottom.

      Custom text selection

      Changes the styling of text selection.

      HTML

      <p class="custom-text-selection">Select some of this text.</p>
      -

      CSS

      .custom-text-selection::selection {
      -  background: red;
      +

      CSS

      ::selection {
      +  background: aquamarine;
      +  color: black;
      +}
      +.custom-text-selection::selection {
      +  background: deeppink;
         color: white;
       }
      -

      Demo

      Select some of this text.

      Explanation

      ::selection defines a pseudo selector on an element to style text within it when selected.

      Browser support

      84.6%

      ⚠️ Requires prefixes for full support and is not actually in any specification.

      Donut spinner

      Creates a donut spinner that can be used to indicate the loading of content.

      HTML

      <div class="donut"></div>
      +

      Demo

      Select some of this text.

      Explanation

      ::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

      Browser support

      84.6%

      ⚠️ Requires prefixes for full support and is not actually in any specification.

      Donut spinner

      Creates a donut spinner that can be used to indicate the loading of content.

      HTML

      <div class="donut"></div>
       

      CSS

      @keyframes donut-spin {
         0% { transform: rotate(0deg); }
         100% { transform: rotate(360deg); }
      
      From ce0e9b0cf2e8cfbe37833a77193ffb9694260df3 Mon Sep 17 00:00:00 2001
      From: Angelos Chalaris 
      Date: Wed, 28 Feb 2018 12:33:00 +0200
      Subject: [PATCH 058/561] Update README.md
      
      ---
       README.md | 2 ++
       1 file changed, 2 insertions(+)
      
      diff --git a/README.md b/README.md
      index 9f2090ac9..0f884ccf4 100644
      --- a/README.md
      +++ b/README.md
      @@ -2,6 +2,8 @@
       
       ![logo](https://i.imgur.com/2L1bMyy.png)
       
      +[![License](https://img.shields.io/badge/license-CC0--1.0-blue.svg)](https://github.com/atomiks/30-seconds-of-css/blob/master/LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) [![Insight.io](https://img.shields.io/badge/insight.io-Ready-brightgreen.svg)](https://insight.io/github.com/atomiks/30-seconds-of-css/tree/master/?source=0)
      +
       A curated collection of useful CSS snippets you can understand in 30 seconds or less.
       Inspired by [30 seconds of code](https://github.com/Chalarangelo/30-seconds-of-code).
       
      
      From b690ae499b2adb180c0cc97fee0d93439106ebc0 Mon Sep 17 00:00:00 2001
      From: Angelos Chalaris 
      Date: Wed, 28 Feb 2018 12:38:07 +0200
      Subject: [PATCH 059/561] Gitter badge
      
      ---
       README.md | 2 +-
       1 file changed, 1 insertion(+), 1 deletion(-)
      
      diff --git a/README.md b/README.md
      index 0f884ccf4..3c2c7741b 100644
      --- a/README.md
      +++ b/README.md
      @@ -2,7 +2,7 @@
       
       ![logo](https://i.imgur.com/2L1bMyy.png)
       
      -[![License](https://img.shields.io/badge/license-CC0--1.0-blue.svg)](https://github.com/atomiks/30-seconds-of-css/blob/master/LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) [![Insight.io](https://img.shields.io/badge/insight.io-Ready-brightgreen.svg)](https://insight.io/github.com/atomiks/30-seconds-of-css/tree/master/?source=0)
      +[![License](https://img.shields.io/badge/license-CC0--1.0-blue.svg)](https://github.com/atomiks/30-seconds-of-css/blob/master/LICENSE) [![Gitter chat](https://img.shields.io/badge/chat-on%20gitter-4FB999.svg)](https://gitter.im/30-seconds-of-css/Lobby) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) [![Insight.io](https://img.shields.io/badge/insight.io-Ready-brightgreen.svg)](https://insight.io/github.com/atomiks/30-seconds-of-css/tree/master/?source=0)
       
       A curated collection of useful CSS snippets you can understand in 30 seconds or less.
       Inspired by [30 seconds of code](https://github.com/Chalarangelo/30-seconds-of-code).
      
      From 0049cdfec8b1a2ce57b0e8a4208544369823f4e5 Mon Sep 17 00:00:00 2001
      From: tzaluzhny 
      Date: Wed, 28 Feb 2018 13:18:14 +0200
      Subject: [PATCH 060/561] Adding evenly distributed childs snippet
      
      ---
       snippets/evenly-distributed-childs.md | 54 +++++++++++++++++++++++++++
       1 file changed, 54 insertions(+)
       create mode 100644 snippets/evenly-distributed-childs.md
      
      diff --git a/snippets/evenly-distributed-childs.md b/snippets/evenly-distributed-childs.md
      new file mode 100644
      index 000000000..f2dbabdde
      --- /dev/null
      +++ b/snippets/evenly-distributed-childs.md
      @@ -0,0 +1,54 @@
      +### Evenly distributed childs
      +
      +Evenly distributed childs within the alignment container
      +
      +#### HTML
      +
      +```html
      +
      +

      Item1

      +

      Item2

      +

      Item3

      +
      +``` + +#### CSS + +```css +.evenly-distributed-childs { + display: flex; + width: 300px; + justify-content: space-between; +} +``` + +#### Demo + +
      +
      +

      Item1

      +

      Item2

      +

      Item3

      +
      +
      + + + +#### Explanation + +1. `display: flex` enables flexbox. +2. `justify-content: space-between` evenly distributes childs in the line. + +First item will be on the start line, last item on the end line + +#### Browser support + +⚠️ Needs prefixes for full support. + +* https://caniuse.com/#feat=flexbox From d0034c985d803dd4adde5fd2b873b5ed73620995 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:19:22 +1000 Subject: [PATCH 061/561] add: hover underline animation --- snippets/hover-underline-animation.md | 89 +++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 snippets/hover-underline-animation.md diff --git a/snippets/hover-underline-animation.md b/snippets/hover-underline-animation.md new file mode 100644 index 000000000..5fd2a1e12 --- /dev/null +++ b/snippets/hover-underline-animation.md @@ -0,0 +1,89 @@ +### Hover underline animation + +Creates an animated underline effect when the text is hovered over. + +#### HTML + +```html +

      +``` + +#### CSS + +```css +.hover-underline-animation { + display: inline-block; + position: relative; + color: deeppink; +} +.hover-underline-animation::after { + content: ''; + position: absolute; + width: 100%; + transform: scaleX(0); + height: 2px; + bottom: 0; + left: 0; + background-color: deeppink; + transform-origin: bottom right; + transition: transform 0.2s ease-out; +} +.hover-underline-animation:hover::after { + transform: scaleX(1); + transform-origin: bottom left; +} +``` + +#### Demo + +
      +

      Hover this text to see the effect!

      +
      + + + +#### Explanation + +1. `display: inline-block` makes the block `p` an `inline-block` to prevent the underline from +spanning the entire parent width rather than just the content (text). +2. `position: relative` on the element establishes a Cartesian positioning context for psuedo-elements. +3. `::after` defines a pseudo-element. +4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. +5. `width: 100%` ensures the pseudo-element spans the entire width of the text block. +6. `transform: scaleX(0)` initially scales the pseudo element to 0 so it has no width and is not visible. +7. `bottom: 0` and `left: 0` position it to the bottom left of the block. +8. `transition: transform 0.25s ease-out` means changes to `transform` will be transitioned over 0.25 seconds +with an `ease-out` timing function. +9. `transform-origin: bottom right` means the transform anchor point is positioned at the bottom right of the block. +10. `:hover::after` then uses `scaleX(1)` to transition the width to 100%, then changes the `transform-origin` +to `bottom left` so that the anchor point is reversed, allowing it transition out in the other direction when +hovered off. + +#### Browser support + +✅ No caveats. + +* https://caniuse.com/#feat=transforms2d +* https://caniuse.com/#feat=css-transitions From 45b8b774dacb33690306caf6b127cd88f30bb904 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:22:17 +1000 Subject: [PATCH 062/561] Add missing text --- snippets/hover-underline-animation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/hover-underline-animation.md b/snippets/hover-underline-animation.md index 5fd2a1e12..5b1f6fda6 100644 --- a/snippets/hover-underline-animation.md +++ b/snippets/hover-underline-animation.md @@ -5,7 +5,7 @@ Creates an animated underline effect when the text is hovered over. #### HTML ```html -

      +

      Hover this text to see the effect!

      ``` #### CSS From f6ac36422038619f7718f6dd55a2dc8c6a042c20 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:22:45 +1000 Subject: [PATCH 063/561] Match colors with demo --- snippets/hover-underline-animation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snippets/hover-underline-animation.md b/snippets/hover-underline-animation.md index 5b1f6fda6..7405c1194 100644 --- a/snippets/hover-underline-animation.md +++ b/snippets/hover-underline-animation.md @@ -14,7 +14,7 @@ Creates an animated underline effect when the text is hovered over. .hover-underline-animation { display: inline-block; position: relative; - color: deeppink; + color: #0087ca; } .hover-underline-animation::after { content: ''; @@ -24,7 +24,7 @@ Creates an animated underline effect when the text is hovered over. height: 2px; bottom: 0; left: 0; - background-color: deeppink; + background-color: #0087ca; transform-origin: bottom right; transition: transform 0.2s ease-out; } From 8c0b99f175b74119a328ff9d9b12b0f6a38ad8b5 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:34:26 +1000 Subject: [PATCH 064/561] 0.25s transition --- snippets/hover-underline-animation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/hover-underline-animation.md b/snippets/hover-underline-animation.md index 7405c1194..8c86076b4 100644 --- a/snippets/hover-underline-animation.md +++ b/snippets/hover-underline-animation.md @@ -26,7 +26,7 @@ Creates an animated underline effect when the text is hovered over. left: 0; background-color: #0087ca; transform-origin: bottom right; - transition: transform 0.2s ease-out; + transition: transform 0.25s ease-out; } .hover-underline-animation:hover::after { transform: scaleX(1); From b9c5b01edfa027a0a772ecfd4e53d71c5ffc9ebc Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:47:02 +1000 Subject: [PATCH 065/561] Update and rename evenly-distributed-childs.md to evenly-distributed-children.md --- snippets/evenly-distributed-children.md | 53 ++++++++++++++++++++++++ snippets/evenly-distributed-childs.md | 54 ------------------------- 2 files changed, 53 insertions(+), 54 deletions(-) create mode 100644 snippets/evenly-distributed-children.md delete mode 100644 snippets/evenly-distributed-childs.md diff --git a/snippets/evenly-distributed-children.md b/snippets/evenly-distributed-children.md new file mode 100644 index 000000000..35d9a1370 --- /dev/null +++ b/snippets/evenly-distributed-children.md @@ -0,0 +1,53 @@ +### Evenly distributed children + +Evenly distributes child elements within a parent element. + +#### HTML + +```html +
      +

      Item1

      +

      Item2

      +

      Item3

      +
      +``` + +#### CSS + +```css +.evenly-distributed-children { + display: flex; + justify-content: space-between; +} +``` + +#### Demo + +
      +
      +

      Item1

      +

      Item2

      +

      Item3

      +
      +
      + + + +#### Explanation + +1. `display: flex` enables flexbox. +2. `justify-content: space-between` evenly distributes child elements horizontally. The first item is positioned at the left edge, while the last item is positioned at the right edge. + +Alternatively, use `justify-content: space-around` to distribute the children with space around them, rather than between them. + +#### Browser support + +⚠️ Needs prefixes for full support. + +* https://caniuse.com/#feat=flexbox diff --git a/snippets/evenly-distributed-childs.md b/snippets/evenly-distributed-childs.md deleted file mode 100644 index f2dbabdde..000000000 --- a/snippets/evenly-distributed-childs.md +++ /dev/null @@ -1,54 +0,0 @@ -### Evenly distributed childs - -Evenly distributed childs within the alignment container - -#### HTML - -```html -
      -

      Item1

      -

      Item2

      -

      Item3

      -
      -``` - -#### CSS - -```css -.evenly-distributed-childs { - display: flex; - width: 300px; - justify-content: space-between; -} -``` - -#### Demo - -
      -
      -

      Item1

      -

      Item2

      -

      Item3

      -
      -
      - - - -#### Explanation - -1. `display: flex` enables flexbox. -2. `justify-content: space-between` evenly distributes childs in the line. - -First item will be on the start line, last item on the end line - -#### Browser support - -⚠️ Needs prefixes for full support. - -* https://caniuse.com/#feat=flexbox From 659b8719208dad2982822168aa1c4619faf308da Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:56:26 +1000 Subject: [PATCH 066/561] Update disable-selection.md --- snippets/disable-selection.md | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/snippets/disable-selection.md b/snippets/disable-selection.md index d39f99d53..e84b402ec 100644 --- a/snippets/disable-selection.md +++ b/snippets/disable-selection.md @@ -1,4 +1,4 @@ -### Disable Selection +### Disable selection Makes the content unselectable. @@ -6,8 +6,8 @@ Makes the content unselectable. ```html
      -

      You can't select me!

      -

      You can select me!!

      +

      You can select me.

      +

      You can't select me!

      ``` @@ -21,30 +21,23 @@ Makes the content unselectable. #### Demo - -
      +

      You can select me.

      You can't select me!

      -

      You can select me!!

      - - #### Explanation -`user-select: none` defines that the text cannot be selected. + +`user-select: none` specifies that the text cannot be selected. + #### Browser support - +⚠️ Requires prefixes for full support. -⚠️ Requires prefixes for full support and is not actually in any specification. - - - -* https://caniuse.com/#search=user-select +* https://caniuse.com/#feat=user-select-none From 94d4ef171fb43eaa187da63007233e2b0bc779a0 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:57:20 +1000 Subject: [PATCH 067/561] Update disable-selection.md --- snippets/disable-selection.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/snippets/disable-selection.md b/snippets/disable-selection.md index e84b402ec..3250911b7 100644 --- a/snippets/disable-selection.md +++ b/snippets/disable-selection.md @@ -5,10 +5,8 @@ Makes the content unselectable. #### HTML ```html -
      -

      You can select me.

      -

      You can't select me!

      -
      +

      You can select me.

      +

      You can't select me!

      ``` #### CSS From 39246467617bcd3da8b3e16e063094a82437e7f0 Mon Sep 17 00:00:00 2001 From: atomiks Date: Wed, 28 Feb 2018 21:59:16 +1000 Subject: [PATCH 068/561] rebuild docs --- docs/464d45b6c0aa745a9d68e563688b3354.png | Bin 2628 -> 0 bytes docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 14 ++++----- docs/6a92da93c8b31945626bd085895f2309.png | Bin 35911 -> 0 bytes docs/a4a44c59f0a5b432531e0c4e83a00cf4.css | 9 ------ docs/a4a44c59f0a5b432531e0c4e83a00cf4.js | 19 ------------ docs/index.html | 11 +++++-- index.html | 36 ++++++++++++++++++++++ 7 files changed, 51 insertions(+), 38 deletions(-) delete mode 100644 docs/464d45b6c0aa745a9d68e563688b3354.png delete mode 100644 docs/6a92da93c8b31945626bd085895f2309.png delete mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.css delete mode 100644 docs/a4a44c59f0a5b432531e0c4e83a00cf4.js diff --git a/docs/464d45b6c0aa745a9d68e563688b3354.png b/docs/464d45b6c0aa745a9d68e563688b3354.png deleted file mode 100644 index ba68eb7becf9dda2ff31c9d8f7fdb88e9b66536a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2628 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 diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 7bcc14567..323339909 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -3,17 +3,17 @@ require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}fun },{}],17:[function(require,module,exports) { var global = (1,eval)("this"); var e=(0,eval)("this"),t="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},a=function(){var e=/\blang(?:uage)?-(\w+)\b/i,a=0,n=t.Prism={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],11:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],14:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":15,"../deps/utils":14}],13:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":15,"../deps/utils":14}],7:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":12,"./components/Menu":11,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/6a92da93c8b31945626bd085895f2309.png b/docs/6a92da93c8b31945626bd085895f2309.png deleted file mode 100644 index f27b9309101bac82fef1228e0d1d2cf6de3b3a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35911 zcmb?>=|5Ee`~R64`@SS(8B$rw(q?BSvJ^#8D#b|BqQ+MCIb&CdC{!3FsdoyIC1u90 z?35)j_9Zf7oiWQf-}(IhhTn~I$;xHbv`pMb+)MHMs>kJgm>aaXlsq$I8?8R8TJ(|xo{ z1q(3sv9<9Q3U}YVHlc^$c6&62FSnh`;ghx!KEGR@fz`iaW(33r?0Tc}pTYQ9;cay4 zX)9I338_oC3`cQ7<0bRdhOEE6zzv~{r3pq$1yf|xK>M#`NvkW@skK@a5I;7BW&y1@ zVL~)Y!{}{8cBnwqQD8_AYn?ufp6Q~Pa^!xh(}V=cS4}=i|L-$0vlAgr-oq)Z0*MN@ z?ujd6zj%jJn{?`fA}!Is6qfeGe>thDyND9v$Eu1V!$=^;@RiA1)UMmJ?QK%x#00g$ zM6$d`i*$~0kYaI}pu01%C?{>C{o8|!Myq>v?nW!oEhKiw*(=wZYPB2)9^!qRW6tqD zlVsp1|EXNq!9ZRTx95;Iv(|3sr^m7Uq3Aki!GUh%4u=?+qj0-baDnt1Wze+y{E}tyuR&oOM7htKaXdocpX{`5NfqMcOhj% zPnqbI^hFU!OT>M7`ZvJ(+ST|pH1mp;bl~Hg??x@qsMSL!BO^!s5n&4>{2KJC7YMqS zkfp;WZQMOcL;<}_QQjzX^(7S|LS=n%km&yHthVp@?M|tOH z!%elPDV4k0@-Hq8n_Mn-HQA~;*`|8--*D7^q;FAkB0;`lCVZNa4d{T6Gh{cH6bz^y ztSP6p?o1OT9Q?9vfK+@Nc#zLS0()3sFB@=dqpFT8&|ZefD{oZZJ`*7}^ymGV2*ota z>?&S)>y|`KbZw0P`wpSPkLMIVf9M`WAJo^2XxdObI!(rm5{1*AAGJY07k!+W5PMh0 zUs&#gl`*ZV6s`wRPiT*k$r0#my*?sQ@(nI&y^^IMFvpA9|@OE>!p>wHLFT zC!C&t?rDOidN)q{lSHz}-y4*Bt~+c5j_>G`4gj(bY6ziXHSTIXG$tN0C5j#r5=)OO zJFzAHDcDd(CL{fIMexpyU~n;5^BR?Lnie(x;bXN zsEW8d*6+WS9X?6bonyJQ7vy5;_)t;8dG_Sv2e%yh z&i~5Ly)d3J=01{PyrB9>Hig}Utk#2tSFOL&+zl0EF zYp}}}Q-JA&erbus-d^G@|3vuLU{;>0Yp-mF59ei9EA_@m%m8`ZfFa+_p8f-BrjQ;} zBr3)NU*x!%6&7HU5BHF*ZUQ2p`9F2H2IlPp(vX7@vm0A<;d&xHup;;bx8&3sze&RF z>?6Ky!Tq!!+E?ES?OiJ|o=ZZ7a*d2#bl2Fws%nmFy>g|RJN zBaltkMR0YmNt{GTcYVj1zaL|LUir%V1Je_LguAA}yY~NR-~&|^KMrk&WYU+NN(9Ox z_3EO(XZRPo+t6RUD?8-bHv^W6F}M2F5P6KXb16tP7-=!fmy0ymC`RE{dn70VJx74n zo+G$t7j9)C6u&%1NhLQoqF7(}yGFX?x<=ehCr_@+?tVhiTYai5F~QN0C_)7;m zt6TOrw89>JZbu$S`O)uWb#H2n9QeC>Sg{_rYeE+N2!~cim;y&4)m0>LL6AMAfSXw6 z**`37AV)kranmVF)E02~$G3B2!L!Oky`3}XxAb*xd8@W-q+Er=UbiX#uh}B8`oUd0 zWy;GSgYy@Z{HYZUZ;AHQ+{o0>xsNSQjDuR z{e%2Ez*KEntOWnbTB~Q0&u@8|Z8k4|gDbq~h^kc}VwJC=z{GfaL7in_?m=Kj ztu6Il(DMp*^Qc*9_qBTuRNlClwj=(RyK5`u4)`}C`h=k~vYvNWpFY6(aRy}*^wW{{ zpHR4O5|bDaaFs538r%h)&Sf@QTOO8`uYTF09Yw|RKK1phlj|kpxEZkWqh9>U1 z;W_^A7J+<5r|>_*gDJEtk^!Lh`$?Y^wrgT9Hv_y26Q4|u3fDAJ%gl2(8j@Fiv*)JX zlku_g0h5xLY7};X{Kp@-@fi0KU;fUZUvaHXn)uAeL{OUY)54+gA_<;523zQTofAAJ zq2_q|N0kHA_VZ22>w});FGoJesx;hMT_KySxvdE} znx?4vuCr9NWrn?hCiI7$xLN_Uzpt;SPj7?K$ygG1Zj)Kzus(o+g|&&38>EZ3zBiy9 z5;?un{H{4R?eP4AK+ui;)2O2BfLS#BmFC2+IG(BRbTfocU&thSBm+$&>ivw}y`w=| zFnwNM9=1Z5|BjZJxNy*suaQpvUinao73CtzdSZe{o(>F zS#nd&5L$fo*P@#DS2UhLv#uVqWng+X@gcxIbLx}Nr*HkZn|zI(g19JBgS5VtWD`0SnnS!~xgu##&m@ReALQ30a+dQR;kmk}1z z2p(k(V+Uuxw+lP&aEZ&M95;#0bl|9PAKs8s*R)f{KI+DXA$t5tRn)F@4WX%|+n$r|VLhS*8DQqRO#J%9NdP@C&~UCAFcwG*;U*S%0uwjLhkXn*5|h zkg2~npgS3ohLPEM``-m!YtR%?A=WHUTo!U(^~^Qk)M{~R7v$&mDN_!t%gi|TMQjbn zi2obTmycJ!Js0;~Pz>W(rcqXZ?DB;v+Tz~5!4iWi0YJQk&=)5@EcETTpntByV*|o# zAR{4x+P(vL42Tf>Z*p=s%s87DymV3=!NKw2uo&{wF($ zIg6}h^-B-KsE#T_c zblDqE35f)P>jU=^hWsSor>*zxc94#iZjK)Ef^Pj;9u>3uxi1j(%Cqe`re=&djxY#U zGS`FweeUv+x^#GSA&OPpMA*rW{5{Gnvi@lJK6JIslpMBL{DZZ|_tYTV6rps#uAX=p z7GmrVWxWW@U6Ux#L*sMNXCQ-J(c3I;J z3P&YbV_$UbYqB9JUFKNtQfu;6Pd`lzg6|{!*vHPl$s$}hzYovd{#$ynkxpvG|L7B_ zEO*a7zThNiVC^_uu9dsG*db#0aX)y^E+<9{7Zaw+3OzX3-;FD**Vma0*+7=N#pQBV zQ~ieFiSqH)t7Wt;@&{Q#5IQZkLp{a>(@(TbU=6R&?;s9EZT=%*@_^mZc?yW}AEMa7 zzV$Yyz5s#K)$931e5?agQu@gwwgtUkQT)Pn1@4Eql9-v^os;t&5;B#s$jXLq-tl^L^4eJ8?BXjmX+Z!*z%)9s)* zw!RdPXfpa`zImb%;o3Nn{Yn&a?YgaFl0%Hyw%Ln6c!I6QdHM8C7^@?5gXrSV z?s*D2!FzWj?gRIq&%ASLGIB&20-XSkE*M5$y+;jQEq-_PGul-#k!46ws=vrL_KqkR z&6i5LLOj0EGXk5mGkhE9n<|Sgy2THCKP^sPNHHxo_83Ycy?wqj7j_p>;@pUXy$|q+ z*R+w>YsCO!_N>&n#|#ak*|dKjODvSFagS4W)M-FmR^R2ve8(Xz63G_-d`IF&z!@%) z8)b%sI$4GjQ=XRv0SU&KfMX?F<~I3u4$^=osCe%*OWK2T;sB?aLr#u(ByiRU#?fc? zHa!EB$l~LtfkzYkLEF03DjSU1)^W-2^l1)w;F_W+IA}NdvpOXOtWnTONb<5O8Dw0v zIZd|Iv^xFKJXe`A#0#y+#*~Op8oaS2smFCTJS>N0;-y%HYm%{T6sNDtvQ%Y`*Qis! zEq*McxZZy$?I~d=kSCxvUmD+6*pJrd@Hyya`}d%SqMGPMhmmC{gUg%z8jK!4P9sm_ zKSMgkqjIiBosIITSsNV9l%^a7S>8EGRi26|)Yk4ys;$0CF)U=TjNMg08tK0%gkjX%w`IMHQiXN`E7DsqP5z+j#+utX&KR;% zbsnuJgW6co$_3HNiZw3^a5qIWsc{(P(VJnJ_#^SXfqvWz;ogB3I-8D6xP%E{C- z-b|cACr2+c+~;O(3oego|2U1{H`Um)ueWgr z@D0r6>?SN!bQdu6zxR12!npl=bl`5rMZS$@^x2rB5P@GCn|e>4Ev5`yd)m-N4yAft zox|vG4swh{bqj@na1$fge^T?;xw}!GiX^5V_u}(# z1+Z|FOVI|b;f*(*JD{qd(bC!LOIeoOi`#aiJtaPyB>E?(tN$23T$%W+V_&-Fcc}T$ zFGJs5NYxOZ3nG_UVY2DF=;BG4(DmYE)USv}Wz6y^SZtQ>6M>^xcE7+KaGdxR)3d~v zT6_|QO*jrKt5Sm)`Q@OJww=GL^i}|VJlXb&o-X|gF+CQuV-gtO=UsYZy5DK39X`04 zSO=xw=gW8y1=|Z6(<=u24zIrPlz_`5h~waHxVSsf@-~xCVJIrIc@W*n7Og~tEhat& z-g6(kAO=kdsd;R9)$qlgp0JTe+@Z%L=s$49$>5=eg|@vq@N}1gD{QBd!&`fA^xXYKLWDi@fvtOkBv+AU(g!kVuqi?yOR;Ylfvxm@xj z14%hwkdzH7%&`vxqS1cb2Q_rxH;u!^6oe27N{}bYOxG8h2*vHd@f}kk#$yv9!^p)f zM-NpaZnd*9@(TPpCvdx601qH$QiGA*AbKK!TPOvg61g$|FiR+|iW0ej zktzO6Ia-BCZjnqb%U(L(-eBDKZ*zr@^&ma={X=^cVOE!%!`Fj4p~&-!^`b}VzG+L(gz?66)FY7|>w8N$w5nA*cLL?E zF%W%(cm{u@KZgjd6in0saj5AM_MKh#!|2z&-rFqt-Eqo%+yz{T3NP$h^7_{iU8;!=i@ zW~jxCe)fqU!X;6!)XfeSk9}==Nzh6kn@SlfM1>~5m3xWZN*V|~dqXTwRKy|IY@ zE=$6#kc?mjs3#%vd*Dth!Y=qoJ|{tfcn70Ie(l6lB0iMUz!(wLgz@gB$v;BAc9-ym z@Rxz(@)QYR5;~l2g~@*G4*p1>?ZDdVUoqdu+OES}8=epDVgI~1?qHiZ{?`E?7KtfF zEqv@Hmx#Y4{2eE!Ke9saCI-)X;(n*K_LPAxRw7lL67QL8Be-DbZ0jU=8AZJ8W!-bY zhV!TTv1$+Ge%^mk^K_I$HL6db`5k5;;{#Ty-YN2!Aa0tJ@BrhWWElh|z!|+3sEMyU z@^3l&GR>f$N43983K|I2O!d&Iwe^JnIJ&TxUko~73`nz{TZ)h9KeQLMovnPi?%^ac zk&^4;tUvcn=iLCDbz`yktDUt%W@7Knc2Y-M`>Vf$)Q>L6Rw zdFUo{wcp8=F(zz(j-#^W{)yfek3IlB3(SY?5mWxuGNxb+Uvul-JmwR@=}91$T}acH zS{qfT|0q?7DJ#eLPS1aLGHI6}+F<5jl*|XreS`wPxn8~$SB*WaNSw1%`qVR1S?JQT zrF{R$mEfg^EtK%S!#x;J0Wkl@OId?Mgb<*N26|qdNTk>5OUrNLI4@)!Fh)o{c%lXU z!%a;QLH}JkahtpjQGM4^WF?sSkY+gUY z@P#}RNG9U;Lx>sTRhNgHbIc?#Nw#Q=)WA$R) zO`VljV=q00$9G#r|H-IO34N6kacaL2v}Z7?T(nFwgAElOW~2>)<@0Iy=tYbZbTLGQ z=s)FT+Qg%OlN+9LPN2(EE#&Ws=|OZVx)$R^2;mEzYU9Vse&9B?q9^YH?okRHFB+*; zV&B>4!e?fwGQS9uhMre}Bz~+z0&MNYv~~nv1A}|T%O)$<(1~!u8LTI~d}d(uYzpBu z!KOO*W&>S$tMa(=y|;N3Kw9Kl{=#Do=Da)fYxPTM=vc@UGMzZ-uvX-0i;P@tE1PXIgL1br zgKK)WK{xKmx)CpFe5HFoSSG^PBd;R;QxsdYDb0tiC&8Y9QXBAtDpFW3{CzgpDA1UW}r*FPA z*iuhIUZ88-MTwXJxmzWujrijW`d50HO6S`Vl>>XmNdr}PX)?5(q4Jls(lvQ)Np=>f z`aH2AKg!n5@FoAVM%AbZxy^zBg@V5XI% zpiu9{hvRgOg1w7kIc!Yq7McxnFK`?b2%Zc6K)LH4wQ0#LYWGcVqn$TA$>y%7aaScY z>Hgh!DYdCQ)J=|BX1CoY+g$AvR6!*Y7XU-eK|<-_aV||3!yQK#5}%gv`wMA#Ee~^I z2T0!J%UjgKQC{FDVcZqW40zewE_c=)>TsZ~R@i zXHK&o-nUaTT)?oalnuA`ojFI5cr+jpk7D|DXW<&$FZnE6T;s@{Mhr7Tevu|IR8IAy zojh$I?aA<|!Iy2e(Yr9md0IM$R(ib@?Ke6Hj>bVGAujE*scvr6uhh~{(XyDx6AQoClk{HbxtgXwxDsM20hNq6 zN&fm#wrG+|AqBlbVD7Kb?vP{LK(CEOH-hdYuxEO{UIEd|bl+1xt4a9lUdErJX2Bp4 z{+f-k=esfHtcIOxDWpRLAgfA$mktb}(Gic`}Z;1|xM;_u(p{E}n z3RylMnCsr@VgoESS4*DTx?=`rdc=Z{;89br+de;YJM zsR{dHTYn!c6KcN#U*@PQ&U1c-jSY#-@u`8`R%&|NVwI~(B<8~QH2Yw${3oMaEItmF z{MXTVE{!2kOqlAAS)Qy6(i4^Z<#X)O#NNJdNllEXDXV}j^}HROwHS+`SNw|MAcoO( z6c>P?<8G5XPul_yeCyQ@u9NPfWOz(jjF?1X@eDDi>oVTt6@Xc36giPu3jG#tmW;wO zib$bs{TzuxUklu&R{{njjwf_EGygE>Vco*rxbVf|qI;Db+rSY)8cXA+CJM*t8oI{!512QNOf?_y_-6o0=tA_NdR?Ml)zxp{nspNzg;M5t<9@GWjO=<$#4L-=#Oow0a94!W% zsX{!Xu+hLF?-?RU+akVh&gYX?-=TZh(?6?M@Rh)0femkQVyom`Wecrb`b+&e!^ps; z+!Oy!Q~nIdQDrV?PCuBf-m%PgsY1U7CVfFD%yVtOOr&635O>*=-$3w14XY;xok%pN zdru8uzOmlx^a;%ThxgzFyws1Pksbr7q^IykhU6oTOd?B*Z=XAOnLUf&iIR=r*_g`l zuc#Ly3;FG*(|FwtC~0f49N(V50`iPc8opTV>{IYO=i-J#F#>ZyN%_&g2Mnq8!i`C@ z|AZ@xk&_Kyeyi2mtua5&@aggR^~xIfp*LpY=eK3Jg4UDE14!Owqp(K^roi-967Q~8 zHCMPA{8D$+dzZCx7MI`QpZmXF~R1r+xW=Cf~lE;`)14&}&+$2(9k5 zo3=!OMNG}j9||VX&+lu}DfPb#g0X?WO6xLY6?Cl-l@CJZwFL6#wJ5jAQY_RTu6)f_ z$9^)=9SmCw>hF=}C1F^Hekp5emL&Ieout4y!6OU}l1ugJBDi5eR%CnN9QFQ^W?l^xsLQ!J7dIh!@T>BX^MhH z6`-Ikk~A@3mc);-+?w14=)i+_Hd?nWbDHIF%IsO*JUQ~DX-r?%jcqR!j}pZwXW;-m z=b*|&qhwPTd1bw=3G zW$e}xDJ$WIx%neQ9y+UK&-(*t--R9t-t5DG5mJxOYwdmnlyWY$W`il#AmuMPiNsF0 z*4?v2c9;Z!aQFtQpZ+ppEiDSJnNKrRYmDNWkI?2fJsoyof(VIl@3a|wUx1Q;wgaHr zCc-!;*^b~c6m<&B__{s+AGzpW^ixk`uA;QFrASiVu?Pfh<@rdh3Z?iXS({UJD=T$e zKwp{vLiUp#N-ce*zJk5e@H?}09J%9filj@qsmuFUNe=urK54je~Y~$?T?U0g| zbDmCUc&T^6%11cHHUp>Q^+G}I1@W;=hLn|l4&~_{DIs^OlZ{WY7d|2GR^E$bcbfIQ zCLN}F&wVpA>OlA8t`kZ*Zw_~j7Asd$ML0+;jIH={@d%_ulTLtg4OyglXQ9^rz>2YRC1>HAZ&!S#IDeRrA* z)eoNi?5WDO&m_z#iWu|ZkOnv5yiOgWbOLXHShwAF0=q87+3&S_2JYF%X>WUp9*Dva z0yF7kZkg;4x;wt)2TBiA^mT2JZ?zI;a-ZJ0C>-gim1+~n)|~Fl*X8x~W>(=G3C)e`O)U33k5~{F>J${}rXOC+ zZnDx-<13>poh#_M9O*t12B%F?!<+TMh~p-c4?BJg%Rk``!5&EbH7}ytLR}oWR448r zd1XoV{-5(tDJg_Kd?8DT^8TO4pwogA>nGOIK9HMTqC;q4;9t=q%S)gyTYQ||bCOWP zmX#vtaV7?-Y;~sSV^Jc~UNUOq6I=fbQj6Pi1;nOBmypBGh?vjA6|rbnK6{}57e166K92l@TH&^&GtVM{=VaMjz?q;8}mu;?Z8%mIk+OxG3D`Ta;y zcB#&$dyJ_s9sI`KS)?qrb*m+=V88<1c}|FGe5-ec&_9 z>D5e&D%;Y3t_;sCmWFP)JQ*d3?Snci#@z55EL8WF_hK<(vbZ2f5U@rHf70foa*P{} z5+aj#QiZXrV`mHasUk0RP<{0x5s0Uc2$QR*>Z5xN-km|1k9@(pW)TE0as~74n$niw z+Fy1O#9Ba;{daWLQtntTGj`V3zN`_O+jEC3@RV17ijK%#4CXh59qnUaQ%pAtL*q(+ z1)9HOJlID`PTa12X#`mD4D-%x9uoyx;5o4(Ih>^x7CGxSIfJht%smqLh>;{XV&Cb{ zAfQUNWJ7fa&Bz+rlx0~T|C5Ur%vU86m5KZw4=LNgv9E9aSE~m1eXTkpe0f+>e}cHc z68-K&Ej~5W%gUUOmP9>N^WesRrtyZwCD5lm+w#|;%-fh?SblvF9SC^A7^`Uh%iCQD zHIce7t(f2y>RxgUjk<8+2VwEEr^mKWDaHZ(x^a8rXNVtkOhN5dhyHU{z)HAx$6ay| zFb<*g)pTOa$A@0r14Zh_cZBZea|aU;bMbO2#!KjL(F(9zgRLjgc^x><*IfGFS*fV= z!EJYJgq06Gu|48>^(j)}oBFp+bVt-}u`F1b7SvTuHd9P;hwTLptr+k3%O`koKhF0-o-spTR5v|E$@peUK1 z=B&qPI7uE%dDp&X&Eyd-EFvk8N*V+A0WC(&@N1b!5%9TKrM$ED$tY*O{lcQA+aki> z5HE{&_ty0%dxUT6Ei*wT{;$ZC%h6*si3e zI71y4#G0iZN+tF4+fCWvZO!M^E%G))ya}x?J%=%$k!C*Xq^~AoW`QD<{%jPNB<`dZ zjN

      hsceMcV5aL#e^4rmVa87+%HP6K3O_;{s|?+cCSJ0rqSLFJAY2LHD-G)&0q=5 zh8kQHHxTU`qRWu?fRhKZvO|A-C%PI^#eH?sC+d=yxq_cHDH2#wb3r2CdI|S%D_JG@ zV}SepS-~7@ALp}4|dMVE?9>~@ZdSWWCH4c{C*58!v6 z)Hr>Edqo)f`8kiTKr0Y%x~~VQPfIeWw9t8UfhI*p%^~UltUFzTq1?ngVn1(vhcN_v zD&X&pY2&Y_C5@nfC93^-LVO+g{R{2cW#;!QAVrK4gEyjneRqXGv2v;=ea8w}S|Ie; zM~aZWN*3_Q2I-g$mRD6%90`SWJ0IdnU^Mb3_ZjoBfoOpdpC?|2sKfL=wG?7adzj3p z9qr}rE*x2oc8kA%%M~bf)tg}4&d?yKiy83#!g=av`0GlKE_Q#$9J+*kX!Dn679=zS zXfYjXwqD%D+_(YHev%Zb3;PKT{PNrxx&lm;U?QMr+rCSsOPqqQoQ_dK74!&>S~R-I zc&f|I$@;e~C^z*PO|Mzk$1N6zUFWt1t+wqmCmQn|9|8x?0UCp>F_be^>b~%yI>=N# znoo&~cv?(%7`B-dx2Gr93%`G807fV((XMY+j!2Bs3Pzr2 zJSWeeHUiR1HbpC0%3G5{2K=gepgDb!d~n-tNiwu4P5Um?#De>GbYO-BI*ZU}h4MGn z&GcB6pXZms=Rju!a2=7eCHqS$*fg84)~<<%6a)V1V>Y`!lD~@~V&o|^q-Z95HVaB| zq@TLD=B-^;D0NvTco1_Q$epR!Ep!m{rQ4OA#UguM%gPvv;Z18zvTxNJ-_Db?&LNV1 zE4_84eYk&d!QkbQtImbU(0At1)PiMsL4u>SKpDdRr@0iKJ0OZ{Oj9S)I1OCStYEHU zJ2XFCA2OYq>3M^DRE;x?!gi2I?73CRvqIo+R!0OJ>Mdj+lO{#{2JsgBQir!*Jb`)< zTDJ`ND9xk}!oqfs8{x|LVT=goST-hz@l2?)myLg;K235(D$G~>bDNM#r|KaZS!SBp zCC_*9p7^L(O`MNG#BJ^9ASF4shZ9d- zWF@{A#80EzdK=V3ERlDP#E)_YN;=0hrIR~R!-S&@n*JBTTmqc&sq9?59X$h5nj0p z$W?79StGx&3azzp_=5hwkjuoW{r`oi&C-?nvhRxT^>-$7WgOp&h~{(DO3s1J zXW)Ta7D`f0m23YO4xqQirJ7y{)+37H2cW-tCDwOLd&pigtu(G+E%+?WKdPe{H8?r*AdrY`bN z^g9V#MDy19kVwDnu#H#|^)KuZwfuJ z`KY-5LGxOsZ#G&TQG6DMlKKK0tj<^Kf<+43N6+sb@hwB8pTPX&p1QOBKBjEK?Y8Hc zcq$ETk4U;Z6JJqP$@4R`QbTWhYtaLR;bbRuLCU5lvJ`H;M|I`93_aU}M92RMQ6(Z3ox&bI7^(;ICuV6>u7td!FxggJ@Yn$SwFT@ZXU*;7tl+Q&$HN z`oZJ|^E3oT?5SfMt*ID%tPmUV5J`f7#2UXtf5kvJ6O!fEQPiqWG#gvtbS$jwpdE{0?h=A4`M%s!^~?^-rbUfjHhlnR#VAP6BYtZTmIyE;a_2uE&_)PatO znYs#Cz#9}L96;@!^le`C?91UMPPpA_?k4{j*pKVvDbIILkI6Ap^NCcs!Z;c}^cFqK z6**+66P7x56xAxN%|arAvM*V=nDAq zc3v8{aZ|oO4}1ggQ>{qBz#&Pga%4Ubr}}dREc(QJHTQVKdx)fUg^T&lPF2Rr5rjE^ z*SPcNm)L(<{~E=eD-Jl8-L!HIqn9JKw@$AhPdiCVulSB_hgDEDghMQNy z0}4$)ZnUPe93qq0E_iJ(rVWyl*-BT~2w7L(@%AM4XH8qPBvagUn24g!B(z_wRndbee^|BvnY4;I44s%GRX~_nq>vzHJ&5{st*I6it#7a)omlTF62AzFh7WQwFLH0J zZdd1Q&R0<{NE{E6`~bCh!6dJ7ag35Lkc0C7L?kpJM9J8O z`D%rw3Ym#&YvQ3FKd_CSWKmbX*s3@g;}2(q|NL5uIFHOO`&HdDF_l)oXNj!*66?sa zkyIlAoz>iN-?BlTTq|Fme}o|hfThv*dDR)Vg~?|HcJ?TNbNrVg2e~%W2Il``d-&4VU&riZhln?M|rZR9kQpp|&oJV(nZz^tbGrz&+Om+XM zv~Tc1c8@oSF7OfRvi9Npweea06y`JY>P5#hi-C@3@WF2>glitpHtLFeL=Hgb=EfK_ zBRVQVo*LiB)B4DP}89x*Voa3!sXw38VuoBknUc5KznOSK3ahe+Xe zjdDvPQ`y|A2^VIIo9R^tt?01SlLcWT(Q%v;x$NuToqpnln1z(Ht*{s>W6(37HP?_9 z;n+vF{-KNE@wj|UI5LGDM%NgJrWO3hH?xhnId(9a5&=3w0gHlE0Y1_Q{Geyd(-Lgi zJ3B^FKJW2uD3J~iBpE3iS1PaORs2ZWHp&t{E99n*Q1}FgCcY5g;U46*FQ~EMjzo`u>YshpmLAR6r}kb^YJxfaHNI;H%cF*WkySMmGFvi_AKd zxd6d$vz8g#uFv^n#ULvoL#s(zDYPt zAKPAi9x=dzeR!J7Mj<_wb9K>|03~|?(z@h#L5RE+jK&;NC+!lb%n7(aOd;!9vbbil zp#Ns-sl9wJ#V$((t72m$^b2&NMb<^D<7Akhop;f*vZ$E_Xe~AA_7w27gE~{v8o}&R z1Ppk518`c061?KgmFE00>&53<&YL;{5BEL5>__Z_4bRc=Ysfu+0_I6!ee~+`8cwn; zdJB57wqWPGTy3_lZ@|WnH|p*AKn|C!+SmdPY!r67F9?UDtj1Oz3B6WekY%a}~bb1Tz0#2=tby&uK?0xZjssfRuinZMKrSR5N zk(Ha(NGUx31U?uxV~(?YEe&|#M)AV!&!Pqy8{Dxu#A#CDk+y?#n)*Lx&~nk*{P{6t zAq}#XGBT!)D*EFcPfYit)Qne$nm&@R2~zwb>mE#E%Q(gx(Zl~o(Upfo^|s+Ni=AwV zkdf>=C6(n&T7@WuQbwt?)AEaA<_sy7ijplc+Gw$r3en6UA!S5avdq|Jo3YM%&iUs1 zYyO(+das%Hect=I@B6u5ut~B;nOV!y&PZEbKyxsx_0<TLm@B7|(*+DOvJ&V^EDGZh3U4=ojzO;5cE~E1qUUh--c-YJMGJ zG!l47uu>B`i^@zX2&#qY0s?x__(YPU^0?nz z0I==y0?{(AMBydIUs|B!>Fdu+UTTCoF=xO85L`4doMG5iNtBWZwy?236m=||u5tpc zgcF0IG10x(j1O|5>tEd<#M?y*?W-mtNw@V4<3`Z2!N&UKi-w^%Hj+(r|`wsXI{z`sY;Vr|j8VT|qO z;+3BescQtA5)9d(u;w!R(}x z_fx4JtR<2ua6qgbD%5^#JMjosPQbhJR!TuUbWzet9pT1(4DX|5p&KNcTzJd?NT=lK zpR92<6rAcQ`65;2mco_hcFXAphkUWSCNH`j!EYJXu^&a|>j{*GAJ7v)(o1(^>}&jn zr87L{4l}&{rrYj&cvm~v>@7VJ_tCe2zSD`=qE`~(pUj$(Mu))kH}W0(eL45z_F>Bs z+Ni8`H?bwNHweE)?}W}Jz}IxrdYIR%%@vz9gW4nWh%#ow)bnz45&CW_m5(Y*#j%{6 z4{)s>amr4y#`)eP{ilnzS{UT76f2L(*ChzY5EC3JhI4!5oY`&*F@+pgT6&aL(s!W$ z+SJRD{V{}JC2U>Ey|raI=K6}Z}UPS%W1*d&|g_BYGpAUS0PnyXhZQrFX?i zEFu3XtC%;rN|W-D_a(7Qc~qsU7Oju)pN8x`vB zG%58kSJ{x~ps(}6dL!Q^k|n*Q8nU2T_A`yVdhLkFPSoQBdcB8*pueZJrDTd*ki@~c zOfoLqF-Ggh+QCM6VlV46^Z`+eHIQT~B6@2JoY3pnV76-FA{)Ou*zd~5VJoS@{cn+T zq_pFbjPQ{PNoqW6j$}4d9!RwXaYYPbJ`fEU-vq{it*O4@V%0Ll0CS=$;$@Zoxb4rM zRA>Fm`}Sk!@EvE5o3zrsw|YROH%Os;LJxV5xZw#S`YS4|C$tFcLZ7RijJURx)a+g{ zDeX54;q0*~Fj8qbW*J3(37ZGxubJ5~#g_Wpa%LI-mQP8tA6X+CBzM(+qItt}W*)RK zuK!qC;Pju-Bl>P9)};|o@^1H0)UIJSVlsrAE}_dWn!#JuQGd<>l%+~(!*P~qXD5<7 z=$dHRWXarQU`CE={eoSm%Nx)jrZMVXgPcxv|hAH z*pX6?KJ%c=R5iF3p+$Gam6OSeQhHeJO8Y_w?F+SHNiTpF0!Sqx8%DG>KhH6G?3Y>j zfk!p$_tf$&s84$Y;qv#$v)G%Qp;3l;8G7I*ja|`Q?mt&%<~MMNSS<`!9B|%b3$B$Q zF>inkSmns!z-lk@b@wB7r`LwInk8n;cN7-&Qy(U{oY&q(ROIL+0@kq9NoCPTo|V0k z>jbq`>CBh?OU$8iru&}@WCZ0bDP<+umG)`( zP&fI2cZE&THm3-v6GXfc`>X%H*l*$dqxbAC&M-txwWb9V^YwM&IRDRcm_^gJLal^TK}Aa;gIOfur>= zCG|k>SfC~T3flcSdxuh~#Uy;;Ut)ozRiq@tT*3L!&fT)cRsva3Yr^5u0NEFK%a+4s zSIVdBHFeGpBp1*hW)f1NYwe)Jh=ZjyQhZ#R@)ILiCE z0|9FL?jK%;Tx{nOC`-beHMHvahC=AYZs6M%!UnnXhIY()!uAhy0m?Q~_aDE=IW;y~ z>1t1ewkH>Dbn?w8GYCF_EWXoZJB0DVLX zG=?_iN(L*rTgR_XU5`Q*?kfVFDjn7%Pe;nj=I!po6RV2AtGnR`T=~yK&^6!)r{L(Syz+#q%#MiN zOZzkJ#tw28i+>vs9mvgBp5liG3EIoZN4v}lVaGhRRw?zrQM8%Q4rf#huRV_(pJuyW zgI9|EdH)n52klxUYyO#q_63%6(SoyB4~g#p?d&bzG(eRis`afeJyU%4iW6Vd)=RO9 zD<_}c8!VosZ~2}%mQmmZS{>J-YEpM&_exc{N!32e+zMpoRmm3&#kUI3Y7eXP9dQvO zmQI^Vg9K-ZZ)(M;eeau&D7T1RmRM%!vwBtu%!E|~q|BawuGlmm)AUZYj{Pu) zR~X}L0Jh4&=`(v*D7OT8Cgih%eqSG;rA6{>c;*W4zXaZ5pIuZ~hPkll%!eE3%Z{K|E@-KAobFjAd4dRAt*T35+h%!9))H({%hDmYfo(fF-45(IV)ZZ zA<}6%@yhshZD?uZM46Ar=lRVAL}t&scBElFjD(x{Y#k%Lte#8SOu#mQL1ZXt26RNd zkpqo!)hIiIoH-uWK-x5Sre>_4v3vyu7ZUecCTACL0Q#aXu7gWTH3Sh!T><;CKAs8+ zFp|knZUWCE4z;DpalxoGBxAn7@zxjgEO1nY`j)|Dtxpkn62@o-ge*Mo((w>sFdB{hH19Ad=#g}QW7M3uxTu>+1U_syNeK2~l9Wty0`Ww!vcyRp~)lv`+%LwJpn6B*?4Wb~DE zBXq9W;RG+m+{`(@S?)6*u_TzGt<#BqhD)Ly1J2Qd*|&NqDh=>H;Lu`P0CpVF)QFtZ z+K0cqm?dZ5mkAUu&y`Y`iNJQ)bU{T*Ti)=~ZN04M*#U(sQOxCR6F7+<*_Xu!#C$yi z;M868DbPkn_sM@igpGE=ft5q;DjA@Kh@$afHid(QuW3spJDKT(&^62)um$t zw9}K@Ag;Ek2!91c%zPN|Qu32fRi?+xSJGWLtkUkhWLD3Fu@&?62BE11vRzspIhx&1 zeA#!7;n5*uUP>?w0K8wz%YQ}&r)TO!Ym`f|p$2)GP^e)V^TT!%-bX31kixh-iyGlP z?D7=k^E4{ftiqi5M2h$=J_jGhE<~*{mRc-YKr0p|lGEU7!zh8<`o{XfWpL*1>xSgRGa80;f)J*M+k8d?JGYZm}&v; zc<9$*!VskjEtM<)(QH~8^{sL=R`^kBE^Nv{x$dp)1{(Tq#oGjxVR=_QzeQ!(9Ah!e ztKh+>s{Zrje>u>3c-2oKob5~rQyPA|u zb(vvBq4UET7Gk(wsaMSUO5jTlV5B(~_A<-A8(zWGYNq4`x*tOaWDZS4U7PgPPP~G) zUMR}GAtJ4oqBH4+__NV@MX>P2a)A{t!2Q6Y$~I;+I10?Yq%Dv34@N5HNs(V@KZ%tZ zF6D28quva!YcIoYHb@Vej?p98-cC`r z#@xTCb{vqro_!LAbHeF5vZYH<($z#jb_Sjwv|El#07+sScm1Wj#qec7o@3|_(5aFS z{(96w@+c|)B8C6YK8bSth>d)hRw?K>VZ!^Sih4nhs2vYK+SskUIC^yh&h&d2VYws| zXHQrU8&5N@z^VGwxG7MNYCZe`S$?;e)D|(9z1Jq;Pu0Vq!BGQ!&r_eZhSN#b{RU$I)gx56o|5 zD9-mLP{@zchPpze>>6z=bYxEmL~njZPnkw-bF`*)gP zcfRL#)Zpurxb??zYSBv7ZgIQUsFk5-C2@aLnf>6NplJWO?hC5)EWyw>l038w?Mr7% zDK_~SOUdACAYp7GSdt=LYRRd6SZH}j+g!Gy%x({9vjdq-^*M2RMJ~x+U>@-PEP6-^ z_#U6K-0&|EflMXQ{N$adkpYgG1s-x7BCq)&744G_D#*KXRa7~1Qyeo}u})4EO3RHr zQ0B~I{LUdSjD=-2uom(P`gU19_0S0JFrD6GabvIUwtIUs{qm1xJUVH5SNHc;%^ksE zvSG(E)qQeL9lTJu%2%uE!^iBGYEJoep|UUGDRJ)@nLhSkj(Bbwk=$i-ouO*he{9+* zdQSd4eP&Yl_awi2+6^B=>+2{IEO{EcbW*d2rL4?3#yX+Rfu%{8G~z4C+Dt|Lzl&pB zVu;8~ll^J}sO^r*7XN9E7%_Y(&JHaDbBmPoy%d60R*U}a!)hjg3WsqW5kenzq(~WX z}0F&`}<2&c;i3?mi?F9_1hvdTAe~C)7kA_ zs74h0UwWER#baCIoJh}Mj&%p5BYs#za30;Gpp*3W0oxBy793EdOGlu>-^rWHN{s(u z1%LSDWsj%|cBiOmXjRX=fl`I4Hh>~AWwnPC97o! zN2B$0y|X_h{Rh8J#XQ`c`g9cZf$t3O!yA8YhpxXTiD30v7axc&E!A;z6H)Cd1#%JV zKjsFQL|&IJcdt}QRkzmMgeh^qN%=hr>5Gnx|G2}bm@P2CeXC|vVfy$HP4C(DDevTO z+0PyTzWyTJm8{`~Co%s+ADUiE$GX;!ZQLS3&t?!97k=`!OTHA6Rcm&)XBWl&_vv(Y zcr-69Bk>iZ<;lX9!L=gRZHE4grxG;}B`pFeJnJR(rz_zxE8o)P8@zDuXBZPIk$vEC z!)hF~Or$O{9aQZFYC4$De)(aOZWLo0J|X$?XvA**jcG8@WH@8_)chqu!RA`h`P)vU zMse9tGD4q6yk+J_N>)HR*5Vsp#5v9Ifb+m6z$d!7qKClmF2&!h7Pwz(VT5jroLf^K zmHlDb)Ox6HpYrca(B@Xx1V} zmDX;_TyEqTOomlnGG5D+>W{jIK&kx!#JCw(=)ZN3m=01=?|lb*`G9X3Bl$AzJlNLL_(GW zX6M55OgMegnE^MQ*^doV-1X`mskij16jaZNzId{c^G`%d+JG3IfRU^7sv*%Y#1+%p z?9hoF+c;HCE%zA4u_2-)SB4fbQst~lYbQU6(fbNVF^b)Z5$P>w;+WTC?%&i9_?>y| zm)Sa(ZG;?g7!PbQn3rk0G~!%^@+QJKW{;@Pk#*vv%Ps6YjXacfg}p6ZX(JC;hNygy z4E~AA^L@znrg(kB5Gmh)lQP3G$o!vv*WeXDBz-o=$qnJ$+udW$fCzt zWti%Hn?;7K#YLNd@OVj~jD1u4AGU|L@XrnRSopw9wj7+vcm7qRp9jp9DfqSpKNh6# z#WU{|?bxDFeQ;d&-R9wYUf z`MnSvv5`~iajip?B>8|>R)bEiqBbpS8+%SSQF-|P0F#Bc*4Q-p7f?W_{epMu-a zmi(Ty6~U0p*%9q1-%7TFxo16ismlze z1c*mQ!FI}_#T;Len<_8I%l)p-RIuM4(Hgh`YsmTieSvj|>bls_NwcGKg~d=#B^TvD zUn&kLoK!fq#cQ@YpM9B@~+R92^22ldS{vqq_ZjA z)647^wf9o*W0s%F09??aHzk_s@Uxh1aH@A}zxFw#|NT9I=a^#b%xA}f(o;6whZ#rv z!C>H^MZBN4ozDCzp>4`f3+=S;baJv;bb9)c_Eat>SvKToh6Lho%3c)n$0;vQJFInbW z?diYCGaHolw{kCY_B~{4*g?9mvn5JmkMpk!c*4NHGQ6lP^mDL+PRLC6wCnRP^+EIa z#DlmqjHl=L$N(7p-IihB*36!_mc|k^y^_LY!ez{@)%EUJ);nS1M?^;wCu^9F(KB)> zidS@)U>F_4dW&i%p<}BV!(>$jRg$m!y?{vGX6bnnAA|y5FmlU~5_v1ea}=^r<4e3Q zwk4Z{BO_}Viz*Z_i5!IgU?02`XPEbbbCR*yiux5)SwY?Nz@P-w0$w&PV-UhMa?UU- z$Ln_Gg?^g`r$Z#4SN-)CGT24c0z>zwamMG$l);$#<2Qbv#|~Pt>IwgGp~K2}8P3`> z=pLEO2khZu7FGhs%2Jz1>WpFpr?2*Pl?C_+pV3J#W0Pd?$;%T;vbH~$V*JzlulpesZ5>*6hauhnRgywLO-}8-C!?I`7E_|M9~YAcqjhRy6#ZHcu`57rxpVA->0F+Mz3T7FV4>E(~i|A$dAF z<7;MbJX%;Le=t2_L7XMS$ptkS2Ze53OIG@nq5Va>m_rTc8{f)C3HG)}#71^Ry}3!K zUJ4S$N%;gWJLMec%^kUfdd6Z*zC4wb?}QRxCue~9s4O%}C7C0)&l4l%B%*977D`qV z7WAk@#&RxLB#b5B(C8{_I2-q$v>lz_w$uPUni40Up?6Q(Sp;>!h?FhBV^3k8_&dYH zXXpy8!Iz1&Syeh7OmswT^y zVV;pnx^HFK(4lrVn=X|CyB1Tb+(FI@ns>C8OUXa^7Ab znJ>I^G8}J_ph83Xi*~Xh_!j1gXe!pPIw|j@+%J@g-fV!BlqH^{tDr0+od6{G*3_ld zWqm-lI6Xkkm@!kMacemF5~5l$ocMEBXx}+i?=-5ZmNN`HLlb_TxUXc?ntyzYnitvT zz@+bBpgV*0XU;bs;~vLu&OsP07qEVV{Ol=jxd0Vnqi_exKDJ{8^E`16P;c4Vx40qf zxje=4vPzKDk$4fe>;ePqBqw#LX8@)k8OoW)wo1a2K`}tx_GHnworWRy?wOffI|>i{ zq1ACnTc)8w?v@p8xV_4Tt}JidU$kKolIsKNtmuJ~{GR9?QQGT6%PcZF_Fs?5?f!%j zUZ)*(v6s?63p-|g4=ZGLVw6|T?U4@tn9vH98pB}+wUdLX!wdZXTIMBpWdtF&W|XO$ zQN~)KiP9&1FO$d*txg>Efl3>OMO%qg8(8y=AVRer#z;O=qjCy~EGwy)PNYD(z%h%` z6kB+hsk%!WP`}EvQ^D_jERk(7rSRYzXU7<~NlY!y=N(p@fr{yH*4mbngzcY)et$k4 z$yk5p==E}P<^>>rxHue@8w?L7&;2HaNHnXElQR06F#18hF?59FCo9`d-6vlt!3_`$ zdIw~KFyq-TS_~#!uI%FYc$9zkzhMNw90!K)MC1cL6gi~rB~ADP6bqyp0WW72bqaR& zUV1a+8$R^tiNL*}hN-hqwoXT~Wte@efXj99yJfp~Xffli9(1>&Ye*o5`o0{U%s&KW z881Z1g=jsZu6Vp2>09-=1ijEY-LMN33Ae-`ujONRd-~GY54(YCWF2f}Wq3or`3k#Q zq47l`idg}w}(3mXFy zV@;g^>`!DL=GMXjT-UeR-7_Cmmc#joX5_bw?G_}_OTz!&eQmU1+qf>Tr$dO{3$Xl6 zL$@j8YZv5%dxVLhd6+o}Tq%Uzn%Ay`%UzS&Daz~tao7yu7U*oZSmZ-l6CqwTENT8S z0W9>TQ5~kk75r&4K)A?Lv3DZr9oxfss3mwmo4wx7Pb>b<@Y9dwT_68(4c;%XvzGKe z&175A1){Y|DPqypKZGU{i{Bhf@uXy7dbkL_G~Wo;MBEjn zN`Uv6alrcFHqg`1?_oM|4>o-y_|rgn5SAYEu7T)qHfsFW^z$ZAV)yPe?`LW@(*G#Q zR+>F!iIJ6FBhK*qk&L`;p+p6ab*M-cMo$0bUdCfQqpf7J;Vca`$rxq!#=|AeSm%G! zvX_k*X|-zz1iM|FtF@NWi&njeVHF=Swv0F>Nz?=U6zs=XMtL`$h{A5qkuW&$VJCW- z?J!9?IR|Hno;#)Rk#;WsOvI`2`-ebBEal%njn-AnV#pfR_vY8<6I8|ejjzkC&jnz0 z?RD=Yc96y3$0FnGr~v1+vtp^oql7Wi`joH_$OZQOL{gv0uSKeXb?o^Ju|RPD2XGqg zgA=t0`>7RDGakn`(uT=#osP0{8CadO$8g=!9gdN7!9GQd*BR)_Ym3}Nt}n*NVsoE2 z(YT`P!%Sa>D1Hq7W5-B~YhpRH z?bsEO-|Yg)=bVIjC$^O~g@mg-q6TC-!8y0r`i>^CWDRk50AoI%_w$8nn>$LH=67xs zh_B#Y0dEe0jdow-4Xv=2fGpNVsYY0|7fXDHU+D9K8j>|K+v-fZ-Xt1j#%Y5O-Lsa; z*~)Y*U7Pq_dL#9 zBU^c@iohAh8yJzZt$cPsp;}_&FT0Dgzv{z(Cg=I}B>|hk6^PCgUaA((WRecMbs(vd zAJ`XV$m`{Twrt5=j6Ita>JRoF299;H6W7ho7NwBXgeI#rqdTMhv6G8_*h?`L`0P;| z#=~!ww=kg%;2U%@$L3ks($9ZVyx+!(T?G4nC6=yYT!{B}PZYePK} z#@P7JELgDTx-H;Oy*ftf^v0ZniNzJyj= z#%T-FxVk)2ZGyoa&aU%fp*t|wFb@8Z2DsF;Hh-K`QUVR#rnd0UcWP#9rE$iA0v}wG~Jn9GXR)m&q0IrjF<5rxK@iTlVr7(az zdC(6?Z!Ep%yUo5J(WzCxORYOfJ_d=szldJ#18ZhL&$v~PH|p8(6I{oq6)Fo#mcg!B zbUMpg=Kig74EHiQ>L02yPb&x`2;NYqs5U!vf|N?oq&N(5GpnFKMP>E7f4=-$BK}=} z5AB|=8k(`&McjEBxVSAv3xAb+`!Gqt5x0 zVN|MQxWUH!MyW^iY;+(tV(KZrMJnB>L-C~xhw_CJFKLJ7nsgy6;4zHHQSM{xQPn1W z@GW3*w??iL#u#M%vTRhO*y{{iEt3`fDfhNSAG!mc`Qjk8t@Ct=+jg;> z4`^Ctdvf%OlP_uGbEJLZZY*&^we)s`46z-| zT5?I;PhF&g@#l$u2G1xAHi*lu<^p{{dolbMw-30F8FvZ8?7_75jy;YD#u#1cosD=F zIIJz}57A?LSYGYE?MjU9n8#Y*2Fj6eb8%W>N9+L&<%NGw0wnb{1Wy^m>(F^w$BA4v}L-r1Z{4~#gDXjZBE-1yl0N6=yx~hw!Zy;L?;k5 zZ+Acr**!7^E{K&bOsFm=?iKC;rG)2&FH-YB6=QX)97>aF7dXROxg@5k8#e9=PEDv? zF+>=JJ`Yy?6=W9)I>@b^jOm&kPN`K|a))CMJ0V^>eJIe-6UJ$T62nCVdrCX2~~QSL1S;2sS3@;#`hwk#M5e!>2- z9EmKU9qZsjZ$?fXn!m?kPhIPWM(4$gC1b#?h0D0ixiE~M8^%0mDcdSRb91bxtWZZz zCkS}xAj?_zbSJ?I2(zXpgey}O^Zvs88`6K=mEG+}}CcggDO1|Xige(@AC zmPM`Lw7fP zU*=ga60JhDnNcrb;`!@z`phE}U_&W(8Ds3-?u(~=`-|2*xz*BdmT)E^>h28<0ad!f zkO86F@|wx5f`*L~;&shu$JqL^Ks$mCe03Hoh~WRaOJ4fDlqP|wB41o2T{1ciWCxj@ z&V~nZvSf;->n*1 z$kB7gWlU6qmSc%3!1cIwupHlYBBE9a3AhzeP8`F$z*Amx&n$9!|JF`#d4GYXbIye4 zJ+SQQnXez*8Fpo;P8DEEH+F$DXRbRoN+?agxz0DOFakIdw=?<*#t5Yy!zjxEaxcmY z4^pl=|9e|OBzZgId^+pZ zLfNqfT9bQ)_@iB`bN6L5Baz!W6605SAh5<2|%x{#(ph zj>EuyH?10(BLil76rx1=hd5i(%XPNqX>+|%;UQ;nCNFcbVUQ3A)M85$u)ypup5`;j zNr8eXl!o26!4Yq&Bq%XNh=XR=9N>IHlu*@CLFO|bvZC(;@- z$eVxQ8XIZ^{Eq%jX2~nQAL(@T#0`FARUvBQn!-KUvu$f-boNpQKRiHKnv&UHVz|e zB(*Mp&LuPwqkIB)zJuoW){H^v7-9>D!qRMe1IBe{wFef-6p~`-!2sZqCPufaUNNfF-rasZ~|IK#c6 zmX?YAaBMrL$gOhmmjU`ssyA=QO?;rCy&ydI0J5=&(;MY2CgZ@_q6v`~i5vi2)K#-W zt)&T!QJ0Ys7t{}*ph#5f+vdK%PW3H1IB9o#UZE-8*YhEW$E_k5{=*5$yAvtPMlrT1 zxmAV;&`<&`W1=fZ^sQytD7RM zq;JN=zQA%Rg=J6vr23yx;x7vLZn1@L<;#g$N0dw#h2$?1y`*8)W81*$Y|cLXeq|!( zsA|46H5oB>dyC*-h-J%=J)&S~3>e>6iCPSJohV{htl_LJz>$MJ!&-75C)Ef{>e z$@MvcrUy|PA^iExCV8Rn>tq_sVS#n%xSSR+DV~1}?L${u&o6E?$E3zeFKs^JB9Loc zDA3A_P?gtP9B$j~hMrT^wR4lvQ%qJmyrxCdbYUOf>|IrI9nol@eIxn{OT{*Rk6oo) z=nbpkhzKc4S!_J(6Rr7VC18cigkK5P%wnJtN6cNB6rSs)Y3Fe9ft5t{tx7~4^LTO# z4~<)C_kVV=TnD{5=` zpx9qw>Tl`}XpLn1__abHwk7(stth>9k!j$T#yn^Q`xr%^zz|m+D`NEWxv#*+-1Ue~ z8Y7}@sGc9yD`)3^0`)ZN3LHVD(KJfTD3LHg?E~KM#*c;M8pgs1Vbg?{UnCbfpUS`J zdevn~IH2(vQ==O>jfT!8A6o@C>?3K?+P=z4X&01$0S{uX>!RPaTC)7%o7~NyT}38dI`0%&ZWxb9Lm_Le&HH3eE73!@?&5?g z*=`jjucFq-*vl@WXN4w~+akZF94BljlQ(}Xk{2AAP=(>&Q{dE013aPqsA~9L?LqR| zb8ca0z&Izj;^j3Mk4~KS0!%P6u|Ku*i}Y!lJ*(Ar3iszww)P3aqNf5k|55vz!N?WV zl{JOzKySpoCbh)=d#baQ^JA>Q-W96v!iw)lhIeTP+vf%NhEyXk( z=zTIrsm4cAIF&&Gn|!vV&;{7rA=^+Hy2P05>cV1lZq#0iFms>1Yu`f(jj_|C+&x?E z92{$Nj~D(8!a~&`Y ziRY~9^*H{CGxUvrU254rlwH@?Fy@}p9^O&0o(w7TXLK=lH<0Bv)72IW3YTNdkjK60 z3H17S+HaFQ8mpQygxRi-8J$o4jK%iFN8F{_1z%lH?7XFy5MHdHd25OLTKf9g&ms28s=?G9q^-(W5MN{WA>TzZK#G$r-l=IirXa0%u}R&#dzbA)Yuw%fkRONwqk$K86SP`&&jQe`a3>thPLq-J-3Ff)Pb)O^x{~Q zX5TcUB5(`Q4@u$>R*)xLI4<$=#xc?c>EBxQHK=LK2BoV%rD0&N8(TsR`vBX;h3{OW z`EFDn`@TA+ThHv%LF~tW$$>O~%E_g&#qt!rZJ+}jC{GweI_J@@naLR4g|)v__<-P0 zV}xXHP&mFi8e(1MklxE(^tq^HJM&upysoFs2YJ-pA`Tq8?(TDi$bNf+@C3to1#Lb& z$qEEZQ0?gT|H|Gl#I567-U8=|-u#z)AWNLr!<>hekO+}6buklP6xoHtX@O+6Qu;a= z6(I)-!ne8i3Yx6}GHNN4$rYBZJBb-TKWNt2PT42#joaIAbNARmUVdpxjOxe%f32Ep zD7(Ls8GGQ*1qntYEMe!#kJW1Vp*rJ@dM}O+KJjV(-TLr$VdbvsM>W4yX0cvIPW2rJ zvoahbf<4Z>dVOQ?c>n3s*#6B9t4hA;m>W4?70oc%i1*4GbH&m)A4=SgnIXL z_j{o|_G+=Hny7J%6;8qDDQpby5l$AwHP_jK6}kx~%!xaB$9>#Sw{=e=Zi)BZ*VE_= zPT!C%<2h@kD^)!edHxiW<6zIL{ul3O-urvhz%1w461^9G(}vq})@Tg2#g zHAJso5;INT8Pr3QB?iEoWeuw&C*8t?idxGy{z6^eWdHJHd?`D>{Oc_EM)s}*eKqAA zeq@LAL%WW8bs_v#2~#(+pumjCidN||{FadtM?boG^UALA!?@4$A344z%WIlOme+ir z|2dwhOSQ^edOLL$Ah@oCO$pw_Zw!^i^kSHQJ!!-ZM4Vb7vPr z+PR;2!sy7X`wO+xAQNzS%B$}E(FX6P0^4imig*u3A%60I=hVP!z49c095 z$4k23WXV!l*4u+~mvRrK`;tCk2bhZj^mF9o$}^HOyv}vX$$#Mwl3z`0zlZIg&(I)# z)Lv@XfOG$fuw8Uh@oS>GH6?{$6^AnK3-@7n0&g&r^q!?8 z6Go&~sXtJmVfbE^0+DZ`P)s^>G=7@TPhN|5Nm9?z4-e7EC!z@7L_2PP@-QOXM}0TR zI-!d>HQrv<$hK4C;kK!zOH6x(l|!lH8xv^N);BX^#~N067OqXtyFp6chbL(UZw;~E zcafOIHah}t_2|FDBNZ$QT`u;0$a`o7g5HcgBhF!(EioH@1)9fI ze2nVq&pyWpn#pb;=VEpE5v!m`N40nrcb)0*4hrrM<&0so-FIN?2Z9vd&#)wrtVD;N zH&5rzf9U!+Tt$Zzo(nA3Yy4}v!;v$xYwR0LJx-w|P)IpIzr6{N#K54C-c5IH&FGRI z-<}=NXQZNM-jWjt-+L67A@&{RRB&|=`TNLDu2%G@7V^S~<3>;f_LB!@G_6Ia&ZyT* z8q5IASOfISLlV&}1Ww50gAleqgJI>T%+EZP<(6^ZcueksbD$;*zcjPvHWi zQE85NfbseYym~J-xt5=t!)7hCUot?m5IqBU=q|&&U3Hh?ZsZiiADg;{H|9*u)b%6C ze(HA6rGGMfPce8X?ntdFSM*=}41G_EZ|h>i$*SQ%-d#Q9^h|i*I0MdubXW(0D2Z4 z4^wqfv2SfCk+f54d`rf|U3)gYSsK!lyu#PULhi|7$UhnBXr_Viz*JpsXXj;%NDHd_ z#HK9JMwv>$fcE%gqS(FTtgt963Sud7EaH>H@P}-d&T!oNy{awd;;UC*`FTy;ni089 z(Q5gC!#jW6olrXke*5FfcD-WGj;zq6Z5Tu`H)P z%E7X~zJ1FKL-BWEB%>i6%2hl$n|y~7dcOoiah2YQz0+4!@=%(6Z$>d#fgMUA#cY2% zw#iX)!Ny%Je4n4^nH$m#b-&BbYmLam&iu7}?usprcQw9qwoZ%AtdtBDh}-zml!hPf zt>=%E)O8T+$r77R0;m}Tt4|k%n+|^vb#k<*EaM;hvwumBHxvW>O)$v-B5A zP{eF^kF(nR=&zm(#$jD%0Y>wDKl)nDHU0J;6?)0gwxmX-Hp}hdr#=YlkrywFq64P7 z8@cIN9owgrUBd}~pmQe@3DMsqfvb9SbPcF1m+#C>602%L3GIlB>qH%_ zoetN|aJM2q6PWXe-QXIA!a9|>eRyT~&)>>+ z`Eoti7yRf1;O+KWyFov;^RuVFW|yevAF}@p82uu{U*G{?IdAs+V;OKL0{H(O7oczr zfP#JgBdfm`=WjyJH6dHX+zNL8LFmF=ly&0ZERDin`u9a%lA94`+{hK-cnSVW!5u#e z_0=p8_!Fl2x(z>g#Me6X0N9N3UdZ~hN2zqSi~Ml*!nKl1xL$h&`o9)RaXUV`_QyW1)^+KPT9f5a@f$h}y=XwrOf2|A{jeVF~ne@XouK`}iUpz(WioU@Gyh{7iGOTEK38Uyb-!fS`(XzF(eYnvKLnUFcl+542*PXvF3|7aVEz9~{NNwt{G;8s z2|G^$e%LRYeQFL%fJK5IxcvO%f8-A2YI7+cZ%HbBf5c}ZH*6`(na;1p=( zGWpgB`}>>V)8g;O`+L3r+Y@}U&C-2GSNLx2DCXkCS%!tR zjV6tzD}p^NN-%GL8^q38MMJ{fM}mEn_&dDchi;twML?Q_)K$FKcgGxT|dKk56YO<<$uUuhmz@q5%?%s~QM88(W^ zSsI;I%KTjX0n2h{GwQnO1h9{kz-$Tm%66*$L=k`S-M=*|^#vOMT!3DVKTCZ(ML(zn z{FdKn{{^c*;{RFMSI-y;$X>T-nICQ{)Xp%Wm}w zVSp6Csp4+!^jp1AkQ9KVj;zY!LQfms?|X3)2LOGS#{DzQt}#G%u{XC>(8OCdZc zVc&$izf=8Zt+f@e-SBwAn=FJ{wo$p z_`f5X)o+h(zlTKLAX~+(WB}~?c7h)@7*D{M@7ZE-*5n}tFhGJoQS(nFCfT@?JoWBp9G_Fr7q%M5|Y0if$o;4=$=O3>G9m%m5M(6h0kUkAJo z`-;0nUI9x}7GU>M2BRx*BQgj4qK-WNN$7VH$4T(7mf$}_i$5~}dHgqJ5cdFxYyH#u zAMN(&{%b-XrvEb7heFRh08vAfuPrGEz1erm!_%l`-ZXI6`+B;>c~*~Jq6Nt#FNbG5== zKG*+3RIYB6ZDto5kfqV>2m8bS5NXL(@S3=wE0>Ix0_ZP>>KZUi0{vwvg>e${W5mh& zJXL~!uGZ7EK3(&-B>WR4@CWPjm$cqp^I+Zi`*q>J>lpECv)|+u@rw9rmPU^bInFC) zv$(^Wt@g>%Xx3ni|7qe;kyp(8YY4mz`;zE%(i5JC8aX?ZCA3Ln~ zC~=K=UF1#ReQ`-j`%UBjU%rFHeIjonZ;IcDZ>GCv@ZEn}Og7ufT9G%2&EneB|1XX0 zy^u$UM?~IaHi~=gI6Ax+e$OMt46y{6pv_{N_=EUDmPQ%{jEBdHe~7$;ST3%#JMia4 zpC0yoeo;)aY|WQN-a#x9W3n{TXyD~NNh}k22h(CFg)2;W_7;7+NleB_@m&kJS&Soo zNAjpRJWC^u3a!+qAQP>#SSOa)y>^N?*wU!`cT(2oa4}v?vHzz>5V+GBY!Eky1G6;J zXmV!S)nbjvyAW&a#PT=sN85#`o55|O*k6ox7~`BWU)h*MjG8=n49lRv9Q*dG6`}~-VryMcVEzUmCqxDGatF@6W{pqO}JL{afNMX4v~i zI_9U5M%yQaJ;e#)G839NyP?3pE*6NHR`36FSsH1i(U5Z3)$9rvird9wVg-t7b_VOk zD;6tpoBh8XErw=kq>)C4o*Z^EJHrHVszuNJOx$dD?&rj-Ca@kaJN!%BFMcoP*?;p? h%d*@j<>L38@juW58%rJ)s)hgn002ovPDHLkV1g>l@F@TQ diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css deleted file mode 100644 index 132a1d653..000000000 --- a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} - -/*! - * Hamburgers - * @description Tasty CSS-animated hamburgers - * @author Jonathan Suh @jonsuh - * @site https://jonsuh.com/hamburgers - * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js b/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js deleted file mode 100644 index 0268c5e30..000000000 --- a/docs/a4a44c59f0a5b432531e0c4e83a00cf4.js +++ /dev/null @@ -1,19 +0,0 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],13:[function(require,module,exports) { -var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],14:[function(require,module,exports) { -var global = (1,eval)("this"); -var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],15:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":14,"../deps/utils":15}],11:[function(require,module,exports) { -"use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":14,"../deps/utils":15}],8:[function(require,module,exports) { -"use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":13,"./components/Menu":12,"./components/BackToTopButton":11}]},{},[8]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 7465f0a29..80ad7fe7e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
      +     30 Seconds of CSS        

      30 Seconds of CSS

      A curated collection of useful CSS snippets you can understand in 30 seconds or less.

      Star

      Clearfix

      Ensures that an element self-clears its children.

      Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

      HTML

      <div class="clearfix">
         <div class="floated">float a</div>
         <div class="floated">float b</div>
         <div class="floated">float c</div>
      @@ -11,7 +11,7 @@
       .floated {
         float: left;
       }
      -

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
      +

      Demo

      float a
      float b
      float c

      Explanation

      1. .clearfix::after defines a pseudo-element.
      2. content: '' allows the pseudo-element to affect layout.
      3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

      Browser support

      99+%

      ✅ No caveats.

      Constant width to height ratio

      Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

      HTML

      <div class="constant-width-to-height-ratio"></div>
       

      CSS

      .constant-width-to-height-ratio {
         background: #333;
         width: 50%;
      @@ -26,7 +26,12 @@
         background: deeppink;
         color: white;
       }
      -

      Demo

      Select some of this text.

      Explanation

      ::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

      Browser support

      84.6%

      ⚠️ Requires prefixes for full support and is not actually in any specification.

      Donut spinner

      Creates a donut spinner that can be used to indicate the loading of content.

      HTML

      <div class="donut"></div>
      +

      Demo

      Select some of this text.

      Explanation

      ::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

      Browser support

      84.6%

      ⚠️ Requires prefixes for full support and is not actually in any specification.

      Disable selection

      Makes the content unselectable.

      HTML

      <p>You can select me.</p>
      +<p class="unselectable">You can't select me!</p>
      +

      CSS

      .unselectable {
      +  user-select: none;
      +}
      +

      Demo

      You can select me.

      You can't select me!

      Explanation

      user-select: none specifies that the text cannot be selected.

      Browser support

      86.3%

      ⚠️ Requires prefixes for full support.

      Donut spinner

      Creates a donut spinner that can be used to indicate the loading of content.

      HTML

      <div class="donut"></div>
       

      CSS

      @keyframes donut-spin {
         0% { transform: rotate(0deg); }
         100% { transform: rotate(360deg); }
      diff --git a/index.html b/index.html
      index 09d5696eb..b6f6d0214 100644
      --- a/index.html
      +++ b/index.html
      @@ -20,6 +20,7 @@
               Clearfix
               Constant width to height ratio
               Custom text selection
      +        Disable selection
               Donut spinner
               Easing variables
               Etched text
      @@ -178,6 +179,41 @@ in any specification.

    +
    +

    Disable selection

    +

    Makes the content unselectable.

    +

    HTML

    <p>You can select me.</p>
    +<p class="unselectable">You can't select me!</p>
    +
    +

    CSS

    .unselectable {
    +  user-select: none;
    +}
    +
    +

    Demo

    +
    +

    You can select me.

    +

    You can't select me!

    +
    + +

    Explanation

    +

    user-select: none specifies that the text cannot be selected.

    +

    Browser support

    +
    +
    + 86.3% +
    +
    +

    ⚠️ Requires prefixes for full support.

    + +

    Donut spinner

    Creates a donut spinner that can be used to indicate the loading of content.

    From 9b2413614f5275ee0ba8cfbd2e62371239894654 Mon Sep 17 00:00:00 2001 From: Josh Bader Date: Wed, 28 Feb 2018 09:40:07 -0500 Subject: [PATCH 069/561] Minor updates and adjustments. --- snippets/box-sizing-reset.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/snippets/box-sizing-reset.md b/snippets/box-sizing-reset.md index 09d77a9b5..e5fcbabb4 100644 --- a/snippets/box-sizing-reset.md +++ b/snippets/box-sizing-reset.md @@ -1,4 +1,4 @@ -### Clearfix +### Box-sizing Reset Resets the box-model so that `width`s and `height`s are not affected by their `border`s and/or `padding`. @@ -18,10 +18,12 @@ Resets the box-model so that `width`s and `height`s are not affected by their `b #### Demo -
    Demo
    +
    +
    Demo
    +
    +

    Explanation

    +
      +
    1. ::-webkit-scrollbar target the whole scrollbar element.
    2. +
    3. ::-webkit-scrollbar-track target only the scrollbar track.
    4. +
    5. ::-webkit-scrollbar-thumb Allow you to target and style the scrollbar thumb.
    6. +
    +

    There are many other pseudo elements that you can use to style scrollbars. More info about this on the + WebKit Blog +

    +

    Browser support

    +
    +
    + 87.3% +
    +
    +

    ⚠️ Currently scrollbar styling doesn't appear to be on any standards track. +

    + +

    Shape separator

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    diff --git a/snippets/scrollbars-styling.md b/snippets/scrollbars-styling.md new file mode 100644 index 000000000..f4da38705 --- /dev/null +++ b/snippets/scrollbars-styling.md @@ -0,0 +1,78 @@ +### Scrollbars styling + +Customise scrollbars style for the document and elements with overflow scrollable, on webkit platforms. + +#### HTML + +```html +
    +

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

    +
    +``` + +#### CSS + +```css +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + border-radius: 10px; +} + +::-webkit-scrollbar-thumb { + border-radius: 10px; + box-shadow: inset 0 0 6px rgba(0,0,0,0.5); +} +``` + +#### Demo + +
    +
    +

    + Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit? +

    +

    + Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit? +

    +
    +
    + + + +#### Explanation + +1. `::-webkit-scrollbar` target the whole scrollbar element. +2. `::-webkit-scrollbar-track` target only the scrollbar track. +3. `::-webkit-scrollbar-thumb` Allow you to target and style the scrollbar thumb. + +There are many other pseudo elements that you can use to style scrollbars. More info about this on the [WebKit Blog](https://webkit.org/blog/363/styling-scrollbars/) + +#### Browser support + +⚠️ Currently scrollbar styling doesn't appear to be on any standards track. + + +* https://caniuse.com/#feat=css-scrollbar From 768677dbc52b2abd189143798c3b20565bd0f270 Mon Sep 17 00:00:00 2001 From: Mattia Astorino Date: Wed, 28 Feb 2018 20:51:36 +0100 Subject: [PATCH 072/561] feat: Add rese-all-styles snippet --- snippets/reset-all-styles.md | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 snippets/reset-all-styles.md diff --git a/snippets/reset-all-styles.md b/snippets/reset-all-styles.md new file mode 100644 index 000000000..863635845 --- /dev/null +++ b/snippets/reset-all-styles.md @@ -0,0 +1,45 @@ +### Reset all styles + +Reset all styles to default values with one css property. + +#### HTML + +```html +
    +

    Title

    +

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

    +
    +``` + +#### CSS + +```css +.reset-style { + all: initial; +} +``` + +#### Demo + +
    +
    +

    Title

    +

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

    +
    +
    + + + +#### Explanation + +The `all` css property allows you to reset all styles (inherited or not) to default values. + +#### Browser support + +⚠️ MS Edge status is under consideration. + +* https://caniuse.com/#feat=css-all \ No newline at end of file From 46eb9fbbefe8bf1d196db869bea4215c5f353570 Mon Sep 17 00:00:00 2001 From: Mattia Astorino Date: Wed, 28 Feb 2018 20:55:39 +0100 Subject: [PATCH 073/561] chore: reset builded index.html --- index.html | 73 +----------------------------------------------------- 1 file changed, 1 insertion(+), 72 deletions(-) diff --git a/index.html b/index.html index c64d578b8..ae459f380 100644 --- a/index.html +++ b/index.html @@ -31,7 +31,6 @@ Overflow scroll gradient Popout menu Pretty text underline - Scrollbars styling Shape separator System font stack Triangle @@ -919,76 +918,6 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
    -
    -

    Scrollbars styling

    -

    Customise scrollbars style for the document and elements with overflow scrollable, on webkit platforms.

    -

    HTML

    <div class="custom-scroll">
    -  <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?</p>
    -</div>
    -
    -

    CSS

    ::-webkit-scrollbar {
    -  width: 8px;
    -}
    -::-webkit-scrollbar-track {
    -  box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    -  border-radius: 10px;
    -}
    -::-webkit-scrollbar-thumb {
    -  border-radius: 10px;
    -  box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
    -}
    -
    -

    Demo

    -
    -
    -

    - Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit? -

    -

    - Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit? -

    -
    -
    - -

    Explanation

    -
      -
    1. ::-webkit-scrollbar target the whole scrollbar element.
    2. -
    3. ::-webkit-scrollbar-track target only the scrollbar track.
    4. -
    5. ::-webkit-scrollbar-thumb Allow you to target and style the scrollbar thumb.
    6. -
    -

    There are many other pseudo elements that you can use to style scrollbars. More info about this on the - WebKit Blog -

    -

    Browser support

    -
    -
    - 87.3% -
    -
    -

    ⚠️ Currently scrollbar styling doesn't appear to be on any standards track. -

    - -

    Shape separator

    Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

    @@ -1213,4 +1142,4 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
    - + \ No newline at end of file From d8e08ee09d0441bc175599d1a4de1542ef4cecc0 Mon Sep 17 00:00:00 2001 From: Mattia Astorino Date: Wed, 28 Feb 2018 21:01:27 +0100 Subject: [PATCH 074/561] chore: Improve description --- snippets/reset-all-styles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/reset-all-styles.md b/snippets/reset-all-styles.md index 863635845..795603077 100644 --- a/snippets/reset-all-styles.md +++ b/snippets/reset-all-styles.md @@ -1,6 +1,6 @@ ### Reset all styles -Reset all styles to default values with one css property. +Reset all styles to default values with one css property. This will no affect `direction` and `unicode-bidi` properties. #### HTML From 3a9255ef35f48aec6e55b231a431b7a9182b9688 Mon Sep 17 00:00:00 2001 From: atomiks Date: Thu, 1 Mar 2018 07:53:35 +1100 Subject: [PATCH 075/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 6 +++--- docs/index.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 323339909..8ac739f4b 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -3,17 +3,17 @@ require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}fun },{}],17:[function(require,module,exports) { var global = (1,eval)("this"); var e=(0,eval)("this"),t="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},a=function(){var e=/\blang(?:uage)?-(\w+)\b/i,a=0,n=t.Prism={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); },{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); },{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],11:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; },{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":12,"./components/Menu":11,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 80ad7fe7e..00a22213b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ - 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +     30 Seconds of CSS         

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    
    From 11feca5c9e1154fe80478e45d4324e728512c996 Mon Sep 17 00:00:00 2001
    From: atomiks 
    Date: Thu, 1 Mar 2018 08:32:45 +1100
    Subject: [PATCH 076/561] fix #33: Add credit to mouse tracking snippet
    
    ---
     docs/4d4edbda57043aeeabeac31d2dd12d0d.js   | 12 ++++++------
     docs/index.html                            |  2 +-
     index.html                                 |  5 +++++
     snippets/mouse-cursor-gradient-tracking.md |  2 ++
     4 files changed, 14 insertions(+), 7 deletions(-)
    
    diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    index 8ac739f4b..c8c6e1c2a 100644
    --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    @@ -1,19 +1,19 @@
    -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
     },{}],11:[function(require,module,exports) {
     var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null});
    -},{}],14:[function(require,module,exports) {
    +},{}],15:[function(require,module,exports) {
     var global = (1,eval)("this");
     var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}});
    -},{}],15:[function(require,module,exports) {
    +},{}],16:[function(require,module,exports) {
     "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}();
     },{}],12:[function(require,module,exports) {
     "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u};
    -},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) {
    +},{"../deps/jump":15,"../deps/utils":16}],13:[function(require,module,exports) {
     "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})};
    -},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) {
    +},{"../deps/jump":15,"../deps/utils":16}],7:[function(require,module,exports) {
     "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}}
    -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
    \ No newline at end of file
    +},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
    \ No newline at end of file
    diff --git a/docs/index.html b/docs/index.html
    index 00a22213b..8dfa19dbb 100644
    --- a/docs/index.html
    +++ b/docs/index.html
    @@ -115,7 +115,7 @@
       justify-content: center;
       align-items: center;
     }
    -

    Demo

    Centered content.

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Mouse cursor gradient tracking

    A hover effect where the gradient follows the mouse cursor.

    HTML

    <button class="mouse-cursor-gradient-tracking">
    +

    Demo

    Centered content.

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Mouse cursor gradient tracking

    A hover effect where the gradient follows the mouse cursor.

    Credit: Tobias Reich

    HTML

    <button class="mouse-cursor-gradient-tracking">
       <span>Hover me</span>
     </button>
     

    CSS

    .mouse-cursor-gradient-tracking {
    diff --git a/index.html b/index.html
    index af7df08aa..4c72fa8fa 100644
    --- a/index.html
    +++ b/index.html
    @@ -574,6 +574,11 @@ in any specification.

    Mouse cursor gradient tracking

    A hover effect where the gradient follows the mouse cursor.

    +

    + Credit: + Tobias Reich + +

    HTML

    <button class="mouse-cursor-gradient-tracking">
       <span>Hover me</span>
     </button>
    diff --git a/snippets/mouse-cursor-gradient-tracking.md b/snippets/mouse-cursor-gradient-tracking.md
    index ac048f607..9026e0f01 100644
    --- a/snippets/mouse-cursor-gradient-tracking.md
    +++ b/snippets/mouse-cursor-gradient-tracking.md
    @@ -2,6 +2,8 @@
     
     A hover effect where the gradient follows the mouse cursor.
     
    +**Credit:** [Tobias Reich](https://codepen.io/electerious/pen/MQrRxX)
    +
     #### HTML
     
     ```html
    
    From 048064bc8ad1c7a060f292d63445673f52f76b52 Mon Sep 17 00:00:00 2001
    From: atomiks 
    Date: Thu, 1 Mar 2018 08:47:14 +1100
    Subject: [PATCH 077/561] Add credit
    
    ---
     snippets/hover-underline-animation.md | 2 ++
     1 file changed, 2 insertions(+)
    
    diff --git a/snippets/hover-underline-animation.md b/snippets/hover-underline-animation.md
    index 8c86076b4..e142ffab6 100644
    --- a/snippets/hover-underline-animation.md
    +++ b/snippets/hover-underline-animation.md
    @@ -2,6 +2,8 @@
     
     Creates an animated underline effect when the text is hovered over.
     
    +**Credit:** https://flatuicolors.com/
    +
     #### HTML
     
     ```html
    
    From c0a35555fd2100c39b4c3fce323468871bd4f6b3 Mon Sep 17 00:00:00 2001
    From: atomiks 
    Date: Thu, 1 Mar 2018 08:48:24 +1100
    Subject: [PATCH 078/561] rebuild docs
    
    ---
     docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 12 ++--
     docs/index.html                          | 28 +++++++-
     index.html                               | 90 ++++++++++++++++++++++++
     3 files changed, 121 insertions(+), 9 deletions(-)
    
    diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    index c8c6e1c2a..8ac739f4b 100644
    --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js
    @@ -1,19 +1,19 @@
    -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
     },{}],11:[function(require,module,exports) {
     var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null});
    -},{}],15:[function(require,module,exports) {
    +},{}],14:[function(require,module,exports) {
     var global = (1,eval)("this");
     var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}});
    -},{}],16:[function(require,module,exports) {
    +},{}],15:[function(require,module,exports) {
     "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}();
     },{}],12:[function(require,module,exports) {
     "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){return[r,n].forEach(function(e){return e.classList.toggle(a)})};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u};
    -},{"../deps/jump":15,"../deps/utils":16}],13:[function(require,module,exports) {
    +},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) {
     "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})};
    -},{"../deps/jump":15,"../deps/utils":16}],7:[function(require,module,exports) {
    +},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) {
     "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}}
    -},{"normalize.css":18,"prismjs":17,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
    \ No newline at end of file
    +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7])
    \ No newline at end of file
    diff --git a/docs/index.html b/docs/index.html
    index 8dfa19dbb..84c2fe036 100644
    --- a/docs/index.html
    +++ b/docs/index.html
    @@ -1,4 +1,4 @@
    -     30 Seconds of CSS         

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +     30 Seconds of CSS         

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -11,7 +11,7 @@
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    @@ -115,7 +115,29 @@
       justify-content: center;
       align-items: center;
     }
    -

    Demo

    Centered content.

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Mouse cursor gradient tracking

    A hover effect where the gradient follows the mouse cursor.

    Credit: Tobias Reich

    HTML

    <button class="mouse-cursor-gradient-tracking">
    +

    Demo

    Centered content.

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Hover underline animation

    Creates an animated underline effect when the text is hovered over.

    Credit: https://flatuicolors.com/

    HTML

    <p class="hover-underline-animation">Hover this text to see the effect!</p>
    +

    CSS

    .hover-underline-animation {
    +  display: inline-block;
    +  position: relative;
    +  color: #0087ca;
    +}
    +.hover-underline-animation::after {
    +  content: '';
    +  position: absolute;
    +  width: 100%;
    +  transform: scaleX(0);
    +  height: 2px;
    +  bottom: 0;
    +  left: 0;
    +  background-color: #0087ca;
    +  transform-origin: bottom right;
    +  transition: transform 0.25s ease-out;
    +}
    +.hover-underline-animation:hover::after {
    +  transform: scaleX(1);
    +  transform-origin: bottom left;
    +}
    +

    Demo

    Hover this text to see the effect!

    Explanation

    1. display: inline-block makes the block p an inline-block to prevent the underline from spanning the entire parent width rather than just the content (text).
    2. position: relative on the element establishes a Cartesian positioning context for psuedo-elements.
    3. ::after defines a pseudo-element.
    4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    5. width: 100% ensures the pseudo-element spans the entire width of the text block.
    6. transform: scaleX(0) initially scales the pseudo element to 0 so it has no width and is not visible.
    7. bottom: 0 and left: 0 position it to the bottom left of the block.
    8. transition: transform 0.25s ease-out means changes to transform will be transitioned over 0.25 seconds with an ease-out timing function.
    9. transform-origin: bottom right means the transform anchor point is positioned at the bottom right of the block.
    10. :hover::after then uses scaleX(1) to transition the width to 100%, then changes the transform-origin to bottom left so that the anchor point is reversed, allowing it transition out in the other direction when hovered off.

    Browser support

    94.9%

    ✅ No caveats.

    Mouse cursor gradient tracking

    A hover effect where the gradient follows the mouse cursor.

    Credit: Tobias Reich

    HTML

    <button class="mouse-cursor-gradient-tracking">
       <span>Hover me</span>
     </button>
     

    CSS

    .mouse-cursor-gradient-tracking {
    diff --git a/index.html b/index.html
    index 4c72fa8fa..93bdd5173 100644
    --- a/index.html
    +++ b/index.html
    @@ -28,6 +28,7 @@
             Gradient text
             Hairline border
             Horizontal and vertical centering
    +        Hover underline animation
             Mouse cursor gradient tracking
             Overflow scroll gradient
             Popout menu
    @@ -571,6 +572,95 @@ in any specification.

    +
    +

    Hover underline animation

    +

    Creates an animated underline effect when the text is hovered over.

    +

    + Credit: + https://flatuicolors.com/ + +

    +

    HTML

    <p class="hover-underline-animation">Hover this text to see the effect!</p>
    +
    +

    CSS

    .hover-underline-animation {
    +  display: inline-block;
    +  position: relative;
    +  color: #0087ca;
    +}
    +.hover-underline-animation::after {
    +  content: '';
    +  position: absolute;
    +  width: 100%;
    +  transform: scaleX(0);
    +  height: 2px;
    +  bottom: 0;
    +  left: 0;
    +  background-color: #0087ca;
    +  transform-origin: bottom right;
    +  transition: transform 0.25s ease-out;
    +}
    +.hover-underline-animation:hover::after {
    +  transform: scaleX(1);
    +  transform-origin: bottom left;
    +}
    +
    +

    Demo

    +
    +

    Hover this text to see the effect!

    +
    + +

    Explanation

    +
      +
    1. display: inline-block makes the block p an inline-block to prevent the underline from spanning the entire parent width rather than just the content (text).
    2. +
    3. position: relative on the element establishes a Cartesian positioning context for psuedo-elements.
    4. +
    5. ::after defines a pseudo-element.
    6. +
    7. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
    8. +
    9. width: 100% ensures the pseudo-element spans the entire width of the text block.
    10. +
    11. transform: scaleX(0) initially scales the pseudo element to 0 so it has no width and is not visible.
    12. +
    13. bottom: 0 and left: 0 position it to the bottom left of the block.
    14. +
    15. transition: transform 0.25s ease-out means changes to transform will be transitioned over 0.25 seconds with an ease-out timing function.
    16. +
    17. transform-origin: bottom right means the transform anchor point is positioned at the bottom right of the block.
    18. +
    19. :hover::after then uses scaleX(1) to transition the width to 100%, then changes the transform-origin to bottom left so that the anchor point is reversed, allowing it transition out in the + other direction when hovered off.
    20. +
    +

    Browser support

    +
    +
    + 94.9% +
    +
    +

    ✅ No caveats.

    + +

    Mouse cursor gradient tracking

    A hover effect where the gradient follows the mouse cursor.

    From e8d8aed0ad22fac0c2c0cba279dc5e8a786e9561 Mon Sep 17 00:00:00 2001 From: Felipe da Silva Date: Wed, 28 Feb 2018 22:45:26 -0300 Subject: [PATCH 079/561] Bouncy animated loading animation --- Animated-loading-animation.md | 152 ++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 Animated-loading-animation.md diff --git a/Animated-loading-animation.md b/Animated-loading-animation.md new file mode 100644 index 000000000..448abf479 --- /dev/null +++ b/Animated-loading-animation.md @@ -0,0 +1,152 @@ +### Bouncy Animated loading animation + +Clean & simple animated loading animation with CSS3. If you are worried about super deep browser support, use a GIF. + +#### HTML + +```html +
    + + + +
    +``` + +#### CSS + +```css +.loader { + text-align: center; +} +.loader span { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 10px; + margin: 50px auto; + background: black; + border-radius: 50px; + -webkit-animation: loader 0.9s infinite alternate; + -moz-animation: loader 0.9s infinite alternate; +} +.loader span:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + -moz-animation-delay: 0.3s; +} +.loader span:nth-of-type(3) { + -webkit-animation-delay: 0.6s; + -moz-animation-delay: 0.6s; +} +@-webkit-keyframes loader { + 0% { + width: 10px; + height: 10px; + opacity: 0.9; + -webkit-transform: translateY(0); + } + 100% { + width: 24px; + height: 24px; + opacity: 0.1; + -webkit-transform: translateY(-21px); + } +} +@-moz-keyframes loader { + 0% { + width: 10px; + height: 10px; + opacity: 0.9; + -moz-transform: translateY(0); + } + 100% { + width: 24px; + height: 24px; + opacity: 0.1; + -moz-transform: translateY(-21px); + } +} +``` + +#### Demo + + + +
    +
    + + + +
    +
    + + + + + +#### Explanation + + ++1. `translateY` The translateY() CSS function repositions an element vertically on the 2D plane. ++2. `animation` The animation CSS property is a shorthand property for the various animation properties: animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, and animation-play-state. + +#### Browser support + + + +94.7% + + + +* https://caniuse.com/#feat=css-animation \ No newline at end of file From b573d0d79c0abab059682faff37caa4531868ecc Mon Sep 17 00:00:00 2001 From: atomiks Date: Thu, 1 Mar 2018 17:58:05 +1000 Subject: [PATCH 080/561] Update box-sizing-reset.md --- snippets/box-sizing-reset.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/snippets/box-sizing-reset.md b/snippets/box-sizing-reset.md index e5fcbabb4..a0ced7618 100644 --- a/snippets/box-sizing-reset.md +++ b/snippets/box-sizing-reset.md @@ -1,6 +1,6 @@ -### Box-sizing Reset +### Box-sizing reset -Resets the box-model so that `width`s and `height`s are not affected by their `border`s and/or `padding`. +Resets the box-model so that `width`s and `height`s are not affected by their `border`s or `padding`. #### CSS @@ -36,8 +36,8 @@ Resets the box-model so that `width`s and `height`s are not affected by their `b #### Explanation -1. `box-sizing: border-box` makes the addition of `padding` or `border`s not affect an elements `width` and/or `height`. -2. `box-sizing: inherit` makes an element respect its parents `box-sizing` rule. +1. `box-sizing: border-box` makes the addition of `padding` or `border`s not affect an element's `width` or `height`. +2. `box-sizing: inherit` makes an element respect its parent's `box-sizing` rule. #### Browser support From 0f8f804f8fa9c2070290007607feac7a1aa6d6bd Mon Sep 17 00:00:00 2001 From: atomiks Date: Thu, 1 Mar 2018 18:02:55 +1000 Subject: [PATCH 081/561] rebuild docs --- docs/4d4edbda57043aeeabeac31d2dd12d0d.js | 6 ++-- docs/index.html | 12 +++++-- index.html | 46 ++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js index 8ac739f4b..39f493b20 100644 --- a/docs/4d4edbda57043aeeabeac31d2dd12d0d.js +++ b/docs/4d4edbda57043aeeabeac31d2dd12d0d.js @@ -1,6 +1,6 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); },{}],11:[function(require,module,exports) { @@ -16,4 +16,4 @@ var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iter "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 84c2fe036..838802fb9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,12 @@ - 30 Seconds of CSS

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +     30 Seconds of CSS         

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Box-sizing reset

    Resets the box-model so that widths and heights are not affected by their borders or padding.

    CSS

    .html {
    +  box-sizing: border-box;
    +}
    +*,
    +*::before,
    +*::after {
    +  box-sizing: inherit;
    +}
    +

    Demo

    Demo

    Explanation

    1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
    2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

    Browser support

    98.2%

    ✅ No caveats.

    Clearfix

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -11,7 +19,7 @@
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratio

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    diff --git a/index.html b/index.html
    index 93bdd5173..68d4fd9a1 100644
    --- a/index.html
    +++ b/index.html
    @@ -18,6 +18,7 @@
             
           
           

Browser support

From dbf663ee903b7a6a81dcd4aa0e974c9e4576b214 Mon Sep 17 00:00:00 2001 From: Catalin Zalog Date: Fri, 2 Mar 2018 10:39:18 +0200 Subject: [PATCH 099/561] fix(build): prettier win paths --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 55667e0f4..5501c504f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "dev": "nodemon -e md,js ./scripts/build.js & parcel", "build": "node ./scripts/build.js && npm run prettier && npm run parcel", "parcel": "parcel build index.html -d docs/ --public-url ./", - "prettier": "prettier --single-quote --no-semi --print-width=100 ./js/index.js --write './src/**/*.js' './src/**/*.scss'" + "prettier": "prettier --single-quote --no-semi --print-width=100 ./js/index.js --write \"./src/**/*.js\" \"./src/**/*.scss\"" }, "author": "atomiks", "license": "MIT", From 0971e0f45b9aa8895b93b8f00050e724ff99a79c Mon Sep 17 00:00:00 2001 From: atomiks Date: Fri, 2 Mar 2018 20:08:04 +1000 Subject: [PATCH 100/561] Use Arial and 0.98em --- snippets/pretty-text-underline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md index 171fe9d80..aa768666c 100644 --- a/snippets/pretty-text-underline.md +++ b/snippets/pretty-text-underline.md @@ -13,6 +13,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control ```css .pretty-text-underline { + font-family: Arial, sans-serif; display: inline; font-size: 18px; text-shadow: 1px 1px 0 #f5f6f9, @@ -20,7 +21,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); - background-position: 0 18px; + background-position: 0 0.98em; background-repeat: repeat-x; background-size: 1px 1px; } @@ -42,6 +43,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
+

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
@@ -257,6 +257,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
 }
 

Demo

Popout menu

Explanation

  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  3. left: 100% moves the the popout menu 100% of its parent's width from the left.
  4. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  5. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.

Browser support

99+%

✅ No caveats.

Pretty text underline

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
 

CSS

.pretty-text-underline {
+  font-family: Arial, sans-serif;
   display: inline;
   font-size: 18px;
   text-shadow: 1px 1px 0 #f5f6f9,
@@ -264,7 +265,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
     -1px -1px 0 #f5f6f9,
     1px -1px 0 #f5f6f9;
   background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
-  background-position: 0 1.04em;
+  background-position: 0 0.98em;
   background-repeat: repeat-x;
   background-size: 1px 1px;
 }
@@ -276,7 +277,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   background-color: rgba(0, 150, 255, 0.3);
   text-shadow: none;
 }
-

Demo

Pretty text underline without clipping descending letters.

Explanation

  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
  2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

Browser support

94.8%

⚠️ Firefox requires a vendor prefix for the selection pseudo-selector to work.

Shape separator

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

HTML

<div class="shape-separator"></div>
+

Demo

Pretty text underline without clipping descending letters.

Explanation

  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
  2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

Browser support

94.8%

⚠️ The distance of the underline from the text depends on the internal metrics of a font, so you must ensure everyone sees the same font (i.e. no system fonts which will change based on the OS).

Shape separator

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

HTML

<div class="shape-separator"></div>
 

CSS

.shape-separator {
   position: relative;
   height: 48px;
diff --git a/index.html b/index.html
index dcc664e21..1e31c0158 100644
--- a/index.html
+++ b/index.html
@@ -1115,6 +1115,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
             

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
 

CSS

.pretty-text-underline {
+  font-family: Arial, sans-serif;
   display: inline;
   font-size: 18px;
   text-shadow: 1px 1px 0 #f5f6f9,
@@ -1122,7 +1123,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
     -1px -1px 0 #f5f6f9,
     1px -1px 0 #f5f6f9;
   background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
-  background-position: 0 1.04em;
+  background-position: 0 0.98em;
   background-repeat: repeat-x;
   background-size: 1px 1px;
 }
@@ -1141,11 +1142,12 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
             

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
+

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
@@ -52,7 +52,13 @@
   background: deeppink;
   color: white;
 }
-

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

Browser support

84.6%

⚠️ Requires prefixes for full support and is not actually in any specification.

Disable selection

Makes the content unselectable.

HTML

<p>You can select me.</p>
+

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

Browser support

84.6%

⚠️ Requires prefixes for full support and is not actually in any specification.

Custom variables

CSS variables that contain specific values to be reused throughout a document.

CSS

:root {
+  --some-color: #404040;
+  --some-keyword: left;
+  --some-size: 1.25em;
+  --some-complex-value: 3px 3px 5px 6px #ccc;
+}
+

Demo

CSS is awesome!

Explanation

Browser support

100%

✅ No caveats.

Disable selection

Makes the content unselectable.

HTML

<p>You can select me.</p>
 <p class="unselectable">You can't select me!</p>
 

CSS

.unselectable {
   user-select: none;
diff --git a/index.html b/index.html
index 1e31c0158..247815f29 100644
--- a/index.html
+++ b/index.html
@@ -23,6 +23,7 @@
         Constant width to height ratio
         Custom scrollbar
         Custom text selection
+        Custom variables
         Disable selection
         Donut spinner
         Easing variables
@@ -302,6 +303,62 @@ in any specification.

+
+

Custom variables

+

CSS variables that contain specific values to be reused throughout a document.

+

CSS

:root {
+    --some-color: #da7800;
+    --some-keyword: italic;
+    --some-size: 1.25em;
+    --some-complex-value: 1px 1px 2px WhiteSmoke, 0 0 1em SlateGray , 0 0 0.2em SlateGray;
+}
+
+

Demo

+ + +
+
+

CSS is awesome!

+
+
+ + + +

Explanation

+ + +

Bla bla bla

+

Browser support

+
+
+ 100% +
+
+ + +

✅ No caveats.

+ + + +

Disable selection

Makes the content unselectable.

diff --git a/snippets/custom-variables.md b/snippets/custom-variables.md new file mode 100644 index 000000000..6c9b458a0 --- /dev/null +++ b/snippets/custom-variables.md @@ -0,0 +1,59 @@ +### Custom variables + +CSS variables that contain specific values to be reused throughout a document. + +#### CSS + +```css +:root { + --some-color: #da7800; + --some-keyword: italic; + --some-size: 1.25em; + --some-complex-value: 1px 1px 2px WhiteSmoke, 0 0 1em SlateGray , 0 0 0.2em SlateGray; +} +``` + +#### Demo + + + +
+
+

CSS is awesome!

+
+
+ + + + + +#### Explanation + + +Bla bla bla + +#### Browser support + + + +✅ No caveats. + + + +* https://caniuse.com/#feat=some-feature From dc3eb5e3fed2fa313798c463e2ff8605b42bfa6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Fri, 2 Mar 2018 21:54:36 +0100 Subject: [PATCH 103/561] update custom-variables --- index.html | 9 +++------ snippets/custom-variables.md | 9 ++++----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/index.html b/index.html index 247815f29..50f08488b 100644 --- a/index.html +++ b/index.html @@ -338,18 +338,15 @@ in any specification.

}

Explanation

- - -

Bla bla bla

+

Declare variable with --variable-name:.

+

Reuse declared variable throughout the document using the var(--variable-name) function.

Browser support

100%
- - -

✅ No caveats.

+

⚠️ This is an experimental technology.

diff --git a/snippets/custom-variables.md b/snippets/custom-variables.md index 6c9b458a0..be23b00c1 100644 --- a/snippets/custom-variables.md +++ b/snippets/custom-variables.md @@ -44,14 +44,13 @@ CSS variables that contain specific values to be reused throughout a document. #### Explanation - -Bla bla bla +Declare variable with `--variable-name:`. + +Reuse declared variable throughout the document using the `var(--variable-name)` function. #### Browser support - - -✅ No caveats. +⚠️ This is an experimental technology. From d0d9afa598e60ec1ff8dedb4efd4c44f0811f8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Fri, 2 Mar 2018 21:55:30 +0100 Subject: [PATCH 104/561] add browser support for custom-variables and build --- docs/6c831ee080ce0f905632cb113dfa17d9.js | 12 ++++++------ docs/index.html | 12 ++++++------ index.html | 4 ++-- snippets/custom-variables.md | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/6c831ee080ce0f905632cb113dfa17d9.js b/docs/6c831ee080ce0f905632cb113dfa17d9.js index 5e0182276..c280ffdc3 100644 --- a/docs/6c831ee080ce0f905632cb113dfa17d9.js +++ b/docs/6c831ee080ce0f905632cb113dfa17d9.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],11:[function(require,module,exports) { +},{}],13:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); },{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); },{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],12:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){[r,n].forEach(function(e){return e.classList.toggle(a)}),r.setAttribute("aria-expanded",r.classList.contains(a)?"true":"false")};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],12:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; },{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file +},{"normalize.css":17,"prismjs":16,"../css/deps/prism.css":17,"../css/index.scss":17,"./deps/polyfills":13,"./components/Menu":11,"./components/BackToTopButton":12}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 62bce4d30..dedb7c008 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ *::after { box-sizing: inherit; } -

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
+

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
@@ -53,12 +53,12 @@
   color: white;
 }
 

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

Browser support

84.6%

⚠️ Requires prefixes for full support and is not actually in any specification.

Custom variables

CSS variables that contain specific values to be reused throughout a document.

CSS

:root {
-  --some-color: #404040;
-  --some-keyword: left;
-  --some-size: 1.25em;
-  --some-complex-value: 3px 3px 5px 6px #ccc;
+    --some-color: #da7800;
+    --some-keyword: italic;
+    --some-size: 1.25em;
+    --some-complex-value: 1px 1px 2px WhiteSmoke, 0 0 1em SlateGray , 0 0 0.2em SlateGray;
 }
-

Demo

CSS is awesome!

Explanation

Browser support

100%

✅ No caveats.

Disable selection

Makes the content unselectable.

HTML

<p>You can select me.</p>
+

Demo

CSS is awesome!

Explanation

Declare variable with --variable-name:.

Reuse declared variable throughout the document using the var(--variable-name) function.

Browser support

87.2%

⚠️ This is an experimental technology.

Disable selection

Makes the content unselectable.

HTML

<p>You can select me.</p>
 <p class="unselectable">You can't select me!</p>
 

CSS

.unselectable {
   user-select: none;
diff --git a/index.html b/index.html
index 50f08488b..8bca32067 100644
--- a/index.html
+++ b/index.html
@@ -343,7 +343,7 @@ in any specification.

Browser support

- 100% + 87.2%

⚠️ This is an experimental technology.

@@ -352,7 +352,7 @@ in any specification.

If no link is provided, it defaults to 99+%. -->
diff --git a/snippets/custom-variables.md b/snippets/custom-variables.md index be23b00c1..f01324ff6 100644 --- a/snippets/custom-variables.md +++ b/snippets/custom-variables.md @@ -55,4 +55,4 @@ Reuse declared variable throughout the document using the `var(--variable-name)` -* https://caniuse.com/#feat=some-feature +* https://caniuse.com/#feat=css-variables From 01ec0a8a836ccb77a46b41c358adc9c2a140fbdd Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 15:05:35 +1000 Subject: [PATCH 105/561] Add tags --- docs/3df57813b7ec2de885ea6075ff46ed46.js | 18 +- docs/index.html | 2 +- index.html | 324 +++++++++++------- package-lock.json | 13 + package.json | 3 + scripts/build.js | 139 ++++++-- snippets/box-sizing-reset.md | 2 + snippets/clearfix.md | 4 +- snippets/constant-width-to-height-ratio.md | 2 + snippets/custom-scrollbar.md | 6 +- snippets/custom-text-selection.md | 2 + snippets/disable-selection.md | 2 + snippets/donut-spinner.md | 10 +- snippets/easing-variables.md | 2 + snippets/etched-text.md | 2 + snippets/evenly-distributed-children.md | 2 + snippets/gradient-text.md | 2 + snippets/hairline-border.md | 2 + snippets/horizontal-and-vertical-centering.md | 2 + snippets/hover-underline-animation.md | 10 +- snippets/mouse-cursor-gradient-tracking.md | 7 +- snippets/overflow-scroll-gradient.md | 11 +- snippets/popout-menu.md | 2 + snippets/pretty-text-underline.md | 15 +- snippets/shape-separator.md | 2 + snippets/system-font-stack.md | 5 +- snippets/triangle.md | 2 + snippets/truncate-text.md | 2 + src/css/components/sidebar.scss | 11 + src/css/components/snippet.scss | 29 +- src/css/components/tags.scss | 83 +++++ src/css/index.scss | 1 + src/html/components/back-to-top-button.html | 1 + src/html/components/footer.html | 1 + src/html/components/header.html | 10 + src/html/components/main.html | 4 + src/html/components/sidebar.html | 9 + src/html/components/tags.html | 1 + src/html/index.html | 15 + src/js/components/{Menu.js => Sidebar.js} | 27 +- src/js/components/Snippet.js | 13 + src/js/components/Tag.js | 14 + src/js/deps/jump.js | 196 ----------- src/js/deps/utils.js | 30 +- src/js/index.js | 6 +- utils/utils.js | 16 +- 46 files changed, 644 insertions(+), 418 deletions(-) create mode 100644 src/css/components/tags.scss create mode 100644 src/html/components/back-to-top-button.html create mode 100644 src/html/components/footer.html create mode 100644 src/html/components/header.html create mode 100644 src/html/components/main.html create mode 100644 src/html/components/sidebar.html create mode 100644 src/html/components/tags.html create mode 100644 src/html/index.html rename src/js/components/{Menu.js => Sidebar.js} (52%) create mode 100644 src/js/components/Snippet.js create mode 100644 src/js/components/Tag.js delete mode 100644 src/js/deps/jump.js diff --git a/docs/3df57813b7ec2de885ea6075ff46ed46.js b/docs/3df57813b7ec2de885ea6075ff46ed46.js index f8a7ac643..5e0182276 100644 --- a/docs/3df57813b7ec2de885ea6075ff46ed46.js +++ b/docs/3df57813b7ec2de885ea6075ff46ed46.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],15:[function(require,module,exports) { +},{}],11:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],22:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],23:[function(require,module,exports) { +},{}],15:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],16:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){[r,n].forEach(function(e){return e.classList.toggle(a)}),r.setAttribute("aria-expanded",r.classList.contains(a)?"true":"false")};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":22,"../deps/utils":23}],17:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":22,"../deps/utils":23}],8:[function(require,module,exports) { +},{"../deps/jump":14,"../deps/utils":15}],7:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":26,"prismjs":27,"../css/deps/prism.css":26,"../css/index.scss":26,"./deps/polyfills":15,"./components/Menu":16,"./components/BackToTopButton":17}]},{},[8]) \ No newline at end of file +},{"normalize.css":16,"prismjs":17,"../css/deps/prism.css":16,"../css/index.scss":16,"./deps/polyfills":11,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[7]) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index a8edd786a..f98344022 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ *::after { box-sizing: inherit; } -

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
+

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
diff --git a/index.html b/index.html
index 1e31c0158..f9265c8b8 100644
--- a/index.html
+++ b/index.html
@@ -14,32 +14,44 @@
     
     
@@ -55,8 +67,20 @@
+
-

Box-sizing reset

+

Box-sizing resetlayout

Resets the box-model so that widths and heights are not affected by their borders or padding.

CSS

html {
   box-sizing: border-box;
@@ -67,7 +91,7 @@
   box-sizing: inherit;
 }
 
-

Demo

+

Demo

Demo
@@ -82,12 +106,12 @@ border: 5px solid; } -

Explanation

+

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.
-

Browser support

+

Browser support

98.2% @@ -99,11 +123,13 @@ https://caniuse.com/#feat=css3-boxsizing + +
-

Clearfix

+

Clearfixlayout

Ensures that an element self-clears its children.

-
Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.
+
Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
@@ -111,7 +137,7 @@
 </div>
 

CSS

.clearfix::after {
-  content: "";
+  content: '';
   display: block;
   clear: both;
 }
@@ -119,7 +145,7 @@
   float: left;
 }
 
-

Demo

+

Demo

float a
@@ -137,22 +163,24 @@ float: left; } -

Explanation

+

Explanation

  1. .clearfix::after defines a pseudo-element.
  2. content: '' allows the pseudo-element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.
-

Browser support

+

Browser support

99+%

✅ No caveats.

+ +
-

Constant width to height ratio

+

Constant width to height ratiolayout

Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

HTML

<div class="constant-width-to-height-ratio"></div>
 
@@ -162,7 +190,7 @@ padding-top: 50%; }
-

Demo

+

Demo

Resize your browser window to see the proportion of the element remain the same.

@@ -174,19 +202,21 @@ padding-top: 50%; } -

Explanation

+

Explanation

padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

-

Browser support

+

Browser support

99+%

⚠️ padding-top pushes any content within the element to the bottom.

+ +
-

Custom scrollbar

+

Custom scrollbarvisual

Customizes the scrollbar style for the document and elements with scrollable overflow, on WebKit platforms.

HTML

<div class="custom-scrollbar">
   <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?</p>
@@ -197,18 +227,18 @@
   width: 8px;
 }
 ::-webkit-scrollbar-track {
-  box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+  box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
   border-radius: 10px;
 }
 ::-webkit-scrollbar-thumb {
   border-radius: 10px;
-  box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
+  box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
 }
 /* Scrollable element */
 .some-element::webkit-scrollbar {
 }
 
-

Demo

+

Demo

@@ -236,7 +266,7 @@ box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); } -

Explanation

+

Explanation

  1. ::-webkit-scrollbar targets the whole scrollbar element.
  2. ::-webkit-scrollbar-track targets only the scrollbar track.
  3. @@ -245,7 +275,7 @@

    There are many other pseudo-elements that you can use to style scrollbars. For more info, visit the WebKit Blog

    -

    Browser support

    +

    Browser support

    87.3% @@ -257,9 +287,11 @@ https://caniuse.com/#feat=css-scrollbar + +
    -

    Custom text selection

    +

    Custom text selectionvisual

    Changes the styling of text selection.

    HTML

    <p class="custom-text-selection">Select some of this text.</p>
     
    @@ -272,7 +304,7 @@ color: white; }
-

Demo

+

Demo

Select some of this text.

@@ -286,9 +318,9 @@ color: white; } -

Explanation

+

Explanation

::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

-

Browser support

+

Browser support

84.6% @@ -301,9 +333,11 @@ in any specification.

https://caniuse.com/#feat=css-selection + +
-

Disable selection

+

Disable selectioninteractivity

Makes the content unselectable.

HTML

<p>You can select me.</p>
 <p class="unselectable">You can't select me!</p>
@@ -312,7 +346,7 @@ in any specification.

user-select: none; }
-

Demo

+

Demo

You can select me.

You can't select me!

@@ -322,9 +356,9 @@ in any specification.

user-select: none; } -

Explanation

+

Explanation

user-select: none specifies that the text cannot be selected.

-

Browser support

+

Browser support

86.3% @@ -336,15 +370,21 @@ in any specification.

https://caniuse.com/#feat=user-select-none + +
-

Donut spinner

+

Donut spinneranimation

Creates a donut spinner that can be used to indicate the loading of content.

HTML

<div class="donut"></div>
 

CSS

@keyframes donut-spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
 }
 .donut {
   display: inline-block;
@@ -356,7 +396,7 @@ in any specification.

animation: donut-spin 1.2s linear infinite; }
-

Demo

+

Demo

@@ -379,9 +419,9 @@ in any specification.

animation: snippet-demo__donut-spin 1.2s linear infinite; } -

Explanation

+

Explanation

Use a semi-transparent border for the whole element, except one side that will serve as the loading indicator for the donut. Use animation to rotate the element.

-

Browser support

+

Browser support

94.8% @@ -396,9 +436,11 @@ in any specification.

https://caniuse.com/#feat=transforms2d + +
-

Easing variables

+

Easing variablesanimation

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

HTML

<div class="easing-variables"></div>
 
@@ -432,7 +474,7 @@ in any specification.

transform: rotate(45deg); }
-

Demo

+

Demo

Hover
@@ -473,10 +515,10 @@ in any specification.

transform: rotate(45deg); } -

Explanation

+

Explanation

The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

-

Browser support

+

Browser support

87.2% @@ -488,9 +530,11 @@ in any specification.

https://caniuse.com/#feat=css-variables + +
-

Etched text

+

Etched textvisual

Creates an effect where text appears to be "etched" or engraved into the background.

HTML

<p class="etched-text">I appear etched into the background.</p>
 
@@ -501,7 +545,7 @@ in any specification.

color: #b8bec5; }
-

Demo

+

Demo

I appear etched into the background.

@@ -513,11 +557,11 @@ in any specification.

text-shadow: 0 2px 0 white; } -

Explanation

+

Explanation

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

The background must be darker than the shadow for the effect to work.

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

-

Browser support

+

Browser support

97.9% @@ -529,9 +573,11 @@ in any specification.

https://caniuse.com/#feat=css-textshadow + +
-

Evenly distributed children

+

Evenly distributed childrenlayout

Evenly distributes child elements within a parent element.

HTML

<div class="evenly-distributed-children">
   <p>Item1</p>
@@ -544,7 +590,7 @@ in any specification.

justify-content: space-between; }
-

Demo

+

Demo

Item1

@@ -559,13 +605,13 @@ in any specification.

justify-content: space-between; } -

Explanation

+

Explanation

  1. display: flex enables flexbox.
  2. justify-content: space-between evenly distributes child elements horizontally. The first item is positioned at the left edge, while the last item is positioned at the right edge.

Alternatively, use justify-content: space-around to distribute the children with space around them, rather than between them.

-

Browser support

+

Browser support

97.8% @@ -577,9 +623,11 @@ in any specification.

https://caniuse.com/#feat=flexbox + +
-

Gradient text

+

Gradient textvisual

Gives text a gradient color.

HTML

<p class="gradient-text">Gradient text</p>
 
@@ -589,7 +637,7 @@ in any specification.

-webkit-background-clip: text; } -

Demo

+

Demo

Gradient text @@ -605,13 +653,13 @@ in any specification.

margin: 0; } -

Explanation

+

Explanation

  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. webkit-text-fill-color: transparent fills the text with a transparent color.
  3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.
-

Browser support

+

Browser support

90.7% @@ -623,9 +671,11 @@ in any specification.

https://caniuse.com/#feat=text-stroke + +
-

Hairline border

+

Hairline bordervisual

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

HTML

<div class="hairline-border">text</div>
 
@@ -648,7 +698,7 @@ in any specification.

} } -

Demo

+

Demo

Text with a hairline border around it.

@@ -672,12 +722,12 @@ in any specification.

} } -

Explanation

+

Explanation

  1. box-shadow, when only using spread, adds a pseudo-border which can use subpixels*.
  2. Use @media (min-resolution: ...) to check the device pixel ratio (1dppx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.
-

Browser Support

+

Browser Support

95.0% @@ -694,9 +744,11 @@ in any specification.


*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

+ +
-

Horizontal and vertical centering

+

Horizontal and vertical centeringlayout

Horizontally and vertically centers a child element within a parent element.

HTML

<div class="horizontal-and-vertical-centering">
   <div class="child"></div>
@@ -708,7 +760,7 @@ in any specification.

align-items: center; }
-

Demo

+

Demo

Centered content.

@@ -722,13 +774,13 @@ in any specification.

height: 200px; } -

Explanation

+

Explanation

  1. display: flex enables flexbox.
  2. justify-content: center centers the child horizontally.
  3. align-items: center centers the child vertically.
-

Browser support

+

Browser support

97.8% @@ -740,9 +792,11 @@ in any specification.

https://caniuse.com/#feat=flexbox + +
-

Hover underline animation

+

Hover underline animationanimation

Creates an animated underline effect when the text is hovered over.

Credit: @@ -773,7 +827,7 @@ in any specification.

transform-origin: bottom left; } -

Demo

+

Demo

Hover this text to see the effect!

@@ -800,7 +854,7 @@ in any specification.

transform-origin: bottom left; } -

Explanation

+

Explanation

  1. display: inline-block makes the block p an inline-block to prevent the underline from spanning the entire parent width rather than just the content (text).
  2. position: relative on the element establishes a Cartesian positioning context for pseudo-elements.
  3. @@ -814,7 +868,7 @@ in any specification.

  4. :hover::after then uses scaleX(1) to transition the width to 100%, then changes the transform-origin to bottom left so that the anchor point is reversed, allowing it transition out in the other direction when hovered off.
-

Browser support

+

Browser support

94.9% @@ -829,9 +883,11 @@ in any specification.

https://caniuse.com/#feat=css-transitions + +
-

Mouse cursor gradient tracking

+

Mouse cursor gradient trackingvisualinteractivity

A hover effect where the gradient follows the mouse cursor.

Credit: @@ -866,21 +922,21 @@ in any specification.

height: var(--size); background: radial-gradient(circle closest-side, pink, transparent); transform: translate(-50%, -50%); - transition: width .2s ease, height .2s ease; + transition: width 0.2s ease, height 0.2s ease; } .mouse-cursor-gradient-tracking:hover::before { --size: 200px; }

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
-btn.onmousemove = function (e) {
+btn.onmousemove = function(e) {
   var x = e.pageX - btn.offsetLeft
   var y = e.pageY - btn.offsetTop
   btn.style.setProperty('--x', x + 'px')
   btn.style.setProperty('--y', y + 'px')
 }
 
-

Demo

+

Demo

-
diff --git a/package-lock.json b/package-lock.json index 6a87cd27a..ca46ca7a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1934,6 +1934,11 @@ } } }, + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", @@ -3107,6 +3112,14 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "feather-icons": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/feather-icons/-/feather-icons-4.7.0.tgz", + "integrity": "sha512-/dKhEelpOazdN0MtcBZTgqo1tZHn35y40V0sGPi6FzzwNbQ5H6vzTqYWWMeRtKw5JePmog7RthR/PYPA1lYNFA==", + "requires": { + "classnames": "2.2.5" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", diff --git a/package.json b/package.json index 5501c504f..43d636c1a 100644 --- a/package.json +++ b/package.json @@ -25,5 +25,8 @@ "prettier": "^1.10.2", "pretty": "^2.0.0", "prismjs": "^1.11.0" + }, + "dependencies": { + "feather-icons": "^4.7.0" } } diff --git a/scripts/build.js b/scripts/build.js index a2aa0a056..bc9f6f797 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -2,71 +2,134 @@ const fs = require('fs') const path = require('path') const marked = require('marked') const pretty = require('pretty') -const { JSDOM } = require('jsdom') const caniuseDb = require('caniuse-db/data.json') -const { toKebabCase, emptyHTML } = require('../utils/utils.js') - -const renderer = new marked.Renderer() -renderer.heading = (text, level) => - level === 3 - ? `${text}` - : `${text}` -renderer.link = (url, _, text) => `${text || url}` +const { toKebabCase, createElement, template, dom } = require('../utils/utils.js') const SNIPPETS_PATH = './snippets' -const SNIPPET_CONTAINER_SELECTOR = '.main > .container' +const TAGS = [ + { + name: 'all', + icon: 'check' + }, + { + name: 'layout', + icon: 'layout' + }, + { + name: 'visual', + icon: 'eye' + }, + { + name: 'animation', + icon: 'loader' + }, + { + name: 'interactivity', + icon: 'edit-2' + } +] -const createElement = str => { - const el = document.createElement('div') - el.innerHTML = str - return el.firstElementChild +const renderer = new marked.Renderer() +renderer.heading = (text, level) => { + if (level === 3) { + return `${text}` + } else { + return ['HTML', 'CSS', 'JavaScript'].includes(text) + ? `${text}` + : `${text}` + } +} +renderer.link = (url, _, text) => `${text || url}` + +const document = dom('./src/html/index.html') +const components = { + backToTopButton: dom('./src/html/components/back-to-top-button.html'), + sidebar: dom('./src/html/components/sidebar.html'), + header: dom('./src/html/components/header.html'), + main: dom('./src/html/components/main.html'), + tags: dom('./src/html/components/tags.html') } -const template = markdown => ` -
- ${markdown} -
-` - -const document = new JSDOM(fs.readFileSync('./index.html', 'utf8')).window.document -const snippetContainer = document.querySelector('.main > .container') -const sidebarLinks = document.querySelector('.sidebar__links') -emptyHTML(snippetContainer, sidebarLinks) +const snippetContainer = components.main.querySelector('.container') +const sidebarLinkContainer = components.sidebar.querySelector('.sidebar__links') +TAGS.slice(1).forEach(tag => { + sidebarLinkContainer.append( + createElement(` + + `) + ) +}) for (const snippetFile of fs.readdirSync(SNIPPETS_PATH)) { const snippetPath = path.join(SNIPPETS_PATH, snippetFile) const snippetData = fs.readFileSync(snippetPath, 'utf8') const markdown = marked(snippetData, { renderer }) - const snippetTemplate = template(markdown) - const el = createElement(snippetTemplate) - snippetContainer.append(el) - - sidebarLinks.append( - createElement( - `${ - el.querySelector('h3').innerHTML - }` - ) - ) + const snippetEl = createElement(`
${markdown}
`) + snippetContainer.append(snippetEl) + // browser support usage const featUsageShares = (snippetData.match(/https?:\/\/caniuse\.com\/#feat=.*/g) || []).map( feat => { const featData = caniuseDb.data[feat.match(/#feat=(.*)/)[1]] return featData ? Number(featData.usage_perc_y + featData.usage_perc_a) : 100 } ) - - el.querySelector('h4:last-of-type').after( + const browserSupportHeading = snippetEl.querySelector('h4:last-of-type') + browserSupportHeading.after( createElement(`
${featUsageShares.length ? Math.min(...featUsageShares).toPrecision(3) : '99+'}%
- `) + `) ) + + // sidebar link + const link = createElement( + `${ + snippetEl.querySelector('h3').innerHTML + }` + ) + + // tags + const tags = (snippetData.match(//) || [, ''])[1] + .split(/,\s*/) + .forEach(tag => { + tag = tag.trim().toLowerCase() + snippetEl + .querySelector('h3') + .append( + createElement( + `${tag}` + ) + ) + + sidebarLinkContainer.querySelector(`section[data-type="${tag}"]`).append(link) + }) } +// build dom +TAGS.forEach(tag => + components.tags.append( + createElement( + `` + ) + ) +) +const content = document.querySelector('.content-wrapper') +content.before(components.backToTopButton) +content.before(components.sidebar) +content.append(components.header) +content.append(components.main) +components.main.querySelector('.container').prepend(components.tags) + // doctype declaration gets stripped, add it back in const html = ` ${pretty(document.documentElement.outerHTML, { ocd: true })} diff --git a/snippets/box-sizing-reset.md b/snippets/box-sizing-reset.md index 1bdd33e2f..eb5a2e3fb 100644 --- a/snippets/box-sizing-reset.md +++ b/snippets/box-sizing-reset.md @@ -44,3 +44,5 @@ html { ✅ No caveats. * https://caniuse.com/#feat=css3-boxsizing + + diff --git a/snippets/clearfix.md b/snippets/clearfix.md index e1fe64e6a..657679a99 100644 --- a/snippets/clearfix.md +++ b/snippets/clearfix.md @@ -18,7 +18,7 @@ Ensures that an element self-clears its children. ```css .clearfix::after { - content: ""; + content: ''; display: block; clear: both; } @@ -60,3 +60,5 @@ Ensures that an element self-clears its children. #### Browser support ✅ No caveats. + + diff --git a/snippets/constant-width-to-height-ratio.md b/snippets/constant-width-to-height-ratio.md index ff7ef0122..61ee886c8 100644 --- a/snippets/constant-width-to-height-ratio.md +++ b/snippets/constant-width-to-height-ratio.md @@ -43,3 +43,5 @@ causes an element's height to become a percentage of its parent's width, i.e. `5 #### Browser support ⚠️ `padding-top` pushes any content within the element to the bottom. + + diff --git a/snippets/custom-scrollbar.md b/snippets/custom-scrollbar.md index b63cc00ae..e6542dbbf 100644 --- a/snippets/custom-scrollbar.md +++ b/snippets/custom-scrollbar.md @@ -19,13 +19,13 @@ Customizes the scrollbar style for the document and elements with scrollable ove } ::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 10px; } ::-webkit-scrollbar-thumb { border-radius: 10px; - box-shadow: inset 0 0 6px rgba(0,0,0,0.5); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); } /* Scrollable element */ @@ -80,3 +80,5 @@ There are many other pseudo-elements that you can use to style scrollbars. For m ⚠️ Scrollbar styling doesn't appear to be on any standards track. * https://caniuse.com/#feat=css-scrollbar + + diff --git a/snippets/custom-text-selection.md b/snippets/custom-text-selection.md index ff5136934..927c0937a 100644 --- a/snippets/custom-text-selection.md +++ b/snippets/custom-text-selection.md @@ -48,3 +48,5 @@ Changes the styling of text selection. in any specification. * https://caniuse.com/#feat=css-selection + + diff --git a/snippets/disable-selection.md b/snippets/disable-selection.md index 3250911b7..0ad8481e1 100644 --- a/snippets/disable-selection.md +++ b/snippets/disable-selection.md @@ -39,3 +39,5 @@ Makes the content unselectable. ⚠️ Requires prefixes for full support. * https://caniuse.com/#feat=user-select-none + + diff --git a/snippets/donut-spinner.md b/snippets/donut-spinner.md index 2c921414e..215972229 100644 --- a/snippets/donut-spinner.md +++ b/snippets/donut-spinner.md @@ -12,8 +12,12 @@ Creates a donut spinner that can be used to indicate the loading of content. ```css @keyframes donut-spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } } .donut { display: inline-block; @@ -59,3 +63,5 @@ serve as the loading indicator for the donut. Use `animation` to rotate the elem * https://caniuse.com/#feat=css-animation * https://caniuse.com/#feat=transforms2d + + diff --git a/snippets/easing-variables.md b/snippets/easing-variables.md index de2ba1600..711642b27 100644 --- a/snippets/easing-variables.md +++ b/snippets/easing-variables.md @@ -104,3 +104,5 @@ The variables are defined globally within the `:root` CSS pseudo-class which mat ✅ No caveats. * https://caniuse.com/#feat=css-variables + + diff --git a/snippets/etched-text.md b/snippets/etched-text.md index 81f81911e..0f03b8f65 100644 --- a/snippets/etched-text.md +++ b/snippets/etched-text.md @@ -49,3 +49,5 @@ of the background. ✅ No caveats. * https://caniuse.com/#feat=css-textshadow + + diff --git a/snippets/evenly-distributed-children.md b/snippets/evenly-distributed-children.md index 35d9a1370..52583be88 100644 --- a/snippets/evenly-distributed-children.md +++ b/snippets/evenly-distributed-children.md @@ -51,3 +51,5 @@ Alternatively, use `justify-content: space-around` to distribute the children wi ⚠️ Needs prefixes for full support. * https://caniuse.com/#feat=flexbox + + diff --git a/snippets/gradient-text.md b/snippets/gradient-text.md index c778ccfb8..1c57c4f15 100644 --- a/snippets/gradient-text.md +++ b/snippets/gradient-text.md @@ -49,3 +49,5 @@ Gives text a gradient color. ⚠️ Uses non-standard properties. * https://caniuse.com/#feat=text-stroke + + diff --git a/snippets/hairline-border.md b/snippets/hairline-border.md index c27caf34a..e473077f1 100644 --- a/snippets/hairline-border.md +++ b/snippets/hairline-border.md @@ -81,3 +81,5 @@ very sharp and crisp.
\*Chrome does not support subpixel values on `border`. Safari does not support subpixel values on `box-shadow`. Firefox supports subpixel values on both. + + diff --git a/snippets/horizontal-and-vertical-centering.md b/snippets/horizontal-and-vertical-centering.md index 6843798f4..0bb259d7a 100644 --- a/snippets/horizontal-and-vertical-centering.md +++ b/snippets/horizontal-and-vertical-centering.md @@ -48,3 +48,5 @@ Horizontally and vertically centers a child element within a parent element. ⚠️ Needs prefixes for full support. * https://caniuse.com/#feat=flexbox + + diff --git a/snippets/hover-underline-animation.md b/snippets/hover-underline-animation.md index 51f8d3064..d84e1429c 100644 --- a/snippets/hover-underline-animation.md +++ b/snippets/hover-underline-animation.md @@ -69,7 +69,7 @@ Creates an animated underline effect when the text is hovered over. #### Explanation 1. `display: inline-block` makes the block `p` an `inline-block` to prevent the underline from -spanning the entire parent width rather than just the content (text). + spanning the entire parent width rather than just the content (text). 2. `position: relative` on the element establishes a Cartesian positioning context for pseudo-elements. 3. `::after` defines a pseudo-element. 4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. @@ -77,11 +77,11 @@ spanning the entire parent width rather than just the content (text). 6. `transform: scaleX(0)` initially scales the pseudo element to 0 so it has no width and is not visible. 7. `bottom: 0` and `left: 0` position it to the bottom left of the block. 8. `transition: transform 0.25s ease-out` means changes to `transform` will be transitioned over 0.25 seconds -with an `ease-out` timing function. + with an `ease-out` timing function. 9. `transform-origin: bottom right` means the transform anchor point is positioned at the bottom right of the block. 10. `:hover::after` then uses `scaleX(1)` to transition the width to 100%, then changes the `transform-origin` -to `bottom left` so that the anchor point is reversed, allowing it transition out in the other direction when -hovered off. + to `bottom left` so that the anchor point is reversed, allowing it transition out in the other direction when + hovered off. #### Browser support @@ -89,3 +89,5 @@ hovered off. * https://caniuse.com/#feat=transforms2d * https://caniuse.com/#feat=css-transitions + + diff --git a/snippets/mouse-cursor-gradient-tracking.md b/snippets/mouse-cursor-gradient-tracking.md index 771563d03..3af06d91c 100644 --- a/snippets/mouse-cursor-gradient-tracking.md +++ b/snippets/mouse-cursor-gradient-tracking.md @@ -41,7 +41,7 @@ A hover effect where the gradient follows the mouse cursor. height: var(--size); background: radial-gradient(circle closest-side, pink, transparent); transform: translate(-50%, -50%); - transition: width .2s ease, height .2s ease; + transition: width 0.2s ease, height 0.2s ease; } .mouse-cursor-gradient-tracking:hover::before { @@ -53,7 +53,7 @@ A hover effect where the gradient follows the mouse cursor. ```js var btn = document.querySelector('.mouse-cursor-gradient-tracking') -btn.onmousemove = function (e) { +btn.onmousemove = function(e) { var x = e.pageX - btn.offsetLeft var y = e.pageY - btn.offsetTop btn.style.setProperty('--x', x + 'px') @@ -131,7 +131,10 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop ``` #### Browser support +
Requires JavaScript
⚠️ Requires JavaScript. * https://caniuse.com/#feat=css-variables + + diff --git a/snippets/overflow-scroll-gradient.md b/snippets/overflow-scroll-gradient.md index e4603cb4b..c0ffde89f 100644 --- a/snippets/overflow-scroll-gradient.md +++ b/snippets/overflow-scroll-gradient.md @@ -24,7 +24,10 @@ Adds a fading gradient to an overflowing element to better indicate there is mor bottom: 0; width: 300px; height: 25px; - background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */ + background: linear-gradient( + rgba(255, 255, 255, 0.001), + white + ); /* transparent keyword is broken in Safari */ pointer-events: none; } .overflow-scroll-gradient__scroller { @@ -81,10 +84,10 @@ document.querySelector('.snippet-demo__overflow-scroll-gradient__scroller').inne 1. `position: relative` on the parent establishes a Cartesian positioning context for pseudo-elements. 2. `::after` defines a pseudo element. 3. `background-image: linear-gradient(...)` adds a linear gradient that fades from transparent to white -(top to bottom). + (top to bottom). 4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. 5. `width: 300px` matches the size of the scrolling element (which is a child of the parent that has - the pseudo element). + the pseudo element). 6. `height: 25px` is the height of the fading gradient pseudo-element, which should be kept relatively small. 7. `bottom: 0` positions the pseudo-element at the bottom of the parent. 8. `pointer-events: none` specifies that the pseudo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive. @@ -94,3 +97,5 @@ document.querySelector('.snippet-demo__overflow-scroll-gradient__scroller').inne ✅ No caveats. * https://caniuse.com/#feat=css-gradients + + diff --git a/snippets/popout-menu.md b/snippets/popout-menu.md index 191cd92e2..859a33475 100644 --- a/snippets/popout-menu.md +++ b/snippets/popout-menu.md @@ -75,3 +75,5 @@ Reveals an interactive popout menu on hover. #### Browser support ✅ No caveats. + + diff --git a/snippets/pretty-text-underline.md b/snippets/pretty-text-underline.md index aa768666c..ba2e137c4 100644 --- a/snippets/pretty-text-underline.md +++ b/snippets/pretty-text-underline.md @@ -16,10 +16,7 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control font-family: Arial, sans-serif; display: inline; font-size: 18px; - text-shadow: 1px 1px 0 #f5f6f9, - -1px 1px 0 #f5f6f9, - -1px -1px 0 #f5f6f9, - 1px -1px 0 #f5f6f9; + text-shadow: 1px 1px 0 #f5f6f9, -1px 1px 0 #f5f6f9, -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); background-position: 0 0.98em; background-repeat: repeat-x; @@ -70,13 +67,13 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control #### Explanation 1. `text-shadow: ...` has 4 values with offsets that cover a 4x4 px area to ensure the underline - has a "thick" shadow that covers the line where descenders clip it. Use a color - that matches the background. For a larger font, use a larger `px` size. + has a "thick" shadow that covers the line where descenders clip it. Use a color + that matches the background. For a larger font, use a larger `px` size. 2. `background-image: linear-gradient(...)` creates a 90deg gradient with the current - text color (`currentColor`). + text color (`currentColor`). 3. The `background-*` properties size the gradient as 1x1px at the bottom and repeats it along the x-axis. 4. The `::selection` pseudo selector ensures the text shadow does not interfere with text - selection. + selection. #### Browser support @@ -84,3 +81,5 @@ Natively implemented as `text-decoration-skip-ink: auto` but it has less control * https://caniuse.com/#feat=css-textshadow * https://caniuse.com/#feat=css-gradients + + diff --git a/snippets/shape-separator.md b/snippets/shape-separator.md index a0a5479e4..ed268abb5 100644 --- a/snippets/shape-separator.md +++ b/snippets/shape-separator.md @@ -64,3 +64,5 @@ Uses an SVG shape to separate two different blocks to create more a interesting ✅ No caveats. * https://caniuse.com/#feat=svg + + diff --git a/snippets/system-font-stack.md b/snippets/system-font-stack.md index 5b725be11..bc92b01f9 100644 --- a/snippets/system-font-stack.md +++ b/snippets/system-font-stack.md @@ -12,7 +12,8 @@ Uses the native font of the operating system to get close to a native app feel. ```css .system-font-stack { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, + Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } ``` @@ -46,3 +47,5 @@ falls back to the next if it cannot find the font (on the system or defined in C #### Browser support ✅ No caveats. + + diff --git a/snippets/triangle.md b/snippets/triangle.md index b39bcf41e..5eb503bcc 100644 --- a/snippets/triangle.md +++ b/snippets/triangle.md @@ -89,3 +89,5 @@ Experiment with the `px` values to change the proportion of the triangle. #### Browser support ✅ No caveats. + + diff --git a/snippets/truncate-text.md b/snippets/truncate-text.md index 4f8024518..4781105a7 100644 --- a/snippets/truncate-text.md +++ b/snippets/truncate-text.md @@ -51,3 +51,5 @@ If the text is longer than one line, it will be truncated and end with an ellips ⚠️ Only works for single line elements. * https://caniuse.com/#feat=text-overflow + + diff --git a/src/css/components/sidebar.scss b/src/css/components/sidebar.scss index 78bd98709..536e92abb 100644 --- a/src/css/components/sidebar.scss +++ b/src/css/components/sidebar.scss @@ -35,6 +35,7 @@ max-height: 378px; margin-top: 44px; box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 128, 0.2); + padding-bottom: 1rem; &.is-active { transform: rotateX(0); @@ -59,6 +60,16 @@ border-color: pink; } } + + &__section { + padding: 0 0.75rem; + } + + &__section-heading { + text-transform: capitalize; + color: #e3f5ff; + margin-bottom: 0.5rem; + } } @media (min-width: 992px) { diff --git a/src/css/components/snippet.scss b/src/css/components/snippet.scss index d02e323ad..787521772 100644 --- a/src/css/components/snippet.scss +++ b/src/css/components/snippet.scss @@ -14,6 +14,10 @@ margin-bottom: 1.25rem; margin-top: 0; line-height: 1.3; + + span:not(.snippet__tag) { + margin-right: 0.75rem; + } } code:not([class*='lang']) { @@ -42,16 +46,20 @@ h4 { display: inline-block; margin: 1rem 0 0.5rem; + font-size: 1.1rem; line-height: 2; - padding: 0 0.5rem; - border-radius: 3px; - font-size: 0.9rem; - text-transform: uppercase; - background: #333; - border: 1px solid #c6d6ea; - border-bottom-color: darken(#c6d6ea, 5); - background: white; - box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); + + &[data-type] { + background: #333; + padding: 0 0.5rem; + border-radius: 3px; + font-size: 0.9rem; + text-transform: uppercase; + border: 1px solid #c6d6ea; + border-bottom-color: darken(#c6d6ea, 5); + background: white; + box-shadow: 0 0.25rem 0.5rem -0.1rem rgba(0, 32, 64, 0.15); + } &[data-type='HTML'] { color: white; @@ -107,6 +115,9 @@ top: 1rem; right: 0; } + + &__tag { + } } .snippet-demo { diff --git a/src/css/components/tags.scss b/src/css/components/tags.scss new file mode 100644 index 000000000..96e266674 --- /dev/null +++ b/src/css/components/tags.scss @@ -0,0 +1,83 @@ +.tags { + position: relative; + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + margin-bottom: 1rem; + + &__tag { + display: inline-block; + position: relative; + top: -1px; + font-weight: bold; + font-size: 0.75rem; + text-transform: uppercase; + color: #8385aa; + white-space: nowrap; + border: 1px solid lighten(#8385aa, 15); + border-radius: 2px; + vertical-align: middle; + line-height: 2; + padding: 0 0.5rem; + margin-right: 0.5rem; + transition: all 0.1s ease-out; + outline: 0; + + &.is-large { + font-size: 0.95rem; + border-radius: 0.2rem; + + .feather { + top: -2px; + width: 18px; + height: 18px; + } + } + + .feather { + vertical-align: middle; + margin-right: 0.25rem; + position: relative; + top: -1px; + width: 14px; + height: 14px; + } + } + + button.tags__tag { + user-select: none; + cursor: pointer; + margin-bottom: 1rem; + margin-right: 1rem; + + &:hover { + background: #8385aa; + border-color: #8385aa; + color: white; + } + + &:focus { + box-shadow: 0 0 0 0.25rem transparentize(#8385aa, 0.5); + } + + &:active { + box-shadow: inset 0 0.1rem 0.1rem 0.1rem rgba(0, 0, 0, 0.2); + background: darken(#8385aa, 10); + border-color: darken(#8385aa, 10); + } + + &.is-active { + background: #7983ff; + border-color: #7983ff; + color: white; + + &:focus { + box-shadow: 0 0 0 0.25rem transparentize(#7983ff, 0.5); + } + } + } +} + +@media (min-width: 579px) { +} diff --git a/src/css/index.scss b/src/css/index.scss index a17bae5dc..d1b69ce68 100644 --- a/src/css/index.scss +++ b/src/css/index.scss @@ -4,3 +4,4 @@ @import './components/header.scss'; @import './components/snippet.scss'; @import './components/back-to-top-button.scss'; +@import './components/tags.scss'; diff --git a/src/html/components/back-to-top-button.html b/src/html/components/back-to-top-button.html new file mode 100644 index 000000000..b7e710382 --- /dev/null +++ b/src/html/components/back-to-top-button.html @@ -0,0 +1 @@ + diff --git a/src/html/components/footer.html b/src/html/components/footer.html new file mode 100644 index 000000000..5f6968b80 --- /dev/null +++ b/src/html/components/footer.html @@ -0,0 +1 @@ +
diff --git a/src/html/components/header.html b/src/html/components/header.html new file mode 100644 index 000000000..6752c47cc --- /dev/null +++ b/src/html/components/header.html @@ -0,0 +1,10 @@ +
+
+ +

30 Seconds of CSS

+

+ A curated collection of useful CSS snippets you can understand in 30 seconds or less. +

+ Star +
+
diff --git a/src/html/components/main.html b/src/html/components/main.html new file mode 100644 index 000000000..ed318e4b9 --- /dev/null +++ b/src/html/components/main.html @@ -0,0 +1,4 @@ +
+
+
+
diff --git a/src/html/components/sidebar.html b/src/html/components/sidebar.html new file mode 100644 index 000000000..b9fceb908 --- /dev/null +++ b/src/html/components/sidebar.html @@ -0,0 +1,9 @@ + diff --git a/src/html/components/tags.html b/src/html/components/tags.html new file mode 100644 index 000000000..97a84ba3e --- /dev/null +++ b/src/html/components/tags.html @@ -0,0 +1 @@ + diff --git a/src/html/index.html b/src/html/index.html new file mode 100644 index 000000000..10b35a213 --- /dev/null +++ b/src/html/index.html @@ -0,0 +1,15 @@ + + + + + + 30 Seconds of CSS + + + + + + +
+ + diff --git a/src/js/components/Menu.js b/src/js/components/Sidebar.js similarity index 52% rename from src/js/components/Menu.js rename to src/js/components/Sidebar.js index 9634c65aa..efc8747e5 100644 --- a/src/js/components/Menu.js +++ b/src/js/components/Sidebar.js @@ -1,27 +1,23 @@ -import jump from '../deps/jump' import { select, selectAll, easeOutQuint } from '../deps/utils' const menu = select('.hamburger') const links = select('.sidebar__links') +const sections = selectAll('.sidebar__section') const ACTIVE_CLASS = 'is-active' const toggle = () => { - const els = [menu, links] - els.forEach(el => el.classList.toggle(ACTIVE_CLASS)) - menu.setAttribute('aria-expanded', menu.classList.contains(ACTIVE_CLASS) ? 'true' : 'false') + if (window.innerWidth <= 991) { + const els = [menu, links] + els.forEach(el => el.classList.toggle(ACTIVE_CLASS)) + menu.setAttribute('aria-expanded', menu.classList.contains(ACTIVE_CLASS) ? 'true' : 'false') + } } menu.addEventListener('click', toggle) links.addEventListener('click', e => { - setTimeout(toggle, 40) if (e.target.classList.contains('sidebar__link')) { - e.preventDefault() - jump(e.target.getAttribute('href'), { - duration: 750, - offset: window.innerWidth <= 768 ? -64 : -32, - easing: easeOutQuint - }) + setTimeout(toggle, 100) } }) @@ -35,4 +31,13 @@ document.addEventListener('click', e => { } }) +EventHub.on('Tag.click', data => { + sections.forEach(section => { + section.style.display = 'block' + if (section.dataset.type !== data.type && data.type !== 'all') { + section.style.display = 'none' + } + }) +}) + export default { toggle } diff --git a/src/js/components/Snippet.js b/src/js/components/Snippet.js new file mode 100644 index 000000000..06457a16a --- /dev/null +++ b/src/js/components/Snippet.js @@ -0,0 +1,13 @@ +import { selectAll } from '../deps/utils' + +const snippets = selectAll('.snippet') +EventHub.on('Tag.click', data => { + snippets.forEach(snippet => { + snippet.style.display = 'block' + if (data.type === 'all') return + const tags = selectAll('.tags__tag', snippet) + if (!selectAll('.tags__tag', snippet).some(el => el.dataset.type === data.type)) { + snippet.style.display = 'none' + } + }) +}) diff --git a/src/js/components/Tag.js b/src/js/components/Tag.js new file mode 100644 index 000000000..734b2b320 --- /dev/null +++ b/src/js/components/Tag.js @@ -0,0 +1,14 @@ +import { select, selectAll, on } from '../deps/utils' + +const tagButtons = selectAll('button.tags__tag') + +const onClick = function() { + tagButtons.forEach(button => button.classList.remove('is-active')) + this.classList.add('is-active') + + EventHub.emit('Tag.click', { + type: this.dataset.type + }) +} + +tagButtons.forEach(button => on(button, 'click', onClick)) diff --git a/src/js/deps/jump.js b/src/js/deps/jump.js deleted file mode 100644 index fc77c8439..000000000 --- a/src/js/deps/jump.js +++ /dev/null @@ -1,196 +0,0 @@ -;(function(global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - ? (module.exports = factory()) - : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory()) -})(this, function() { - 'use strict' - - // Robert Penner's easeInOutQuad - - // find the rest of his easing functions here: http://robertpenner.com/easing/ - // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js - - var easeInOutQuad = function easeInOutQuad(t, b, c, d) { - t /= d / 2 - if (t < 1) return c / 2 * t * t + b - t-- - return -c / 2 * (t * (t - 2) - 1) + b - } - - var _typeof = - typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' - ? function(obj) { - return typeof obj - } - : function(obj) { - return obj && - typeof Symbol === 'function' && - obj.constructor === Symbol && - obj !== Symbol.prototype - ? 'symbol' - : typeof obj - } - - var jumper = function jumper() { - // private variable cache - // no variables are created during a jump, preventing memory leaks - - var element = void 0 // element to scroll to (node) - - var start = void 0 // where scroll starts (px) - var stop = void 0 // where scroll stops (px) - - var offset = void 0 // adjustment from the stop position (px) - var easing = void 0 // easing function (function) - var a11y = void 0 // accessibility support flag (boolean) - - var distance = void 0 // distance of scroll (px) - var duration = void 0 // scroll duration (ms) - - var timeStart = void 0 // time scroll started (ms) - var timeElapsed = void 0 // time spent scrolling thus far (ms) - - var next = void 0 // next scroll position (px) - - var callback = void 0 // to call when done scrolling (function) - - // scroll position helper - - function location() { - return window.scrollY || window.pageYOffset - } - - // element offset helper - - function top(element) { - return element.getBoundingClientRect().top + start - } - - // rAF loop helper - - function loop(timeCurrent) { - // store time scroll started, if not started already - if (!timeStart) { - timeStart = timeCurrent - } - - // determine time spent scrolling so far - timeElapsed = timeCurrent - timeStart - - // calculate next scroll position - next = easing(timeElapsed, start, distance, duration) - - // scroll to it - window.scrollTo(0, next) - - // check progress - timeElapsed < duration - ? window.requestAnimationFrame(loop) // continue scroll loop - : done() // scrolling is done - } - - // scroll finished helper - - function done() { - // account for rAF time rounding inaccuracies - window.scrollTo(0, start + distance) - - // if scrolling to an element, and accessibility is enabled - if (element && a11y) { - // add tabindex indicating programmatic focus - element.setAttribute('tabindex', '-1') - - // focus the element - element.focus() - } - - // if it exists, fire the callback - if (typeof callback === 'function') { - callback() - } - - // reset time for next jump - timeStart = false - } - - // API - - function jump(target) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} - - // resolve options, or use defaults - duration = options.duration || 1000 - offset = options.offset || 0 - callback = options.callback // "undefined" is a suitable default, and won't be called - easing = options.easing || easeInOutQuad - a11y = options.a11y || false - - // cache starting position - start = location() - - // resolve target - switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { - // scroll from current position - case 'number': - element = undefined // no element to scroll to - a11y = false // make sure accessibility is off - stop = start + target - break - - // scroll to element (node) - // bounding rect is relative to the viewport - case 'object': - element = target - stop = top(element) - break - - // scroll to element (selector) - // bounding rect is relative to the viewport - case 'string': - element = document.querySelector(target) - stop = top(element) - break - } - - // resolve scroll distance, accounting for offset - distance = stop - start + offset - - // resolve duration - switch (_typeof(options.duration)) { - // number in ms - case 'number': - duration = options.duration - break - - // function passed the distance of the scroll - case 'function': - duration = options.duration(distance) - break - } - - // start the loop - window.requestAnimationFrame(loop) - } - - // expose only the jump method - return jump - } - - // export singleton - - var singleton = jumper() - - return (() => { - let scrolling - const end = () => (scrolling = false) - return (to, options = {}) => { - if (scrolling) return - const scrollY = window.scrollY || window.pageYOffset - if (to !== '.header') location.hash = to - scroll(0, scrollY) - scrolling = true - setTimeout(end, options.duration || 0) - return singleton(to, options) - } - })() -}) diff --git a/src/js/deps/utils.js b/src/js/deps/utils.js index bc16eef8e..ba5673286 100644 --- a/src/js/deps/utils.js +++ b/src/js/deps/utils.js @@ -1,8 +1,34 @@ -export const select = s => document.querySelector(s) -export const selectAll = s => [].slice.call(document.querySelectorAll(s)) +export const select = (s, parent = document) => parent.querySelector(s) + +export const selectAll = (s, parent = document) => [].slice.call(parent.querySelectorAll(s)) + export const scrollY = () => window.scrollY || window.pageYOffset + export const easeOutQuint = (t, b, c, d) => c * ((t = t / d - 1) * t ** 4 + 1) + b +export const on = (el, evt, fn, opts = {}) => { + const delegatorFn = e => e.target.matches(opts.target) && fn.call(e.target, e) + el.addEventListener(evt, opts.target ? delegatorFn : fn, opts.options || false) + if (opts.target) return delegatorFn +} + +export const createEventHub = () => ({ + hub: Object.create(null), + emit(event, data) { + ;(this.hub[event] || []).forEach(handler => handler(data)) + }, + on(event, handler) { + if (!this.hub[event]) this.hub[event] = [] + this.hub[event].push(handler) + }, + off(event, handler) { + const i = (this.hub[event] || []).findIndex(h => h === handler) + if (i > -1) this.hub[event].splice(i, 1) + } +}) + +window.EventHub = createEventHub() + /* * Make iOS behave normally. */ diff --git a/src/js/index.js b/src/js/index.js index dc97aae66..339f7935e 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -1,6 +1,8 @@ // Deps import 'normalize.css' import 'prismjs' +import feather from 'feather-icons' +feather.replace() // CSS import '../css/deps/prism.css' @@ -10,5 +12,7 @@ import '../css/index.scss' import './deps/polyfills' // Components -import Menu from './components/Menu' +import Sidebar from './components/Sidebar' import BackToTopButton from './components/BackToTopButton' +import Tag from './components/Tag' +import Snippet from './components/Snippet' diff --git a/utils/utils.js b/utils/utils.js index 916e04530..1ce71e567 100644 --- a/utils/utils.js +++ b/utils/utils.js @@ -1,8 +1,20 @@ +const fs = require('fs') +const { JSDOM } = require('jsdom') + exports.toKebabCase = str => str && str .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) .map(x => x.toLowerCase()) - .join('-'); + .join('-') -exports.emptyHTML = (...els) => els.forEach(el => (el.innerHTML = '')) +exports.dom = path => { + const doc = new JSDOM(fs.readFileSync(path, 'utf8')).window.document + return path.includes('component') ? doc.body.firstElementChild : doc +} + +exports.createElement = str => { + const el = new JSDOM().window.document.createElement('div') + el.innerHTML = str + return el.firstElementChild +} From 38ae4345cce03bae8e89ef2fe151e8b0d61ffb6c Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 15:10:53 +1000 Subject: [PATCH 106/561] re-add jump.js --- src/js/deps/jump.js | 196 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 src/js/deps/jump.js diff --git a/src/js/deps/jump.js b/src/js/deps/jump.js new file mode 100644 index 000000000..fc77c8439 --- /dev/null +++ b/src/js/deps/jump.js @@ -0,0 +1,196 @@ +;(function(global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? (module.exports = factory()) + : typeof define === 'function' && define.amd ? define(factory) : (global.Jump = factory()) +})(this, function() { + 'use strict' + + // Robert Penner's easeInOutQuad + + // find the rest of his easing functions here: http://robertpenner.com/easing/ + // find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js + + var easeInOutQuad = function easeInOutQuad(t, b, c, d) { + t /= d / 2 + if (t < 1) return c / 2 * t * t + b + t-- + return -c / 2 * (t * (t - 2) - 1) + b + } + + var _typeof = + typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' + ? function(obj) { + return typeof obj + } + : function(obj) { + return obj && + typeof Symbol === 'function' && + obj.constructor === Symbol && + obj !== Symbol.prototype + ? 'symbol' + : typeof obj + } + + var jumper = function jumper() { + // private variable cache + // no variables are created during a jump, preventing memory leaks + + var element = void 0 // element to scroll to (node) + + var start = void 0 // where scroll starts (px) + var stop = void 0 // where scroll stops (px) + + var offset = void 0 // adjustment from the stop position (px) + var easing = void 0 // easing function (function) + var a11y = void 0 // accessibility support flag (boolean) + + var distance = void 0 // distance of scroll (px) + var duration = void 0 // scroll duration (ms) + + var timeStart = void 0 // time scroll started (ms) + var timeElapsed = void 0 // time spent scrolling thus far (ms) + + var next = void 0 // next scroll position (px) + + var callback = void 0 // to call when done scrolling (function) + + // scroll position helper + + function location() { + return window.scrollY || window.pageYOffset + } + + // element offset helper + + function top(element) { + return element.getBoundingClientRect().top + start + } + + // rAF loop helper + + function loop(timeCurrent) { + // store time scroll started, if not started already + if (!timeStart) { + timeStart = timeCurrent + } + + // determine time spent scrolling so far + timeElapsed = timeCurrent - timeStart + + // calculate next scroll position + next = easing(timeElapsed, start, distance, duration) + + // scroll to it + window.scrollTo(0, next) + + // check progress + timeElapsed < duration + ? window.requestAnimationFrame(loop) // continue scroll loop + : done() // scrolling is done + } + + // scroll finished helper + + function done() { + // account for rAF time rounding inaccuracies + window.scrollTo(0, start + distance) + + // if scrolling to an element, and accessibility is enabled + if (element && a11y) { + // add tabindex indicating programmatic focus + element.setAttribute('tabindex', '-1') + + // focus the element + element.focus() + } + + // if it exists, fire the callback + if (typeof callback === 'function') { + callback() + } + + // reset time for next jump + timeStart = false + } + + // API + + function jump(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} + + // resolve options, or use defaults + duration = options.duration || 1000 + offset = options.offset || 0 + callback = options.callback // "undefined" is a suitable default, and won't be called + easing = options.easing || easeInOutQuad + a11y = options.a11y || false + + // cache starting position + start = location() + + // resolve target + switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { + // scroll from current position + case 'number': + element = undefined // no element to scroll to + a11y = false // make sure accessibility is off + stop = start + target + break + + // scroll to element (node) + // bounding rect is relative to the viewport + case 'object': + element = target + stop = top(element) + break + + // scroll to element (selector) + // bounding rect is relative to the viewport + case 'string': + element = document.querySelector(target) + stop = top(element) + break + } + + // resolve scroll distance, accounting for offset + distance = stop - start + offset + + // resolve duration + switch (_typeof(options.duration)) { + // number in ms + case 'number': + duration = options.duration + break + + // function passed the distance of the scroll + case 'function': + duration = options.duration(distance) + break + } + + // start the loop + window.requestAnimationFrame(loop) + } + + // expose only the jump method + return jump + } + + // export singleton + + var singleton = jumper() + + return (() => { + let scrolling + const end = () => (scrolling = false) + return (to, options = {}) => { + if (scrolling) return + const scrollY = window.scrollY || window.pageYOffset + if (to !== '.header') location.hash = to + scroll(0, scrollY) + scrolling = true + setTimeout(end, options.duration || 0) + return singleton(to, options) + } + })() +}) From 296fde8540681f26c4c4525d9222edd835407d30 Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 15:23:31 +1000 Subject: [PATCH 107/561] Fix mobile menu --- src/js/components/Sidebar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/components/Sidebar.js b/src/js/components/Sidebar.js index efc8747e5..54040812f 100644 --- a/src/js/components/Sidebar.js +++ b/src/js/components/Sidebar.js @@ -16,8 +16,8 @@ const toggle = () => { menu.addEventListener('click', toggle) links.addEventListener('click', e => { - if (e.target.classList.contains('sidebar__link')) { - setTimeout(toggle, 100) + if (e.target.closest('.sidebar__link')) { + setTimeout(toggle, 50) } }) From 6a198b2d82b0d95bbf8124a281e13f62a94aa534 Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 15:32:44 +1000 Subject: [PATCH 108/561] Fix link jumping --- src/js/components/Sidebar.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/js/components/Sidebar.js b/src/js/components/Sidebar.js index 54040812f..523738f1b 100644 --- a/src/js/components/Sidebar.js +++ b/src/js/components/Sidebar.js @@ -1,3 +1,4 @@ +import jump from '../deps/jump' import { select, selectAll, easeOutQuint } from '../deps/utils' const menu = select('.hamburger') @@ -16,8 +17,14 @@ const toggle = () => { menu.addEventListener('click', toggle) links.addEventListener('click', e => { - if (e.target.closest('.sidebar__link')) { + const link = e.target.closest('.sidebar__link') + if (link) { setTimeout(toggle, 50) + jump(link.getAttribute('href'), { + duration: 500, + easing: easeOutQuint, + offset: window.innerWidth <= 991 ? -64 : -32 + }) } }) From c558b58b2b0a4cd107a8f66e78bcaa66d5199fe7 Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 17:01:15 +1000 Subject: [PATCH 109/561] docs: change header gradient angle and add fallback --- docs/3df57813b7ec2de885ea6075ff46ed46.css | 2 +- docs/3df57813b7ec2de885ea6075ff46ed46.js | 18 +++++++++--------- src/css/components/header.scss | 3 ++- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/3df57813b7ec2de885ea6075ff46ed46.css b/docs/3df57813b7ec2de885ea6075ff46ed46.css index 132a1d653..5d70330fe 100644 --- a/docs/3df57813b7ec2de885ea6075ff46ed46.css +++ b/docs/3df57813b7ec2de885ea6075ff46ed46.css @@ -6,4 +6,4 @@ * @author Jonathan Suh @jonsuh * @site https://jonsuh.com/hamburgers * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:linear-gradient(#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:#5b67ff;background:linear-gradient(45deg,#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file diff --git a/docs/3df57813b7ec2de885ea6075ff46ed46.js b/docs/3df57813b7ec2de885ea6075ff46ed46.js index f8a7ac643..ff6870b42 100644 --- a/docs/3df57813b7ec2de885ea6075ff46ed46.js +++ b/docs/3df57813b7ec2de885ea6075ff46ed46.js @@ -1,19 +1,19 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],15:[function(require,module,exports) { +},{}],14:[function(require,module,exports) { var e=Element.prototype;e.matches||(e.matches=e.matchesSelector||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector),e.closest||(e.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}); -},{}],22:[function(require,module,exports) { +},{}],19:[function(require,module,exports) { var global = (1,eval)("this"); var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o};!function(o,t){"object"===("undefined"==typeof exports?"undefined":n(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):o.Jump=t()}(this,function(){"use strict";var o,t,e=function(o,n,t,e){return(o/=e/2)<1?t/2*o*o+n:-t/2*(--o*(o-2)-1)+n},i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(o){return void 0===o?"undefined":n(o)}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":void 0===o?"undefined":n(o)},r=function(){var o=void 0,n=void 0,t=void 0,r=void 0,u=void 0,d=void 0,f=void 0,c=void 0,a=void 0,s=void 0,l=void 0,y=void 0;function m(o){return o.getBoundingClientRect().top+n}function v(t){a||(a=t),l=u(s=t-a,n,f,c),window.scrollTo(0,l),s1&&void 0!==arguments[1]?arguments[1]:{};switch(c=s.duration||1e3,r=s.offset||0,y=s.callback,u=s.easing||e,d=s.a11y||!1,n=window.scrollY||window.pageYOffset,void 0===a?"undefined":i(a)){case"number":o=void 0,d=!1,t=n+a;break;case"object":t=m(o=a);break;case"string":o=document.querySelector(a),t=m(o)}switch(f=t-n+r,i(s.duration)){case"number":c=s.duration;break;case"function":c=s.duration(f)}window.requestAnimationFrame(v)}}();return o=void 0,t=function(){return o=!1},function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!o){var i=window.scrollY||window.pageYOffset;return".header"!==n&&(location.hash=n),scroll(0,i),o=!0,setTimeout(t,e.duration||0),r(n,e)}}}); -},{}],23:[function(require,module,exports) { +},{}],20:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports.select=function(e){return document.querySelector(e)},t=exports.selectAll=function(e){return[].slice.call(document.querySelectorAll(e))},o=exports.scrollY=function(){return window.scrollY||window.pageYOffset},r=exports.easeOutQuint=function(e,t,o,r){return o*((e=e/r-1)*Math.pow(e,4)+1)+t};/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream&&(document.body.style.cursor="pointer"),function(){var e=navigator.userAgent,t=/Mac/.test(navigator.platform)&&(e.match(/OS X 10[._](\d{1,2})/)||[])[1]>=11,o=(e.match(/Chrome\/(\d+)\./)||[])[1]<64||(e.match(/Firefox\/(\d+)\./)||[])[1]<58,r=[].slice.call(document.querySelectorAll("*"));t&&o?(document.documentElement.style.letterSpacing="-0.3px",r.forEach(function(e){parseFloat(getComputedStyle(e).fontSize)>=20&&(e.style.letterSpacing="0.3px")})):t&&!o&&r.forEach(function(e){var t=getComputedStyle(e),o=t.fontSize;"italic"===t.fontStyle&&(e.style.letterSpacing=parseFloat(o)>=20?"0.3px":"-0.3px")})}(); -},{}],16:[function(require,module,exports) { +},{}],12:[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../deps/jump"),t=i(e),s=require("../deps/utils");function i(e){return e&&e.__esModule?e:{default:e}}var r=(0,s.select)(".hamburger"),n=(0,s.select)(".sidebar__links"),a="is-active",u=function(){[r,n].forEach(function(e){return e.classList.toggle(a)}),r.setAttribute("aria-expanded",r.classList.contains(a)?"true":"false")};r.addEventListener("click",u),n.addEventListener("click",function(e){setTimeout(u,40),e.target.classList.contains("sidebar__link")&&(e.preventDefault(),(0,t.default)(e.target.getAttribute("href"),{duration:750,offset:window.innerWidth<=768?-64:-32,easing:s.easeOutQuint}))}),document.addEventListener("click",function(e){e.target.closest(".sidebar__links")||e.target.closest(".hamburger")||!n.classList.contains(a)||u()}),exports.default={toggle:u}; -},{"../deps/jump":22,"../deps/utils":23}],17:[function(require,module,exports) { +},{"../deps/jump":19,"../deps/utils":20}],13:[function(require,module,exports) { "use strict";var e=require("../deps/jump"),t=s(e),i=require("../deps/utils");function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,i.select)(".back-to-top-button");window.addEventListener("scroll",function(){u.classList[(0,i.scrollY)()>500?"add":"remove"]("is-visible")}),u.onclick=function(){(0,t.default)(".header",{duration:750,easing:i.easeOutQuint})}; -},{"../deps/jump":22,"../deps/utils":23}],8:[function(require,module,exports) { +},{"../deps/jump":19,"../deps/utils":20}],8:[function(require,module,exports) { "use strict";require("normalize.css"),require("prismjs"),require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var e=require("./components/Menu"),s=u(e),r=require("./components/BackToTopButton"),i=u(r);function u(e){return e&&e.__esModule?e:{default:e}} -},{"normalize.css":26,"prismjs":27,"../css/deps/prism.css":26,"../css/index.scss":26,"./deps/polyfills":15,"./components/Menu":16,"./components/BackToTopButton":17}]},{},[8]) \ No newline at end of file +},{"normalize.css":23,"prismjs":24,"../css/deps/prism.css":23,"../css/index.scss":23,"./deps/polyfills":14,"./components/Menu":12,"./components/BackToTopButton":13}]},{},[8]) \ No newline at end of file diff --git a/src/css/components/header.scss b/src/css/components/header.scss index de9465cb4..56c891c88 100644 --- a/src/css/components/header.scss +++ b/src/css/components/header.scss @@ -1,7 +1,8 @@ .header { position: relative; padding: 5rem 1rem 4rem; - background: linear-gradient(#5cd2ff, #5b67ff, #681ae4); + background: #5b67ff; + background: linear-gradient(45deg, #5cd2ff, #5b67ff, #681ae4); color: white; margin-bottom: 2rem; text-align: center; From 0059fa8110d8ffece93df29360e0403abf8c4a8b Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 17:16:39 +1000 Subject: [PATCH 110/561] Clean Snippet.js --- src/js/components/Snippet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/components/Snippet.js b/src/js/components/Snippet.js index 06457a16a..01e6c0bad 100644 --- a/src/js/components/Snippet.js +++ b/src/js/components/Snippet.js @@ -6,7 +6,7 @@ EventHub.on('Tag.click', data => { snippet.style.display = 'block' if (data.type === 'all') return const tags = selectAll('.tags__tag', snippet) - if (!selectAll('.tags__tag', snippet).some(el => el.dataset.type === data.type)) { + if (!tags.some(el => el.dataset.type === data.type)) { snippet.style.display = 'none' } }) From 86c4bbd05d8a7ffe021ee1e52e577a1f43a085d2 Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 17:50:56 +1000 Subject: [PATCH 111/561] Add focus-visible polyfill --- package-lock.json | 5 +++++ package.json | 3 ++- src/css/components/tags.scss | 6 +++--- src/js/index.js | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca46ca7a4..39a3cb13c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3161,6 +3161,11 @@ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", "dev": true }, + "focus-visible": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-4.1.0.tgz", + "integrity": "sha512-K+bqYCQOPs5qHFag28o36TyILpqx43Qlq8/YxWdXEOWy3LZmxk8P+dhI5oPzuC28nwwIcerRNwRNiT3Msk0MqA==" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", diff --git a/package.json b/package.json index 43d636c1a..82bd3ffef 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "prismjs": "^1.11.0" }, "dependencies": { - "feather-icons": "^4.7.0" + "feather-icons": "^4.7.0", + "focus-visible": "^4.1.0" } } diff --git a/src/css/components/tags.scss b/src/css/components/tags.scss index 96e266674..0a3634a82 100644 --- a/src/css/components/tags.scss +++ b/src/css/components/tags.scss @@ -15,7 +15,7 @@ text-transform: uppercase; color: #8385aa; white-space: nowrap; - border: 1px solid lighten(#8385aa, 15); + border: 1px solid #c8cbf2; border-radius: 2px; vertical-align: middle; line-height: 2; @@ -57,7 +57,7 @@ color: white; } - &:focus { + &.focus-visible:focus { box-shadow: 0 0 0 0.25rem transparentize(#8385aa, 0.5); } @@ -72,7 +72,7 @@ border-color: #7983ff; color: white; - &:focus { + &.focus-visible:focus { box-shadow: 0 0 0 0.25rem transparentize(#7983ff, 0.5); } } diff --git a/src/js/index.js b/src/js/index.js index 339f7935e..3b0aafbf0 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -1,4 +1,5 @@ // Deps +import 'focus-visible' import 'normalize.css' import 'prismjs' import feather from 'feather-icons' From dd11ac4c6ff87c2d02262109e6e31b028ce05dbe Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 18:01:01 +1000 Subject: [PATCH 112/561] Explicitly add white background to buttons --- src/css/components/tags.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/css/components/tags.scss b/src/css/components/tags.scss index 0a3634a82..f5e322df5 100644 --- a/src/css/components/tags.scss +++ b/src/css/components/tags.scss @@ -50,6 +50,7 @@ cursor: pointer; margin-bottom: 1rem; margin-right: 1rem; + background: white; &:hover { background: #8385aa; From e2a9a83566958b9eabdd4b2ac42903881e9ec312 Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 18:37:47 +1000 Subject: [PATCH 113/561] rebuild docs --- docs/3df57813b7ec2de885ea6075ff46ed46.css | 2 +- docs/3df57813b7ec2de885ea6075ff46ed46.js | 33 ++++++---- docs/index.html | 79 ++++++++++++----------- 3 files changed, 64 insertions(+), 50 deletions(-) diff --git a/docs/3df57813b7ec2de885ea6075ff46ed46.css b/docs/3df57813b7ec2de885ea6075ff46ed46.css index 5d70330fe..f24fa09f6 100644 --- a/docs/3df57813b7ec2de885ea6075ff46ed46.css +++ b/docs/3df57813b7ec2de885ea6075ff46ed46.css @@ -6,4 +6,4 @@ * @author Jonathan Suh @jonsuh * @site https://jonsuh.com/hamburgers * @link https://github.com/jonsuh/hamburgers - */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:#5b67ff;background:linear-gradient(45deg,#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;line-height:2;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;background:#333;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1} \ No newline at end of file + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2);padding-bottom:1rem}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}.sidebar__section{padding:0 .75rem}.sidebar__section-heading{text-transform:capitalize;color:#e3f5ff;margin-bottom:.5rem}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:#5b67ff;background:linear-gradient(45deg,#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet h3 span:not(.snippet__tag){margin-right:.75rem}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;font-size:1.1rem;line-height:2}.snippet h4[data-type]{background:#333;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1}.tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:1rem}.tags,.tags__tag{position:relative}.tags__tag{display:inline-block;top:-1px;font-weight:700;font-size:.75rem;text-transform:uppercase;color:#8385aa;white-space:nowrap;border:1px solid #c8cbf2;border-radius:2px;vertical-align:middle;line-height:2;padding:0 .5rem;margin-right:.5rem;transition:all .1s ease-out;outline:0}.tags__tag.is-large{font-size:.95rem;border-radius:.2rem}.tags__tag.is-large .feather{top:-2px;width:18px;height:18px}.tags__tag .feather{vertical-align:middle;margin-right:.25rem;position:relative;top:-1px;width:14px;height:14px}.tags button.tags__tag{user-select:none;cursor:pointer;margin-bottom:1rem;margin-right:1rem;background:#fff}.tags button.tags__tag:hover{background:#8385aa;border-color:#8385aa;color:#fff}.tags button.tags__tag.focus-visible:focus{box-shadow:0 0 0 .25rem rgba(131,133,170,.5)}.tags button.tags__tag:active{box-shadow:inset 0 .1rem .1rem .1rem rgba(0,0,0,.2);background:#666894;border-color:#666894}.tags button.tags__tag.is-active{background:#7983ff;border-color:#7983ff;color:#fff}.tags button.tags__tag.is-active.focus-visible:focus{box-shadow:0 0 0 .25rem rgba(121,131,255,.5)} \ No newline at end of file diff --git a/docs/3df57813b7ec2de885ea6075ff46ed46.js b/docs/3df57813b7ec2de885ea6075ff46ed46.js index 3bd6a469b..a70f4c86a 100644 --- a/docs/3df57813b7ec2de885ea6075ff46ed46.js +++ b/docs/3df57813b7ec2de885ea6075ff46ed46.js @@ -1,19 +1,28 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],11:[function(require,module,exports) { +},{}],29:[function(require,module,exports) { +var global = (1,eval)("this"); +var e=(0,eval)("this");!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=49)}([function(e,n,i){var t=i(36)("wks"),l=i(15),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return t[e]||(t[e]=o&&r[e]||(o?r:l)("Symbol."+e))}).store=t},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(1),l=i(7),r=i(8),o=i(10),a=i(11),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,f=e&c.S,d=e&c.P,v=e&c.B,g=u?t:f?t[n]||(t[n]={}):(t[n]||{}).prototype,m=u?l:l[n]||(l[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,t):d&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),d&&M[y]!=h&&(M[y]=h)};t.core=l,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,i){var t=i(9),l=i(29),r=i(31),o=Object.defineProperty;n.f=i(5)?Object.defineProperty:function(e,n,i){if(t(e),n=r(n,!0),t(i),l)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){e.exports=!i(12)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n){var i=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=i)},function(e,n,i){var t=i(4),l=i(14);e.exports=i(5)?function(e,n,i){return t.f(e,n,l(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){var t=i(2);e.exports=function(e){if(!t(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var t=i(1),l=i(8),r=i(6),o=i(15)("src"),a=Function.toString,c=(""+a).split("toString");i(7).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||l(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||l(i,o,e[n]?""+e[n]:c.join(String(n)))),e===t?e[n]=i:a?e[n]?e[n]=i:l(e,n,i):(delete e[n],l(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var t=i(32);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(34),l=i(19);e.exports=function(e){return t(l(e))}},function(e,n,i){var t=i(11),l=i(38),r=i(39),o=i(9),a=i(22),c=i(40),y={},p={};(n=e.exports=function(e,n,i,h,x){var s,u,f,d,v=x?function(){return e}:c(e),g=t(i,h,n?2:1),m=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(r(v)){for(s=a(e.length);s>m;m++)if((d=n?g(o(u=e[m])[0],u[1]):g(e[m]))===y||d===p)return d}else for(f=v.call(e);!(u=f.next()).done;)if((d=l(f,g,u.value,n))===y||d===p)return d}).BREAK=y,n.RETURN=p},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,i){"use strict";var t=i(52),l=i(3),r=i(10),o=i(8),a=i(6),c=i(13),y=i(53),p=i(24),h=i(59),x=i(0)("iterator"),s=!([].keys&&"next"in[].keys()),u=function(){return this};e.exports=function(e,n,i,f,d,v,g){y(i,n,f);var m,M,w,b=function(e){if(!s&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},A=n+" Iterator",_="values"==d,z=!1,k=e.prototype,S=k[x]||k["@@iterator"]||d&&k[d],H=!s&&S||b(d),V=d?_?b("entries"):H:void 0,O="Array"==n&&k.entries||S;if(O&&(w=h(O.call(new e)))!==Object.prototype&&w.next&&(p(w,A,!0),t||a(w,x)||o(w,x,u)),_&&S&&"values"!==S.name&&(z=!0,H=function(){return S.call(this)}),t&&!g||!s&&!z&&k[x]||o(k,x,H),c[n]=H,c[A]=u,d)if(m={values:_?H:b("values"),keys:v?H:b("keys"),entries:V},g)for(M in m)M in k||r(k,M,m[M]);else l(l.P+l.F*(s||z),n,m);return m}},function(e,n,i){var t=i(55),l=i(37);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(18),l=Math.min;e.exports=function(e){return e>0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(36)("keys"),l=i(15);e.exports=function(e){return t[e]||(t[e]=l(e))}},function(e,n,i){var t=i(4).f,l=i(6),r=i(0)("toStringTag");e.exports=function(e,n,i){e&&!l(e=i?e:e.prototype,r)&&t(e,r,{configurable:!0,value:n})}},function(e,n,i){var t=i(19);e.exports=function(e){return Object(t(e))}},function(e,n,i){var t=i(35),l=i(0)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(86)),l=o(i(88)),r=o(i(89));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){"use strict";var t=i(51)(!0);i(20)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,i=this._i;return i>=n.length?{value:void 0,done:!0}:(e=t(n,i),this._i+=e.length,{value:e,done:!1})})},function(e,n,i){e.exports=!i(5)&&!i(12)(function(){return 7!=Object.defineProperty(i(30)("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(2),l=i(1).document,r=t(l)&&t(l.createElement);e.exports=function(e){return r?l.createElement(e):{}}},function(e,n,i){var t=i(2);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,i){var t=i(9),l=i(54),r=i(37),o=i(23)("IE_PROTO"),a=function(){},c=function(){var e,n=i(30)("iframe"),t=r.length;for(n.style.display="none",i(58).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Box-sizing reset

Resets the box-model so that widths and heights are not affected by their borders or padding.

CSS

html {
+     30 Seconds of CSS         

30 Seconds of CSS

A curated collection of useful CSS snippets you can understand in 30 seconds or less.

Star

Box-sizing resetlayout

Resets the box-model so that widths and heights are not affected by their borders or padding.

CSS

html {
   box-sizing: border-box;
 }
 *,
@@ -6,26 +6,26 @@
 *::after {
   box-sizing: inherit;
 }
-

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfix

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
+

Demo

Demo

Explanation

  1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
  2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

Browser support

98.2%

✅ No caveats.

Clearfixlayout

Ensures that an element self-clears its children.

Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

HTML

<div class="clearfix">
   <div class="floated">float a</div>
   <div class="floated">float b</div>
   <div class="floated">float c</div>
 </div>
 

CSS

.clearfix::after {
-  content: "";
+  content: '';
   display: block;
   clear: both;
 }
 .floated {
   float: left;
 }
-

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo-element.
  2. content: '' allows the pseudo-element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Constant width to height ratio

Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

HTML

<div class="constant-width-to-height-ratio"></div>
+

Demo

float a
float b
float c

Explanation

  1. .clearfix::after defines a pseudo-element.
  2. content: '' allows the pseudo-element to affect layout.
  3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

Browser support

99+%

✅ No caveats.

Constant width to height ratiolayout

Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

HTML

<div class="constant-width-to-height-ratio"></div>
 

CSS

.constant-width-to-height-ratio {
   background: #333;
   width: 50%;
   padding-top: 50%;
 }
-

Demo

Resize your browser window to see the proportion of the element remain the same.

Explanation

padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

Browser support

99+%

⚠️ padding-top pushes any content within the element to the bottom.

Custom scrollbar

Customizes the scrollbar style for the document and elements with scrollable overflow, on WebKit platforms.

HTML

<div class="custom-scrollbar">
+

Demo

Resize your browser window to see the proportion of the element remain the same.

Explanation

padding-top and padding-bottom can be used as an alternative to height such that the percentage value causes an element's height to become a percentage of its parent's width, i.e. 50% means the height will be 50% of the parent element's width, which means it acts the same as width. This allows its proportion to remain constant.

Browser support

99+%

⚠️ padding-top pushes any content within the element to the bottom.

Custom scrollbarvisual

Customizes the scrollbar style for the document and elements with scrollable overflow, on WebKit platforms.

HTML

<div class="custom-scrollbar">
   <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?</p>
 </div>
 

CSS

/* Document scrollbar */
@@ -33,17 +33,17 @@
   width: 8px;
 }
 ::-webkit-scrollbar-track {
-  box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+  box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
   border-radius: 10px;
 }
 ::-webkit-scrollbar-thumb {
   border-radius: 10px;
-  box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
+  box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
 }
 /* Scrollable element */
 .some-element::webkit-scrollbar {
 }
-

Demo

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

Explanation

  1. ::-webkit-scrollbar targets the whole scrollbar element.
  2. ::-webkit-scrollbar-track targets only the scrollbar track.
  3. ::-webkit-scrollbar-thumb targets the scrollbar thumb.

There are many other pseudo-elements that you can use to style scrollbars. For more info, visit the WebKit Blog

Browser support

87.3%

⚠️ Scrollbar styling doesn't appear to be on any standards track.

Custom text selection

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
+

Demo

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit?

Explanation

  1. ::-webkit-scrollbar targets the whole scrollbar element.
  2. ::-webkit-scrollbar-track targets only the scrollbar track.
  3. ::-webkit-scrollbar-thumb targets the scrollbar thumb.

There are many other pseudo-elements that you can use to style scrollbars. For more info, visit the WebKit Blog

Browser support

87.3%

⚠️ Scrollbar styling doesn't appear to be on any standards track.

Custom text selectionvisual

Changes the styling of text selection.

HTML

<p class="custom-text-selection">Select some of this text.</p>
 

CSS

::selection {
   background: aquamarine;
   color: black;
@@ -52,15 +52,19 @@
   background: deeppink;
   color: white;
 }
-

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

Browser support

84.6%

⚠️ Requires prefixes for full support and is not actually in any specification.

Disable selection

Makes the content unselectable.

HTML

<p>You can select me.</p>
+

Demo

Select some of this text.

Explanation

::selection defines a pseudo selector on an element to style text within it when selected. Note that if you don't combine any other selector your style will be applied at document root level, to any selectable element.

Browser support

84.6%

⚠️ Requires prefixes for full support and is not actually in any specification.

Disable selectioninteractivity

Makes the content unselectable.

HTML

<p>You can select me.</p>
 <p class="unselectable">You can't select me!</p>
 

CSS

.unselectable {
   user-select: none;
 }
-

Demo

You can select me.

You can't select me!

Explanation

user-select: none specifies that the text cannot be selected.

Browser support

86.3%

⚠️ Requires prefixes for full support.

Donut spinner

Creates a donut spinner that can be used to indicate the loading of content.

HTML

<div class="donut"></div>
+

Demo

You can select me.

You can't select me!

Explanation

user-select: none specifies that the text cannot be selected.

Browser support

86.3%

⚠️ Requires prefixes for full support.

Donut spinneranimation

Creates a donut spinner that can be used to indicate the loading of content.

HTML

<div class="donut"></div>
 

CSS

@keyframes donut-spin {
-  0% { transform: rotate(0deg); }
-  100% { transform: rotate(360deg); }
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
 }
 .donut {
   display: inline-block;
@@ -71,7 +75,7 @@
   height: 30px;
   animation: donut-spin 1.2s linear infinite;
 }
-

Demo

Explanation

Use a semi-transparent border for the whole element, except one side that will serve as the loading indicator for the donut. Use animation to rotate the element.

Browser support

94.8%

⚠️ Requires prefixes for full support.

Easing variables

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

HTML

<div class="easing-variables"></div>
+

Demo

Explanation

Use a semi-transparent border for the whole element, except one side that will serve as the loading indicator for the donut. Use animation to rotate the element.

Browser support

94.8%

⚠️ Requires prefixes for full support.

Easing variablesanimation

Variables that can be reused for transition-timing-function properties, more powerful than the built-in ease, ease-in, ease-out and ease-in-out.

HTML

<div class="easing-variables"></div>
 

CSS

:root {
   --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
   --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
@@ -101,14 +105,14 @@
 .easing-variables:hover {
   transform: rotate(45deg);
 }
-

Demo

Hover

Explanation

The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

Browser support

87.2%

✅ No caveats.

Etched text

Creates an effect where text appears to be "etched" or engraved into the background.

HTML

<p class="etched-text">I appear etched into the background.</p>
+

Demo

Hover

Explanation

The variables are defined globally within the :root CSS pseudo-class which matches the root element of a tree representing the document. In HTML, :root represents the <html> element and is identical to the selector html, except that its specificity is higher.

Browser support

87.2%

✅ No caveats.

Etched textvisual

Creates an effect where text appears to be "etched" or engraved into the background.

HTML

<p class="etched-text">I appear etched into the background.</p>
 

CSS

.etched-text {
   text-shadow: 0 2px white;
   font-size: 1.5rem;
   font-weight: bold;
   color: #b8bec5;
 }
-

Demo

I appear etched into the background.

Explanation

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

The background must be darker than the shadow for the effect to work.

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

Browser support

97.9%

✅ No caveats.

Evenly distributed children

Evenly distributes child elements within a parent element.

HTML

<div class="evenly-distributed-children">
+

Demo

I appear etched into the background.

Explanation

text-shadow: 0 2px white creates a white shadow offset 0px horizontally and 2px vertically from the origin position.

The background must be darker than the shadow for the effect to work.

The text color should be slightly faded to make it look like it's engraved/carved out of the background.

Browser support

97.9%

✅ No caveats.

Evenly distributed childrenlayout

Evenly distributes child elements within a parent element.

HTML

<div class="evenly-distributed-children">
   <p>Item1</p>
   <p>Item2</p>
   <p>Item3</p>
@@ -117,13 +121,13 @@
   display: flex;
   justify-content: space-between;
 }
-

Demo

Item1

Item2

Item3

Explanation

  1. display: flex enables flexbox.
  2. justify-content: space-between evenly distributes child elements horizontally. The first item is positioned at the left edge, while the last item is positioned at the right edge.

Alternatively, use justify-content: space-around to distribute the children with space around them, rather than between them.

Browser support

97.8%

⚠️ Needs prefixes for full support.

Gradient text

Gives text a gradient color.

HTML

<p class="gradient-text">Gradient text</p>
+

Demo

Item1

Item2

Item3

Explanation

  1. display: flex enables flexbox.
  2. justify-content: space-between evenly distributes child elements horizontally. The first item is positioned at the left edge, while the last item is positioned at the right edge.

Alternatively, use justify-content: space-around to distribute the children with space around them, rather than between them.

Browser support

97.8%

⚠️ Needs prefixes for full support.

Gradient textvisual

Gives text a gradient color.

HTML

<p class="gradient-text">Gradient text</p>
 

CSS

.gradient-text {
   background: -webkit-linear-gradient(pink, red);
   -webkit-text-fill-color: transparent;
   -webkit-background-clip: text;
 }
-

Demo

Gradient text

Explanation

  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. webkit-text-fill-color: transparent fills the text with a transparent color.
  3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.

Browser support

90.7%

⚠️ Uses non-standard properties.

Hairline border

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

HTML

<div class="hairline-border">text</div>
+

Demo

Gradient text

Explanation

  1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
  2. webkit-text-fill-color: transparent fills the text with a transparent color.
  3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.

Browser support

90.7%

⚠️ Uses non-standard properties.

Hairline bordervisual

Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

HTML

<div class="hairline-border">text</div>
 

CSS

.hairline-border {
   box-shadow: 0 0 0 1px;
 }
@@ -142,7 +146,7 @@
     box-shadow: 0 0 0 0.25px;
   }
 }
-

Demo

Text with a hairline border around it.

Explanation

  1. box-shadow, when only using spread, adds a pseudo-border which can use subpixels*.
  2. Use @media (min-resolution: ...) to check the device pixel ratio (1dppx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.

Browser Support

95.0%

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.


*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

Horizontal and vertical centering

Horizontally and vertically centers a child element within a parent element.

HTML

<div class="horizontal-and-vertical-centering">
+

Demo

Text with a hairline border around it.

Explanation

  1. box-shadow, when only using spread, adds a pseudo-border which can use subpixels*.
  2. Use @media (min-resolution: ...) to check the device pixel ratio (1dppx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.

Browser Support

95.0%

⚠️ Needs alternate syntax and JavaScript user agent checking for full support.


*Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

Horizontal and vertical centeringlayout

Horizontally and vertically centers a child element within a parent element.

HTML

<div class="horizontal-and-vertical-centering">
   <div class="child"></div>
 </div>
 

CSS

.horizontal-and-vertical-centering {
@@ -150,7 +154,7 @@
   justify-content: center;
   align-items: center;
 }
-

Demo

Centered content.

Explanation

  1. display: flex enables flexbox.
  2. justify-content: center centers the child horizontally.
  3. align-items: center centers the child vertically.

Browser support

97.8%

⚠️ Needs prefixes for full support.

Hover underline animation

Creates an animated underline effect when the text is hovered over.

Credit: https://flatuicolors.com/

HTML

<p class="hover-underline-animation">Hover this text to see the effect!</p>
+

Demo

Centered content.

Explanation

  1. display: flex enables flexbox.
  2. justify-content: center centers the child horizontally.
  3. align-items: center centers the child vertically.

Browser support

97.8%

⚠️ Needs prefixes for full support.

Hover underline animationanimation

Creates an animated underline effect when the text is hovered over.

Credit: https://flatuicolors.com/

HTML

<p class="hover-underline-animation">Hover this text to see the effect!</p>
 

CSS

.hover-underline-animation {
   display: inline-block;
   position: relative;
@@ -172,7 +176,7 @@
   transform: scaleX(1);
   transform-origin: bottom left;
 }
-

Demo

Hover this text to see the effect!

Explanation

  1. display: inline-block makes the block p an inline-block to prevent the underline from spanning the entire parent width rather than just the content (text).
  2. position: relative on the element establishes a Cartesian positioning context for pseudo-elements.
  3. ::after defines a pseudo-element.
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 100% ensures the pseudo-element spans the entire width of the text block.
  6. transform: scaleX(0) initially scales the pseudo element to 0 so it has no width and is not visible.
  7. bottom: 0 and left: 0 position it to the bottom left of the block.
  8. transition: transform 0.25s ease-out means changes to transform will be transitioned over 0.25 seconds with an ease-out timing function.
  9. transform-origin: bottom right means the transform anchor point is positioned at the bottom right of the block.
  10. :hover::after then uses scaleX(1) to transition the width to 100%, then changes the transform-origin to bottom left so that the anchor point is reversed, allowing it transition out in the other direction when hovered off.

Browser support

94.9%

✅ No caveats.

Mouse cursor gradient tracking

A hover effect where the gradient follows the mouse cursor.

Credit: Tobias Reich

HTML

<button class="mouse-cursor-gradient-tracking">
+

Demo

Hover this text to see the effect!

Explanation

  1. display: inline-block makes the block p an inline-block to prevent the underline from spanning the entire parent width rather than just the content (text).
  2. position: relative on the element establishes a Cartesian positioning context for pseudo-elements.
  3. ::after defines a pseudo-element.
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 100% ensures the pseudo-element spans the entire width of the text block.
  6. transform: scaleX(0) initially scales the pseudo element to 0 so it has no width and is not visible.
  7. bottom: 0 and left: 0 position it to the bottom left of the block.
  8. transition: transform 0.25s ease-out means changes to transform will be transitioned over 0.25 seconds with an ease-out timing function.
  9. transform-origin: bottom right means the transform anchor point is positioned at the bottom right of the block.
  10. :hover::after then uses scaleX(1) to transition the width to 100%, then changes the transform-origin to bottom left so that the anchor point is reversed, allowing it transition out in the other direction when hovered off.

Browser support

94.9%

✅ No caveats.

Mouse cursor gradient trackingvisualinteractivity

A hover effect where the gradient follows the mouse cursor.

Credit: Tobias Reich

HTML

<button class="mouse-cursor-gradient-tracking">
   <span>Hover me</span>
 </button>
 

CSS

.mouse-cursor-gradient-tracking {
@@ -199,21 +203,21 @@
   height: var(--size);
   background: radial-gradient(circle closest-side, pink, transparent);
   transform: translate(-50%, -50%);
-  transition: width .2s ease, height .2s ease;
+  transition: width 0.2s ease, height 0.2s ease;
 }
 .mouse-cursor-gradient-tracking:hover::before {
   --size: 200px;
 }
 

JavaScript

var btn = document.querySelector('.mouse-cursor-gradient-tracking')
-btn.onmousemove = function (e) {
+btn.onmousemove = function(e) {
   var x = e.pageX - btn.offsetLeft
   var y = e.pageY - btn.offsetTop
   btn.style.setProperty('--x', x + 'px')
   btn.style.setProperty('--y', y + 'px')
 }
-

Demo

Explanation

TODO

Note!

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
+

Demo

Explanation

TODO

Note!

If the element's parent has a positioning context (position: relative), you will need to subtract its offsets as well.

var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
 var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
-

Browser support

87.2%

Requires JavaScript
⚠️ Requires JavaScript.

Overflow scroll gradient

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

HTML

<div class="overflow-scroll-gradient">
+

Browser support

87.2%

Requires JavaScript
⚠️ Requires JavaScript.

Overflow scroll gradientvisual

Adds a fading gradient to an overflowing element to better indicate there is more content to be scrolled.

HTML

<div class="overflow-scroll-gradient">
   <div class="overflow-scroll-gradient__scroller">
     Content to be scrolled
   </div>
@@ -227,7 +231,10 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   bottom: 0;
   width: 300px;
   height: 25px;
-  background: linear-gradient(rgba(255, 255, 255, 0.001), white); /* transparent keyword is broken in Safari */
+  background: linear-gradient(
+    rgba(255, 255, 255, 0.001),
+    white
+  ); /* transparent keyword is broken in Safari */
   pointer-events: none;
 }
 .overflow-scroll-gradient__scroller {
@@ -239,7 +246,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   line-height: 1.2;
   text-align: center;
 }
-

Demo

Content to be scrolled

Explanation

  1. position: relative on the parent establishes a Cartesian positioning context for pseudo-elements.
  2. ::after defines a pseudo element.
  3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  6. height: 25px is the height of the fading gradient pseudo-element, which should be kept relatively small.
  7. bottom: 0 positions the pseudo-element at the bottom of the parent.
  8. pointer-events: none specifies that the pseudo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

Browser support

94.8%

✅ No caveats.

Popout menu

Reveals an interactive popout menu on hover.

HTML

<div class="reference">
+

Demo

Content to be scrolled

Explanation

  1. position: relative on the parent establishes a Cartesian positioning context for pseudo-elements.
  2. ::after defines a pseudo element.
  3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  6. height: 25px is the height of the fading gradient pseudo-element, which should be kept relatively small.
  7. bottom: 0 positions the pseudo-element at the bottom of the parent.
  8. pointer-events: none specifies that the pseudo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

Browser support

94.8%

✅ No caveats.

Popout menuinteractivity

Reveals an interactive popout menu on hover.

HTML

<div class="reference">
   <div class="popout-menu">
     Popout menu
   </div>
@@ -255,15 +262,12 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
 .reference:hover > .popout-menu {
   visibility: visible;
 }
-

Demo

Popout menu

Explanation

  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  3. left: 100% moves the the popout menu 100% of its parent's width from the left.
  4. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  5. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.

Browser support

99+%

✅ No caveats.

Pretty text underline

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
+

Demo

Popout menu

Explanation

  1. position: relative on the reference parent establishes a Cartesian positioning context for its child.
  2. position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  3. left: 100% moves the the popout menu 100% of its parent's width from the left.
  4. visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  5. .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.

Browser support

99+%

✅ No caveats.

Pretty text underlinevisual

A nicer alternative to text-decoration: underline where descenders do not clip the underline. Natively implemented as text-decoration-skip-ink: auto but it has less control over the underline.

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>
 

CSS

.pretty-text-underline {
   font-family: Arial, sans-serif;
   display: inline;
   font-size: 18px;
-  text-shadow: 1px 1px 0 #f5f6f9,
-    -1px 1px 0 #f5f6f9,
-    -1px -1px 0 #f5f6f9,
-    1px -1px 0 #f5f6f9;
+  text-shadow: 1px 1px 0 #f5f6f9, -1px 1px 0 #f5f6f9, -1px -1px 0 #f5f6f9, 1px -1px 0 #f5f6f9;
   background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
   background-position: 0 0.98em;
   background-repeat: repeat-x;
@@ -277,7 +281,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   background-color: rgba(0, 150, 255, 0.3);
   text-shadow: none;
 }
-

Demo

Pretty text underline without clipping descending letters.

Explanation

  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
  2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

Browser support

94.8%

⚠️ The distance of the underline from the text depends on the internal metrics of a font, so you must ensure everyone sees the same font (i.e. no system fonts which will change based on the OS).

Shape separator

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

HTML

<div class="shape-separator"></div>
+

Demo

Pretty text underline without clipping descending letters.

Explanation

  1. text-shadow: ... has 4 values with offsets that cover a 4x4 px area to ensure the underline has a "thick" shadow that covers the line where descenders clip it. Use a color that matches the background. For a larger font, use a larger px size.
  2. background-image: linear-gradient(...) creates a 90deg gradient with the current text color (currentColor).
  3. The background-* properties size the gradient as 1x1px at the bottom and repeats it along the x-axis.
  4. The ::selection pseudo selector ensures the text shadow does not interfere with text selection.

Browser support

94.8%

⚠️ The distance of the underline from the text depends on the internal metrics of a font, so you must ensure everyone sees the same font (i.e. no system fonts which will change based on the OS).

Shape separatorvisual

Uses an SVG shape to separate two different blocks to create more a interesting visual appearance compared to standard horizontal separation.

HTML

<div class="shape-separator"></div>
 

CSS

.shape-separator {
   position: relative;
   height: 48px;
@@ -290,11 +294,12 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   height: 24px;
   bottom: 0;
 }
-

Demo

Explanation

  1. position: relative on the element establishes a Cartesian positioning context for pseudo elements.
  2. ::after defines a pseudo element.
  3. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the pseudo element, which repeats by default. It must be the same color as the block that is being separated.
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 100% ensures the element stretches the entire width of its parent.
  6. height: 24px is the same height as the shape.
  7. bottom: 0 positions the pseudo element at the bottom of the parent.

Browser support

98.0%

✅ No caveats.

System font stack

Uses the native font of the operating system to get close to a native app feel.

HTML

<p class="system-font-stack">This text uses the system font.</p>
+

Demo

Explanation

  1. position: relative on the element establishes a Cartesian positioning context for pseudo elements.
  2. ::after defines a pseudo element.
  3. background-image: url(...) adds the SVG shape (a 24x24 triangle in base64 format) as the background image of the pseudo element, which repeats by default. It must be the same color as the block that is being separated.
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 100% ensures the element stretches the entire width of its parent.
  6. height: 24px is the same height as the shape.
  7. bottom: 0 positions the pseudo element at the bottom of the parent.

Browser support

98.0%

✅ No caveats.

System font stackvisual

Uses the native font of the operating system to get close to a native app feel.

HTML

<p class="system-font-stack">This text uses the system font.</p>
 

CSS

.system-font-stack {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu,
+    Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif;
 }
-

Demo

This text uses the system font.

Explanation

The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  3. Segoe UI is used on Windows 10
  4. Roboto is used on Android
  5. Oxygen-Sans is used on GNU+Linux
  6. Ubuntu is used on Linux
  7. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  8. Arial is a font widely supported by all operating systems
  9. sans-serif is the fallback sans-serif font if none of the other fonts are supported

Browser support

99+%

✅ No caveats.

Triangle

Creates a triangle shape with pure CSS.

HTML

<div class="triangle"></div>
+

Demo

This text uses the system font.

Explanation

The browser looks for each successive font, preferring the first one if possible, and falls back to the next if it cannot find the font (on the system or defined in CSS).

  1. -apple-system is San Francisco, used on iOS and macOS (not Chrome however)
  2. BlinkMacSystemFont is San Francisco, used on macOS Chrome
  3. Segoe UI is used on Windows 10
  4. Roboto is used on Android
  5. Oxygen-Sans is used on GNU+Linux
  6. Ubuntu is used on Linux
  7. "Helvetica Neue" and Helvetica is used on macOS 10.10 and below (wrapped in quotes because it has a space)
  8. Arial is a font widely supported by all operating systems
  9. sans-serif is the fallback sans-serif font if none of the other fonts are supported

Browser support

99+%

✅ No caveats.

Trianglevisual

Creates a triangle shape with pure CSS.

HTML

<div class="triangle"></div>
 

CSS

.triangle {
   width: 0;
   height: 0;
@@ -302,11 +307,11 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   border-left: 20px solid transparent;
   border-right: 20px solid transparent;
 }
-

Demo

Explanation

View this link for a detailed explanation.

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

Experiment with the px values to change the proportion of the triangle.

Browser support

99+%

✅ No caveats.

Truncate text

If the text is longer than one line, it will be truncated and end with an ellipsis .

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
+

Demo

Explanation

View this link for a detailed explanation.

The color of the border is the color of the triangle. The side the triangle tip points corresponds to the opposite border-* property. For example, a color on border-top means the arrow points downward.

Experiment with the px values to change the proportion of the triangle.

Browser support

99+%

✅ No caveats.

Truncate textlayout

If the text is longer than one line, it will be truncated and end with an ellipsis .

HTML

<p class="truncate-text">If I exceed one line's width, I will be truncated.</p>
 

CSS

.truncate-text {
   overflow: hidden;
   white-space: nowrap;
   text-overflow: ellipsis;
   width: 200px;
 }
-

Demo

This text will be truncated if it exceeds 200px in width.

Explanation

  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. white-space: nowrap prevents the text from exceeding one line in height.
  3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  4. width: 200px; ensures the element has a dimension, to know when to get ellipsis

Browser support

98.1%

⚠️ Only works for single line elements.

\ No newline at end of file +

Demo

This text will be truncated if it exceeds 200px in width.

Explanation

  1. overflow: hidden prevents the text from overflowing its dimensions (for a block, 100% width and auto height).
  2. white-space: nowrap prevents the text from exceeding one line in height.
  3. text-overflow: ellipsis makes it so that if the text exceeds its dimensions, it will end with an ellipsis.
  4. width: 200px; ensures the element has a dimension, to know when to get ellipsis

Browser support

98.1%

⚠️ Only works for single line elements.

\ No newline at end of file From 7250a9adfa6fb5a6093201140e88d0ac4c4718f8 Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 18:40:37 +1000 Subject: [PATCH 114/561] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 89e30332b..b96a810ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,3 +42,5 @@ Brief description If no link is provided, it defaults to 99+%. --> * https://caniuse.com/#feat=some-feature + + From 7f2638cd38f600e091fb929d491149e85d05078a Mon Sep 17 00:00:00 2001 From: atomiks Date: Sat, 3 Mar 2018 19:03:38 +1000 Subject: [PATCH 115/561] fix: overflow on 320px screens --- docs/3df57813b7ec2de885ea6075ff46ed46.js | 26 ++++++++++++------------ docs/index.html | 10 ++++----- index.html | 16 +++++++-------- snippets/overflow-scroll-gradient.md | 16 +++++++-------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/3df57813b7ec2de885ea6075ff46ed46.js b/docs/3df57813b7ec2de885ea6075ff46ed46.js index a70f4c86a..cb38ba33d 100644 --- a/docs/3df57813b7ec2de885ea6075ff46ed46.js +++ b/docs/3df57813b7ec2de885ea6075ff46ed46.js @@ -1,28 +1,28 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],29:[function(require,module,exports) { +},{}],20:[function(require,module,exports) { var global = (1,eval)("this"); var e=(0,eval)("this");!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=49)}([function(e,n,i){var t=i(36)("wks"),l=i(15),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return t[e]||(t[e]=o&&r[e]||(o?r:l)("Symbol."+e))}).store=t},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(1),l=i(7),r=i(8),o=i(10),a=i(11),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,f=e&c.S,d=e&c.P,v=e&c.B,g=u?t:f?t[n]||(t[n]={}):(t[n]||{}).prototype,m=u?l:l[n]||(l[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,t):d&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),d&&M[y]!=h&&(M[y]=h)};t.core=l,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,i){var t=i(9),l=i(29),r=i(31),o=Object.defineProperty;n.f=i(5)?Object.defineProperty:function(e,n,i){if(t(e),n=r(n,!0),t(i),l)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){e.exports=!i(12)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n){var i=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=i)},function(e,n,i){var t=i(4),l=i(14);e.exports=i(5)?function(e,n,i){return t.f(e,n,l(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){var t=i(2);e.exports=function(e){if(!t(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var t=i(1),l=i(8),r=i(6),o=i(15)("src"),a=Function.toString,c=(""+a).split("toString");i(7).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||l(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||l(i,o,e[n]?""+e[n]:c.join(String(n)))),e===t?e[n]=i:a?e[n]?e[n]=i:l(e,n,i):(delete e[n],l(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var t=i(32);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(34),l=i(19);e.exports=function(e){return t(l(e))}},function(e,n,i){var t=i(11),l=i(38),r=i(39),o=i(9),a=i(22),c=i(40),y={},p={};(n=e.exports=function(e,n,i,h,x){var s,u,f,d,v=x?function(){return e}:c(e),g=t(i,h,n?2:1),m=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(r(v)){for(s=a(e.length);s>m;m++)if((d=n?g(o(u=e[m])[0],u[1]):g(e[m]))===y||d===p)return d}else for(f=v.call(e);!(u=f.next()).done;)if((d=l(f,g,u.value,n))===y||d===p)return d}).BREAK=y,n.RETURN=p},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,i){"use strict";var t=i(52),l=i(3),r=i(10),o=i(8),a=i(6),c=i(13),y=i(53),p=i(24),h=i(59),x=i(0)("iterator"),s=!([].keys&&"next"in[].keys()),u=function(){return this};e.exports=function(e,n,i,f,d,v,g){y(i,n,f);var m,M,w,b=function(e){if(!s&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},A=n+" Iterator",_="values"==d,z=!1,k=e.prototype,S=k[x]||k["@@iterator"]||d&&k[d],H=!s&&S||b(d),V=d?_?b("entries"):H:void 0,O="Array"==n&&k.entries||S;if(O&&(w=h(O.call(new e)))!==Object.prototype&&w.next&&(p(w,A,!0),t||a(w,x)||o(w,x,u)),_&&S&&"values"!==S.name&&(z=!0,H=function(){return S.call(this)}),t&&!g||!s&&!z&&k[x]||o(k,x,H),c[n]=H,c[A]=u,d)if(m={values:_?H:b("values"),keys:v?H:b("keys"),entries:V},g)for(M in m)M in k||r(k,M,m[M]);else l(l.P+l.F*(s||z),n,m);return m}},function(e,n,i){var t=i(55),l=i(37);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(18),l=Math.min;e.exports=function(e){return e>0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(36)("keys"),l=i(15);e.exports=function(e){return t[e]||(t[e]=l(e))}},function(e,n,i){var t=i(4).f,l=i(6),r=i(0)("toStringTag");e.exports=function(e,n,i){e&&!l(e=i?e:e.prototype,r)&&t(e,r,{configurable:!0,value:n})}},function(e,n,i){var t=i(19);e.exports=function(e){return Object(t(e))}},function(e,n,i){var t=i(35),l=i(0)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(86)),l=o(i(88)),r=o(i(89));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){"use strict";var t=i(51)(!0);i(20)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,i=this._i;return i>=n.length?{value:void 0,done:!0}:(e=t(n,i),this._i+=e.length,{value:e,done:!1})})},function(e,n,i){e.exports=!i(5)&&!i(12)(function(){return 7!=Object.defineProperty(i(30)("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(2),l=i(1).document,r=t(l)&&t(l.createElement);e.exports=function(e){return r?l.createElement(e):{}}},function(e,n,i){var t=i(2);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,i){var t=i(9),l=i(54),r=i(37),o=i(23)("IE_PROTO"),a=function(){},c=function(){var e,n=i(30)("iframe"),t=r.length;for(n.style.display="none",i(58).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("

Explanation

  1. position: relative on the parent establishes a Cartesian positioning context for pseudo-elements.
  2. ::after defines a pseudo element.
  3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  6. height: 25px is the height of the fading gradient pseudo-element, which should be kept relatively small.
  7. bottom: 0 positions the pseudo-element at the bottom of the parent.
  8. pointer-events: none specifies that the pseudo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

Browser support

94.8%

✅ No caveats.

Popout menuinteractivity

Reveals an interactive popout menu on hover.

HTML

<div class="reference">
+

Demo

Content to be scrolled

Explanation

  1. position: relative on the parent establishes a Cartesian positioning context for pseudo-elements.
  2. ::after defines a pseudo element.
  3. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  4. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  5. width: 240px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  6. height: 25px is the height of the fading gradient pseudo-element, which should be kept relatively small.
  7. bottom: 0 positions the pseudo-element at the bottom of the parent.
  8. pointer-events: none specifies that the pseudo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.

Browser support

94.8%

✅ No caveats.

Popout menuinteractivity

Reveals an interactive popout menu on hover.

HTML

<div class="reference">
   <div class="popout-menu">
     Popout menu
   </div>
diff --git a/index.html b/index.html
index f9265c8b8..621a544c0 100644
--- a/index.html
+++ b/index.html
@@ -1025,7 +1025,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
   content: '';
   position: absolute;
   bottom: 0;
-  width: 300px;
+  width: 240px;
   height: 25px;
   background: linear-gradient(
     rgba(255, 255, 255, 0.001),
@@ -1036,8 +1036,8 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
 .overflow-scroll-gradient__scroller {
   overflow-y: scroll;
   background: white;
-  width: 300px;
-  height: 250px;
+  width: 240px;
+  height: 200px;
   padding: 15px 0;
   line-height: 1.2;
   text-align: center;
@@ -1059,7 +1059,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
                 content: '';
                 background: linear-gradient(rgba(255, 255, 255, 0.001), white);
                 position: absolute;
-                width: 300px;
+                width: 240px;
                 height: 25px;
                 bottom: 0;
                 pointer-events: none;
@@ -1067,15 +1067,15 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
               .snippet-demo__overflow-scroll-gradient__scroller {
                 overflow-y: scroll;
                 background: white;
-                width: 300px;
-                height: 250px;
+                width: 240px;
+                height: 200px;
                 padding: 15px 0;
                 line-height: 1.2;
                 text-align: center;
               }
             
             
             

Explanation

    @@ -1083,7 +1083,7 @@ var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
  1. ::after defines a pseudo element.
  2. background-image: linear-gradient(...) adds a linear gradient that fades from transparent to white (top to bottom).
  3. position: absolute takes the pseudo element out of the flow of the document and positions it in relation to the parent.
  4. -
  5. width: 300px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  6. +
  7. width: 240px matches the size of the scrolling element (which is a child of the parent that has the pseudo element).
  8. height: 25px is the height of the fading gradient pseudo-element, which should be kept relatively small.
  9. bottom: 0 positions the pseudo-element at the bottom of the parent.
  10. pointer-events: none specifies that the pseudo-element cannot be a target of mouse events, allowing text behind it to still be selectable/interactive.
  11. diff --git a/snippets/overflow-scroll-gradient.md b/snippets/overflow-scroll-gradient.md index c0ffde89f..94dd4b776 100644 --- a/snippets/overflow-scroll-gradient.md +++ b/snippets/overflow-scroll-gradient.md @@ -22,7 +22,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor content: ''; position: absolute; bottom: 0; - width: 300px; + width: 240px; height: 25px; background: linear-gradient( rgba(255, 255, 255, 0.001), @@ -33,8 +33,8 @@ Adds a fading gradient to an overflowing element to better indicate there is mor .overflow-scroll-gradient__scroller { overflow-y: scroll; background: white; - width: 300px; - height: 250px; + width: 240px; + height: 200px; padding: 15px 0; line-height: 1.2; text-align: center; @@ -59,7 +59,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor content: ''; background: linear-gradient(rgba(255, 255, 255, 0.001), white); position: absolute; - width: 300px; + width: 240px; height: 25px; bottom: 0; pointer-events: none; @@ -67,8 +67,8 @@ Adds a fading gradient to an overflowing element to better indicate there is mor .snippet-demo__overflow-scroll-gradient__scroller { overflow-y: scroll; background: white; - width: 300px; - height: 250px; + width: 240px; + height: 200px; padding: 15px 0; line-height: 1.2; text-align: center; @@ -76,7 +76,7 @@ Adds a fading gradient to an overflowing element to better indicate there is mor #### Explanation @@ -86,7 +86,7 @@ document.querySelector('.snippet-demo__overflow-scroll-gradient__scroller').inne 3. `background-image: linear-gradient(...)` adds a linear gradient that fades from transparent to white (top to bottom). 4. `position: absolute` takes the pseudo element out of the flow of the document and positions it in relation to the parent. -5. `width: 300px` matches the size of the scrolling element (which is a child of the parent that has +5. `width: 240px` matches the size of the scrolling element (which is a child of the parent that has the pseudo element). 6. `height: 25px` is the height of the fading gradient pseudo-element, which should be kept relatively small. 7. `bottom: 0` positions the pseudo-element at the bottom of the parent. From 82252a592461eb4ce1fa8de84b32d6d56330c6ad Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 3 Mar 2018 11:19:44 +0200 Subject: [PATCH 116/561] Resolves #41 --- snippets/disable-selection.md | 1 + 1 file changed, 1 insertion(+) diff --git a/snippets/disable-selection.md b/snippets/disable-selection.md index 0ad8481e1..5d3094414 100644 --- a/snippets/disable-selection.md +++ b/snippets/disable-selection.md @@ -37,6 +37,7 @@ Makes the content unselectable. #### Browser support ⚠️ Requires prefixes for full support. +⚠️ This is not a secure method to prevent users from copying content. * https://caniuse.com/#feat=user-select-none From d13e47ae99356b56d242325fe62a0cd3ccc26f46 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 3 Mar 2018 11:37:49 +0200 Subject: [PATCH 117/561] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..4831c6b97 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at cc.glows@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ From 3344d294b1d0409c19f17ba1146d8e1e9ec376a9 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 3 Mar 2018 11:51:17 +0200 Subject: [PATCH 118/561] Resolves #11 --- snippets/clearfix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/clearfix.md b/snippets/clearfix.md index 657679a99..82ee5d7b7 100644 --- a/snippets/clearfix.md +++ b/snippets/clearfix.md @@ -59,6 +59,6 @@ Ensures that an element self-clears its children. #### Browser support -✅ No caveats. +⚠️ For this snippet to work properly you need to ensure that there are no non-floating children in the container and that there are no tall floats before the clearfixed container but in the same formatting context (e.g. floated columns). From 57cb9d24a33a9a4013dac78e4681e441c9b1e9e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Sat, 3 Mar 2018 10:57:27 +0100 Subject: [PATCH 119/561] update flexbox --- ...-vertical-centering.md => flexbox-centering.md} | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename snippets/{horizontal-and-vertical-centering.md => flexbox-centering.md} (67%) diff --git a/snippets/horizontal-and-vertical-centering.md b/snippets/flexbox-centering.md similarity index 67% rename from snippets/horizontal-and-vertical-centering.md rename to snippets/flexbox-centering.md index 0bb259d7a..19074bb0b 100644 --- a/snippets/horizontal-and-vertical-centering.md +++ b/snippets/flexbox-centering.md @@ -1,11 +1,11 @@ -### Horizontal and vertical centering +### Flexbox centering -Horizontally and vertically centers a child element within a parent element. +Horizontally and vertically centers a child element within a parent element using `flexbox`. #### HTML ```html -
    +
    ``` @@ -13,7 +13,7 @@ Horizontally and vertically centers a child element within a parent element. #### CSS ```css -.horizontal-and-vertical-centering { +.flexbox-centering { display: flex; justify-content: center; align-items: center; @@ -23,13 +23,13 @@ Horizontally and vertically centers a child element within a parent element. #### Demo
    -
    -

    Centered content.

    +
    +

    Centered content.

    +

    Explanation

    +
      +
    1. display: flex enables flexbox.
    2. +
    3. justify-content: center centers the child horizontally.
    4. +
    5. align-items: center centers the child vertically.
    6. +
    +

    Browser support

    +
    +
    + 97.8% +
    +
    +

    ⚠️ Needs prefixes for full support.

    + + + +

    Gradient textvisual

    Gives text a gradient color.

    @@ -747,54 +796,6 @@ in any specification.

    -
    -

    Horizontal and vertical centeringlayout

    -

    Horizontally and vertically centers a child element within a parent element.

    -

    HTML

    <div class="horizontal-and-vertical-centering">
    -  <div class="child"></div>
    -</div>
    -
    -

    CSS

    .horizontal-and-vertical-centering {
    -  display: flex;
    -  justify-content: center;
    -  align-items: center;
    -}
    -
    -

    Demo

    -
    -
    -

    Centered content.

    -
    -
    - -

    Explanation

    -
      -
    1. display: flex enables flexbox.
    2. -
    3. justify-content: center centers the child horizontally.
    4. -
    5. align-items: center centers the child vertically.
    6. -
    -

    Browser support

    -
    -
    - 97.8% -
    -
    -

    ⚠️ Needs prefixes for full support.

    - - - -

    Hover underline animationanimation

    Creates an animated underline effect when the text is hovered over.

    From 7ce71b08005f4cec6c90217c598d2d4e1b840b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Sat, 3 Mar 2018 11:02:17 +0100 Subject: [PATCH 121/561] fix build Last time it had few errors. Accidentaly commited. --- docs/51a402ced656eeea80dcb3b08a0ac425.png | Bin 0 -> 35911 bytes docs/6c831ee080ce0f905632cb113dfa17d9.css | 9 +++++++ docs/6c831ee080ce0f905632cb113dfa17d9.js | 28 ++++++++++++++++++++++ docs/e4fdfce991c164037b4cd78667aa2afd.png | Bin 0 -> 2628 bytes docs/index.html | 28 +++++++++++----------- 5 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 docs/51a402ced656eeea80dcb3b08a0ac425.png create mode 100644 docs/6c831ee080ce0f905632cb113dfa17d9.css create mode 100644 docs/6c831ee080ce0f905632cb113dfa17d9.js create mode 100644 docs/e4fdfce991c164037b4cd78667aa2afd.png diff --git a/docs/51a402ced656eeea80dcb3b08a0ac425.png b/docs/51a402ced656eeea80dcb3b08a0ac425.png new file mode 100644 index 0000000000000000000000000000000000000000..f27b9309101bac82fef1228e0d1d2cf6de3b3a12 GIT binary patch literal 35911 zcmb?>=|5Ee`~R64`@SS(8B$rw(q?BSvJ^#8D#b|BqQ+MCIb&CdC{!3FsdoyIC1u90 z?35)j_9Zf7oiWQf-}(IhhTn~I$;xHbv`pMb+)MHMs>kJgm>aaXlsq$I8?8R8TJ(|xo{ z1q(3sv9<9Q3U}YVHlc^$c6&62FSnh`;ghx!KEGR@fz`iaW(33r?0Tc}pTYQ9;cay4 zX)9I338_oC3`cQ7<0bRdhOEE6zzv~{r3pq$1yf|xK>M#`NvkW@skK@a5I;7BW&y1@ zVL~)Y!{}{8cBnwqQD8_AYn?ufp6Q~Pa^!xh(}V=cS4}=i|L-$0vlAgr-oq)Z0*MN@ z?ujd6zj%jJn{?`fA}!Is6qfeGe>thDyND9v$Eu1V!$=^;@RiA1)UMmJ?QK%x#00g$ zM6$d`i*$~0kYaI}pu01%C?{>C{o8|!Myq>v?nW!oEhKiw*(=wZYPB2)9^!qRW6tqD zlVsp1|EXNq!9ZRTx95;Iv(|3sr^m7Uq3Aki!GUh%4u=?+qj0-baDnt1Wze+y{E}tyuR&oOM7htKaXdocpX{`5NfqMcOhj% zPnqbI^hFU!OT>M7`ZvJ(+ST|pH1mp;bl~Hg??x@qsMSL!BO^!s5n&4>{2KJC7YMqS zkfp;WZQMOcL;<}_QQjzX^(7S|LS=n%km&yHthVp@?M|tOH z!%elPDV4k0@-Hq8n_Mn-HQA~;*`|8--*D7^q;FAkB0;`lCVZNa4d{T6Gh{cH6bz^y ztSP6p?o1OT9Q?9vfK+@Nc#zLS0()3sFB@=dqpFT8&|ZefD{oZZJ`*7}^ymGV2*ota z>?&S)>y|`KbZw0P`wpSPkLMIVf9M`WAJo^2XxdObI!(rm5{1*AAGJY07k!+W5PMh0 zUs&#gl`*ZV6s`wRPiT*k$r0#my*?sQ@(nI&y^^IMFvpA9|@OE>!p>wHLFT zC!C&t?rDOidN)q{lSHz}-y4*Bt~+c5j_>G`4gj(bY6ziXHSTIXG$tN0C5j#r5=)OO zJFzAHDcDd(CL{fIMexpyU~n;5^BR?Lnie(x;bXN zsEW8d*6+WS9X?6bonyJQ7vy5;_)t;8dG_Sv2e%yh z&i~5Ly)d3J=01{PyrB9>Hig}Utk#2tSFOL&+zl0EF zYp}}}Q-JA&erbus-d^G@|3vuLU{;>0Yp-mF59ei9EA_@m%m8`ZfFa+_p8f-BrjQ;} zBr3)NU*x!%6&7HU5BHF*ZUQ2p`9F2H2IlPp(vX7@vm0A<;d&xHup;;bx8&3sze&RF z>?6Ky!Tq!!+E?ES?OiJ|o=ZZ7a*d2#bl2Fws%nmFy>g|RJN zBaltkMR0YmNt{GTcYVj1zaL|LUir%V1Je_LguAA}yY~NR-~&|^KMrk&WYU+NN(9Ox z_3EO(XZRPo+t6RUD?8-bHv^W6F}M2F5P6KXb16tP7-=!fmy0ymC`RE{dn70VJx74n zo+G$t7j9)C6u&%1NhLQoqF7(}yGFX?x<=ehCr_@+?tVhiTYai5F~QN0C_)7;m zt6TOrw89>JZbu$S`O)uWb#H2n9QeC>Sg{_rYeE+N2!~cim;y&4)m0>LL6AMAfSXw6 z**`37AV)kranmVF)E02~$G3B2!L!Oky`3}XxAb*xd8@W-q+Er=UbiX#uh}B8`oUd0 zWy;GSgYy@Z{HYZUZ;AHQ+{o0>xsNSQjDuR z{e%2Ez*KEntOWnbTB~Q0&u@8|Z8k4|gDbq~h^kc}VwJC=z{GfaL7in_?m=Kj ztu6Il(DMp*^Qc*9_qBTuRNlClwj=(RyK5`u4)`}C`h=k~vYvNWpFY6(aRy}*^wW{{ zpHR4O5|bDaaFs538r%h)&Sf@QTOO8`uYTF09Yw|RKK1phlj|kpxEZkWqh9>U1 z;W_^A7J+<5r|>_*gDJEtk^!Lh`$?Y^wrgT9Hv_y26Q4|u3fDAJ%gl2(8j@Fiv*)JX zlku_g0h5xLY7};X{Kp@-@fi0KU;fUZUvaHXn)uAeL{OUY)54+gA_<;523zQTofAAJ zq2_q|N0kHA_VZ22>w});FGoJesx;hMT_KySxvdE} znx?4vuCr9NWrn?hCiI7$xLN_Uzpt;SPj7?K$ygG1Zj)Kzus(o+g|&&38>EZ3zBiy9 z5;?un{H{4R?eP4AK+ui;)2O2BfLS#BmFC2+IG(BRbTfocU&thSBm+$&>ivw}y`w=| zFnwNM9=1Z5|BjZJxNy*suaQpvUinao73CtzdSZe{o(>F zS#nd&5L$fo*P@#DS2UhLv#uVqWng+X@gcxIbLx}Nr*HkZn|zI(g19JBgS5VtWD`0SnnS!~xgu##&m@ReALQ30a+dQR;kmk}1z z2p(k(V+Uuxw+lP&aEZ&M95;#0bl|9PAKs8s*R)f{KI+DXA$t5tRn)F@4WX%|+n$r|VLhS*8DQqRO#J%9NdP@C&~UCAFcwG*;U*S%0uwjLhkXn*5|h zkg2~npgS3ohLPEM``-m!YtR%?A=WHUTo!U(^~^Qk)M{~R7v$&mDN_!t%gi|TMQjbn zi2obTmycJ!Js0;~Pz>W(rcqXZ?DB;v+Tz~5!4iWi0YJQk&=)5@EcETTpntByV*|o# zAR{4x+P(vL42Tf>Z*p=s%s87DymV3=!NKw2uo&{wF($ zIg6}h^-B-KsE#T_c zblDqE35f)P>jU=^hWsSor>*zxc94#iZjK)Ef^Pj;9u>3uxi1j(%Cqe`re=&djxY#U zGS`FweeUv+x^#GSA&OPpMA*rW{5{Gnvi@lJK6JIslpMBL{DZZ|_tYTV6rps#uAX=p z7GmrVWxWW@U6Ux#L*sMNXCQ-J(c3I;J z3P&YbV_$UbYqB9JUFKNtQfu;6Pd`lzg6|{!*vHPl$s$}hzYovd{#$ynkxpvG|L7B_ zEO*a7zThNiVC^_uu9dsG*db#0aX)y^E+<9{7Zaw+3OzX3-;FD**Vma0*+7=N#pQBV zQ~ieFiSqH)t7Wt;@&{Q#5IQZkLp{a>(@(TbU=6R&?;s9EZT=%*@_^mZc?yW}AEMa7 zzV$Yyz5s#K)$931e5?agQu@gwwgtUkQT)Pn1@4Eql9-v^os;t&5;B#s$jXLq-tl^L^4eJ8?BXjmX+Z!*z%)9s)* zw!RdPXfpa`zImb%;o3Nn{Yn&a?YgaFl0%Hyw%Ln6c!I6QdHM8C7^@?5gXrSV z?s*D2!FzWj?gRIq&%ASLGIB&20-XSkE*M5$y+;jQEq-_PGul-#k!46ws=vrL_KqkR z&6i5LLOj0EGXk5mGkhE9n<|Sgy2THCKP^sPNHHxo_83Ycy?wqj7j_p>;@pUXy$|q+ z*R+w>YsCO!_N>&n#|#ak*|dKjODvSFagS4W)M-FmR^R2ve8(Xz63G_-d`IF&z!@%) z8)b%sI$4GjQ=XRv0SU&KfMX?F<~I3u4$^=osCe%*OWK2T;sB?aLr#u(ByiRU#?fc? zHa!EB$l~LtfkzYkLEF03DjSU1)^W-2^l1)w;F_W+IA}NdvpOXOtWnTONb<5O8Dw0v zIZd|Iv^xFKJXe`A#0#y+#*~Op8oaS2smFCTJS>N0;-y%HYm%{T6sNDtvQ%Y`*Qis! zEq*McxZZy$?I~d=kSCxvUmD+6*pJrd@Hyya`}d%SqMGPMhmmC{gUg%z8jK!4P9sm_ zKSMgkqjIiBosIITSsNV9l%^a7S>8EGRi26|)Yk4ys;$0CF)U=TjNMg08tK0%gkjX%w`IMHQiXN`E7DsqP5z+j#+utX&KR;% zbsnuJgW6co$_3HNiZw3^a5qIWsc{(P(VJnJ_#^SXfqvWz;ogB3I-8D6xP%E{C- z-b|cACr2+c+~;O(3oego|2U1{H`Um)ueWgr z@D0r6>?SN!bQdu6zxR12!npl=bl`5rMZS$@^x2rB5P@GCn|e>4Ev5`yd)m-N4yAft zox|vG4swh{bqj@na1$fge^T?;xw}!GiX^5V_u}(# z1+Z|FOVI|b;f*(*JD{qd(bC!LOIeoOi`#aiJtaPyB>E?(tN$23T$%W+V_&-Fcc}T$ zFGJs5NYxOZ3nG_UVY2DF=;BG4(DmYE)USv}Wz6y^SZtQ>6M>^xcE7+KaGdxR)3d~v zT6_|QO*jrKt5Sm)`Q@OJww=GL^i}|VJlXb&o-X|gF+CQuV-gtO=UsYZy5DK39X`04 zSO=xw=gW8y1=|Z6(<=u24zIrPlz_`5h~waHxVSsf@-~xCVJIrIc@W*n7Og~tEhat& z-g6(kAO=kdsd;R9)$qlgp0JTe+@Z%L=s$49$>5=eg|@vq@N}1gD{QBd!&`fA^xXYKLWDi@fvtOkBv+AU(g!kVuqi?yOR;Ylfvxm@xj z14%hwkdzH7%&`vxqS1cb2Q_rxH;u!^6oe27N{}bYOxG8h2*vHd@f}kk#$yv9!^p)f zM-NpaZnd*9@(TPpCvdx601qH$QiGA*AbKK!TPOvg61g$|FiR+|iW0ej zktzO6Ia-BCZjnqb%U(L(-eBDKZ*zr@^&ma={X=^cVOE!%!`Fj4p~&-!^`b}VzG+L(gz?66)FY7|>w8N$w5nA*cLL?E zF%W%(cm{u@KZgjd6in0saj5AM_MKh#!|2z&-rFqt-Eqo%+yz{T3NP$h^7_{iU8;!=i@ zW~jxCe)fqU!X;6!)XfeSk9}==Nzh6kn@SlfM1>~5m3xWZN*V|~dqXTwRKy|IY@ zE=$6#kc?mjs3#%vd*Dth!Y=qoJ|{tfcn70Ie(l6lB0iMUz!(wLgz@gB$v;BAc9-ym z@Rxz(@)QYR5;~l2g~@*G4*p1>?ZDdVUoqdu+OES}8=epDVgI~1?qHiZ{?`E?7KtfF zEqv@Hmx#Y4{2eE!Ke9saCI-)X;(n*K_LPAxRw7lL67QL8Be-DbZ0jU=8AZJ8W!-bY zhV!TTv1$+Ge%^mk^K_I$HL6db`5k5;;{#Ty-YN2!Aa0tJ@BrhWWElh|z!|+3sEMyU z@^3l&GR>f$N43983K|I2O!d&Iwe^JnIJ&TxUko~73`nz{TZ)h9KeQLMovnPi?%^ac zk&^4;tUvcn=iLCDbz`yktDUt%W@7Knc2Y-M`>Vf$)Q>L6Rw zdFUo{wcp8=F(zz(j-#^W{)yfek3IlB3(SY?5mWxuGNxb+Uvul-JmwR@=}91$T}acH zS{qfT|0q?7DJ#eLPS1aLGHI6}+F<5jl*|XreS`wPxn8~$SB*WaNSw1%`qVR1S?JQT zrF{R$mEfg^EtK%S!#x;J0Wkl@OId?Mgb<*N26|qdNTk>5OUrNLI4@)!Fh)o{c%lXU z!%a;QLH}JkahtpjQGM4^WF?sSkY+gUY z@P#}RNG9U;Lx>sTRhNgHbIc?#Nw#Q=)WA$R) zO`VljV=q00$9G#r|H-IO34N6kacaL2v}Z7?T(nFwgAElOW~2>)<@0Iy=tYbZbTLGQ z=s)FT+Qg%OlN+9LPN2(EE#&Ws=|OZVx)$R^2;mEzYU9Vse&9B?q9^YH?okRHFB+*; zV&B>4!e?fwGQS9uhMre}Bz~+z0&MNYv~~nv1A}|T%O)$<(1~!u8LTI~d}d(uYzpBu z!KOO*W&>S$tMa(=y|;N3Kw9Kl{=#Do=Da)fYxPTM=vc@UGMzZ-uvX-0i;P@tE1PXIgL1br zgKK)WK{xKmx)CpFe5HFoSSG^PBd;R;QxsdYDb0tiC&8Y9QXBAtDpFW3{CzgpDA1UW}r*FPA z*iuhIUZ88-MTwXJxmzWujrijW`d50HO6S`Vl>>XmNdr}PX)?5(q4Jls(lvQ)Np=>f z`aH2AKg!n5@FoAVM%AbZxy^zBg@V5XI% zpiu9{hvRgOg1w7kIc!Yq7McxnFK`?b2%Zc6K)LH4wQ0#LYWGcVqn$TA$>y%7aaScY z>Hgh!DYdCQ)J=|BX1CoY+g$AvR6!*Y7XU-eK|<-_aV||3!yQK#5}%gv`wMA#Ee~^I z2T0!J%UjgKQC{FDVcZqW40zewE_c=)>TsZ~R@i zXHK&o-nUaTT)?oalnuA`ojFI5cr+jpk7D|DXW<&$FZnE6T;s@{Mhr7Tevu|IR8IAy zojh$I?aA<|!Iy2e(Yr9md0IM$R(ib@?Ke6Hj>bVGAujE*scvr6uhh~{(XyDx6AQoClk{HbxtgXwxDsM20hNq6 zN&fm#wrG+|AqBlbVD7Kb?vP{LK(CEOH-hdYuxEO{UIEd|bl+1xt4a9lUdErJX2Bp4 z{+f-k=esfHtcIOxDWpRLAgfA$mktb}(Gic`}Z;1|xM;_u(p{E}n z3RylMnCsr@VgoESS4*DTx?=`rdc=Z{;89br+de;YJM zsR{dHTYn!c6KcN#U*@PQ&U1c-jSY#-@u`8`R%&|NVwI~(B<8~QH2Yw${3oMaEItmF z{MXTVE{!2kOqlAAS)Qy6(i4^Z<#X)O#NNJdNllEXDXV}j^}HROwHS+`SNw|MAcoO( z6c>P?<8G5XPul_yeCyQ@u9NPfWOz(jjF?1X@eDDi>oVTt6@Xc36giPu3jG#tmW;wO zib$bs{TzuxUklu&R{{njjwf_EGygE>Vco*rxbVf|qI;Db+rSY)8cXA+CJM*t8oI{!512QNOf?_y_-6o0=tA_NdR?Ml)zxp{nspNzg;M5t<9@GWjO=<$#4L-=#Oow0a94!W% zsX{!Xu+hLF?-?RU+akVh&gYX?-=TZh(?6?M@Rh)0femkQVyom`Wecrb`b+&e!^ps; z+!Oy!Q~nIdQDrV?PCuBf-m%PgsY1U7CVfFD%yVtOOr&635O>*=-$3w14XY;xok%pN zdru8uzOmlx^a;%ThxgzFyws1Pksbr7q^IykhU6oTOd?B*Z=XAOnLUf&iIR=r*_g`l zuc#Ly3;FG*(|FwtC~0f49N(V50`iPc8opTV>{IYO=i-J#F#>ZyN%_&g2Mnq8!i`C@ z|AZ@xk&_Kyeyi2mtua5&@aggR^~xIfp*LpY=eK3Jg4UDE14!Owqp(K^roi-967Q~8 zHCMPA{8D$+dzZCx7MI`QpZmXF~R1r+xW=Cf~lE;`)14&}&+$2(9k5 zo3=!OMNG}j9||VX&+lu}DfPb#g0X?WO6xLY6?Cl-l@CJZwFL6#wJ5jAQY_RTu6)f_ z$9^)=9SmCw>hF=}C1F^Hekp5emL&Ieout4y!6OU}l1ugJBDi5eR%CnN9QFQ^W?l^xsLQ!J7dIh!@T>BX^MhH z6`-Ikk~A@3mc);-+?w14=)i+_Hd?nWbDHIF%IsO*JUQ~DX-r?%jcqR!j}pZwXW;-m z=b*|&qhwPTd1bw=3G zW$e}xDJ$WIx%neQ9y+UK&-(*t--R9t-t5DG5mJxOYwdmnlyWY$W`il#AmuMPiNsF0 z*4?v2c9;Z!aQFtQpZ+ppEiDSJnNKrRYmDNWkI?2fJsoyof(VIl@3a|wUx1Q;wgaHr zCc-!;*^b~c6m<&B__{s+AGzpW^ixk`uA;QFrASiVu?Pfh<@rdh3Z?iXS({UJD=T$e zKwp{vLiUp#N-ce*zJk5e@H?}09J%9filj@qsmuFUNe=urK54je~Y~$?T?U0g| zbDmCUc&T^6%11cHHUp>Q^+G}I1@W;=hLn|l4&~_{DIs^OlZ{WY7d|2GR^E$bcbfIQ zCLN}F&wVpA>OlA8t`kZ*Zw_~j7Asd$ML0+;jIH={@d%_ulTLtg4OyglXQ9^rz>2YRC1>HAZ&!S#IDeRrA* z)eoNi?5WDO&m_z#iWu|ZkOnv5yiOgWbOLXHShwAF0=q87+3&S_2JYF%X>WUp9*Dva z0yF7kZkg;4x;wt)2TBiA^mT2JZ?zI;a-ZJ0C>-gim1+~n)|~Fl*X8x~W>(=G3C)e`O)U33k5~{F>J${}rXOC+ zZnDx-<13>poh#_M9O*t12B%F?!<+TMh~p-c4?BJg%Rk``!5&EbH7}ytLR}oWR448r zd1XoV{-5(tDJg_Kd?8DT^8TO4pwogA>nGOIK9HMTqC;q4;9t=q%S)gyTYQ||bCOWP zmX#vtaV7?-Y;~sSV^Jc~UNUOq6I=fbQj6Pi1;nOBmypBGh?vjA6|rbnK6{}57e166K92l@TH&^&GtVM{=VaMjz?q;8}mu;?Z8%mIk+OxG3D`Ta;y zcB#&$dyJ_s9sI`KS)?qrb*m+=V88<1c}|FGe5-ec&_9 z>D5e&D%;Y3t_;sCmWFP)JQ*d3?Snci#@z55EL8WF_hK<(vbZ2f5U@rHf70foa*P{} z5+aj#QiZXrV`mHasUk0RP<{0x5s0Uc2$QR*>Z5xN-km|1k9@(pW)TE0as~74n$niw z+Fy1O#9Ba;{daWLQtntTGj`V3zN`_O+jEC3@RV17ijK%#4CXh59qnUaQ%pAtL*q(+ z1)9HOJlID`PTa12X#`mD4D-%x9uoyx;5o4(Ih>^x7CGxSIfJht%smqLh>;{XV&Cb{ zAfQUNWJ7fa&Bz+rlx0~T|C5Ur%vU86m5KZw4=LNgv9E9aSE~m1eXTkpe0f+>e}cHc z68-K&Ej~5W%gUUOmP9>N^WesRrtyZwCD5lm+w#|;%-fh?SblvF9SC^A7^`Uh%iCQD zHIce7t(f2y>RxgUjk<8+2VwEEr^mKWDaHZ(x^a8rXNVtkOhN5dhyHU{z)HAx$6ay| zFb<*g)pTOa$A@0r14Zh_cZBZea|aU;bMbO2#!KjL(F(9zgRLjgc^x><*IfGFS*fV= z!EJYJgq06Gu|48>^(j)}oBFp+bVt-}u`F1b7SvTuHd9P;hwTLptr+k3%O`koKhF0-o-spTR5v|E$@peUK1 z=B&qPI7uE%dDp&X&Eyd-EFvk8N*V+A0WC(&@N1b!5%9TKrM$ED$tY*O{lcQA+aki> z5HE{&_ty0%dxUT6Ei*wT{;$ZC%h6*si3e zI71y4#G0iZN+tF4+fCWvZO!M^E%G))ya}x?J%=%$k!C*Xq^~AoW`QD<{%jPNB<`dZ zjN

    hsceMcV5aL#e^4rmVa87+%HP6K3O_;{s|?+cCSJ0rqSLFJAY2LHD-G)&0q=5 zh8kQHHxTU`qRWu?fRhKZvO|A-C%PI^#eH?sC+d=yxq_cHDH2#wb3r2CdI|S%D_JG@ zV}SepS-~7@ALp}4|dMVE?9>~@ZdSWWCH4c{C*58!v6 z)Hr>Edqo)f`8kiTKr0Y%x~~VQPfIeWw9t8UfhI*p%^~UltUFzTq1?ngVn1(vhcN_v zD&X&pY2&Y_C5@nfC93^-LVO+g{R{2cW#;!QAVrK4gEyjneRqXGv2v;=ea8w}S|Ie; zM~aZWN*3_Q2I-g$mRD6%90`SWJ0IdnU^Mb3_ZjoBfoOpdpC?|2sKfL=wG?7adzj3p z9qr}rE*x2oc8kA%%M~bf)tg}4&d?yKiy83#!g=av`0GlKE_Q#$9J+*kX!Dn679=zS zXfYjXwqD%D+_(YHev%Zb3;PKT{PNrxx&lm;U?QMr+rCSsOPqqQoQ_dK74!&>S~R-I zc&f|I$@;e~C^z*PO|Mzk$1N6zUFWt1t+wqmCmQn|9|8x?0UCp>F_be^>b~%yI>=N# znoo&~cv?(%7`B-dx2Gr93%`G807fV((XMY+j!2Bs3Pzr2 zJSWeeHUiR1HbpC0%3G5{2K=gepgDb!d~n-tNiwu4P5Um?#De>GbYO-BI*ZU}h4MGn z&GcB6pXZms=Rju!a2=7eCHqS$*fg84)~<<%6a)V1V>Y`!lD~@~V&o|^q-Z95HVaB| zq@TLD=B-^;D0NvTco1_Q$epR!Ep!m{rQ4OA#UguM%gPvv;Z18zvTxNJ-_Db?&LNV1 zE4_84eYk&d!QkbQtImbU(0At1)PiMsL4u>SKpDdRr@0iKJ0OZ{Oj9S)I1OCStYEHU zJ2XFCA2OYq>3M^DRE;x?!gi2I?73CRvqIo+R!0OJ>Mdj+lO{#{2JsgBQir!*Jb`)< zTDJ`ND9xk}!oqfs8{x|LVT=goST-hz@l2?)myLg;K235(D$G~>bDNM#r|KaZS!SBp zCC_*9p7^L(O`MNG#BJ^9ASF4shZ9d- zWF@{A#80EzdK=V3ERlDP#E)_YN;=0hrIR~R!-S&@n*JBTTmqc&sq9?59X$h5nj0p z$W?79StGx&3azzp_=5hwkjuoW{r`oi&C-?nvhRxT^>-$7WgOp&h~{(DO3s1J zXW)Ta7D`f0m23YO4xqQirJ7y{)+37H2cW-tCDwOLd&pigtu(G+E%+?WKdPe{H8?r*AdrY`bN z^g9V#MDy19kVwDnu#H#|^)KuZwfuJ z`KY-5LGxOsZ#G&TQG6DMlKKK0tj<^Kf<+43N6+sb@hwB8pTPX&p1QOBKBjEK?Y8Hc zcq$ETk4U;Z6JJqP$@4R`QbTWhYtaLR;bbRuLCU5lvJ`H;M|I`93_aU}M92RMQ6(Z3ox&bI7^(;ICuV6>u7td!FxggJ@Yn$SwFT@ZXU*;7tl+Q&$HN z`oZJ|^E3oT?5SfMt*ID%tPmUV5J`f7#2UXtf5kvJ6O!fEQPiqWG#gvtbS$jwpdE{0?h=A4`M%s!^~?^-rbUfjHhlnR#VAP6BYtZTmIyE;a_2uE&_)PatO znYs#Cz#9}L96;@!^le`C?91UMPPpA_?k4{j*pKVvDbIILkI6Ap^NCcs!Z;c}^cFqK z6**+66P7x56xAxN%|arAvM*V=nDAq zc3v8{aZ|oO4}1ggQ>{qBz#&Pga%4Ubr}}dREc(QJHTQVKdx)fUg^T&lPF2Rr5rjE^ z*SPcNm)L(<{~E=eD-Jl8-L!HIqn9JKw@$AhPdiCVulSB_hgDEDghMQNy z0}4$)ZnUPe93qq0E_iJ(rVWyl*-BT~2w7L(@%AM4XH8qPBvagUn24g!B(z_wRndbee^|BvnY4;I44s%GRX~_nq>vzHJ&5{st*I6it#7a)omlTF62AzFh7WQwFLH0J zZdd1Q&R0<{NE{E6`~bCh!6dJ7ag35Lkc0C7L?kpJM9J8O z`D%rw3Ym#&YvQ3FKd_CSWKmbX*s3@g;}2(q|NL5uIFHOO`&HdDF_l)oXNj!*66?sa zkyIlAoz>iN-?BlTTq|Fme}o|hfThv*dDR)Vg~?|HcJ?TNbNrVg2e~%W2Il``d-&4VU&riZhln?M|rZR9kQpp|&oJV(nZz^tbGrz&+Om+XM zv~Tc1c8@oSF7OfRvi9Npweea06y`JY>P5#hi-C@3@WF2>glitpHtLFeL=Hgb=EfK_ zBRVQVo*LiB)B4DP}89x*Voa3!sXw38VuoBknUc5KznOSK3ahe+Xe zjdDvPQ`y|A2^VIIo9R^tt?01SlLcWT(Q%v;x$NuToqpnln1z(Ht*{s>W6(37HP?_9 z;n+vF{-KNE@wj|UI5LGDM%NgJrWO3hH?xhnId(9a5&=3w0gHlE0Y1_Q{Geyd(-Lgi zJ3B^FKJW2uD3J~iBpE3iS1PaORs2ZWHp&t{E99n*Q1}FgCcY5g;U46*FQ~EMjzo`u>YshpmLAR6r}kb^YJxfaHNI;H%cF*WkySMmGFvi_AKd zxd6d$vz8g#uFv^n#ULvoL#s(zDYPt zAKPAi9x=dzeR!J7Mj<_wb9K>|03~|?(z@h#L5RE+jK&;NC+!lb%n7(aOd;!9vbbil zp#Ns-sl9wJ#V$((t72m$^b2&NMb<^D<7Akhop;f*vZ$E_Xe~AA_7w27gE~{v8o}&R z1Ppk518`c061?KgmFE00>&53<&YL;{5BEL5>__Z_4bRc=Ysfu+0_I6!ee~+`8cwn; zdJB57wqWPGTy3_lZ@|WnH|p*AKn|C!+SmdPY!r67F9?UDtj1Oz3B6WekY%a}~bb1Tz0#2=tby&uK?0xZjssfRuinZMKrSR5N zk(Ha(NGUx31U?uxV~(?YEe&|#M)AV!&!Pqy8{Dxu#A#CDk+y?#n)*Lx&~nk*{P{6t zAq}#XGBT!)D*EFcPfYit)Qne$nm&@R2~zwb>mE#E%Q(gx(Zl~o(Upfo^|s+Ni=AwV zkdf>=C6(n&T7@WuQbwt?)AEaA<_sy7ijplc+Gw$r3en6UA!S5avdq|Jo3YM%&iUs1 zYyO(+das%Hect=I@B6u5ut~B;nOV!y&PZEbKyxsx_0<TLm@B7|(*+DOvJ&V^EDGZh3U4=ojzO;5cE~E1qUUh--c-YJMGJ zG!l47uu>B`i^@zX2&#qY0s?x__(YPU^0?nz z0I==y0?{(AMBydIUs|B!>Fdu+UTTCoF=xO85L`4doMG5iNtBWZwy?236m=||u5tpc zgcF0IG10x(j1O|5>tEd<#M?y*?W-mtNw@V4<3`Z2!N&UKi-w^%Hj+(r|`wsXI{z`sY;Vr|j8VT|qO z;+3BescQtA5)9d(u;w!R(}x z_fx4JtR<2ua6qgbD%5^#JMjosPQbhJR!TuUbWzet9pT1(4DX|5p&KNcTzJd?NT=lK zpR92<6rAcQ`65;2mco_hcFXAphkUWSCNH`j!EYJXu^&a|>j{*GAJ7v)(o1(^>}&jn zr87L{4l}&{rrYj&cvm~v>@7VJ_tCe2zSD`=qE`~(pUj$(Mu))kH}W0(eL45z_F>Bs z+Ni8`H?bwNHweE)?}W}Jz}IxrdYIR%%@vz9gW4nWh%#ow)bnz45&CW_m5(Y*#j%{6 z4{)s>amr4y#`)eP{ilnzS{UT76f2L(*ChzY5EC3JhI4!5oY`&*F@+pgT6&aL(s!W$ z+SJRD{V{}JC2U>Ey|raI=K6}Z}UPS%W1*d&|g_BYGpAUS0PnyXhZQrFX?i zEFu3XtC%;rN|W-D_a(7Qc~qsU7Oju)pN8x`vB zG%58kSJ{x~ps(}6dL!Q^k|n*Q8nU2T_A`yVdhLkFPSoQBdcB8*pueZJrDTd*ki@~c zOfoLqF-Ggh+QCM6VlV46^Z`+eHIQT~B6@2JoY3pnV76-FA{)Ou*zd~5VJoS@{cn+T zq_pFbjPQ{PNoqW6j$}4d9!RwXaYYPbJ`fEU-vq{it*O4@V%0Ll0CS=$;$@Zoxb4rM zRA>Fm`}Sk!@EvE5o3zrsw|YROH%Os;LJxV5xZw#S`YS4|C$tFcLZ7RijJURx)a+g{ zDeX54;q0*~Fj8qbW*J3(37ZGxubJ5~#g_Wpa%LI-mQP8tA6X+CBzM(+qItt}W*)RK zuK!qC;Pju-Bl>P9)};|o@^1H0)UIJSVlsrAE}_dWn!#JuQGd<>l%+~(!*P~qXD5<7 z=$dHRWXarQU`CE={eoSm%Nx)jrZMVXgPcxv|hAH z*pX6?KJ%c=R5iF3p+$Gam6OSeQhHeJO8Y_w?F+SHNiTpF0!Sqx8%DG>KhH6G?3Y>j zfk!p$_tf$&s84$Y;qv#$v)G%Qp;3l;8G7I*ja|`Q?mt&%<~MMNSS<`!9B|%b3$B$Q zF>inkSmns!z-lk@b@wB7r`LwInk8n;cN7-&Qy(U{oY&q(ROIL+0@kq9NoCPTo|V0k z>jbq`>CBh?OU$8iru&}@WCZ0bDP<+umG)`( zP&fI2cZE&THm3-v6GXfc`>X%H*l*$dqxbAC&M-txwWb9V^YwM&IRDRcm_^gJLal^TK}Aa;gIOfur>= zCG|k>SfC~T3flcSdxuh~#Uy;;Ut)ozRiq@tT*3L!&fT)cRsva3Yr^5u0NEFK%a+4s zSIVdBHFeGpBp1*hW)f1NYwe)Jh=ZjyQhZ#R@)ILiCE z0|9FL?jK%;Tx{nOC`-beHMHvahC=AYZs6M%!UnnXhIY()!uAhy0m?Q~_aDE=IW;y~ z>1t1ewkH>Dbn?w8GYCF_EWXoZJB0DVLX zG=?_iN(L*rTgR_XU5`Q*?kfVFDjn7%Pe;nj=I!po6RV2AtGnR`T=~yK&^6!)r{L(Syz+#q%#MiN zOZzkJ#tw28i+>vs9mvgBp5liG3EIoZN4v}lVaGhRRw?zrQM8%Q4rf#huRV_(pJuyW zgI9|EdH)n52klxUYyO#q_63%6(SoyB4~g#p?d&bzG(eRis`afeJyU%4iW6Vd)=RO9 zD<_}c8!VosZ~2}%mQmmZS{>J-YEpM&_exc{N!32e+zMpoRmm3&#kUI3Y7eXP9dQvO zmQI^Vg9K-ZZ)(M;eeau&D7T1RmRM%!vwBtu%!E|~q|BawuGlmm)AUZYj{Pu) zR~X}L0Jh4&=`(v*D7OT8Cgih%eqSG;rA6{>c;*W4zXaZ5pIuZ~hPkll%!eE3%Z{K|E@-KAobFjAd4dRAt*T35+h%!9))H({%hDmYfo(fF-45(IV)ZZ zA<}6%@yhshZD?uZM46Ar=lRVAL}t&scBElFjD(x{Y#k%Lte#8SOu#mQL1ZXt26RNd zkpqo!)hIiIoH-uWK-x5Sre>_4v3vyu7ZUecCTACL0Q#aXu7gWTH3Sh!T><;CKAs8+ zFp|knZUWCE4z;DpalxoGBxAn7@zxjgEO1nY`j)|Dtxpkn62@o-ge*Mo((w>sFdB{hH19Ad=#g}QW7M3uxTu>+1U_syNeK2~l9Wty0`Ww!vcyRp~)lv`+%LwJpn6B*?4Wb~DE zBXq9W;RG+m+{`(@S?)6*u_TzGt<#BqhD)Ly1J2Qd*|&NqDh=>H;Lu`P0CpVF)QFtZ z+K0cqm?dZ5mkAUu&y`Y`iNJQ)bU{T*Ti)=~ZN04M*#U(sQOxCR6F7+<*_Xu!#C$yi z;M868DbPkn_sM@igpGE=ft5q;DjA@Kh@$afHid(QuW3spJDKT(&^62)um$t zw9}K@Ag;Ek2!91c%zPN|Qu32fRi?+xSJGWLtkUkhWLD3Fu@&?62BE11vRzspIhx&1 zeA#!7;n5*uUP>?w0K8wz%YQ}&r)TO!Ym`f|p$2)GP^e)V^TT!%-bX31kixh-iyGlP z?D7=k^E4{ftiqi5M2h$=J_jGhE<~*{mRc-YKr0p|lGEU7!zh8<`o{XfWpL*1>xSgRGa80;f)J*M+k8d?JGYZm}&v; zc<9$*!VskjEtM<)(QH~8^{sL=R`^kBE^Nv{x$dp)1{(Tq#oGjxVR=_QzeQ!(9Ah!e ztKh+>s{Zrje>u>3c-2oKob5~rQyPA|u zb(vvBq4UET7Gk(wsaMSUO5jTlV5B(~_A<-A8(zWGYNq4`x*tOaWDZS4U7PgPPP~G) zUMR}GAtJ4oqBH4+__NV@MX>P2a)A{t!2Q6Y$~I;+I10?Yq%Dv34@N5HNs(V@KZ%tZ zF6D28quva!YcIoYHb@Vej?p98-cC`r z#@xTCb{vqro_!LAbHeF5vZYH<($z#jb_Sjwv|El#07+sScm1Wj#qec7o@3|_(5aFS z{(96w@+c|)B8C6YK8bSth>d)hRw?K>VZ!^Sih4nhs2vYK+SskUIC^yh&h&d2VYws| zXHQrU8&5N@z^VGwxG7MNYCZe`S$?;e)D|(9z1Jq;Pu0Vq!BGQ!&r_eZhSN#b{RU$I)gx56o|5 zD9-mLP{@zchPpze>>6z=bYxEmL~njZPnkw-bF`*)gP zcfRL#)Zpurxb??zYSBv7ZgIQUsFk5-C2@aLnf>6NplJWO?hC5)EWyw>l038w?Mr7% zDK_~SOUdACAYp7GSdt=LYRRd6SZH}j+g!Gy%x({9vjdq-^*M2RMJ~x+U>@-PEP6-^ z_#U6K-0&|EflMXQ{N$adkpYgG1s-x7BCq)&744G_D#*KXRa7~1Qyeo}u})4EO3RHr zQ0B~I{LUdSjD=-2uom(P`gU19_0S0JFrD6GabvIUwtIUs{qm1xJUVH5SNHc;%^ksE zvSG(E)qQeL9lTJu%2%uE!^iBGYEJoep|UUGDRJ)@nLhSkj(Bbwk=$i-ouO*he{9+* zdQSd4eP&Yl_awi2+6^B=>+2{IEO{EcbW*d2rL4?3#yX+Rfu%{8G~z4C+Dt|Lzl&pB zVu;8~ll^J}sO^r*7XN9E7%_Y(&JHaDbBmPoy%d60R*U}a!)hjg3WsqW5kenzq(~WX z}0F&`}<2&c;i3?mi?F9_1hvdTAe~C)7kA_ zs74h0UwWER#baCIoJh}Mj&%p5BYs#za30;Gpp*3W0oxBy793EdOGlu>-^rWHN{s(u z1%LSDWsj%|cBiOmXjRX=fl`I4Hh>~AWwnPC97o! zN2B$0y|X_h{Rh8J#XQ`c`g9cZf$t3O!yA8YhpxXTiD30v7axc&E!A;z6H)Cd1#%JV zKjsFQL|&IJcdt}QRkzmMgeh^qN%=hr>5Gnx|G2}bm@P2CeXC|vVfy$HP4C(DDevTO z+0PyTzWyTJm8{`~Co%s+ADUiE$GX;!ZQLS3&t?!97k=`!OTHA6Rcm&)XBWl&_vv(Y zcr-69Bk>iZ<;lX9!L=gRZHE4grxG;}B`pFeJnJR(rz_zxE8o)P8@zDuXBZPIk$vEC z!)hF~Or$O{9aQZFYC4$De)(aOZWLo0J|X$?XvA**jcG8@WH@8_)chqu!RA`h`P)vU zMse9tGD4q6yk+J_N>)HR*5Vsp#5v9Ifb+m6z$d!7qKClmF2&!h7Pwz(VT5jroLf^K zmHlDb)Ox6HpYrca(B@Xx1V} zmDX;_TyEqTOomlnGG5D+>W{jIK&kx!#JCw(=)ZN3m=01=?|lb*`G9X3Bl$AzJlNLL_(GW zX6M55OgMegnE^MQ*^doV-1X`mskij16jaZNzId{c^G`%d+JG3IfRU^7sv*%Y#1+%p z?9hoF+c;HCE%zA4u_2-)SB4fbQst~lYbQU6(fbNVF^b)Z5$P>w;+WTC?%&i9_?>y| zm)Sa(ZG;?g7!PbQn3rk0G~!%^@+QJKW{;@Pk#*vv%Ps6YjXacfg}p6ZX(JC;hNygy z4E~AA^L@znrg(kB5Gmh)lQP3G$o!vv*WeXDBz-o=$qnJ$+udW$fCzt zWti%Hn?;7K#YLNd@OVj~jD1u4AGU|L@XrnRSopw9wj7+vcm7qRp9jp9DfqSpKNh6# z#WU{|?bxDFeQ;d&-R9wYUf z`MnSvv5`~iajip?B>8|>R)bEiqBbpS8+%SSQF-|P0F#Bc*4Q-p7f?W_{epMu-a zmi(Ty6~U0p*%9q1-%7TFxo16ismlze z1c*mQ!FI}_#T;Len<_8I%l)p-RIuM4(Hgh`YsmTieSvj|>bls_NwcGKg~d=#B^TvD zUn&kLoK!fq#cQ@YpM9B@~+R92^22ldS{vqq_ZjA z)647^wf9o*W0s%F09??aHzk_s@Uxh1aH@A}zxFw#|NT9I=a^#b%xA}f(o;6whZ#rv z!C>H^MZBN4ozDCzp>4`f3+=S;baJv;bb9)c_Eat>SvKToh6Lho%3c)n$0;vQJFInbW z?diYCGaHolw{kCY_B~{4*g?9mvn5JmkMpk!c*4NHGQ6lP^mDL+PRLC6wCnRP^+EIa z#DlmqjHl=L$N(7p-IihB*36!_mc|k^y^_LY!ez{@)%EUJ);nS1M?^;wCu^9F(KB)> zidS@)U>F_4dW&i%p<}BV!(>$jRg$m!y?{vGX6bnnAA|y5FmlU~5_v1ea}=^r<4e3Q zwk4Z{BO_}Viz*Z_i5!IgU?02`XPEbbbCR*yiux5)SwY?Nz@P-w0$w&PV-UhMa?UU- z$Ln_Gg?^g`r$Z#4SN-)CGT24c0z>zwamMG$l);$#<2Qbv#|~Pt>IwgGp~K2}8P3`> z=pLEO2khZu7FGhs%2Jz1>WpFpr?2*Pl?C_+pV3J#W0Pd?$;%T;vbH~$V*JzlulpesZ5>*6hauhnRgywLO-}8-C!?I`7E_|M9~YAcqjhRy6#ZHcu`57rxpVA->0F+Mz3T7FV4>E(~i|A$dAF z<7;MbJX%;Le=t2_L7XMS$ptkS2Ze53OIG@nq5Va>m_rTc8{f)C3HG)}#71^Ry}3!K zUJ4S$N%;gWJLMec%^kUfdd6Z*zC4wb?}QRxCue~9s4O%}C7C0)&l4l%B%*977D`qV z7WAk@#&RxLB#b5B(C8{_I2-q$v>lz_w$uPUni40Up?6Q(Sp;>!h?FhBV^3k8_&dYH zXXpy8!Iz1&Syeh7OmswT^y zVV;pnx^HFK(4lrVn=X|CyB1Tb+(FI@ns>C8OUXa^7Ab znJ>I^G8}J_ph83Xi*~Xh_!j1gXe!pPIw|j@+%J@g-fV!BlqH^{tDr0+od6{G*3_ld zWqm-lI6Xkkm@!kMacemF5~5l$ocMEBXx}+i?=-5ZmNN`HLlb_TxUXc?ntyzYnitvT zz@+bBpgV*0XU;bs;~vLu&OsP07qEVV{Ol=jxd0Vnqi_exKDJ{8^E`16P;c4Vx40qf zxje=4vPzKDk$4fe>;ePqBqw#LX8@)k8OoW)wo1a2K`}tx_GHnworWRy?wOffI|>i{ zq1ACnTc)8w?v@p8xV_4Tt}JidU$kKolIsKNtmuJ~{GR9?QQGT6%PcZF_Fs?5?f!%j zUZ)*(v6s?63p-|g4=ZGLVw6|T?U4@tn9vH98pB}+wUdLX!wdZXTIMBpWdtF&W|XO$ zQN~)KiP9&1FO$d*txg>Efl3>OMO%qg8(8y=AVRer#z;O=qjCy~EGwy)PNYD(z%h%` z6kB+hsk%!WP`}EvQ^D_jERk(7rSRYzXU7<~NlY!y=N(p@fr{yH*4mbngzcY)et$k4 z$yk5p==E}P<^>>rxHue@8w?L7&;2HaNHnXElQR06F#18hF?59FCo9`d-6vlt!3_`$ zdIw~KFyq-TS_~#!uI%FYc$9zkzhMNw90!K)MC1cL6gi~rB~ADP6bqyp0WW72bqaR& zUV1a+8$R^tiNL*}hN-hqwoXT~Wte@efXj99yJfp~Xffli9(1>&Ye*o5`o0{U%s&KW z881Z1g=jsZu6Vp2>09-=1ijEY-LMN33Ae-`ujONRd-~GY54(YCWF2f}Wq3or`3k#Q zq47l`idg}w}(3mXFy zV@;g^>`!DL=GMXjT-UeR-7_Cmmc#joX5_bw?G_}_OTz!&eQmU1+qf>Tr$dO{3$Xl6 zL$@j8YZv5%dxVLhd6+o}Tq%Uzn%Ay`%UzS&Daz~tao7yu7U*oZSmZ-l6CqwTENT8S z0W9>TQ5~kk75r&4K)A?Lv3DZr9oxfss3mwmo4wx7Pb>b<@Y9dwT_68(4c;%XvzGKe z&175A1){Y|DPqypKZGU{i{Bhf@uXy7dbkL_G~Wo;MBEjn zN`Uv6alrcFHqg`1?_oM|4>o-y_|rgn5SAYEu7T)qHfsFW^z$ZAV)yPe?`LW@(*G#Q zR+>F!iIJ6FBhK*qk&L`;p+p6ab*M-cMo$0bUdCfQqpf7J;Vca`$rxq!#=|AeSm%G! zvX_k*X|-zz1iM|FtF@NWi&njeVHF=Swv0F>Nz?=U6zs=XMtL`$h{A5qkuW&$VJCW- z?J!9?IR|Hno;#)Rk#;WsOvI`2`-ebBEal%njn-AnV#pfR_vY8<6I8|ejjzkC&jnz0 z?RD=Yc96y3$0FnGr~v1+vtp^oql7Wi`joH_$OZQOL{gv0uSKeXb?o^Ju|RPD2XGqg zgA=t0`>7RDGakn`(uT=#osP0{8CadO$8g=!9gdN7!9GQd*BR)_Ym3}Nt}n*NVsoE2 z(YT`P!%Sa>D1Hq7W5-B~YhpRH z?bsEO-|Yg)=bVIjC$^O~g@mg-q6TC-!8y0r`i>^CWDRk50AoI%_w$8nn>$LH=67xs zh_B#Y0dEe0jdow-4Xv=2fGpNVsYY0|7fXDHU+D9K8j>|K+v-fZ-Xt1j#%Y5O-Lsa; z*~)Y*U7Pq_dL#9 zBU^c@iohAh8yJzZt$cPsp;}_&FT0Dgzv{z(Cg=I}B>|hk6^PCgUaA((WRecMbs(vd zAJ`XV$m`{Twrt5=j6Ita>JRoF299;H6W7ho7NwBXgeI#rqdTMhv6G8_*h?`L`0P;| z#=~!ww=kg%;2U%@$L3ks($9ZVyx+!(T?G4nC6=yYT!{B}PZYePK} z#@P7JELgDTx-H;Oy*ftf^v0ZniNzJyj= z#%T-FxVk)2ZGyoa&aU%fp*t|wFb@8Z2DsF;Hh-K`QUVR#rnd0UcWP#9rE$iA0v}wG~Jn9GXR)m&q0IrjF<5rxK@iTlVr7(az zdC(6?Z!Ep%yUo5J(WzCxORYOfJ_d=szldJ#18ZhL&$v~PH|p8(6I{oq6)Fo#mcg!B zbUMpg=Kig74EHiQ>L02yPb&x`2;NYqs5U!vf|N?oq&N(5GpnFKMP>E7f4=-$BK}=} z5AB|=8k(`&McjEBxVSAv3xAb+`!Gqt5x0 zVN|MQxWUH!MyW^iY;+(tV(KZrMJnB>L-C~xhw_CJFKLJ7nsgy6;4zHHQSM{xQPn1W z@GW3*w??iL#u#M%vTRhO*y{{iEt3`fDfhNSAG!mc`Qjk8t@Ct=+jg;> z4`^Ctdvf%OlP_uGbEJLZZY*&^we)s`46z-| zT5?I;PhF&g@#l$u2G1xAHi*lu<^p{{dolbMw-30F8FvZ8?7_75jy;YD#u#1cosD=F zIIJz}57A?LSYGYE?MjU9n8#Y*2Fj6eb8%W>N9+L&<%NGw0wnb{1Wy^m>(F^w$BA4v}L-r1Z{4~#gDXjZBE-1yl0N6=yx~hw!Zy;L?;k5 zZ+Acr**!7^E{K&bOsFm=?iKC;rG)2&FH-YB6=QX)97>aF7dXROxg@5k8#e9=PEDv? zF+>=JJ`Yy?6=W9)I>@b^jOm&kPN`K|a))CMJ0V^>eJIe-6UJ$T62nCVdrCX2~~QSL1S;2sS3@;#`hwk#M5e!>2- z9EmKU9qZsjZ$?fXn!m?kPhIPWM(4$gC1b#?h0D0ixiE~M8^%0mDcdSRb91bxtWZZz zCkS}xAj?_zbSJ?I2(zXpgey}O^Zvs88`6K=mEG+}}CcggDO1|Xige(@AC zmPM`Lw7fP zU*=ga60JhDnNcrb;`!@z`phE}U_&W(8Ds3-?u(~=`-|2*xz*BdmT)E^>h28<0ad!f zkO86F@|wx5f`*L~;&shu$JqL^Ks$mCe03Hoh~WRaOJ4fDlqP|wB41o2T{1ciWCxj@ z&V~nZvSf;->n*1 z$kB7gWlU6qmSc%3!1cIwupHlYBBE9a3AhzeP8`F$z*Amx&n$9!|JF`#d4GYXbIye4 zJ+SQQnXez*8Fpo;P8DEEH+F$DXRbRoN+?agxz0DOFakIdw=?<*#t5Yy!zjxEaxcmY z4^pl=|9e|OBzZgId^+pZ zLfNqfT9bQ)_@iB`bN6L5Baz!W6605SAh5<2|%x{#(ph zj>EuyH?10(BLil76rx1=hd5i(%XPNqX>+|%;UQ;nCNFcbVUQ3A)M85$u)ypup5`;j zNr8eXl!o26!4Yq&Bq%XNh=XR=9N>IHlu*@CLFO|bvZC(;@- z$eVxQ8XIZ^{Eq%jX2~nQAL(@T#0`FARUvBQn!-KUvu$f-boNpQKRiHKnv&UHVz|e zB(*Mp&LuPwqkIB)zJuoW){H^v7-9>D!qRMe1IBe{wFef-6p~`-!2sZqCPufaUNNfF-rasZ~|IK#c6 zmX?YAaBMrL$gOhmmjU`ssyA=QO?;rCy&ydI0J5=&(;MY2CgZ@_q6v`~i5vi2)K#-W zt)&T!QJ0Ys7t{}*ph#5f+vdK%PW3H1IB9o#UZE-8*YhEW$E_k5{=*5$yAvtPMlrT1 zxmAV;&`<&`W1=fZ^sQytD7RM zq;JN=zQA%Rg=J6vr23yx;x7vLZn1@L<;#g$N0dw#h2$?1y`*8)W81*$Y|cLXeq|!( zsA|46H5oB>dyC*-h-J%=J)&S~3>e>6iCPSJohV{htl_LJz>$MJ!&-75C)Ef{>e z$@MvcrUy|PA^iExCV8Rn>tq_sVS#n%xSSR+DV~1}?L${u&o6E?$E3zeFKs^JB9Loc zDA3A_P?gtP9B$j~hMrT^wR4lvQ%qJmyrxCdbYUOf>|IrI9nol@eIxn{OT{*Rk6oo) z=nbpkhzKc4S!_J(6Rr7VC18cigkK5P%wnJtN6cNB6rSs)Y3Fe9ft5t{tx7~4^LTO# z4~<)C_kVV=TnD{5=` zpx9qw>Tl`}XpLn1__abHwk7(stth>9k!j$T#yn^Q`xr%^zz|m+D`NEWxv#*+-1Ue~ z8Y7}@sGc9yD`)3^0`)ZN3LHVD(KJfTD3LHg?E~KM#*c;M8pgs1Vbg?{UnCbfpUS`J zdevn~IH2(vQ==O>jfT!8A6o@C>?3K?+P=z4X&01$0S{uX>!RPaTC)7%o7~NyT}38dI`0%&ZWxb9Lm_Le&HH3eE73!@?&5?g z*=`jjucFq-*vl@WXN4w~+akZF94BljlQ(}Xk{2AAP=(>&Q{dE013aPqsA~9L?LqR| zb8ca0z&Izj;^j3Mk4~KS0!%P6u|Ku*i}Y!lJ*(Ar3iszww)P3aqNf5k|55vz!N?WV zl{JOzKySpoCbh)=d#baQ^JA>Q-W96v!iw)lhIeTP+vf%NhEyXk( z=zTIrsm4cAIF&&Gn|!vV&;{7rA=^+Hy2P05>cV1lZq#0iFms>1Yu`f(jj_|C+&x?E z92{$Nj~D(8!a~&`Y ziRY~9^*H{CGxUvrU254rlwH@?Fy@}p9^O&0o(w7TXLK=lH<0Bv)72IW3YTNdkjK60 z3H17S+HaFQ8mpQygxRi-8J$o4jK%iFN8F{_1z%lH?7XFy5MHdHd25OLTKf9g&ms28s=?G9q^-(W5MN{WA>TzZK#G$r-l=IirXa0%u}R&#dzbA)Yuw%fkRONwqk$K86SP`&&jQe`a3>thPLq-J-3Ff)Pb)O^x{~Q zX5TcUB5(`Q4@u$>R*)xLI4<$=#xc?c>EBxQHK=LK2BoV%rD0&N8(TsR`vBX;h3{OW z`EFDn`@TA+ThHv%LF~tW$$>O~%E_g&#qt!rZJ+}jC{GweI_J@@naLR4g|)v__<-P0 zV}xXHP&mFi8e(1MklxE(^tq^HJM&upysoFs2YJ-pA`Tq8?(TDi$bNf+@C3to1#Lb& z$qEEZQ0?gT|H|Gl#I567-U8=|-u#z)AWNLr!<>hekO+}6buklP6xoHtX@O+6Qu;a= z6(I)-!ne8i3Yx6}GHNN4$rYBZJBb-TKWNt2PT42#joaIAbNARmUVdpxjOxe%f32Ep zD7(Ls8GGQ*1qntYEMe!#kJW1Vp*rJ@dM}O+KJjV(-TLr$VdbvsM>W4yX0cvIPW2rJ zvoahbf<4Z>dVOQ?c>n3s*#6B9t4hA;m>W4?70oc%i1*4GbH&m)A4=SgnIXL z_j{o|_G+=Hny7J%6;8qDDQpby5l$AwHP_jK6}kx~%!xaB$9>#Sw{=e=Zi)BZ*VE_= zPT!C%<2h@kD^)!edHxiW<6zIL{ul3O-urvhz%1w461^9G(}vq})@Tg2#g zHAJso5;INT8Pr3QB?iEoWeuw&C*8t?idxGy{z6^eWdHJHd?`D>{Oc_EM)s}*eKqAA zeq@LAL%WW8bs_v#2~#(+pumjCidN||{FadtM?boG^UALA!?@4$A344z%WIlOme+ir z|2dwhOSQ^edOLL$Ah@oCO$pw_Zw!^i^kSHQJ!!-ZM4Vb7vPr z+PR;2!sy7X`wO+xAQNzS%B$}E(FX6P0^4imig*u3A%60I=hVP!z49c095 z$4k23WXV!l*4u+~mvRrK`;tCk2bhZj^mF9o$}^HOyv}vX$$#Mwl3z`0zlZIg&(I)# z)Lv@XfOG$fuw8Uh@oS>GH6?{$6^AnK3-@7n0&g&r^q!?8 z6Go&~sXtJmVfbE^0+DZ`P)s^>G=7@TPhN|5Nm9?z4-e7EC!z@7L_2PP@-QOXM}0TR zI-!d>HQrv<$hK4C;kK!zOH6x(l|!lH8xv^N);BX^#~N067OqXtyFp6chbL(UZw;~E zcafOIHah}t_2|FDBNZ$QT`u;0$a`o7g5HcgBhF!(EioH@1)9fI ze2nVq&pyWpn#pb;=VEpE5v!m`N40nrcb)0*4hrrM<&0so-FIN?2Z9vd&#)wrtVD;N zH&5rzf9U!+Tt$Zzo(nA3Yy4}v!;v$xYwR0LJx-w|P)IpIzr6{N#K54C-c5IH&FGRI z-<}=NXQZNM-jWjt-+L67A@&{RRB&|=`TNLDu2%G@7V^S~<3>;f_LB!@G_6Ia&ZyT* z8q5IASOfISLlV&}1Ww50gAleqgJI>T%+EZP<(6^ZcueksbD$;*zcjPvHWi zQE85NfbseYym~J-xt5=t!)7hCUot?m5IqBU=q|&&U3Hh?ZsZiiADg;{H|9*u)b%6C ze(HA6rGGMfPce8X?ntdFSM*=}41G_EZ|h>i$*SQ%-d#Q9^h|i*I0MdubXW(0D2Z4 z4^wqfv2SfCk+f54d`rf|U3)gYSsK!lyu#PULhi|7$UhnBXr_Viz*JpsXXj;%NDHd_ z#HK9JMwv>$fcE%gqS(FTtgt963Sud7EaH>H@P}-d&T!oNy{awd;;UC*`FTy;ni089 z(Q5gC!#jW6olrXke*5FfcD-WGj;zq6Z5Tu`H)P z%E7X~zJ1FKL-BWEB%>i6%2hl$n|y~7dcOoiah2YQz0+4!@=%(6Z$>d#fgMUA#cY2% zw#iX)!Ny%Je4n4^nH$m#b-&BbYmLam&iu7}?usprcQw9qwoZ%AtdtBDh}-zml!hPf zt>=%E)O8T+$r77R0;m}Tt4|k%n+|^vb#k<*EaM;hvwumBHxvW>O)$v-B5A zP{eF^kF(nR=&zm(#$jD%0Y>wDKl)nDHU0J;6?)0gwxmX-Hp}hdr#=YlkrywFq64P7 z8@cIN9owgrUBd}~pmQe@3DMsqfvb9SbPcF1m+#C>602%L3GIlB>qH%_ zoetN|aJM2q6PWXe-QXIA!a9|>eRyT~&)>>+ z`Eoti7yRf1;O+KWyFov;^RuVFW|yevAF}@p82uu{U*G{?IdAs+V;OKL0{H(O7oczr zfP#JgBdfm`=WjyJH6dHX+zNL8LFmF=ly&0ZERDin`u9a%lA94`+{hK-cnSVW!5u#e z_0=p8_!Fl2x(z>g#Me6X0N9N3UdZ~hN2zqSi~Ml*!nKl1xL$h&`o9)RaXUV`_QyW1)^+KPT9f5a@f$h}y=XwrOf2|A{jeVF~ne@XouK`}iUpz(WioU@Gyh{7iGOTEK38Uyb-!fS`(XzF(eYnvKLnUFcl+542*PXvF3|7aVEz9~{NNwt{G;8s z2|G^$e%LRYeQFL%fJK5IxcvO%f8-A2YI7+cZ%HbBf5c}ZH*6`(na;1p=( zGWpgB`}>>V)8g;O`+L3r+Y@}U&C-2GSNLx2DCXkCS%!tR zjV6tzD}p^NN-%GL8^q38MMJ{fM}mEn_&dDchi;twML?Q_)K$FKcgGxT|dKk56YO<<$uUuhmz@q5%?%s~QM88(W^ zSsI;I%KTjX0n2h{GwQnO1h9{kz-$Tm%66*$L=k`S-M=*|^#vOMT!3DVKTCZ(ML(zn z{FdKn{{^c*;{RFMSI-y;$X>T-nICQ{)Xp%Wm}w zVSp6Csp4+!^jp1AkQ9KVj;zY!LQfms?|X3)2LOGS#{DzQt}#G%u{XC>(8OCdZc zVc&$izf=8Zt+f@e-SBwAn=FJ{wo$p z_`f5X)o+h(zlTKLAX~+(WB}~?c7h)@7*D{M@7ZE-*5n}tFhGJoQS(nFCfT@?JoWBp9G_Fr7q%M5|Y0if$o;4=$=O3>G9m%m5M(6h0kUkAJo z`-;0nUI9x}7GU>M2BRx*BQgj4qK-WNN$7VH$4T(7mf$}_i$5~}dHgqJ5cdFxYyH#u zAMN(&{%b-XrvEb7heFRh08vAfuPrGEz1erm!_%l`-ZXI6`+B;>c~*~Jq6Nt#FNbG5== zKG*+3RIYB6ZDto5kfqV>2m8bS5NXL(@S3=wE0>Ix0_ZP>>KZUi0{vwvg>e${W5mh& zJXL~!uGZ7EK3(&-B>WR4@CWPjm$cqp^I+Zi`*q>J>lpECv)|+u@rw9rmPU^bInFC) zv$(^Wt@g>%Xx3ni|7qe;kyp(8YY4mz`;zE%(i5JC8aX?ZCA3Ln~ zC~=K=UF1#ReQ`-j`%UBjU%rFHeIjonZ;IcDZ>GCv@ZEn}Og7ufT9G%2&EneB|1XX0 zy^u$UM?~IaHi~=gI6Ax+e$OMt46y{6pv_{N_=EUDmPQ%{jEBdHe~7$;ST3%#JMia4 zpC0yoeo;)aY|WQN-a#x9W3n{TXyD~NNh}k22h(CFg)2;W_7;7+NleB_@m&kJS&Soo zNAjpRJWC^u3a!+qAQP>#SSOa)y>^N?*wU!`cT(2oa4}v?vHzz>5V+GBY!Eky1G6;J zXmV!S)nbjvyAW&a#PT=sN85#`o55|O*k6ox7~`BWU)h*MjG8=n49lRv9Q*dG6`}~-VryMcVEzUmCqxDGatF@6W{pqO}JL{afNMX4v~i zI_9U5M%yQaJ;e#)G839NyP?3pE*6NHR`36FSsH1i(U5Z3)$9rvird9wVg-t7b_VOk zD;6tpoBh8XErw=kq>)C4o*Z^EJHrHVszuNJOx$dD?&rj-Ca@kaJN!%BFMcoP*?;p? h%d*@j<>L38@juW58%rJ)s)hgn002ovPDHLkV1g>l@F@TQ literal 0 HcmV?d00001 diff --git a/docs/6c831ee080ce0f905632cb113dfa17d9.css b/docs/6c831ee080ce0f905632cb113dfa17d9.css new file mode 100644 index 000000000..f24fa09f6 --- /dev/null +++ b/docs/6c831ee080ce0f905632cb113dfa17d9.css @@ -0,0 +1,9 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#324b64;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:2;font-size:1rem;-webkit-overflow-scrolling:touch;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{overflow:auto;padding:.75rem 1.25rem}pre.is-option{margin:0;padding:0}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f6f9;border-radius:.25rem}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8ca2d3}.token.attr-name,.token.selector{color:#da7800}.token.punctuation{color:#93a0c7}.namespace{opacity:.7}.token.tag{color:#e22f70}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol{color:#0087ca}.language-css .token.string,.token.attr-value,.token.builtin,.token.char,.token.inserted,.token.string,.token.url{color:#008a7e}.style .token.string,.token.entity,.token.operator{color:#f53737}.token.atrule,.token.important,.token.keyword{color:#7552ff}.token.function{color:#396dff}.token.regex,.token.variable{color:#00a8d4}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}html{font-size:.95rem}body{font-family:-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background:#f6f7fd;color:#324b64;line-height:1.5}a{color:#157bda;text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}a:hover{color:#0090ff}hr{border:0;border-top:1px solid rgba(0,32,128,.1)}ol,ul{padding-left:1.25rem}.container{max-width:1000px;padding:0 2%;margin:0 auto}.main>.container{padding:0}@media (min-width:579px){.main>.container{padding:0 2%}}@media (min-width:768px){html{font-size:1rem}}@media (min-width:992px){.content-wrapper{margin-left:200px}} + +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */.hamburger{padding:1rem;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible;outline:0}.hamburger:hover{opacity:.7}.hamburger-box{width:40px;height:20px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:36px;height:2px;background-color:#e3f5ff;border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{background-color:transparent;transform:rotateY(180deg)}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{background-color:transparent;transform:rotateY(-180deg)}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(-180deg)}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg)}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg)}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{background-color:transparent;transform:rotateX(180deg) rotateY(180deg) rotate(-180deg)}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transform:rotate(-90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s}.hamburger--elastic .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(135deg);transition-delay:75ms}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-270deg);transition-delay:75ms}.hamburger--elastic-r .hamburger-inner{top:2px;transition-duration:.275s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-135deg);transition-delay:75ms}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(270deg);transition-delay:75ms}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic.is-active .hamburger-inner:before{left:-80px;top:-80px;transform:translate3d(80px,80px,0) rotate(45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic.is-active .hamburger-inner:after{right:-80px;top:-80px;transform:translate3d(-80px,80px,0) rotate(-45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent}.hamburger--emphatic-r.is-active .hamburger-inner:before{left:-80px;top:80px;transform:translate3d(80px,-80px,0) rotate(-45deg);transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--emphatic-r.is-active .hamburger-inner:after{right:-80px;top:80px;transform:translate3d(-80px,-80px,0) rotate(45deg);transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{opacity:0;transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-property:transform,opacity;transition-timing-function:ease;transition-duration:.15s}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spin-r .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s ease-out .12s}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-duration:.13s;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transform:translate3d(0,-10px,0) rotate(-45deg);transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;opacity:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transform:rotate(90deg);transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transform:rotate(90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transform:rotate(-90deg);background-color:transparent;transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transform:rotate(-45deg);transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(45deg);transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s}.hamburger--squeeze .hamburger-inner{transition-duration:75ms;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transform:rotate(45deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;opacity:0;transition:top 75ms ease,opacity 75ms ease .12s}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg);transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s}.hamburger--vortex .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transform:rotate(765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-duration:.2s;transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-duration:0s;transition-delay:.1s;transition-timing-function:linear}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transform:rotate(-765deg);transition-timing-function:cubic-bezier(.19,1,.22,1)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.sidebar{background:#202e4e;position:fixed;z-index:2;width:100%;height:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2)}.sidebar__menu{position:absolute;font-weight:700;border:none;text-align:left;text-transform:uppercase;left:0;top:0;padding:.75rem 1rem;outline:0}.sidebar__menu-icon{height:24px}.sidebar__links{background:#202e4e;transition:transform .6s cubic-bezier(.165,.84,.44,1);transform-origin:0 0;transform:rotateX(-90deg);visibility:hidden;opacity:0;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:378px;margin-top:44px;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,128,.2);padding-bottom:1rem}.sidebar__links.is-active{transform:rotateX(0);visibility:visible;opacity:1}.sidebar__link{display:block;color:#e3f5ff;padding:.5rem .75rem;transition:all .1s ease-out;border-left:2px solid #576a85;margin:.5rem;font-weight:500;font-size:.95rem}.sidebar__link:hover{color:#88f4ff;background:hsla(0,0%,100%,.1);border-color:pink}.sidebar__section{padding:0 .75rem}.sidebar__section-heading{text-transform:capitalize;color:#e3f5ff;margin-bottom:.5rem}@media (min-width:992px){.sidebar{left:0;top:0;bottom:0;width:15%;max-width:250px;min-width:200px;height:100%;background:linear-gradient(-30deg,#2a3d67,#14264e);box-shadow:.4rem .4rem .8rem rgba(0,32,64,.1);overflow-y:auto;color:#fff}.sidebar::-webkit-scrollbar-track{background-color:rgba(0,0,0,.6)}.sidebar::-webkit-scrollbar{width:10px;background-color:#4b6191}.sidebar::-webkit-scrollbar-thumb{background-color:#4b6191}.sidebar__links{background:none;box-shadow:none;visibility:visible;opacity:1;transform:rotateX(0);margin-top:0;max-height:none}.sidebar__menu{display:none}}.header{position:relative;padding:5rem 1rem 4rem;background:#5b67ff;background:linear-gradient(45deg,#5cd2ff,#5b67ff,#681ae4);color:#fff;margin-bottom:2rem;text-align:center;overflow:hidden;z-index:1}.header:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOTIwIDEwODA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMl8pO2ZpbGw6I0ZGRkZGRjt9LnN0MntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Qze2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjIuODM1O30uc3Q0e2NsaXAtcGF0aDp1cmwoI1NWR0lEXzRfKTtmaWxsOiNGRkZGRkY7fS5zdDV7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNl8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDZ7Y2xpcC1wYXRoOnVybCgjU1ZHSURfOF8pO2ZpbGw6I0ZGRkZGRjt9LnN0N3tjbGlwLXBhdGg6dXJsKCNTVkdJRF84Xyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0OHtjbGlwLXBhdGg6dXJsKCNTVkdJRF8xMF8pO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6Mi44MzU7fS5zdDl7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTBfKTtmaWxsOiNGRkZGRkY7fS5zdDEwe2NsaXAtcGF0aDp1cmwoI1NWR0lEXzEyXyk7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjgzNTt9LnN0MTF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfMTJfKTt9PC9zdHlsZT48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfMV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTQyLjksOTEwLjNjNDQuMy0zNy45LDYxLjUtODIuNiw2Ni43LTEzMC4zIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NjMuOCw3MjQuOGMxMzIuMyw5LjQsMTQ3LjQtMTc5LjQsMjgxLjgtMTY5LjgiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTcwMi4zLDM4MS4yYzYuNyw3LjcsMTguMyw4LjUsMjYsMS44YzcuNy02LjcsOC41LTE4LjMsMS44LTI2Yy02LjctNy43LTE4LjMtOC41LTI2LTEuOEMxNjk2LjQsMzYxLjksMTY5NS42LDM3My42LDE3MDIuMywzODEuMiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTg2LjQsNzQzLjljMTMuNCwxNS40LDM2LjcsMTcuMSw1Mi4xLDMuN2MxNS40LTEzLjQsMTctMzYuNywzLjYtNTIuMWMtMTMuNC0xNS40LTM2LjctMTcuMS01Mi4xLTMuN0MxNTc0LjYsNzA1LjEsMTU3Myw3MjguNSwxNTg2LjQsNzQzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA3LjksNDQ3LjFjLTE3LjMsNTkuMy03LjMsMTAyLjIsMTgsMTQ3LjMiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTA1LjIsNjc5LjljLTExMi4zLDYyLjEtMjcsMjE5LjgtMTQxLjEsMjgyLjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjY0LjYsOTc2LjJjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNlM2NzQuNCw5NzksNjY0LjYsOTc2LjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzE4LjksOTY1LjVjLTkuOC0yLjgtMjAsMi45LTIyLjgsMTIuNmMtMi44LDkuOCwyLjksMjAsMTIuNywyMi44YzkuOCwyLjgsMjAtMi45LDIyLjgtMTIuNkMzMzQuNCw5NzguNSwzMjguNyw5NjguMywzMTguOSw5NjUuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NjQuMiw2MDljLTE5LjYtNS42LTQwLjEsNS43LTQ1LjcsMjUuM2MtNS42LDE5LjYsNS43LDQwLDI1LjQsNDUuN2MxOS42LDUuNiw0MC4xLTUuNyw0NS43LTI1LjNDNTk1LjEsNjM1LjEsNTgzLjgsNjE0LjYsNTY0LjIsNjA5Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTU5Mi44LDY4OS43YzU3LjksNzIuMywxMTYuMywxNDQuOCw4Ni4zLDI0Ny41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzNjgsNDE0LjNjLTc4LjgsMjkuNC0xMDIuMS04OC0xODIuMS01OC4yIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NzQsMzUwLjJjLTc0LTM3LTEzOS4xLTE2LjktMjAyLjUsMTUuNyIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzExLjItMjEuN2MtNTAuMywxMzAuNywxOS45LDI2Ny4yLDkwLDM2OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExNTEuNSwzNzQuM2M0LjQtOS4yLDAuNS0yMC4yLTguNy0yNC42Yy05LjItNC40LTIwLjItMC41LTI0LjYsOC43Yy00LjQsOS4yLTAuNSwyMC4yLDguNywyNC42QzExMzYuMSwzODcuNCwxMTQ3LjIsMzgzLjUsMTE1MS41LDM3NC4zIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0NTguOSw0MDkuMmM4LjgtMTguNCwxLTQwLjQtMTcuNC00OS4yYy0xOC40LTguOC00MC41LTAuOS00OS4zLDE3LjVzLTEsNDAuNCwxNy40LDQ5LjJDMTQyOCw0MzUuNCwxNDUwLjEsNDI3LjYsMTQ1OC45LDQwOS4yIi8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05NDgsODguMyIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8zXyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzRfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8zXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MyIgZD0iTTExMzUuNSwzMTUuNWMtNC42LTEwNS4xLTI0LjItMTE5LjMtMTAxLjktMTY5LjgiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNOTgxLjUsMTUzLjVjMjAuNC0wLjksMzYuMi0xOC4xLDM1LjMtMzguNGMtMC45LTIwLjMtMTguMS0zNi0zOC41LTM1LjFTOTQyLjEsOTgsOTQzLDExOC4zQzk0My45LDEzOC42LDk2MS4xLDE1NC40LDk4MS41LDE1My41Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMDA3LjgsNzIuOCIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF81XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzZfIj48dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF81XyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIwMSw3ODYuNGM2LDgyLjktMTE0LjUsODQuMS0xMDguNCwxNjguMyIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0yMTkuNSw0ODMuMWMtNzMuMyw3OS4yLTYzLjksMTExLjctNDEuNiwyMDEuMSIvPjxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0tOTIuOSw0OTcuMmMxNDIuNCw2NS45LDE4My40LDM3LjYsMjk3LjctMzUuMSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTQwLjksNzQ1LjgiLz48Zz48ZGVmcz48cmVjdCBpZD0iU1ZHSURfN18iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF84XyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfN18iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xMDEuMSw5OTIuN2MtNy43LTYuNy0xOS4zLTUuOS0yNiwxLjhjLTYuNyw3LjctNS45LDE5LjMsMS44LDI2czE5LjMsNS45LDI2LTEuOEMxMDkuNiwxMDExLDEwOC44LDk5OS40LDEwMS4xLDk5Mi43Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTIxNi45LDcwNi4yYy0xNS40LTEzLjQtMzguOC0xMS44LTUyLjEsMy42Yy0xMy40LDE1LjQtMTEuNywzOC43LDMuNyw1Mi4xYzE1LjQsMTMuNCwzOC44LDExLjgsNTIuMS0zLjZDMjM0LDc0Mi45LDIzMi4zLDcxOS42LDIxNi45LDcwNi4yIi8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTExNzAuNSwxMDY2LjljLTMzLTEyOC44LDE1MS45LTE3NS44LDExOC4zLTMwNi42Ii8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTE1MDIuNSw5NjkuNGMtOC43LTUuMi0xMS42LTE2LjYtNi4zLTI1LjNjNS4yLTguNywxNi42LTExLjUsMjUuMy02LjNjOC43LDUuMiwxMS42LDE2LjYsNi4zLDI1LjNDMTUyMi41LDk3MS44LDE1MTEuMiw5NzQuNywxNTAyLjUsOTY5LjQiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNMTI1OC44LDcyNC4xYy04LjctNS4yLTExLjYtMTYuNi02LjMtMjUuM2M1LjItOC43LDE2LjYtMTEuNSwyNS4zLTYuM2M4LjcsNS4yLDExLjYsMTYuNiw2LjMsMjUuM0MxMjc4LjksNzI2LjYsMTI2Ny42LDcyOS40LDEyNTguOCw3MjQuMSIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDk0LjQsMzQyYy01OS43LTI5LjktODguMS0yOS44LTE1My45LTciLz48cGF0aCBjbGFzcz0ic3Q3IiBkPSJNODc0LjEsMjk3LjNDODMwLjQsMTcxLjQsNjU1LDIzOS4xLDYxMC42LDExMS4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTU0NS41LDQwMy45YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNTMwLDQxNi45LDU0MSw0MTMuMSw1NDUuNSw0MDMuOSIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik02MTYuMSw2NS43YzQuNS05LjEsMC43LTIwLjItOC41LTI0LjZjLTkuMi00LjUtMjAuMi0wLjctMjQuNyw4LjVjLTQuNSw5LjEtMC43LDIwLjIsOC41LDI0LjZDNjAwLjYsNzguNiw2MTEuNiw3NC44LDYxNi4xLDY1LjciLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNOTI1LDM2OC45YzktMTguMywxLjQtNDAuNC0xNy00OS40Yy0xOC4zLTguOS00MC41LTEuMy00OS40LDE3Yy05LDE4LjMtMS40LDQwLjQsMTcsNDkuNEM4OTMuOSwzOTQuOCw5MTYsMzg3LjIsOTI1LDM2OC45Ii8+PHBhdGggY2xhc3M9InN0NyIgZD0iTTEwMzIuMiw1OTIuNGMxLjgsMTA0LjUtNzIuOCwxNTguOC0xNDcuNCwyMTMuNiIvPjxwYXRoIGNsYXNzPSJzdDciIGQ9Ik0xMDc0LjksNTMwLjRjOTAuNSwwLDEzNi41LDY4LjMsMTgyLjgsMTM2LjYiLz48cGF0aCBjbGFzcz0ic3Q2IiBkPSJNODUxLjUsODQzLjJjLTQuNiw5LjEtMTUuNywxMi43LTI0LjgsOC4xYy05LjEtNC42LTEyLjctMTUuNy04LjEtMjQuOHMxNS43LTEyLjcsMjQuOC04LjFDODUyLjUsODIzLDg1Ni4xLDgzNC4xLDg1MS41LDg0My4yIi8+PHBhdGggY2xhc3M9InN0NiIgZD0iTTEwNDAuNCw1NTMuNGMtNC42LDkuMS0xNS43LDEyLjctMjQuOCw4LjFjLTkuMS00LjYtMTIuNy0xNS43LTguMS0yNC44YzQuNi05LjEsMTUuNy0xMi43LDI0LjgtOC4xQzEwNDEuNCw1MzMuMiwxMDQ1LDU0NC4zLDEwNDAuNCw1NTMuNCIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTgyMCwyMTMuOSIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNjUxLjgsNzAuNSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF85XyIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9IlNWR0lEXzEwXyI+PHVzZSB4bGluazpocmVmPSIjU1ZHSURfOV8iICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiLz48L2NsaXBQYXRoPjxwYXRoIGNsYXNzPSJzdDgiIGQ9Ik0xNzI0LjYsMzE0LjJjMTMuOS03NS0xMDIuNy02Mi4zLTg4LjYtMTM4LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMTY3OS43LDExNS4yYzAsMjAuNC0xNi42LDM2LjktMzcsMzYuOWMtMjAuNCwwLTM3LTE2LjUtMzctMzYuOWMwLTIwLjQsMTYuNi0zNi45LDM3LTM2LjlDMTY2My4yLDc4LjIsMTY3OS43LDk0LjgsMTY3OS43LDExNS4yIi8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTU0NS4yLDQwLjdjLTU4LjktMTAtMTA1LjIsNy0xNDYuMiwzNS41Ii8+PHBhdGggY2xhc3M9InN0OCIgZD0iTTM1NS44LDE1NC40YzE3LjksMTAzLjUtMTMxLjQsMTI5LjQtMTEzLjIsMjM0LjUiLz48cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMzYuNywyNTYuMmMxLjctMTAtNS4xLTE5LjUtMTUuMi0yMS4yYy0xMC4xLTEuNy0xOS42LDUuMS0yMS4yLDE1LjFjLTEuNywxMCw1LjEsMTkuNSwxNS4yLDIxLjJDMjUuNSwyNzMsMzUsMjY2LjIsMzYuNywyNTYuMiIvPjxwYXRoIGNsYXNzPSJzdDkiIGQ9Ik0yNTAuMiw0MjMuMWMxMC4xLDEuNywxNi44LDExLjIsMTUuMiwyMS4ycy0xMS4yLDE2LjgtMjEuMiwxNS4xYy0xMC4xLTEuNy0xNi44LTExLjItMTUuMi0yMS4yQzIzMC42LDQyOC4yLDI0MC4xLDQyMS40LDI1MC4yLDQyMy4xIi8+PHBhdGggY2xhc3M9InN0OSIgZD0iTTM5MC4xLDExNC45YzMuNC0yMC4xLTEwLjEtMzkuMS0zMC4yLTQyLjVzLTM5LDEwLjItNDIuMywzMC4zYy0zLjQsMjAuMSwxMC4xLDM5LjEsMzAuMiw0Mi41QzM2Ny44LDE0OC42LDM4Ni43LDEzNSwzOTAuMSwxMTQuOSIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzY5LjYsODAuOSIvPjxnPjxkZWZzPjxyZWN0IGlkPSJTVkdJRF8xMV8iIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJTVkdJRF8xMl8iPjx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzExXyIgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIvPjwvY2xpcFBhdGg+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik03MTQuNyw5NjljMTYwLjUtNjIuOCwyODguNSwyOC43LDQxNy4xLDExOS45Ii8+PHBhdGggY2xhc3M9InN0MTEiIGQ9Ik0xNjA3LjEsNjU4LjIiLz48cGF0aCBjbGFzcz0ic3QxMCIgZD0iTTMxMy41LDE1Mi41Yy02NS40LDY1LjYtMTMxLDEzMS42LTIzNi40LDExMy43Ii8+PHBhdGggY2xhc3M9InN0MTAiIGQ9Ik04MzguNSwzODQuMWMtODAuNiw0NC4zLTE2MS42LDg4LjMtMjU3LjEsNDAuNSIvPjxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNMTYwNy4zLDY2NS45Yy04LjYtOTUuMy0yMS4xLTE4Ni45LDY0LjEtMjU5LjkiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTE0MTguMiwzOTUuNCIvPjwvc3ZnPg==);width:150%;height:150%;top:0;opacity:.1;z-index:-1}.header:after,.header:before{content:"";position:absolute;left:0}.header:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxLjQxNCI+PHBhdGggZD0iTTEyIDEybDEyIDEySDBsMTItMTJ6IiBmaWxsPSIjZjZmN2ZkIi8+PC9zdmc+);background-size:24px 24px;width:100%;height:24px;bottom:-1px}.header__logo{height:146px;user-select:none}.header__heading{font-weight:200;font-size:3rem;margin:1rem 0;line-height:1.2}.header__description{font-size:1.5rem;max-width:600px;margin:0 auto 1rem;font-weight:300;letter-spacing:.4px}.header__css{background:-webkit-linear-gradient(-45deg,#f8ffc0,#88f4ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:4rem}.header__github-button{color:#fff}@media (min-width:579px){.header{padding:6rem 0 5rem}.header__heading{font-size:3.75rem}}@media (min-width:992px){.header{padding:2.5rem 0 5rem}}.snippet{position:relative;background:#fff;padding:2rem 5%;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.1),0 0 0 1px #f0f2f7;border-radius:.25rem;font-size:1.1rem;margin-bottom:1.5rem}.snippet h3{font-size:2rem;padding:.5rem 0;border-bottom:1px solid rgba(0,32,128,.1);margin-bottom:1.25rem;margin-top:0;line-height:1.3}.snippet h3 span:not(.snippet__tag){margin-right:.75rem}.snippet code:not([class*=lang]){background:#fcfaff;border:1px solid #e2ddff;color:#4b00da;border-radius:.15rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;padding:.2rem .4rem;margin:0 .1rem}.snippet ol{margin-top:.5rem}.snippet ol>li{margin-bottom:.5rem}.snippet>p{margin-top:.5rem}.snippet h4{display:inline-block;margin:1rem 0 .5rem;font-size:1.1rem;line-height:2}.snippet h4[data-type]{background:#333;padding:0 .5rem;border-radius:3px;font-size:.9rem;text-transform:uppercase;border:1px solid #c6d6ea;border-bottom-color:#b3c9e3;background:#fff;box-shadow:0 .25rem .5rem -.1rem rgba(0,32,64,.15)}.snippet h4[data-type=HTML]{color:#fff;border:none;background:linear-gradient(135deg,#ff4c9f,#ff7b74)}.snippet h4[data-type=CSS]{color:#fff;border:none;background:linear-gradient(135deg,#7983ff,#5f9de9)}.snippet h4[data-type=JavaScript]{color:#fff;border:none;background:linear-gradient(135deg,#ffb000,#f58818)}.snippet__browser-support{display:inline-block;font-size:2rem;font-weight:200;line-height:1;margin:.5rem 0}.snippet__subheading.is-html{color:#e22f70}.snippet__subheading.is-css{color:#0a91d4}.snippet__subheading.is-explanation{color:#4b00da}.snippet__support-note{color:#9fa5b5;font-weight:700}.snippet__requires-javascript{position:absolute;background:red;background:linear-gradient(145deg,#ff003b,#ff4b39);color:#fff;padding:.25rem .5rem;font-size:.9rem;transform:rotate(20deg);font-weight:700;top:1rem;right:0}.snippet-demo{background:#f5f6f9;border-radius:.25rem;padding:.75rem 1.25rem}.snippet-demo.is-distinct{background:linear-gradient(135deg,#ff4c9f,#ff7b74)}@media (min-width:768px){.snippet__requires-javascript{right:-.5rem}}.back-to-top-button{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:2rem;font-weight:700;background:#fff;width:4rem;height:4rem;position:fixed;right:2rem;bottom:2rem;border-radius:50%;user-select:none;box-shadow:0 .4rem .8rem -.1rem rgba(0,32,128,.15);transition:all .2s ease-out;visibility:hidden;opacity:0;z-index:1;border:1px solid rgba(0,32,128,.1);outline:0}.back-to-top-button:focus,.back-to-top-button:hover{transform:scale(1.1);box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15);color:#35a8ff}.back-to-top-button:focus{box-shadow:0 .8rem 1.6rem -.2rem rgba(0,32,128,.15),0 0 2px 2px #35a8ff;outline-style:none}.back-to-top-button.is-visible{visibility:visible;opacity:1}.tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:1rem}.tags,.tags__tag{position:relative}.tags__tag{display:inline-block;top:-1px;font-weight:700;font-size:.75rem;text-transform:uppercase;color:#8385aa;white-space:nowrap;border:1px solid #c8cbf2;border-radius:2px;vertical-align:middle;line-height:2;padding:0 .5rem;margin-right:.5rem;transition:all .1s ease-out;outline:0}.tags__tag.is-large{font-size:.95rem;border-radius:.2rem}.tags__tag.is-large .feather{top:-2px;width:18px;height:18px}.tags__tag .feather{vertical-align:middle;margin-right:.25rem;position:relative;top:-1px;width:14px;height:14px}.tags button.tags__tag{user-select:none;cursor:pointer;margin-bottom:1rem;margin-right:1rem;background:#fff}.tags button.tags__tag:hover{background:#8385aa;border-color:#8385aa;color:#fff}.tags button.tags__tag.focus-visible:focus{box-shadow:0 0 0 .25rem rgba(131,133,170,.5)}.tags button.tags__tag:active{box-shadow:inset 0 .1rem .1rem .1rem rgba(0,0,0,.2);background:#666894;border-color:#666894}.tags button.tags__tag.is-active{background:#7983ff;border-color:#7983ff;color:#fff}.tags button.tags__tag.is-active.focus-visible:focus{box-shadow:0 0 0 .25rem rgba(121,131,255,.5)} \ No newline at end of file diff --git a/docs/6c831ee080ce0f905632cb113dfa17d9.js b/docs/6c831ee080ce0f905632cb113dfa17d9.js new file mode 100644 index 000000000..dbee91ef2 --- /dev/null +++ b/docs/6c831ee080ce0f905632cb113dfa17d9.js @@ -0,0 +1,28 @@ +require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); +},{}],21:[function(require,module,exports) { +var global = (1,eval)("this"); +var e=(0,eval)("this");!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=49)}([function(e,n,i){var t=i(36)("wks"),l=i(15),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return t[e]||(t[e]=o&&r[e]||(o?r:l)("Symbol."+e))}).store=t},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(1),l=i(7),r=i(8),o=i(10),a=i(11),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,f=e&c.S,d=e&c.P,v=e&c.B,g=u?t:f?t[n]||(t[n]={}):(t[n]||{}).prototype,m=u?l:l[n]||(l[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,t):d&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),d&&M[y]!=h&&(M[y]=h)};t.core=l,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,i){var t=i(9),l=i(29),r=i(31),o=Object.defineProperty;n.f=i(5)?Object.defineProperty:function(e,n,i){if(t(e),n=r(n,!0),t(i),l)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){e.exports=!i(12)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n){var i=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=i)},function(e,n,i){var t=i(4),l=i(14);e.exports=i(5)?function(e,n,i){return t.f(e,n,l(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){var t=i(2);e.exports=function(e){if(!t(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var t=i(1),l=i(8),r=i(6),o=i(15)("src"),a=Function.toString,c=(""+a).split("toString");i(7).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||l(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||l(i,o,e[n]?""+e[n]:c.join(String(n)))),e===t?e[n]=i:a?e[n]?e[n]=i:l(e,n,i):(delete e[n],l(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var t=i(32);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(34),l=i(19);e.exports=function(e){return t(l(e))}},function(e,n,i){var t=i(11),l=i(38),r=i(39),o=i(9),a=i(22),c=i(40),y={},p={};(n=e.exports=function(e,n,i,h,x){var s,u,f,d,v=x?function(){return e}:c(e),g=t(i,h,n?2:1),m=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(r(v)){for(s=a(e.length);s>m;m++)if((d=n?g(o(u=e[m])[0],u[1]):g(e[m]))===y||d===p)return d}else for(f=v.call(e);!(u=f.next()).done;)if((d=l(f,g,u.value,n))===y||d===p)return d}).BREAK=y,n.RETURN=p},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,i){"use strict";var t=i(52),l=i(3),r=i(10),o=i(8),a=i(6),c=i(13),y=i(53),p=i(24),h=i(59),x=i(0)("iterator"),s=!([].keys&&"next"in[].keys()),u=function(){return this};e.exports=function(e,n,i,f,d,v,g){y(i,n,f);var m,M,w,b=function(e){if(!s&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},A=n+" Iterator",_="values"==d,z=!1,k=e.prototype,S=k[x]||k["@@iterator"]||d&&k[d],H=!s&&S||b(d),V=d?_?b("entries"):H:void 0,O="Array"==n&&k.entries||S;if(O&&(w=h(O.call(new e)))!==Object.prototype&&w.next&&(p(w,A,!0),t||a(w,x)||o(w,x,u)),_&&S&&"values"!==S.name&&(z=!0,H=function(){return S.call(this)}),t&&!g||!s&&!z&&k[x]||o(k,x,H),c[n]=H,c[A]=u,d)if(m={values:_?H:b("values"),keys:v?H:b("keys"),entries:V},g)for(M in m)M in k||r(k,M,m[M]);else l(l.P+l.F*(s||z),n,m);return m}},function(e,n,i){var t=i(55),l=i(37);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(18),l=Math.min;e.exports=function(e){return e>0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(36)("keys"),l=i(15);e.exports=function(e){return t[e]||(t[e]=l(e))}},function(e,n,i){var t=i(4).f,l=i(6),r=i(0)("toStringTag");e.exports=function(e,n,i){e&&!l(e=i?e:e.prototype,r)&&t(e,r,{configurable:!0,value:n})}},function(e,n,i){var t=i(19);e.exports=function(e){return Object(t(e))}},function(e,n,i){var t=i(35),l=i(0)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(86)),l=o(i(88)),r=o(i(89));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){"use strict";var t=i(51)(!0);i(20)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,i=this._i;return i>=n.length?{value:void 0,done:!0}:(e=t(n,i),this._i+=e.length,{value:e,done:!1})})},function(e,n,i){e.exports=!i(5)&&!i(12)(function(){return 7!=Object.defineProperty(i(30)("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(2),l=i(1).document,r=t(l)&&t(l.createElement);e.exports=function(e){return r?l.createElement(e):{}}},function(e,n,i){var t=i(2);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,i){var t=i(9),l=i(54),r=i(37),o=i(23)("IE_PROTO"),a=function(){},c=function(){var e,n=i(30)("iframe"),t=r.length;for(n.style.display="none",i(58).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Box-sizing resetlayout

    Resets the box-model so that widths and heights are not affected by their borders or padding.

    CSS

    html {
    +     30 Seconds of CSS         

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Box-sizing resetlayout

    Resets the box-model so that widths and heights are not affected by their borders or padding.

    CSS

    html {
       box-sizing: border-box;
     }
     *,
    @@ -6,7 +6,7 @@
     *::after {
       box-sizing: inherit;
     }
    -

    Demo

    Demo

    Explanation

    1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
    2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

    Browser support

    98.2%

    ✅ No caveats.

    Clearfixlayout

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +

    Demo

    Demo

    Explanation

    1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
    2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

    Browser support

    98.2%

    ✅ No caveats.

    Clearfixlayout

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -19,7 +19,7 @@
     .floated {
       float: left;
     }
    -

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ✅ No caveats.

    Constant width to height ratiolayout

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
    +

    Demo

    float a
    float b
    float c

    Explanation

    1. .clearfix::after defines a pseudo-element.
    2. content: '' allows the pseudo-element to affect layout.
    3. clear: both indicates that the left, right or both sides of the element cannot be adjacent to earlier floated elements within the same block formatting context.

    Browser support

    99+%

    ⚠️ For this snippet to work properly you need to ensure that there are no non-floating children in the container and that there are no tall floats before the clearfixed container but in the same formatting context (e.g. floated columns).

    Constant width to height ratiolayout

    Given an element of variable width, it will ensure its height remains proportionate in a responsive fashion (i.e., its width to height ratio remains constant).

    HTML

    <div class="constant-width-to-height-ratio"></div>
     

    CSS

    .constant-width-to-height-ratio {
       background: #333;
       width: 50%;
    @@ -57,7 +57,7 @@
     

    CSS

    .unselectable {
       user-select: none;
     }
    -

    Demo

    You can select me.

    You can't select me!

    Explanation

    user-select: none specifies that the text cannot be selected.

    Browser support

    86.3%

    ⚠️ Requires prefixes for full support.

    Donut spinneranimation

    Creates a donut spinner that can be used to indicate the loading of content.

    HTML

    <div class="donut"></div>
    +

    Demo

    You can select me.

    You can't select me!

    Explanation

    user-select: none specifies that the text cannot be selected.

    Browser support

    86.3%

    ⚠️ Requires prefixes for full support. ⚠️ This is not a secure method to prevent users from copying content.

    Donut spinneranimation

    Creates a donut spinner that can be used to indicate the loading of content.

    HTML

    <div class="donut"></div>
     

    CSS

    @keyframes donut-spin {
       0% {
         transform: rotate(0deg);
    @@ -121,7 +121,15 @@
       display: flex;
       justify-content: space-between;
     }
    -

    Demo

    Item1

    Item2

    Item3

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: space-between evenly distributes child elements horizontally. The first item is positioned at the left edge, while the last item is positioned at the right edge.

    Alternatively, use justify-content: space-around to distribute the children with space around them, rather than between them.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Gradient textvisual

    Gives text a gradient color.

    HTML

    <p class="gradient-text">Gradient text</p>
    +

    Demo

    Item1

    Item2

    Item3

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: space-between evenly distributes child elements horizontally. The first item is positioned at the left edge, while the last item is positioned at the right edge.

    Alternatively, use justify-content: space-around to distribute the children with space around them, rather than between them.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Flexbox centeringlayout

    Horizontally and vertically centers a child element within a parent element using flexbox.

    HTML

    <div class="flexbox-centering">
    +  <div class="child"></div>
    +</div>
    +

    CSS

    .flexbox-centering {
    +  display: flex;
    +  justify-content: center;
    +  align-items: center;
    +}
    +

    Demo

    Centered content.

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Gradient textvisual

    Gives text a gradient color.

    HTML

    <p class="gradient-text">Gradient text</p>
     

    CSS

    .gradient-text {
       background: -webkit-linear-gradient(pink, red);
       -webkit-text-fill-color: transparent;
    @@ -146,15 +154,7 @@
         box-shadow: 0 0 0 0.25px;
       }
     }
    -

    Demo

    Text with a hairline border around it.

    Explanation

    1. box-shadow, when only using spread, adds a pseudo-border which can use subpixels*.
    2. Use @media (min-resolution: ...) to check the device pixel ratio (1dppx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.

    Browser Support

    95.0%

    ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.


    *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

    Horizontal and vertical centeringlayout

    Horizontally and vertically centers a child element within a parent element.

    HTML

    <div class="horizontal-and-vertical-centering">
    -  <div class="child"></div>
    -</div>
    -

    CSS

    .horizontal-and-vertical-centering {
    -  display: flex;
    -  justify-content: center;
    -  align-items: center;
    -}
    -

    Demo

    Centered content.

    Explanation

    1. display: flex enables flexbox.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    97.8%

    ⚠️ Needs prefixes for full support.

    Hover underline animationanimation

    Creates an animated underline effect when the text is hovered over.

    Credit: https://flatuicolors.com/

    HTML

    <p class="hover-underline-animation">Hover this text to see the effect!</p>
    +

    Demo

    Text with a hairline border around it.

    Explanation

    1. box-shadow, when only using spread, adds a pseudo-border which can use subpixels*.
    2. Use @media (min-resolution: ...) to check the device pixel ratio (1dppx equals 96 DPI), setting the spread of the box-shadow equal to 1 / dppx.

    Browser Support

    95.0%

    ⚠️ Needs alternate syntax and JavaScript user agent checking for full support.


    *Chrome does not support subpixel values on border. Safari does not support subpixel values on box-shadow. Firefox supports subpixel values on both.

    Hover underline animationanimation

    Creates an animated underline effect when the text is hovered over.

    Credit: https://flatuicolors.com/

    HTML

    <p class="hover-underline-animation">Hover this text to see the effect!</p>
     

    CSS

    .hover-underline-animation {
       display: inline-block;
       position: relative;
    
    From a41dad64a13698c5d9027f33ae6fd634804bc118 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Stefan=20Feje=C5=A1?= 
    Date: Sat, 3 Mar 2018 11:13:59 +0100
    Subject: [PATCH 122/561] add grid-centering
    
    ---
     docs/6c831ee080ce0f905632cb113dfa17d9.js |  8 ++--
     index.html                               | 49 ++++++++++++++++++++++
     snippets/grid-centering.md               | 52 ++++++++++++++++++++++++
     3 files changed, 105 insertions(+), 4 deletions(-)
     create mode 100644 snippets/grid-centering.md
    
    diff --git a/docs/6c831ee080ce0f905632cb113dfa17d9.js b/docs/6c831ee080ce0f905632cb113dfa17d9.js
    index dbee91ef2..d83b4a95e 100644
    --- a/docs/6c831ee080ce0f905632cb113dfa17d9.js
    +++ b/docs/6c831ee080ce0f905632cb113dfa17d9.js
    @@ -1,8 +1,8 @@
    -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight));
     },{}],21:[function(require,module,exports) {
    @@ -25,4 +25,4 @@ var o=(0,eval)("this"),n="function"==typeof Symbol&&"symbol"==typeof Symbol.iter
     "use strict";var t=require("../deps/utils"),e=(0,t.selectAll)(".snippet");EventHub.on("Tag.click",function(l){e.forEach(function(e){(e.style.display="block","all"!==l.type)&&((0,t.selectAll)(".tags__tag",e).some(function(t){return t.dataset.type===l.type})||(e.style.display="none"))})});
     },{"../deps/utils":17}],7:[function(require,module,exports) {
     "use strict";require("focus-visible"),require("normalize.css"),require("prismjs");var e=require("feather-icons"),r=q(e);require("../css/deps/prism.css"),require("../css/index.scss"),require("./deps/polyfills");var s=require("./components/Sidebar"),i=q(s),u=require("./components/BackToTopButton"),o=q(u),n=require("./components/Tag"),c=q(n),t=require("./components/Snippet"),p=q(t);function q(e){return e&&e.__esModule?e:{default:e}}r.default.replace();
    -},{"focus-visible":20,"normalize.css":18,"prismjs":19,"feather-icons":21,"../css/deps/prism.css":18,"../css/index.scss":18,"./deps/polyfills":11,"./components/Sidebar":12,"./components/BackToTopButton":13,"./components/Tag":14,"./components/Snippet":15}]},{},[7])
    \ No newline at end of file
    +},{"focus-visible":18,"normalize.css":19,"prismjs":20,"feather-icons":21,"../css/deps/prism.css":19,"../css/index.scss":19,"./deps/polyfills":11,"./components/Sidebar":12,"./components/BackToTopButton":13,"./components/Tag":14,"./components/Snippet":15}]},{},[7])
    \ No newline at end of file
    diff --git a/index.html b/index.html
    index a2b1ae4d7..074de4e35 100644
    --- a/index.html
    +++ b/index.html
    @@ -25,6 +25,7 @@
               Constant width to height ratio
               Evenly distributed children
               Flexbox centering
    +          Grid centering
               Truncate text
             
             
    +
    +

    Grid centeringlayout

    +

    Horizontally and vertically centers a child element within a parent element using grid.

    +

    HTML

    <div class="grid-centering">
    +  <div class="child"></div>
    +</div>
    +
    +

    CSS

    .grid-centering {
    +  display: grid;
    +  justify-content: center;
    +  align-items: center;
    +}
    +
    +

    Demo

    +
    +
    +

    Centered content.

    +
    +
    + +

    Explanation

    +
      +
    1. display: grid enables grid.
    2. +
    3. justify-content: center centers the child horizontally.
    4. +
    5. align-items: center centers the child vertically.
    6. +
    +

    Browser support

    +
    +
    + 97.8% +
    +
    +

    ⚠️ Needs prefixes for full support.

    + + + +

    Hairline bordervisual

    Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

    diff --git a/snippets/grid-centering.md b/snippets/grid-centering.md new file mode 100644 index 000000000..1f4e70a39 --- /dev/null +++ b/snippets/grid-centering.md @@ -0,0 +1,52 @@ +### Grid centering + +Horizontally and vertically centers a child element within a parent element using `grid`. + +#### HTML + +```html +
    +
    +
    +``` + +#### CSS + +```css +.grid-centering { + display: grid; + justify-content: center; + align-items: center; +} +``` + +#### Demo + +
    +
    +

    Centered content.

    +
    +
    + + + +#### Explanation + +1. `display: grid` enables grid. +2. `justify-content: center` centers the child horizontally. +3. `align-items: center` centers the child vertically. + +#### Browser support + +⚠️ Needs prefixes for full support. + +* https://caniuse.com/#feat=flexbox + + From b1d4151f64f27504c36dcaddeae51d09b6c3c69a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Sat, 3 Mar 2018 11:15:59 +0100 Subject: [PATCH 123/561] build and browser support for grid --- docs/6c831ee080ce0f905632cb113dfa17d9.js | 8 ++++---- docs/index.html | 14 +++++++++++--- index.html | 4 ++-- snippets/grid-centering.md | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/docs/6c831ee080ce0f905632cb113dfa17d9.js b/docs/6c831ee080ce0f905632cb113dfa17d9.js index d83b4a95e..5f70f2ba4 100644 --- a/docs/6c831ee080ce0f905632cb113dfa17d9.js +++ b/docs/6c831ee080ce0f905632cb113dfa17d9.js @@ -1,11 +1,11 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],21:[function(require,module,exports) { +},{}],20:[function(require,module,exports) { var global = (1,eval)("this"); var e=(0,eval)("this");!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=49)}([function(e,n,i){var t=i(36)("wks"),l=i(15),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return t[e]||(t[e]=o&&r[e]||(o?r:l)("Symbol."+e))}).store=t},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(1),l=i(7),r=i(8),o=i(10),a=i(11),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,f=e&c.S,d=e&c.P,v=e&c.B,g=u?t:f?t[n]||(t[n]={}):(t[n]||{}).prototype,m=u?l:l[n]||(l[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,t):d&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),d&&M[y]!=h&&(M[y]=h)};t.core=l,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,i){var t=i(9),l=i(29),r=i(31),o=Object.defineProperty;n.f=i(5)?Object.defineProperty:function(e,n,i){if(t(e),n=r(n,!0),t(i),l)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){e.exports=!i(12)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n){var i=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=i)},function(e,n,i){var t=i(4),l=i(14);e.exports=i(5)?function(e,n,i){return t.f(e,n,l(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){var t=i(2);e.exports=function(e){if(!t(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var t=i(1),l=i(8),r=i(6),o=i(15)("src"),a=Function.toString,c=(""+a).split("toString");i(7).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||l(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||l(i,o,e[n]?""+e[n]:c.join(String(n)))),e===t?e[n]=i:a?e[n]?e[n]=i:l(e,n,i):(delete e[n],l(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var t=i(32);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(34),l=i(19);e.exports=function(e){return t(l(e))}},function(e,n,i){var t=i(11),l=i(38),r=i(39),o=i(9),a=i(22),c=i(40),y={},p={};(n=e.exports=function(e,n,i,h,x){var s,u,f,d,v=x?function(){return e}:c(e),g=t(i,h,n?2:1),m=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(r(v)){for(s=a(e.length);s>m;m++)if((d=n?g(o(u=e[m])[0],u[1]):g(e[m]))===y||d===p)return d}else for(f=v.call(e);!(u=f.next()).done;)if((d=l(f,g,u.value,n))===y||d===p)return d}).BREAK=y,n.RETURN=p},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,i){"use strict";var t=i(52),l=i(3),r=i(10),o=i(8),a=i(6),c=i(13),y=i(53),p=i(24),h=i(59),x=i(0)("iterator"),s=!([].keys&&"next"in[].keys()),u=function(){return this};e.exports=function(e,n,i,f,d,v,g){y(i,n,f);var m,M,w,b=function(e){if(!s&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},A=n+" Iterator",_="values"==d,z=!1,k=e.prototype,S=k[x]||k["@@iterator"]||d&&k[d],H=!s&&S||b(d),V=d?_?b("entries"):H:void 0,O="Array"==n&&k.entries||S;if(O&&(w=h(O.call(new e)))!==Object.prototype&&w.next&&(p(w,A,!0),t||a(w,x)||o(w,x,u)),_&&S&&"values"!==S.name&&(z=!0,H=function(){return S.call(this)}),t&&!g||!s&&!z&&k[x]||o(k,x,H),c[n]=H,c[A]=u,d)if(m={values:_?H:b("values"),keys:v?H:b("keys"),entries:V},g)for(M in m)M in k||r(k,M,m[M]);else l(l.P+l.F*(s||z),n,m);return m}},function(e,n,i){var t=i(55),l=i(37);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(18),l=Math.min;e.exports=function(e){return e>0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(36)("keys"),l=i(15);e.exports=function(e){return t[e]||(t[e]=l(e))}},function(e,n,i){var t=i(4).f,l=i(6),r=i(0)("toStringTag");e.exports=function(e,n,i){e&&!l(e=i?e:e.prototype,r)&&t(e,r,{configurable:!0,value:n})}},function(e,n,i){var t=i(19);e.exports=function(e){return Object(t(e))}},function(e,n,i){var t=i(35),l=i(0)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(86)),l=o(i(88)),r=o(i(89));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){"use strict";var t=i(51)(!0);i(20)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,i=this._i;return i>=n.length?{value:void 0,done:!0}:(e=t(n,i),this._i+=e.length,{value:e,done:!1})})},function(e,n,i){e.exports=!i(5)&&!i(12)(function(){return 7!=Object.defineProperty(i(30)("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(2),l=i(1).document,r=t(l)&&t(l.createElement);e.exports=function(e){return r?l.createElement(e):{}}},function(e,n,i){var t=i(2);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,i){var t=i(9),l=i(54),r=i(37),o=i(23)("IE_PROTO"),a=function(){},c=function(){var e,n=i(30)("iframe"),t=r.length;for(n.style.display="none",i(58).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Box-sizing resetlayout

    Resets the box-model so that widths and heights are not affected by their borders or padding.

    CSS

    html {
    +     30 Seconds of CSS         

    30 Seconds of CSS

    A curated collection of useful CSS snippets you can understand in 30 seconds or less.

    Star

    Box-sizing resetlayout

    Resets the box-model so that widths and heights are not affected by their borders or padding.

    CSS

    html {
       box-sizing: border-box;
     }
     *,
    @@ -6,7 +6,7 @@
     *::after {
       box-sizing: inherit;
     }
    -

    Demo

    Demo

    Explanation

    1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
    2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

    Browser support

    98.2%

    ✅ No caveats.

    Clearfixlayout

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
    +

    Demo

    Demo

    Explanation

    1. box-sizing: border-box makes the addition of padding or borders not affect an element's width or height.
    2. box-sizing: inherit makes an element respect its parent's box-sizing rule.

    Browser support

    98.2%

    ✅ No caveats.

    Clearfixlayout

    Ensures that an element self-clears its children.

    Note: This is only useful if you are still using float to build layouts. Please consider using a modern approach with flexbox layout or grid layout.

    HTML

    <div class="clearfix">
       <div class="floated">float a</div>
       <div class="floated">float b</div>
       <div class="floated">float c</div>
    @@ -135,7 +135,15 @@
       -webkit-text-fill-color: transparent;
       -webkit-background-clip: text;
     }
    -

    Demo

    Gradient text

    Explanation

    1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
    2. webkit-text-fill-color: transparent fills the text with a transparent color.
    3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.

    Browser support

    90.7%

    ⚠️ Uses non-standard properties.

    Hairline bordervisual

    Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

    HTML

    <div class="hairline-border">text</div>
    +

    Demo

    Gradient text

    Explanation

    1. background: -webkit-linear-gradient(...) gives the text element a gradient background.
    2. webkit-text-fill-color: transparent fills the text with a transparent color.
    3. webkit-background-clip: text clips the background with the text, filling the text with the gradient background as the color.

    Browser support

    90.7%

    ⚠️ Uses non-standard properties.

    Grid centeringlayout

    Horizontally and vertically centers a child element within a parent element using grid.

    HTML

    <div class="grid-centering">
    +  <div class="child"></div>
    +</div>
    +

    CSS

    .grid-centering {
    +  display: grid;
    +  justify-content: center;
    +  align-items: center;
    +}
    +

    Demo

    Centered content.

    Explanation

    1. display: grid enables grid.
    2. justify-content: center centers the child horizontally.
    3. align-items: center centers the child vertically.

    Browser support

    86.6%

    ⚠️ Needs prefixes for full support.

    Hairline bordervisual

    Gives an element a border equal to 1 native device pixel in width, which can look very sharp and crisp.

    HTML

    <div class="hairline-border">text</div>
     

    CSS

    .hairline-border {
       box-shadow: 0 0 0 1px;
     }
    diff --git a/index.html b/index.html
    index 074de4e35..2f420b2c0 100644
    --- a/index.html
    +++ b/index.html
    @@ -760,13 +760,13 @@ in any specification.

    Browser support

    - 97.8% + 86.6%

    ⚠️ Needs prefixes for full support.

    diff --git a/snippets/grid-centering.md b/snippets/grid-centering.md index 1f4e70a39..403d092b0 100644 --- a/snippets/grid-centering.md +++ b/snippets/grid-centering.md @@ -47,6 +47,6 @@ Horizontally and vertically centers a child element within a parent element usin ⚠️ Needs prefixes for full support. -* https://caniuse.com/#feat=flexbox +* https://caniuse.com/#feat=css-grid From 488f91d8dbf08193e40a9b1d4dfaf853fba53320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Sat, 3 Mar 2018 11:18:05 +0100 Subject: [PATCH 124/561] build --- docs/6c831ee080ce0f905632cb113dfa17d9.js | 10 +++++----- docs/index.html | 2 +- index.html | 2 +- snippets/grid-centering.md | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/6c831ee080ce0f905632cb113dfa17d9.js b/docs/6c831ee080ce0f905632cb113dfa17d9.js index 5f70f2ba4..0da6e7523 100644 --- a/docs/6c831ee080ce0f905632cb113dfa17d9.js +++ b/docs/6c831ee080ce0f905632cb113dfa17d9.js @@ -1,11 +1,11 @@ -require=function(r,e,n){function t(n,o){function i(r){return t(i.resolve(r))}function f(e){return r[n][1][e]||e}if(!e[n]){if(!r[n]){var c="function"==typeof require&&require;if(!o&&c)return c(n,!0);if(u)return u(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}i.resolve=f;var s=e[n]=new t.Module(n);r[n][0].call(s.exports,i,s,s.exports)}return e[n].exports}function o(r){this.id=r,this.bundle=t,this.exports={}}var u="function"==typeof require&&require;t.isParcelRequire=!0,t.Module=o,t.modules=r,t.cache=e,t.parent=u;for(var i=0;ie.length)return;if(!(w instanceof o)){p.lastIndex=0;var x=1;if(!(C=p.exec(w))&&f&&v!=t.length-1){if(p.lastIndex=k,!(C=p.exec(e)))break;for(var F=C.index+(h?C[1].length:0),S=C.index+C[0].length,A=v,j=k,P=t.length;A=(j+=t[A].length)&&(++v,k=j);if(t[v]instanceof o||t[A-1].greedy)continue;x=A-v,w=e.slice(k,j),C.index-=k}if(C){h&&(m=C[1].length);S=(F=C.index+m)+(C=C[0].slice(m)).length;var C,N=w.slice(0,F),O=w.slice(S),E=[v,x];N&&(++v,k+=N.length,E.push(N));var $=new o(u,d?n.tokenize(C,d):C,y,C,f);if(E.push($),O&&E.push(O),Array.prototype.splice.apply(t,E),1!=x&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t,a){var r=[e],i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},r=n.Token=function(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(a){return r.stringify(a,t,e)}).join("");var i={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var l=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(l?" "+l:"")+">"+i.content+""},!t.document)return t.addEventListener?(n.disableWorkerMessageHandler||t.addEventListener("message",function(e){var a=JSON.parse(e.data),r=a.language,i=a.code,s=a.immediateClose;t.postMessage(n.highlight(i,n.languages[r],r)),s&&t.close()},!1),t.Prism):t.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(n.filename=i.src,n.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),t.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=a),void 0!==e&&(e.Prism=a),a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),a.languages.xml=a.languages.markup,a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},a.languages.css.atrule.inside.rest=a.util.clone(a.languages.css),a.languages.markup&&(a.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:a.languages.css,alias:"language-css",greedy:!0}}),a.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:a.languages.css}},alias:"language-css"}},a.languages.markup.tag)),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!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+)|(?:catch\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:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{keyword:/\b(?: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|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:a.languages.javascript,alias:"language-javascript",greedy:!0}}),a.languages.js=a.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,r=t.getAttribute("data-src"),i=t,s=/\blang(?:uage)?-(?!\*)(\w+)\b/i;i&&!s.test(i.className);)i=i.parentNode;if(i&&(n=(t.className.match(s)||[,""])[1]),!n){var l=(r.match(/\.(\w+)$/)||[,""])[1];n=e[l]||l}var o=document.createElement("code");o.className="language-"+n,t.textContent="",o.textContent="Loading…",t.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,a.highlightElement(o)):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",self.Prism.fileHighlight)); -},{}],20:[function(require,module,exports) { +},{}],21:[function(require,module,exports) { var global = (1,eval)("this"); var e=(0,eval)("this");!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=49)}([function(e,n,i){var t=i(36)("wks"),l=i(15),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return t[e]||(t[e]=o&&r[e]||(o?r:l)("Symbol."+e))}).store=t},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(1),l=i(7),r=i(8),o=i(10),a=i(11),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,f=e&c.S,d=e&c.P,v=e&c.B,g=u?t:f?t[n]||(t[n]={}):(t[n]||{}).prototype,m=u?l:l[n]||(l[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,t):d&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),d&&M[y]!=h&&(M[y]=h)};t.core=l,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,i){var t=i(9),l=i(29),r=i(31),o=Object.defineProperty;n.f=i(5)?Object.defineProperty:function(e,n,i){if(t(e),n=r(n,!0),t(i),l)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){e.exports=!i(12)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n){var i=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=i)},function(e,n,i){var t=i(4),l=i(14);e.exports=i(5)?function(e,n,i){return t.f(e,n,l(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){var t=i(2);e.exports=function(e){if(!t(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var t=i(1),l=i(8),r=i(6),o=i(15)("src"),a=Function.toString,c=(""+a).split("toString");i(7).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||l(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||l(i,o,e[n]?""+e[n]:c.join(String(n)))),e===t?e[n]=i:a?e[n]?e[n]=i:l(e,n,i):(delete e[n],l(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var t=i(32);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(34),l=i(19);e.exports=function(e){return t(l(e))}},function(e,n,i){var t=i(11),l=i(38),r=i(39),o=i(9),a=i(22),c=i(40),y={},p={};(n=e.exports=function(e,n,i,h,x){var s,u,f,d,v=x?function(){return e}:c(e),g=t(i,h,n?2:1),m=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(r(v)){for(s=a(e.length);s>m;m++)if((d=n?g(o(u=e[m])[0],u[1]):g(e[m]))===y||d===p)return d}else for(f=v.call(e);!(u=f.next()).done;)if((d=l(f,g,u.value,n))===y||d===p)return d}).BREAK=y,n.RETURN=p},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,i){"use strict";var t=i(52),l=i(3),r=i(10),o=i(8),a=i(6),c=i(13),y=i(53),p=i(24),h=i(59),x=i(0)("iterator"),s=!([].keys&&"next"in[].keys()),u=function(){return this};e.exports=function(e,n,i,f,d,v,g){y(i,n,f);var m,M,w,b=function(e){if(!s&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},A=n+" Iterator",_="values"==d,z=!1,k=e.prototype,S=k[x]||k["@@iterator"]||d&&k[d],H=!s&&S||b(d),V=d?_?b("entries"):H:void 0,O="Array"==n&&k.entries||S;if(O&&(w=h(O.call(new e)))!==Object.prototype&&w.next&&(p(w,A,!0),t||a(w,x)||o(w,x,u)),_&&S&&"values"!==S.name&&(z=!0,H=function(){return S.call(this)}),t&&!g||!s&&!z&&k[x]||o(k,x,H),c[n]=H,c[A]=u,d)if(m={values:_?H:b("values"),keys:v?H:b("keys"),entries:V},g)for(M in m)M in k||r(k,M,m[M]);else l(l.P+l.F*(s||z),n,m);return m}},function(e,n,i){var t=i(55),l=i(37);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(18),l=Math.min;e.exports=function(e){return e>0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(36)("keys"),l=i(15);e.exports=function(e){return t[e]||(t[e]=l(e))}},function(e,n,i){var t=i(4).f,l=i(6),r=i(0)("toStringTag");e.exports=function(e,n,i){e&&!l(e=i?e:e.prototype,r)&&t(e,r,{configurable:!0,value:n})}},function(e,n,i){var t=i(19);e.exports=function(e){return Object(t(e))}},function(e,n,i){var t=i(35),l=i(0)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(86)),l=o(i(88)),r=o(i(89));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){"use strict";var t=i(51)(!0);i(20)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,i=this._i;return i>=n.length?{value:void 0,done:!0}:(e=t(n,i),this._i+=e.length,{value:e,done:!1})})},function(e,n,i){e.exports=!i(5)&&!i(12)(function(){return 7!=Object.defineProperty(i(30)("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(2),l=i(1).document,r=t(l)&&t(l.createElement);e.exports=function(e){return r?l.createElement(e):{}}},function(e,n,i){var t=i(2);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,i){var t=i(9),l=i(54),r=i(37),o=i(23)("IE_PROTO"),a=function(){},c=function(){var e,n=i(30)("iframe"),t=r.length;for(n.style.display="none",i(58).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write(" + + + +