diff --git a/go.mod b/go.mod index cdd2692..134e3a7 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,19 @@ module git.handmade.network/hmn/hmn go 1.16 require ( + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/sprig v2.22.0+incompatible // indirect github.com/go-stack/stack v1.8.0 + github.com/google/uuid v1.2.0 // indirect + github.com/huandu/xstrings v1.3.2 // indirect + github.com/imdario/mergo v0.3.12 // indirect github.com/jackc/pgx/v4 v4.10.1 github.com/julienschmidt/httprouter v1.3.0 + github.com/mitchellh/copystructure v1.1.1 // indirect github.com/rs/zerolog v1.20.0 github.com/spf13/cobra v1.1.3 + github.com/stretchr/testify v1.7.0 // indirect + github.com/teacat/noire v1.1.0 // indirect github.com/wellington/go-libsass v0.9.2 ) diff --git a/go.sum b/go.sum index 11f943b..1b92dda 100644 --- a/go.sum +++ b/go.sum @@ -13,6 +13,12 @@ cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiy dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -69,6 +75,8 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -96,6 +104,10 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= @@ -186,6 +198,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.1.1 h1:Bp6x9R1Wn16SIz3OfeDr0b7RnCG2OB66Y7PQyC/cvq4= +github.com/mitchellh/copystructure v1.1.1/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= @@ -193,6 +207,8 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -253,7 +269,12 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/teacat/noire v1.1.0 h1:5IgJ1H8jodiSSYnrVadV2JjbAnEgCCjYUQxSUuaQ7Sg= +github.com/teacat/noire v1.1.0/go.mod h1:cetGlnqr+9yKJcFgRgYXOWJY66XIrrjUsGBwNlNNtAk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/wellington/go-libsass v0.9.2 h1:6Ims04UDdBs6/CGSVK5JC8FNikR5ssrsMMKE/uaO5Q8= github.com/wellington/go-libsass v0.9.2/go.mod h1:mxgxgam0N0E+NAUMHLcu20Ccfc3mVpDkyrLDayqfiTs= @@ -409,8 +430,11 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/public/style.css b/public/style.css index 4c48fa3..e88c6dd 100644 --- a/public/style.css +++ b/public/style.css @@ -1 +1,9609 @@ -/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}.debug *{outline:1px solid gold}.debug-white *{outline:1px solid white}.debug-black *{outline:1px solid black}.debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat top left}.debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat top left}.debug-grid-8-solid{background:white url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat top left}.debug-grid-16-solid{background:white url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat top left}html,body,div,article,section,main,footer,header,form,fieldset,legend,pre,code,a,h1,h2,h3,h4,h5,h6,p,ul,ol,li,dl,dt,dd,textarea,table,td,th,tr,input[type="email"],input[type="number"],input[type="password"],input[type="tel"],input[type="text"],input[type="url"],.border-box{box-sizing:border-box}.aspect-ratio{height:0;position:relative}.aspect-ratio--16x9{padding-bottom:56.25%}.aspect-ratio--9x16{padding-bottom:177.77%}.aspect-ratio--4x3{padding-bottom:75%}.aspect-ratio--3x4{padding-bottom:133.33%}.aspect-ratio--6x4{padding-bottom:66.6%}.aspect-ratio--4x6{padding-bottom:150%}.aspect-ratio--8x5{padding-bottom:62.5%}.aspect-ratio--5x8{padding-bottom:160%}.aspect-ratio--7x5{padding-bottom:71.42%}.aspect-ratio--5x7{padding-bottom:140%}.aspect-ratio--1x1{padding-bottom:100%}.aspect-ratio--object{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}@media screen and (min-width: 30em){.aspect-ratio-ns{height:0;position:relative}.aspect-ratio--16x9-ns{padding-bottom:56.25%}.aspect-ratio--9x16-ns{padding-bottom:177.77%}.aspect-ratio--4x3-ns{padding-bottom:75%}.aspect-ratio--3x4-ns{padding-bottom:133.33%}.aspect-ratio--6x4-ns{padding-bottom:66.6%}.aspect-ratio--4x6-ns{padding-bottom:150%}.aspect-ratio--8x5-ns{padding-bottom:62.5%}.aspect-ratio--5x8-ns{padding-bottom:160%}.aspect-ratio--7x5-ns{padding-bottom:71.42%}.aspect-ratio--5x7-ns{padding-bottom:140%}.aspect-ratio--1x1-ns{padding-bottom:100%}.aspect-ratio--object-ns{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}}@media screen and (min-width: 30em) and (max-width: 60em){.aspect-ratio-m{height:0;position:relative}.aspect-ratio--16x9-m{padding-bottom:56.25%}.aspect-ratio--9x16-m{padding-bottom:177.77%}.aspect-ratio--4x3-m{padding-bottom:75%}.aspect-ratio--3x4-m{padding-bottom:133.33%}.aspect-ratio--6x4-m{padding-bottom:66.6%}.aspect-ratio--4x6-m{padding-bottom:150%}.aspect-ratio--8x5-m{padding-bottom:62.5%}.aspect-ratio--5x8-m{padding-bottom:160%}.aspect-ratio--7x5-m{padding-bottom:71.42%}.aspect-ratio--5x7-m{padding-bottom:140%}.aspect-ratio--1x1-m{padding-bottom:100%}.aspect-ratio--object-m{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}}@media screen and (min-width: 60em){.aspect-ratio-l{height:0;position:relative}.aspect-ratio--16x9-l{padding-bottom:56.25%}.aspect-ratio--9x16-l{padding-bottom:177.77%}.aspect-ratio--4x3-l{padding-bottom:75%}.aspect-ratio--3x4-l{padding-bottom:133.33%}.aspect-ratio--6x4-l{padding-bottom:66.6%}.aspect-ratio--4x6-l{padding-bottom:150%}.aspect-ratio--8x5-l{padding-bottom:62.5%}.aspect-ratio--5x8-l{padding-bottom:160%}.aspect-ratio--7x5-l{padding-bottom:71.42%}.aspect-ratio--5x7-l{padding-bottom:140%}.aspect-ratio--1x1-l{padding-bottom:100%}.aspect-ratio--object-l{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}}img,video{max-width:100%}.cover{background-size:cover !important}.contain{background-size:contain !important}@media screen and (min-width: 30em){.cover-ns{background-size:cover !important}.contain-ns{background-size:contain !important}}@media screen and (min-width: 30em) and (max-width: 60em){.cover-m{background-size:cover !important}.contain-m{background-size:contain !important}}@media screen and (min-width: 60em){.cover-l{background-size:cover !important}.contain-l{background-size:contain !important}}.bg-center{background-repeat:no-repeat;background-position:center center}.bg-top{background-repeat:no-repeat;background-position:top center}.bg-right{background-repeat:no-repeat;background-position:center right}.bg-bottom{background-repeat:no-repeat;background-position:bottom center}.bg-left{background-repeat:no-repeat;background-position:center left}@media screen and (min-width: 30em){.bg-center-ns{background-repeat:no-repeat;background-position:center center}.bg-top-ns{background-repeat:no-repeat;background-position:top center}.bg-right-ns{background-repeat:no-repeat;background-position:center right}.bg-bottom-ns{background-repeat:no-repeat;background-position:bottom center}.bg-left-ns{background-repeat:no-repeat;background-position:center left}}@media screen and (min-width: 30em) and (max-width: 60em){.bg-center-m{background-repeat:no-repeat;background-position:center center}.bg-top-m{background-repeat:no-repeat;background-position:top center}.bg-right-m{background-repeat:no-repeat;background-position:center right}.bg-bottom-m{background-repeat:no-repeat;background-position:bottom center}.bg-left-m{background-repeat:no-repeat;background-position:center left}}@media screen and (min-width: 60em){.bg-center-l{background-repeat:no-repeat;background-position:center center}.bg-top-l{background-repeat:no-repeat;background-position:top center}.bg-right-l{background-repeat:no-repeat;background-position:center right}.bg-bottom-l{background-repeat:no-repeat;background-position:bottom center}.bg-left-l{background-repeat:no-repeat;background-position:center left}}.outline{outline:1px solid}.outline-transparent{outline:1px solid transparent}.outline-0{outline:0}@media screen and (min-width: 30em){.outline-ns{outline:1px solid}.outline-transparent-ns{outline:1px solid transparent}.outline-0-ns{outline:0}}@media screen and (min-width: 30em) and (max-width: 60em){.outline-m{outline:1px solid}.outline-transparent-m{outline:1px solid transparent}.outline-0-m{outline:0}}@media screen and (min-width: 60em){.outline-l{outline:1px solid}.outline-transparent-l{outline:1px solid transparent}.outline-0-l{outline:0}}.ba{border-style:solid;border-width:1px}.bt{border-top-style:solid;border-top-width:1px}.br{border-right-style:solid;border-right-width:1px}.bb{border-bottom-style:solid;border-bottom-width:1px}.bl{border-left-style:solid;border-left-width:1px}.bn{border-style:none;border-width:0}@media screen and (min-width: 30em){.ba-ns{border-style:solid;border-width:1px}.bt-ns{border-top-style:solid;border-top-width:1px}.br-ns{border-right-style:solid;border-right-width:1px}.bb-ns{border-bottom-style:solid;border-bottom-width:1px}.bl-ns{border-left-style:solid;border-left-width:1px}.bn-ns{border-style:none;border-width:0}}@media screen and (min-width: 30em) and (max-width: 60em){.ba-m{border-style:solid;border-width:1px}.bt-m{border-top-style:solid;border-top-width:1px}.br-m{border-right-style:solid;border-right-width:1px}.bb-m{border-bottom-style:solid;border-bottom-width:1px}.bl-m{border-left-style:solid;border-left-width:1px}.bn-m{border-style:none;border-width:0}}@media screen and (min-width: 60em){.ba-l{border-style:solid;border-width:1px}.bt-l{border-top-style:solid;border-top-width:1px}.br-l{border-right-style:solid;border-right-width:1px}.bb-l{border-bottom-style:solid;border-bottom-width:1px}.bl-l{border-left-style:solid;border-left-width:1px}.bn-l{border-style:none;border-width:0}}.b--black{border-color:#000}.b--near-black{border-color:#111}.b--dark-gray{border-color:#333}.b--mid-gray{border-color:#555}.b--gray{border-color:#777}.b--silver{border-color:#999}.b--light-silver{border-color:#aaa}.b--moon-gray{border-color:#ccc}.b--light-gray{border-color:#eee}.b--near-white{border-color:#f4f4f4}.b--white{border-color:#fff}.b--white-90{border-color:rgba(255,255,255,0.9)}.b--white-80{border-color:rgba(255,255,255,0.8)}.b--white-70{border-color:rgba(255,255,255,0.7)}.b--white-60{border-color:rgba(255,255,255,0.6)}.b--white-50{border-color:rgba(255,255,255,0.5)}.b--white-40{border-color:rgba(255,255,255,0.4)}.b--white-30{border-color:rgba(255,255,255,0.3)}.b--white-20{border-color:rgba(255,255,255,0.2)}.b--white-10{border-color:rgba(255,255,255,0.1)}.b--white-05{border-color:rgba(255,255,255,0.05)}.b--white-025{border-color:rgba(255,255,255,0.025)}.b--white-0125{border-color:rgba(255,255,255,0.0125)}.b--black-90{border-color:rgba(0,0,0,0.9)}.b--black-80{border-color:rgba(0,0,0,0.8)}.b--black-70{border-color:rgba(0,0,0,0.7)}.b--black-60{border-color:rgba(0,0,0,0.6)}.b--black-50{border-color:rgba(0,0,0,0.5)}.b--black-40{border-color:rgba(0,0,0,0.4)}.b--black-30{border-color:rgba(0,0,0,0.3)}.b--black-20{border-color:rgba(0,0,0,0.2)}.b--black-10{border-color:rgba(0,0,0,0.1)}.b--black-05{border-color:rgba(0,0,0,0.05)}.b--black-025{border-color:rgba(0,0,0,0.025)}.b--black-0125{border-color:rgba(0,0,0,0.0125)}.b--dark-red{border-color:#e7040f}.b--red{border-color:#ff4136}.b--light-red{border-color:#ff725c}.b--orange{border-color:#ff6300}.b--gold{border-color:#ffb700}.b--yellow{border-color:gold}.b--light-yellow{border-color:#fbf1a9}.b--purple{border-color:#5e2ca5}.b--light-purple{border-color:#a463f2}.b--dark-pink{border-color:#d5008f}.b--hot-pink{border-color:#ff41b4}.b--pink{border-color:#ff80cc}.b--light-pink{border-color:#ffa3d7}.b--dark-green{border-color:#137752}.b--green{border-color:#19a974}.b--light-green{border-color:#9eebcf}.b--navy{border-color:#001b44}.b--dark-blue{border-color:#00449e}.b--blue{border-color:#357edd}.b--light-blue{border-color:#96ccff}.b--lightest-blue{border-color:#cdecff}.b--washed-blue{border-color:#f6fffe}.b--washed-green{border-color:#e8fdf5}.b--washed-yellow{border-color:#fffceb}.b--washed-red{border-color:#ffdfdf}.b--transparent{border-color:rgba(0,0,0,0)}.b--inherit{border-color:inherit}.br0{border-radius:0}.br1{border-radius:.125rem}.br2{border-radius:.25rem}.br3{border-radius:.5rem}.br4{border-radius:1rem}.br-100{border-radius:100%}.br-pill{border-radius:9999px}.br--bottom{border-top-left-radius:0;border-top-right-radius:0}.br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right{border-top-left-radius:0;border-bottom-left-radius:0}.br--left{border-top-right-radius:0;border-bottom-right-radius:0}@media screen and (min-width: 30em){.br0-ns{border-radius:0}.br1-ns{border-radius:.125rem}.br2-ns{border-radius:.25rem}.br3-ns{border-radius:.5rem}.br4-ns{border-radius:1rem}.br-100-ns{border-radius:100%}.br-pill-ns{border-radius:9999px}.br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right-ns{border-top-left-radius:0;border-bottom-left-radius:0}.br--left-ns{border-top-right-radius:0;border-bottom-right-radius:0}}@media screen and (min-width: 30em) and (max-width: 60em){.br0-m{border-radius:0}.br1-m{border-radius:.125rem}.br2-m{border-radius:.25rem}.br3-m{border-radius:.5rem}.br4-m{border-radius:1rem}.br-100-m{border-radius:100%}.br-pill-m{border-radius:9999px}.br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right-m{border-top-left-radius:0;border-bottom-left-radius:0}.br--left-m{border-top-right-radius:0;border-bottom-right-radius:0}}@media screen and (min-width: 60em){.br0-l{border-radius:0}.br1-l{border-radius:.125rem}.br2-l{border-radius:.25rem}.br3-l{border-radius:.5rem}.br4-l{border-radius:1rem}.br-100-l{border-radius:100%}.br-pill-l{border-radius:9999px}.br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right-l{border-top-left-radius:0;border-bottom-left-radius:0}.br--left-l{border-top-right-radius:0;border-bottom-right-radius:0}}.b--dotted{border-style:dotted}.b--dashed{border-style:dashed}.b--solid{border-style:solid}.b--none{border-style:none}@media screen and (min-width: 30em){.b--dotted-ns{border-style:dotted}.b--dashed-ns{border-style:dashed}.b--solid-ns{border-style:solid}.b--none-ns{border-style:none}}@media screen and (min-width: 30em) and (max-width: 60em){.b--dotted-m{border-style:dotted}.b--dashed-m{border-style:dashed}.b--solid-m{border-style:solid}.b--none-m{border-style:none}}@media screen and (min-width: 60em){.b--dotted-l{border-style:dotted}.b--dashed-l{border-style:dashed}.b--solid-l{border-style:solid}.b--none-l{border-style:none}}.bw0{border-width:0}.bw1{border-width:.125rem}.bw2{border-width:.25rem}.bw3{border-width:.5rem}.bw4{border-width:1rem}.bw5{border-width:2rem}.bt-0{border-top-width:0}.br-0{border-right-width:0}.bb-0{border-bottom-width:0}.bl-0{border-left-width:0}@media screen and (min-width: 30em){.bw0-ns{border-width:0}.bw1-ns{border-width:.125rem}.bw2-ns{border-width:.25rem}.bw3-ns{border-width:.5rem}.bw4-ns{border-width:1rem}.bw5-ns{border-width:2rem}.bt-0-ns{border-top-width:0}.br-0-ns{border-right-width:0}.bb-0-ns{border-bottom-width:0}.bl-0-ns{border-left-width:0}}@media screen and (min-width: 30em) and (max-width: 60em){.bw0-m{border-width:0}.bw1-m{border-width:.125rem}.bw2-m{border-width:.25rem}.bw3-m{border-width:.5rem}.bw4-m{border-width:1rem}.bw5-m{border-width:2rem}.bt-0-m{border-top-width:0}.br-0-m{border-right-width:0}.bb-0-m{border-bottom-width:0}.bl-0-m{border-left-width:0}}@media screen and (min-width: 60em){.bw0-l{border-width:0}.bw1-l{border-width:.125rem}.bw2-l{border-width:.25rem}.bw3-l{border-width:.5rem}.bw4-l{border-width:1rem}.bw5-l{border-width:2rem}.bt-0-l{border-top-width:0}.br-0-l{border-right-width:0}.bb-0-l{border-bottom-width:0}.bl-0-l{border-left-width:0}}.shadow-1{box-shadow:0px 0px 4px 2px rgba(0,0,0,0.2)}.shadow-2{box-shadow:0px 0px 8px 2px rgba(0,0,0,0.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,0.2)}.shadow-4{box-shadow:2px 2px 8px 0px rgba(0,0,0,0.2)}.shadow-5{box-shadow:4px 4px 8px 0px rgba(0,0,0,0.2)}@media screen and (min-width: 30em){.shadow-1-ns{box-shadow:0px 0px 4px 2px rgba(0,0,0,0.2)}.shadow-2-ns{box-shadow:0px 0px 8px 2px rgba(0,0,0,0.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,0.2)}.shadow-4-ns{box-shadow:2px 2px 8px 0px rgba(0,0,0,0.2)}.shadow-5-ns{box-shadow:4px 4px 8px 0px rgba(0,0,0,0.2)}}@media screen and (min-width: 30em) and (max-width: 60em){.shadow-1-m{box-shadow:0px 0px 4px 2px rgba(0,0,0,0.2)}.shadow-2-m{box-shadow:0px 0px 8px 2px rgba(0,0,0,0.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,0.2)}.shadow-4-m{box-shadow:2px 2px 8px 0px rgba(0,0,0,0.2)}.shadow-5-m{box-shadow:4px 4px 8px 0px rgba(0,0,0,0.2)}}@media screen and (min-width: 60em){.shadow-1-l{box-shadow:0px 0px 4px 2px rgba(0,0,0,0.2)}.shadow-2-l{box-shadow:0px 0px 8px 2px rgba(0,0,0,0.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,0.2)}.shadow-4-l{box-shadow:2px 2px 8px 0px rgba(0,0,0,0.2)}.shadow-5-l{box-shadow:4px 4px 8px 0px rgba(0,0,0,0.2)}}.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-1{top:1rem}.right-1{right:1rem}.bottom-1{bottom:1rem}.left-1{left:1rem}.top-2{top:2rem}.right-2{right:2rem}.bottom-2{bottom:2rem}.left-2{left:2rem}.top--1{top:-1rem}.right--1{right:-1rem}.bottom--1{bottom:-1rem}.left--1{left:-1rem}.top--2{top:-2rem}.right--2{right:-2rem}.bottom--2{bottom:-2rem}.left--2{left:-2rem}.absolute--fill{top:0;right:0;bottom:0;left:0}@media screen and (min-width: 30em){.top-0-ns{top:0}.left-0-ns{left:0}.right-0-ns{right:0}.bottom-0-ns{bottom:0}.top-1-ns{top:1rem}.left-1-ns{left:1rem}.right-1-ns{right:1rem}.bottom-1-ns{bottom:1rem}.top-2-ns{top:2rem}.left-2-ns{left:2rem}.right-2-ns{right:2rem}.bottom-2-ns{bottom:2rem}.top--1-ns{top:-1rem}.right--1-ns{right:-1rem}.bottom--1-ns{bottom:-1rem}.left--1-ns{left:-1rem}.top--2-ns{top:-2rem}.right--2-ns{right:-2rem}.bottom--2-ns{bottom:-2rem}.left--2-ns{left:-2rem}.absolute--fill-ns{top:0;right:0;bottom:0;left:0}}@media screen and (min-width: 30em) and (max-width: 60em){.top-0-m{top:0}.left-0-m{left:0}.right-0-m{right:0}.bottom-0-m{bottom:0}.top-1-m{top:1rem}.left-1-m{left:1rem}.right-1-m{right:1rem}.bottom-1-m{bottom:1rem}.top-2-m{top:2rem}.left-2-m{left:2rem}.right-2-m{right:2rem}.bottom-2-m{bottom:2rem}.top--1-m{top:-1rem}.right--1-m{right:-1rem}.bottom--1-m{bottom:-1rem}.left--1-m{left:-1rem}.top--2-m{top:-2rem}.right--2-m{right:-2rem}.bottom--2-m{bottom:-2rem}.left--2-m{left:-2rem}.absolute--fill-m{top:0;right:0;bottom:0;left:0}}@media screen and (min-width: 60em){.top-0-l{top:0}.left-0-l{left:0}.right-0-l{right:0}.bottom-0-l{bottom:0}.top-1-l{top:1rem}.left-1-l{left:1rem}.right-1-l{right:1rem}.bottom-1-l{bottom:1rem}.top-2-l{top:2rem}.left-2-l{left:2rem}.right-2-l{right:2rem}.bottom-2-l{bottom:2rem}.top--1-l{top:-1rem}.right--1-l{right:-1rem}.bottom--1-l{bottom:-1rem}.left--1-l{left:-1rem}.top--2-l{top:-2rem}.right--2-l{right:-2rem}.bottom--2-l{bottom:-2rem}.left--2-l{left:-2rem}.absolute--fill-l{top:0;right:0;bottom:0;left:0}}.cf:before,.cf:after{content:" ";display:table}.cf:after{clear:both}.cf{*zoom:1}.cl{clear:left}.cr{clear:right}.cb{clear:both}.cn{clear:none}@media screen and (min-width: 30em){.cl-ns{clear:left}.cr-ns{clear:right}.cb-ns{clear:both}.cn-ns{clear:none}}@media screen and (min-width: 30em) and (max-width: 60em){.cl-m{clear:left}.cr-m{clear:right}.cb-m{clear:both}.cn-m{clear:none}}@media screen and (min-width: 60em){.cl-l{clear:left}.cr-l{clear:right}.cb-l{clear:both}.cn-l{clear:none}}.dn{display:none}.di{display:inline}.db{display:block}.dib{display:inline-block}.dit{display:inline-table}.dt{display:table}.dtc{display:table-cell}.dt-row{display:table-row}.dt-row-group{display:table-row-group}.dt-column{display:table-column}.dt-column-group{display:table-column-group}.dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width: 30em){.dn-ns{display:none}.di-ns{display:inline}.db-ns{display:block}.dib-ns{display:inline-block}.dit-ns{display:inline-table}.dt-ns{display:table}.dtc-ns{display:table-cell}.dt-row-ns{display:table-row}.dt-row-group-ns{display:table-row-group}.dt-column-ns{display:table-column}.dt-column-group-ns{display:table-column-group}.dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width: 30em) and (max-width: 60em){.dn-m{display:none}.di-m{display:inline}.db-m{display:block}.dib-m{display:inline-block}.dit-m{display:inline-table}.dt-m{display:table}.dtc-m{display:table-cell}.dt-row-m{display:table-row}.dt-row-group-m{display:table-row-group}.dt-column-m{display:table-column}.dt-column-group-m{display:table-column-group}.dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width: 60em){.dn-l{display:none}.di-l{display:inline}.db-l{display:block}.dib-l{display:inline-block}.dit-l{display:inline-table}.dt-l{display:table}.dtc-l{display:table-cell}.dt-row-l{display:table-row}.dt-row-group-l{display:table-row-group}.dt-column-l{display:table-column}.dt-column-group-l{display:table-column-group}.dt--fixed-l{table-layout:fixed;width:100%}}.flex{display:flex}.inline-flex{display:inline-flex}.flex-auto{flex:1 1 auto;min-width:0;min-height:0}.flex-none{flex:none}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-row-reverse{flex-direction:row-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-stretch{align-content:stretch}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-last{order:99999}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}@media screen and (min-width: 30em){.flex-ns{display:flex}.inline-flex-ns{display:inline-flex}.flex-auto-ns{flex:1 1 auto;min-width:0;min-height:0}.flex-none-ns{flex:none}.flex-column-ns{flex-direction:column}.flex-row-ns{flex-direction:row}.flex-wrap-ns{flex-wrap:wrap}.flex-nowrap-ns{flex-wrap:nowrap}.flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.flex-column-reverse-ns{flex-direction:column-reverse}.flex-row-reverse-ns{flex-direction:row-reverse}.items-start-ns{align-items:flex-start}.items-end-ns{align-items:flex-end}.items-center-ns{align-items:center}.items-baseline-ns{align-items:baseline}.items-stretch-ns{align-items:stretch}.self-start-ns{align-self:flex-start}.self-end-ns{align-self:flex-end}.self-center-ns{align-self:center}.self-baseline-ns{align-self:baseline}.self-stretch-ns{align-self:stretch}.justify-start-ns{justify-content:flex-start}.justify-end-ns{justify-content:flex-end}.justify-center-ns{justify-content:center}.justify-between-ns{justify-content:space-between}.justify-around-ns{justify-content:space-around}.content-start-ns{align-content:flex-start}.content-end-ns{align-content:flex-end}.content-center-ns{align-content:center}.content-between-ns{align-content:space-between}.content-around-ns{align-content:space-around}.content-stretch-ns{align-content:stretch}.order-0-ns{order:0}.order-1-ns{order:1}.order-2-ns{order:2}.order-3-ns{order:3}.order-4-ns{order:4}.order-5-ns{order:5}.order-6-ns{order:6}.order-7-ns{order:7}.order-8-ns{order:8}.order-last-ns{order:99999}.flex-grow-0-ns{flex-grow:0}.flex-grow-1-ns{flex-grow:1}.flex-shrink-0-ns{flex-shrink:0}.flex-shrink-1-ns{flex-shrink:1}}@media screen and (min-width: 30em) and (max-width: 60em){.flex-m{display:flex}.inline-flex-m{display:inline-flex}.flex-auto-m{flex:1 1 auto;min-width:0;min-height:0}.flex-none-m{flex:none}.flex-column-m{flex-direction:column}.flex-row-m{flex-direction:row}.flex-wrap-m{flex-wrap:wrap}.flex-nowrap-m{flex-wrap:nowrap}.flex-wrap-reverse-m{flex-wrap:wrap-reverse}.flex-column-reverse-m{flex-direction:column-reverse}.flex-row-reverse-m{flex-direction:row-reverse}.items-start-m{align-items:flex-start}.items-end-m{align-items:flex-end}.items-center-m{align-items:center}.items-baseline-m{align-items:baseline}.items-stretch-m{align-items:stretch}.self-start-m{align-self:flex-start}.self-end-m{align-self:flex-end}.self-center-m{align-self:center}.self-baseline-m{align-self:baseline}.self-stretch-m{align-self:stretch}.justify-start-m{justify-content:flex-start}.justify-end-m{justify-content:flex-end}.justify-center-m{justify-content:center}.justify-between-m{justify-content:space-between}.justify-around-m{justify-content:space-around}.content-start-m{align-content:flex-start}.content-end-m{align-content:flex-end}.content-center-m{align-content:center}.content-between-m{align-content:space-between}.content-around-m{align-content:space-around}.content-stretch-m{align-content:stretch}.order-0-m{order:0}.order-1-m{order:1}.order-2-m{order:2}.order-3-m{order:3}.order-4-m{order:4}.order-5-m{order:5}.order-6-m{order:6}.order-7-m{order:7}.order-8-m{order:8}.order-last-m{order:99999}.flex-grow-0-m{flex-grow:0}.flex-grow-1-m{flex-grow:1}.flex-shrink-0-m{flex-shrink:0}.flex-shrink-1-m{flex-shrink:1}}@media screen and (min-width: 60em){.flex-l{display:flex}.inline-flex-l{display:inline-flex}.flex-auto-l{flex:1 1 auto;min-width:0;min-height:0}.flex-none-l{flex:none}.flex-column-l{flex-direction:column}.flex-row-l{flex-direction:row}.flex-wrap-l{flex-wrap:wrap}.flex-nowrap-l{flex-wrap:nowrap}.flex-wrap-reverse-l{flex-wrap:wrap-reverse}.flex-column-reverse-l{flex-direction:column-reverse}.flex-row-reverse-l{flex-direction:row-reverse}.items-start-l{align-items:flex-start}.items-end-l{align-items:flex-end}.items-center-l{align-items:center}.items-baseline-l{align-items:baseline}.items-stretch-l{align-items:stretch}.self-start-l{align-self:flex-start}.self-end-l{align-self:flex-end}.self-center-l{align-self:center}.self-baseline-l{align-self:baseline}.self-stretch-l{align-self:stretch}.justify-start-l{justify-content:flex-start}.justify-end-l{justify-content:flex-end}.justify-center-l{justify-content:center}.justify-between-l{justify-content:space-between}.justify-around-l{justify-content:space-around}.content-start-l{align-content:flex-start}.content-end-l{align-content:flex-end}.content-center-l{align-content:center}.content-between-l{align-content:space-between}.content-around-l{align-content:space-around}.content-stretch-l{align-content:stretch}.order-0-l{order:0}.order-1-l{order:1}.order-2-l{order:2}.order-3-l{order:3}.order-4-l{order:4}.order-5-l{order:5}.order-6-l{order:6}.order-7-l{order:7}.order-8-l{order:8}.order-last-l{order:99999}.flex-grow-0-l{flex-grow:0}.flex-grow-1-l{flex-grow:1}.flex-shrink-0-l{flex-shrink:0}.flex-shrink-1-l{flex-shrink:1}}.fl{float:left;_display:inline}.fr{float:right;_display:inline}.fn{float:none}@media screen and (min-width: 30em){.fl-ns{float:left;_display:inline}.fr-ns{float:right;_display:inline}.fn-ns{float:none}}@media screen and (min-width: 30em) and (max-width: 60em){.fl-m{float:left;_display:inline}.fr-m{float:right;_display:inline}.fn-m{float:none}}@media screen and (min-width: 60em){.fl-l{float:left;_display:inline}.fr-l{float:right;_display:inline}.fn-l{float:none}}.sans-serif{font-family:-apple-system,BlinkMacSystemFont,"avenir next",avenir,helvetica,"helvetica neue",ubuntu,roboto,noto,"segoe ui",arial,sans-serif}.serif{font-family:georgia,serif}.system-sans-serif{font-family:sans-serif}.system-serif{font-family:serif}code,.code{font-family:Consolas, monaco, monospace}.courier{font-family:'Courier Next', courier, monospace}.helvetica{font-family:'helvetica neue', helvetica, sans-serif}.avenir{font-family:'avenir next', avenir, sans-serif}.athelas{font-family:athelas, georgia, serif}.georgia{font-family:georgia, serif}.times{font-family:times, serif}.bodoni{font-family:"Bodoni MT", serif}.calisto{font-family:"Calisto MT", serif}.garamond{font-family:garamond, serif}.baskerville{font-family:baskerville, serif}.i{font-style:italic}.fs-normal{font-style:normal}@media screen and (min-width: 30em){.i-ns{font-style:italic}.fs-normal-ns{font-style:normal}}@media screen and (min-width: 30em) and (max-width: 60em){.i-m{font-style:italic}.fs-normal-m{font-style:normal}}@media screen and (min-width: 60em){.i-l{font-style:italic}.fs-normal-l{font-style:normal}}.normal{font-weight:normal}.b{font-weight:bold}.fw1{font-weight:100}.fw2{font-weight:200}.fw3{font-weight:300}.fw4{font-weight:400}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fw9{font-weight:900}@media screen and (min-width: 30em){.normal-ns{font-weight:normal}.b-ns{font-weight:bold}.fw1-ns{font-weight:100}.fw2-ns{font-weight:200}.fw3-ns{font-weight:300}.fw4-ns{font-weight:400}.fw5-ns{font-weight:500}.fw6-ns{font-weight:600}.fw7-ns{font-weight:700}.fw8-ns{font-weight:800}.fw9-ns{font-weight:900}}@media screen and (min-width: 30em) and (max-width: 60em){.normal-m{font-weight:normal}.b-m{font-weight:bold}.fw1-m{font-weight:100}.fw2-m{font-weight:200}.fw3-m{font-weight:300}.fw4-m{font-weight:400}.fw5-m{font-weight:500}.fw6-m{font-weight:600}.fw7-m{font-weight:700}.fw8-m{font-weight:800}.fw9-m{font-weight:900}}@media screen and (min-width: 60em){.normal-l{font-weight:normal}.b-l{font-weight:bold}.fw1-l{font-weight:100}.fw2-l{font-weight:200}.fw3-l{font-weight:300}.fw4-l{font-weight:400}.fw5-l{font-weight:500}.fw6-l{font-weight:600}.fw7-l{font-weight:700}.fw8-l{font-weight:800}.fw9-l{font-weight:900}}.input-reset{-webkit-appearance:none;-moz-appearance:none}.button-reset::-moz-focus-inner,.input-reset::-moz-focus-inner{border:0;padding:0}.h1{height:1rem}.h2{height:2rem}.h3{height:4rem}.h4{height:8rem}.h5{height:16rem}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.min-h-100{min-height:100%}.vh-25{height:25vh}.vh-50{height:50vh}.vh-75{height:75vh}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.h-auto{height:auto}.h-inherit{height:inherit}@media screen and (min-width: 30em){.h1-ns{height:1rem}.h2-ns{height:2rem}.h3-ns{height:4rem}.h4-ns{height:8rem}.h5-ns{height:16rem}.h-25-ns{height:25%}.h-50-ns{height:50%}.h-75-ns{height:75%}.h-100-ns{height:100%}.min-h-100-ns{min-height:100%}.vh-25-ns{height:25vh}.vh-50-ns{height:50vh}.vh-75-ns{height:75vh}.vh-100-ns{height:100vh}.min-vh-100-ns{min-height:100vh}.h-auto-ns{height:auto}.h-inherit-ns{height:inherit}}@media screen and (min-width: 30em) and (max-width: 60em){.h1-m{height:1rem}.h2-m{height:2rem}.h3-m{height:4rem}.h4-m{height:8rem}.h5-m{height:16rem}.h-25-m{height:25%}.h-50-m{height:50%}.h-75-m{height:75%}.h-100-m{height:100%}.min-h-100-m{min-height:100%}.vh-25-m{height:25vh}.vh-50-m{height:50vh}.vh-75-m{height:75vh}.vh-100-m{height:100vh}.min-vh-100-m{min-height:100vh}.h-auto-m{height:auto}.h-inherit-m{height:inherit}}@media screen and (min-width: 60em){.h1-l{height:1rem}.h2-l{height:2rem}.h3-l{height:4rem}.h4-l{height:8rem}.h5-l{height:16rem}.h-25-l{height:25%}.h-50-l{height:50%}.h-75-l{height:75%}.h-100-l{height:100%}.min-h-100-l{min-height:100%}.vh-25-l{height:25vh}.vh-50-l{height:50vh}.vh-75-l{height:75vh}.vh-100-l{height:100vh}.min-vh-100-l{min-height:100vh}.h-auto-l{height:auto}.h-inherit-l{height:inherit}}.tracked{letter-spacing:.1em}.tracked-tight{letter-spacing:-.05em}.tracked-mega{letter-spacing:.25em}@media screen and (min-width: 30em){.tracked-ns{letter-spacing:.1em}.tracked-tight-ns{letter-spacing:-.05em}.tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width: 30em) and (max-width: 60em){.tracked-m{letter-spacing:.1em}.tracked-tight-m{letter-spacing:-.05em}.tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width: 60em){.tracked-l{letter-spacing:.1em}.tracked-tight-l{letter-spacing:-.05em}.tracked-mega-l{letter-spacing:.25em}}.lh-solid{line-height:1}.lh-title{line-height:1.25}.lh-copy{line-height:1.5}@media screen and (min-width: 30em){.lh-solid-ns{line-height:1}.lh-title-ns{line-height:1.25}.lh-copy-ns{line-height:1.5}}@media screen and (min-width: 30em) and (max-width: 60em){.lh-solid-m{line-height:1}.lh-title-m{line-height:1.25}.lh-copy-m{line-height:1.5}}@media screen and (min-width: 60em){.lh-solid-l{line-height:1}.lh-title-l{line-height:1.25}.lh-copy-l{line-height:1.5}}.link{text-decoration:none;transition:color .15s ease-in}.link:link,.link:visited{transition:color .15s ease-in}.link:hover{transition:color .15s ease-in}.link:active{transition:color .15s ease-in}.link:focus{transition:color .15s ease-in;outline:1px dotted currentColor}.list{list-style-type:none}.mw-100{max-width:100%}.mw1{max-width:1rem}.mw2{max-width:2rem}.mw3{max-width:4rem}.mw4{max-width:8rem}.mw5{max-width:16rem}.mw6{max-width:32rem}.mw7{max-width:48rem}.mw8{max-width:64rem}.mw9{max-width:96rem}.mw-none{max-width:none}@media screen and (min-width: 30em){.mw-100-ns{max-width:100%}.mw1-ns{max-width:1rem}.mw2-ns{max-width:2rem}.mw3-ns{max-width:4rem}.mw4-ns{max-width:8rem}.mw5-ns{max-width:16rem}.mw6-ns{max-width:32rem}.mw7-ns{max-width:48rem}.mw8-ns{max-width:64rem}.mw9-ns{max-width:96rem}.mw-none-ns{max-width:none}}@media screen and (min-width: 30em) and (max-width: 60em){.mw-100-m{max-width:100%}.mw1-m{max-width:1rem}.mw2-m{max-width:2rem}.mw3-m{max-width:4rem}.mw4-m{max-width:8rem}.mw5-m{max-width:16rem}.mw6-m{max-width:32rem}.mw7-m{max-width:48rem}.mw8-m{max-width:64rem}.mw9-m{max-width:96rem}.mw-none-m{max-width:none}}@media screen and (min-width: 60em){.mw-100-l{max-width:100%}.mw1-l{max-width:1rem}.mw2-l{max-width:2rem}.mw3-l{max-width:4rem}.mw4-l{max-width:8rem}.mw5-l{max-width:16rem}.mw6-l{max-width:32rem}.mw7-l{max-width:48rem}.mw8-l{max-width:64rem}.mw9-l{max-width:96rem}.mw-none-l{max-width:none}}.w1{width:1rem}.w2,.project-carousel-container .project-carousel-button.active{width:2rem}.w3{width:4rem}.w4{width:8rem}.w5{width:16rem}.w-10{width:10%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-33{width:33%}.w-34{width:34%}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-70{width:70%}.w-75{width:75%}.w-80{width:80%}.w-90{width:90%}.w-100{width:100%}.w-third{width:33.33333%}.w-two-thirds{width:66.66667%}.w-auto{width:auto}@media screen and (min-width: 30em){.w1-ns{width:1rem}.w2-ns{width:2rem}.w3-ns{width:4rem}.w4-ns{width:8rem}.w5-ns{width:16rem}.w-10-ns{width:10%}.w-20-ns{width:20%}.w-25-ns{width:25%}.w-30-ns{width:30%}.w-33-ns{width:33%}.w-34-ns{width:34%}.w-40-ns{width:40%}.w-50-ns{width:50%}.w-60-ns{width:60%}.w-70-ns{width:70%}.w-75-ns{width:75%}.w-80-ns{width:80%}.w-90-ns{width:90%}.w-100-ns{width:100%}.w-third-ns{width:33.33333%}.w-two-thirds-ns{width:66.66667%}.w-auto-ns{width:auto}}@media screen and (min-width: 30em) and (max-width: 60em){.w1-m{width:1rem}.w2-m{width:2rem}.w3-m{width:4rem}.w4-m{width:8rem}.w5-m{width:16rem}.w-10-m{width:10%}.w-20-m{width:20%}.w-25-m{width:25%}.w-30-m{width:30%}.w-33-m{width:33%}.w-34-m{width:34%}.w-40-m{width:40%}.w-50-m{width:50%}.w-60-m{width:60%}.w-70-m{width:70%}.w-75-m{width:75%}.w-80-m{width:80%}.w-90-m{width:90%}.w-100-m{width:100%}.w-third-m{width:33.33333%}.w-two-thirds-m{width:66.66667%}.w-auto-m{width:auto}}@media screen and (min-width: 60em){.w1-l{width:1rem}.w2-l{width:2rem}.w3-l{width:4rem}.w4-l{width:8rem}.w5-l{width:16rem}.w-10-l{width:10%}.w-20-l{width:20%}.w-25-l{width:25%}.w-30-l{width:30%}.w-33-l{width:33%}.w-34-l{width:34%}.w-40-l{width:40%}.w-50-l{width:50%}.w-60-l{width:60%}.w-70-l{width:70%}.w-75-l{width:75%}.w-80-l{width:80%}.w-90-l{width:90%}.w-100-l{width:100%}.w-third-l{width:33.33333%}.w-two-thirds-l{width:66.66667%}.w-auto-l{width:auto}}.overflow-visible{overflow:visible}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.overflow-x-visible{overflow-x:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-auto{overflow-y:auto}@media screen and (min-width: 30em){.overflow-visible-ns{overflow:visible}.overflow-hidden-ns{overflow:hidden}.overflow-scroll-ns{overflow:scroll}.overflow-auto-ns{overflow:auto}.overflow-x-visible-ns{overflow-x:visible}.overflow-x-hidden-ns{overflow-x:hidden}.overflow-x-scroll-ns{overflow-x:scroll}.overflow-x-auto-ns{overflow-x:auto}.overflow-y-visible-ns{overflow-y:visible}.overflow-y-hidden-ns{overflow-y:hidden}.overflow-y-scroll-ns{overflow-y:scroll}.overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width: 30em) and (max-width: 60em){.overflow-visible-m{overflow:visible}.overflow-hidden-m{overflow:hidden}.overflow-scroll-m{overflow:scroll}.overflow-auto-m{overflow:auto}.overflow-x-visible-m{overflow-x:visible}.overflow-x-hidden-m{overflow-x:hidden}.overflow-x-scroll-m{overflow-x:scroll}.overflow-x-auto-m{overflow-x:auto}.overflow-y-visible-m{overflow-y:visible}.overflow-y-hidden-m{overflow-y:hidden}.overflow-y-scroll-m{overflow-y:scroll}.overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width: 60em){.overflow-visible-l{overflow:visible}.overflow-hidden-l{overflow:hidden}.overflow-scroll-l{overflow:scroll}.overflow-auto-l{overflow:auto}.overflow-x-visible-l{overflow-x:visible}.overflow-x-hidden-l{overflow-x:hidden}.overflow-x-scroll-l{overflow-x:scroll}.overflow-x-auto-l{overflow-x:auto}.overflow-y-visible-l{overflow-y:visible}.overflow-y-hidden-l{overflow-y:hidden}.overflow-y-scroll-l{overflow-y:scroll}.overflow-y-auto-l{overflow-y:auto}}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}@media screen and (min-width: 30em){.static-ns{position:static}.relative-ns{position:relative}.absolute-ns{position:absolute}.fixed-ns{position:fixed}}@media screen and (min-width: 30em) and (max-width: 60em){.static-m{position:static}.relative-m{position:relative}.absolute-m{position:absolute}.fixed-m{position:fixed}}@media screen and (min-width: 60em){.static-l{position:static}.relative-l{position:relative}.absolute-l{position:absolute}.fixed-l{position:fixed}}.o-100{opacity:1}.o-90{opacity:.9}.o-80{opacity:.8}.o-70{opacity:.7}.o-60{opacity:.6}.o-50{opacity:.5}.o-40{opacity:.4}.o-30{opacity:.3}.o-20{opacity:.2}.o-10{opacity:.1}.o-05{opacity:.05}.o-025{opacity:.025}.o-0{opacity:0}.rotate-45{transform:rotate(45deg)}.rotate-90{transform:rotate(90deg)}.rotate-135{transform:rotate(135deg)}.rotate-180{transform:rotate(180deg)}.rotate-225{transform:rotate(225deg)}.rotate-270{transform:rotate(270deg)}.rotate-315{transform:rotate(315deg)}@media screen and (min-width: 30em){.rotate-45-ns{transform:rotate(45deg)}.rotate-90-ns{transform:rotate(90deg)}.rotate-135-ns{transform:rotate(135deg)}.rotate-180-ns{transform:rotate(180deg)}.rotate-225-ns{transform:rotate(225deg)}.rotate-270-ns{transform:rotate(270deg)}.rotate-315-ns{transform:rotate(315deg)}}@media screen and (min-width: 30em) and (max-width: 60em){.rotate-45-m{transform:rotate(45deg)}.rotate-90-m{transform:rotate(90deg)}.rotate-135-m{transform:rotate(135deg)}.rotate-180-m{transform:rotate(180deg)}.rotate-225-m{transform:rotate(225deg)}.rotate-270-m{transform:rotate(270deg)}.rotate-315-m{transform:rotate(315deg)}}@media screen and (min-width: 60em){.rotate-45-l{transform:rotate(45deg)}.rotate-90-l{transform:rotate(90deg)}.rotate-135-l{transform:rotate(135deg)}.rotate-180-l{transform:rotate(180deg)}.rotate-225-l{transform:rotate(225deg)}.rotate-270-l{transform:rotate(270deg)}.rotate-315-l{transform:rotate(315deg)}}.black-90{color:rgba(0,0,0,0.9)}.black-80{color:rgba(0,0,0,0.8)}.black-70{color:rgba(0,0,0,0.7)}.black-60{color:rgba(0,0,0,0.6)}.black-50{color:rgba(0,0,0,0.5)}.black-40{color:rgba(0,0,0,0.4)}.black-30{color:rgba(0,0,0,0.3)}.black-20{color:rgba(0,0,0,0.2)}.black-10{color:rgba(0,0,0,0.1)}.black-05{color:rgba(0,0,0,0.05)}.white-90{color:rgba(255,255,255,0.9)}.white-80{color:rgba(255,255,255,0.8)}.white-70{color:rgba(255,255,255,0.7)}.white-60{color:rgba(255,255,255,0.6)}.white-50{color:rgba(255,255,255,0.5)}.white-40{color:rgba(255,255,255,0.4)}.white-30{color:rgba(255,255,255,0.3)}.white-20{color:rgba(255,255,255,0.2)}.white-10{color:rgba(255,255,255,0.1)}.black{color:#000}.near-black{color:#111}.dark-gray{color:#333}.mid-gray{color:#555}.gray{color:#777}.silver{color:#999}.light-silver{color:#aaa}.moon-gray{color:#ccc}.light-gray{color:#eee}.near-white{color:#f4f4f4}.white{color:#fff}.dark-red{color:#e7040f}.red{color:#ff4136}.light-red{color:#ff725c}.orange{color:#ff6300}.gold{color:#ffb700}.yellow{color:gold}.light-yellow{color:#fbf1a9}.purple{color:#5e2ca5}.light-purple{color:#a463f2}.dark-pink{color:#d5008f}.hot-pink{color:#ff41b4}.pink{color:#ff80cc}.light-pink{color:#ffa3d7}.dark-green{color:#137752}.green{color:#19a974}.light-green{color:#9eebcf}.navy{color:#001b44}.dark-blue{color:#00449e}.blue{color:#357edd}.light-blue{color:#96ccff}.lightest-blue{color:#cdecff}.washed-blue{color:#f6fffe}.washed-green{color:#e8fdf5}.washed-yellow{color:#fffceb}.washed-red{color:#ffdfdf}.color-inherit{color:inherit}.bg-black-90{background-color:rgba(0,0,0,0.9)}.bg-black-80{background-color:rgba(0,0,0,0.8)}.bg-black-70{background-color:rgba(0,0,0,0.7)}.bg-black-60{background-color:rgba(0,0,0,0.6)}.bg-black-50{background-color:rgba(0,0,0,0.5)}.bg-black-40{background-color:rgba(0,0,0,0.4)}.bg-black-30{background-color:rgba(0,0,0,0.3)}.bg-black-20{background-color:rgba(0,0,0,0.2)}.bg-black-10{background-color:rgba(0,0,0,0.1)}.bg-black-05{background-color:rgba(0,0,0,0.05)}.bg-white-90{background-color:rgba(255,255,255,0.9)}.bg-white-80{background-color:rgba(255,255,255,0.8)}.bg-white-70{background-color:rgba(255,255,255,0.7)}.bg-white-60{background-color:rgba(255,255,255,0.6)}.bg-white-50{background-color:rgba(255,255,255,0.5)}.bg-white-40{background-color:rgba(255,255,255,0.4)}.bg-white-30{background-color:rgba(255,255,255,0.3)}.bg-white-20{background-color:rgba(255,255,255,0.2)}.bg-white-10{background-color:rgba(255,255,255,0.1)}.bg-black{background-color:#000}.bg-near-black{background-color:#111}.bg-dark-gray{background-color:#333}.bg-mid-gray{background-color:#555}.bg-gray{background-color:#777}.bg-silver{background-color:#999}.bg-light-silver{background-color:#aaa}.bg-moon-gray{background-color:#ccc}.bg-light-gray{background-color:#eee}.bg-near-white{background-color:#f4f4f4}.bg-white{background-color:#fff}.bg-transparent{background-color:rgba(0,0,0,0)}.bg-dark-red{background-color:#e7040f}.bg-red{background-color:#ff4136}.bg-light-red{background-color:#ff725c}.bg-orange{background-color:#ff6300}.bg-gold{background-color:#ffb700}.bg-yellow{background-color:gold}.bg-light-yellow{background-color:#fbf1a9}.bg-purple{background-color:#5e2ca5}.bg-light-purple{background-color:#a463f2}.bg-dark-pink{background-color:#d5008f}.bg-hot-pink{background-color:#ff41b4}.bg-pink{background-color:#ff80cc}.bg-light-pink{background-color:#ffa3d7}.bg-dark-green{background-color:#137752}.bg-green{background-color:#19a974}.bg-light-green{background-color:#9eebcf}.bg-navy{background-color:#001b44}.bg-dark-blue{background-color:#00449e}.bg-blue{background-color:#357edd}.bg-light-blue{background-color:#96ccff}.bg-lightest-blue{background-color:#cdecff}.bg-washed-blue{background-color:#f6fffe}.bg-washed-green{background-color:#e8fdf5}.bg-washed-yellow{background-color:#fffceb}.bg-washed-red{background-color:#ffdfdf}.bg-inherit{background-color:inherit}.hover-black:hover,.hover-black:focus{color:#000}.hover-near-black:hover,.hover-near-black:focus{color:#111}.hover-dark-gray:hover,.hover-dark-gray:focus{color:#333}.hover-mid-gray:hover,.hover-mid-gray:focus{color:#555}.hover-gray:hover,.hover-gray:focus{color:#777}.hover-silver:hover,.hover-silver:focus{color:#999}.hover-light-silver:hover,.hover-light-silver:focus{color:#aaa}.hover-moon-gray:hover,.hover-moon-gray:focus{color:#ccc}.hover-light-gray:hover,.hover-light-gray:focus{color:#eee}.hover-near-white:hover,.hover-near-white:focus{color:#f4f4f4}.hover-white:hover,.hover-white:focus{color:#fff}.hover-black-90:hover,.hover-black-90:focus{color:rgba(0,0,0,0.9)}.hover-black-80:hover,.hover-black-80:focus{color:rgba(0,0,0,0.8)}.hover-black-70:hover,.hover-black-70:focus{color:rgba(0,0,0,0.7)}.hover-black-60:hover,.hover-black-60:focus{color:rgba(0,0,0,0.6)}.hover-black-50:hover,.hover-black-50:focus{color:rgba(0,0,0,0.5)}.hover-black-40:hover,.hover-black-40:focus{color:rgba(0,0,0,0.4)}.hover-black-30:hover,.hover-black-30:focus{color:rgba(0,0,0,0.3)}.hover-black-20:hover,.hover-black-20:focus{color:rgba(0,0,0,0.2)}.hover-black-10:hover,.hover-black-10:focus{color:rgba(0,0,0,0.1)}.hover-white-90:hover,.hover-white-90:focus{color:rgba(255,255,255,0.9)}.hover-white-80:hover,.hover-white-80:focus{color:rgba(255,255,255,0.8)}.hover-white-70:hover,.hover-white-70:focus{color:rgba(255,255,255,0.7)}.hover-white-60:hover,.hover-white-60:focus{color:rgba(255,255,255,0.6)}.hover-white-50:hover,.hover-white-50:focus{color:rgba(255,255,255,0.5)}.hover-white-40:hover,.hover-white-40:focus{color:rgba(255,255,255,0.4)}.hover-white-30:hover,.hover-white-30:focus{color:rgba(255,255,255,0.3)}.hover-white-20:hover,.hover-white-20:focus{color:rgba(255,255,255,0.2)}.hover-white-10:hover,.hover-white-10:focus{color:rgba(255,255,255,0.1)}.hover-inherit:hover,.hover-inherit:focus{color:inherit}.hover-bg-black:hover,.hover-bg-black:focus{background-color:#000}.hover-bg-near-black:hover,.hover-bg-near-black:focus{background-color:#111}.hover-bg-dark-gray:hover,.hover-bg-dark-gray:focus{background-color:#333}.hover-bg-mid-gray:hover,.hover-bg-mid-gray:focus{background-color:#555}.hover-bg-gray:hover,.hover-bg-gray:focus{background-color:#777}.hover-bg-silver:hover,.hover-bg-silver:focus{background-color:#999}.hover-bg-light-silver:hover,.hover-bg-light-silver:focus{background-color:#aaa}.hover-bg-moon-gray:hover,.hover-bg-moon-gray:focus{background-color:#ccc}.hover-bg-light-gray:hover,.hover-bg-light-gray:focus{background-color:#eee}.hover-bg-near-white:hover,.hover-bg-near-white:focus{background-color:#f4f4f4}.hover-bg-white:hover,.hover-bg-white:focus{background-color:#fff}.hover-bg-transparent:hover,.hover-bg-transparent:focus{background-color:rgba(0,0,0,0)}.hover-bg-black-90:hover,.hover-bg-black-90:focus{background-color:rgba(0,0,0,0.9)}.hover-bg-black-80:hover,.hover-bg-black-80:focus{background-color:rgba(0,0,0,0.8)}.hover-bg-black-70:hover,.hover-bg-black-70:focus{background-color:rgba(0,0,0,0.7)}.hover-bg-black-60:hover,.hover-bg-black-60:focus{background-color:rgba(0,0,0,0.6)}.hover-bg-black-50:hover,.hover-bg-black-50:focus{background-color:rgba(0,0,0,0.5)}.hover-bg-black-40:hover,.hover-bg-black-40:focus{background-color:rgba(0,0,0,0.4)}.hover-bg-black-30:hover,.hover-bg-black-30:focus{background-color:rgba(0,0,0,0.3)}.hover-bg-black-20:hover,.hover-bg-black-20:focus{background-color:rgba(0,0,0,0.2)}.hover-bg-black-10:hover,.hover-bg-black-10:focus{background-color:rgba(0,0,0,0.1)}.hover-bg-white-90:hover,.hover-bg-white-90:focus{background-color:rgba(255,255,255,0.9)}.hover-bg-white-80:hover,.hover-bg-white-80:focus{background-color:rgba(255,255,255,0.8)}.hover-bg-white-70:hover,.hover-bg-white-70:focus{background-color:rgba(255,255,255,0.7)}.hover-bg-white-60:hover,.hover-bg-white-60:focus{background-color:rgba(255,255,255,0.6)}.hover-bg-white-50:hover,.hover-bg-white-50:focus{background-color:rgba(255,255,255,0.5)}.hover-bg-white-40:hover,.hover-bg-white-40:focus{background-color:rgba(255,255,255,0.4)}.hover-bg-white-30:hover,.hover-bg-white-30:focus{background-color:rgba(255,255,255,0.3)}.hover-bg-white-20:hover,.hover-bg-white-20:focus{background-color:rgba(255,255,255,0.2)}.hover-bg-white-10:hover,.hover-bg-white-10:focus{background-color:rgba(255,255,255,0.1)}.hover-dark-red:hover,.hover-dark-red:focus{color:#e7040f}.hover-red:hover,.hover-red:focus{color:#ff4136}.hover-light-red:hover,.hover-light-red:focus{color:#ff725c}.hover-orange:hover,.hover-orange:focus{color:#ff6300}.hover-gold:hover,.hover-gold:focus{color:#ffb700}.hover-yellow:hover,.hover-yellow:focus{color:gold}.hover-light-yellow:hover,.hover-light-yellow:focus{color:#fbf1a9}.hover-purple:hover,.hover-purple:focus{color:#5e2ca5}.hover-light-purple:hover,.hover-light-purple:focus{color:#a463f2}.hover-dark-pink:hover,.hover-dark-pink:focus{color:#d5008f}.hover-hot-pink:hover,.hover-hot-pink:focus{color:#ff41b4}.hover-pink:hover,.hover-pink:focus{color:#ff80cc}.hover-light-pink:hover,.hover-light-pink:focus{color:#ffa3d7}.hover-dark-green:hover,.hover-dark-green:focus{color:#137752}.hover-green:hover,.hover-green:focus{color:#19a974}.hover-light-green:hover,.hover-light-green:focus{color:#9eebcf}.hover-navy:hover,.hover-navy:focus{color:#001b44}.hover-dark-blue:hover,.hover-dark-blue:focus{color:#00449e}.hover-blue:hover,.hover-blue:focus{color:#357edd}.hover-light-blue:hover,.hover-light-blue:focus{color:#96ccff}.hover-lightest-blue:hover,.hover-lightest-blue:focus{color:#cdecff}.hover-washed-blue:hover,.hover-washed-blue:focus{color:#f6fffe}.hover-washed-green:hover,.hover-washed-green:focus{color:#e8fdf5}.hover-washed-yellow:hover,.hover-washed-yellow:focus{color:#fffceb}.hover-washed-red:hover,.hover-washed-red:focus{color:#ffdfdf}.hover-bg-dark-red:hover,.hover-bg-dark-red:focus{background-color:#e7040f}.hover-bg-red:hover,.hover-bg-red:focus{background-color:#ff4136}.hover-bg-light-red:hover,.hover-bg-light-red:focus{background-color:#ff725c}.hover-bg-orange:hover,.hover-bg-orange:focus{background-color:#ff6300}.hover-bg-gold:hover,.hover-bg-gold:focus{background-color:#ffb700}.hover-bg-yellow:hover,.hover-bg-yellow:focus{background-color:gold}.hover-bg-light-yellow:hover,.hover-bg-light-yellow:focus{background-color:#fbf1a9}.hover-bg-purple:hover,.hover-bg-purple:focus{background-color:#5e2ca5}.hover-bg-light-purple:hover,.hover-bg-light-purple:focus{background-color:#a463f2}.hover-bg-dark-pink:hover,.hover-bg-dark-pink:focus{background-color:#d5008f}.hover-bg-hot-pink:hover,.hover-bg-hot-pink:focus{background-color:#ff41b4}.hover-bg-pink:hover,.hover-bg-pink:focus{background-color:#ff80cc}.hover-bg-light-pink:hover,.hover-bg-light-pink:focus{background-color:#ffa3d7}.hover-bg-dark-green:hover,.hover-bg-dark-green:focus{background-color:#137752}.hover-bg-green:hover,.hover-bg-green:focus{background-color:#19a974}.hover-bg-light-green:hover,.hover-bg-light-green:focus{background-color:#9eebcf}.hover-bg-navy:hover,.hover-bg-navy:focus{background-color:#001b44}.hover-bg-dark-blue:hover,.hover-bg-dark-blue:focus{background-color:#00449e}.hover-bg-blue:hover,.hover-bg-blue:focus{background-color:#357edd}.hover-bg-light-blue:hover,.hover-bg-light-blue:focus{background-color:#96ccff}.hover-bg-lightest-blue:hover,.hover-bg-lightest-blue:focus{background-color:#cdecff}.hover-bg-washed-blue:hover,.hover-bg-washed-blue:focus{background-color:#f6fffe}.hover-bg-washed-green:hover,.hover-bg-washed-green:focus{background-color:#e8fdf5}.hover-bg-washed-yellow:hover,.hover-bg-washed-yellow:focus{background-color:#fffceb}.hover-bg-washed-red:hover,.hover-bg-washed-red:focus{background-color:#ffdfdf}.hover-bg-inherit:hover,.hover-bg-inherit:focus{background-color:inherit}.pa0{padding:0}.pa1{padding:.25rem}.pa2,header .menu-bar .items a,header .user-options a,.tab{padding:.5rem}.pa3,header #login-popup{padding:1rem}.pa4{padding:2rem}.pa5{padding:4rem}.pa6{padding:8rem}.pa7{padding:16rem}.pl0{padding-left:0}.pl1{padding-left:.25rem}.pl2{padding-left:.5rem}.pl3{padding-left:1rem}.pl4{padding-left:2rem}.pl5{padding-left:4rem}.pl6{padding-left:8rem}.pl7{padding-left:16rem}.pr0{padding-right:0}.pr1{padding-right:.25rem}.pr2{padding-right:.5rem}.pr3{padding-right:1rem}.pr4{padding-right:2rem}.pr5{padding-right:4rem}.pr6{padding-right:8rem}.pr7{padding-right:16rem}.pb0{padding-bottom:0}.pb1{padding-bottom:.25rem}.pb2{padding-bottom:.5rem}.pb3{padding-bottom:1rem}.pb4{padding-bottom:2rem}.pb5{padding-bottom:4rem}.pb6{padding-bottom:8rem}.pb7{padding-bottom:16rem}.pt0{padding-top:0}.pt1{padding-top:.25rem}.pt2{padding-top:.5rem}.pt3{padding-top:1rem}.pt4{padding-top:2rem}.pt5{padding-top:4rem}.pt6{padding-top:8rem}.pt7{padding-top:16rem}.pv0,.pagination .button{padding-top:0;padding-bottom:0}.pv1,.optionbar .options>*{padding-top:.25rem;padding-bottom:.25rem}.pv2,header .menu-bar .items a.project-logo,button,.button,input[type=button],input[type=submit]{padding-top:.5rem;padding-bottom:.5rem}.pv3{padding-top:1rem;padding-bottom:1rem}.pv4{padding-top:2rem;padding-bottom:2rem}.pv5{padding-top:4rem;padding-bottom:4rem}.pv6{padding-top:8rem;padding-bottom:8rem}.pv7{padding-top:16rem;padding-bottom:16rem}.ph0{padding-left:0;padding-right:0}.ph1{padding-left:.25rem;padding-right:.25rem}.ph2,.optionbar .options>*,.pagination .button{padding-left:.5rem;padding-right:.5rem}.ph3,button,.button,input[type=button],input[type=submit]{padding-left:1rem;padding-right:1rem}.ph4{padding-left:2rem;padding-right:2rem}.ph5{padding-left:4rem;padding-right:4rem}.ph6{padding-left:8rem;padding-right:8rem}.ph7{padding-left:16rem;padding-right:16rem}.ma0,.thread{margin:0}.ma1{margin:.25rem}.ma2{margin:.5rem}.ma3{margin:1rem}.ma4{margin:2rem}.ma5{margin:4rem}.ma6{margin:8rem}.ma7{margin:16rem}.ml0{margin-left:0}.ml1{margin-left:.25rem}.ml2{margin-left:.5rem}.ml3{margin-left:1rem}.ml4{margin-left:2rem}.ml5{margin-left:4rem}.ml6{margin-left:8rem}.ml7{margin-left:16rem}.mr0{margin-right:0}.mr1{margin-right:.25rem}.mr2{margin-right:.5rem}.mr3{margin-right:1rem}.mr4{margin-right:2rem}.mr5{margin-right:4rem}.mr6{margin-right:8rem}.mr7{margin-right:16rem}.mb0{margin-bottom:0}.mb1{margin-bottom:.25rem}.mb2{margin-bottom:.5rem}.mb3{margin-bottom:1rem}.mb4{margin-bottom:2rem}.mb5{margin-bottom:4rem}.mb6{margin-bottom:8rem}.mb7{margin-bottom:16rem}.mt0{margin-top:0}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:1rem}.mt4{margin-top:2rem}.mt5{margin-top:4rem}.mt6{margin-top:8rem}.mt7{margin-top:16rem}.mv0{margin-top:0;margin-bottom:0}.mv1{margin-top:.25rem;margin-bottom:.25rem}.mv2{margin-top:.5rem;margin-bottom:.5rem}.mv3,hr{margin-top:1rem;margin-bottom:1rem}.mv4{margin-top:2rem;margin-bottom:2rem}.mv5{margin-top:4rem;margin-bottom:4rem}.mv6{margin-top:8rem;margin-bottom:8rem}.mv7{margin-top:16rem;margin-bottom:16rem}.mh0{margin-left:0;margin-right:0}.mh1{margin-left:.25rem;margin-right:.25rem}.mh2{margin-left:.5rem;margin-right:.5rem}.mh3{margin-left:1rem;margin-right:1rem}.mh4{margin-left:2rem;margin-right:2rem}.mh5{margin-left:4rem;margin-right:4rem}.mh6{margin-left:8rem;margin-right:8rem}.mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width: 30em){.pa0-ns{padding:0}.pa1-ns{padding:.25rem}.pa2-ns{padding:.5rem}.pa3-ns{padding:1rem}.pa4-ns{padding:2rem}.pa5-ns{padding:4rem}.pa6-ns{padding:8rem}.pa7-ns{padding:16rem}.pl0-ns{padding-left:0}.pl1-ns{padding-left:.25rem}.pl2-ns{padding-left:.5rem}.pl3-ns{padding-left:1rem}.pl4-ns{padding-left:2rem}.pl5-ns{padding-left:4rem}.pl6-ns{padding-left:8rem}.pl7-ns{padding-left:16rem}.pr0-ns{padding-right:0}.pr1-ns{padding-right:.25rem}.pr2-ns{padding-right:.5rem}.pr3-ns{padding-right:1rem}.pr4-ns{padding-right:2rem}.pr5-ns{padding-right:4rem}.pr6-ns{padding-right:8rem}.pr7-ns{padding-right:16rem}.pb0-ns{padding-bottom:0}.pb1-ns{padding-bottom:.25rem}.pb2-ns{padding-bottom:.5rem}.pb3-ns{padding-bottom:1rem}.pb4-ns{padding-bottom:2rem}.pb5-ns{padding-bottom:4rem}.pb6-ns{padding-bottom:8rem}.pb7-ns{padding-bottom:16rem}.pt0-ns{padding-top:0}.pt1-ns{padding-top:.25rem}.pt2-ns{padding-top:.5rem}.pt3-ns{padding-top:1rem}.pt4-ns{padding-top:2rem}.pt5-ns{padding-top:4rem}.pt6-ns{padding-top:8rem}.pt7-ns{padding-top:16rem}.pv0-ns{padding-top:0;padding-bottom:0}.pv1-ns{padding-top:.25rem;padding-bottom:.25rem}.pv2-ns,.optionbar .options>*{padding-top:.5rem;padding-bottom:.5rem}.pv3-ns,header .menu-bar .items a{padding-top:1rem;padding-bottom:1rem}.pv4-ns{padding-top:2rem;padding-bottom:2rem}.pv5-ns{padding-top:4rem;padding-bottom:4rem}.pv6-ns{padding-top:8rem;padding-bottom:8rem}.pv7-ns{padding-top:16rem;padding-bottom:16rem}.ph0-ns{padding-left:0;padding-right:0}.ph1-ns{padding-left:.25rem;padding-right:.25rem}.ph2-ns{padding-left:.5rem;padding-right:.5rem}.ph3-ns{padding-left:1rem;padding-right:1rem}.ph4-ns{padding-left:2rem;padding-right:2rem}.ph5-ns{padding-left:4rem;padding-right:4rem}.ph6-ns{padding-left:8rem;padding-right:8rem}.ph7-ns{padding-left:16rem;padding-right:16rem}.ma0-ns{margin:0}.ma1-ns{margin:.25rem}.ma2-ns{margin:.5rem}.ma3-ns{margin:1rem}.ma4-ns{margin:2rem}.ma5-ns{margin:4rem}.ma6-ns{margin:8rem}.ma7-ns{margin:16rem}.ml0-ns{margin-left:0}.ml1-ns{margin-left:.25rem}.ml2-ns,header .menu-bar .items a:first-child{margin-left:.5rem}.ml3-ns{margin-left:1rem}.ml4-ns{margin-left:2rem}.ml5-ns{margin-left:4rem}.ml6-ns{margin-left:8rem}.ml7-ns{margin-left:16rem}.mr0-ns{margin-right:0}.mr1-ns{margin-right:.25rem}.mr2-ns{margin-right:.5rem}.mr3-ns{margin-right:1rem}.mr4-ns{margin-right:2rem}.mr5-ns{margin-right:4rem}.mr6-ns{margin-right:8rem}.mr7-ns{margin-right:16rem}.mb0-ns{margin-bottom:0}.mb1-ns{margin-bottom:.25rem}.mb2-ns{margin-bottom:.5rem}.mb3-ns{margin-bottom:1rem}.mb4-ns{margin-bottom:2rem}.mb5-ns{margin-bottom:4rem}.mb6-ns{margin-bottom:8rem}.mb7-ns{margin-bottom:16rem}.mt0-ns{margin-top:0}.mt1-ns{margin-top:.25rem}.mt2-ns{margin-top:.5rem}.mt3-ns{margin-top:1rem}.mt4-ns{margin-top:2rem}.mt5-ns{margin-top:4rem}.mt6-ns{margin-top:8rem}.mt7-ns{margin-top:16rem}.mv0-ns{margin-top:0;margin-bottom:0}.mv1-ns{margin-top:.25rem;margin-bottom:.25rem}.mv2-ns{margin-top:.5rem;margin-bottom:.5rem}.mv3-ns{margin-top:1rem;margin-bottom:1rem}.mv4-ns{margin-top:2rem;margin-bottom:2rem}.mv5-ns{margin-top:4rem;margin-bottom:4rem}.mv6-ns{margin-top:8rem;margin-bottom:8rem}.mv7-ns{margin-top:16rem;margin-bottom:16rem}.mh0-ns{margin-left:0;margin-right:0}.mh1-ns{margin-left:.25rem;margin-right:.25rem}.mh2-ns{margin-left:.5rem;margin-right:.5rem}.mh3-ns{margin-left:1rem;margin-right:1rem}.mh4-ns{margin-left:2rem;margin-right:2rem}.mh5-ns{margin-left:4rem;margin-right:4rem}.mh6-ns{margin-left:8rem;margin-right:8rem}.mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width: 30em) and (max-width: 60em){.pa0-m{padding:0}.pa1-m{padding:.25rem}.pa2-m{padding:.5rem}.pa3-m{padding:1rem}.pa4-m{padding:2rem}.pa5-m{padding:4rem}.pa6-m{padding:8rem}.pa7-m{padding:16rem}.pl0-m{padding-left:0}.pl1-m{padding-left:.25rem}.pl2-m{padding-left:.5rem}.pl3-m{padding-left:1rem}.pl4-m{padding-left:2rem}.pl5-m{padding-left:4rem}.pl6-m{padding-left:8rem}.pl7-m{padding-left:16rem}.pr0-m{padding-right:0}.pr1-m{padding-right:.25rem}.pr2-m{padding-right:.5rem}.pr3-m{padding-right:1rem}.pr4-m{padding-right:2rem}.pr5-m{padding-right:4rem}.pr6-m{padding-right:8rem}.pr7-m{padding-right:16rem}.pb0-m{padding-bottom:0}.pb1-m{padding-bottom:.25rem}.pb2-m{padding-bottom:.5rem}.pb3-m{padding-bottom:1rem}.pb4-m{padding-bottom:2rem}.pb5-m{padding-bottom:4rem}.pb6-m{padding-bottom:8rem}.pb7-m{padding-bottom:16rem}.pt0-m{padding-top:0}.pt1-m{padding-top:.25rem}.pt2-m{padding-top:.5rem}.pt3-m{padding-top:1rem}.pt4-m{padding-top:2rem}.pt5-m{padding-top:4rem}.pt6-m{padding-top:8rem}.pt7-m{padding-top:16rem}.pv0-m{padding-top:0;padding-bottom:0}.pv1-m{padding-top:.25rem;padding-bottom:.25rem}.pv2-m{padding-top:.5rem;padding-bottom:.5rem}.pv3-m{padding-top:1rem;padding-bottom:1rem}.pv4-m{padding-top:2rem;padding-bottom:2rem}.pv5-m{padding-top:4rem;padding-bottom:4rem}.pv6-m{padding-top:8rem;padding-bottom:8rem}.pv7-m{padding-top:16rem;padding-bottom:16rem}.ph0-m{padding-left:0;padding-right:0}.ph1-m{padding-left:.25rem;padding-right:.25rem}.ph2-m{padding-left:.5rem;padding-right:.5rem}.ph3-m{padding-left:1rem;padding-right:1rem}.ph4-m{padding-left:2rem;padding-right:2rem}.ph5-m{padding-left:4rem;padding-right:4rem}.ph6-m{padding-left:8rem;padding-right:8rem}.ph7-m{padding-left:16rem;padding-right:16rem}.ma0-m{margin:0}.ma1-m{margin:.25rem}.ma2-m{margin:.5rem}.ma3-m{margin:1rem}.ma4-m{margin:2rem}.ma5-m{margin:4rem}.ma6-m{margin:8rem}.ma7-m{margin:16rem}.ml0-m{margin-left:0}.ml1-m{margin-left:.25rem}.ml2-m{margin-left:.5rem}.ml3-m{margin-left:1rem}.ml4-m{margin-left:2rem}.ml5-m{margin-left:4rem}.ml6-m{margin-left:8rem}.ml7-m{margin-left:16rem}.mr0-m{margin-right:0}.mr1-m{margin-right:.25rem}.mr2-m{margin-right:.5rem}.mr3-m{margin-right:1rem}.mr4-m{margin-right:2rem}.mr5-m{margin-right:4rem}.mr6-m{margin-right:8rem}.mr7-m{margin-right:16rem}.mb0-m{margin-bottom:0}.mb1-m{margin-bottom:.25rem}.mb2-m{margin-bottom:.5rem}.mb3-m{margin-bottom:1rem}.mb4-m{margin-bottom:2rem}.mb5-m{margin-bottom:4rem}.mb6-m{margin-bottom:8rem}.mb7-m{margin-bottom:16rem}.mt0-m{margin-top:0}.mt1-m{margin-top:.25rem}.mt2-m{margin-top:.5rem}.mt3-m{margin-top:1rem}.mt4-m{margin-top:2rem}.mt5-m{margin-top:4rem}.mt6-m{margin-top:8rem}.mt7-m{margin-top:16rem}.mv0-m{margin-top:0;margin-bottom:0}.mv1-m{margin-top:.25rem;margin-bottom:.25rem}.mv2-m{margin-top:.5rem;margin-bottom:.5rem}.mv3-m{margin-top:1rem;margin-bottom:1rem}.mv4-m{margin-top:2rem;margin-bottom:2rem}.mv5-m{margin-top:4rem;margin-bottom:4rem}.mv6-m{margin-top:8rem;margin-bottom:8rem}.mv7-m{margin-top:16rem;margin-bottom:16rem}.mh0-m{margin-left:0;margin-right:0}.mh1-m{margin-left:.25rem;margin-right:.25rem}.mh2-m{margin-left:.5rem;margin-right:.5rem}.mh3-m{margin-left:1rem;margin-right:1rem}.mh4-m{margin-left:2rem;margin-right:2rem}.mh5-m{margin-left:4rem;margin-right:4rem}.mh6-m{margin-left:8rem;margin-right:8rem}.mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width: 60em){.pa0-l{padding:0}.pa1-l{padding:.25rem}.pa2-l{padding:.5rem}.pa3-l{padding:1rem}.pa4-l{padding:2rem}.pa5-l{padding:4rem}.pa6-l{padding:8rem}.pa7-l{padding:16rem}.pl0-l{padding-left:0}.pl1-l{padding-left:.25rem}.pl2-l{padding-left:.5rem}.pl3-l{padding-left:1rem}.pl4-l{padding-left:2rem}.pl5-l{padding-left:4rem}.pl6-l{padding-left:8rem}.pl7-l{padding-left:16rem}.pr0-l{padding-right:0}.pr1-l{padding-right:.25rem}.pr2-l{padding-right:.5rem}.pr3-l{padding-right:1rem}.pr4-l{padding-right:2rem}.pr5-l{padding-right:4rem}.pr6-l{padding-right:8rem}.pr7-l{padding-right:16rem}.pb0-l{padding-bottom:0}.pb1-l{padding-bottom:.25rem}.pb2-l{padding-bottom:.5rem}.pb3-l{padding-bottom:1rem}.pb4-l{padding-bottom:2rem}.pb5-l{padding-bottom:4rem}.pb6-l{padding-bottom:8rem}.pb7-l{padding-bottom:16rem}.pt0-l{padding-top:0}.pt1-l{padding-top:.25rem}.pt2-l{padding-top:.5rem}.pt3-l{padding-top:1rem}.pt4-l{padding-top:2rem}.pt5-l{padding-top:4rem}.pt6-l{padding-top:8rem}.pt7-l{padding-top:16rem}.pv0-l{padding-top:0;padding-bottom:0}.pv1-l{padding-top:.25rem;padding-bottom:.25rem}.pv2-l{padding-top:.5rem;padding-bottom:.5rem}.pv3-l{padding-top:1rem;padding-bottom:1rem}.pv4-l{padding-top:2rem;padding-bottom:2rem}.pv5-l{padding-top:4rem;padding-bottom:4rem}.pv6-l{padding-top:8rem;padding-bottom:8rem}.pv7-l{padding-top:16rem;padding-bottom:16rem}.ph0-l{padding-left:0;padding-right:0}.ph1-l{padding-left:.25rem;padding-right:.25rem}.ph2-l{padding-left:.5rem;padding-right:.5rem}.ph3-l,header .menu-bar .items a{padding-left:1rem;padding-right:1rem}.ph4-l{padding-left:2rem;padding-right:2rem}.ph5-l{padding-left:4rem;padding-right:4rem}.ph6-l{padding-left:8rem;padding-right:8rem}.ph7-l{padding-left:16rem;padding-right:16rem}.ma0-l{margin:0}.ma1-l{margin:.25rem}.ma2-l{margin:.5rem}.ma3-l{margin:1rem}.ma4-l{margin:2rem}.ma5-l{margin:4rem}.ma6-l{margin:8rem}.ma7-l{margin:16rem}.ml0-l{margin-left:0}.ml1-l{margin-left:.25rem}.ml2-l{margin-left:.5rem}.ml3-l,header .menu-bar .items a:first-child{margin-left:1rem}.ml4-l{margin-left:2rem}.ml5-l{margin-left:4rem}.ml6-l{margin-left:8rem}.ml7-l{margin-left:16rem}.mr0-l{margin-right:0}.mr1-l{margin-right:.25rem}.mr2-l{margin-right:.5rem}.mr3-l{margin-right:1rem}.mr4-l{margin-right:2rem}.mr5-l{margin-right:4rem}.mr6-l{margin-right:8rem}.mr7-l{margin-right:16rem}.mb0-l{margin-bottom:0}.mb1-l{margin-bottom:.25rem}.mb2-l{margin-bottom:.5rem}.mb3-l{margin-bottom:1rem}.mb4-l{margin-bottom:2rem}.mb5-l{margin-bottom:4rem}.mb6-l{margin-bottom:8rem}.mb7-l{margin-bottom:16rem}.mt0-l{margin-top:0}.mt1-l{margin-top:.25rem}.mt2-l{margin-top:.5rem}.mt3-l{margin-top:1rem}.mt4-l{margin-top:2rem}.mt5-l{margin-top:4rem}.mt6-l{margin-top:8rem}.mt7-l{margin-top:16rem}.mv0-l{margin-top:0;margin-bottom:0}.mv1-l{margin-top:.25rem;margin-bottom:.25rem}.mv2-l{margin-top:.5rem;margin-bottom:.5rem}.mv3-l{margin-top:1rem;margin-bottom:1rem}.mv4-l{margin-top:2rem;margin-bottom:2rem}.mv5-l{margin-top:4rem;margin-bottom:4rem}.mv6-l{margin-top:8rem;margin-bottom:8rem}.mv7-l{margin-top:16rem;margin-bottom:16rem}.mh0-l{margin-left:0;margin-right:0}.mh1-l{margin-left:.25rem;margin-right:.25rem}.mh2-l{margin-left:.5rem;margin-right:.5rem}.mh3-l{margin-left:1rem;margin-right:1rem}.mh4-l{margin-left:2rem;margin-right:2rem}.mh5-l{margin-left:4rem;margin-right:4rem}.mh6-l{margin-left:8rem;margin-right:8rem}.mh7-l{margin-left:16rem;margin-right:16rem}}.na1{margin:-.25rem}.na2{margin:-.5rem}.na3{margin:-1rem}.na4{margin:-2rem}.na5{margin:-4rem}.na6{margin:-8rem}.na7{margin:-16rem}.nl1{margin-left:-.25rem}.nl2{margin-left:-.5rem}.nl3{margin-left:-1rem}.nl4{margin-left:-2rem}.nl5{margin-left:-4rem}.nl6{margin-left:-8rem}.nl7{margin-left:-16rem}.nr1{margin-right:-.25rem}.nr2{margin-right:-.5rem}.nr3{margin-right:-1rem}.nr4{margin-right:-2rem}.nr5{margin-right:-4rem}.nr6{margin-right:-8rem}.nr7{margin-right:-16rem}.nb1{margin-bottom:-.25rem}.nb2{margin-bottom:-.5rem}.nb3{margin-bottom:-1rem}.nb4{margin-bottom:-2rem}.nb5{margin-bottom:-4rem}.nb6{margin-bottom:-8rem}.nb7{margin-bottom:-16rem}.nt1{margin-top:-.25rem}.nt2{margin-top:-.5rem}.nt3{margin-top:-1rem}.nt4{margin-top:-2rem}.nt5{margin-top:-4rem}.nt6{margin-top:-8rem}.nt7{margin-top:-16rem}@media screen and (min-width: 30em){.na1-ns{margin:-.25rem}.na2-ns{margin:-.5rem}.na3-ns{margin:-1rem}.na4-ns{margin:-2rem}.na5-ns{margin:-4rem}.na6-ns{margin:-8rem}.na7-ns{margin:-16rem}.nl1-ns{margin-left:-.25rem}.nl2-ns{margin-left:-.5rem}.nl3-ns{margin-left:-1rem}.nl4-ns{margin-left:-2rem}.nl5-ns{margin-left:-4rem}.nl6-ns{margin-left:-8rem}.nl7-ns{margin-left:-16rem}.nr1-ns{margin-right:-.25rem}.nr2-ns{margin-right:-.5rem}.nr3-ns{margin-right:-1rem}.nr4-ns{margin-right:-2rem}.nr5-ns{margin-right:-4rem}.nr6-ns{margin-right:-8rem}.nr7-ns{margin-right:-16rem}.nb1-ns{margin-bottom:-.25rem}.nb2-ns{margin-bottom:-.5rem}.nb3-ns{margin-bottom:-1rem}.nb4-ns{margin-bottom:-2rem}.nb5-ns{margin-bottom:-4rem}.nb6-ns{margin-bottom:-8rem}.nb7-ns{margin-bottom:-16rem}.nt1-ns{margin-top:-.25rem}.nt2-ns{margin-top:-.5rem}.nt3-ns{margin-top:-1rem}.nt4-ns{margin-top:-2rem}.nt5-ns{margin-top:-4rem}.nt6-ns{margin-top:-8rem}.nt7-ns{margin-top:-16rem}}@media screen and (min-width: 30em) and (max-width: 60em){.na1-m{margin:-.25rem}.na2-m{margin:-.5rem}.na3-m{margin:-1rem}.na4-m{margin:-2rem}.na5-m{margin:-4rem}.na6-m{margin:-8rem}.na7-m{margin:-16rem}.nl1-m{margin-left:-.25rem}.nl2-m{margin-left:-.5rem}.nl3-m{margin-left:-1rem}.nl4-m{margin-left:-2rem}.nl5-m{margin-left:-4rem}.nl6-m{margin-left:-8rem}.nl7-m{margin-left:-16rem}.nr1-m{margin-right:-.25rem}.nr2-m{margin-right:-.5rem}.nr3-m{margin-right:-1rem}.nr4-m{margin-right:-2rem}.nr5-m{margin-right:-4rem}.nr6-m{margin-right:-8rem}.nr7-m{margin-right:-16rem}.nb1-m{margin-bottom:-.25rem}.nb2-m{margin-bottom:-.5rem}.nb3-m{margin-bottom:-1rem}.nb4-m{margin-bottom:-2rem}.nb5-m{margin-bottom:-4rem}.nb6-m{margin-bottom:-8rem}.nb7-m{margin-bottom:-16rem}.nt1-m{margin-top:-.25rem}.nt2-m{margin-top:-.5rem}.nt3-m{margin-top:-1rem}.nt4-m{margin-top:-2rem}.nt5-m{margin-top:-4rem}.nt6-m{margin-top:-8rem}.nt7-m{margin-top:-16rem}}@media screen and (min-width: 60em){.na1-l{margin:-.25rem}.na2-l{margin:-.5rem}.na3-l{margin:-1rem}.na4-l{margin:-2rem}.na5-l{margin:-4rem}.na6-l{margin:-8rem}.na7-l{margin:-16rem}.nl1-l{margin-left:-.25rem}.nl2-l{margin-left:-.5rem}.nl3-l{margin-left:-1rem}.nl4-l{margin-left:-2rem}.nl5-l{margin-left:-4rem}.nl6-l{margin-left:-8rem}.nl7-l{margin-left:-16rem}.nr1-l{margin-right:-.25rem}.nr2-l{margin-right:-.5rem}.nr3-l{margin-right:-1rem}.nr4-l{margin-right:-2rem}.nr5-l{margin-right:-4rem}.nr6-l{margin-right:-8rem}.nr7-l{margin-right:-16rem}.nb1-l{margin-bottom:-.25rem}.nb2-l{margin-bottom:-.5rem}.nb3-l{margin-bottom:-1rem}.nb4-l{margin-bottom:-2rem}.nb5-l{margin-bottom:-4rem}.nb6-l{margin-bottom:-8rem}.nb7-l{margin-bottom:-16rem}.nt1-l{margin-top:-.25rem}.nt2-l{margin-top:-.5rem}.nt3-l{margin-top:-1rem}.nt4-l{margin-top:-2rem}.nt5-l{margin-top:-4rem}.nt6-l{margin-top:-8rem}.nt7-l{margin-top:-16rem}}.collapse{border-collapse:collapse;border-spacing:0}.striped--light-silver:nth-child(odd){background-color:#aaa}.striped--moon-gray:nth-child(odd){background-color:#ccc}.striped--light-gray:nth-child(odd){background-color:#eee}.striped--near-white:nth-child(odd){background-color:#f4f4f4}.stripe-light:nth-child(odd){background-color:rgba(255,255,255,0.1)}.stripe-dark:nth-child(odd){background-color:rgba(0,0,0,0.1)}.strike{text-decoration:line-through}.underline{text-decoration:underline}.no-underline{text-decoration:none}@media screen and (min-width: 30em){.strike-ns{text-decoration:line-through}.underline-ns{text-decoration:underline}.no-underline-ns{text-decoration:none}}@media screen and (min-width: 30em) and (max-width: 60em){.strike-m{text-decoration:line-through}.underline-m{text-decoration:underline}.no-underline-m{text-decoration:none}}@media screen and (min-width: 60em){.strike-l{text-decoration:line-through}.underline-l{text-decoration:underline}.no-underline-l{text-decoration:none}}.tl{text-align:left}.tr{text-align:right}.tc{text-align:center}.tj{text-align:justify}@media screen and (min-width: 30em){.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}.tj-ns{text-align:justify}}@media screen and (min-width: 30em) and (max-width: 60em){.tl-m{text-align:left}.tr-m{text-align:right}.tc-m{text-align:center}.tj-m{text-align:justify}}@media screen and (min-width: 60em){.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}.tj-l{text-align:justify}}.ttc{text-transform:capitalize}.ttl{text-transform:lowercase}.ttu{text-transform:uppercase}.ttn{text-transform:none}@media screen and (min-width: 30em){.ttc-ns{text-transform:capitalize}.ttl-ns{text-transform:lowercase}.ttu-ns{text-transform:uppercase}.ttn-ns{text-transform:none}}@media screen and (min-width: 30em) and (max-width: 60em){.ttc-m{text-transform:capitalize}.ttl-m{text-transform:lowercase}.ttu-m{text-transform:uppercase}.ttn-m{text-transform:none}}@media screen and (min-width: 60em){.ttc-l{text-transform:capitalize}.ttl-l{text-transform:lowercase}.ttu-l{text-transform:uppercase}.ttn-l{text-transform:none}}.f-6,.f-headline{font-size:6rem}.f-5,.f-subheadline{font-size:5rem}.f1{font-size:3rem}.f2{font-size:2.25rem}.f3{font-size:1.5rem}.f4{font-size:1.25rem}.f5{font-size:1rem}.f6{font-size:.875rem}.f7{font-size:.75rem}@media screen and (min-width: 30em){.f-6-ns,.f-headline-ns{font-size:6rem}.f-5-ns,.f-subheadline-ns{font-size:5rem}.f1-ns{font-size:3rem}.f2-ns{font-size:2.25rem}.f3-ns{font-size:1.5rem}.f4-ns{font-size:1.25rem}.f5-ns{font-size:1rem}.f6-ns{font-size:.875rem}.f7-ns{font-size:.75rem}}@media screen and (min-width: 30em) and (max-width: 60em){.f-6-m,.f-headline-m{font-size:6rem}.f-5-m,.f-subheadline-m{font-size:5rem}.f1-m{font-size:3rem}.f2-m{font-size:2.25rem}.f3-m{font-size:1.5rem}.f4-m{font-size:1.25rem}.f5-m{font-size:1rem}.f6-m{font-size:.875rem}.f7-m{font-size:.75rem}}@media screen and (min-width: 60em){.f-6-l,.f-headline-l{font-size:6rem}.f-5-l,.f-subheadline-l{font-size:5rem}.f1-l{font-size:3rem}.f2-l{font-size:2.25rem}.f3-l{font-size:1.5rem}.f4-l{font-size:1.25rem}.f5-l{font-size:1rem}.f6-l{font-size:.875rem}.f7-l{font-size:.75rem}}.measure{max-width:30em}.measure-wide{max-width:34em}.measure-narrow{max-width:20em}.indent{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps{font-variant:small-caps}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media screen and (min-width: 30em){.measure-ns{max-width:30em}.measure-wide-ns{max-width:34em}.measure-narrow-ns{max-width:20em}.indent-ns{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-ns{font-variant:small-caps}.truncate-ns{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@media screen and (min-width: 30em) and (max-width: 60em){.measure-m{max-width:30em}.measure-wide-m{max-width:34em}.measure-narrow-m{max-width:20em}.indent-m{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-m{font-variant:small-caps}.truncate-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@media screen and (min-width: 60em){.measure-l{max-width:30em}.measure-wide-l{max-width:34em}.measure-narrow-l{max-width:20em}.indent-l{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-l{font-variant:small-caps}.truncate-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.overflow-container{overflow-y:scroll}.center{margin-right:auto;margin-left:auto}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}@media screen and (min-width: 30em){.center-ns{margin-right:auto;margin-left:auto}.mr-auto-ns{margin-right:auto}.ml-auto-ns{margin-left:auto}}@media screen and (min-width: 30em) and (max-width: 60em){.center-m{margin-right:auto;margin-left:auto}.mr-auto-m{margin-right:auto}.ml-auto-m{margin-left:auto}}@media screen and (min-width: 60em){.center-l{margin-right:auto;margin-left:auto}.mr-auto-l{margin-right:auto}.ml-auto-l{margin-left:auto}}.clip{position:fixed !important;_position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}@media screen and (min-width: 30em){.clip-ns{position:fixed !important;_position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}}@media screen and (min-width: 30em) and (max-width: 60em){.clip-m{position:fixed !important;_position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}}@media screen and (min-width: 60em){.clip-l{position:fixed !important;_position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}}.ws-normal{white-space:normal}.nowrap{white-space:nowrap}.pre{white-space:pre}@media screen and (min-width: 30em){.ws-normal-ns{white-space:normal}.nowrap-ns{white-space:nowrap}.pre-ns{white-space:pre}}@media screen and (min-width: 30em) and (max-width: 60em){.ws-normal-m{white-space:normal}.nowrap-m{white-space:nowrap}.pre-m{white-space:pre}}@media screen and (min-width: 60em){.ws-normal-l{white-space:normal}.nowrap-l{white-space:nowrap}.pre-l{white-space:pre}}.v-base{vertical-align:baseline}.v-mid{vertical-align:middle}.v-top{vertical-align:top}.v-btm{vertical-align:bottom}@media screen and (min-width: 30em){.v-base-ns{vertical-align:baseline}.v-mid-ns{vertical-align:middle}.v-top-ns{vertical-align:top}.v-btm-ns{vertical-align:bottom}}@media screen and (min-width: 30em) and (max-width: 60em){.v-base-m{vertical-align:baseline}.v-mid-m{vertical-align:middle}.v-top-m{vertical-align:top}.v-btm-m{vertical-align:bottom}}@media screen and (min-width: 60em){.v-base-l{vertical-align:baseline}.v-mid-l{vertical-align:middle}.v-top-l{vertical-align:top}.v-btm-l{vertical-align:bottom}}.dim{opacity:1;transition:opacity .15s ease-in}.dim:hover,.dim:focus{opacity:.5;transition:opacity .15s ease-in}.dim:active{opacity:.8;transition:opacity .15s ease-out}.glow{transition:opacity .15s ease-in}.glow:hover,.glow:focus{opacity:1;transition:opacity .15s ease-in}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:hover .child,.hide-child:focus .child,.hide-child:active .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:hover,.underline-hover:focus{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform 0.25s ease-out}.grow:hover,.grow:focus{transform:scale(1.05)}.grow:active{transform:scale(0.9)}.grow-large{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-in-out}.grow-large:hover,.grow-large:focus{transform:scale(1.2)}.grow-large:active{transform:scale(0.95)}.pointer:hover{cursor:pointer}.shadow-hover{cursor:pointer;position:relative;transition:all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)}.shadow-hover::after{content:'';box-shadow:0px 0px 16px 2px rgba(0,0,0,0.2);border-radius:inherit;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;transition:opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)}.shadow-hover:hover::after,.shadow-hover:focus::after{opacity:1}.bg-animate,.bg-animate:hover,.bg-animate:focus{transition:background-color .15s ease-in-out}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-4{z-index:4}.z-5{z-index:5}.z-999{z-index:999}.z-9999{z-index:9999}.z-max{z-index:2147483647}.z-inherit{z-index:inherit}.z-initial{z-index:initial}.z-unset{z-index:unset}.nested-copy-line-height p,.nested-copy-line-height ul,.nested-copy-line-height ol{line-height:1.5}.nested-headline-line-height h1,.nested-headline-line-height h2,.nested-headline-line-height h3,.nested-headline-line-height h4,.nested-headline-line-height h5,.nested-headline-line-height h6{line-height:1.25}.nested-list-reset ul,.nested-list-reset ol{padding-left:0;margin-left:0;list-style-type:none}.nested-copy-indent p+p{text-indent:.1em;margin-top:0;margin-bottom:0}.nested-copy-seperator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{color:#357edd;transition:color .15s ease-in}.nested-links a:hover,.nested-links a:focus{color:#96ccff;transition:color .15s ease-in}.codeblock .hll{background-color:#ffffcc}.codeblock .c{color:#60a0b0;font-style:italic}.codeblock .err{color:#FF0000}.codeblock .k{color:#007020;font-weight:bold}.codeblock .o{color:#666666}.codeblock .cm{color:#60a0b0;font-style:italic}.codeblock .cp{color:#007020}.codeblock .c1{color:#60a0b0;font-style:italic}.codeblock .cs{color:#60a0b0;background-color:#fff0f0}.codeblock .gd{color:#A00000}.codeblock .ge{font-style:italic}.codeblock .gr{color:#FF0000}.codeblock .gh{color:#000080;font-weight:bold}.codeblock .gi{color:#00A000}.codeblock .go{color:#808080}.codeblock .gp{color:#c65d09;font-weight:bold}.codeblock .gs{font-weight:bold}.codeblock .gu{color:#800080;font-weight:bold}.codeblock .gt{color:#0040D0}.codeblock .kc{color:#007020;font-weight:bold}.codeblock .kd{color:#007020;font-weight:bold}.codeblock .kn{color:#007020;font-weight:bold}.codeblock .kp{color:#007020}.codeblock .kr{color:#007020;font-weight:bold}.codeblock .kt{color:#902000}.codeblock .m{color:#40a070}.codeblock .s{color:#4070a0}.codeblock .na{color:#4070a0}.codeblock .nb{color:#007020}.codeblock .nc{color:#0e84b5;font-weight:bold}.codeblock .no{color:#60add5}.codeblock .nd{color:#555555;font-weight:bold}.codeblock .ni{color:#d55537;font-weight:bold}.codeblock .ne{color:#007020}.codeblock .nf{color:#06287e}.codeblock .nl{color:#002070;font-weight:bold}.codeblock .nn{color:#0e84b5;font-weight:bold}.codeblock .nt{color:#062873;font-weight:bold}.codeblock .nv{color:#bb60d5}.codeblock .ow{color:#007020;font-weight:bold}.codeblock .w{color:#bbbbbb}.codeblock .mf{color:#40a070}.codeblock .mh{color:#40a070}.codeblock .mi{color:#40a070}.codeblock .mo{color:#40a070}.codeblock .sb{color:#4070a0}.codeblock .sc{color:#4070a0}.codeblock .sd{color:#4070a0;font-style:italic}.codeblock .s2{color:#4070a0}.codeblock .se{color:#4070a0;font-weight:bold}.codeblock .sh{color:#4070a0}.codeblock .si{color:#70a0d0;font-style:italic}.codeblock .sx{color:#c65d09}.codeblock .sr{color:#235388}.codeblock .s1{color:#4070a0}.codeblock .ss{color:#517918}.codeblock .bp{color:#007020}.codeblock .vc{color:#bb60d5}.codeblock .vg{color:#bb60d5}.codeblock .vi{color:#bb60d5}.codeblock .il{color:#40a070}.dark{background-color:#222;color:#bbb}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}*{box-sizing:border-box}br{border-style:none}body{background-color:#fff;background-color:var(--main-background-color);color:#000;color:var(--main-color);font-family:"Fira Sans", sans-serif;background-size:cover;min-height:100vh;box-sizing:border-box;font-size:.875rem;line-height:1.5em;font-weight:400}a{color:#666;color:var(--link-color);border-bottom-color:#666;border-bottom-color:var(--link-border-color);border-bottom:none;text-decoration:none}a.external::after{font-family:"icons";content:" 1";vertical-align:middle}ol{list-style-type:decimal}ul{list-style-type:circle;padding:0px;margin:0px}.list-none{list-style-type:none}li{padding:0px;margin:0px;padding-left:5px;margin-left:15px}h1,h2{font-weight:500}h1,h2,h3,h4{margin:0px;margin-bottom:5px;font-size:1.5rem;line-height:1.25em}strong{font-weight:600}em{font-style:italic}p{box-sizing:border-box;margin:0px;padding:0px}.p-spaced p:not(:first-child){margin-top:.6em}.p-spaced p:not(:last-child){margin-bottom:.6em}table{border-collapse:collapse;table-layout:fixed}th,td{color:#000;color:var(--fg-font-color)}td{vertical-align:baseline}tr.line-above th,tr.line-above td{border-top-color:#444;border-top-color:var(--table-border-color);border-top-width:1px;border-top-style:solid;padding-top:20px}hr{border-top-color:#444;border-top-color:var(--hr-color);border-width:1px 0 0;border-top-style:solid;max-width:300px}article code{font-family:"Fira Mono", monospace}.big{font-size:120%}.title{font-weight:bold}.clear{width:0}.full{width:100%}.hidden{display:none}.empty{padding-left:20px}.column h2{text-align:center;margin-bottom:20px}.margin-center{margin-left:auto;margin-right:auto}.flex-shrink-0{flex-shrink:0}.flex-grow-1{flex-grow:1}.b--theme{border-color:#666;border-color:var(--theme-color)}.c--dim{color:#333;color:var(--dim-color)}.c--theme-dim{color:#aaa;color:var(--theme-color-dim)}.b--dim{border-color:#333;border-color:var(--dim-color)}.b--theme-dim{border-color:#aaa;border-color:var(--theme-color-dim)}.c--dimmer,footer .list li:not(:last-child)::after{color:#999;color:var(--dimmer-color)}.c--theme-dimmer{color:#bbb;color:var(--theme-color-dimmer)}.b--dimmer,.contents div.code{border-color:#999;border-color:var(--dimmer-color)}.b--theme-dimmer{border-color:#bbb;border-color:var(--theme-color-dimmer)}.c--dimmest{color:#bbb;color:var(--dimmest-color)}.c--theme-dimmest{color:#ccc;color:var(--theme-color-dimmest)}.b--dimmest,header #login-popup,.optionbar,.post .contents blockquote{border-color:#bbb;border-color:var(--dimmest-color)}.b--theme-dimmest{border-color:#ccc;border-color:var(--theme-color-dimmest)}.bg--dim{background-color:#f0f0f0;background-color:var(--dim-background)}.bg--content{background-color:#f8f8f8;background-color:var(--content-background)}.f8{font-size:0.65rem}.mw-site{max-width:80rem}.mh-100{max-height:100%}.mh-50vh{max-height:50vh}.mh-60vh{max-height:60vh}.mh-70vh{max-height:70vh}.mh-80vh{max-height:80vh}.fira{font-family:"Fira Sans", sans-serif}.bi-avoid{break-inside:avoid}.cc-auto{column-count:auto}.cc1{column-count:1}.cc2{column-count:2}.cc3{column-count:3}.cg0{column-gap:0}.cg1{column-gap:.25rem}.cg2{column-gap:.5rem}.cg3{column-gap:1rem}.cg4{column-gap:2rem}.cg5{column-gap:4rem}@media screen and (min-width: 30em){.bi-avoid-ns{break-inside:avoid}.cc-auto-ns{column-count:auto}.cc1-ns{column-count:1}.cc2-ns{column-count:2}.cc3-ns{column-count:3}.cg0-ns{column-gap:0}.cg1-ns{column-gap:.25rem}.cg2-ns{column-gap:.5rem}.cg3-ns{column-gap:1rem}.cg4-ns{column-gap:2rem}.cg5-ns{column-gap:4rem}.bg--dim-ns{background-color:#f0f0f0;background-color:var(--dim-background)}}@media screen and (min-width: 30em) and (max-width: 60em){.bi-avoid-m{break-inside:avoid}.cc-auto-m{column-count:auto}.cc1-m{column-count:1}.cc2-m{column-count:2}.cc3-m{column-count:3}.cg1-m{column-gap:.25rem}.cg2-m{column-gap:.5rem}.cg3-m{column-gap:1rem}.cg4-m{column-gap:2rem}.cg5-m{column-gap:4rem}.bg--dim-m{background-color:#f0f0f0;background-color:var(--dim-background)}}@media screen and (min-width: 60em){.bi-avoid-l{break-inside:avoid}.cc-auto-l{column-count:auto}.cc1-l{column-count:1}.cc2-l{column-count:2}.cc3-l{column-count:3}.cg1-l{column-gap:.25rem}.cg2-l{column-gap:.5rem}.cg3-l{column-gap:1rem}.cg4-l{column-gap:2rem}.cg5-l{column-gap:4rem}.bg--dim-l{background-color:#f0f0f0;background-color:var(--dim-background)}}.not-first:first-child{display:none}.not-first-of-type:first-of-type{display:none}.not-last:last-child{display:none}.not-last-of-type:last-of-type{display:none}.svgicon svg{fill:currentColor;width:1em;height:1em}.svgicon:not(.svgicon-nofix) svg{transform:translate(0px, 0.1em)}.center-layout{margin-right:auto;margin-left:auto}header{border-bottom:2px solid #333}header .menu-bar{width:100%;z-index:10}header .menu-bar .items a{font-weight:bold}header .menu-bar .items a.patreon{float:right;height:30px;padding-top:18px;display:inline-block}header .menu-bar .items a h1{display:inline}header .menu-bar .hmdev-logo{width:100%}@media screen and (min-width: 30em){header .menu-bar .hmdev-logo{width:11.25rem}}header .menu-bar .hmdev-logo.project{width:70px}@keyframes logo-blink{from{opacity:0.0}to{opacity:1.0}}@-webkit-keyframes logo-blink{from{opacity:0.0}to{opacity:1.0}}header .menu-bar .logo{height:3.75rem;background-color:#333;margin:0px;padding:0px}header .menu-bar .underscore{width:100%;height:100%;animation:logo-blink 1s infinite alternate;-webkit-animation:logo-blink 1s infinite alternate ease-in-out}header .menu-bar .logo,header .menu-bar .underscore{background-size:8.75rem;background-repeat:no-repeat;background-position:center center}header .user-options{position:relative}header .login,header .register{text-align:center}header #login-popup{background-color:#fbfbfb;background-color:var(--login-popup-background);color:#000;color:var(--fg-font-color);border-width:1px;border-style:dashed;visibility:hidden;position:absolute;z-index:12;margin-top:10px;right:0px;top:20px;width:290px;max-height:0px;overflow:hidden;opacity:0;transition:all 0.2s}header #login-popup.open{max-height:170px;opacity:1;visibility:visible}header #login-popup label{padding-right:10px}@media screen and (min-width: 30em){footer .list li:not(:last-child)::after{content:' / '}}.content{background-color:#f8f8f8;background-color:var(--content-background);text-align:center;margin:auto}.content p{-moz-text-size-adjust:auto;-webkit-text-size-adjust:auto;text-size-adjust:auto}.content .description{line-height:1.42em;text-align:left;margin:auto}.content .description p{margin-bottom:.5rem;text-align:left}.content>.top-bar{text-align:left}.content-block{background-repeat:repeat-x;border-radius:2px;text-align:left;width:100%;position:relative;box-sizing:border-box}.content-block.top-bar{background-image:none}.content-block.language-desc{padding:10px}.content-block.language-desc h3{margin-left:10px}.content-block .no-bg{background-image:none;background-color:transparent;box-shadow:none}.sidebar .content-block.single{padding:0px;margin-top:20px}.sidebar .content-block.top-bar{width:80%;display:block;margin:10px auto}.sidebar br.sidebar-filler{line-height:20px}.sidebar .projectlist{background-color:transparent}.content-block .bottom-padding,.sidebar .bottom-padding{margin-top:1rem}.breadcrumb:hover{text-decoration:underline}.breadcrumb.current{text-overflow:clip ellipsis}.breadcrumb-before:nth-of-type(n+2)::before{content:'≫'}.optionbar{width:100%;display:flex;flex-direction:column;justify-content:space-between;text-align:center;border-style:dashed;border-width:0px;border-bottom-width:1px}@media screen and (min-width: 30em){.optionbar{flex-direction:row;text-align:left}}.optionbar.bottom{border-bottom-width:0px;border-top-width:1px}.optionbar.center{text-align:center}.optionbar .options{display:flex;flex-direction:column}@media screen and (min-width: 30em){.optionbar .options{flex-direction:row}}.optionbar button,.optionbar .button,.optionbar input[type=button],.optionbar input[type=submit]{border:none;background:none;font-weight:normal}.optionbar .group{display:inline-block;height:100%;margin:auto}.tab{background-color:#fff;background-color:var(--tab-background)}.tab-bar{border-color:#d8d8d8;border-color:var(--tab-border-color);width:100%;border-bottom-width:1px;border-bottom-style:solid;box-sizing:border-box}.tab-bar .tab-button{background-color:#dfdfdf;background-color:var(--tab-button-background);border-color:#d8d8d8;border-color:var(--tab-border-color);height:100%;display:inline-block;padding:10px 15px;line-height:100%;cursor:pointer;border-width:1px;border-style:solid;box-sizing:border-box}.tab-bar .tab-button:hover{background-color:#efefef;background-color:var(--tab-button-background-hover)}.tab-bar .tab-button.current{background-color:#fff;background-color:var(--tab-button-background-current);border-bottom-color:transparent;font-weight:bold;height:105%}.pagination .page.current{cursor:default;font-weight:600}.pagination .page.current:hover{text-decoration:none}.user-link{position:relative}.user-popup{opacity:0;max-height:0px;width:340px;text-align:center;transition:max-height 0.2s, opacity 0.1s;box-shadow:0px 2px 5px rgba(0,0,0,0.3);overflow:hidden;position:absolute;bottom:0px}.user-popup.expanded{visibility:visible;max-height:250px;opacity:1}.user-popup table{width:100%;position:relative;border-radius:3px;z-index:10}.user-popup td{vertical-align:top;padding:15px 9px}.user-popup #avatar{width:100px;height:100px;background-size:contain;background-position:center center;background-repeat:no-repeat;border-radius:3px;margin:0px auto}.user-popup .username{font-weight:bold}.user-popup .bottom{border-top:1px solid transparent;padding:15px}.user-popup .bottom .bio{vertical-align:top;width:90%}.site-search{width:100%}.site-search:focus{width:200%}.site-search[type=text].lite{transition:border-bottom-color 60ms ease-in-out, width 300ms ease}#search_button_homepage{margin:0px;height:100%;height:calc(100% - 2px);border-radius:0px;display:inline-block;display:none}.background-even:nth-of-type(even){background-color:#f8f8f8;background-color:var(--background-even-background)}.userlist{text-align:center;width:100%;margin:0px auto;padding-top:30px;position:relative;line-height:0em}.userlist .user{margin:5px;display:inline-block;height:200px;max-height:180px;text-align:left;position:relative;width:296px;border-radius:3px;line-height:1.4em;overflow:hidden;box-shadow:0px 2px 5px rgba(0,0,0,0.2);top:0px;transition:box-shadow 0.2s, background-color 0.2s}.userlist .user:hover{box-shadow:0px 3px 7px rgba(0,0,0,0.2)}.userlist .user table{border:1px solid transparent;width:100%;height:100%}.userlist .user .bottom{transition:background-color 0.2s}.userlist .user td{vertical-align:top}.userlist .user td.avatar{width:100px;height:80px}.userlist .user .name{text-align:left}.userlist .user .name .username{vertical-align:middle}.userlist .user .avatar .image{display:block;float:left;width:80px;height:80px;background-size:cover;margin-right:10px}.userlist .user .bio{padding:5px}.text{background-color:#f9f9f9;background-color:var(--text-background)}.underline{text-decoration:underline}.monospace{font-family:"Fira Mono", monospace;background-color:rgba(0,0,0,0.1);padding:0.2em 0 0.05em;border-radius:3px}.monospace::before,.monospace::after{content:"\00a0";letter-spacing:-0.2em}.center{text-align:center}.right{text-align:right}.left{text-align:left}.justify{text-align:justify;-webkit-hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual;hyphens:manual}.spoiler{border-color:#aaa;border-color:var(--spoiler-border);border-width:1px;border-style:dashed;color:transparent}.spoiler::selection{color:white;background-color:black}pre{font-family:monospace}.post-edit{width:90%;margin:auto}.toolbar{background-color:#fff;background-color:var(--editor-toolbar-background);border-color:rgba(0,0,0,0);border-color:var(--editor-toolbar-border-color);border-radius:3px;height:2.2em;overflow-y:scroll;transition:all 0.3s;border:1px solid transparent}.toolbar .button,.toolbar input[type=button]{background-color:rgba(0,0,0,0);background-color:var(--editor-toolbar-button-background);border-color:#ccc;border-color:var(--editor-toolbar-button-border-color);line-height:2.2em;box-shadow:none;border:0px;border-right:1px solid transparent;border-radius:0px;margin:0px;padding:0px 10px;height:100%;vertical-align:bottom;text-transform:none;font-weight:300}.toolbar .button:hover,.toolbar input[type=button]:hover{background-color:#ddd;background-color:var(--editor-toolbar-button-background-hover)}.toolbar input[type="text"]{height:2.2em;border:0px solid transparent}.actionbar{text-align:center}.editor .body{width:100%;font-size:13pt;height:25em}.editor .title-edit{width:100%}.editor .title-edit label{font-weight:bold}.editor .title-edit input{width:100%}.editor .editreason label{font-weight:bold}.editor .editreason input{width:100%}.editor .toolbar{width:95%;margin:10px auto}.editor .toolbar select{font-size:10pt;border:0px}.editor .toolbar select:hover{border:0px}.editor .toolbar select:focus{border:0px}.editor .toolbar #bold{font-weight:bold}.editor .toolbar #italic{font-style:italic}.editor .toolbar #underline{text-decoration:underline}.editor .toolbar #monospace{font-family:monospace}.editor .toolbar #url{text-decoration:underline;font-style:italic}.editor .actionbar input[type=button]{margin-left:10px;margin-right:10px}.edit-form .error{margin-left:5em;padding:10px;color:red}.edit-form input[type=text]{min-width:20em}.edit-form textarea{font-size:13pt}.edit-form .note{margin-bottom:5px;font-style:italic;font-size:90%}.edit-form .links{width:80%;min-height:200px;height:15vh}.edit-form .half{padding:10px;text-align:center}.edit-form table{width:95%;margin:auto;border-collapse:separate;border-spacing:0px 10px}.edit-form table td{padding-bottom:15px;width:90%}.edit-form table td.half{width:50%}.edit-form table td table{width:100%}.edit-form th{text-align:right;font-weight:bold;padding-right:10px;padding-bottom:15px;vertical-align:top;max-width:5em}.edit-form td table th{text-align:left}.edit-form .page-options label{font-weight:bold;margin-right:20px}.edit-form.profile-edit .longbio{width:100%;min-height:400px;height:30vh}.edit-form.profile-edit .avatar-preview{border:1px solid transparent;margin:10px;margin-bottom:0px}.edit-form.profile-edit textarea.shortbio,.edit-form.profile-edit textarea.signature{min-width:300px;width:50%;min-height:100px;height:4em}.edit-form.profile-edit .logo-preview{border-color:#999;border-color:var(--project-edit-logo-previw-border-color);width:200px;border-width:1px}.edit-form.project-edit .project_description{width:100%;min-height:400px;height:30vh}.edit-form.project-edit input.project_blurb,.edit-form.project-edit input.project_name{min-width:300px;width:50%}.edit-form.project-edit .quota-bar{border-color:#999;border-color:var(--project-edit-quota-bar-border-color);width:500px;border-width:1px;margin-bottom:10px}.edit-form.project-edit .quota-bar .quota-filled{background-color:#444;background-color:var(--project-edit-quota-bar-filled-background);height:100%}.episode-list .description p{line-height:1.42em}.episode-list h2,.episode-list h3{font-size:1em;font-weight:bold}.episode-list ul{margin-bottom:30px;list-style-type:none;margin-top:-2px}#outer_holder .back{margin:0px auto 20px auto}#outer_holder .back .outer{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;align-items:flex-start;-webkit-justify-content:center;justify-content:center}#outer_holder .back .outer>.sidebar{max-width:260px}#outer_holder .back .outer>.sidebar>div{margin:6px;background-color:#ddd;width:200px;margin-bottom:12px}#outer_holder .back article{-webkit-box-flex:1 1 40%;-moz-box-flex:1 1 40%;-webkit-flex:1 1 40%;-ms-flex:1 1 40%;flex:1 1 40%}#player-wrapper{display:inline-block;-webkit-box-flex:0 1 auto;-moz-box-flex:0 1 auto;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;box-shadow:0px 0px 4px #000}@media screen{#player-wrapper #player{width:320px;height:210px}}@media screen and (min-width: 500px){#player-wrapper #player{width:480px;height:300px}}@media screen and (min-width: 670px){#player-wrapper #player{width:640px;height:390px}}@media screen and (min-width: 890px){#player-wrapper #player{width:854px;height:510px}}@media screen and (min-width: 1320px){#player-wrapper #player{width:1280px;height:750px}}.annotation{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;align-items:flex-start}.annotation .navigation{width:450px;display:inline-block}.annotation .notes{display:inline-block}nav.timecodes{margin:0px;max-width:450px;min-height:700px;overflow-y:auto;-webkit-box-flex:0 0 auto;-moz-box-flex:0 0 auto;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}nav.timecodes a{color:#ccc}nav.timecodes ul[name=markers]{margin:0px;padding:0px;list-style-type:none;font-size:15px}nav.timecodes ul[name=markers]>li{padding:4px;display:block;border-bottom:1px solid #333}nav.timecodes ul[name=markers]>li:hover{background-color:rgba(0,90,0,0.3)}nav.timecodes ul[name=markers]>li a{display:block;text-decoration:none}nav.timecodes ul[name=markers]>li a span.timecode{color:#777777;float:left;font-size:86%;margin-right:.5em;text-align:right;width:42px}#video-notes{min-height:700px;margin-top:0px}#video-notes pre{margin-top:1.5em;margin-left:10px;margin-right:30px;margin-bottom:1.5em;padding:10px;overflow:auto}#game_icon{background-position:0px 0px;background-repeat:no-repeat;background-image:url("/images/hero_home_200x114.png");background-size:cover;height:113px;margin:0px 0px 4px 0px}.sidebar-heading{margin:0px 0px 16px;font-size:18px;line-height:24px;font-weight:bold;color:#00547c;white-space:nowrap;text-shadow:1px 1px 2px rgba(0,0,0,0.25);text-align:center}.queryContainer{width:1000px;margin:15px auto;display:flex;flex-direction:horizontal}.queryContainer label{flex-grow:0;flex-shrink:0;padding-right:15px}#query{flex-grow:1}#results{width:800px;margin:0 auto}.dayContainer:nth-child(2n){background-color:rgba(0,0,0,0.05)}.dayName{width:200px;display:inline-block;vertical-align:top;line-height:16px;box-sizing:border-box;padding:5px}.markerList{display:inline-block;width:600px;box-sizing:border-box;vertical-align:top}.marker{cursor:pointer;border-top:1px solid rgba(255,255,255,0.1);display:block;text-decoration:none}.marker:first-child{border:none}.marker:hover{background-color:rgba(0,0,0,0.1)}.marker b{color:black;background-color:#ff9b00}#resultsSummary{text-align:center;margin:10px 0}.radio,.checkbox{position:relative;display:flex;flex-direction:column;padding-left:1.8rem}.radio input,.checkbox input{visibility:hidden;position:absolute}.radio label::before,.checkbox label::before{color:#000;color:var(--fg-font-color);background-color:#fafafc;background-color:var(--form-check-background);border-color:#999;border-color:var(--form-check-border-color);position:absolute;left:0;display:flex;justify-content:center;align-items:center;border-width:1px;border-style:solid;content:"";width:1.3rem;height:1.3rem;transition:border-color 0.2s}.radio label::before:hover,.checkbox label::before:hover{border-color:#4c9ed9;border-color:var(--form-check-border-color-hover)}.radio input:disabled ~ *,.checkbox input:disabled ~ *{opacity:0.5}.radio label:before{border-radius:50px}.radio input:checked+label:before{content:"\25cf"}.checkbox label:before{border-radius:0.1cm}.checkbox input:checked+label:before{content:"\2713"}input[type=text],input[type=password],textarea,select{color:#000;color:var(--fg-font-color);background-color:#fff;background-color:var(--form-text-background);border-color:#999;border-color:var(--form-text-border-color);border-width:1px;border-radius:2px;transition:border-color 0.3s, background-color 0.3s;outline:none}input[type=text].lite,input[type=password].lite,textarea.lite,select.lite{background-color:transparent;border-radius:0;border-width:2px 0 2px;border-style:solid;border-color:transparent;transition:border-bottom-color 60ms ease-in-out}input[type=text].lite:focus,input[type=text].lite:active,input[type=password].lite:focus,input[type=password].lite:active,textarea.lite:focus,textarea.lite:active,select.lite:focus,select.lite:active{background-color:transparent;border-top-color:transparent;border-bottom-color:var(--input-lite-border)}input[type=text]:active,input[type=text]:focus,input[type=password]:active,input[type=password]:focus,textarea:active,textarea:focus,select:active,select:focus{background-color:#fafafc;background-color:var(--form-text-background-active);border-color:#4c9ed9;border-color:var(--form-text-border-color-active)}input[type=text]:not(.lite),input[type=password]:not(.lite){padding:5px}form .note{font-style:italic}select{padding:5px 10px}option[selected]{font-weight:bold}input[disabled],select[disabled],textarea[disabled]{opacity:0.5}button,.button,input[type=button],input[type=submit]{color:#000;color:var(--form-button-color);background-color:#fff;background-color:var(--form-button-background);border-color:#ccc;border-color:var(--form-button-border-color);border-width:1px;border-style:solid;display:inline-block;border-radius:2px;transition:background-color 0.1s, border-color 0.1s;cursor:pointer;font-weight:600}button:hover,.button:hover,input[type=button]:hover,input[type=submit]:hover{color:#4c9ed9;color:var(--form-button-color-active);background-color:#f2f2f2;background-color:var(--form-button-background-active)}button.lite,.button.lite,input[type=button].lite,input[type=submit].lite{border:none;background:none;font-weight:normal}button.inline-button,.button.inline-button,input[type=button].inline-button,input[type=submit].inline-button{border-color:#999;border-color:var(--form-button-inline-border-color);margin:5px;box-shadow:none;border-width:1px;border-style:solid;padding:5px 7px}.tabbar{height:40px;padding-left:50px;margin-bottom:20px}.tabbar .tab{padding:10px;border-bottom:none}.tabbar .tab.current{border-bottom:2px solid transparent}.generic-form{width:60%;max-width:50em;margin:auto;margin-top:50px;padding:50px;border:1px solid transparent;border-bottom-width:0px;border-top-left-radius:3px;border-top-right-radius:3px}.generic-form table{border-collapse:separate;border-spacing:4px}.generic-form th{padding-right:10px;text-align:right}.generic-form th.error{color:red;text-align:center}#search_form_input_homepage{background-color:#f8f8f8;background-color:var(--landing-search-background)}#search_form_input_homepage:hover,#search_form_input_homepage:focus{background-color:#fefeff;background-color:var(--landing-search-background-hover)}.display-options{height:100%;padding:0px 20px 0px 20px}.display-options>*{display:inline-block;vertical-align:middle}.forum h3{margin:0px 80px 0px 20px;font-weight:bold}.forum-narrow .forum-narrow-hide{display:none}.thread{color:#000;color:var(--fg-font-color)}.forum .thread:nth-of-type(odd),.feed .thread:nth-of-type(odd){background-color:#f0f0f0;background-color:var(--forum-even-background)}.profile .thread{padding-left:15px}.thread .title{font-weight:bold;transition:border-bottom-color 0.1s;border-bottom-color:transparent}.thread .title:hover{border-bottom-color:initial}.thread.read{color:#555;color:var(--forum-thread-read-color)}.thread.read td{color:#555;color:var(--forum-thread-read-color)}.thread.read a{color:#888;color:var(--forum-thread-read-link-color)}.thread.read .title{font-weight:500}.thread .goto{font-size:200%;width:30px}.thread .goto a{display:block;padding:0px 10px;box-sizing:border-box;position:relative;line-height:100%;background-color:transparent}.forum .thread .info th{width:50px}.avatar-icon{width:40px;height:40px;flex-shrink:0;border-radius:100%;overflow:hidden;background-color:#bbb;background-color:var(--dimmest-color)}.thread .avatar-icon:not(.lite){left:30px;bottom:10px}.thread .info .avatar-icon:not(.lite){bottom:0px;left:0px}.feed .avatar-icon:not(.lite){left:-50px;bottom:-10px}.project .box .avatar-icon:not(.lite){left:0px;bottom:-10px}.badge{display:inline-block;border-radius:1000em;padding:0 0.8em;font-size:0.9em;line-height:1.8em;font-weight:bold}.badge.staff{background-color:#17b2c6;color:white}.badge.staff::before{content:'Staff'}.contents div.code{max-width:100%;max-height:20em;max-height:80vh;overflow:auto;-moz-tab-size:4;tab-size:4;border-width:1px;border-style:solid}.contents div+br,.contents blockquote+br,.contents ul+br,.contents ol+br{display:none}.codeblocktable{font-family:"Fira Mono", monospace;font-size:14px;overflow:auto;line-height:1.5em}.codeblocktable tbody{width:100%}.codeblocktable .linenos{color:#777;color:var(--code-line-number-color);font-weight:500;padding:5px;background:rgba(0,0,0,0.15)}.codeblocktable .code{padding-right:20px;padding-left:10px;max-width:80em}.wiki .post{padding:0;margin:auto;max-width:70em}.post .contents h1,.post .contents h2{margin:20px 0px}.post .contents h2{font-size:20px}.post .contents h5,.post .contents h6{margin:10px 0px}.post .contents strong{font-weight:500}.post .contents blockquote{display:block;margin-top:0;margin-bottom:0;padding:10px 18px;padding-top:0;padding-bottom:0;margin-left:20px;margin-right:20px;border-left-width:1px;border-left-style:solid}.post .contents blockquote .quotewho{line-height:2em}.post .contents blockquote .quotewho::after{content:" said:"}.post .contents img{max-width:100%}.post.bbcode .contents h1,.post.bbcode .contents h2,.post.bbcode .contents h3{display:inline}.project .post .contents h3,.post .contents h4{display:block;font-size:18px;margin:10px 0px}.post .action.button{padding:0px 10px;margin-top:0px;margin-right:4px;background-color:transparent;font-size:130%;border-radius:0px;border-width:0px;border-bottom-width:2px;transition:border-bottom-width 0.1s}.post .action.button:hover{border-bottom-width:4px}.post hr{max-width:90%}.post .signature hr{width:80%}.post .body .size1,.post-preview .size1{font-size:12px}.post .body .size2,.post-preview .size2{font-size:13px}.post .body .size3,.post-preview .size3{font-size:14px}.post .body .size4,.post-preview .size4{font-size:15px}.post .body .size5,.post-preview .size5{font-size:16px}.blog .post .meta{position:relative}.blog .post.op .meta{margin-bottom:10px}.blog .post .badges{width:40px;font-size:0.7em;text-align:center}.blog .post.op .body{padding-top:6px}.blog .post.op .body .contents{text-align:left}.blog .post.op .body p{margin-top:8px;margin-bottom:8px;text-align:left}.blog .sidebar .post>.author{padding:15px;text-align:center}.blog .sidebar .recent-posts{text-align:center;padding:15px}.blog .sidebar .recent-posts h2{display:inline}.blog .sidebar .archive ul{list-style-type:none;text-align:left}.blog .post-list .post:nth-child(even){background-color:transparent}.wiki .post p{margin:10px 0px}.wiki .toc{border-color:#aaa;border-color:var(--wiki-border-color);border-left-width:1px}.wiki .toc .toc-number{color:#333;color:var(--wiki-toc-number-color)}.wiki .toc ul{list-style-type:none;margin-left:10px;margin-bottom:5px}.wiki .toc li{margin-left:0px}.wiki .aside{border-color:#aaa;border-color:var(--wiki-border-color);border-left-width:1px;margin-left:20px}.wiki .aside::before{margin-left:-20px;margin-right:15px;display:inline-block;width:10px;content:"\21b4 "}.wiki .aside .aside-heading{padding:2px;margin:1px;border-radius:3px;border-width:0px;cursor:pointer;display:inline;background-color:transparent}.wiki .aside>.aside-body{overflow:hidden;padding-left:10px}.wiki .aside.folded::before{content:"\2192 "}.wiki .aside.folded>.aside-body{max-height:0px}.featured-post .meta .avatar-icon{left:-60px;bottom:-5px}.blog .body blockquote,.wiki .body blockquote{padding-top:1px;padding-bottom:1px}.content-block.blog p.title{font-weight:bold}.content-block.blog p.title a{border-bottom-width:0px}.content-block.blog p.title a:hover{border-bottom-width:1px}a.mark_as_read{float:right}.mark_as_read_toplevel_forum{margin-left:auto;margin-right:auto;width:100%;text-align:center}.mark_as_read_toplevel_forum a{text-decoration:underline}div.mark_as_read_toplevel_blog{margin-left:auto;margin-right:auto;width:100%;text-align:center}div.mark_as_read_toplevel_blog a{text-decoration:none}.mark_as_read_toplevel_blog div.mark_as_read_site{margin-left:auto;margin-right:auto;width:100%;text-align:center}.mark_as_read_toplevel_blog div.mark_as_read_site a{text-decoration:none}.mark_as_read_site li.post-entry{margin-left:0px;margin-bottom:3px}.diff{width:100%;max-height:100vh;overflow-y:scroll;margin-top:20px}.diff>.post-source{color:#000;color:var(--fg-font-color);background-color:#fff;background-color:var(--forum-diff-source-background);border-color:#999;border-color:var(--forum-diff-source-border-color);border-width:1px;border-radius:2px;font-family:"Fira Mono", monospace;width:49%;box-sizing:border-box;padding:4px;display:inline-block;vertical-align:top}.diff .diff-replace,.diff .diff-delete,.diff .diff-insert{border-width:1px;border-radius:2px;padding:1px}.diff .diff-replace{background-color:#adcef4;background-color:var(--forum-diff-replace-background);border-color:#4787d1;border-color:var(--forum-diff-replace-border-color)}.diff .diff-delete{background-color:#e57979;background-color:var(--forum-diff-delete-background);border-color:#c12626;border-color:var(--forum-diff-delete-border-color)}.diff .diff-insert{background-color:#96e579;background-color:var(--forum-diff-insert-background);border-color:#5baa3f;border-color:var(--forum-diff-insert-border-color)}.index{list-style-type:none;-webkit-column-count:3;-moz-column-count:3;column-count:3;margin-top:20px}.index .index-category{margin-bottom:20px;-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid-column}.bbtable{width:100%;border:1px solid}.bbtable td,.bbtable th{border:1px solid;padding:4px}.bbtable th{background:rgba(0,0,0,0.15);font-weight:bold;border-bottom-width:2px}.bbtable tbody tr:nth-child(even){background:rgba(0,0,0,0.05)}@font-face{font-family:icons;src:url("/static/icon/icons.ttf?v=4")}span.icon{font-family:"icons"}span.icon-settings::before{font-family:"icons";content:"0"}span.icon-link::before{font-family:"icons";content:"1"}span.icon-logout::before{font-family:"icons";content:"2"}span.icon-twitter::before{font-family:"icons";content:"#"}span.icon-twitch::before{font-family:"icons";content:"$"}span.icon-github::before{font-family:"icons";content:"%"}span.icon-patreon::before{font-family:"icons";content:"&"}span.icon-youtube::before{font-family:"icons";content:"'"}span.icon-soundcloud::before{font-family:"icons";content:"*"}span.icon-web::before{font-family:"icons";content:"3"}span.icon-itchio::before{font-family:"icons";content:"+"}span.icon-hitbox::before{font-family:"icons";content:","}span.icon-rss::before{font-family:"icons";content:"4"}.chat{border-color:#ddd;border-color:var(--irc-border-color);margin:auto;width:100%;border:1px solid transparent;position:relative;overflow:hidden;padding-right:8px;box-sizing:border-box}.chat #tabs{overflow-y:scroll;box-sizing:border-box}.chat #tabs .hidden{display:none}.chat #tabs .current{box-shadow:0px 0px 5px #bbb inset;box-shadow:var(--irc-tab-current-shadow)}.chat #tabs .button{padding-left:10px;padding-right:3px;transition:width 0.2s;text-transform:none;vertical-align:top}.chat #tabs .button .close-btn{visibility:hidden;opacity:0;transition:opacity 0.2s;display:inline-block;font-size:9pt;vertical-align:middle;height:13px;line-height:11px;width:13px;margin-left:5px;padding-left:2px;padding-right:3px;border-radius:3px;border:1px solid transparent;position:relative;top:-2px}.chat #tabs .button:hover .close-btn{color:#fff;color:var(--irc-tab-close-button-color);background-color:#aaa;background-color:var(--irc-tab-close-button-background);visibility:visible;opacity:1}.chat #tabs .new-tab{padding:0px;padding-left:10px}.chat #history{width:100%;min-height:300px;height:50vh;overflow-y:auto;padding-top:3px;box-sizing:border-box}.chat #history .channel{width:100%;display:none}.chat #history .channel.current{display:table}.chat #history .channel.hidden{display:none}.chat #history .entry{display:table-row;width:100%;font-size:11pt}.chat #history .entry.minor{color:#777;font-size:10pt}.chat #history .entry.alert{color:#dd683b}.chat #history .entry.error{color:#880000;font-style:italic}.chat #history .entry.action{font-style:italic}.chat #history .entry.action .msg .action-name{font-weight:bold}.chat #history .entry .nick,.chat #history .entry .msg{display:table-cell;padding:0px 4px}.chat #history .entry .nick{border-color:#ccc;border-color:var(--irc-nick-border-color);font-weight:bold;text-align:right;border-right-width:1px;border-right-style:solid}.chat #history .entry .msg{width:100%}.chat #history .entry .msg .highlight{background-color:#dd683b;color:#fff;padding:0px 5px}.chat #history .entry .msg .emote{height:1.6em;vertical-align:middle}.chat #chatbox{width:100%}.chat #users{color:#000;color:var(--irc-users-color);background-color:#fff;background-color:var(--irc-users-background);border-color:#ccc;border-color:var(--irc-users-border-color);position:absolute;border-left-width:1px;border-left-style:solid;padding:5px;right:0px;top:0px;color:#333;height:100%;max-width:20%;width:20%;transition:right 0.2s;max-height:100%;overflow-y:auto;box-sizing:border-box}.chat #users.collapsed{right:-20%}.chat #users .popout{background-color:#fff;background-color:var(--irc-users-popout-background);border-left-color:#bbb;border-left-color:var(--irc-users-popout-border-color-left);border-right-color:#ccc;border-right-color:var(--irc-users-popout-border-color-right);width:8px;font-size:7pt;height:100%;border-radius:2px;border:0px solid transparent;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid;position:absolute;top:0px;left:-8px;box-shadow:0px 0px 0px transparent;text-align:center;margin:0px;cursor:pointer}.chat #users .op{font-weight:bold}.chat #users .user{cursor:pointer}.landing .breadcrumb{padding:0px 3px}.landing .breadcrumb:first-child{padding-left:0px}.landing .more{display:block;margin-top:10px}.landing .contents{margin-bottom:20px}.landing .showcase .arrow-container{width:60px;position:absolute;top:0;bottom:0;z-index:2;display:flex;flex-direction:column;justify-content:center;align-items:center}.landing .showcase .arrow-container.left{left:0;background-image:linear-gradient(to right, #f8f8f8 , rgba(0, 0, 0, 0));background-image:linear-gradient(to right, var(--content-background) , rgba(0, 0, 0, 0))}.landing .showcase .arrow-container.left svg{transform:translateX(-.05rem)}.landing .showcase .arrow-container.right{right:0;background-image:linear-gradient(to left, #f8f8f8 , rgba(0, 0, 0, 0));background-image:linear-gradient(to left, var(--content-background) , rgba(0, 0, 0, 0))}.landing .showcase .arrow-container.right svg{transform:translateX(.05rem)}.landing .showcase .arrow-container.hide{opacity:0;pointer-events:none}.landing .showcase .arrow-container .arrow{background-color:#f8f8f8;background-color:var(--content-background);border-radius:100%;width:2.4rem;height:2.4rem;font-size:1rem;transition:opacity 40ms ease-in-out;box-shadow:0px 0px 3px 0px rgba(0,0,0,0.2);display:flex;justify-content:center;align-items:center}.landing #showcase-items{transition:transform 200ms ease-in-out}.landing .showcase-item{width:7rem;height:7rem}@media screen and (min-width: 30em){.landing .showcase-item{width:10rem;height:10rem}}.star-btn{border-bottom-width:2px;background-color:#fff;background-color:var(--library-star-btn-background);border-color:#999;border-color:var(--library-star-btn-border-color)}.star-btn a{border-color:#aaa;border-color:var(--library-star-btn-a-border-color)}.star-btn a:hover{background-color:#fafafa;background-color:var(--library-star-btn-a-hover-background)}.library-dropcap{width:1em;height:1.1em;padding-top:0.19em;text-align:center;font-size:2rem}.profile .content .description{margin:0px auto;max-width:40em}.profile .content h2{margin-bottom:10px}.profile ul.recent-posts,.profile ul.recent-comments{list-style-type:none}.profile ul .entry{margin-left:20px}.profile .entry .context{font-weight:bold;border-bottom:0px}.profile .content-block.projects{background-image:none;overflow-y:visible}.profile .content-block.avatar,.project .content-block.logo{background-color:transparent;background-image:none;box-shadow:none;min-height:200px}.project .content-block.screenshots,.profile .content-block.projects{padding:0px;min-height:0em}.project .notice{color:#fff;color:var(--project-notice-text-color)}.project .notice a{color:#fff;color:var(--project-notice-text-color);border-bottom-color:#fff;border-bottom-color:var(--project-notice-text-color)}.project .pair{display:flex;align-items:flex-start}.project .pair .key{font-weight:bold;flex-shrink:0}.project .pair .value{text-align:right;flex-grow:1}.project .settings-icon{z-index:10;position:absolute;width:25px;height:25px;right:5px;top:5px;margin:0px;text-align:center;padding:3px;border-radius:5px;line-height:100%;box-sizing:border-box}.project .screenshots .slideshow{background-color:black}.project .tags{text-align:center}.project .tags h2{margin-bottom:5px}.project .tags li{display:inline-block}.project .button-bar{border:none}.project .forum h3{margin:0}.project .forum .thread-entry-right{display:none}.notice-unapproved{background-color:#b42222;background-color:var(--notice-unapproved-color)}.notice-hidden{background-color:#b6b6b6;background-color:var(--notice-hidden-color)}.notice-hiatus{background-color:#aa7d30;background-color:var(--notice-hiatus-color)}.notice-dead{background-color:#b42222;background-color:var(--notice-dead-color)}.notice-lts{background-color:#43a52f;background-color:var(--notice-lts-color)}.notice-lts-reqd{background-color:#aa7d30;background-color:var(--notice-lts-reqd-color)}.project-carousel-container{width:50rem}.project-carousel-container .project-carousel{box-sizing:content-box;position:relative;height:12rem}@media screen and (min-width: 60em){.project-carousel-container .project-carousel{height:16rem}}.project-carousel-container .project-carousel-item{position:absolute;top:0;left:0}.project-carousel-container .project-carousel-item:not(.active){display:none}.project-carousel-container .project-carousel-item br{line-height:0.6em}.project-carousel-container .project-carousel-description{max-height:14rem;overflow:hidden}.project-carousel-container .project-carousel-fade{position:absolute;left:0;right:0;bottom:0;height:30px;background:linear-gradient( rgba(240,240,240,0) , #f0f0f0 );background:linear-gradient( var(--dim-background-transparent) , var(--dim-background) )}.project-carousel-container .project-carousel-item-small:not(.active){display:none}.project-carousel-container .project-carousel-button{border:1px solid;border-color:#999;border-color:var(--dimmer-color);cursor:pointer;transition:all 100ms ease-in-out}.project-carousel-container .project-carousel-button:hover{background-color:#bbb;background-color:var(--dimmest-color)}.project-carousel-container .project-carousel-button.active{border-color:#666;border-color:var(--theme-color)}.project-carousel-container .project-carousel-button.active:hover{background-color:#ccc;background-color:var(--theme-color-dimmest)}.project-card{color:#000;color:var(--fg-font-color);background-color:#e8e8e8;background-color:var(--card-background);border-color:#aaa;border-color:var(--project-card-border-color);transition:box-shadow 0.2s, background-color 0.2s}.slideshow .project-card{margin-top:8px}.project-card:hover{background-color:#f0f0f0;background-color:var(--card-background-hover)}.project-card:hover>.title{text-decoration:underline}.project-card .image-container{width:8rem;min-height:8rem}.project-card .image-container .image{position:absolute;width:8rem;top:0;bottom:0}.project-card .details{transition:background-color 0.2s}.project-card .badges:empty{display:none}.project-card .badge{color:white;border-radius:5px}.sidebar .projectlist{padding:0px;width:340px}.sidebar .projectlist .project-card.more{height:40px;width:326px;padding-top:5px}.screenshots .slide{max-width:100%}.slideshow{position:relative;background-image:none;overflow:hidden}.slideshow .optionbar{height:30px;text-align:center}.slideshow .buttons{display:inline-block;height:100%}.slideshow .button{line-height:100%;padding:5px 8px;font-weight:400}.slideshow .button.current{font-weight:600}.slideshow #slide-deck{width:100%;position:relative;transition:left 0.3s;left:0px;text-align:center;display:flex;flex-direction:horizontal;justify-content:space-around;align-items:center}.slideshow .slide{flex:1 1 100%;position:relative}.slideshow .slide img{margin:auto;max-height:60vh;max-width:100%}.slideshow.cards #slide-deck{justify-content:flex-start}.slideshow.cards .slide{flex:0 1 auto}#project_owner_suggestions{max-height:300px;overflow:auto;position:absolute;border:1px solid transparent}#project_owner_suggestions #user_template{display:none}.user_suggestions{background-color:#fff;background-color:var(--project-user-suggestions-background);padding-top:5px;padding-bottom:5px}.user_suggestions#project_owner_suggestions .user{border-color:#ddd;border-color:var(--project-user-suggestions-border-color);border-bottom-width:1px;width:200px;box-sizing:border-box;cursor:pointer}.user_suggestions .user{position:relative;margin-left:50px;display:inline-block;margin-right:10px}.user_suggestions .user .avatar-icon{left:-50px;bottom:0px;border-radius:50%;border:2px solid transparent}#project_owners{min-width:50%}.showcase-item .gradient{width:100%;height:114px;background-image:linear-gradient(rgba(0,0,0,0.82), #0000)}.streams-container #empty-message{display:none}.streams-container .streams:empty{display:none}.streams-container .streams:empty+#empty-message{display:block}.streams-container .stream .live{position:absolute;left:.5rem;top:.5rem;color:white;background-color:#e91916;font-weight:bold}.streams-container .stream .viewers{position:absolute;left:.5rem;bottom:.5rem;color:white;background-color:rgba(0,0,0,0.7)}.streams-container .stream .avatar{padding:1.5rem}.streams-container .twitch-embed-container{padding-bottom:0%;transition:padding-bottom 400ms ease-in-out}.streams-container .twitch-embed-container.open{padding-bottom:150%}@media screen and (min-width: 713px){.streams-container .twitch-embed-container.open{padding-bottom:40.6%}}.timeline.no-forums .forums{display:none}.timeline.no-blogs .blogs{display:none}.timeline.no-wiki .wiki{display:none}.timeline.no-library .library{display:none}.timeline.no-snippets .snippets{display:none}.timeline .timeline-item{background-color:#e8e8e8;background-color:var(--card-background);color:#000;color:var(--main-color)}.timeline-item .avatar-icon{border:2px solid;border-color:#666;border-color:var(--theme-color)}.timeline-item .avatar-icon.big{width:62px;height:62px}.timeline-item .timeline-content-box>*{display:block;max-width:100%;max-height:80vh}.timeline-item .timeline-content-box.youtube{position:relative;width:100%;height:0;padding-bottom:56.25%}.timeline-item .timeline-content-box.youtube>iframe{position:absolute;top:0;left:0;width:100%;height:100%}.timeline-modal .container{max-height:100vh}@media screen and (min-width: 30em){.timeline-modal .container{width:auto;max-height:calc(100vh - 2rem)}} +@charset "UTF-8"; +/*! normalize.css v7.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 + * IE on Windows Phone and in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; } + +/** + * Add the correct display in IE 9-. + */ +article, +aside, +footer, +header, +nav, +section { + display: block; } + +/** + * 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 + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ +figcaption, +figure, +main { + /* 1 */ + display: block; } + +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; } + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/** + * 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 + ========================================================================== */ +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ +a { + background-color: transparent; + /* 1 */ + -webkit-text-decoration-skip: objects; + /* 2 */ } + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * 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 style in Android 4.3-. + */ +dfn { + font-style: italic; } + +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #000; } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +audio, +video { + display: inline-block; } + +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; } + +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; } + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + /* 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; } + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + /* 2 */ } + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * 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 */ } + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; } + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-cancel-button, +[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 IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ +details, +menu { + display: block; } + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; } + +/* Scripting + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +canvas { + display: inline-block; } + +/** + * Add the correct display in IE. + */ +template { + display: none; } + +/* Hidden + ========================================================================== */ +/** + * Add the correct display in IE 10-. + */ +[hidden] { + display: none; } + +/* + + VARIABLES + +*/ +/* + + DEBUG CHILDREN + Docs: http://tachyons.io/docs/debug/ + + Just add the debug class to any element to see outlines on its + children. + +*/ +.debug * { + outline: 1px solid gold; } + +.debug-white * { + outline: 1px solid white; } + +.debug-black * { + outline: 1px solid black; } + +/* + + DEBUG GRID + http://tachyons.io/docs/debug-grid/ + + Can be useful for debugging layout issues + or helping to make sure things line up perfectly. + Just tack one of these classes onto a parent element. + +*/ +.debug-grid { + background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat top left; } + +.debug-grid-16 { + background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat top left; } + +.debug-grid-8-solid { + background: white url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat top left; } + +.debug-grid-16-solid { + background: white url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat top left; } + +/* + + BOX SIZING + +*/ +html, +body, +div, +article, +section, +main, +footer, +header, +form, +fieldset, +legend, +pre, +code, +a, +h1, h2, h3, h4, h5, h6, +p, +ul, +ol, +li, +dl, +dt, +dd, +textarea, +table, +td, +th, +tr, +input[type="email"], +input[type="number"], +input[type="password"], +input[type="tel"], +input[type="text"], +input[type="url"], +.border-box { + box-sizing: border-box; } + +/* + + ASPECT RATIOS + +*/ +/* This is for fluid media that is embedded from third party sites like youtube, vimeo etc. + * Wrap the outer element in aspect-ratio and then extend it with the desired ratio i.e + * Make sure there are no height and width attributes on the embedded media. + * Adapted from: https://github.com/suitcss/components-flex-embed + * + * Example: + * + *
+ * + *
+ * + * */ +.aspect-ratio { + height: 0; + position: relative; } + +.aspect-ratio--16x9 { + padding-bottom: 56.25%; } + +.aspect-ratio--9x16 { + padding-bottom: 177.77%; } + +.aspect-ratio--4x3 { + padding-bottom: 75%; } + +.aspect-ratio--3x4 { + padding-bottom: 133.33%; } + +.aspect-ratio--6x4 { + padding-bottom: 66.6%; } + +.aspect-ratio--4x6 { + padding-bottom: 150%; } + +.aspect-ratio--8x5 { + padding-bottom: 62.5%; } + +.aspect-ratio--5x8 { + padding-bottom: 160%; } + +.aspect-ratio--7x5 { + padding-bottom: 71.42%; } + +.aspect-ratio--5x7 { + padding-bottom: 140%; } + +.aspect-ratio--1x1 { + padding-bottom: 100%; } + +.aspect-ratio--object { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; } + +@media screen and (min-width: 30em) { + .aspect-ratio-ns { + height: 0; + position: relative; } + .aspect-ratio--16x9-ns { + padding-bottom: 56.25%; } + .aspect-ratio--9x16-ns { + padding-bottom: 177.77%; } + .aspect-ratio--4x3-ns { + padding-bottom: 75%; } + .aspect-ratio--3x4-ns { + padding-bottom: 133.33%; } + .aspect-ratio--6x4-ns { + padding-bottom: 66.6%; } + .aspect-ratio--4x6-ns { + padding-bottom: 150%; } + .aspect-ratio--8x5-ns { + padding-bottom: 62.5%; } + .aspect-ratio--5x8-ns { + padding-bottom: 160%; } + .aspect-ratio--7x5-ns { + padding-bottom: 71.42%; } + .aspect-ratio--5x7-ns { + padding-bottom: 140%; } + .aspect-ratio--1x1-ns { + padding-bottom: 100%; } + .aspect-ratio--object-ns { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .aspect-ratio-m { + height: 0; + position: relative; } + .aspect-ratio--16x9-m { + padding-bottom: 56.25%; } + .aspect-ratio--9x16-m { + padding-bottom: 177.77%; } + .aspect-ratio--4x3-m { + padding-bottom: 75%; } + .aspect-ratio--3x4-m { + padding-bottom: 133.33%; } + .aspect-ratio--6x4-m { + padding-bottom: 66.6%; } + .aspect-ratio--4x6-m { + padding-bottom: 150%; } + .aspect-ratio--8x5-m { + padding-bottom: 62.5%; } + .aspect-ratio--5x8-m { + padding-bottom: 160%; } + .aspect-ratio--7x5-m { + padding-bottom: 71.42%; } + .aspect-ratio--5x7-m { + padding-bottom: 140%; } + .aspect-ratio--1x1-m { + padding-bottom: 100%; } + .aspect-ratio--object-m { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; } } + +@media screen and (min-width: 60em) { + .aspect-ratio-l { + height: 0; + position: relative; } + .aspect-ratio--16x9-l { + padding-bottom: 56.25%; } + .aspect-ratio--9x16-l { + padding-bottom: 177.77%; } + .aspect-ratio--4x3-l { + padding-bottom: 75%; } + .aspect-ratio--3x4-l { + padding-bottom: 133.33%; } + .aspect-ratio--6x4-l { + padding-bottom: 66.6%; } + .aspect-ratio--4x6-l { + padding-bottom: 150%; } + .aspect-ratio--8x5-l { + padding-bottom: 62.5%; } + .aspect-ratio--5x8-l { + padding-bottom: 160%; } + .aspect-ratio--7x5-l { + padding-bottom: 71.42%; } + .aspect-ratio--5x7-l { + padding-bottom: 140%; } + .aspect-ratio--1x1-l { + padding-bottom: 100%; } + .aspect-ratio--object-l { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; } } + +/* + + IMAGES + Docs: http://tachyons.io/docs/elements/images/ + +*/ +/* Responsive images! */ +img, video { + max-width: 100%; } + +/* + + BACKGROUND SIZE + Docs: http://tachyons.io/docs/themes/background-size/ + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +/* + Often used in combination with background image set as an inline style + on an html element. +*/ +.cover { + background-size: cover !important; } + +.contain { + background-size: contain !important; } + +@media screen and (min-width: 30em) { + .cover-ns { + background-size: cover !important; } + .contain-ns { + background-size: contain !important; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .cover-m { + background-size: cover !important; } + .contain-m { + background-size: contain !important; } } + +@media screen and (min-width: 60em) { + .cover-l { + background-size: cover !important; } + .contain-l { + background-size: contain !important; } } + +/* + + BACKGROUND POSITION + + Base: + bg = background + + Modifiers: + -center = center center + -top = top center + -right = center right + -bottom = bottom center + -left = center left + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + + */ +.bg-center { + background-repeat: no-repeat; + background-position: center center; } + +.bg-top { + background-repeat: no-repeat; + background-position: top center; } + +.bg-right { + background-repeat: no-repeat; + background-position: center right; } + +.bg-bottom { + background-repeat: no-repeat; + background-position: bottom center; } + +.bg-left { + background-repeat: no-repeat; + background-position: center left; } + +@media screen and (min-width: 30em) { + .bg-center-ns { + background-repeat: no-repeat; + background-position: center center; } + .bg-top-ns { + background-repeat: no-repeat; + background-position: top center; } + .bg-right-ns { + background-repeat: no-repeat; + background-position: center right; } + .bg-bottom-ns { + background-repeat: no-repeat; + background-position: bottom center; } + .bg-left-ns { + background-repeat: no-repeat; + background-position: center left; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .bg-center-m { + background-repeat: no-repeat; + background-position: center center; } + .bg-top-m { + background-repeat: no-repeat; + background-position: top center; } + .bg-right-m { + background-repeat: no-repeat; + background-position: center right; } + .bg-bottom-m { + background-repeat: no-repeat; + background-position: bottom center; } + .bg-left-m { + background-repeat: no-repeat; + background-position: center left; } } + +@media screen and (min-width: 60em) { + .bg-center-l { + background-repeat: no-repeat; + background-position: center center; } + .bg-top-l { + background-repeat: no-repeat; + background-position: top center; } + .bg-right-l { + background-repeat: no-repeat; + background-position: center right; } + .bg-bottom-l { + background-repeat: no-repeat; + background-position: bottom center; } + .bg-left-l { + background-repeat: no-repeat; + background-position: center left; } } + +/* + + OUTLINES + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.outline { + outline: 1px solid; } + +.outline-transparent { + outline: 1px solid transparent; } + +.outline-0 { + outline: 0; } + +@media screen and (min-width: 30em) { + .outline-ns { + outline: 1px solid; } + .outline-transparent-ns { + outline: 1px solid transparent; } + .outline-0-ns { + outline: 0; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .outline-m { + outline: 1px solid; } + .outline-transparent-m { + outline: 1px solid transparent; } + .outline-0-m { + outline: 0; } } + +@media screen and (min-width: 60em) { + .outline-l { + outline: 1px solid; } + .outline-transparent-l { + outline: 1px solid transparent; } + .outline-0-l { + outline: 0; } } + +/* + + BORDERS + Docs: http://tachyons.io/docs/themes/borders/ + + Base: + b = border + + Modifiers: + a = all + t = top + r = right + b = bottom + l = left + n = none + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.ba { + border-style: solid; + border-width: 1px; } + +.bt { + border-top-style: solid; + border-top-width: 1px; } + +.br { + border-right-style: solid; + border-right-width: 1px; } + +.bb { + border-bottom-style: solid; + border-bottom-width: 1px; } + +.bl { + border-left-style: solid; + border-left-width: 1px; } + +.bn { + border-style: none; + border-width: 0; } + +@media screen and (min-width: 30em) { + .ba-ns { + border-style: solid; + border-width: 1px; } + .bt-ns { + border-top-style: solid; + border-top-width: 1px; } + .br-ns { + border-right-style: solid; + border-right-width: 1px; } + .bb-ns { + border-bottom-style: solid; + border-bottom-width: 1px; } + .bl-ns { + border-left-style: solid; + border-left-width: 1px; } + .bn-ns { + border-style: none; + border-width: 0; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .ba-m { + border-style: solid; + border-width: 1px; } + .bt-m { + border-top-style: solid; + border-top-width: 1px; } + .br-m { + border-right-style: solid; + border-right-width: 1px; } + .bb-m { + border-bottom-style: solid; + border-bottom-width: 1px; } + .bl-m { + border-left-style: solid; + border-left-width: 1px; } + .bn-m { + border-style: none; + border-width: 0; } } + +@media screen and (min-width: 60em) { + .ba-l { + border-style: solid; + border-width: 1px; } + .bt-l { + border-top-style: solid; + border-top-width: 1px; } + .br-l { + border-right-style: solid; + border-right-width: 1px; } + .bb-l { + border-bottom-style: solid; + border-bottom-width: 1px; } + .bl-l { + border-left-style: solid; + border-left-width: 1px; } + .bn-l { + border-style: none; + border-width: 0; } } + +/* + + BORDER COLORS + Docs: http://tachyons.io/docs/themes/borders/ + + Border colors can be used to extend the base + border classes ba,bt,bb,br,bl found in the _borders.css file. + + The base border class by default will set the color of the border + to that of the current text color. These classes are for the cases + where you desire for the text and border colors to be different. + + Base: + b = border + + Modifiers: + --color-name = each color variable name is also a border color name + +*/ +.b--black { + border-color: #000; } + +.b--near-black { + border-color: #111; } + +.b--dark-gray { + border-color: #333; } + +.b--mid-gray { + border-color: #555; } + +.b--gray { + border-color: #777; } + +.b--silver { + border-color: #999; } + +.b--light-silver { + border-color: #aaa; } + +.b--moon-gray { + border-color: #ccc; } + +.b--light-gray { + border-color: #eee; } + +.b--near-white { + border-color: #f4f4f4; } + +.b--white { + border-color: #fff; } + +.b--white-90 { + border-color: rgba(255, 255, 255, 0.9); } + +.b--white-80 { + border-color: rgba(255, 255, 255, 0.8); } + +.b--white-70 { + border-color: rgba(255, 255, 255, 0.7); } + +.b--white-60 { + border-color: rgba(255, 255, 255, 0.6); } + +.b--white-50 { + border-color: rgba(255, 255, 255, 0.5); } + +.b--white-40 { + border-color: rgba(255, 255, 255, 0.4); } + +.b--white-30 { + border-color: rgba(255, 255, 255, 0.3); } + +.b--white-20 { + border-color: rgba(255, 255, 255, 0.2); } + +.b--white-10 { + border-color: rgba(255, 255, 255, 0.1); } + +.b--white-05 { + border-color: rgba(255, 255, 255, 0.05); } + +.b--white-025 { + border-color: rgba(255, 255, 255, 0.025); } + +.b--white-0125 { + border-color: rgba(255, 255, 255, 0.0125); } + +.b--black-90 { + border-color: rgba(0, 0, 0, 0.9); } + +.b--black-80 { + border-color: rgba(0, 0, 0, 0.8); } + +.b--black-70 { + border-color: rgba(0, 0, 0, 0.7); } + +.b--black-60 { + border-color: rgba(0, 0, 0, 0.6); } + +.b--black-50 { + border-color: rgba(0, 0, 0, 0.5); } + +.b--black-40 { + border-color: rgba(0, 0, 0, 0.4); } + +.b--black-30 { + border-color: rgba(0, 0, 0, 0.3); } + +.b--black-20 { + border-color: rgba(0, 0, 0, 0.2); } + +.b--black-10 { + border-color: rgba(0, 0, 0, 0.1); } + +.b--black-05 { + border-color: rgba(0, 0, 0, 0.05); } + +.b--black-025 { + border-color: rgba(0, 0, 0, 0.025); } + +.b--black-0125 { + border-color: rgba(0, 0, 0, 0.0125); } + +.b--dark-red { + border-color: #e7040f; } + +.b--red { + border-color: #ff4136; } + +.b--light-red { + border-color: #ff725c; } + +.b--orange { + border-color: #ff6300; } + +.b--gold { + border-color: #ffb700; } + +.b--yellow { + border-color: #ffd700; } + +.b--light-yellow { + border-color: #fbf1a9; } + +.b--purple { + border-color: #5e2ca5; } + +.b--light-purple { + border-color: #a463f2; } + +.b--dark-pink { + border-color: #d5008f; } + +.b--hot-pink { + border-color: #ff41b4; } + +.b--pink { + border-color: #ff80cc; } + +.b--light-pink { + border-color: #ffa3d7; } + +.b--dark-green { + border-color: #137752; } + +.b--green { + border-color: #19a974; } + +.b--light-green { + border-color: #9eebcf; } + +.b--navy { + border-color: #001b44; } + +.b--dark-blue { + border-color: #00449e; } + +.b--blue { + border-color: #357edd; } + +.b--light-blue { + border-color: #96ccff; } + +.b--lightest-blue { + border-color: #cdecff; } + +.b--washed-blue { + border-color: #f6fffe; } + +.b--washed-green { + border-color: #e8fdf5; } + +.b--washed-yellow { + border-color: #fffceb; } + +.b--washed-red { + border-color: #ffdfdf; } + +.b--transparent { + border-color: transparent; } + +.b--inherit { + border-color: inherit; } + +/* + + BORDER RADIUS + Docs: http://tachyons.io/docs/themes/border-radius/ + + Base: + br = border-radius + + Modifiers: + 0 = 0/none + 1 = 1st step in scale + 2 = 2nd step in scale + 3 = 3rd step in scale + 4 = 4th step in scale + + Literal values: + -100 = 100% + -pill = 9999px + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.br0 { + border-radius: 0; } + +.br1 { + border-radius: 0.125rem; } + +.br2 { + border-radius: 0.25rem; } + +.br3 { + border-radius: 0.5rem; } + +.br4 { + border-radius: 1rem; } + +.br-100 { + border-radius: 100%; } + +.br-pill { + border-radius: 9999px; } + +.br--bottom { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.br--top { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.br--right { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.br--left { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +@media screen and (min-width: 30em) { + .br0-ns { + border-radius: 0; } + .br1-ns { + border-radius: 0.125rem; } + .br2-ns { + border-radius: 0.25rem; } + .br3-ns { + border-radius: 0.5rem; } + .br4-ns { + border-radius: 1rem; } + .br-100-ns { + border-radius: 100%; } + .br-pill-ns { + border-radius: 9999px; } + .br--bottom-ns { + border-top-left-radius: 0; + border-top-right-radius: 0; } + .br--top-ns { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + .br--right-ns { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .br--left-ns { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .br0-m { + border-radius: 0; } + .br1-m { + border-radius: 0.125rem; } + .br2-m { + border-radius: 0.25rem; } + .br3-m { + border-radius: 0.5rem; } + .br4-m { + border-radius: 1rem; } + .br-100-m { + border-radius: 100%; } + .br-pill-m { + border-radius: 9999px; } + .br--bottom-m { + border-top-left-radius: 0; + border-top-right-radius: 0; } + .br--top-m { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + .br--right-m { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .br--left-m { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } } + +@media screen and (min-width: 60em) { + .br0-l { + border-radius: 0; } + .br1-l { + border-radius: 0.125rem; } + .br2-l { + border-radius: 0.25rem; } + .br3-l { + border-radius: 0.5rem; } + .br4-l { + border-radius: 1rem; } + .br-100-l { + border-radius: 100%; } + .br-pill-l { + border-radius: 9999px; } + .br--bottom-l { + border-top-left-radius: 0; + border-top-right-radius: 0; } + .br--top-l { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + .br--right-l { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .br--left-l { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } } + +/* + + BORDER STYLES + Docs: http://tachyons.io/docs/themes/borders/ + + Depends on base border module in _borders.css + + Base: + b = border-style + + Modifiers: + --none = none + --dotted = dotted + --dashed = dashed + --solid = solid + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + + */ +.b--dotted { + border-style: dotted; } + +.b--dashed { + border-style: dashed; } + +.b--solid { + border-style: solid; } + +.b--none { + border-style: none; } + +@media screen and (min-width: 30em) { + .b--dotted-ns { + border-style: dotted; } + .b--dashed-ns { + border-style: dashed; } + .b--solid-ns { + border-style: solid; } + .b--none-ns { + border-style: none; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .b--dotted-m { + border-style: dotted; } + .b--dashed-m { + border-style: dashed; } + .b--solid-m { + border-style: solid; } + .b--none-m { + border-style: none; } } + +@media screen and (min-width: 60em) { + .b--dotted-l { + border-style: dotted; } + .b--dashed-l { + border-style: dashed; } + .b--solid-l { + border-style: solid; } + .b--none-l { + border-style: none; } } + +/* + + BORDER WIDTHS + Docs: http://tachyons.io/docs/themes/borders/ + + Base: + bw = border-width + + Modifiers: + 0 = 0 width border + 1 = 1st step in border-width scale + 2 = 2nd step in border-width scale + 3 = 3rd step in border-width scale + 4 = 4th step in border-width scale + 5 = 5th step in border-width scale + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.bw0 { + border-width: 0; } + +.bw1 { + border-width: 0.125rem; } + +.bw2 { + border-width: 0.25rem; } + +.bw3 { + border-width: 0.5rem; } + +.bw4 { + border-width: 1rem; } + +.bw5 { + border-width: 2rem; } + +/* Resets */ +.bt-0 { + border-top-width: 0; } + +.br-0 { + border-right-width: 0; } + +.bb-0 { + border-bottom-width: 0; } + +.bl-0 { + border-left-width: 0; } + +@media screen and (min-width: 30em) { + .bw0-ns { + border-width: 0; } + .bw1-ns { + border-width: 0.125rem; } + .bw2-ns { + border-width: 0.25rem; } + .bw3-ns { + border-width: 0.5rem; } + .bw4-ns { + border-width: 1rem; } + .bw5-ns { + border-width: 2rem; } + .bt-0-ns { + border-top-width: 0; } + .br-0-ns { + border-right-width: 0; } + .bb-0-ns { + border-bottom-width: 0; } + .bl-0-ns { + border-left-width: 0; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .bw0-m { + border-width: 0; } + .bw1-m { + border-width: 0.125rem; } + .bw2-m { + border-width: 0.25rem; } + .bw3-m { + border-width: 0.5rem; } + .bw4-m { + border-width: 1rem; } + .bw5-m { + border-width: 2rem; } + .bt-0-m { + border-top-width: 0; } + .br-0-m { + border-right-width: 0; } + .bb-0-m { + border-bottom-width: 0; } + .bl-0-m { + border-left-width: 0; } } + +@media screen and (min-width: 60em) { + .bw0-l { + border-width: 0; } + .bw1-l { + border-width: 0.125rem; } + .bw2-l { + border-width: 0.25rem; } + .bw3-l { + border-width: 0.5rem; } + .bw4-l { + border-width: 1rem; } + .bw5-l { + border-width: 2rem; } + .bt-0-l { + border-top-width: 0; } + .br-0-l { + border-right-width: 0; } + .bb-0-l { + border-bottom-width: 0; } + .bl-0-l { + border-left-width: 0; } } + +/* + + BOX-SHADOW + Docs: http://tachyons.io/docs/themes/box-shadow/ + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + + */ +.shadow-1 { + box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.2); } + +.shadow-2 { + box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.2); } + +.shadow-3 { + box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2); } + +.shadow-4 { + box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, 0.2); } + +.shadow-5 { + box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, 0.2); } + +@media screen and (min-width: 30em) { + .shadow-1-ns { + box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.2); } + .shadow-2-ns { + box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.2); } + .shadow-3-ns { + box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2); } + .shadow-4-ns { + box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, 0.2); } + .shadow-5-ns { + box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, 0.2); } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .shadow-1-m { + box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.2); } + .shadow-2-m { + box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.2); } + .shadow-3-m { + box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2); } + .shadow-4-m { + box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, 0.2); } + .shadow-5-m { + box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, 0.2); } } + +@media screen and (min-width: 60em) { + .shadow-1-l { + box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.2); } + .shadow-2-l { + box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.2); } + .shadow-3-l { + box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2); } + .shadow-4-l { + box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, 0.2); } + .shadow-5-l { + box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, 0.2); } } + +/* + + CODE + +*/ +.pre { + overflow-x: auto; + overflow-y: hidden; + overflow: scroll; } + +/* + + COORDINATES + Docs: http://tachyons.io/docs/layout/position/ + + Use in combination with the position module. + + Base: + top + bottom + right + left + + Modifiers: + -0 = literal value 0 + -1 = literal value 1 + -2 = literal value 2 + --1 = literal value -1 + --2 = literal value -2 + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.top-0 { + top: 0; } + +.right-0 { + right: 0; } + +.bottom-0 { + bottom: 0; } + +.left-0 { + left: 0; } + +.top-1 { + top: 1rem; } + +.right-1 { + right: 1rem; } + +.bottom-1 { + bottom: 1rem; } + +.left-1 { + left: 1rem; } + +.top-2 { + top: 2rem; } + +.right-2 { + right: 2rem; } + +.bottom-2 { + bottom: 2rem; } + +.left-2 { + left: 2rem; } + +.top--1 { + top: -1rem; } + +.right--1 { + right: -1rem; } + +.bottom--1 { + bottom: -1rem; } + +.left--1 { + left: -1rem; } + +.top--2 { + top: -2rem; } + +.right--2 { + right: -2rem; } + +.bottom--2 { + bottom: -2rem; } + +.left--2 { + left: -2rem; } + +.absolute--fill { + top: 0; + right: 0; + bottom: 0; + left: 0; } + +@media screen and (min-width: 30em) { + .top-0-ns { + top: 0; } + .left-0-ns { + left: 0; } + .right-0-ns { + right: 0; } + .bottom-0-ns { + bottom: 0; } + .top-1-ns { + top: 1rem; } + .left-1-ns { + left: 1rem; } + .right-1-ns { + right: 1rem; } + .bottom-1-ns { + bottom: 1rem; } + .top-2-ns { + top: 2rem; } + .left-2-ns { + left: 2rem; } + .right-2-ns { + right: 2rem; } + .bottom-2-ns { + bottom: 2rem; } + .top--1-ns { + top: -1rem; } + .right--1-ns { + right: -1rem; } + .bottom--1-ns { + bottom: -1rem; } + .left--1-ns { + left: -1rem; } + .top--2-ns { + top: -2rem; } + .right--2-ns { + right: -2rem; } + .bottom--2-ns { + bottom: -2rem; } + .left--2-ns { + left: -2rem; } + .absolute--fill-ns { + top: 0; + right: 0; + bottom: 0; + left: 0; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .top-0-m { + top: 0; } + .left-0-m { + left: 0; } + .right-0-m { + right: 0; } + .bottom-0-m { + bottom: 0; } + .top-1-m { + top: 1rem; } + .left-1-m { + left: 1rem; } + .right-1-m { + right: 1rem; } + .bottom-1-m { + bottom: 1rem; } + .top-2-m { + top: 2rem; } + .left-2-m { + left: 2rem; } + .right-2-m { + right: 2rem; } + .bottom-2-m { + bottom: 2rem; } + .top--1-m { + top: -1rem; } + .right--1-m { + right: -1rem; } + .bottom--1-m { + bottom: -1rem; } + .left--1-m { + left: -1rem; } + .top--2-m { + top: -2rem; } + .right--2-m { + right: -2rem; } + .bottom--2-m { + bottom: -2rem; } + .left--2-m { + left: -2rem; } + .absolute--fill-m { + top: 0; + right: 0; + bottom: 0; + left: 0; } } + +@media screen and (min-width: 60em) { + .top-0-l { + top: 0; } + .left-0-l { + left: 0; } + .right-0-l { + right: 0; } + .bottom-0-l { + bottom: 0; } + .top-1-l { + top: 1rem; } + .left-1-l { + left: 1rem; } + .right-1-l { + right: 1rem; } + .bottom-1-l { + bottom: 1rem; } + .top-2-l { + top: 2rem; } + .left-2-l { + left: 2rem; } + .right-2-l { + right: 2rem; } + .bottom-2-l { + bottom: 2rem; } + .top--1-l { + top: -1rem; } + .right--1-l { + right: -1rem; } + .bottom--1-l { + bottom: -1rem; } + .left--1-l { + left: -1rem; } + .top--2-l { + top: -2rem; } + .right--2-l { + right: -2rem; } + .bottom--2-l { + bottom: -2rem; } + .left--2-l { + left: -2rem; } + .absolute--fill-l { + top: 0; + right: 0; + bottom: 0; + left: 0; } } + +/* + + CLEARFIX + http://tachyons.io/docs/layout/clearfix/ + +*/ +/* Nicolas Gallaghers Clearfix solution + Ref: http://nicolasgallagher.com/micro-clearfix-hack/ */ +.cf:before, +.cf:after { + content: " "; + display: table; } + +.cf:after { + clear: both; } + +.cf { + *zoom: 1; } + +.cl { + clear: left; } + +.cr { + clear: right; } + +.cb { + clear: both; } + +.cn { + clear: none; } + +@media screen and (min-width: 30em) { + .cl-ns { + clear: left; } + .cr-ns { + clear: right; } + .cb-ns { + clear: both; } + .cn-ns { + clear: none; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .cl-m { + clear: left; } + .cr-m { + clear: right; } + .cb-m { + clear: both; } + .cn-m { + clear: none; } } + +@media screen and (min-width: 60em) { + .cl-l { + clear: left; } + .cr-l { + clear: right; } + .cb-l { + clear: both; } + .cn-l { + clear: none; } } + +/* + + DISPLAY + Docs: http://tachyons.io/docs/layout/display + + Base: + d = display + + Modifiers: + n = none + b = block + ib = inline-block + it = inline-table + t = table + tc = table-cell + tr = table-row + tcol = table-column + tcolg = table-column-group + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.dn { + display: none; } + +.di { + display: inline; } + +.db { + display: block; } + +.dib { + display: inline-block; } + +.dit { + display: inline-table; } + +.dt { + display: table; } + +.dtc { + display: table-cell; } + +.dt-row { + display: table-row; } + +.dt-row-group { + display: table-row-group; } + +.dt-column { + display: table-column; } + +.dt-column-group { + display: table-column-group; } + +/* + This will set table to full width and then + all cells will be equal width +*/ +.dt--fixed { + table-layout: fixed; + width: 100%; } + +@media screen and (min-width: 30em) { + .dn-ns { + display: none; } + .di-ns { + display: inline; } + .db-ns { + display: block; } + .dib-ns { + display: inline-block; } + .dit-ns { + display: inline-table; } + .dt-ns { + display: table; } + .dtc-ns { + display: table-cell; } + .dt-row-ns { + display: table-row; } + .dt-row-group-ns { + display: table-row-group; } + .dt-column-ns { + display: table-column; } + .dt-column-group-ns { + display: table-column-group; } + .dt--fixed-ns { + table-layout: fixed; + width: 100%; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .dn-m { + display: none; } + .di-m { + display: inline; } + .db-m { + display: block; } + .dib-m { + display: inline-block; } + .dit-m { + display: inline-table; } + .dt-m { + display: table; } + .dtc-m { + display: table-cell; } + .dt-row-m { + display: table-row; } + .dt-row-group-m { + display: table-row-group; } + .dt-column-m { + display: table-column; } + .dt-column-group-m { + display: table-column-group; } + .dt--fixed-m { + table-layout: fixed; + width: 100%; } } + +@media screen and (min-width: 60em) { + .dn-l { + display: none; } + .di-l { + display: inline; } + .db-l { + display: block; } + .dib-l { + display: inline-block; } + .dit-l { + display: inline-table; } + .dt-l { + display: table; } + .dtc-l { + display: table-cell; } + .dt-row-l { + display: table-row; } + .dt-row-group-l { + display: table-row-group; } + .dt-column-l { + display: table-column; } + .dt-column-group-l { + display: table-column-group; } + .dt--fixed-l { + table-layout: fixed; + width: 100%; } } + +/* + + FLEXBOX + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.flex { + display: flex; } + +.inline-flex { + display: inline-flex; } + +/* 1. Fix for Chrome 44 bug. + * https://code.google.com/p/chromium/issues/detail?id=506893 */ +.flex-auto { + flex: 1 1 auto; + min-width: 0; + /* 1 */ + min-height: 0; + /* 1 */ } + +.flex-none { + flex: none; } + +.flex-column { + flex-direction: column; } + +.flex-row { + flex-direction: row; } + +.flex-wrap { + flex-wrap: wrap; } + +.flex-nowrap { + flex-wrap: nowrap; } + +.flex-wrap-reverse { + flex-wrap: wrap-reverse; } + +.flex-column-reverse { + flex-direction: column-reverse; } + +.flex-row-reverse { + flex-direction: row-reverse; } + +.items-start { + align-items: flex-start; } + +.items-end { + align-items: flex-end; } + +.items-center { + align-items: center; } + +.items-baseline { + align-items: baseline; } + +.items-stretch { + align-items: stretch; } + +.self-start { + align-self: flex-start; } + +.self-end { + align-self: flex-end; } + +.self-center { + align-self: center; } + +.self-baseline { + align-self: baseline; } + +.self-stretch { + align-self: stretch; } + +.justify-start { + justify-content: flex-start; } + +.justify-end { + justify-content: flex-end; } + +.justify-center { + justify-content: center; } + +.justify-between { + justify-content: space-between; } + +.justify-around { + justify-content: space-around; } + +.content-start { + align-content: flex-start; } + +.content-end { + align-content: flex-end; } + +.content-center { + align-content: center; } + +.content-between { + align-content: space-between; } + +.content-around { + align-content: space-around; } + +.content-stretch { + align-content: stretch; } + +.order-0 { + order: 0; } + +.order-1 { + order: 1; } + +.order-2 { + order: 2; } + +.order-3 { + order: 3; } + +.order-4 { + order: 4; } + +.order-5 { + order: 5; } + +.order-6 { + order: 6; } + +.order-7 { + order: 7; } + +.order-8 { + order: 8; } + +.order-last { + order: 99999; } + +.flex-grow-0 { + flex-grow: 0; } + +.flex-grow-1 { + flex-grow: 1; } + +.flex-shrink-0 { + flex-shrink: 0; } + +.flex-shrink-1 { + flex-shrink: 1; } + +@media screen and (min-width: 30em) { + .flex-ns { + display: flex; } + .inline-flex-ns { + display: inline-flex; } + .flex-auto-ns { + flex: 1 1 auto; + min-width: 0; + /* 1 */ + min-height: 0; + /* 1 */ } + .flex-none-ns { + flex: none; } + .flex-column-ns { + flex-direction: column; } + .flex-row-ns { + flex-direction: row; } + .flex-wrap-ns { + flex-wrap: wrap; } + .flex-nowrap-ns { + flex-wrap: nowrap; } + .flex-wrap-reverse-ns { + flex-wrap: wrap-reverse; } + .flex-column-reverse-ns { + flex-direction: column-reverse; } + .flex-row-reverse-ns { + flex-direction: row-reverse; } + .items-start-ns { + align-items: flex-start; } + .items-end-ns { + align-items: flex-end; } + .items-center-ns { + align-items: center; } + .items-baseline-ns { + align-items: baseline; } + .items-stretch-ns { + align-items: stretch; } + .self-start-ns { + align-self: flex-start; } + .self-end-ns { + align-self: flex-end; } + .self-center-ns { + align-self: center; } + .self-baseline-ns { + align-self: baseline; } + .self-stretch-ns { + align-self: stretch; } + .justify-start-ns { + justify-content: flex-start; } + .justify-end-ns { + justify-content: flex-end; } + .justify-center-ns { + justify-content: center; } + .justify-between-ns { + justify-content: space-between; } + .justify-around-ns { + justify-content: space-around; } + .content-start-ns { + align-content: flex-start; } + .content-end-ns { + align-content: flex-end; } + .content-center-ns { + align-content: center; } + .content-between-ns { + align-content: space-between; } + .content-around-ns { + align-content: space-around; } + .content-stretch-ns { + align-content: stretch; } + .order-0-ns { + order: 0; } + .order-1-ns { + order: 1; } + .order-2-ns { + order: 2; } + .order-3-ns { + order: 3; } + .order-4-ns { + order: 4; } + .order-5-ns { + order: 5; } + .order-6-ns { + order: 6; } + .order-7-ns { + order: 7; } + .order-8-ns { + order: 8; } + .order-last-ns { + order: 99999; } + .flex-grow-0-ns { + flex-grow: 0; } + .flex-grow-1-ns { + flex-grow: 1; } + .flex-shrink-0-ns { + flex-shrink: 0; } + .flex-shrink-1-ns { + flex-shrink: 1; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .flex-m { + display: flex; } + .inline-flex-m { + display: inline-flex; } + .flex-auto-m { + flex: 1 1 auto; + min-width: 0; + /* 1 */ + min-height: 0; + /* 1 */ } + .flex-none-m { + flex: none; } + .flex-column-m { + flex-direction: column; } + .flex-row-m { + flex-direction: row; } + .flex-wrap-m { + flex-wrap: wrap; } + .flex-nowrap-m { + flex-wrap: nowrap; } + .flex-wrap-reverse-m { + flex-wrap: wrap-reverse; } + .flex-column-reverse-m { + flex-direction: column-reverse; } + .flex-row-reverse-m { + flex-direction: row-reverse; } + .items-start-m { + align-items: flex-start; } + .items-end-m { + align-items: flex-end; } + .items-center-m { + align-items: center; } + .items-baseline-m { + align-items: baseline; } + .items-stretch-m { + align-items: stretch; } + .self-start-m { + align-self: flex-start; } + .self-end-m { + align-self: flex-end; } + .self-center-m { + align-self: center; } + .self-baseline-m { + align-self: baseline; } + .self-stretch-m { + align-self: stretch; } + .justify-start-m { + justify-content: flex-start; } + .justify-end-m { + justify-content: flex-end; } + .justify-center-m { + justify-content: center; } + .justify-between-m { + justify-content: space-between; } + .justify-around-m { + justify-content: space-around; } + .content-start-m { + align-content: flex-start; } + .content-end-m { + align-content: flex-end; } + .content-center-m { + align-content: center; } + .content-between-m { + align-content: space-between; } + .content-around-m { + align-content: space-around; } + .content-stretch-m { + align-content: stretch; } + .order-0-m { + order: 0; } + .order-1-m { + order: 1; } + .order-2-m { + order: 2; } + .order-3-m { + order: 3; } + .order-4-m { + order: 4; } + .order-5-m { + order: 5; } + .order-6-m { + order: 6; } + .order-7-m { + order: 7; } + .order-8-m { + order: 8; } + .order-last-m { + order: 99999; } + .flex-grow-0-m { + flex-grow: 0; } + .flex-grow-1-m { + flex-grow: 1; } + .flex-shrink-0-m { + flex-shrink: 0; } + .flex-shrink-1-m { + flex-shrink: 1; } } + +@media screen and (min-width: 60em) { + .flex-l { + display: flex; } + .inline-flex-l { + display: inline-flex; } + .flex-auto-l { + flex: 1 1 auto; + min-width: 0; + /* 1 */ + min-height: 0; + /* 1 */ } + .flex-none-l { + flex: none; } + .flex-column-l { + flex-direction: column; } + .flex-row-l { + flex-direction: row; } + .flex-wrap-l { + flex-wrap: wrap; } + .flex-nowrap-l { + flex-wrap: nowrap; } + .flex-wrap-reverse-l { + flex-wrap: wrap-reverse; } + .flex-column-reverse-l { + flex-direction: column-reverse; } + .flex-row-reverse-l { + flex-direction: row-reverse; } + .items-start-l { + align-items: flex-start; } + .items-end-l { + align-items: flex-end; } + .items-center-l { + align-items: center; } + .items-baseline-l { + align-items: baseline; } + .items-stretch-l { + align-items: stretch; } + .self-start-l { + align-self: flex-start; } + .self-end-l { + align-self: flex-end; } + .self-center-l { + align-self: center; } + .self-baseline-l { + align-self: baseline; } + .self-stretch-l { + align-self: stretch; } + .justify-start-l { + justify-content: flex-start; } + .justify-end-l { + justify-content: flex-end; } + .justify-center-l { + justify-content: center; } + .justify-between-l { + justify-content: space-between; } + .justify-around-l { + justify-content: space-around; } + .content-start-l { + align-content: flex-start; } + .content-end-l { + align-content: flex-end; } + .content-center-l { + align-content: center; } + .content-between-l { + align-content: space-between; } + .content-around-l { + align-content: space-around; } + .content-stretch-l { + align-content: stretch; } + .order-0-l { + order: 0; } + .order-1-l { + order: 1; } + .order-2-l { + order: 2; } + .order-3-l { + order: 3; } + .order-4-l { + order: 4; } + .order-5-l { + order: 5; } + .order-6-l { + order: 6; } + .order-7-l { + order: 7; } + .order-8-l { + order: 8; } + .order-last-l { + order: 99999; } + .flex-grow-0-l { + flex-grow: 0; } + .flex-grow-1-l { + flex-grow: 1; } + .flex-shrink-0-l { + flex-shrink: 0; } + .flex-shrink-1-l { + flex-shrink: 1; } } + +/* + + FLOATS + http://tachyons.io/docs/layout/floats/ + + 1. Floated elements are automatically rendered as block level elements. + Setting floats to display inline will fix the double margin bug in + ie6. You know... just in case. + + 2. Don't forget to clearfix your floats with .cf + + Base: + f = float + + Modifiers: + l = left + r = right + n = none + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.fl { + float: left; + _display: inline; } + +.fr { + float: right; + _display: inline; } + +.fn { + float: none; } + +@media screen and (min-width: 30em) { + .fl-ns { + float: left; + _display: inline; } + .fr-ns { + float: right; + _display: inline; } + .fn-ns { + float: none; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .fl-m { + float: left; + _display: inline; } + .fr-m { + float: right; + _display: inline; } + .fn-m { + float: none; } } + +@media screen and (min-width: 60em) { + .fl-l { + float: left; + _display: inline; } + .fr-l { + float: right; + _display: inline; } + .fn-l { + float: none; } } + +/* + + FONT FAMILY GROUPS + Docs: http://tachyons.io/docs/typography/font-family/ + +*/ +.sans-serif { + font-family: -apple-system, BlinkMacSystemFont, "avenir next", avenir, helvetica, "helvetica neue", ubuntu, roboto, noto, "segoe ui", arial, sans-serif; } + +.serif { + font-family: georgia, serif; } + +.system-sans-serif { + font-family: sans-serif; } + +.system-serif { + font-family: serif; } + +/* Monospaced Typefaces (for code) */ +/* From http://cssfontstack.com */ +code, .code { + font-family: Consolas, monaco, monospace; } + +.courier { + font-family: 'Courier Next', courier, monospace; } + +/* Sans-Serif Typefaces */ +.helvetica { + font-family: 'helvetica neue', helvetica, sans-serif; } + +.avenir { + font-family: 'avenir next', avenir, sans-serif; } + +/* Serif Typefaces */ +.athelas { + font-family: athelas, georgia, serif; } + +.georgia { + font-family: georgia, serif; } + +.times { + font-family: times, serif; } + +.bodoni { + font-family: "Bodoni MT", serif; } + +.calisto { + font-family: "Calisto MT", serif; } + +.garamond { + font-family: garamond, serif; } + +.baskerville { + font-family: baskerville, serif; } + +/* + + FONT STYLE + Docs: http://tachyons.io/docs/typography/font-style/ + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.i { + font-style: italic; } + +.fs-normal { + font-style: normal; } + +@media screen and (min-width: 30em) { + .i-ns { + font-style: italic; } + .fs-normal-ns { + font-style: normal; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .i-m { + font-style: italic; } + .fs-normal-m { + font-style: normal; } } + +@media screen and (min-width: 60em) { + .i-l { + font-style: italic; } + .fs-normal-l { + font-style: normal; } } + +/* + + FONT WEIGHT + Docs: http://tachyons.io/docs/typography/font-weight/ + + Base + fw = font-weight + + Modifiers: + 1 = literal value 100 + 2 = literal value 200 + 3 = literal value 300 + 4 = literal value 400 + 5 = literal value 500 + 6 = literal value 600 + 7 = literal value 700 + 8 = literal value 800 + 9 = literal value 900 + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.normal { + font-weight: normal; } + +.b { + font-weight: bold; } + +.fw1 { + font-weight: 100; } + +.fw2 { + font-weight: 200; } + +.fw3 { + font-weight: 300; } + +.fw4 { + font-weight: 400; } + +.fw5 { + font-weight: 500; } + +.fw6 { + font-weight: 600; } + +.fw7 { + font-weight: 700; } + +.fw8 { + font-weight: 800; } + +.fw9 { + font-weight: 900; } + +@media screen and (min-width: 30em) { + .normal-ns { + font-weight: normal; } + .b-ns { + font-weight: bold; } + .fw1-ns { + font-weight: 100; } + .fw2-ns { + font-weight: 200; } + .fw3-ns { + font-weight: 300; } + .fw4-ns { + font-weight: 400; } + .fw5-ns { + font-weight: 500; } + .fw6-ns { + font-weight: 600; } + .fw7-ns { + font-weight: 700; } + .fw8-ns { + font-weight: 800; } + .fw9-ns { + font-weight: 900; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .normal-m { + font-weight: normal; } + .b-m { + font-weight: bold; } + .fw1-m { + font-weight: 100; } + .fw2-m { + font-weight: 200; } + .fw3-m { + font-weight: 300; } + .fw4-m { + font-weight: 400; } + .fw5-m { + font-weight: 500; } + .fw6-m { + font-weight: 600; } + .fw7-m { + font-weight: 700; } + .fw8-m { + font-weight: 800; } + .fw9-m { + font-weight: 900; } } + +@media screen and (min-width: 60em) { + .normal-l { + font-weight: normal; } + .b-l { + font-weight: bold; } + .fw1-l { + font-weight: 100; } + .fw2-l { + font-weight: 200; } + .fw3-l { + font-weight: 300; } + .fw4-l { + font-weight: 400; } + .fw5-l { + font-weight: 500; } + .fw6-l { + font-weight: 600; } + .fw7-l { + font-weight: 700; } + .fw8-l { + font-weight: 800; } + .fw9-l { + font-weight: 900; } } + +/* + + FORMS + +*/ +.input-reset { + -webkit-appearance: none; + -moz-appearance: none; } + +.button-reset::-moz-focus-inner, +.input-reset::-moz-focus-inner { + border: 0; + padding: 0; } + +/* + + HEIGHTS + Docs: http://tachyons.io/docs/layout/heights/ + + Base: + h = height + min-h = min-height + min-vh = min-height vertical screen height + vh = vertical screen height + + Modifiers + 1 = 1st step in height scale + 2 = 2nd step in height scale + 3 = 3rd step in height scale + 4 = 4th step in height scale + 5 = 5th step in height scale + + -25 = literal value 25% + -50 = literal value 50% + -75 = literal value 75% + -100 = literal value 100% + + -auto = string value of auto + -inherit = string value of inherit + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +/* Height Scale */ +.h1 { + height: 1rem; } + +.h2 { + height: 2rem; } + +.h3 { + height: 4rem; } + +.h4 { + height: 8rem; } + +.h5 { + height: 16rem; } + +/* Height Percentages - Based off of height of parent */ +.h-25 { + height: 25%; } + +.h-50 { + height: 50%; } + +.h-75 { + height: 75%; } + +.h-100 { + height: 100%; } + +.min-h-100 { + min-height: 100%; } + +/* Screen Height Percentage */ +.vh-25 { + height: 25vh; } + +.vh-50 { + height: 50vh; } + +.vh-75 { + height: 75vh; } + +.vh-100 { + height: 100vh; } + +.min-vh-100 { + min-height: 100vh; } + +/* String Properties */ +.h-auto { + height: auto; } + +.h-inherit { + height: inherit; } + +@media screen and (min-width: 30em) { + .h1-ns { + height: 1rem; } + .h2-ns { + height: 2rem; } + .h3-ns { + height: 4rem; } + .h4-ns { + height: 8rem; } + .h5-ns { + height: 16rem; } + .h-25-ns { + height: 25%; } + .h-50-ns { + height: 50%; } + .h-75-ns { + height: 75%; } + .h-100-ns { + height: 100%; } + .min-h-100-ns { + min-height: 100%; } + .vh-25-ns { + height: 25vh; } + .vh-50-ns { + height: 50vh; } + .vh-75-ns { + height: 75vh; } + .vh-100-ns { + height: 100vh; } + .min-vh-100-ns { + min-height: 100vh; } + .h-auto-ns { + height: auto; } + .h-inherit-ns { + height: inherit; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .h1-m { + height: 1rem; } + .h2-m { + height: 2rem; } + .h3-m { + height: 4rem; } + .h4-m { + height: 8rem; } + .h5-m { + height: 16rem; } + .h-25-m { + height: 25%; } + .h-50-m { + height: 50%; } + .h-75-m { + height: 75%; } + .h-100-m { + height: 100%; } + .min-h-100-m { + min-height: 100%; } + .vh-25-m { + height: 25vh; } + .vh-50-m { + height: 50vh; } + .vh-75-m { + height: 75vh; } + .vh-100-m { + height: 100vh; } + .min-vh-100-m { + min-height: 100vh; } + .h-auto-m { + height: auto; } + .h-inherit-m { + height: inherit; } } + +@media screen and (min-width: 60em) { + .h1-l { + height: 1rem; } + .h2-l { + height: 2rem; } + .h3-l { + height: 4rem; } + .h4-l { + height: 8rem; } + .h5-l { + height: 16rem; } + .h-25-l { + height: 25%; } + .h-50-l { + height: 50%; } + .h-75-l { + height: 75%; } + .h-100-l { + height: 100%; } + .min-h-100-l { + min-height: 100%; } + .vh-25-l { + height: 25vh; } + .vh-50-l { + height: 50vh; } + .vh-75-l { + height: 75vh; } + .vh-100-l { + height: 100vh; } + .min-vh-100-l { + min-height: 100vh; } + .h-auto-l { + height: auto; } + .h-inherit-l { + height: inherit; } } + +/* + + LETTER SPACING + Docs: http://tachyons.io/docs/typography/tracking/ + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.tracked { + letter-spacing: 0.1em; } + +.tracked-tight { + letter-spacing: -0.05em; } + +.tracked-mega { + letter-spacing: 0.25em; } + +@media screen and (min-width: 30em) { + .tracked-ns { + letter-spacing: 0.1em; } + .tracked-tight-ns { + letter-spacing: -0.05em; } + .tracked-mega-ns { + letter-spacing: 0.25em; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .tracked-m { + letter-spacing: 0.1em; } + .tracked-tight-m { + letter-spacing: -0.05em; } + .tracked-mega-m { + letter-spacing: 0.25em; } } + +@media screen and (min-width: 60em) { + .tracked-l { + letter-spacing: 0.1em; } + .tracked-tight-l { + letter-spacing: -0.05em; } + .tracked-mega-l { + letter-spacing: 0.25em; } } + +/* + + LINE HEIGHT / LEADING + Docs: http://tachyons.io/docs/typography/line-height + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.lh-solid { + line-height: 1; } + +.lh-title { + line-height: 1.25; } + +.lh-copy { + line-height: 1.5; } + +@media screen and (min-width: 30em) { + .lh-solid-ns { + line-height: 1; } + .lh-title-ns { + line-height: 1.25; } + .lh-copy-ns { + line-height: 1.5; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .lh-solid-m { + line-height: 1; } + .lh-title-m { + line-height: 1.25; } + .lh-copy-m { + line-height: 1.5; } } + +@media screen and (min-width: 60em) { + .lh-solid-l { + line-height: 1; } + .lh-title-l { + line-height: 1.25; } + .lh-copy-l { + line-height: 1.5; } } + +/* + + LINKS + Docs: http://tachyons.io/docs/elements/links/ + +*/ +.link { + text-decoration: none; + transition: color .15s ease-in; } + +.link:link, +.link:visited { + transition: color .15s ease-in; } + +.link:hover { + transition: color .15s ease-in; } + +.link:active { + transition: color .15s ease-in; } + +.link:focus { + transition: color .15s ease-in; + outline: 1px dotted currentColor; } + +/* + + LISTS + http://tachyons.io/docs/elements/lists/ + +*/ +.list { + list-style-type: none; } + +/* + + MAX WIDTHS + Docs: http://tachyons.io/docs/layout/max-widths/ + + Base: + mw = max-width + + Modifiers + 1 = 1st step in width scale + 2 = 2nd step in width scale + 3 = 3rd step in width scale + 4 = 4th step in width scale + 5 = 5th step in width scale + 6 = 6st step in width scale + 7 = 7nd step in width scale + 8 = 8rd step in width scale + 9 = 9th step in width scale + + -100 = literal value 100% + + -none = string value none + + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +/* Max Width Percentages */ +.mw-100 { + max-width: 100%; } + +/* Max Width Scale */ +.mw1 { + max-width: 1rem; } + +.mw2 { + max-width: 2rem; } + +.mw3 { + max-width: 4rem; } + +.mw4 { + max-width: 8rem; } + +.mw5 { + max-width: 16rem; } + +.mw6 { + max-width: 32rem; } + +.mw7 { + max-width: 48rem; } + +.mw8 { + max-width: 64rem; } + +.mw9 { + max-width: 96rem; } + +/* Max Width String Properties */ +.mw-none { + max-width: none; } + +@media screen and (min-width: 30em) { + .mw-100-ns { + max-width: 100%; } + .mw1-ns { + max-width: 1rem; } + .mw2-ns { + max-width: 2rem; } + .mw3-ns { + max-width: 4rem; } + .mw4-ns { + max-width: 8rem; } + .mw5-ns { + max-width: 16rem; } + .mw6-ns { + max-width: 32rem; } + .mw7-ns { + max-width: 48rem; } + .mw8-ns { + max-width: 64rem; } + .mw9-ns { + max-width: 96rem; } + .mw-none-ns { + max-width: none; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .mw-100-m { + max-width: 100%; } + .mw1-m { + max-width: 1rem; } + .mw2-m { + max-width: 2rem; } + .mw3-m { + max-width: 4rem; } + .mw4-m { + max-width: 8rem; } + .mw5-m { + max-width: 16rem; } + .mw6-m { + max-width: 32rem; } + .mw7-m { + max-width: 48rem; } + .mw8-m { + max-width: 64rem; } + .mw9-m { + max-width: 96rem; } + .mw-none-m { + max-width: none; } } + +@media screen and (min-width: 60em) { + .mw-100-l { + max-width: 100%; } + .mw1-l { + max-width: 1rem; } + .mw2-l { + max-width: 2rem; } + .mw3-l { + max-width: 4rem; } + .mw4-l { + max-width: 8rem; } + .mw5-l { + max-width: 16rem; } + .mw6-l { + max-width: 32rem; } + .mw7-l { + max-width: 48rem; } + .mw8-l { + max-width: 64rem; } + .mw9-l { + max-width: 96rem; } + .mw-none-l { + max-width: none; } } + +/* + + WIDTHS + Docs: http://tachyons.io/docs/layout/widths/ + + Base: + w = width + + Modifiers + 1 = 1st step in width scale + 2 = 2nd step in width scale + 3 = 3rd step in width scale + 4 = 4th step in width scale + 5 = 5th step in width scale + + -10 = literal value 10% + -20 = literal value 20% + -25 = literal value 25% + -30 = literal value 30% + -33 = literal value 33% + -34 = literal value 34% + -40 = literal value 40% + -50 = literal value 50% + -60 = literal value 60% + -70 = literal value 70% + -75 = literal value 75% + -80 = literal value 80% + -90 = literal value 90% + -100 = literal value 100% + + -third = 100% / 3 (Not supported in opera mini or IE8) + -two-thirds = 100% / 1.5 (Not supported in opera mini or IE8) + -auto = string value auto + + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + + */ +/* Width Scale */ +.w1 { + width: 1rem; } + +.w2, .project-carousel-container .project-carousel-button.active { + width: 2rem; } + +.w3 { + width: 4rem; } + +.w4 { + width: 8rem; } + +.w5 { + width: 16rem; } + +.w-10 { + width: 10%; } + +.w-20 { + width: 20%; } + +.w-25 { + width: 25%; } + +.w-30 { + width: 30%; } + +.w-33 { + width: 33%; } + +.w-34 { + width: 34%; } + +.w-40 { + width: 40%; } + +.w-50 { + width: 50%; } + +.w-60 { + width: 60%; } + +.w-70 { + width: 70%; } + +.w-75 { + width: 75%; } + +.w-80 { + width: 80%; } + +.w-90 { + width: 90%; } + +.w-100 { + width: 100%; } + +.w-third { + width: 33.33333%; } + +.w-two-thirds { + width: 66.66667%; } + +.w-auto { + width: auto; } + +@media screen and (min-width: 30em) { + .w1-ns { + width: 1rem; } + .w2-ns { + width: 2rem; } + .w3-ns { + width: 4rem; } + .w4-ns { + width: 8rem; } + .w5-ns { + width: 16rem; } + .w-10-ns { + width: 10%; } + .w-20-ns { + width: 20%; } + .w-25-ns { + width: 25%; } + .w-30-ns { + width: 30%; } + .w-33-ns { + width: 33%; } + .w-34-ns { + width: 34%; } + .w-40-ns { + width: 40%; } + .w-50-ns { + width: 50%; } + .w-60-ns { + width: 60%; } + .w-70-ns { + width: 70%; } + .w-75-ns { + width: 75%; } + .w-80-ns { + width: 80%; } + .w-90-ns { + width: 90%; } + .w-100-ns { + width: 100%; } + .w-third-ns { + width: 33.33333%; } + .w-two-thirds-ns { + width: 66.66667%; } + .w-auto-ns { + width: auto; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .w1-m { + width: 1rem; } + .w2-m { + width: 2rem; } + .w3-m { + width: 4rem; } + .w4-m { + width: 8rem; } + .w5-m { + width: 16rem; } + .w-10-m { + width: 10%; } + .w-20-m { + width: 20%; } + .w-25-m { + width: 25%; } + .w-30-m { + width: 30%; } + .w-33-m { + width: 33%; } + .w-34-m { + width: 34%; } + .w-40-m { + width: 40%; } + .w-50-m { + width: 50%; } + .w-60-m { + width: 60%; } + .w-70-m { + width: 70%; } + .w-75-m { + width: 75%; } + .w-80-m { + width: 80%; } + .w-90-m { + width: 90%; } + .w-100-m { + width: 100%; } + .w-third-m { + width: 33.33333%; } + .w-two-thirds-m { + width: 66.66667%; } + .w-auto-m { + width: auto; } } + +@media screen and (min-width: 60em) { + .w1-l { + width: 1rem; } + .w2-l { + width: 2rem; } + .w3-l { + width: 4rem; } + .w4-l { + width: 8rem; } + .w5-l { + width: 16rem; } + .w-10-l { + width: 10%; } + .w-20-l { + width: 20%; } + .w-25-l { + width: 25%; } + .w-30-l { + width: 30%; } + .w-33-l { + width: 33%; } + .w-34-l { + width: 34%; } + .w-40-l { + width: 40%; } + .w-50-l { + width: 50%; } + .w-60-l { + width: 60%; } + .w-70-l { + width: 70%; } + .w-75-l { + width: 75%; } + .w-80-l { + width: 80%; } + .w-90-l { + width: 90%; } + .w-100-l { + width: 100%; } + .w-third-l { + width: 33.33333%; } + .w-two-thirds-l { + width: 66.66667%; } + .w-auto-l { + width: auto; } } + +/* + + OVERFLOW + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + + */ +.overflow-visible { + overflow: visible; } + +.overflow-hidden { + overflow: hidden; } + +.overflow-scroll { + overflow: scroll; } + +.overflow-auto { + overflow: auto; } + +.overflow-x-visible { + overflow-x: visible; } + +.overflow-x-hidden { + overflow-x: hidden; } + +.overflow-x-scroll { + overflow-x: scroll; } + +.overflow-x-auto { + overflow-x: auto; } + +.overflow-y-visible { + overflow-y: visible; } + +.overflow-y-hidden { + overflow-y: hidden; } + +.overflow-y-scroll { + overflow-y: scroll; } + +.overflow-y-auto { + overflow-y: auto; } + +@media screen and (min-width: 30em) { + .overflow-visible-ns { + overflow: visible; } + .overflow-hidden-ns { + overflow: hidden; } + .overflow-scroll-ns { + overflow: scroll; } + .overflow-auto-ns { + overflow: auto; } + .overflow-x-visible-ns { + overflow-x: visible; } + .overflow-x-hidden-ns { + overflow-x: hidden; } + .overflow-x-scroll-ns { + overflow-x: scroll; } + .overflow-x-auto-ns { + overflow-x: auto; } + .overflow-y-visible-ns { + overflow-y: visible; } + .overflow-y-hidden-ns { + overflow-y: hidden; } + .overflow-y-scroll-ns { + overflow-y: scroll; } + .overflow-y-auto-ns { + overflow-y: auto; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .overflow-visible-m { + overflow: visible; } + .overflow-hidden-m { + overflow: hidden; } + .overflow-scroll-m { + overflow: scroll; } + .overflow-auto-m { + overflow: auto; } + .overflow-x-visible-m { + overflow-x: visible; } + .overflow-x-hidden-m { + overflow-x: hidden; } + .overflow-x-scroll-m { + overflow-x: scroll; } + .overflow-x-auto-m { + overflow-x: auto; } + .overflow-y-visible-m { + overflow-y: visible; } + .overflow-y-hidden-m { + overflow-y: hidden; } + .overflow-y-scroll-m { + overflow-y: scroll; } + .overflow-y-auto-m { + overflow-y: auto; } } + +@media screen and (min-width: 60em) { + .overflow-visible-l { + overflow: visible; } + .overflow-hidden-l { + overflow: hidden; } + .overflow-scroll-l { + overflow: scroll; } + .overflow-auto-l { + overflow: auto; } + .overflow-x-visible-l { + overflow-x: visible; } + .overflow-x-hidden-l { + overflow-x: hidden; } + .overflow-x-scroll-l { + overflow-x: scroll; } + .overflow-x-auto-l { + overflow-x: auto; } + .overflow-y-visible-l { + overflow-y: visible; } + .overflow-y-hidden-l { + overflow-y: hidden; } + .overflow-y-scroll-l { + overflow-y: scroll; } + .overflow-y-auto-l { + overflow-y: auto; } } + +/* + + POSITIONING + Docs: http://tachyons.io/docs/layout/position/ + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.static { + position: static; } + +.relative { + position: relative; } + +.absolute { + position: absolute; } + +.fixed { + position: fixed; } + +@media screen and (min-width: 30em) { + .static-ns { + position: static; } + .relative-ns { + position: relative; } + .absolute-ns { + position: absolute; } + .fixed-ns { + position: fixed; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .static-m { + position: static; } + .relative-m { + position: relative; } + .absolute-m { + position: absolute; } + .fixed-m { + position: fixed; } } + +@media screen and (min-width: 60em) { + .static-l { + position: static; } + .relative-l { + position: relative; } + .absolute-l { + position: absolute; } + .fixed-l { + position: fixed; } } + +/* + + OPACITY + Docs: http://tachyons.io/docs/themes/opacity/ + +*/ +.o-100 { + opacity: 1; } + +.o-90 { + opacity: .9; } + +.o-80 { + opacity: .8; } + +.o-70 { + opacity: .7; } + +.o-60 { + opacity: .6; } + +.o-50 { + opacity: .5; } + +.o-40 { + opacity: .4; } + +.o-30 { + opacity: .3; } + +.o-20 { + opacity: .2; } + +.o-10 { + opacity: .1; } + +.o-05 { + opacity: .05; } + +.o-025 { + opacity: .025; } + +.o-0 { + opacity: 0; } + +/* + + ROTATIONS + +*/ +.rotate-45 { + transform: rotate(45deg); } + +.rotate-90 { + transform: rotate(90deg); } + +.rotate-135 { + transform: rotate(135deg); } + +.rotate-180 { + transform: rotate(180deg); } + +.rotate-225 { + transform: rotate(225deg); } + +.rotate-270 { + transform: rotate(270deg); } + +.rotate-315 { + transform: rotate(315deg); } + +@media screen and (min-width: 30em) { + .rotate-45-ns { + transform: rotate(45deg); } + .rotate-90-ns { + transform: rotate(90deg); } + .rotate-135-ns { + transform: rotate(135deg); } + .rotate-180-ns { + transform: rotate(180deg); } + .rotate-225-ns { + transform: rotate(225deg); } + .rotate-270-ns { + transform: rotate(270deg); } + .rotate-315-ns { + transform: rotate(315deg); } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .rotate-45-m { + transform: rotate(45deg); } + .rotate-90-m { + transform: rotate(90deg); } + .rotate-135-m { + transform: rotate(135deg); } + .rotate-180-m { + transform: rotate(180deg); } + .rotate-225-m { + transform: rotate(225deg); } + .rotate-270-m { + transform: rotate(270deg); } + .rotate-315-m { + transform: rotate(315deg); } } + +@media screen and (min-width: 60em) { + .rotate-45-l { + transform: rotate(45deg); } + .rotate-90-l { + transform: rotate(90deg); } + .rotate-135-l { + transform: rotate(135deg); } + .rotate-180-l { + transform: rotate(180deg); } + .rotate-225-l { + transform: rotate(225deg); } + .rotate-270-l { + transform: rotate(270deg); } + .rotate-315-l { + transform: rotate(315deg); } } + +/* + + SKINS + Docs: http://tachyons.io/docs/themes/skins/ + + Classes for setting foreground and background colors on elements. + If you haven't declared a border color, but set border on an element, it will + be set to the current text color. + +*/ +/* Text colors */ +.black-90 { + color: rgba(0, 0, 0, 0.9); } + +.black-80 { + color: rgba(0, 0, 0, 0.8); } + +.black-70 { + color: rgba(0, 0, 0, 0.7); } + +.black-60 { + color: rgba(0, 0, 0, 0.6); } + +.black-50 { + color: rgba(0, 0, 0, 0.5); } + +.black-40 { + color: rgba(0, 0, 0, 0.4); } + +.black-30 { + color: rgba(0, 0, 0, 0.3); } + +.black-20 { + color: rgba(0, 0, 0, 0.2); } + +.black-10 { + color: rgba(0, 0, 0, 0.1); } + +.black-05 { + color: rgba(0, 0, 0, 0.05); } + +.white-90 { + color: rgba(255, 255, 255, 0.9); } + +.white-80 { + color: rgba(255, 255, 255, 0.8); } + +.white-70 { + color: rgba(255, 255, 255, 0.7); } + +.white-60 { + color: rgba(255, 255, 255, 0.6); } + +.white-50 { + color: rgba(255, 255, 255, 0.5); } + +.white-40 { + color: rgba(255, 255, 255, 0.4); } + +.white-30 { + color: rgba(255, 255, 255, 0.3); } + +.white-20 { + color: rgba(255, 255, 255, 0.2); } + +.white-10 { + color: rgba(255, 255, 255, 0.1); } + +.black { + color: #000; } + +.near-black { + color: #111; } + +.dark-gray { + color: #333; } + +.mid-gray { + color: #555; } + +.gray { + color: #777; } + +.silver { + color: #999; } + +.light-silver { + color: #aaa; } + +.moon-gray { + color: #ccc; } + +.light-gray { + color: #eee; } + +.near-white { + color: #f4f4f4; } + +.white { + color: #fff; } + +.dark-red { + color: #e7040f; } + +.red { + color: #ff4136; } + +.light-red { + color: #ff725c; } + +.orange { + color: #ff6300; } + +.gold { + color: #ffb700; } + +.yellow { + color: #ffd700; } + +.light-yellow { + color: #fbf1a9; } + +.purple { + color: #5e2ca5; } + +.light-purple { + color: #a463f2; } + +.dark-pink { + color: #d5008f; } + +.hot-pink { + color: #ff41b4; } + +.pink { + color: #ff80cc; } + +.light-pink { + color: #ffa3d7; } + +.dark-green { + color: #137752; } + +.green { + color: #19a974; } + +.light-green { + color: #9eebcf; } + +.navy { + color: #001b44; } + +.dark-blue { + color: #00449e; } + +.blue { + color: #357edd; } + +.light-blue { + color: #96ccff; } + +.lightest-blue { + color: #cdecff; } + +.washed-blue { + color: #f6fffe; } + +.washed-green { + color: #e8fdf5; } + +.washed-yellow { + color: #fffceb; } + +.washed-red { + color: #ffdfdf; } + +.color-inherit { + color: inherit; } + +.bg-black-90 { + background-color: rgba(0, 0, 0, 0.9); } + +.bg-black-80 { + background-color: rgba(0, 0, 0, 0.8); } + +.bg-black-70 { + background-color: rgba(0, 0, 0, 0.7); } + +.bg-black-60 { + background-color: rgba(0, 0, 0, 0.6); } + +.bg-black-50 { + background-color: rgba(0, 0, 0, 0.5); } + +.bg-black-40 { + background-color: rgba(0, 0, 0, 0.4); } + +.bg-black-30 { + background-color: rgba(0, 0, 0, 0.3); } + +.bg-black-20 { + background-color: rgba(0, 0, 0, 0.2); } + +.bg-black-10 { + background-color: rgba(0, 0, 0, 0.1); } + +.bg-black-05 { + background-color: rgba(0, 0, 0, 0.05); } + +.bg-white-90 { + background-color: rgba(255, 255, 255, 0.9); } + +.bg-white-80 { + background-color: rgba(255, 255, 255, 0.8); } + +.bg-white-70 { + background-color: rgba(255, 255, 255, 0.7); } + +.bg-white-60 { + background-color: rgba(255, 255, 255, 0.6); } + +.bg-white-50 { + background-color: rgba(255, 255, 255, 0.5); } + +.bg-white-40 { + background-color: rgba(255, 255, 255, 0.4); } + +.bg-white-30 { + background-color: rgba(255, 255, 255, 0.3); } + +.bg-white-20 { + background-color: rgba(255, 255, 255, 0.2); } + +.bg-white-10 { + background-color: rgba(255, 255, 255, 0.1); } + +/* Background colors */ +.bg-black { + background-color: #000; } + +.bg-near-black { + background-color: #111; } + +.bg-dark-gray { + background-color: #333; } + +.bg-mid-gray { + background-color: #555; } + +.bg-gray { + background-color: #777; } + +.bg-silver { + background-color: #999; } + +.bg-light-silver { + background-color: #aaa; } + +.bg-moon-gray { + background-color: #ccc; } + +.bg-light-gray { + background-color: #eee; } + +.bg-near-white { + background-color: #f4f4f4; } + +.bg-white { + background-color: #fff; } + +.bg-transparent { + background-color: transparent; } + +.bg-dark-red { + background-color: #e7040f; } + +.bg-red { + background-color: #ff4136; } + +.bg-light-red { + background-color: #ff725c; } + +.bg-orange { + background-color: #ff6300; } + +.bg-gold { + background-color: #ffb700; } + +.bg-yellow { + background-color: #ffd700; } + +.bg-light-yellow { + background-color: #fbf1a9; } + +.bg-purple { + background-color: #5e2ca5; } + +.bg-light-purple { + background-color: #a463f2; } + +.bg-dark-pink { + background-color: #d5008f; } + +.bg-hot-pink { + background-color: #ff41b4; } + +.bg-pink { + background-color: #ff80cc; } + +.bg-light-pink { + background-color: #ffa3d7; } + +.bg-dark-green { + background-color: #137752; } + +.bg-green { + background-color: #19a974; } + +.bg-light-green { + background-color: #9eebcf; } + +.bg-navy { + background-color: #001b44; } + +.bg-dark-blue { + background-color: #00449e; } + +.bg-blue { + background-color: #357edd; } + +.bg-light-blue { + background-color: #96ccff; } + +.bg-lightest-blue { + background-color: #cdecff; } + +.bg-washed-blue { + background-color: #f6fffe; } + +.bg-washed-green { + background-color: #e8fdf5; } + +.bg-washed-yellow { + background-color: #fffceb; } + +.bg-washed-red { + background-color: #ffdfdf; } + +.bg-inherit { + background-color: inherit; } + +/* + + SKINS:PSEUDO + + Customize the color of an element when + it is focused or hovered over. + + */ +.hover-black:hover, +.hover-black:focus { + color: #000; } + +.hover-near-black:hover, +.hover-near-black:focus { + color: #111; } + +.hover-dark-gray:hover, +.hover-dark-gray:focus { + color: #333; } + +.hover-mid-gray:hover, +.hover-mid-gray:focus { + color: #555; } + +.hover-gray:hover, +.hover-gray:focus { + color: #777; } + +.hover-silver:hover, +.hover-silver:focus { + color: #999; } + +.hover-light-silver:hover, +.hover-light-silver:focus { + color: #aaa; } + +.hover-moon-gray:hover, +.hover-moon-gray:focus { + color: #ccc; } + +.hover-light-gray:hover, +.hover-light-gray:focus { + color: #eee; } + +.hover-near-white:hover, +.hover-near-white:focus { + color: #f4f4f4; } + +.hover-white:hover, +.hover-white:focus { + color: #fff; } + +.hover-black-90:hover, +.hover-black-90:focus { + color: rgba(0, 0, 0, 0.9); } + +.hover-black-80:hover, +.hover-black-80:focus { + color: rgba(0, 0, 0, 0.8); } + +.hover-black-70:hover, +.hover-black-70:focus { + color: rgba(0, 0, 0, 0.7); } + +.hover-black-60:hover, +.hover-black-60:focus { + color: rgba(0, 0, 0, 0.6); } + +.hover-black-50:hover, +.hover-black-50:focus { + color: rgba(0, 0, 0, 0.5); } + +.hover-black-40:hover, +.hover-black-40:focus { + color: rgba(0, 0, 0, 0.4); } + +.hover-black-30:hover, +.hover-black-30:focus { + color: rgba(0, 0, 0, 0.3); } + +.hover-black-20:hover, +.hover-black-20:focus { + color: rgba(0, 0, 0, 0.2); } + +.hover-black-10:hover, +.hover-black-10:focus { + color: rgba(0, 0, 0, 0.1); } + +.hover-white-90:hover, +.hover-white-90:focus { + color: rgba(255, 255, 255, 0.9); } + +.hover-white-80:hover, +.hover-white-80:focus { + color: rgba(255, 255, 255, 0.8); } + +.hover-white-70:hover, +.hover-white-70:focus { + color: rgba(255, 255, 255, 0.7); } + +.hover-white-60:hover, +.hover-white-60:focus { + color: rgba(255, 255, 255, 0.6); } + +.hover-white-50:hover, +.hover-white-50:focus { + color: rgba(255, 255, 255, 0.5); } + +.hover-white-40:hover, +.hover-white-40:focus { + color: rgba(255, 255, 255, 0.4); } + +.hover-white-30:hover, +.hover-white-30:focus { + color: rgba(255, 255, 255, 0.3); } + +.hover-white-20:hover, +.hover-white-20:focus { + color: rgba(255, 255, 255, 0.2); } + +.hover-white-10:hover, +.hover-white-10:focus { + color: rgba(255, 255, 255, 0.1); } + +.hover-inherit:hover, +.hover-inherit:focus { + color: inherit; } + +.hover-bg-black:hover, +.hover-bg-black:focus { + background-color: #000; } + +.hover-bg-near-black:hover, +.hover-bg-near-black:focus { + background-color: #111; } + +.hover-bg-dark-gray:hover, +.hover-bg-dark-gray:focus { + background-color: #333; } + +.hover-bg-mid-gray:hover, +.hover-bg-mid-gray:focus { + background-color: #555; } + +.hover-bg-gray:hover, +.hover-bg-gray:focus { + background-color: #777; } + +.hover-bg-silver:hover, +.hover-bg-silver:focus { + background-color: #999; } + +.hover-bg-light-silver:hover, +.hover-bg-light-silver:focus { + background-color: #aaa; } + +.hover-bg-moon-gray:hover, +.hover-bg-moon-gray:focus { + background-color: #ccc; } + +.hover-bg-light-gray:hover, +.hover-bg-light-gray:focus { + background-color: #eee; } + +.hover-bg-near-white:hover, +.hover-bg-near-white:focus { + background-color: #f4f4f4; } + +.hover-bg-white:hover, +.hover-bg-white:focus { + background-color: #fff; } + +.hover-bg-transparent:hover, +.hover-bg-transparent:focus { + background-color: transparent; } + +.hover-bg-black-90:hover, +.hover-bg-black-90:focus { + background-color: rgba(0, 0, 0, 0.9); } + +.hover-bg-black-80:hover, +.hover-bg-black-80:focus { + background-color: rgba(0, 0, 0, 0.8); } + +.hover-bg-black-70:hover, +.hover-bg-black-70:focus { + background-color: rgba(0, 0, 0, 0.7); } + +.hover-bg-black-60:hover, +.hover-bg-black-60:focus { + background-color: rgba(0, 0, 0, 0.6); } + +.hover-bg-black-50:hover, +.hover-bg-black-50:focus { + background-color: rgba(0, 0, 0, 0.5); } + +.hover-bg-black-40:hover, +.hover-bg-black-40:focus { + background-color: rgba(0, 0, 0, 0.4); } + +.hover-bg-black-30:hover, +.hover-bg-black-30:focus { + background-color: rgba(0, 0, 0, 0.3); } + +.hover-bg-black-20:hover, +.hover-bg-black-20:focus { + background-color: rgba(0, 0, 0, 0.2); } + +.hover-bg-black-10:hover, +.hover-bg-black-10:focus { + background-color: rgba(0, 0, 0, 0.1); } + +.hover-bg-white-90:hover, +.hover-bg-white-90:focus { + background-color: rgba(255, 255, 255, 0.9); } + +.hover-bg-white-80:hover, +.hover-bg-white-80:focus { + background-color: rgba(255, 255, 255, 0.8); } + +.hover-bg-white-70:hover, +.hover-bg-white-70:focus { + background-color: rgba(255, 255, 255, 0.7); } + +.hover-bg-white-60:hover, +.hover-bg-white-60:focus { + background-color: rgba(255, 255, 255, 0.6); } + +.hover-bg-white-50:hover, +.hover-bg-white-50:focus { + background-color: rgba(255, 255, 255, 0.5); } + +.hover-bg-white-40:hover, +.hover-bg-white-40:focus { + background-color: rgba(255, 255, 255, 0.4); } + +.hover-bg-white-30:hover, +.hover-bg-white-30:focus { + background-color: rgba(255, 255, 255, 0.3); } + +.hover-bg-white-20:hover, +.hover-bg-white-20:focus { + background-color: rgba(255, 255, 255, 0.2); } + +.hover-bg-white-10:hover, +.hover-bg-white-10:focus { + background-color: rgba(255, 255, 255, 0.1); } + +.hover-dark-red:hover, +.hover-dark-red:focus { + color: #e7040f; } + +.hover-red:hover, +.hover-red:focus { + color: #ff4136; } + +.hover-light-red:hover, +.hover-light-red:focus { + color: #ff725c; } + +.hover-orange:hover, +.hover-orange:focus { + color: #ff6300; } + +.hover-gold:hover, +.hover-gold:focus { + color: #ffb700; } + +.hover-yellow:hover, +.hover-yellow:focus { + color: #ffd700; } + +.hover-light-yellow:hover, +.hover-light-yellow:focus { + color: #fbf1a9; } + +.hover-purple:hover, +.hover-purple:focus { + color: #5e2ca5; } + +.hover-light-purple:hover, +.hover-light-purple:focus { + color: #a463f2; } + +.hover-dark-pink:hover, +.hover-dark-pink:focus { + color: #d5008f; } + +.hover-hot-pink:hover, +.hover-hot-pink:focus { + color: #ff41b4; } + +.hover-pink:hover, +.hover-pink:focus { + color: #ff80cc; } + +.hover-light-pink:hover, +.hover-light-pink:focus { + color: #ffa3d7; } + +.hover-dark-green:hover, +.hover-dark-green:focus { + color: #137752; } + +.hover-green:hover, +.hover-green:focus { + color: #19a974; } + +.hover-light-green:hover, +.hover-light-green:focus { + color: #9eebcf; } + +.hover-navy:hover, +.hover-navy:focus { + color: #001b44; } + +.hover-dark-blue:hover, +.hover-dark-blue:focus { + color: #00449e; } + +.hover-blue:hover, +.hover-blue:focus { + color: #357edd; } + +.hover-light-blue:hover, +.hover-light-blue:focus { + color: #96ccff; } + +.hover-lightest-blue:hover, +.hover-lightest-blue:focus { + color: #cdecff; } + +.hover-washed-blue:hover, +.hover-washed-blue:focus { + color: #f6fffe; } + +.hover-washed-green:hover, +.hover-washed-green:focus { + color: #e8fdf5; } + +.hover-washed-yellow:hover, +.hover-washed-yellow:focus { + color: #fffceb; } + +.hover-washed-red:hover, +.hover-washed-red:focus { + color: #ffdfdf; } + +.hover-bg-dark-red:hover, +.hover-bg-dark-red:focus { + background-color: #e7040f; } + +.hover-bg-red:hover, +.hover-bg-red:focus { + background-color: #ff4136; } + +.hover-bg-light-red:hover, +.hover-bg-light-red:focus { + background-color: #ff725c; } + +.hover-bg-orange:hover, +.hover-bg-orange:focus { + background-color: #ff6300; } + +.hover-bg-gold:hover, +.hover-bg-gold:focus { + background-color: #ffb700; } + +.hover-bg-yellow:hover, +.hover-bg-yellow:focus { + background-color: #ffd700; } + +.hover-bg-light-yellow:hover, +.hover-bg-light-yellow:focus { + background-color: #fbf1a9; } + +.hover-bg-purple:hover, +.hover-bg-purple:focus { + background-color: #5e2ca5; } + +.hover-bg-light-purple:hover, +.hover-bg-light-purple:focus { + background-color: #a463f2; } + +.hover-bg-dark-pink:hover, +.hover-bg-dark-pink:focus { + background-color: #d5008f; } + +.hover-bg-hot-pink:hover, +.hover-bg-hot-pink:focus { + background-color: #ff41b4; } + +.hover-bg-pink:hover, +.hover-bg-pink:focus { + background-color: #ff80cc; } + +.hover-bg-light-pink:hover, +.hover-bg-light-pink:focus { + background-color: #ffa3d7; } + +.hover-bg-dark-green:hover, +.hover-bg-dark-green:focus { + background-color: #137752; } + +.hover-bg-green:hover, +.hover-bg-green:focus { + background-color: #19a974; } + +.hover-bg-light-green:hover, +.hover-bg-light-green:focus { + background-color: #9eebcf; } + +.hover-bg-navy:hover, +.hover-bg-navy:focus { + background-color: #001b44; } + +.hover-bg-dark-blue:hover, +.hover-bg-dark-blue:focus { + background-color: #00449e; } + +.hover-bg-blue:hover, +.hover-bg-blue:focus { + background-color: #357edd; } + +.hover-bg-light-blue:hover, +.hover-bg-light-blue:focus { + background-color: #96ccff; } + +.hover-bg-lightest-blue:hover, +.hover-bg-lightest-blue:focus { + background-color: #cdecff; } + +.hover-bg-washed-blue:hover, +.hover-bg-washed-blue:focus { + background-color: #f6fffe; } + +.hover-bg-washed-green:hover, +.hover-bg-washed-green:focus { + background-color: #e8fdf5; } + +.hover-bg-washed-yellow:hover, +.hover-bg-washed-yellow:focus { + background-color: #fffceb; } + +.hover-bg-washed-red:hover, +.hover-bg-washed-red:focus { + background-color: #ffdfdf; } + +.hover-bg-inherit:hover, +.hover-bg-inherit:focus { + background-color: inherit; } + +/* Variables */ +/* + SPACING + Docs: http://tachyons.io/docs/layout/spacing/ + + An eight step powers of two scale ranging from 0 to 16rem. + + Base: + p = padding + m = margin + + Modifiers: + a = all + h = horizontal + v = vertical + t = top + r = right + b = bottom + l = left + + 0 = none + 1 = 1st step in spacing scale + 2 = 2nd step in spacing scale + 3 = 3rd step in spacing scale + 4 = 4th step in spacing scale + 5 = 5th step in spacing scale + 6 = 6th step in spacing scale + 7 = 7th step in spacing scale + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.pa0 { + padding: 0; } + +.pa1 { + padding: 0.25rem; } + +.pa2, header .menu-bar .items a, header .user-options a, .tab { + padding: 0.5rem; } + +.pa3, header #login-popup { + padding: 1rem; } + +.pa4 { + padding: 2rem; } + +.pa5 { + padding: 4rem; } + +.pa6 { + padding: 8rem; } + +.pa7 { + padding: 16rem; } + +.pl0 { + padding-left: 0; } + +.pl1 { + padding-left: 0.25rem; } + +.pl2 { + padding-left: 0.5rem; } + +.pl3 { + padding-left: 1rem; } + +.pl4 { + padding-left: 2rem; } + +.pl5 { + padding-left: 4rem; } + +.pl6 { + padding-left: 8rem; } + +.pl7 { + padding-left: 16rem; } + +.pr0 { + padding-right: 0; } + +.pr1 { + padding-right: 0.25rem; } + +.pr2 { + padding-right: 0.5rem; } + +.pr3 { + padding-right: 1rem; } + +.pr4 { + padding-right: 2rem; } + +.pr5 { + padding-right: 4rem; } + +.pr6 { + padding-right: 8rem; } + +.pr7 { + padding-right: 16rem; } + +.pb0 { + padding-bottom: 0; } + +.pb1 { + padding-bottom: 0.25rem; } + +.pb2 { + padding-bottom: 0.5rem; } + +.pb3 { + padding-bottom: 1rem; } + +.pb4 { + padding-bottom: 2rem; } + +.pb5 { + padding-bottom: 4rem; } + +.pb6 { + padding-bottom: 8rem; } + +.pb7 { + padding-bottom: 16rem; } + +.pt0 { + padding-top: 0; } + +.pt1 { + padding-top: 0.25rem; } + +.pt2 { + padding-top: 0.5rem; } + +.pt3 { + padding-top: 1rem; } + +.pt4 { + padding-top: 2rem; } + +.pt5 { + padding-top: 4rem; } + +.pt6 { + padding-top: 8rem; } + +.pt7 { + padding-top: 16rem; } + +.pv0, .pagination .button { + padding-top: 0; + padding-bottom: 0; } + +.pv1, .optionbar .options > * { + padding-top: 0.25rem; + padding-bottom: 0.25rem; } + +.pv2, header .menu-bar .items a.project-logo, +button, +.button, +input[type=button], +input[type=submit] { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + +.pv3 { + padding-top: 1rem; + padding-bottom: 1rem; } + +.pv4 { + padding-top: 2rem; + padding-bottom: 2rem; } + +.pv5 { + padding-top: 4rem; + padding-bottom: 4rem; } + +.pv6 { + padding-top: 8rem; + padding-bottom: 8rem; } + +.pv7 { + padding-top: 16rem; + padding-bottom: 16rem; } + +.ph0 { + padding-left: 0; + padding-right: 0; } + +.ph1 { + padding-left: 0.25rem; + padding-right: 0.25rem; } + +.ph2, .optionbar .options > *, .pagination .button { + padding-left: 0.5rem; + padding-right: 0.5rem; } + +.ph3, +button, +.button, +input[type=button], +input[type=submit] { + padding-left: 1rem; + padding-right: 1rem; } + +.ph4 { + padding-left: 2rem; + padding-right: 2rem; } + +.ph5 { + padding-left: 4rem; + padding-right: 4rem; } + +.ph6 { + padding-left: 8rem; + padding-right: 8rem; } + +.ph7 { + padding-left: 16rem; + padding-right: 16rem; } + +.ma0, .thread { + margin: 0; } + +.ma1 { + margin: 0.25rem; } + +.ma2 { + margin: 0.5rem; } + +.ma3 { + margin: 1rem; } + +.ma4 { + margin: 2rem; } + +.ma5 { + margin: 4rem; } + +.ma6 { + margin: 8rem; } + +.ma7 { + margin: 16rem; } + +.ml0 { + margin-left: 0; } + +.ml1 { + margin-left: 0.25rem; } + +.ml2 { + margin-left: 0.5rem; } + +.ml3 { + margin-left: 1rem; } + +.ml4 { + margin-left: 2rem; } + +.ml5 { + margin-left: 4rem; } + +.ml6 { + margin-left: 8rem; } + +.ml7 { + margin-left: 16rem; } + +.mr0 { + margin-right: 0; } + +.mr1 { + margin-right: 0.25rem; } + +.mr2 { + margin-right: 0.5rem; } + +.mr3 { + margin-right: 1rem; } + +.mr4 { + margin-right: 2rem; } + +.mr5 { + margin-right: 4rem; } + +.mr6 { + margin-right: 8rem; } + +.mr7 { + margin-right: 16rem; } + +.mb0 { + margin-bottom: 0; } + +.mb1 { + margin-bottom: 0.25rem; } + +.mb2 { + margin-bottom: 0.5rem; } + +.mb3 { + margin-bottom: 1rem; } + +.mb4 { + margin-bottom: 2rem; } + +.mb5 { + margin-bottom: 4rem; } + +.mb6 { + margin-bottom: 8rem; } + +.mb7 { + margin-bottom: 16rem; } + +.mt0 { + margin-top: 0; } + +.mt1 { + margin-top: 0.25rem; } + +.mt2 { + margin-top: 0.5rem; } + +.mt3 { + margin-top: 1rem; } + +.mt4 { + margin-top: 2rem; } + +.mt5 { + margin-top: 4rem; } + +.mt6 { + margin-top: 8rem; } + +.mt7 { + margin-top: 16rem; } + +.mv0 { + margin-top: 0; + margin-bottom: 0; } + +.mv1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; } + +.mv2 { + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + +.mv3, hr { + margin-top: 1rem; + margin-bottom: 1rem; } + +.mv4 { + margin-top: 2rem; + margin-bottom: 2rem; } + +.mv5 { + margin-top: 4rem; + margin-bottom: 4rem; } + +.mv6 { + margin-top: 8rem; + margin-bottom: 8rem; } + +.mv7 { + margin-top: 16rem; + margin-bottom: 16rem; } + +.mh0 { + margin-left: 0; + margin-right: 0; } + +.mh1 { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.mh2 { + margin-left: 0.5rem; + margin-right: 0.5rem; } + +.mh3 { + margin-left: 1rem; + margin-right: 1rem; } + +.mh4 { + margin-left: 2rem; + margin-right: 2rem; } + +.mh5 { + margin-left: 4rem; + margin-right: 4rem; } + +.mh6 { + margin-left: 8rem; + margin-right: 8rem; } + +.mh7 { + margin-left: 16rem; + margin-right: 16rem; } + +@media screen and (min-width: 30em) { + .pa0-ns { + padding: 0; } + .pa1-ns { + padding: 0.25rem; } + .pa2-ns { + padding: 0.5rem; } + .pa3-ns { + padding: 1rem; } + .pa4-ns { + padding: 2rem; } + .pa5-ns { + padding: 4rem; } + .pa6-ns { + padding: 8rem; } + .pa7-ns { + padding: 16rem; } + .pl0-ns { + padding-left: 0; } + .pl1-ns { + padding-left: 0.25rem; } + .pl2-ns { + padding-left: 0.5rem; } + .pl3-ns { + padding-left: 1rem; } + .pl4-ns { + padding-left: 2rem; } + .pl5-ns { + padding-left: 4rem; } + .pl6-ns { + padding-left: 8rem; } + .pl7-ns { + padding-left: 16rem; } + .pr0-ns { + padding-right: 0; } + .pr1-ns { + padding-right: 0.25rem; } + .pr2-ns { + padding-right: 0.5rem; } + .pr3-ns { + padding-right: 1rem; } + .pr4-ns { + padding-right: 2rem; } + .pr5-ns { + padding-right: 4rem; } + .pr6-ns { + padding-right: 8rem; } + .pr7-ns { + padding-right: 16rem; } + .pb0-ns { + padding-bottom: 0; } + .pb1-ns { + padding-bottom: 0.25rem; } + .pb2-ns { + padding-bottom: 0.5rem; } + .pb3-ns { + padding-bottom: 1rem; } + .pb4-ns { + padding-bottom: 2rem; } + .pb5-ns { + padding-bottom: 4rem; } + .pb6-ns { + padding-bottom: 8rem; } + .pb7-ns { + padding-bottom: 16rem; } + .pt0-ns { + padding-top: 0; } + .pt1-ns { + padding-top: 0.25rem; } + .pt2-ns { + padding-top: 0.5rem; } + .pt3-ns { + padding-top: 1rem; } + .pt4-ns { + padding-top: 2rem; } + .pt5-ns { + padding-top: 4rem; } + .pt6-ns { + padding-top: 8rem; } + .pt7-ns { + padding-top: 16rem; } + .pv0-ns { + padding-top: 0; + padding-bottom: 0; } + .pv1-ns { + padding-top: 0.25rem; + padding-bottom: 0.25rem; } + .pv2-ns, .optionbar .options > * { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + .pv3-ns, header .menu-bar .items a { + padding-top: 1rem; + padding-bottom: 1rem; } + .pv4-ns { + padding-top: 2rem; + padding-bottom: 2rem; } + .pv5-ns { + padding-top: 4rem; + padding-bottom: 4rem; } + .pv6-ns { + padding-top: 8rem; + padding-bottom: 8rem; } + .pv7-ns { + padding-top: 16rem; + padding-bottom: 16rem; } + .ph0-ns { + padding-left: 0; + padding-right: 0; } + .ph1-ns { + padding-left: 0.25rem; + padding-right: 0.25rem; } + .ph2-ns { + padding-left: 0.5rem; + padding-right: 0.5rem; } + .ph3-ns { + padding-left: 1rem; + padding-right: 1rem; } + .ph4-ns { + padding-left: 2rem; + padding-right: 2rem; } + .ph5-ns { + padding-left: 4rem; + padding-right: 4rem; } + .ph6-ns { + padding-left: 8rem; + padding-right: 8rem; } + .ph7-ns { + padding-left: 16rem; + padding-right: 16rem; } + .ma0-ns { + margin: 0; } + .ma1-ns { + margin: 0.25rem; } + .ma2-ns { + margin: 0.5rem; } + .ma3-ns { + margin: 1rem; } + .ma4-ns { + margin: 2rem; } + .ma5-ns { + margin: 4rem; } + .ma6-ns { + margin: 8rem; } + .ma7-ns { + margin: 16rem; } + .ml0-ns { + margin-left: 0; } + .ml1-ns { + margin-left: 0.25rem; } + .ml2-ns, header .menu-bar .items a:first-child { + margin-left: 0.5rem; } + .ml3-ns { + margin-left: 1rem; } + .ml4-ns { + margin-left: 2rem; } + .ml5-ns { + margin-left: 4rem; } + .ml6-ns { + margin-left: 8rem; } + .ml7-ns { + margin-left: 16rem; } + .mr0-ns { + margin-right: 0; } + .mr1-ns { + margin-right: 0.25rem; } + .mr2-ns { + margin-right: 0.5rem; } + .mr3-ns { + margin-right: 1rem; } + .mr4-ns { + margin-right: 2rem; } + .mr5-ns { + margin-right: 4rem; } + .mr6-ns { + margin-right: 8rem; } + .mr7-ns { + margin-right: 16rem; } + .mb0-ns { + margin-bottom: 0; } + .mb1-ns { + margin-bottom: 0.25rem; } + .mb2-ns { + margin-bottom: 0.5rem; } + .mb3-ns { + margin-bottom: 1rem; } + .mb4-ns { + margin-bottom: 2rem; } + .mb5-ns { + margin-bottom: 4rem; } + .mb6-ns { + margin-bottom: 8rem; } + .mb7-ns { + margin-bottom: 16rem; } + .mt0-ns { + margin-top: 0; } + .mt1-ns { + margin-top: 0.25rem; } + .mt2-ns { + margin-top: 0.5rem; } + .mt3-ns { + margin-top: 1rem; } + .mt4-ns { + margin-top: 2rem; } + .mt5-ns { + margin-top: 4rem; } + .mt6-ns { + margin-top: 8rem; } + .mt7-ns { + margin-top: 16rem; } + .mv0-ns { + margin-top: 0; + margin-bottom: 0; } + .mv1-ns { + margin-top: 0.25rem; + margin-bottom: 0.25rem; } + .mv2-ns { + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + .mv3-ns { + margin-top: 1rem; + margin-bottom: 1rem; } + .mv4-ns { + margin-top: 2rem; + margin-bottom: 2rem; } + .mv5-ns { + margin-top: 4rem; + margin-bottom: 4rem; } + .mv6-ns { + margin-top: 8rem; + margin-bottom: 8rem; } + .mv7-ns { + margin-top: 16rem; + margin-bottom: 16rem; } + .mh0-ns { + margin-left: 0; + margin-right: 0; } + .mh1-ns { + margin-left: 0.25rem; + margin-right: 0.25rem; } + .mh2-ns { + margin-left: 0.5rem; + margin-right: 0.5rem; } + .mh3-ns { + margin-left: 1rem; + margin-right: 1rem; } + .mh4-ns { + margin-left: 2rem; + margin-right: 2rem; } + .mh5-ns { + margin-left: 4rem; + margin-right: 4rem; } + .mh6-ns { + margin-left: 8rem; + margin-right: 8rem; } + .mh7-ns { + margin-left: 16rem; + margin-right: 16rem; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .pa0-m { + padding: 0; } + .pa1-m { + padding: 0.25rem; } + .pa2-m { + padding: 0.5rem; } + .pa3-m { + padding: 1rem; } + .pa4-m { + padding: 2rem; } + .pa5-m { + padding: 4rem; } + .pa6-m { + padding: 8rem; } + .pa7-m { + padding: 16rem; } + .pl0-m { + padding-left: 0; } + .pl1-m { + padding-left: 0.25rem; } + .pl2-m { + padding-left: 0.5rem; } + .pl3-m { + padding-left: 1rem; } + .pl4-m { + padding-left: 2rem; } + .pl5-m { + padding-left: 4rem; } + .pl6-m { + padding-left: 8rem; } + .pl7-m { + padding-left: 16rem; } + .pr0-m { + padding-right: 0; } + .pr1-m { + padding-right: 0.25rem; } + .pr2-m { + padding-right: 0.5rem; } + .pr3-m { + padding-right: 1rem; } + .pr4-m { + padding-right: 2rem; } + .pr5-m { + padding-right: 4rem; } + .pr6-m { + padding-right: 8rem; } + .pr7-m { + padding-right: 16rem; } + .pb0-m { + padding-bottom: 0; } + .pb1-m { + padding-bottom: 0.25rem; } + .pb2-m { + padding-bottom: 0.5rem; } + .pb3-m { + padding-bottom: 1rem; } + .pb4-m { + padding-bottom: 2rem; } + .pb5-m { + padding-bottom: 4rem; } + .pb6-m { + padding-bottom: 8rem; } + .pb7-m { + padding-bottom: 16rem; } + .pt0-m { + padding-top: 0; } + .pt1-m { + padding-top: 0.25rem; } + .pt2-m { + padding-top: 0.5rem; } + .pt3-m { + padding-top: 1rem; } + .pt4-m { + padding-top: 2rem; } + .pt5-m { + padding-top: 4rem; } + .pt6-m { + padding-top: 8rem; } + .pt7-m { + padding-top: 16rem; } + .pv0-m { + padding-top: 0; + padding-bottom: 0; } + .pv1-m { + padding-top: 0.25rem; + padding-bottom: 0.25rem; } + .pv2-m { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + .pv3-m { + padding-top: 1rem; + padding-bottom: 1rem; } + .pv4-m { + padding-top: 2rem; + padding-bottom: 2rem; } + .pv5-m { + padding-top: 4rem; + padding-bottom: 4rem; } + .pv6-m { + padding-top: 8rem; + padding-bottom: 8rem; } + .pv7-m { + padding-top: 16rem; + padding-bottom: 16rem; } + .ph0-m { + padding-left: 0; + padding-right: 0; } + .ph1-m { + padding-left: 0.25rem; + padding-right: 0.25rem; } + .ph2-m { + padding-left: 0.5rem; + padding-right: 0.5rem; } + .ph3-m { + padding-left: 1rem; + padding-right: 1rem; } + .ph4-m { + padding-left: 2rem; + padding-right: 2rem; } + .ph5-m { + padding-left: 4rem; + padding-right: 4rem; } + .ph6-m { + padding-left: 8rem; + padding-right: 8rem; } + .ph7-m { + padding-left: 16rem; + padding-right: 16rem; } + .ma0-m { + margin: 0; } + .ma1-m { + margin: 0.25rem; } + .ma2-m { + margin: 0.5rem; } + .ma3-m { + margin: 1rem; } + .ma4-m { + margin: 2rem; } + .ma5-m { + margin: 4rem; } + .ma6-m { + margin: 8rem; } + .ma7-m { + margin: 16rem; } + .ml0-m { + margin-left: 0; } + .ml1-m { + margin-left: 0.25rem; } + .ml2-m { + margin-left: 0.5rem; } + .ml3-m { + margin-left: 1rem; } + .ml4-m { + margin-left: 2rem; } + .ml5-m { + margin-left: 4rem; } + .ml6-m { + margin-left: 8rem; } + .ml7-m { + margin-left: 16rem; } + .mr0-m { + margin-right: 0; } + .mr1-m { + margin-right: 0.25rem; } + .mr2-m { + margin-right: 0.5rem; } + .mr3-m { + margin-right: 1rem; } + .mr4-m { + margin-right: 2rem; } + .mr5-m { + margin-right: 4rem; } + .mr6-m { + margin-right: 8rem; } + .mr7-m { + margin-right: 16rem; } + .mb0-m { + margin-bottom: 0; } + .mb1-m { + margin-bottom: 0.25rem; } + .mb2-m { + margin-bottom: 0.5rem; } + .mb3-m { + margin-bottom: 1rem; } + .mb4-m { + margin-bottom: 2rem; } + .mb5-m { + margin-bottom: 4rem; } + .mb6-m { + margin-bottom: 8rem; } + .mb7-m { + margin-bottom: 16rem; } + .mt0-m { + margin-top: 0; } + .mt1-m { + margin-top: 0.25rem; } + .mt2-m { + margin-top: 0.5rem; } + .mt3-m { + margin-top: 1rem; } + .mt4-m { + margin-top: 2rem; } + .mt5-m { + margin-top: 4rem; } + .mt6-m { + margin-top: 8rem; } + .mt7-m { + margin-top: 16rem; } + .mv0-m { + margin-top: 0; + margin-bottom: 0; } + .mv1-m { + margin-top: 0.25rem; + margin-bottom: 0.25rem; } + .mv2-m { + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + .mv3-m { + margin-top: 1rem; + margin-bottom: 1rem; } + .mv4-m { + margin-top: 2rem; + margin-bottom: 2rem; } + .mv5-m { + margin-top: 4rem; + margin-bottom: 4rem; } + .mv6-m { + margin-top: 8rem; + margin-bottom: 8rem; } + .mv7-m { + margin-top: 16rem; + margin-bottom: 16rem; } + .mh0-m { + margin-left: 0; + margin-right: 0; } + .mh1-m { + margin-left: 0.25rem; + margin-right: 0.25rem; } + .mh2-m { + margin-left: 0.5rem; + margin-right: 0.5rem; } + .mh3-m { + margin-left: 1rem; + margin-right: 1rem; } + .mh4-m { + margin-left: 2rem; + margin-right: 2rem; } + .mh5-m { + margin-left: 4rem; + margin-right: 4rem; } + .mh6-m { + margin-left: 8rem; + margin-right: 8rem; } + .mh7-m { + margin-left: 16rem; + margin-right: 16rem; } } + +@media screen and (min-width: 60em) { + .pa0-l { + padding: 0; } + .pa1-l { + padding: 0.25rem; } + .pa2-l { + padding: 0.5rem; } + .pa3-l { + padding: 1rem; } + .pa4-l { + padding: 2rem; } + .pa5-l { + padding: 4rem; } + .pa6-l { + padding: 8rem; } + .pa7-l { + padding: 16rem; } + .pl0-l { + padding-left: 0; } + .pl1-l { + padding-left: 0.25rem; } + .pl2-l { + padding-left: 0.5rem; } + .pl3-l { + padding-left: 1rem; } + .pl4-l { + padding-left: 2rem; } + .pl5-l { + padding-left: 4rem; } + .pl6-l { + padding-left: 8rem; } + .pl7-l { + padding-left: 16rem; } + .pr0-l { + padding-right: 0; } + .pr1-l { + padding-right: 0.25rem; } + .pr2-l { + padding-right: 0.5rem; } + .pr3-l { + padding-right: 1rem; } + .pr4-l { + padding-right: 2rem; } + .pr5-l { + padding-right: 4rem; } + .pr6-l { + padding-right: 8rem; } + .pr7-l { + padding-right: 16rem; } + .pb0-l { + padding-bottom: 0; } + .pb1-l { + padding-bottom: 0.25rem; } + .pb2-l { + padding-bottom: 0.5rem; } + .pb3-l { + padding-bottom: 1rem; } + .pb4-l { + padding-bottom: 2rem; } + .pb5-l { + padding-bottom: 4rem; } + .pb6-l { + padding-bottom: 8rem; } + .pb7-l { + padding-bottom: 16rem; } + .pt0-l { + padding-top: 0; } + .pt1-l { + padding-top: 0.25rem; } + .pt2-l { + padding-top: 0.5rem; } + .pt3-l { + padding-top: 1rem; } + .pt4-l { + padding-top: 2rem; } + .pt5-l { + padding-top: 4rem; } + .pt6-l { + padding-top: 8rem; } + .pt7-l { + padding-top: 16rem; } + .pv0-l { + padding-top: 0; + padding-bottom: 0; } + .pv1-l { + padding-top: 0.25rem; + padding-bottom: 0.25rem; } + .pv2-l { + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + .pv3-l { + padding-top: 1rem; + padding-bottom: 1rem; } + .pv4-l { + padding-top: 2rem; + padding-bottom: 2rem; } + .pv5-l { + padding-top: 4rem; + padding-bottom: 4rem; } + .pv6-l { + padding-top: 8rem; + padding-bottom: 8rem; } + .pv7-l { + padding-top: 16rem; + padding-bottom: 16rem; } + .ph0-l { + padding-left: 0; + padding-right: 0; } + .ph1-l { + padding-left: 0.25rem; + padding-right: 0.25rem; } + .ph2-l { + padding-left: 0.5rem; + padding-right: 0.5rem; } + .ph3-l, header .menu-bar .items a { + padding-left: 1rem; + padding-right: 1rem; } + .ph4-l { + padding-left: 2rem; + padding-right: 2rem; } + .ph5-l { + padding-left: 4rem; + padding-right: 4rem; } + .ph6-l { + padding-left: 8rem; + padding-right: 8rem; } + .ph7-l { + padding-left: 16rem; + padding-right: 16rem; } + .ma0-l { + margin: 0; } + .ma1-l { + margin: 0.25rem; } + .ma2-l { + margin: 0.5rem; } + .ma3-l { + margin: 1rem; } + .ma4-l { + margin: 2rem; } + .ma5-l { + margin: 4rem; } + .ma6-l { + margin: 8rem; } + .ma7-l { + margin: 16rem; } + .ml0-l { + margin-left: 0; } + .ml1-l { + margin-left: 0.25rem; } + .ml2-l { + margin-left: 0.5rem; } + .ml3-l, header .menu-bar .items a:first-child { + margin-left: 1rem; } + .ml4-l { + margin-left: 2rem; } + .ml5-l { + margin-left: 4rem; } + .ml6-l { + margin-left: 8rem; } + .ml7-l { + margin-left: 16rem; } + .mr0-l { + margin-right: 0; } + .mr1-l { + margin-right: 0.25rem; } + .mr2-l { + margin-right: 0.5rem; } + .mr3-l { + margin-right: 1rem; } + .mr4-l { + margin-right: 2rem; } + .mr5-l { + margin-right: 4rem; } + .mr6-l { + margin-right: 8rem; } + .mr7-l { + margin-right: 16rem; } + .mb0-l { + margin-bottom: 0; } + .mb1-l { + margin-bottom: 0.25rem; } + .mb2-l { + margin-bottom: 0.5rem; } + .mb3-l { + margin-bottom: 1rem; } + .mb4-l { + margin-bottom: 2rem; } + .mb5-l { + margin-bottom: 4rem; } + .mb6-l { + margin-bottom: 8rem; } + .mb7-l { + margin-bottom: 16rem; } + .mt0-l { + margin-top: 0; } + .mt1-l { + margin-top: 0.25rem; } + .mt2-l { + margin-top: 0.5rem; } + .mt3-l { + margin-top: 1rem; } + .mt4-l { + margin-top: 2rem; } + .mt5-l { + margin-top: 4rem; } + .mt6-l { + margin-top: 8rem; } + .mt7-l { + margin-top: 16rem; } + .mv0-l { + margin-top: 0; + margin-bottom: 0; } + .mv1-l { + margin-top: 0.25rem; + margin-bottom: 0.25rem; } + .mv2-l { + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + .mv3-l { + margin-top: 1rem; + margin-bottom: 1rem; } + .mv4-l { + margin-top: 2rem; + margin-bottom: 2rem; } + .mv5-l { + margin-top: 4rem; + margin-bottom: 4rem; } + .mv6-l { + margin-top: 8rem; + margin-bottom: 8rem; } + .mv7-l { + margin-top: 16rem; + margin-bottom: 16rem; } + .mh0-l { + margin-left: 0; + margin-right: 0; } + .mh1-l { + margin-left: 0.25rem; + margin-right: 0.25rem; } + .mh2-l { + margin-left: 0.5rem; + margin-right: 0.5rem; } + .mh3-l { + margin-left: 1rem; + margin-right: 1rem; } + .mh4-l { + margin-left: 2rem; + margin-right: 2rem; } + .mh5-l { + margin-left: 4rem; + margin-right: 4rem; } + .mh6-l { + margin-left: 8rem; + margin-right: 8rem; } + .mh7-l { + margin-left: 16rem; + margin-right: 16rem; } } + +/* + NEGATIVE MARGINS + + Base: + n = negative + + Modifiers: + a = all + t = top + r = right + b = bottom + l = left + + 1 = 1st step in spacing scale + 2 = 2nd step in spacing scale + 3 = 3rd step in spacing scale + 4 = 4th step in spacing scale + 5 = 5th step in spacing scale + 6 = 6th step in spacing scale + 7 = 7th step in spacing scale + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.na1 { + margin: -0.25rem; } + +.na2 { + margin: -0.5rem; } + +.na3 { + margin: -1rem; } + +.na4 { + margin: -2rem; } + +.na5 { + margin: -4rem; } + +.na6 { + margin: -8rem; } + +.na7 { + margin: -16rem; } + +.nl1 { + margin-left: -0.25rem; } + +.nl2 { + margin-left: -0.5rem; } + +.nl3 { + margin-left: -1rem; } + +.nl4 { + margin-left: -2rem; } + +.nl5 { + margin-left: -4rem; } + +.nl6 { + margin-left: -8rem; } + +.nl7 { + margin-left: -16rem; } + +.nr1 { + margin-right: -0.25rem; } + +.nr2 { + margin-right: -0.5rem; } + +.nr3 { + margin-right: -1rem; } + +.nr4 { + margin-right: -2rem; } + +.nr5 { + margin-right: -4rem; } + +.nr6 { + margin-right: -8rem; } + +.nr7 { + margin-right: -16rem; } + +.nb1 { + margin-bottom: -0.25rem; } + +.nb2 { + margin-bottom: -0.5rem; } + +.nb3 { + margin-bottom: -1rem; } + +.nb4 { + margin-bottom: -2rem; } + +.nb5 { + margin-bottom: -4rem; } + +.nb6 { + margin-bottom: -8rem; } + +.nb7 { + margin-bottom: -16rem; } + +.nt1 { + margin-top: -0.25rem; } + +.nt2 { + margin-top: -0.5rem; } + +.nt3 { + margin-top: -1rem; } + +.nt4 { + margin-top: -2rem; } + +.nt5 { + margin-top: -4rem; } + +.nt6 { + margin-top: -8rem; } + +.nt7 { + margin-top: -16rem; } + +@media screen and (min-width: 30em) { + .na1-ns { + margin: -0.25rem; } + .na2-ns { + margin: -0.5rem; } + .na3-ns { + margin: -1rem; } + .na4-ns { + margin: -2rem; } + .na5-ns { + margin: -4rem; } + .na6-ns { + margin: -8rem; } + .na7-ns { + margin: -16rem; } + .nl1-ns { + margin-left: -0.25rem; } + .nl2-ns { + margin-left: -0.5rem; } + .nl3-ns { + margin-left: -1rem; } + .nl4-ns { + margin-left: -2rem; } + .nl5-ns { + margin-left: -4rem; } + .nl6-ns { + margin-left: -8rem; } + .nl7-ns { + margin-left: -16rem; } + .nr1-ns { + margin-right: -0.25rem; } + .nr2-ns { + margin-right: -0.5rem; } + .nr3-ns { + margin-right: -1rem; } + .nr4-ns { + margin-right: -2rem; } + .nr5-ns { + margin-right: -4rem; } + .nr6-ns { + margin-right: -8rem; } + .nr7-ns { + margin-right: -16rem; } + .nb1-ns { + margin-bottom: -0.25rem; } + .nb2-ns { + margin-bottom: -0.5rem; } + .nb3-ns { + margin-bottom: -1rem; } + .nb4-ns { + margin-bottom: -2rem; } + .nb5-ns { + margin-bottom: -4rem; } + .nb6-ns { + margin-bottom: -8rem; } + .nb7-ns { + margin-bottom: -16rem; } + .nt1-ns { + margin-top: -0.25rem; } + .nt2-ns { + margin-top: -0.5rem; } + .nt3-ns { + margin-top: -1rem; } + .nt4-ns { + margin-top: -2rem; } + .nt5-ns { + margin-top: -4rem; } + .nt6-ns { + margin-top: -8rem; } + .nt7-ns { + margin-top: -16rem; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .na1-m { + margin: -0.25rem; } + .na2-m { + margin: -0.5rem; } + .na3-m { + margin: -1rem; } + .na4-m { + margin: -2rem; } + .na5-m { + margin: -4rem; } + .na6-m { + margin: -8rem; } + .na7-m { + margin: -16rem; } + .nl1-m { + margin-left: -0.25rem; } + .nl2-m { + margin-left: -0.5rem; } + .nl3-m { + margin-left: -1rem; } + .nl4-m { + margin-left: -2rem; } + .nl5-m { + margin-left: -4rem; } + .nl6-m { + margin-left: -8rem; } + .nl7-m { + margin-left: -16rem; } + .nr1-m { + margin-right: -0.25rem; } + .nr2-m { + margin-right: -0.5rem; } + .nr3-m { + margin-right: -1rem; } + .nr4-m { + margin-right: -2rem; } + .nr5-m { + margin-right: -4rem; } + .nr6-m { + margin-right: -8rem; } + .nr7-m { + margin-right: -16rem; } + .nb1-m { + margin-bottom: -0.25rem; } + .nb2-m { + margin-bottom: -0.5rem; } + .nb3-m { + margin-bottom: -1rem; } + .nb4-m { + margin-bottom: -2rem; } + .nb5-m { + margin-bottom: -4rem; } + .nb6-m { + margin-bottom: -8rem; } + .nb7-m { + margin-bottom: -16rem; } + .nt1-m { + margin-top: -0.25rem; } + .nt2-m { + margin-top: -0.5rem; } + .nt3-m { + margin-top: -1rem; } + .nt4-m { + margin-top: -2rem; } + .nt5-m { + margin-top: -4rem; } + .nt6-m { + margin-top: -8rem; } + .nt7-m { + margin-top: -16rem; } } + +@media screen and (min-width: 60em) { + .na1-l { + margin: -0.25rem; } + .na2-l { + margin: -0.5rem; } + .na3-l { + margin: -1rem; } + .na4-l { + margin: -2rem; } + .na5-l { + margin: -4rem; } + .na6-l { + margin: -8rem; } + .na7-l { + margin: -16rem; } + .nl1-l { + margin-left: -0.25rem; } + .nl2-l { + margin-left: -0.5rem; } + .nl3-l { + margin-left: -1rem; } + .nl4-l { + margin-left: -2rem; } + .nl5-l { + margin-left: -4rem; } + .nl6-l { + margin-left: -8rem; } + .nl7-l { + margin-left: -16rem; } + .nr1-l { + margin-right: -0.25rem; } + .nr2-l { + margin-right: -0.5rem; } + .nr3-l { + margin-right: -1rem; } + .nr4-l { + margin-right: -2rem; } + .nr5-l { + margin-right: -4rem; } + .nr6-l { + margin-right: -8rem; } + .nr7-l { + margin-right: -16rem; } + .nb1-l { + margin-bottom: -0.25rem; } + .nb2-l { + margin-bottom: -0.5rem; } + .nb3-l { + margin-bottom: -1rem; } + .nb4-l { + margin-bottom: -2rem; } + .nb5-l { + margin-bottom: -4rem; } + .nb6-l { + margin-bottom: -8rem; } + .nb7-l { + margin-bottom: -16rem; } + .nt1-l { + margin-top: -0.25rem; } + .nt2-l { + margin-top: -0.5rem; } + .nt3-l { + margin-top: -1rem; } + .nt4-l { + margin-top: -2rem; } + .nt5-l { + margin-top: -4rem; } + .nt6-l { + margin-top: -8rem; } + .nt7-l { + margin-top: -16rem; } } + +/* + + TABLES + Docs: http://tachyons.io/docs/elements/tables/ + +*/ +.collapse { + border-collapse: collapse; + border-spacing: 0; } + +.striped--light-silver:nth-child(odd) { + background-color: #aaa; } + +.striped--moon-gray:nth-child(odd) { + background-color: #ccc; } + +.striped--light-gray:nth-child(odd) { + background-color: #eee; } + +.striped--near-white:nth-child(odd) { + background-color: #f4f4f4; } + +.stripe-light:nth-child(odd) { + background-color: rgba(255, 255, 255, 0.1); } + +.stripe-dark:nth-child(odd) { + background-color: rgba(0, 0, 0, 0.1); } + +/* + + TEXT DECORATION + Docs: http://tachyons.io/docs/typography/text-decoration/ + + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.strike { + text-decoration: line-through; } + +.underline { + text-decoration: underline; } + +.no-underline { + text-decoration: none; } + +@media screen and (min-width: 30em) { + .strike-ns { + text-decoration: line-through; } + .underline-ns { + text-decoration: underline; } + .no-underline-ns { + text-decoration: none; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .strike-m { + text-decoration: line-through; } + .underline-m { + text-decoration: underline; } + .no-underline-m { + text-decoration: none; } } + +@media screen and (min-width: 60em) { + .strike-l { + text-decoration: line-through; } + .underline-l { + text-decoration: underline; } + .no-underline-l { + text-decoration: none; } } + +/* + + TEXT ALIGN + Docs: http://tachyons.io/docs/typography/text-align/ + + Base + t = text-align + + Modifiers + l = left + r = right + c = center + j = justify + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.tl { + text-align: left; } + +.tr { + text-align: right; } + +.tc { + text-align: center; } + +.tj { + text-align: justify; } + +@media screen and (min-width: 30em) { + .tl-ns { + text-align: left; } + .tr-ns { + text-align: right; } + .tc-ns { + text-align: center; } + .tj-ns { + text-align: justify; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .tl-m { + text-align: left; } + .tr-m { + text-align: right; } + .tc-m { + text-align: center; } + .tj-m { + text-align: justify; } } + +@media screen and (min-width: 60em) { + .tl-l { + text-align: left; } + .tr-l { + text-align: right; } + .tc-l { + text-align: center; } + .tj-l { + text-align: justify; } } + +/* + + TEXT TRANSFORM + Docs: http://tachyons.io/docs/typography/text-transform/ + + Base: + tt = text-transform + + Modifiers + c = capitalize + l = lowercase + u = uppercase + n = none + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.ttc { + text-transform: capitalize; } + +.ttl { + text-transform: lowercase; } + +.ttu { + text-transform: uppercase; } + +.ttn { + text-transform: none; } + +@media screen and (min-width: 30em) { + .ttc-ns { + text-transform: capitalize; } + .ttl-ns { + text-transform: lowercase; } + .ttu-ns { + text-transform: uppercase; } + .ttn-ns { + text-transform: none; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .ttc-m { + text-transform: capitalize; } + .ttl-m { + text-transform: lowercase; } + .ttu-m { + text-transform: uppercase; } + .ttn-m { + text-transform: none; } } + +@media screen and (min-width: 60em) { + .ttc-l { + text-transform: capitalize; } + .ttl-l { + text-transform: lowercase; } + .ttu-l { + text-transform: uppercase; } + .ttn-l { + text-transform: none; } } + +/* + + TYPE SCALE + Docs: http://tachyons.io/docs/typography/scale/ + + Base: + f = font-size + + Modifiers + 1 = 1st step in size scale + 2 = 2nd step in size scale + 3 = 3rd step in size scale + 4 = 4th step in size scale + 5 = 5th step in size scale + 6 = 6th step in size scale + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large +*/ +/* + * For Hero/Marketing Titles + * + * These generally are too large for mobile + * so be careful using them on smaller screens. + * */ +.f-6, +.f-headline { + font-size: 6rem; } + +.f-5, +.f-subheadline { + font-size: 5rem; } + +/* Type Scale */ +.f1 { + font-size: 3rem; } + +.f2 { + font-size: 2.25rem; } + +.f3 { + font-size: 1.5rem; } + +.f4 { + font-size: 1.25rem; } + +.f5 { + font-size: 1rem; } + +.f6 { + font-size: 0.875rem; } + +.f7 { + font-size: 0.75rem; } + +@media screen and (min-width: 30em) { + .f-6-ns, + .f-headline-ns { + font-size: 6rem; } + .f-5-ns, + .f-subheadline-ns { + font-size: 5rem; } + .f1-ns { + font-size: 3rem; } + .f2-ns { + font-size: 2.25rem; } + .f3-ns { + font-size: 1.5rem; } + .f4-ns { + font-size: 1.25rem; } + .f5-ns { + font-size: 1rem; } + .f6-ns { + font-size: 0.875rem; } + .f7-ns { + font-size: 0.75rem; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .f-6-m, + .f-headline-m { + font-size: 6rem; } + .f-5-m, + .f-subheadline-m { + font-size: 5rem; } + .f1-m { + font-size: 3rem; } + .f2-m { + font-size: 2.25rem; } + .f3-m { + font-size: 1.5rem; } + .f4-m { + font-size: 1.25rem; } + .f5-m { + font-size: 1rem; } + .f6-m { + font-size: 0.875rem; } + .f7-m { + font-size: 0.75rem; } } + +@media screen and (min-width: 60em) { + .f-6-l, + .f-headline-l { + font-size: 6rem; } + .f-5-l, + .f-subheadline-l { + font-size: 5rem; } + .f1-l { + font-size: 3rem; } + .f2-l { + font-size: 2.25rem; } + .f3-l { + font-size: 1.5rem; } + .f4-l { + font-size: 1.25rem; } + .f5-l { + font-size: 1rem; } + .f6-l { + font-size: 0.875rem; } + .f7-l { + font-size: 0.75rem; } } + +/* + + TYPOGRAPHY + http://tachyons.io/docs/typography/measure/ + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +/* Measure is limited to ~66 characters */ +.measure { + max-width: 30em; } + +/* Measure is limited to ~80 characters */ +.measure-wide { + max-width: 34em; } + +/* Measure is limited to ~45 characters */ +.measure-narrow { + max-width: 20em; } + +/* Book paragraph style - paragraphs are indented with no vertical spacing. */ +.indent { + text-indent: 1em; + margin-top: 0; + margin-bottom: 0; } + +.small-caps { + font-variant: small-caps; } + +/* Combine this class with a width to truncate text (or just leave as is to truncate at width of containing element. */ +.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +@media screen and (min-width: 30em) { + .measure-ns { + max-width: 30em; } + .measure-wide-ns { + max-width: 34em; } + .measure-narrow-ns { + max-width: 20em; } + .indent-ns { + text-indent: 1em; + margin-top: 0; + margin-bottom: 0; } + .small-caps-ns { + font-variant: small-caps; } + .truncate-ns { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .measure-m { + max-width: 30em; } + .measure-wide-m { + max-width: 34em; } + .measure-narrow-m { + max-width: 20em; } + .indent-m { + text-indent: 1em; + margin-top: 0; + margin-bottom: 0; } + .small-caps-m { + font-variant: small-caps; } + .truncate-m { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } } + +@media screen and (min-width: 60em) { + .measure-l { + max-width: 30em; } + .measure-wide-l { + max-width: 34em; } + .measure-narrow-l { + max-width: 20em; } + .indent-l { + text-indent: 1em; + margin-top: 0; + margin-bottom: 0; } + .small-caps-l { + font-variant: small-caps; } + .truncate-l { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } } + +/* + + UTILITIES + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +/* Equivalent to .overflow-y-scroll */ +.overflow-container { + overflow-y: scroll; } + +.center { + margin-right: auto; + margin-left: auto; } + +.mr-auto { + margin-right: auto; } + +.ml-auto { + margin-left: auto; } + +@media screen and (min-width: 30em) { + .center-ns { + margin-right: auto; + margin-left: auto; } + .mr-auto-ns { + margin-right: auto; } + .ml-auto-ns { + margin-left: auto; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .center-m { + margin-right: auto; + margin-left: auto; } + .mr-auto-m { + margin-right: auto; } + .ml-auto-m { + margin-left: auto; } } + +@media screen and (min-width: 60em) { + .center-l { + margin-right: auto; + margin-left: auto; } + .mr-auto-l { + margin-right: auto; } + .ml-auto-l { + margin-left: auto; } } + +/* + + VISIBILITY + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +/* + Text that is hidden but accessible + Ref: http://snook.ca/archives/html_and_css/hiding-content-for-accessibility +*/ +.clip { + position: fixed !important; + _position: absolute !important; + clip: rect(1px 1px 1px 1px); + /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } + +@media screen and (min-width: 30em) { + .clip-ns { + position: fixed !important; + _position: absolute !important; + clip: rect(1px 1px 1px 1px); + /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .clip-m { + position: fixed !important; + _position: absolute !important; + clip: rect(1px 1px 1px 1px); + /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } } + +@media screen and (min-width: 60em) { + .clip-l { + position: fixed !important; + _position: absolute !important; + clip: rect(1px 1px 1px 1px); + /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } } + +/* + + WHITE SPACE + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.ws-normal { + white-space: normal; } + +.nowrap { + white-space: nowrap; } + +.pre { + white-space: pre; } + +@media screen and (min-width: 30em) { + .ws-normal-ns { + white-space: normal; } + .nowrap-ns { + white-space: nowrap; } + .pre-ns { + white-space: pre; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .ws-normal-m { + white-space: normal; } + .nowrap-m { + white-space: nowrap; } + .pre-m { + white-space: pre; } } + +@media screen and (min-width: 60em) { + .ws-normal-l { + white-space: normal; } + .nowrap-l { + white-space: nowrap; } + .pre-l { + white-space: pre; } } + +/* + + VERTICAL ALIGN + + Media Query Extensions: + -ns = not-small + -m = medium + -l = large + +*/ +.v-base { + vertical-align: baseline; } + +.v-mid { + vertical-align: middle; } + +.v-top { + vertical-align: top; } + +.v-btm { + vertical-align: bottom; } + +@media screen and (min-width: 30em) { + .v-base-ns { + vertical-align: baseline; } + .v-mid-ns { + vertical-align: middle; } + .v-top-ns { + vertical-align: top; } + .v-btm-ns { + vertical-align: bottom; } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .v-base-m { + vertical-align: baseline; } + .v-mid-m { + vertical-align: middle; } + .v-top-m { + vertical-align: top; } + .v-btm-m { + vertical-align: bottom; } } + +@media screen and (min-width: 60em) { + .v-base-l { + vertical-align: baseline; } + .v-mid-l { + vertical-align: middle; } + .v-top-l { + vertical-align: top; } + .v-btm-l { + vertical-align: bottom; } } + +/* + + HOVER EFFECTS + Docs: http://tachyons.io/docs/themes/hovers/ + + - Dim + - Glow + - Hide Child + - Underline text + - Grow + - Pointer + - Shadow + +*/ +/* + + Dim element on hover by adding the dim class. + +*/ +.dim { + opacity: 1; + transition: opacity .15s ease-in; } + +.dim:hover, +.dim:focus { + opacity: .5; + transition: opacity .15s ease-in; } + +.dim:active { + opacity: .8; + transition: opacity .15s ease-out; } + +/* + + Animate opacity to 100% on hover by adding the glow class. + +*/ +.glow { + transition: opacity .15s ease-in; } + +.glow:hover, +.glow:focus { + opacity: 1; + transition: opacity .15s ease-in; } + +/* + + Hide child & reveal on hover: + + Put the hide-child class on a parent element and any nested element with the + child class will be hidden and displayed on hover or focus. + +
+
Hidden until hover or focus
+
Hidden until hover or focus
+
Hidden until hover or focus
+
Hidden until hover or focus
+
+*/ +.hide-child .child { + opacity: 0; + transition: opacity .15s ease-in; } + +.hide-child:hover .child, +.hide-child:focus .child, +.hide-child:active .child { + opacity: 1; + transition: opacity .15s ease-in; } + +.underline-hover:hover, +.underline-hover:focus { + text-decoration: underline; } + +/* Can combine this with overflow-hidden to make background images grow on hover + * even if you are using background-size: cover */ +.grow { + -moz-osx-font-smoothing: grayscale; + backface-visibility: hidden; + transform: translateZ(0); + transition: transform 0.25s ease-out; } + +.grow:hover, +.grow:focus { + transform: scale(1.05); } + +.grow:active { + transform: scale(0.9); } + +.grow-large { + -moz-osx-font-smoothing: grayscale; + backface-visibility: hidden; + transform: translateZ(0); + transition: transform .25s ease-in-out; } + +.grow-large:hover, +.grow-large:focus { + transform: scale(1.2); } + +.grow-large:active { + transform: scale(0.95); } + +/* Add pointer on hover */ +.pointer:hover { + cursor: pointer; } + +/* + Add shadow on hover. + + Performant box-shadow animation pattern from + http://tobiasahlin.com/blog/how-to-animate-box-shadow/ +*/ +.shadow-hover { + cursor: pointer; + position: relative; + transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.shadow-hover::after { + content: ''; + box-shadow: 0px 0px 16px 2px rgba(0, 0, 0, 0.2); + border-radius: inherit; + opacity: 0; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } + +.shadow-hover:hover::after, +.shadow-hover:focus::after { + opacity: 1; } + +/* Combine with classes in skins and skins-pseudo for + * many different transition possibilities. */ +.bg-animate, +.bg-animate:hover, +.bg-animate:focus { + transition: background-color .15s ease-in-out; } + +/* + + Z-INDEX + + Base + z = z-index + + Modifiers + -0 = literal value 0 + -1 = literal value 1 + -2 = literal value 2 + -3 = literal value 3 + -4 = literal value 4 + -5 = literal value 5 + -999 = literal value 999 + -9999 = literal value 9999 + + -max = largest accepted z-index value as integer + + -inherit = string value inherit + -initial = string value initial + -unset = string value unset + + MDN: https://developer.mozilla.org/en/docs/Web/CSS/z-index + Spec: http://www.w3.org/TR/CSS2/zindex.html + Articles: + https://philipwalton.com/articles/what-no-one-told-you-about-z-index/ + + Tips on extending: + There might be a time worth using negative z-index values. + Or if you are using tachyons with another project, you might need to + adjust these values to suit your needs. + +*/ +.z-0 { + z-index: 0; } + +.z-1 { + z-index: 1; } + +.z-2 { + z-index: 2; } + +.z-3 { + z-index: 3; } + +.z-4 { + z-index: 4; } + +.z-5 { + z-index: 5; } + +.z-999 { + z-index: 999; } + +.z-9999 { + z-index: 9999; } + +.z-max { + z-index: 2147483647; } + +.z-inherit { + z-index: inherit; } + +.z-initial { + z-index: initial; } + +.z-unset { + z-index: unset; } + +/* + + NESTED + Tachyons module for styling nested elements + that are generated by a cms. + +*/ +.nested-copy-line-height p, +.nested-copy-line-height ul, +.nested-copy-line-height ol { + line-height: 1.5; } + +.nested-headline-line-height h1, +.nested-headline-line-height h2, +.nested-headline-line-height h3, +.nested-headline-line-height h4, +.nested-headline-line-height h5, +.nested-headline-line-height h6 { + line-height: 1.25; } + +.nested-list-reset ul, +.nested-list-reset ol { + padding-left: 0; + margin-left: 0; + list-style-type: none; } + +.nested-copy-indent p + p { + text-indent: 0.1em; + margin-top: 0; + margin-bottom: 0; } + +.nested-copy-seperator p + p { + margin-top: 1.5em; } + +.nested-img img { + width: 100%; + max-width: 100%; + display: block; } + +.nested-links a { + color: #357edd; + transition: color .15s ease-in; } + +.nested-links a:hover, +.nested-links a:focus { + color: #96ccff; + transition: color .15s ease-in; } + +/* + + STYLES + + Add custom styles here. + +*/ +/* +Inserts a CSS expression with one or more custom variables. +You can provide an arbitrary number of strings in the second +argument, separated by spaces. Any strings corresponding to +variable names will be replaced by the correct values, while +other strings are left untouched. + +Example usage: + +@include usevar(border-color, dimmer-color); +@include usevar(background, "linear-gradient(" dim-background-transparent "," dim-background ")"); + +For clarity and to avoid syntax issues, you are encouraged to +use unquoted strings for variables and quoted strings for +everything else. + +For convenience in common cases, if only a single argument +is provided and it does not match an existing variable, this +will throw an error. +*/ +/* bbcode [code] -- see: https://github.com/richleland/pygments-css/blob/master/friendly.css */ +.codeblock .hll { + background-color: #ffffcc; } + +.codeblock .c { + color: #60a0b0; + font-style: italic; } + +/* Comment */ +.codeblock .err { + color: #FF0000; } + +/* Error */ +.codeblock .k { + color: #007020; + font-weight: bold; } + +/* Keyword */ +.codeblock .o { + color: #666666; } + +/* Operator */ +.codeblock .cm { + color: #60a0b0; + font-style: italic; } + +/* Comment.Multiline */ +.codeblock .cp { + color: #007020; } + +/* Comment.Preproc */ +.codeblock .c1 { + color: #60a0b0; + font-style: italic; } + +/* Comment.Single */ +.codeblock .cs { + color: #60a0b0; + background-color: #fff0f0; } + +/* Comment.Special */ +.codeblock .gd { + color: #A00000; } + +/* Generic.Deleted */ +.codeblock .ge { + font-style: italic; } + +/* Generic.Emph */ +.codeblock .gr { + color: #FF0000; } + +/* Generic.Error */ +.codeblock .gh { + color: #000080; + font-weight: bold; } + +/* Generic.Heading */ +.codeblock .gi { + color: #00A000; } + +/* Generic.Inserted */ +.codeblock .go { + color: #808080; } + +/* Generic.Output */ +.codeblock .gp { + color: #c65d09; + font-weight: bold; } + +/* Generic.Prompt */ +.codeblock .gs { + font-weight: bold; } + +/* Generic.Strong */ +.codeblock .gu { + color: #800080; + font-weight: bold; } + +/* Generic.Subheading */ +.codeblock .gt { + color: #0040D0; } + +/* Generic.Traceback */ +.codeblock .kc { + color: #007020; + font-weight: bold; } + +/* Keyword.Constant */ +.codeblock .kd { + color: #007020; + font-weight: bold; } + +/* Keyword.Declaration */ +.codeblock .kn { + color: #007020; + font-weight: bold; } + +/* Keyword.Namespace */ +.codeblock .kp { + color: #007020; } + +/* Keyword.Pseudo */ +.codeblock .kr { + color: #007020; + font-weight: bold; } + +/* Keyword.Reserved */ +.codeblock .kt { + color: #902000; } + +/* Keyword.Type */ +.codeblock .m { + color: #40a070; } + +/* Literal.Number */ +.codeblock .s { + color: #4070a0; } + +/* Literal.String */ +.codeblock .na { + color: #4070a0; } + +/* Name.Attribute */ +.codeblock .nb { + color: #007020; } + +/* Name.Builtin */ +.codeblock .nc { + color: #0e84b5; + font-weight: bold; } + +/* Name.Class */ +.codeblock .no { + color: #60add5; } + +/* Name.Constant */ +.codeblock .nd { + color: #555555; + font-weight: bold; } + +/* Name.Decorator */ +.codeblock .ni { + color: #d55537; + font-weight: bold; } + +/* Name.Entity */ +.codeblock .ne { + color: #007020; } + +/* Name.Exception */ +.codeblock .nf { + color: #06287e; } + +/* Name.Function */ +.codeblock .nl { + color: #002070; + font-weight: bold; } + +/* Name.Label */ +.codeblock .nn { + color: #0e84b5; + font-weight: bold; } + +/* Name.Namespace */ +.codeblock .nt { + color: #062873; + font-weight: bold; } + +/* Name.Tag */ +.codeblock .nv { + color: #bb60d5; } + +/* Name.Variable */ +.codeblock .ow { + color: #007020; + font-weight: bold; } + +/* Operator.Word */ +.codeblock .w { + color: #bbbbbb; } + +/* Text.Whitespace */ +.codeblock .mf { + color: #40a070; } + +/* Literal.Number.Float */ +.codeblock .mh { + color: #40a070; } + +/* Literal.Number.Hex */ +.codeblock .mi { + color: #40a070; } + +/* Literal.Number.Integer */ +.codeblock .mo { + color: #40a070; } + +/* Literal.Number.Oct */ +.codeblock .sb { + color: #4070a0; } + +/* Literal.String.Backtick */ +.codeblock .sc { + color: #4070a0; } + +/* Literal.String.Char */ +.codeblock .sd { + color: #4070a0; + font-style: italic; } + +/* Literal.String.Doc */ +.codeblock .s2 { + color: #4070a0; } + +/* Literal.String.Double */ +.codeblock .se { + color: #4070a0; + font-weight: bold; } + +/* Literal.String.Escape */ +.codeblock .sh { + color: #4070a0; } + +/* Literal.String.Heredoc */ +.codeblock .si { + color: #70a0d0; + font-style: italic; } + +/* Literal.String.Interpol */ +.codeblock .sx { + color: #c65d09; } + +/* Literal.String.Other */ +.codeblock .sr { + color: #235388; } + +/* Literal.String.Regex */ +.codeblock .s1 { + color: #4070a0; } + +/* Literal.String.Single */ +.codeblock .ss { + color: #517918; } + +/* Literal.String.Symbol */ +.codeblock .bp { + color: #007020; } + +/* Name.Builtin.Pseudo */ +.codeblock .vc { + color: #bb60d5; } + +/* Name.Variable.Class */ +.codeblock .vg { + color: #bb60d5; } + +/* Name.Variable.Global */ +.codeblock .vi { + color: #bb60d5; } + +/* Name.Variable.Instance */ +.codeblock .il { + color: #40a070; } + +/* Literal.Number.Integer.Long */ +.dark { + background-color: #222; + color: #bbb; } + +.noselect { + -webkit-touch-callout: none; + /* iOS Safari */ + -webkit-user-select: none; + /* Chrome/Safari/Opera */ + -khtml-user-select: none; + /* Konqueror */ + -moz-user-select: none; + /* Firefox */ + -ms-user-select: none; + /* IE/Edge */ + user-select: none; + /* non-prefixed version, currently */ } + +* { + box-sizing: border-box; } + +br { + border-style: none; } + +body { + background-color: #fff; + background-color: var(--main-background-color); + color: black; + color: var(--main-color); + font-family: "Fira Sans", sans-serif; + background-size: cover; + min-height: 100vh; + box-sizing: border-box; + font-size: 0.875rem; + line-height: 1.5em; + font-weight: 400; + background-image: url("data:image/png;iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAEGGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjcyIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNzIiCiAgIHRpZmY6SW1hZ2VXaWR0aD0iNzIiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjcyIgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI5Ni4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI5Ni4wIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMy0xMVQyMToyMzoxNS0wNjowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wMy0xMVQyMToyMzoxNS0wNjowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InByb2R1Y2VkIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZmZpbml0eSBQaG90byAxLjcuMSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMS0wMy0xMVQyMToyMzoxNS0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+87tjqAAAAYFpQ0NQc1JHQiBJRUM2MTk2Ni0yLjEAACiRdZG/S0JRFMc/amGUYZBDQ4NENVmUgdTSoJQF1WAG/Vr05Y9A7fGeEdIatAoFUUu/hvoLag2ag6AogmgLmotaSl7n+QQl8l7OOZ/7vfcc7j0X7NGMktUbBiCby2uRcNA7v7Dodb7iwCXmwRNTdHV6djxK3fH1gM2Md31mrfrn/h0tKwldAVuT8KiiannhCeGpjbxq8q6wR0nHVoTPhX2aXFD43tTjFr+ZnLL4x2QtGgmBvU3Ym6rheA0raS0rLC+nO5tZVyr3MV/iSuTmZiV2iXWiEyFMEC+TjBEiwCAj4gP04adfVtTJHyjnz7AmuYp4lQIaq6RIk8cn6rpUT0hMip6QmaFg9v9vX/XkkN+q7gpC44thfPSAcwdKRcP4PjaM0gk4nuEqV81fO4LhT9GLVa37ENxbcHFd1eJ7cLkNHU9qTIuVJYeYPZmE9zNoXYD2W2hesnpW2ef0EaKb8lU3sH8AvXLevfwLEU5nv19tQRgAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJSSURBVHic7ZvBbsMgDIaTHKbtnNO0vf/bcW7VS3uoFlWhgAEb//bwrVrzyxjHhq/euu/7fam0z4+v5Xq7JD970llbApQT9aaz5b7A4QyXTghh1fAnm0FouxpC6M74Wn+iDHqN8PV2IUU85QSHzmvm7Pt+p2QSpz9RgM4Pty6OS+cclNYgtfpzBCj3cM3iuHRyQakJUq8/R4BKD1MXx6VTCgo1SL3+REUP7WxyLsythbrVn1mDCpbcjdnin5Y8KFIjXNpNqk7pO9TMKenU+tO1K1q7OlJn6znAnYtnrzN/n5F0NoudZaTO24NizkrBqTnA5RZVczCV1Nne/TFllOBQMomyKIo/I3TWn+/f+3zN0jqzBhV0utu091bfRRQpwbFOJk0RRY1rCzxR1CaT8Ld5bSoASxRRyCQsUUQhk/BEUZtMzhpUMDNEUYtMdhNFboInrVNLJruuCWjZAUUU0UmgKlFE61BQRNEKCeTSqSKKlkggl04zUbTweqgRRfRFQRFF5BbNoZM8KGrNBKLpZDPIO2+mWJRB2jOBaDpRgLTncdB0jgChzASi6RwBQpkJRNOJivB/+tWUojNrUMGS2TFb/NOSB0WtmcBeHe6ZSVdEUSLr3RBFqZlJF7d5yc5rnihKz0yaJoojZibdEEWp12zWoII/7ogid6sX/6/nkWRSYmZyyIyi5WuL2IyiFzIpNh/khQqwzyh6I5PsM4reyKTYjKIXMjlrUMHEZxQtt/hlGTCjaJVMuiSKEjpuiKKUjovbvKSOeaIorWOaKI7QcUMUpXQe+31Pc6xeN0AAAAAASUVORK5CYII="); } + +a { + color: #666; + color: var(--link-color); + border-bottom-color: #666; + border-bottom-color: var(--link-border-color); + border-bottom: none; + text-decoration: none; } + a:hover { + /* text-decoration:underline; */ } + a.external::after { + font-family: "icons"; + content: " 1"; + vertical-align: middle; } + +ol { + list-style-type: decimal; } + +ul { + list-style-type: circle; + padding: 0px; + margin: 0px; } + +.list-none { + list-style-type: none; } + +li { + padding: 0px; + margin: 0px; + padding-left: 5px; + margin-left: 15px; } + +h1, h2 { + font-weight: 500; } + +h1, h2, h3, h4 { + margin: 0px; + margin-bottom: 5px; + font-size: 1.5rem; + line-height: 1.25em; } + +strong { + font-weight: 600; } + +em { + font-style: italic; } + +p { + box-sizing: border-box; + margin: 0px; + padding: 0px; } + +.p-spaced p:not(:first-child) { + margin-top: 0.6em; } + +.p-spaced p:not(:last-child) { + margin-bottom: 0.6em; } + +table { + border-collapse: collapse; + table-layout: fixed; } + +th, td { + color: black; + color: var(--fg-font-color); } + +td { + vertical-align: baseline; } + +tr.line-above th, tr.line-above td { + border-top-color: #444; + border-top-color: var(--table-border-color); + border-top-width: 1px; + border-top-style: solid; + padding-top: 20px; } + +hr { + border-top-color: #444; + border-top-color: var(--hr-color); + border-width: 1px 0 0; + border-top-style: solid; + max-width: 300px; } + +article code { + font-family: "Fira Mono", monospace; } + +.big { + font-size: 120%; } + +.title { + font-weight: bold; } + +.clear { + width: 0; } + +.full { + width: 100%; } + +.hidden { + display: none; } + +.empty { + padding-left: 20px; } + +.column h2 { + text-align: center; + margin-bottom: 20px; } + +.margin-center { + margin-left: auto; + margin-right: auto; } + +.flex-shrink-0 { + flex-shrink: 0; } + +.flex-grow-1 { + flex-grow: 1; } + +.b--theme { + border-color: #666; + border-color: var(--theme-color); } + +.c--dim { + color: #333; + color: var(--dim-color); } + +.c--theme-dim { + color: #aaa; + color: var(--theme-color-dim); } + +.b--dim { + border-color: #333; + border-color: var(--dim-color); } + +.b--theme-dim { + border-color: #aaa; + border-color: var(--theme-color-dim); } + +.c--dimmer, footer .list li:not(:last-child)::after { + color: #999; + color: var(--dimmer-color); } + +.c--theme-dimmer { + color: #bbb; + color: var(--theme-color-dimmer); } + +.b--dimmer, .contents div.code { + border-color: #999; + border-color: var(--dimmer-color); } + +.b--theme-dimmer { + border-color: #bbb; + border-color: var(--theme-color-dimmer); } + +.c--dimmest { + color: #bbb; + color: var(--dimmest-color); } + +.c--theme-dimmest { + color: #ccc; + color: var(--theme-color-dimmest); } + +.b--dimmest, header #login-popup, .optionbar, .post .contents blockquote { + border-color: #bbb; + border-color: var(--dimmest-color); } + +.b--theme-dimmest { + border-color: #ccc; + border-color: var(--theme-color-dimmest); } + +.bg--dim { + background-color: #f0f0f0; + background-color: var(--dim-background); } + +.bg--content { + background-color: #f8f8f8; + background-color: var(--content-background); } + +.f8 { + font-size: 0.65rem; } + +.mw-site { + max-width: 80rem; } + +.mh-100 { + max-height: 100%; } + +.mh-50vh { + max-height: 50vh; } + +.mh-60vh { + max-height: 60vh; } + +.mh-70vh { + max-height: 70vh; } + +.mh-80vh { + max-height: 80vh; } + +.fira { + font-family: "Fira Sans", sans-serif; } + +.bi-avoid { + break-inside: avoid; } + +.cc-auto { + column-count: auto; } + +.cc1 { + column-count: 1; } + +.cc2 { + column-count: 2; } + +.cc3 { + column-count: 3; } + +.cg0 { + column-gap: 0; } + +.cg1 { + column-gap: 0.25rem; } + +.cg2 { + column-gap: 0.5rem; } + +.cg3 { + column-gap: 1rem; } + +.cg4 { + column-gap: 2rem; } + +.cg5 { + column-gap: 4rem; } + +@media screen and (min-width: 30em) { + .bi-avoid-ns { + break-inside: avoid; } + .cc-auto-ns { + column-count: auto; } + .cc1-ns { + column-count: 1; } + .cc2-ns { + column-count: 2; } + .cc3-ns { + column-count: 3; } + .cg0-ns { + column-gap: 0; } + .cg1-ns { + column-gap: 0.25rem; } + .cg2-ns { + column-gap: 0.5rem; } + .cg3-ns { + column-gap: 1rem; } + .cg4-ns { + column-gap: 2rem; } + .cg5-ns { + column-gap: 4rem; } + .bg--dim-ns { + background-color: #f0f0f0; + background-color: var(--dim-background); } } + +@media screen and (min-width: 30em) and (max-width: 60em) { + .bi-avoid-m { + break-inside: avoid; } + .cc-auto-m { + column-count: auto; } + .cc1-m { + column-count: 1; } + .cc2-m { + column-count: 2; } + .cc3-m { + column-count: 3; } + .cg1-m { + column-gap: 0.25rem; } + .cg2-m { + column-gap: 0.5rem; } + .cg3-m { + column-gap: 1rem; } + .cg4-m { + column-gap: 2rem; } + .cg5-m { + column-gap: 4rem; } + .bg--dim-m { + background-color: #f0f0f0; + background-color: var(--dim-background); } } + +@media screen and (min-width: 60em) { + .bi-avoid-l { + break-inside: avoid; } + .cc-auto-l { + column-count: auto; } + .cc1-l { + column-count: 1; } + .cc2-l { + column-count: 2; } + .cc3-l { + column-count: 3; } + .cg1-l { + column-gap: 0.25rem; } + .cg2-l { + column-gap: 0.5rem; } + .cg3-l { + column-gap: 1rem; } + .cg4-l { + column-gap: 2rem; } + .cg5-l { + column-gap: 4rem; } + .bg--dim-l { + background-color: #f0f0f0; + background-color: var(--dim-background); } } + +.not-first:first-child { + display: none; } + +.not-first-of-type:first-of-type { + display: none; } + +.not-last:last-child { + display: none; } + +.not-last-of-type:last-of-type { + display: none; } + +.svgicon svg { + fill: currentColor; + width: 1em; + height: 1em; } + +.svgicon:not(.svgicon-nofix) svg { + transform: translate(0px, 0.1em); } + +.center-layout { + margin-right: auto; + margin-left: auto; } + +header { + border-bottom: 2px solid #333; } + header .menu-bar { + width: 100%; + z-index: 10; } + header .menu-bar .items a { + font-weight: bold; } + header .menu-bar .items a.patreon { + float: right; + height: 30px; + padding-top: 18px; + display: inline-block; } + header .menu-bar .items a h1 { + display: inline; } + header .menu-bar .hmdev-logo { + width: 100%; } + @media screen and (min-width: 30em) { + header .menu-bar .hmdev-logo { + width: 11.25rem; } } + header .menu-bar .hmdev-logo.project { + width: 70px; } + +@keyframes logo-blink { + from { + opacity: 0.0; } + to { + opacity: 1.0; } } + +@-webkit-keyframes logo-blink { + from { + opacity: 0.0; } + to { + opacity: 1.0; } } + header .menu-bar .logo { + height: 3.75rem; + background-color: #333; + margin: 0px; + padding: 0px; } + header .menu-bar .underscore { + width: 100%; + height: 100%; + animation: logo-blink 1s infinite alternate; + -webkit-animation: logo-blink 1s infinite alternate ease-in-out; } + header .menu-bar .logo, header .menu-bar .underscore { + background-size: 8.75rem; + background-repeat: no-repeat; + background-position: center center; } + header .user-options { + position: relative; } + header .login, header .register { + text-align: center; } + header #login-popup { + background-color: #fbfbfb; + background-color: var(--login-popup-background); + color: black; + color: var(--fg-font-color); + border-width: 1px; + border-style: dashed; + visibility: hidden; + position: absolute; + z-index: 12; + margin-top: 10px; + right: 0px; + top: 20px; + width: 290px; + max-height: 0px; + overflow: hidden; + opacity: 0; + transition: all 0.2s; } + header #login-popup.open { + max-height: 170px; + opacity: 1; + visibility: visible; } + header #login-popup label { + padding-right: 10px; } + +@media screen and (min-width: 30em) { + footer .list li:not(:last-child)::after { + content: ' / '; } } + +.content { + background-color: #f8f8f8; + background-color: var(--content-background); + text-align: center; + margin: auto; } + .content p { + -moz-text-size-adjust: auto; + -webkit-text-size-adjust: auto; + text-size-adjust: auto; } + .content .description { + line-height: 1.42em; + text-align: left; + margin: auto; } + .content .description p { + margin-bottom: 0.5rem; + text-align: left; } + .content > .top-bar { + text-align: left; } + +.content-block { + /* Background color given by theme */ + background-repeat: repeat-x; + border-radius: 2px; + text-align: left; + width: 100%; + /* box-shadow: 0px 4px 7px rgba(0,0,0,0.5); /* Not themed */ + position: relative; + box-sizing: border-box; } + .content-block.top-bar { + background-image: none; } + .content-block.language-desc { + padding: 10px; } + .content-block.language-desc h3 { + margin-left: 10px; } + .content-block .no-bg { + background-image: none; + background-color: transparent; + box-shadow: none; } + +.sidebar .content-block.single { + padding: 0px; + /* for project list, TODO */ + margin-top: 20px; } + +.sidebar .content-block.top-bar { + /* box-shadow: 0px 2px 4px rgba(0,0,0,0.2); /* Not themed */ + width: 80%; + display: block; + margin: 10px auto; } + +.sidebar br.sidebar-filler { + line-height: 20px; } + +.sidebar .projectlist { + background-color: transparent; } + +.content-block .bottom-padding, .sidebar .bottom-padding { + margin-top: 1rem; } + +.breadcrumb:hover { + text-decoration: underline; } + +.breadcrumb.current { + text-overflow: clip ellipsis; } + +.breadcrumb-before:nth-of-type(n+2)::before { + content: '≫'; } + +.optionbar { + width: 100%; + display: flex; + flex-direction: column; + justify-content: space-between; + text-align: center; + border-style: dashed; + border-width: 0px; + border-bottom-width: 1px; } + @media screen and (min-width: 30em) { + .optionbar { + flex-direction: row; + text-align: left; } } + .optionbar.bottom { + border-bottom-width: 0px; + border-top-width: 1px; } + .optionbar.center { + text-align: center; } + .optionbar .options { + display: flex; + flex-direction: column; } + @media screen and (min-width: 30em) { + .optionbar .options { + flex-direction: row; } } + + .optionbar button, + .optionbar .button, + .optionbar input[type=button], + .optionbar input[type=submit] { + border: none; + background: none; + font-weight: normal; } + .optionbar .group { + display: inline-block; + height: 100%; + margin: auto; } + +.tab { + background-color: #fff; + background-color: var(--tab-background); } + +.tab-bar { + border-color: #d8d8d8; + border-color: var(--tab-border-color); + width: 100%; + border-bottom-width: 1px; + border-bottom-style: solid; + box-sizing: border-box; } + .tab-bar .tab-button { + background-color: #dfdfdf; + background-color: var(--tab-button-background); + border-color: #d8d8d8; + border-color: var(--tab-border-color); + height: 100%; + display: inline-block; + padding: 10px 15px; + line-height: 100%; + cursor: pointer; + border-width: 1px; + border-style: solid; + box-sizing: border-box; } + .tab-bar .tab-button:hover { + background-color: #efefef; + background-color: var(--tab-button-background-hover); } + .tab-bar .tab-button.current { + background-color: #fff; + background-color: var(--tab-button-background-current); + border-bottom-color: transparent; + font-weight: bold; + height: 105%; } + +.pagination .page.current { + cursor: default; + font-weight: 600; } + .pagination .page.current:hover { + text-decoration: none; } + +.user-link { + position: relative; } + +.user-popup { + opacity: 0; + max-height: 0px; + width: 340px; + text-align: center; + transition: max-height 0.2s, opacity 0.1s; + box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.3); + overflow: hidden; + position: absolute; + bottom: 0px; } + .user-popup.expanded { + visibility: visible; + max-height: 250px; + opacity: 1; } + .user-popup table { + /* Background color given by theme */ + width: 100%; + position: relative; + border-radius: 3px; + z-index: 10; } + .user-popup td { + vertical-align: top; + padding: 15px 9px; } + .user-popup #avatar { + width: 100px; + height: 100px; + background-size: contain; + background-position: center center; + background-repeat: no-repeat; + border-radius: 3px; + margin: 0px auto; } + .user-popup .username { + font-weight: bold; } + .user-popup .bottom { + /* Border color given by theme */ + border-top: 1px solid transparent; + padding: 15px; } + .user-popup .bottom .bio { + vertical-align: top; + width: 90%; } + +.site-search { + width: 100%; } + .site-search:focus { + width: 200%; } + .site-search[type=text].lite { + transition: border-bottom-color 60ms ease-in-out, width 300ms ease; } + +#search_button_homepage { + margin: 0px; + height: 100%; + height: calc(100% - 2px); + border-radius: 0px; + display: inline-block; + display: none; } + +.background-even:nth-of-type(even) { + background-color: #f8f8f8; + background-color: var(--background-even-background); } + +.userlist { + text-align: center; + width: 100%; + margin: 0px auto; + padding-top: 30px; + position: relative; + line-height: 0em; } + .userlist .user { + margin: 5px; + display: inline-block; + height: 200px; + max-height: 180px; + text-align: left; + position: relative; + width: 296px; + border-radius: 3px; + line-height: 1.4em; + overflow: hidden; + box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2); + top: 0px; + transition: box-shadow 0.2s, background-color 0.2s; } + .userlist .user:hover { + box-shadow: 0px 3px 7px rgba(0, 0, 0, 0.2); } + .userlist .user table { + /* Border and background color given by theme */ + border: 1px solid transparent; + width: 100%; + height: 100%; } + .userlist .user .bottom { + transition: background-color 0.2s; } + .userlist .user td { + vertical-align: top; } + .userlist .user td.avatar { + width: 100px; + height: 80px; } + .userlist .user .name { + text-align: left; } + .userlist .user .name .username { + vertical-align: middle; } + .userlist .user .avatar .image { + display: block; + float: left; + width: 80px; + height: 80px; + background-size: cover; + margin-right: 10px; } + .userlist .user .bio { + padding: 5px; } + +.text { + background-color: #f9f9f9; + background-color: var(--text-background); } + +.underline { + text-decoration: underline; } + +.monospace { + font-family: "Fira Mono", monospace; + background-color: rgba(0, 0, 0, 0.1); + padding: 0.2em 0 0.05em; + border-radius: 3px; } + .monospace::before, .monospace::after { + content: "\00a0"; + letter-spacing: -0.2em; } + +.center { + text-align: center; } + +.right { + text-align: right; } + +.left { + text-align: left; } + +.justify { + text-align: justify; + -webkit-hyphens: manual; + -moz-hyphens: manual; + -ms-hyphens: manual; + hyphens: manual; } + +.spoiler { + border-color: #aaa; + border-color: var(--spoiler-border); + border-width: 1px; + border-style: dashed; + color: transparent; } + .spoiler::selection { + color: white; + background-color: black; } + +pre { + font-family: monospace; } + +.post-edit { + width: 90%; + margin: auto; } + +.toolbar { + background-color: #fff; + background-color: var(--editor-toolbar-background); + border-color: transparent; + border-color: var(--editor-toolbar-border-color); + border-radius: 3px; + height: 2.2em; + overflow-y: scroll; + transition: all 0.3s; + border: 1px solid transparent; } + .toolbar .button, .toolbar input[type=button] { + background-color: transparent; + background-color: var(--editor-toolbar-button-background); + border-color: #ccc; + border-color: var(--editor-toolbar-button-border-color); + line-height: 2.2em; + box-shadow: none; + border: 0px; + border-right: 1px solid transparent; + border-radius: 0px; + margin: 0px; + padding: 0px 10px; + height: 100%; + vertical-align: bottom; + text-transform: none; + font-weight: 300; } + .toolbar .button:hover, .toolbar input[type=button]:hover { + background-color: #ddd; + background-color: var(--editor-toolbar-button-background-hover); } + .toolbar input[type="text"] { + height: 2.2em; + border: 0px solid transparent; + /* Not themed */ } + +.actionbar { + text-align: center; } + +.editor .body { + width: 100%; + font-size: 13pt; + height: 25em; } + +.editor .title-edit { + width: 100%; } + .editor .title-edit label { + font-weight: bold; } + .editor .title-edit input { + width: 100%; } + +.editor .editreason label { + font-weight: bold; } + +.editor .editreason input { + width: 100%; } + +.editor .toolbar { + width: 95%; + margin: 10px auto; } + .editor .toolbar select { + font-size: 10pt; + border: 0px; } + .editor .toolbar select:hover { + border: 0px; } + .editor .toolbar select:focus { + border: 0px; } + .editor .toolbar #bold { + font-weight: bold; } + .editor .toolbar #italic { + font-style: italic; } + .editor .toolbar #underline { + text-decoration: underline; } + .editor .toolbar #monospace { + font-family: monospace; } + .editor .toolbar #url { + text-decoration: underline; + font-style: italic; } + +.editor .actionbar input[type=button] { + margin-left: 10px; + margin-right: 10px; } + +.edit-form .error { + margin-left: 5em; + padding: 10px; + color: red; } + +.edit-form input[type=text] { + min-width: 20em; } + +.edit-form textarea { + font-size: 13pt; } + +.edit-form .note { + margin-bottom: 5px; + font-style: italic; + font-size: 90%; } + +.edit-form .links { + width: 80%; + min-height: 200px; + height: 15vh; } + +.edit-form .half { + padding: 10px; + text-align: center; } + +.edit-form table { + width: 95%; + margin: auto; + border-collapse: separate; + border-spacing: 0px 10px; } + .edit-form table td { + padding-bottom: 15px; + width: 90%; } + .edit-form table td.half { + width: 50%; } + .edit-form table td table { + width: 100%; } + +.edit-form th { + text-align: right; + font-weight: bold; + padding-right: 10px; + padding-bottom: 15px; + vertical-align: top; + max-width: 5em; } + +.edit-form td table th { + text-align: left; } + +.edit-form .page-options label { + font-weight: bold; + margin-right: 20px; } + +.edit-form.profile-edit .longbio { + width: 100%; + min-height: 400px; + height: 30vh; } + +.edit-form.profile-edit .avatar-preview { + border: 1px solid transparent; + margin: 10px; + margin-bottom: 0px; } + +.edit-form.profile-edit textarea.shortbio, +.edit-form.profile-edit textarea.signature { + min-width: 300px; + width: 50%; + min-height: 100px; + height: 4em; } + +.edit-form.profile-edit .logo-preview { + border-color: #999; + border-color: var(--project-edit-logo-previw-border-color); + width: 200px; + border-width: 1px; } + +.edit-form.project-edit .project_description { + width: 100%; + min-height: 400px; + height: 30vh; } + +.edit-form.project-edit input.project_blurb, +.edit-form.project-edit input.project_name { + min-width: 300px; + width: 50%; } + +.edit-form.project-edit .quota-bar { + border-color: #999; + border-color: var(--project-edit-quota-bar-border-color); + width: 500px; + border-width: 1px; + margin-bottom: 10px; } + .edit-form.project-edit .quota-bar .quota-filled { + background-color: #444; + background-color: var(--project-edit-quota-bar-filled-background); + height: 100%; } + +.episode-list .description p { + line-height: 1.42em; } + +.episode-list h2, .episode-list h3 { + font-size: 1em; + font-weight: bold; } + +.episode-list ul { + margin-bottom: 30px; + list-style-type: none; + margin-top: -2px; } + +#outer_holder .back { + margin: 0px auto 20px auto; } + #outer_holder .back .outer { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + align-items: flex-start; + -webkit-justify-content: center; + justify-content: center; } + #outer_holder .back .outer > .sidebar { + max-width: 260px; } + #outer_holder .back .outer > .sidebar > div { + margin: 6px; + background-color: #ddd; + width: 200px; + margin-bottom: 12px; } + #outer_holder .back article { + -webkit-box-flex: 1 1 40%; + -moz-box-flex: 1 1 40%; + -webkit-flex: 1 1 40%; + -ms-flex: 1 1 40%; + flex: 1 1 40%; } + +#player-wrapper { + display: inline-block; + -webkit-box-flex: 0 1 auto; + -moz-box-flex: 0 1 auto; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + box-shadow: 0px 0px 4px #000; } + +@media screen { + #player-wrapper #player { + width: 320px; + height: 210px; } } + +@media screen and (min-width: 500px) { + #player-wrapper #player { + width: 480px; + height: 300px; } } + +@media screen and (min-width: 670px) { + #player-wrapper #player { + width: 640px; + height: 390px; } } + +@media screen and (min-width: 890px) { + #player-wrapper #player { + width: 854px; + height: 510px; } } + +@media screen and (min-width: 1320px) { + #player-wrapper #player { + width: 1280px; + height: 750px; } } + +.annotation { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + align-items: flex-start; } + .annotation .navigation { + width: 450px; + display: inline-block; } + .annotation .notes { + display: inline-block; } + +nav.timecodes { + margin: 0px; + max-width: 450px; + min-height: 700px; + overflow-y: auto; + -webkit-box-flex: 0 0 auto; + -moz-box-flex: 0 0 auto; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + nav.timecodes a { + color: #ccc; } + nav.timecodes ul[name=markers] { + margin: 0px; + padding: 0px; + list-style-type: none; + font-size: 15px; } + nav.timecodes ul[name=markers] > li { + padding: 4px; + display: block; + border-bottom: 1px solid #333; } + nav.timecodes ul[name=markers] > li:hover { + background-color: rgba(0, 90, 0, 0.3); } + nav.timecodes ul[name=markers] > li a { + display: block; + text-decoration: none; } + nav.timecodes ul[name=markers] > li a span.timecode { + color: #777777; + float: left; + font-size: 86%; + margin-right: .5em; + text-align: right; + width: 42px; } + +#video-notes { + min-height: 700px; + margin-top: 0px; } + #video-notes pre { + margin-top: 1.5em; + margin-left: 10px; + margin-right: 30px; + margin-bottom: 1.5em; + padding: 10px; + overflow: auto; } + +#game_icon { + background-position: 0px 0px; + background-repeat: no-repeat; + background-image: url("/images/hero_home_200x114.png"); + background-size: cover; + height: 113px; + margin: 0px 0px 4px 0px; } + +.sidebar-heading { + margin: 0px 0px 16px; + font-size: 18px; + line-height: 24px; + font-weight: bold; + color: #00547c; + white-space: nowrap; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.25); + text-align: center; } + +.queryContainer { + width: 1000px; + margin: 15px auto; + display: flex; + flex-direction: horizontal; } + .queryContainer label { + flex-grow: 0; + flex-shrink: 0; + padding-right: 15px; } + +#query { + flex-grow: 1; } + +#results { + width: 800px; + margin: 0 auto; } + +.dayContainer:nth-child(2n) { + background-color: rgba(0, 0, 0, 0.05); } + +.dayName { + width: 200px; + display: inline-block; + vertical-align: top; + line-height: 16px; + box-sizing: border-box; + padding: 5px; } + +.markerList { + display: inline-block; + width: 600px; + box-sizing: border-box; + vertical-align: top; } + +.marker { + cursor: pointer; + border-top: 1px solid rgba(255, 255, 255, 0.1); + display: block; + text-decoration: none; } + .marker:first-child { + border: none; } + .marker:hover { + background-color: rgba(0, 0, 0, 0.1); } + .marker b { + color: black; + background-color: #ff9b00; } + +#resultsSummary { + text-align: center; + margin: 10px 0; } + +.radio, .checkbox { + position: relative; + display: flex; + flex-direction: column; + padding-left: 1.8rem; } + .radio input, .checkbox input { + visibility: hidden; + position: absolute; } + .radio label::before, .checkbox label::before { + color: black; + color: var(--fg-font-color); + background-color: #fafafc; + background-color: var(--form-check-background); + border-color: #999; + border-color: var(--form-check-border-color); + position: absolute; + left: 0; + display: flex; + justify-content: center; + align-items: center; + border-width: 1px; + border-style: solid; + content: ""; + width: 1.3rem; + height: 1.3rem; + transition: border-color 0.2s; } + .radio label::before:hover, .checkbox label::before:hover { + border-color: #4c9ed9; + border-color: var(--form-check-border-color-hover); } + .radio input:disabled ~ *, .checkbox input:disabled ~ * { + opacity: 0.5; } + +.radio label:before { + border-radius: 50px; } + +.radio input:checked + label:before { + content: "\25cf"; } + +.checkbox label:before { + border-radius: 0.1cm; } + +.checkbox input:checked + label:before { + content: "\2713"; } + +input[type=text], +input[type=password], +textarea, +select { + color: black; + color: var(--fg-font-color); + background-color: #fff; + background-color: var(--form-text-background); + border-color: #999; + border-color: var(--form-text-border-color); + border-width: 1px; + border-radius: 2px; + transition: border-color 0.3s, background-color 0.3s; + outline: none; } + input[type=text].lite, + input[type=password].lite, + textarea.lite, + select.lite { + background-color: transparent; + border-radius: 0; + border-width: 2px 0 2px; + border-style: solid; + border-color: transparent; + transition: border-bottom-color 60ms ease-in-out; } + input[type=text].lite:focus, input[type=text].lite:active, + input[type=password].lite:focus, + input[type=password].lite:active, + textarea.lite:focus, + textarea.lite:active, + select.lite:focus, + select.lite:active { + background-color: transparent; + border-top-color: transparent; + border-bottom-color: var(--input-lite-border); } + input[type=text]:active, input[type=text]:focus, + input[type=password]:active, + input[type=password]:focus, + textarea:active, + textarea:focus, + select:active, + select:focus { + background-color: #fafafc; + background-color: var(--form-text-background-active); + border-color: #4c9ed9; + border-color: var(--form-text-border-color-active); } + +input[type=text]:not(.lite), input[type=password]:not(.lite) { + padding: 5px; } + +form .note { + font-style: italic; } + +select { + padding: 5px 10px; } + +option[selected] { + font-weight: bold; } + +input[disabled], select[disabled], textarea[disabled] { + opacity: 0.5; } + + +button, +.button, +input[type=button], +input[type=submit] { + color: black; + color: var(--form-button-color); + background-color: #fff; + background-color: var(--form-button-background); + border-color: #ccc; + border-color: var(--form-button-border-color); + border-width: 1px; + border-style: solid; + display: inline-block; + border-radius: 2px; + transition: background-color 0.1s, border-color 0.1s; + cursor: pointer; + font-weight: 600; } + + button:hover, + .button:hover, + input[type=button]:hover, + input[type=submit]:hover { + color: #4c9ed9; + color: var(--form-button-color-active); + background-color: #f2f2f2; + background-color: var(--form-button-background-active); } + + button.lite, + .button.lite, + input[type=button].lite, + input[type=submit].lite { + border: none; + background: none; + font-weight: normal; } + + button.inline-button, + .button.inline-button, + input[type=button].inline-button, + input[type=submit].inline-button { + border-color: #999; + border-color: var(--form-button-inline-border-color); + margin: 5px; + box-shadow: none; + border-width: 1px; + border-style: solid; + padding: 5px 7px; } + +.tabbar { + height: 40px; + padding-left: 50px; + margin-bottom: 20px; } + .tabbar .tab { + padding: 10px; + border-bottom: none; } + .tabbar .tab.current { + /* Border color given by theme */ + border-bottom: 2px solid transparent; } + +.generic-form { + width: 60%; + max-width: 50em; + margin: auto; + margin-top: 50px; + padding: 50px; + border: 1px solid transparent; + border-bottom-width: 0px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .generic-form table { + border-collapse: separate; + border-spacing: 4px; } + .generic-form th { + padding-right: 10px; + text-align: right; } + .generic-form th.error { + color: red; + text-align: center; } + +#search_form_input_homepage { + background-color: #f8f8f8; + background-color: var(--landing-search-background); } + #search_form_input_homepage:hover, #search_form_input_homepage:focus { + background-color: #fefeff; + background-color: var(--landing-search-background-hover); } + +.display-options { + height: 100%; + padding: 0px 20px 0px 20px; } + .display-options > * { + display: inline-block; + vertical-align: middle; } + +.forum h3 { + margin: 0px 80px 0px 20px; + font-weight: bold; } + +.forum-narrow .forum-narrow-hide { + display: none; } + +.thread { + color: black; + color: var(--fg-font-color); } + .forum .thread:nth-of-type(odd), + .feed .thread:nth-of-type(odd) { + background-color: #f0f0f0; + background-color: var(--forum-even-background); } + .profile .thread { + padding-left: 15px; } + .thread .title { + font-weight: bold; + transition: border-bottom-color 0.1s; + border-bottom-color: transparent; } + .thread .title:hover { + border-bottom-color: initial; } + .thread.read { + color: #555; + color: var(--forum-thread-read-color); } + .thread.read td { + color: #555; + color: var(--forum-thread-read-color); } + .thread.read a { + color: #888; + color: var(--forum-thread-read-link-color); } + .thread.read .title { + font-weight: 500; } + .thread .goto { + font-size: 200%; + width: 30px; } + .thread .goto a { + display: block; + padding: 0px 10px; + box-sizing: border-box; + position: relative; + line-height: 100%; + background-color: transparent; } + .forum .thread .info th { + width: 50px; } + +.avatar-icon { + width: 40px; + height: 40px; + flex-shrink: 0; + border-radius: 100%; + overflow: hidden; + background-color: #bbb; + background-color: var(--dimmest-color); } + .thread .avatar-icon:not(.lite) { + left: 30px; + bottom: 10px; } + .thread .info .avatar-icon:not(.lite) { + bottom: 0px; + left: 0px; } + .feed .avatar-icon:not(.lite) { + left: -50px; + bottom: -10px; } + .project .box .avatar-icon:not(.lite) { + left: 0px; + bottom: -10px; } + +.badge { + display: inline-block; + border-radius: 1000em; + padding: 0 0.8em; + font-size: 0.9em; + line-height: 1.8em; + font-weight: bold; } + .badge.staff { + background-color: #17b2c6; + color: white; } + .badge.staff::before { + content: 'Staff'; } + +.contents div.code { + max-width: 100%; + max-height: 20em; + max-height: 80vh; + overflow: auto; + -moz-tab-size: 4; + tab-size: 4; + border-width: 1px; + border-style: solid; } + +.contents div + br, +.contents blockquote + br, +.contents ul + br, +.contents ol + br { + display: none; } + +.codeblocktable { + font-family: "Fira Mono", monospace; + font-size: 14px; + overflow: auto; + line-height: 1.5em; } + .codeblocktable tbody { + width: 100%; } + .codeblocktable .linenos { + color: #777; + color: var(--code-line-number-color); + font-weight: 500; + padding: 5px; + background: rgba(0, 0, 0, 0.15); } + .codeblocktable .code { + /* Background color given by theme */ + padding-right: 20px; + padding-left: 10px; + max-width: 80em; } + +.wiki .post { + padding: 0; + margin: auto; + max-width: 70em; } + +.post .contents h1, .post .contents h2 { + margin: 20px 0px; } + +.post .contents h2 { + font-size: 20px; } + +.post .contents h5, .post .contents h6 { + margin: 10px 0px; } + +.post .contents strong { + font-weight: 500; } + +.post .contents blockquote { + display: block; + margin-top: 0; + margin-bottom: 0; + padding: 10px 18px; + padding-top: 0; + padding-bottom: 0; + margin-left: 20px; + margin-right: 20px; + border-left-width: 1px; + border-left-style: solid; } + .post .contents blockquote .quotewho { + line-height: 2em; } + .post .contents blockquote .quotewho::after { + content: " said:"; } + +.post .contents img { + max-width: 100%; } + +.post.bbcode .contents h1, .post.bbcode .contents h2, .post.bbcode .contents h3 { + display: inline; } + +.project .post .contents h3, +.post .contents h4 { + display: block; + font-size: 18px; + margin: 10px 0px; } + +.post .action.button { + padding: 0px 10px; + margin-top: 0px; + margin-right: 4px; + background-color: transparent; + font-size: 130%; + border-radius: 0px; + border-width: 0px; + border-bottom-width: 2px; + transition: border-bottom-width 0.1s; } + .post .action.button:hover { + border-bottom-width: 4px; } + +.post hr { + max-width: 90%; } + +.post .signature hr { + width: 80%; } + +.post .body .size1, .post-preview .size1 { + font-size: 12px; } + +.post .body .size2, .post-preview .size2 { + font-size: 13px; } + +.post .body .size3, .post-preview .size3 { + font-size: 14px; } + +.post .body .size4, .post-preview .size4 { + font-size: 15px; } + +.post .body .size5, .post-preview .size5 { + font-size: 16px; } + +.blog .post .meta { + position: relative; } + +.blog .post.op .meta { + margin-bottom: 10px; } + +.blog .post .badges { + width: 40px; + font-size: 0.7em; + text-align: center; } + +.blog .post.op .body { + padding-top: 6px; } + .blog .post.op .body .contents { + text-align: left; } + .blog .post.op .body p { + margin-top: 8px; + margin-bottom: 8px; + text-align: left; } + +.blog .sidebar .post > .author { + padding: 15px; + text-align: center; } + +.blog .sidebar .recent-posts { + text-align: center; + padding: 15px; } + .blog .sidebar .recent-posts h2 { + display: inline; } + +.blog .sidebar .archive ul { + list-style-type: none; + text-align: left; } + +.blog .post-list .post:nth-child(even) { + background-color: transparent; } + +.wiki .post p { + margin: 10px 0px; } + +.wiki .toc { + border-color: #aaa; + border-color: var(--wiki-border-color); + border-left-width: 1px; } + .wiki .toc .toc-number { + color: #333; + color: var(--wiki-toc-number-color); } + .wiki .toc ul { + list-style-type: none; + margin-left: 10px; + margin-bottom: 5px; } + .wiki .toc li { + margin-left: 0px; } + +.wiki .aside { + border-color: #aaa; + border-color: var(--wiki-border-color); + border-left-width: 1px; + margin-left: 20px; } + .wiki .aside::before { + margin-left: -20px; + margin-right: 15px; + display: inline-block; + width: 10px; + content: "\21b4 "; } + .wiki .aside .aside-heading { + padding: 2px; + margin: 1px; + border-radius: 3px; + border-width: 0px; + cursor: pointer; + display: inline; + background-color: transparent; } + .wiki .aside > .aside-body { + overflow: hidden; + padding-left: 10px; } + .wiki .aside.folded::before { + content: "\2192 "; } + .wiki .aside.folded > .aside-body { + max-height: 0px; } + +.featured-post .meta .avatar-icon { + left: -60px; + bottom: -5px; } + +.blog .body blockquote, +.wiki .body blockquote { + padding-top: 1px; + padding-bottom: 1px; } + +.content-block.blog p.title { + font-weight: bold; } + .content-block.blog p.title a { + border-bottom-width: 0px; } + .content-block.blog p.title a:hover { + border-bottom-width: 1px; } + +a.mark_as_read { + float: right; } + +.mark_as_read_toplevel_forum { + margin-left: auto; + margin-right: auto; + width: 100%; + text-align: center; } + .mark_as_read_toplevel_forum a { + text-decoration: underline; } + +div.mark_as_read_toplevel_blog { + margin-left: auto; + margin-right: auto; + width: 100%; + text-align: center; } + div.mark_as_read_toplevel_blog a { + text-decoration: none; } + +.mark_as_read_toplevel_blog div.mark_as_read_site { + margin-left: auto; + margin-right: auto; + width: 100%; + text-align: center; } + .mark_as_read_toplevel_blog div.mark_as_read_site a { + text-decoration: none; } + +.mark_as_read_site li.post-entry { + margin-left: 0px; + margin-bottom: 3px; } + +.diff { + width: 100%; + max-height: 100vh; + overflow-y: scroll; + margin-top: 20px; } + .diff > .post-source { + color: black; + color: var(--fg-font-color); + background-color: #fff; + background-color: var(--forum-diff-source-background); + border-color: #999; + border-color: var(--forum-diff-source-border-color); + border-width: 1px; + border-radius: 2px; + font-family: "Fira Mono", monospace; + width: 49%; + box-sizing: border-box; + padding: 4px; + display: inline-block; + vertical-align: top; } + .diff .diff-replace, + .diff .diff-delete, + .diff .diff-insert { + border-width: 1px; + border-radius: 2px; + padding: 1px; } + .diff .diff-replace { + background-color: #adcef4; + background-color: var(--forum-diff-replace-background); + border-color: #4787d1; + border-color: var(--forum-diff-replace-border-color); } + .diff .diff-delete { + background-color: #e57979; + background-color: var(--forum-diff-delete-background); + border-color: #c12626; + border-color: var(--forum-diff-delete-border-color); } + .diff .diff-insert { + background-color: #96e579; + background-color: var(--forum-diff-insert-background); + border-color: #5baa3f; + border-color: var(--forum-diff-insert-border-color); } + +.index { + list-style-type: none; + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + margin-top: 20px; } + .index .index-category { + margin-bottom: 20px; + -webkit-column-break-inside: avoid; + page-break-inside: avoid; + break-inside: avoid-column; } + +.bbtable { + width: 100%; + border: 1px solid; } + .bbtable td, .bbtable th { + border: 1px solid; + padding: 4px; } + .bbtable th { + background: rgba(0, 0, 0, 0.15); + font-weight: bold; + border-bottom-width: 2px; } + .bbtable tbody tr:nth-child(even) { + background: rgba(0, 0, 0, 0.05); } + +@font-face { + font-family: icons; + src: url("/static/icon/icons.ttf?v=4"); } + +span.icon { + font-family: "icons"; } + +span.icon-settings::before { + font-family: "icons"; + content: "0"; } + +span.icon-link::before { + font-family: "icons"; + content: "1"; } + +span.icon-logout::before { + font-family: "icons"; + content: "2"; } + +span.icon-twitter::before { + font-family: "icons"; + content: "#"; } + +span.icon-twitch::before { + font-family: "icons"; + content: "$"; } + +span.icon-github::before { + font-family: "icons"; + content: "%"; } + +span.icon-patreon::before { + font-family: "icons"; + content: "&"; } + +span.icon-youtube::before { + font-family: "icons"; + content: "'"; } + +span.icon-soundcloud::before { + font-family: "icons"; + content: "*"; } + +span.icon-web::before { + font-family: "icons"; + content: "3"; } + +span.icon-itchio::before { + font-family: "icons"; + content: "+"; } + +span.icon-hitbox::before { + font-family: "icons"; + content: ","; } + +span.icon-rss::before { + font-family: "icons"; + content: "4"; } + +.chat { + border-color: #ddd; + border-color: var(--irc-border-color); + margin: auto; + width: 100%; + border: 1px solid transparent; + position: relative; + overflow: hidden; + padding-right: 8px; + box-sizing: border-box; } + .chat #tabs { + overflow-y: scroll; + box-sizing: border-box; } + .chat #tabs .hidden { + display: none; } + .chat #tabs .current { + box-shadow: 0px 0px 5px #bbb inset; + box-shadow: var(--irc-tab-current-shadow); } + .chat #tabs .button { + padding-left: 10px; + padding-right: 3px; + transition: width 0.2s; + text-transform: none; + vertical-align: top; } + .chat #tabs .button .close-btn { + visibility: hidden; + opacity: 0; + transition: opacity 0.2s; + display: inline-block; + font-size: 9pt; + vertical-align: middle; + height: 13px; + line-height: 11px; + width: 13px; + margin-left: 5px; + padding-left: 2px; + padding-right: 3px; + border-radius: 3px; + border: 1px solid transparent; + /* Not themed */ + position: relative; + top: -2px; } + .chat #tabs .button:hover .close-btn { + color: #fff; + color: var(--irc-tab-close-button-color); + background-color: #aaa; + background-color: var(--irc-tab-close-button-background); + visibility: visible; + opacity: 1; } + .chat #tabs .new-tab { + padding: 0px; + padding-left: 10px; } + .chat #history { + width: 100%; + min-height: 300px; + height: 50vh; + overflow-y: auto; + padding-top: 3px; + box-sizing: border-box; } + .chat #history .channel { + width: 100%; + display: none; } + .chat #history .channel.current { + display: table; } + .chat #history .channel.hidden { + display: none; } + .chat #history .entry { + display: table-row; + width: 100%; + font-size: 11pt; } + .chat #history .entry.minor { + color: #777; + font-size: 10pt; } + .chat #history .entry.alert { + color: #dd683b; } + .chat #history .entry.error { + color: #880000; + font-style: italic; } + .chat #history .entry.action { + font-style: italic; } + .chat #history .entry.action .msg .action-name { + font-weight: bold; } + .chat #history .entry .nick, .chat #history .entry .msg { + display: table-cell; + padding: 0px 4px; } + .chat #history .entry .nick { + border-color: #ccc; + border-color: var(--irc-nick-border-color); + font-weight: bold; + text-align: right; + border-right-width: 1px; + border-right-style: solid; } + .chat #history .entry .msg { + width: 100%; } + .chat #history .entry .msg .highlight { + background-color: #dd683b; + color: #fff; + padding: 0px 5px; } + .chat #history .entry .msg .emote { + height: 1.6em; + vertical-align: middle; } + .chat #chatbox { + width: 100%; } + .chat #users { + color: black; + color: var(--irc-users-color); + background-color: #fff; + background-color: var(--irc-users-background); + border-color: #ccc; + border-color: var(--irc-users-border-color); + position: absolute; + border-left-width: 1px; + border-left-style: solid; + padding: 5px; + right: 0px; + top: 0px; + color: #333; + height: 100%; + max-width: 20%; + width: 20%; + transition: right 0.2s; + max-height: 100%; + overflow-y: auto; + box-sizing: border-box; } + .chat #users.collapsed { + right: -20%; } + .chat #users .popout { + background-color: #fff; + background-color: var(--irc-users-popout-background); + border-left-color: #bbb; + border-left-color: var(--irc-users-popout-border-color-left); + border-right-color: #ccc; + border-right-color: var(--irc-users-popout-border-color-right); + width: 8px; + font-size: 7pt; + height: 100%; + border-radius: 2px; + border: 0px solid transparent; + /* Not themed */ + border-left-width: 1px; + border-left-style: solid; + border-right-width: 1px; + border-right-style: solid; + position: absolute; + top: 0px; + left: -8px; + box-shadow: 0px 0px 0px transparent; + /* Not themed */ + text-align: center; + margin: 0px; + cursor: pointer; } + .chat #users .op { + font-weight: bold; } + .chat #users .user { + cursor: pointer; } + +.landing .breadcrumb { + padding: 0px 3px; } + .landing .breadcrumb:first-child { + padding-left: 0px; } + +.landing .more { + display: block; + margin-top: 10px; } + +.landing .contents { + margin-bottom: 20px; } + +.landing .showcase .arrow-container { + width: 60px; + position: absolute; + top: 0; + bottom: 0; + z-index: 2; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } + .landing .showcase .arrow-container.left { + left: 0; + background-image: linear-gradient(to right, #f8f8f8 , rgba(0, 0, 0, 0)); + background-image: linear-gradient(to right, var(--content-background) , rgba(0, 0, 0, 0)); } + .landing .showcase .arrow-container.left svg { + transform: translateX(-0.05rem); } + .landing .showcase .arrow-container.right { + right: 0; + background-image: linear-gradient(to left, #f8f8f8 , rgba(0, 0, 0, 0)); + background-image: linear-gradient(to left, var(--content-background) , rgba(0, 0, 0, 0)); } + .landing .showcase .arrow-container.right svg { + transform: translateX(0.05rem); } + .landing .showcase .arrow-container.hide { + opacity: 0; + pointer-events: none; } + .landing .showcase .arrow-container .arrow { + background-color: #f8f8f8; + background-color: var(--content-background); + border-radius: 100%; + width: 2.4rem; + height: 2.4rem; + font-size: 1rem; + transition: opacity 40ms ease-in-out; + box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.2); + display: flex; + justify-content: center; + align-items: center; } + +.landing #showcase-items { + transition: transform 200ms ease-in-out; } + +.landing .showcase-item { + width: 7rem; + height: 7rem; } + @media screen and (min-width: 30em) { + .landing .showcase-item { + width: 10rem; + height: 10rem; } } + +.star-btn { + border-bottom-width: 2px; + background-color: #fff; + background-color: var(--library-star-btn-background); + border-color: #999; + border-color: var(--library-star-btn-border-color); } + .star-btn a { + border-color: #aaa; + border-color: var(--library-star-btn-a-border-color); } + .star-btn a:hover { + background-color: #fafafa; + background-color: var(--library-star-btn-a-hover-background); } + +.library-dropcap { + width: 1em; + height: 1.1em; + padding-top: 0.19em; + text-align: center; + font-size: 2rem; } + +.profile .content .description { + margin: 0px auto; + max-width: 40em; } + +.profile .content h2 { + margin-bottom: 10px; } + +.profile ul.recent-posts, .profile ul.recent-comments { + list-style-type: none; } + +.profile ul .entry { + margin-left: 20px; } + +.profile .entry .context { + font-weight: bold; + border-bottom: 0px; } + +.profile .content-block.projects { + background-image: none; + overflow-y: visible; } + +.profile .content-block.avatar, +.project .content-block.logo { + background-color: transparent; + background-image: none; + box-shadow: none; + min-height: 200px; } + +.project .content-block.screenshots, +.profile .content-block.projects { + padding: 0px; + min-height: 0em; } + +.project .notice { + color: #fff; + color: var(--project-notice-text-color); } + .project .notice a { + color: #fff; + color: var(--project-notice-text-color); + border-bottom-color: #fff; + border-bottom-color: var(--project-notice-text-color); } + +.project .pair { + display: flex; + align-items: flex-start; } + .project .pair .key { + font-weight: bold; + flex-shrink: 0; } + .project .pair .value { + text-align: right; + flex-grow: 1; } + +.project .settings-icon { + z-index: 10; + position: absolute; + width: 25px; + height: 25px; + right: 5px; + top: 5px; + margin: 0px; + text-align: center; + padding: 3px; + border-radius: 5px; + line-height: 100%; + box-sizing: border-box; } + +.project .screenshots .slideshow { + background-color: black; } + +.project .tags { + text-align: center; } + .project .tags h2 { + margin-bottom: 5px; } + .project .tags li { + display: inline-block; } + +.project .button-bar { + border: none; } + +.project .forum h3 { + margin: 0; } + +.project .forum .thread-entry-right { + display: none; } + +.notice-unapproved { + background-color: #b42222; + background-color: var(--notice-unapproved-color); } + +.notice-hidden { + background-color: #b6b6b6; + background-color: var(--notice-hidden-color); } + +.notice-hiatus { + background-color: #aa7d30; + background-color: var(--notice-hiatus-color); } + +.notice-dead { + background-color: #b42222; + background-color: var(--notice-dead-color); } + +.notice-lts { + background-color: #43a52f; + background-color: var(--notice-lts-color); } + +.notice-lts-reqd { + background-color: #aa7d30; + background-color: var(--notice-lts-reqd-color); } + +.project-carousel-container { + width: 50rem; } + .project-carousel-container .project-carousel { + box-sizing: content-box; + position: relative; + height: 12rem; } + @media screen and (min-width: 60em) { + .project-carousel-container .project-carousel { + height: 16rem; } } + .project-carousel-container .project-carousel-item { + position: absolute; + top: 0; + left: 0; } + .project-carousel-container .project-carousel-item:not(.active) { + display: none; } + .project-carousel-container .project-carousel-item br { + line-height: 0.6em; } + .project-carousel-container .project-carousel-description { + max-height: 14rem; + overflow: hidden; } + .project-carousel-container .project-carousel-fade { + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 30px; + background: linear-gradient( rgba(240, 240, 240, 0) , #f0f0f0 ); + background: linear-gradient( var(--dim-background-transparent) , var(--dim-background) ); } + .project-carousel-container .project-carousel-item-small:not(.active) { + display: none; } + .project-carousel-container .project-carousel-button { + border: 1px solid; + border-color: #999; + border-color: var(--dimmer-color); + cursor: pointer; + transition: all 100ms ease-in-out; } + .project-carousel-container .project-carousel-button:hover { + background-color: #bbb; + background-color: var(--dimmest-color); } + .project-carousel-container .project-carousel-button.active { + border-color: #666; + border-color: var(--theme-color); } + .project-carousel-container .project-carousel-button.active:hover { + background-color: #ccc; + background-color: var(--theme-color-dimmest); } + +.project-card { + color: black; + color: var(--fg-font-color); + background-color: #e8e8e8; + background-color: var(--card-background); + border-color: #aaa; + border-color: var(--project-card-border-color); + transition: box-shadow 0.2s, background-color 0.2s; } + .slideshow .project-card { + margin-top: 8px; } + .project-card:hover { + background-color: #f0f0f0; + background-color: var(--card-background-hover); } + .project-card:hover > .title { + text-decoration: underline; } + .project-card .image-container { + width: 8rem; + min-height: 8rem; } + .project-card .image-container .image { + position: absolute; + width: 8rem; + top: 0; + bottom: 0; } + .project-card .details { + /* Background color given by theme */ + transition: background-color 0.2s; } + .project-card .badges:empty { + display: none; } + .project-card .badge { + color: white; + border-radius: 5px; } + +.sidebar .projectlist { + padding: 0px; + width: 340px; } + .sidebar .projectlist .project-card.more { + height: 40px; + width: 326px; + padding-top: 5px; } + +.screenshots .slide { + max-width: 100%; } + +.slideshow { + /* Background color and color given by theme */ + position: relative; + background-image: none; + overflow: hidden; } + .slideshow .optionbar { + height: 30px; + text-align: center; } + .slideshow .buttons { + display: inline-block; + height: 100%; } + .slideshow .button { + line-height: 100%; + padding: 5px 8px; + font-weight: 400; } + .slideshow .button.current { + font-weight: 600; } + .slideshow #slide-deck { + width: 100%; + position: relative; + transition: left 0.3s; + left: 0px; + text-align: center; + display: flex; + flex-direction: horizontal; + justify-content: space-around; + align-items: center; } + .slideshow .slide { + flex: 1 1 100%; + position: relative; } + .slideshow .slide img { + margin: auto; + max-height: 60vh; + max-width: 100%; } + .slideshow.cards #slide-deck { + justify-content: flex-start; } + .slideshow.cards .slide { + flex: 0 1 auto; } + +#project_owner_suggestions { + max-height: 300px; + overflow: auto; + position: absolute; + border: 1px solid transparent; } + #project_owner_suggestions #user_template { + display: none; } + +.user_suggestions { + background-color: #fff; + background-color: var(--project-user-suggestions-background); + padding-top: 5px; + padding-bottom: 5px; } + .user_suggestions#project_owner_suggestions .user { + border-color: #ddd; + border-color: var(--project-user-suggestions-border-color); + border-bottom-width: 1px; + width: 200px; + box-sizing: border-box; + cursor: pointer; } + .user_suggestions .user { + position: relative; + margin-left: 50px; + display: inline-block; + margin-right: 10px; } + .user_suggestions .user .avatar-icon { + left: -50px; + bottom: 0px; + border-radius: 50%; + border: 2px solid transparent; } + +#project_owners { + min-width: 50%; } + +.showcase-item .gradient { + width: 100%; + height: 114px; + background-image: linear-gradient(rgba(0, 0, 0, 0.82), rgba(0, 0, 0, 0)); } + +.streams-container #empty-message { + display: none; } + +.streams-container .streams:empty { + display: none; } + .streams-container .streams:empty + #empty-message { + display: block; } + +.streams-container .stream .live { + position: absolute; + left: 0.5rem; + top: 0.5rem; + color: white; + background-color: #e91916; + font-weight: bold; } + +.streams-container .stream .viewers { + position: absolute; + left: 0.5rem; + bottom: 0.5rem; + color: white; + background-color: rgba(0, 0, 0, 0.7); } + +.streams-container .stream .avatar { + padding: 1.5rem; } + +.streams-container .twitch-embed-container { + padding-bottom: 0%; + transition: padding-bottom 400ms ease-in-out; } + .streams-container .twitch-embed-container.open { + padding-bottom: 150%; } + @media screen and (min-width: 713px) { + .streams-container .twitch-embed-container.open { + padding-bottom: 40.6%; } } + +.timeline.no-forums .forums { + display: none; } + +.timeline.no-blogs .blogs { + display: none; } + +.timeline.no-wiki .wiki { + display: none; } + +.timeline.no-library .library { + display: none; } + +.timeline.no-snippets .snippets { + display: none; } + +.timeline .timeline-item { + background-color: #e8e8e8; + background-color: var(--card-background); + color: black; + color: var(--main-color); } + +.timeline-item { + /* + &:hover { + @include usevar(background-color, card-background-hover); + } + */ } + .timeline-item .avatar-icon { + border: 2px solid; + border-color: #666; + border-color: var(--theme-color); } + .timeline-item .avatar-icon.big { + width: 62px; + height: 62px; } + .timeline-item .timeline-content-box > * { + display: block; + max-width: 100%; + max-height: 80vh; } + .timeline-item .timeline-content-box.youtube { + position: relative; + width: 100%; + height: 0; + padding-bottom: 56.25%; } + .timeline-item .timeline-content-box.youtube > iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.timeline-modal .container { + max-height: 100vh; } + @media screen and (min-width: 30em) { + .timeline-modal .container { + width: auto; + max-height: calc(100vh - 2rem); } } diff --git a/public/themes/dark/theme.css b/public/themes/dark/theme.css index bf42550..d181521 100644 --- a/public/themes/dark/theme.css +++ b/public/themes/dark/theme.css @@ -1 +1,369 @@ -.codeblock .hll{background-color:#49483e}.codeblock .c{color:#75715e}.codeblock .err{color:#ff0000}.codeblock .k{color:#66d9ef}.codeblock .l{color:#ae81ff}.codeblock .n{color:#f8f8f2}.codeblock .o{color:#f92672}.codeblock .p{color:#f8f8f2}.codeblock .cm{color:#75715e}.codeblock .cp{color:#75715e}.codeblock .c1{color:#75715e}.codeblock .cs{color:#75715e}.codeblock .ge{font-style:italic}.codeblock .gs{font-weight:bold}.codeblock .kc{color:#66d9ef}.codeblock .kd{color:#66d9ef}.codeblock .kn{color:#f92672}.codeblock .kp{color:#66d9ef}.codeblock .kr{color:#66d9ef}.codeblock .kt{color:#66d9ef}.codeblock .ld{color:#e6db74}.codeblock .m{color:#ae81ff}.codeblock .s{color:#e6db74}.codeblock .na{color:#a6e22e}.codeblock .nb{color:#f8f8f2}.codeblock .nc{color:#a6e22e}.codeblock .no{color:#66d9ef}.codeblock .nd{color:#a6e22e}.codeblock .ni{color:#f8f8f2}.codeblock .ne{color:#a6e22e}.codeblock .nf{color:#a6e22e}.codeblock .nl{color:#f8f8f2}.codeblock .nn{color:#f8f8f2}.codeblock .nx{color:#a6e22e}.codeblock .py{color:#f8f8f2}.codeblock .nt{color:#f92672}.codeblock .nv{color:#f8f8f2}.codeblock .ow{color:#f92672}.codeblock .w{color:#f8f8f2}.codeblock .mf{color:#ae81ff}.codeblock .mh{color:#ae81ff}.codeblock .mi{color:#ae81ff}.codeblock .mo{color:#ae81ff}.codeblock .sb{color:#e6db74}.codeblock .sc{color:#e6db74}.codeblock .sd{color:#e6db74}.codeblock .s2{color:#e6db74}.codeblock .se{color:#ae81ff}.codeblock .sh{color:#e6db74}.codeblock .si{color:#e6db74}.codeblock .sx{color:#e6db74}.codeblock .sr{color:#e6db74}.codeblock .s1{color:#e6db74}.codeblock .ss{color:#e6db74}.codeblock .bp{color:#f8f8f2}.codeblock .vc{color:#f8f8f2}.codeblock .vg{color:#f8f8f2}.codeblock .vi{color:#f8f8f2}.codeblock .il{color:#ae81ff}.codeblock .gu{color:#75715e}.codeblock .gd{color:#f92672}.codeblock .gi{color:#a6e22e}.light{background-color:#fff;color:#000}:root{--fg-font-color: #eee;--theme-color: #666;--theme-color-dim: #444;--theme-color-dimmer: #383838;--theme-color-dimmest: #333;--link-color: #aaa;--link-border-color: #aaa;--table-border-color: #aaa;--hr-color: #aaa;--main-background-color: #202020;--main-color: #eee;--dim-color: #bbb;--dimmer-color: #999;--dimmest-color: #777;--menu-bottom-border-color: #444;--login-popup-background: #181818;--content-background: #202020;--content-background-transparent: rgba(32,32,32,0);--dim-background: #252525;--dim-background-transparent: rgba(37,37,37,0);--text-background: #181818;--spoiler-border: #777;--background-even-background: #242424;--project-notice-text-color: #eee;--project-card-border-color: #333;--project-user-suggestions-background: #222;--project-user-suggestions-border-color: #444;--project-edit-logo-previw-border-color: #444;--project-edit-quota-bar-border-color: #444;--project-edit-quota-bar-filled-background: #888;--notice-unapproved-color: #7a2020;--notice-hidden-color: #494949;--notice-hiatus-color: #876327;--notice-dead-color: #7a2020;--notice-lts-color: #2a681d;--notice-lts-reqd-color: #876327;--optionbar-border-color: #333;--tab-background: #181818;--tab-border-color: #3f3f3f;--tab-button-background: #303030;--tab-button-background-hover: #383838;--tab-button-background-current: #181818;--form-check-background: #252527;--form-check-border-color: #666;--form-check-border-color-hover: #084068;--form-text-background: #181818;--form-text-background-active: #252527;--form-text-border-color: #444;--form-text-border-color-active: #084068;--form-button-color: #999;--form-button-color-active: #4c9ed9;--form-button-background: #383838;--form-button-background-active: #303840;--form-button-border-color: rgba(0,0,0,0);--form-button-inline-border-color: rgba(0,0,0,0);--landing-search-background: #282828;--landing-search-background-hover: #181818;--editor-toolbar-background: #282828;--editor-toolbar-border-color: #333;--editor-toolbar-button-background: 282828;--editor-toolbar-button-background-hover: #333;--editor-toolbar-button-border-color: #333;--post-blockquote-border-color: #555;--forum-even-background: #242424;--forum-thread-read-color: #777;--forum-thread-read-link-color: #999;--forum-post-author-color: #999;--forum-diff-source-background: #181818;--forum-diff-source-border-color: #444;--forum-diff-replace-background: #18283a;--forum-diff-replace-border-color: #223d5b;--forum-diff-delete-background: #3a1818;--forum-diff-delete-border-color: #6b1e1c;--forum-diff-insert-background: #233a18;--forum-diff-insert-border-color: #30591b;--card-background: #222;--card-background-hover: #282828;--irc-border-color: #333;--irc-tab-current-shadow: 0px 0px 5px #000 inset;--irc-tab-close-button-color: #bbb;--irc-tab-close-button-background: #444;--irc-nick-border-color: #444;--irc-users-color: #aaa;--irc-users-background: #181818;--irc-users-border-color: rgba(0,0,0,0);--irc-users-popout-background: #181818;--irc-users-popout-border-color-left: #444;--irc-users-popout-border-color-right: #333;--wiki-border-color: #444;--wiki-toc-number-color: #bbb;--code-line-number-color: #444;--library-star-btn-background: #252525;--library-star-btn-border-color: #bbb;--library-star-btn-a-border-color: #999;--library-star-btn-a-hover-background: #333} +/* +Inserts a CSS expression with one or more custom variables. +You can provide an arbitrary number of strings in the second +argument, separated by spaces. Any strings corresponding to +variable names will be replaced by the correct values, while +other strings are left untouched. + +Example usage: + +@include usevar(border-color, dimmer-color); +@include usevar(background, "linear-gradient(" dim-background-transparent "," dim-background ")"); + +For clarity and to avoid syntax issues, you are encouraged to +use unquoted strings for variables and quoted strings for +everything else. + +For convenience in common cases, if only a single argument +is provided and it does not match an existing variable, this +will throw an error. +*/ +/* bbcode [code] -- see: https://github.com/richleland/pygments-css/blob/master/monokai.css */ +.codeblock .hll { + background-color: #49483e; } + +.codeblock .c { + color: #75715e; } + +/* Comment */ +.codeblock .err { + color: #ff0000; } + +/* Error */ +.codeblock .k { + color: #66d9ef; } + +/* Keyword */ +.codeblock .l { + color: #ae81ff; } + +/* Literal */ +.codeblock .n { + color: #f8f8f2; } + +/* Name */ +.codeblock .o { + color: #f92672; } + +/* Operator */ +.codeblock .p { + color: #f8f8f2; } + +/* Punctuation */ +.codeblock .cm { + color: #75715e; } + +/* Comment.Multiline */ +.codeblock .cp { + color: #75715e; } + +/* Comment.Preproc */ +.codeblock .c1 { + color: #75715e; } + +/* Comment.Single */ +.codeblock .cs { + color: #75715e; } + +/* Comment.Special */ +.codeblock .ge { + font-style: italic; } + +/* Generic.Emph */ +.codeblock .gs { + font-weight: bold; } + +/* Generic.Strong */ +.codeblock .kc { + color: #66d9ef; } + +/* Keyword.Constant */ +.codeblock .kd { + color: #66d9ef; } + +/* Keyword.Declaration */ +.codeblock .kn { + color: #f92672; } + +/* Keyword.Namespace */ +.codeblock .kp { + color: #66d9ef; } + +/* Keyword.Pseudo */ +.codeblock .kr { + color: #66d9ef; } + +/* Keyword.Reserved */ +.codeblock .kt { + color: #66d9ef; } + +/* Keyword.Type */ +.codeblock .ld { + color: #e6db74; } + +/* Literal.Date */ +.codeblock .m { + color: #ae81ff; } + +/* Literal.Number */ +.codeblock .s { + color: #e6db74; } + +/* Literal.String */ +.codeblock .na { + color: #a6e22e; } + +/* Name.Attribute */ +.codeblock .nb { + color: #f8f8f2; } + +/* Name.Builtin */ +.codeblock .nc { + color: #a6e22e; } + +/* Name.Class */ +.codeblock .no { + color: #66d9ef; } + +/* Name.Constant */ +.codeblock .nd { + color: #a6e22e; } + +/* Name.Decorator */ +.codeblock .ni { + color: #f8f8f2; } + +/* Name.Entity */ +.codeblock .ne { + color: #a6e22e; } + +/* Name.Exception */ +.codeblock .nf { + color: #a6e22e; } + +/* Name.Function */ +.codeblock .nl { + color: #f8f8f2; } + +/* Name.Label */ +.codeblock .nn { + color: #f8f8f2; } + +/* Name.Namespace */ +.codeblock .nx { + color: #a6e22e; } + +/* Name.Other */ +.codeblock .py { + color: #f8f8f2; } + +/* Name.Property */ +.codeblock .nt { + color: #f92672; } + +/* Name.Tag */ +.codeblock .nv { + color: #f8f8f2; } + +/* Name.Variable */ +.codeblock .ow { + color: #f92672; } + +/* Operator.Word */ +.codeblock .w { + color: #f8f8f2; } + +/* Text.Whitespace */ +.codeblock .mf { + color: #ae81ff; } + +/* Literal.Number.Float */ +.codeblock .mh { + color: #ae81ff; } + +/* Literal.Number.Hex */ +.codeblock .mi { + color: #ae81ff; } + +/* Literal.Number.Integer */ +.codeblock .mo { + color: #ae81ff; } + +/* Literal.Number.Oct */ +.codeblock .sb { + color: #e6db74; } + +/* Literal.String.Backtick */ +.codeblock .sc { + color: #e6db74; } + +/* Literal.String.Char */ +.codeblock .sd { + color: #e6db74; } + +/* Literal.String.Doc */ +.codeblock .s2 { + color: #e6db74; } + +/* Literal.String.Double */ +.codeblock .se { + color: #ae81ff; } + +/* Literal.String.Escape */ +.codeblock .sh { + color: #e6db74; } + +/* Literal.String.Heredoc */ +.codeblock .si { + color: #e6db74; } + +/* Literal.String.Interpol */ +.codeblock .sx { + color: #e6db74; } + +/* Literal.String.Other */ +.codeblock .sr { + color: #e6db74; } + +/* Literal.String.Regex */ +.codeblock .s1 { + color: #e6db74; } + +/* Literal.String.Single */ +.codeblock .ss { + color: #e6db74; } + +/* Literal.String.Symbol */ +.codeblock .bp { + color: #f8f8f2; } + +/* Name.Builtin.Pseudo */ +.codeblock .vc { + color: #f8f8f2; } + +/* Name.Variable.Class */ +.codeblock .vg { + color: #f8f8f2; } + +/* Name.Variable.Global */ +.codeblock .vi { + color: #f8f8f2; } + +/* Name.Variable.Instance */ +.codeblock .il { + color: #ae81ff; } + +/* Literal.Number.Integer.Long */ +/* Generic Heading & Diff Header */ +.codeblock .gu { + color: #75715e; } + +/* Generic.Subheading & Diff Unified/Comment? */ +.codeblock .gd { + color: #f92672; } + +/* Generic.Deleted & Diff Deleted */ +.codeblock .gi { + color: #a6e22e; } + +/* Generic.Inserted & Diff Inserted */ +.light { + background-color: #fff; + color: #000; } + +:root { + --fg-font-color: #eee; + --theme-color: #666; + --theme-color-dim: #444; + --theme-color-dimmer: #383838; + --theme-color-dimmest: #333; + --link-color: #aaa; + --link-border-color: #aaa; + --table-border-color: #aaa; + --hr-color: #aaa; + --main-background-color: #202020; + --main-color: #eee; + --dim-color: #bbb; + --dimmer-color: #999; + --dimmest-color: #777; + --menu-bottom-border-color: #444; + --login-popup-background: #181818; + --content-background: #202020; + --content-background-transparent: rgba(32, 32, 32, 0); + --dim-background: #252525; + --dim-background-transparent: rgba(37, 37, 37, 0); + --text-background: #181818; + --spoiler-border: #777; + --background-even-background: #242424; + --project-notice-text-color: #eee; + --project-card-border-color: #333; + --project-user-suggestions-background: #222; + --project-user-suggestions-border-color: #444; + --project-edit-logo-previw-border-color: #444; + --project-edit-quota-bar-border-color: #444; + --project-edit-quota-bar-filled-background: #888; + --notice-unapproved-color: #7a2020; + --notice-hidden-color: #494949; + --notice-hiatus-color: #876327; + --notice-dead-color: #7a2020; + --notice-lts-color: #2a681d; + --notice-lts-reqd-color: #876327; + --optionbar-border-color: #333; + --tab-background: #181818; + --tab-border-color: #3f3f3f; + --tab-button-background: #303030; + --tab-button-background-hover: #383838; + --tab-button-background-current: #181818; + --form-check-background: #252527; + --form-check-border-color: #666; + --form-check-border-color-hover: #084068; + --form-text-background: #181818; + --form-text-background-active: #252527; + --form-text-border-color: #444; + --form-text-border-color-active: #084068; + --form-button-color: #999; + --form-button-color-active: #4c9ed9; + --form-button-background: #383838; + --form-button-background-active: #303840; + --form-button-border-color: transparent; + --form-button-inline-border-color: transparent; + --landing-search-background: #282828; + --landing-search-background-hover: #181818; + --editor-toolbar-background: #282828; + --editor-toolbar-border-color: #333; + --editor-toolbar-button-background: 282828; + --editor-toolbar-button-background-hover: #333; + --editor-toolbar-button-border-color: #333; + --post-blockquote-border-color: #555; + --forum-even-background: #242424; + --forum-thread-read-color: #777; + --forum-thread-read-link-color: #999; + --forum-post-author-color: #999; + --forum-diff-source-background: #181818; + --forum-diff-source-border-color: #444; + --forum-diff-replace-background: #18283a; + --forum-diff-replace-border-color: #223d5b; + --forum-diff-delete-background: #3a1818; + --forum-diff-delete-border-color: #6b1e1c; + --forum-diff-insert-background: #233a18; + --forum-diff-insert-border-color: #30591b; + --card-background: #222; + --card-background-hover: #282828; + --irc-border-color: #333; + --irc-tab-current-shadow: 0px 0px 5px #000 inset; + --irc-tab-close-button-color: #bbb; + --irc-tab-close-button-background: #444; + --irc-nick-border-color: #444; + --irc-users-color: #aaa; + --irc-users-background: #181818; + --irc-users-border-color: transparent; + --irc-users-popout-background: #181818; + --irc-users-popout-border-color-left: #444; + --irc-users-popout-border-color-right: #333; + --wiki-border-color: #444; + --wiki-toc-number-color: #bbb; + --code-line-number-color: #444; + --library-star-btn-background: #252525; + --library-star-btn-border-color: #bbb; + --library-star-btn-a-border-color: #999; + --library-star-btn-a-hover-background: #333; } diff --git a/public/themes/light/theme.css b/public/themes/light/theme.css index 87f651e..bb2db0e 100644 --- a/public/themes/light/theme.css +++ b/public/themes/light/theme.css @@ -1 +1,386 @@ -.codeblock .hll{background-color:#ffffcc}.codeblock .c{color:#60a0b0;font-style:italic}.codeblock .err{color:#FF0000}.codeblock .k{color:#007020;font-weight:bold}.codeblock .o{color:#666666}.codeblock .cm{color:#60a0b0;font-style:italic}.codeblock .cp{color:#007020}.codeblock .c1{color:#60a0b0;font-style:italic}.codeblock .cs{color:#60a0b0;background-color:#fff0f0}.codeblock .gd{color:#A00000}.codeblock .ge{font-style:italic}.codeblock .gr{color:#FF0000}.codeblock .gh{color:#000080;font-weight:bold}.codeblock .gi{color:#00A000}.codeblock .go{color:#808080}.codeblock .gp{color:#c65d09;font-weight:bold}.codeblock .gs{font-weight:bold}.codeblock .gu{color:#800080;font-weight:bold}.codeblock .gt{color:#0040D0}.codeblock .kc{color:#007020;font-weight:bold}.codeblock .kd{color:#007020;font-weight:bold}.codeblock .kn{color:#007020;font-weight:bold}.codeblock .kp{color:#007020}.codeblock .kr{color:#007020;font-weight:bold}.codeblock .kt{color:#902000}.codeblock .m{color:#40a070}.codeblock .s{color:#4070a0}.codeblock .na{color:#4070a0}.codeblock .nb{color:#007020}.codeblock .nc{color:#0e84b5;font-weight:bold}.codeblock .no{color:#60add5}.codeblock .nd{color:#555555;font-weight:bold}.codeblock .ni{color:#d55537;font-weight:bold}.codeblock .ne{color:#007020}.codeblock .nf{color:#06287e}.codeblock .nl{color:#002070;font-weight:bold}.codeblock .nn{color:#0e84b5;font-weight:bold}.codeblock .nt{color:#062873;font-weight:bold}.codeblock .nv{color:#bb60d5}.codeblock .ow{color:#007020;font-weight:bold}.codeblock .w{color:#bbbbbb}.codeblock .mf{color:#40a070}.codeblock .mh{color:#40a070}.codeblock .mi{color:#40a070}.codeblock .mo{color:#40a070}.codeblock .sb{color:#4070a0}.codeblock .sc{color:#4070a0}.codeblock .sd{color:#4070a0;font-style:italic}.codeblock .s2{color:#4070a0}.codeblock .se{color:#4070a0;font-weight:bold}.codeblock .sh{color:#4070a0}.codeblock .si{color:#70a0d0;font-style:italic}.codeblock .sx{color:#c65d09}.codeblock .sr{color:#235388}.codeblock .s1{color:#4070a0}.codeblock .ss{color:#517918}.codeblock .bp{color:#007020}.codeblock .vc{color:#bb60d5}.codeblock .vg{color:#bb60d5}.codeblock .vi{color:#bb60d5}.codeblock .il{color:#40a070}.dark{background-color:#222;color:#bbb}:root{--fg-font-color: #000;--theme-color: #666;--theme-color-dim: #aaa;--theme-color-dimmer: #bbb;--theme-color-dimmest: #ccc;--link-color: #666;--link-border-color: #666;--table-border-color: #444;--hr-color: #444;--main-background-color: #fff;--main-color: #000;--dim-color: #333;--dimmer-color: #999;--dimmest-color: #bbb;--menu-bottom-border-color: #000;--login-popup-background: #fbfbfb;--content-background: #f8f8f8;--content-background-transparent: rgba(248,248,248,0);--dim-background: #f0f0f0;--dim-background-transparent: rgba(240,240,240,0);--text-background: #f9f9f9;--spoiler-border: #aaa;--background-even-background: #f8f8f8;--project-notice-text-color: #fff;--project-card-border-color: #aaa;--project-user-suggestions-background: #fff;--project-user-suggestions-border-color: #ddd;--project-edit-logo-previw-border-color: #999;--project-edit-quota-bar-border-color: #999;--project-edit-quota-bar-filled-background: #444;--notice-unapproved-color: #b42222;--notice-hidden-color: #b6b6b6;--notice-hiatus-color: #aa7d30;--notice-dead-color: #b42222;--notice-lts-color: #43a52f;--notice-lts-reqd-color: #aa7d30;--optionbar-border-color: #ccc;--tab-background: #fff;--tab-border-color: #d8d8d8;--tab-button-background: #dfdfdf;--tab-button-background-hover: #efefef;--tab-button-background-current: #fff;--form-check-background: #fafafc;--form-check-border-color: #999;--form-check-border-color-hover: #4c9ed9;--form-text-background: #fff;--form-text-background-active: #fafafc;--form-text-border-color: #999;--form-text-border-color-active: #4c9ed9;--form-button-color: #000;--form-button-color-active: #4c9ed9;--form-button-background: #fff;--form-button-background-active: #f2f2f2;--form-button-border-color: #ccc;--form-button-inline-border-color: #999;--landing-search-background: #f8f8f8;--landing-search-background-hover: #fefeff;--editor-toolbar-background: #fff;--editor-toolbar-border-color: rgba(0,0,0,0);--editor-toolbar-button-background: rgba(0,0,0,0);--editor-toolbar-button-background-hover: #ddd;--editor-toolbar-button-border-color: #ccc;--post-blockquote-border-color: #ddd;--forum-even-background: #f0f0f0;--forum-thread-read-color: #555;--forum-thread-read-link-color: #888;--forum-post-author-color: #333;--forum-diff-source-background: #fff;--forum-diff-source-border-color: #999;--forum-diff-replace-background: #adcef4;--forum-diff-replace-border-color: #4787d1;--forum-diff-delete-background: #e57979;--forum-diff-delete-border-color: #c12626;--forum-diff-insert-background: #96e579;--forum-diff-insert-border-color: #5baa3f;--card-background: #e8e8e8;--card-background-hover: #f0f0f0;--irc-border-color: #ddd;--irc-tab-current-shadow: 0px 0px 5px #bbb inset;--irc-tab-close-button-color: #fff;--irc-tab-close-button-background: #aaa;--irc-nick-border-color: #ccc;--irc-users-color: #000;--irc-users-background: #fff;--irc-users-border-color: #ccc;--irc-users-popout-background: #fff;--irc-users-popout-border-color-left: #bbb;--irc-users-popout-border-color-right: #ccc;--wiki-border-color: #aaa;--wiki-toc-number-color: #333;--code-line-number-color: #777;--library-star-btn-background: #fff;--library-star-btn-border-color: #999;--library-star-btn-a-border-color: #aaa;--library-star-btn-a-hover-background: #fafafa} +/* +Inserts a CSS expression with one or more custom variables. +You can provide an arbitrary number of strings in the second +argument, separated by spaces. Any strings corresponding to +variable names will be replaced by the correct values, while +other strings are left untouched. + +Example usage: + +@include usevar(border-color, dimmer-color); +@include usevar(background, "linear-gradient(" dim-background-transparent "," dim-background ")"); + +For clarity and to avoid syntax issues, you are encouraged to +use unquoted strings for variables and quoted strings for +everything else. + +For convenience in common cases, if only a single argument +is provided and it does not match an existing variable, this +will throw an error. +*/ +/* bbcode [code] -- see: https://github.com/richleland/pygments-css/blob/master/friendly.css */ +.codeblock .hll { + background-color: #ffffcc; } + +.codeblock .c { + color: #60a0b0; + font-style: italic; } + +/* Comment */ +.codeblock .err { + color: #FF0000; } + +/* Error */ +.codeblock .k { + color: #007020; + font-weight: bold; } + +/* Keyword */ +.codeblock .o { + color: #666666; } + +/* Operator */ +.codeblock .cm { + color: #60a0b0; + font-style: italic; } + +/* Comment.Multiline */ +.codeblock .cp { + color: #007020; } + +/* Comment.Preproc */ +.codeblock .c1 { + color: #60a0b0; + font-style: italic; } + +/* Comment.Single */ +.codeblock .cs { + color: #60a0b0; + background-color: #fff0f0; } + +/* Comment.Special */ +.codeblock .gd { + color: #A00000; } + +/* Generic.Deleted */ +.codeblock .ge { + font-style: italic; } + +/* Generic.Emph */ +.codeblock .gr { + color: #FF0000; } + +/* Generic.Error */ +.codeblock .gh { + color: #000080; + font-weight: bold; } + +/* Generic.Heading */ +.codeblock .gi { + color: #00A000; } + +/* Generic.Inserted */ +.codeblock .go { + color: #808080; } + +/* Generic.Output */ +.codeblock .gp { + color: #c65d09; + font-weight: bold; } + +/* Generic.Prompt */ +.codeblock .gs { + font-weight: bold; } + +/* Generic.Strong */ +.codeblock .gu { + color: #800080; + font-weight: bold; } + +/* Generic.Subheading */ +.codeblock .gt { + color: #0040D0; } + +/* Generic.Traceback */ +.codeblock .kc { + color: #007020; + font-weight: bold; } + +/* Keyword.Constant */ +.codeblock .kd { + color: #007020; + font-weight: bold; } + +/* Keyword.Declaration */ +.codeblock .kn { + color: #007020; + font-weight: bold; } + +/* Keyword.Namespace */ +.codeblock .kp { + color: #007020; } + +/* Keyword.Pseudo */ +.codeblock .kr { + color: #007020; + font-weight: bold; } + +/* Keyword.Reserved */ +.codeblock .kt { + color: #902000; } + +/* Keyword.Type */ +.codeblock .m { + color: #40a070; } + +/* Literal.Number */ +.codeblock .s { + color: #4070a0; } + +/* Literal.String */ +.codeblock .na { + color: #4070a0; } + +/* Name.Attribute */ +.codeblock .nb { + color: #007020; } + +/* Name.Builtin */ +.codeblock .nc { + color: #0e84b5; + font-weight: bold; } + +/* Name.Class */ +.codeblock .no { + color: #60add5; } + +/* Name.Constant */ +.codeblock .nd { + color: #555555; + font-weight: bold; } + +/* Name.Decorator */ +.codeblock .ni { + color: #d55537; + font-weight: bold; } + +/* Name.Entity */ +.codeblock .ne { + color: #007020; } + +/* Name.Exception */ +.codeblock .nf { + color: #06287e; } + +/* Name.Function */ +.codeblock .nl { + color: #002070; + font-weight: bold; } + +/* Name.Label */ +.codeblock .nn { + color: #0e84b5; + font-weight: bold; } + +/* Name.Namespace */ +.codeblock .nt { + color: #062873; + font-weight: bold; } + +/* Name.Tag */ +.codeblock .nv { + color: #bb60d5; } + +/* Name.Variable */ +.codeblock .ow { + color: #007020; + font-weight: bold; } + +/* Operator.Word */ +.codeblock .w { + color: #bbbbbb; } + +/* Text.Whitespace */ +.codeblock .mf { + color: #40a070; } + +/* Literal.Number.Float */ +.codeblock .mh { + color: #40a070; } + +/* Literal.Number.Hex */ +.codeblock .mi { + color: #40a070; } + +/* Literal.Number.Integer */ +.codeblock .mo { + color: #40a070; } + +/* Literal.Number.Oct */ +.codeblock .sb { + color: #4070a0; } + +/* Literal.String.Backtick */ +.codeblock .sc { + color: #4070a0; } + +/* Literal.String.Char */ +.codeblock .sd { + color: #4070a0; + font-style: italic; } + +/* Literal.String.Doc */ +.codeblock .s2 { + color: #4070a0; } + +/* Literal.String.Double */ +.codeblock .se { + color: #4070a0; + font-weight: bold; } + +/* Literal.String.Escape */ +.codeblock .sh { + color: #4070a0; } + +/* Literal.String.Heredoc */ +.codeblock .si { + color: #70a0d0; + font-style: italic; } + +/* Literal.String.Interpol */ +.codeblock .sx { + color: #c65d09; } + +/* Literal.String.Other */ +.codeblock .sr { + color: #235388; } + +/* Literal.String.Regex */ +.codeblock .s1 { + color: #4070a0; } + +/* Literal.String.Single */ +.codeblock .ss { + color: #517918; } + +/* Literal.String.Symbol */ +.codeblock .bp { + color: #007020; } + +/* Name.Builtin.Pseudo */ +.codeblock .vc { + color: #bb60d5; } + +/* Name.Variable.Class */ +.codeblock .vg { + color: #bb60d5; } + +/* Name.Variable.Global */ +.codeblock .vi { + color: #bb60d5; } + +/* Name.Variable.Instance */ +.codeblock .il { + color: #40a070; } + +/* Literal.Number.Integer.Long */ +.dark { + background-color: #222; + color: #bbb; } + +:root { + --fg-font-color: black; + --theme-color: #666; + --theme-color-dim: #aaa; + --theme-color-dimmer: #bbb; + --theme-color-dimmest: #ccc; + --link-color: #666; + --link-border-color: #666; + --table-border-color: #444; + --hr-color: #444; + --main-background-color: #fff; + --main-color: black; + --dim-color: #333; + --dimmer-color: #999; + --dimmest-color: #bbb; + --menu-bottom-border-color: black; + --login-popup-background: #fbfbfb; + --content-background: #f8f8f8; + --content-background-transparent: rgba(248, 248, 248, 0); + --dim-background: #f0f0f0; + --dim-background-transparent: rgba(240, 240, 240, 0); + --text-background: #f9f9f9; + --spoiler-border: #aaa; + --background-even-background: #f8f8f8; + --project-notice-text-color: #fff; + --project-card-border-color: #aaa; + --project-user-suggestions-background: #fff; + --project-user-suggestions-border-color: #ddd; + --project-edit-logo-previw-border-color: #999; + --project-edit-quota-bar-border-color: #999; + --project-edit-quota-bar-filled-background: #444; + --notice-unapproved-color: #b42222; + --notice-hidden-color: #b6b6b6; + --notice-hiatus-color: #aa7d30; + --notice-dead-color: #b42222; + --notice-lts-color: #43a52f; + --notice-lts-reqd-color: #aa7d30; + --optionbar-border-color: #ccc; + --tab-background: #fff; + --tab-border-color: #d8d8d8; + --tab-button-background: #dfdfdf; + --tab-button-background-hover: #efefef; + --tab-button-background-current: #fff; + --form-check-background: #fafafc; + --form-check-border-color: #999; + --form-check-border-color-hover: #4c9ed9; + --form-text-background: #fff; + --form-text-background-active: #fafafc; + --form-text-border-color: #999; + --form-text-border-color-active: #4c9ed9; + --form-button-color: black; + --form-button-color-active: #4c9ed9; + --form-button-background: #fff; + --form-button-background-active: #f2f2f2; + --form-button-border-color: #ccc; + --form-button-inline-border-color: #999; + --landing-search-background: #f8f8f8; + --landing-search-background-hover: #fefeff; + --editor-toolbar-background: #fff; + --editor-toolbar-border-color: transparent; + --editor-toolbar-button-background: transparent; + --editor-toolbar-button-background-hover: #ddd; + --editor-toolbar-button-border-color: #ccc; + --post-blockquote-border-color: #ddd; + --forum-even-background: #f0f0f0; + --forum-thread-read-color: #555; + --forum-thread-read-link-color: #888; + --forum-post-author-color: #333; + --forum-diff-source-background: #fff; + --forum-diff-source-border-color: #999; + --forum-diff-replace-background: #adcef4; + --forum-diff-replace-border-color: #4787d1; + --forum-diff-delete-background: #e57979; + --forum-diff-delete-border-color: #c12626; + --forum-diff-insert-background: #96e579; + --forum-diff-insert-border-color: #5baa3f; + --card-background: #e8e8e8; + --card-background-hover: #f0f0f0; + --irc-border-color: #ddd; + --irc-tab-current-shadow: 0px 0px 5px #bbb inset; + --irc-tab-close-button-color: #fff; + --irc-tab-close-button-background: #aaa; + --irc-nick-border-color: #ccc; + --irc-users-color: black; + --irc-users-background: #fff; + --irc-users-border-color: #ccc; + --irc-users-popout-background: #fff; + --irc-users-popout-border-color-left: #bbb; + --irc-users-popout-border-color-right: #ccc; + --wiki-border-color: #aaa; + --wiki-toc-number-color: #333; + --code-line-number-color: #777; + --library-star-btn-background: #fff; + --library-star-btn-border-color: #999; + --library-star-btn-a-border-color: #aaa; + --library-star-btn-a-hover-background: #fafafa; } diff --git a/src/color/color.go b/src/ansicolor/ansicolor.go similarity index 100% rename from src/color/color.go rename to src/ansicolor/ansicolor.go diff --git a/src/buildscss/buildscss.go b/src/buildscss/buildscss.go index 3ee4d86..884354c 100644 --- a/src/buildscss/buildscss.go +++ b/src/buildscss/buildscss.go @@ -1,11 +1,13 @@ package buildscss import ( + "context" + "encoding/base64" "fmt" "os" "path/filepath" - "git.handmade.network/hmn/hmn/src/color" + color "git.handmade.network/hmn/hmn/src/ansicolor" "git.handmade.network/hmn/hmn/src/oops" "git.handmade.network/hmn/hmn/src/website" "github.com/spf13/cobra" @@ -15,6 +17,22 @@ import ( var compressed bool func init() { + libsass.RegisterSassFunc("base64($filename)", func(ctx context.Context, in libsass.SassValue) (*libsass.SassValue, error) { + var filename string + err := libsass.Unmarshal(in, &filename) + if err != nil { + return nil, err + } + + fileBytes, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + encoded, _ := libsass.Marshal(base64.StdEncoding.EncodeToString(fileBytes)) + return &encoded, nil + }) + buildCommand := &cobra.Command{ Use: "buildscss", Short: "Build the website CSS", diff --git a/src/logging/logging.go b/src/logging/logging.go index 7a5a1a0..7a4f692 100644 --- a/src/logging/logging.go +++ b/src/logging/logging.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "git.handmade.network/hmn/hmn/src/color" + color "git.handmade.network/hmn/hmn/src/ansicolor" "git.handmade.network/hmn/hmn/src/oops" "github.com/rs/zerolog" "github.com/rs/zerolog/log" @@ -38,6 +38,14 @@ func Error() *zerolog.Event { return log.Error().Timestamp().Stack() } +func Panic() *zerolog.Event { + return log.Panic().Timestamp().Stack() +} + +func Fatal() *zerolog.Event { + return log.Fatal().Timestamp().Stack() +} + type PrettyZerologWriter struct { wd string } diff --git a/src/rawdata/bgdark.png b/src/rawdata/bgdark.png new file mode 100644 index 0000000..52fe968 Binary files /dev/null and b/src/rawdata/bgdark.png differ diff --git a/src/rawdata/bglight.png b/src/rawdata/bglight.png new file mode 100644 index 0000000..4cd84a9 Binary files /dev/null and b/src/rawdata/bglight.png differ diff --git a/src/rawdata/scss/_showcase.scss b/src/rawdata/scss/_showcase.scss index 1ff1e65..dedef96 100644 --- a/src/rawdata/scss/_showcase.scss +++ b/src/rawdata/scss/_showcase.scss @@ -2,6 +2,6 @@ .gradient { width: 100%; height: 114px; - background-image: linear-gradient(rgba(0, 0, 0, 0.82), #0000); + background-image: linear-gradient(rgba(0, 0, 0, 0.82), rgba(0, 0, 0, 0)); } } diff --git a/src/templates/src/include/footer.html b/src/templates/src/include/footer.html new file mode 100644 index 0000000..cebc102 --- /dev/null +++ b/src/templates/src/include/footer.html @@ -0,0 +1 @@ +I'm a footer~! \ No newline at end of file diff --git a/src/templates/src/include/header.html b/src/templates/src/include/header.html new file mode 100644 index 0000000..7e685d8 --- /dev/null +++ b/src/templates/src/include/header.html @@ -0,0 +1 @@ +I'm a header! \ No newline at end of file diff --git a/src/templates/src/index.html b/src/templates/src/index.html new file mode 100644 index 0000000..abddc79 --- /dev/null +++ b/src/templates/src/index.html @@ -0,0 +1,5 @@ +{{ template "base.html" . }} + +{{ define "content" }} + This is the index page. +{{ end }} diff --git a/src/templates/src/layouts/base.html b/src/templates/src/layouts/base.html new file mode 100644 index 0000000..cbd07da --- /dev/null +++ b/src/templates/src/layouts/base.html @@ -0,0 +1,73 @@ + + + + + + {{ if .CanonicalLink }}{{ end }} + {{ range .OpenGraphItems }} + {{ if .Property }} + + {{ else }} + + {{ end }} + {{ end }} + {{ if .Title }} + {{ .Title }} | Handmade Network + {{ else }} + Handmade Network + {{ end }} + + + + {{/* TODO: These are the base64 encodings of bglight.png and bgdark.png. Rather than manually putting the encoding here, it would be nice to automatically calculate it when the server starts up and pass it in. */}} + {{ $bglight := "iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAEGGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjcyIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNzIiCiAgIHRpZmY6SW1hZ2VXaWR0aD0iNzIiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjcyIgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI5Ni4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI5Ni4wIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMy0xMVQyMToyMjozMC0wNjowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wMy0xMVQyMToyMjozMC0wNjowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InByb2R1Y2VkIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZmZpbml0eSBQaG90byAxLjcuMSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMS0wMy0xMVQyMToyMjozMC0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+NRFFrAAAAYFpQ0NQc1JHQiBJRUM2MTk2Ni0yLjEAACiRdZG/S0JRFMc/amGUYZBDQ4NENVmUgdTSoJQF1WAG/Vr05Y9A7fGeEdIatAoFUUu/hvoLag2ag6AogmgLmotaSl7n+QQl8l7OOZ/7vfcc7j0X7NGMktUbBiCby2uRcNA7v7Dodb7iwCXmwRNTdHV6djxK3fH1gM2Md31mrfrn/h0tKwldAVuT8KiiannhCeGpjbxq8q6wR0nHVoTPhX2aXFD43tTjFr+ZnLL4x2QtGgmBvU3Ym6rheA0raS0rLC+nO5tZVyr3MV/iSuTmZiV2iXWiEyFMEC+TjBEiwCAj4gP04adfVtTJHyjnz7AmuYp4lQIaq6RIk8cn6rpUT0hMip6QmaFg9v9vX/XkkN+q7gpC44thfPSAcwdKRcP4PjaM0gk4nuEqV81fO4LhT9GLVa37ENxbcHFd1eJ7cLkNHU9qTIuVJYeYPZmE9zNoXYD2W2hesnpW2ef0EaKb8lU3sH8AvXLevfwLEU5nv19tQRgAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJOSURBVHic7ZtRksMgCIaTPOcI3v9MPYBHyHv2obOZTlIVFeSHyltnm38QCehXdo0xnkulHcex7Pue/OxJZ20JUE7Um86W+wKHM1w6IYRVw59sBqHtagihO+Nr/Xlk0GeE930nRTzlBIfOZ+bEGE9KJnH68wjQ/eHWxXHp3IPSGqRWf64A5R6uWRyXTi4oNUHq9ecKUOlh6uK4dEpBoQap159H0UM7m9wLc2uhbvVn1qCCJXdjtvi3JQ+K1AiXdpOqU/oONXNKOrX+dO2K1q6O1Nl6DnD34tnrzP9nJJ3NYmcZqfP1oJizUnBqDnC5RdUcTCV1tm9/TBklOJRMoiyK4s8InfX1ep3zNUvrzBpU0Olu095bfRdRpATHOpk0RRQ1ri3wRFGbTMLf5rWpACxRRCGTsEQRhUzCE0VtMjlrUMHMEEUtMtlNFLkJnrROLZnsuiagZQcUUUQngapEEa1DQRFFKySQS6eKKFoigVw6zUTRwuuhRhTRFwVFFJFbNIdO8qCoNROIppPNIO+8mWKPDNKeCUTTeQRIex4HTecKEMpMIJrOFSCUmUA0nUcR/qVfTSk6swYVLJkds8W/LXlQ1JoJ7NXhnpl0RRQlst4NUZSamXRxm5fsvOaJovTMpGmiOGJm0g1RlHrNZg0q+OOOKHK3evH/eh5JJiVmJofMKFq+tojNKHohk2LzQV6oAPuMojcyyT6j6I1Mis0oeiGTswYVTHxG0XKLX5YBM4pWyaRLoiih44YoSum4uM1L6pgnitI6poniCB03RFFK5w8yFS9yPecAUAAAAABJRU5ErkJggg==" }} + {{ $bgdark := "iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAEGGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjcyIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNzIiCiAgIHRpZmY6SW1hZ2VXaWR0aD0iNzIiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjcyIgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI5Ni4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI5Ni4wIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMy0xMVQyMToyMzoxNS0wNjowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wMy0xMVQyMToyMzoxNS0wNjowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InByb2R1Y2VkIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZmZpbml0eSBQaG90byAxLjcuMSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMS0wMy0xMVQyMToyMzoxNS0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+87tjqAAAAYFpQ0NQc1JHQiBJRUM2MTk2Ni0yLjEAACiRdZG/S0JRFMc/amGUYZBDQ4NENVmUgdTSoJQF1WAG/Vr05Y9A7fGeEdIatAoFUUu/hvoLag2ag6AogmgLmotaSl7n+QQl8l7OOZ/7vfcc7j0X7NGMktUbBiCby2uRcNA7v7Dodb7iwCXmwRNTdHV6djxK3fH1gM2Md31mrfrn/h0tKwldAVuT8KiiannhCeGpjbxq8q6wR0nHVoTPhX2aXFD43tTjFr+ZnLL4x2QtGgmBvU3Ym6rheA0raS0rLC+nO5tZVyr3MV/iSuTmZiV2iXWiEyFMEC+TjBEiwCAj4gP04adfVtTJHyjnz7AmuYp4lQIaq6RIk8cn6rpUT0hMip6QmaFg9v9vX/XkkN+q7gpC44thfPSAcwdKRcP4PjaM0gk4nuEqV81fO4LhT9GLVa37ENxbcHFd1eJ7cLkNHU9qTIuVJYeYPZmE9zNoXYD2W2hesnpW2ef0EaKb8lU3sH8AvXLevfwLEU5nv19tQRgAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJSSURBVHic7ZvBbsMgDIaTHKbtnNO0vf/bcW7VS3uoFlWhgAEb//bwrVrzyxjHhq/euu/7fam0z4+v5Xq7JD970llbApQT9aaz5b7A4QyXTghh1fAnm0FouxpC6M74Wn+iDHqN8PV2IUU85QSHzmvm7Pt+p2QSpz9RgM4Pty6OS+cclNYgtfpzBCj3cM3iuHRyQakJUq8/R4BKD1MXx6VTCgo1SL3+REUP7WxyLsythbrVn1mDCpbcjdnin5Y8KFIjXNpNqk7pO9TMKenU+tO1K1q7OlJn6znAnYtnrzN/n5F0NoudZaTO24NizkrBqTnA5RZVczCV1Nne/TFllOBQMomyKIo/I3TWn+/f+3zN0jqzBhV0utu091bfRRQpwbFOJk0RRY1rCzxR1CaT8Ld5bSoASxRRyCQsUUQhk/BEUZtMzhpUMDNEUYtMdhNFboInrVNLJruuCWjZAUUU0UmgKlFE61BQRNEKCeTSqSKKlkggl04zUbTweqgRRfRFQRFF5BbNoZM8KGrNBKLpZDPIO2+mWJRB2jOBaDpRgLTncdB0jgChzASi6RwBQpkJRNOJivB/+tWUojNrUMGS2TFb/NOSB0WtmcBeHe6ZSVdEUSLr3RBFqZlJF7d5yc5rnihKz0yaJoojZibdEEWp12zWoII/7ogid6sX/6/nkWRSYmZyyIyi5WuL2IyiFzIpNh/khQqwzyh6I5PsM4reyKTYjKIXMjlrUMHEZxQtt/hlGTCjaJVMuiSKEjpuiKKUjovbvKSOeaIorWOaKI7QcUMUpXQe+31Pc6xeN0AAAAAASUVORK5CYII=" }} + + {{ block "extrahead" . }}{{ end }} + + + + + + + + + + + + + + + + + + + + + + +
+ {{ template "header.html" }} + based + {{ template "footer.html" }} +
+ + + diff --git a/src/templates/src/layouts/staticpage.html b/src/templates/src/layouts/staticpage.html new file mode 100644 index 0000000..e503afa --- /dev/null +++ b/src/templates/src/layouts/staticpage.html @@ -0,0 +1,13 @@ + + + + + {{ block "title" . }}Handmade Network{{ end }} + + + + {{ block "content" . }}{{ end }} + {{ template "footer.html" . }} + + + diff --git a/src/templates/src/project.css b/src/templates/src/project.css new file mode 100644 index 0000000..ce071e7 --- /dev/null +++ b/src/templates/src/project.css @@ -0,0 +1,128 @@ +{{ $themeDim := eq .Theme "dark" | ternary (darken .Color 0.5) (brighten .Color 0.2) }} +{{ $themeDimmer := eq .Theme "dark" | ternary (darken .Color 0.65) (brighten .Color 0.4) }} +{{ $themeDimmest := eq .Theme "dark" | ternary (darken .Color 0.8) (brighten .Color 0.6) }} + +{{ $linkColor := eq .Theme "dark" | ternary (brighten .Color 0.1) (darken .Color 0.2) }} +{{ $linkHoverColor := eq .Theme "dark" | ternary (brighten .Color 0.2) (darken .Color 0.1) }} + +:root { + --theme-color: #{{ .Color }}; + --theme-color-dim: #{{ $themeDim }}; + --theme-color-dimmer: #{{ $themeDimmer }}; + --theme-color-dimmest: #{{ $themeDimmest }}; + + --link-color: #{{ $linkColor }}; + --link-color-hover: #{{ $linkHoverColor }}; +} + +.accent { + background-color: #{{ $themeDim }}; + background-color: var(--theme-dim); +} +.user-bar { + border-bottom-color: #{{ $themeDim }}; + border-bottom-color: var(--theme-dim); +} +header .content-title .subtitle { + border-top-color: #{{ $themeDim }}; + border-top-color: var(--theme-dim); +} + +a, .thread:before, button, .button, input[type=button], input[type=submit] { + color: #{{ $linkColor }}; + color: var(--link-color); +} +a:hover, button:hover, .button:hover, input[type=button]:hover, input[type=submit]:hover { + color: #{{ $linkHoverColor }}; + color: var(--link-hover-color); +} +.unread .avatar-icon { + border: 2px solid #{{ $linkColor }}; + border: 2px solid var(--link-color); +} + +/* +TODO: Manually apply sensible tachyons classes to the elements styled below, then delete +all of this CSS. +*/ + +/* {% if theme == "dark" %} + #search_form_input_homepage { color: #{% rgb_accent accent 0.65 %}; } + #search_form_input_homepage::-webkit-input-placeholder { color: #{% rgb_accent accent 0.65 %}; } + #search_form_input_homepage:-moz-placeholder { color: #{% rgb_accent accent 0.65 %}; } + #search_form_input_homepage::-moz-placeholder { color: #{% rgb_accent accent 0.65 %}; } + #search_form_input_homepage:-ms-input-placeholder { color: #{% rgb_accent accent 0.65 %}; } +{% else %} + #search_form_input_homepage { color: #{% rgb_accent accent 0.25 %}; } + #search_form_input_homepage::-webkit-input-placeholder { color: #{% rgb_accent accent 0.25 %}; } + #search_form_input_homepage:-moz-placeholder { color: #{% rgb_accent accent 0.25 %}; } + #search_form_input_homepage::-moz-placeholder { color: #{% rgb_accent accent 0.25 %}; } + #search_form_input_homepage:-ms-input-placeholder { color: #{% rgb_accent accent 0.25 %}; } +{% endif %} */ + +/* {% if theme == "dark" %} + header .menu-bar .logo { background-color: #{% rgb_accent accent 0.23 %}; } + header .menu-bar .logo:hover { background-color: #{% rgb_accent accent 0.27 %}; } + header { border-bottom-color:#{% rgb_accent accent 0.33 %}; } + .post .action.button { border-bottom-color:#{% rgb_accent accent 0.33 %}; } + :root { + --input-lite-border: #{% rgb_accent accent 0.33 %}; + } + + header #unfold-btn-fx { background-color: #{% rgb_accent accent 0.23 %}; } + header #unfold-btn-fx:hover { background-color: #{% rgb_accent accent 0.21 %}; } + + .forum .thread:nth-of-type(odd) { background-color:#{% rgb_accent accent 0.14 False 0.03%}; } + .blog .post:nth-of-type(even) { background-color:#{% rgb_accent accent 0.14 False 0.03 %}; } +{% else %} + header .menu-bar .logo { background-color: #{% rgb_accent accent 0.25 True %}; } + header .menu-bar .logo:hover { background-color: #{% rgb_accent accent 0.28 True %}; } + header { border-bottom-color:#{% rgb_accent accent 0.18 %}; } + .post .action.button { border-bottom-color:#{% rgb_accent accent 0.25 True %}; } + :root { + --input-lite-border: #{% rgb_accent accent 0.25 True %}; + } + + header #unfold-btn-fx { background-color: #{% rgb_accent accent 0.20 %}; } + header #unfold-btn-fx:hover { background-color: #{% rgb_accent accent 0.16 %}; } + + .forum .thread:nth-of-type(odd) { background-color:#{% rgb_accent accent 0.94 False 0.2 %}; } + .blog .post:nth-of-type(even) { background-color:#{% rgb_accent accent 0.94 False 0.2 %}; } +{% endif %} */ + +:root { + --background-even-background: #{{ eq .Theme "dark" | ternary (darken .Color 0.8) (brighten .Color 0.9) }}; +} + +/* Assets */ + +header .menu-bar .hmdev-logo { + background-image:url("{{ static "logo_nounder.svg" }}"); +} +header .menu-bar .hmdev-logo .underscore { + background-image:url("{{ static "logo_underscore.svg" }}"); +} + +header .menu-bar .hmdev-logo.project { + background-image:url("{{ static "logo_net.svg" }}"); +} + +.links .thing#projects { + background-image:url("{{ statictheme .Theme "project_thing.svg" }}"); +} + +.links .thing#discussion { + background-image:url("{{ statictheme .Theme "discuss_thing.svg" }}"); +} + +.links .thing#blogs { + background-image:url("{{ statictheme .Theme "blog_thing.svg" }}"); +} + +.half.light { + background-image:url("{{ statictheme "light" "accent_top_a.svg" }}"); +} + +.half.dark { + background-image:url("{{ statictheme "dark" "accent_top_a.svg" }}"); +} diff --git a/src/templates/templates.go b/src/templates/templates.go new file mode 100644 index 0000000..b3bdd81 --- /dev/null +++ b/src/templates/templates.go @@ -0,0 +1,104 @@ +package templates + +import ( + "embed" + "fmt" + "html/template" + "strings" + "time" + + "git.handmade.network/hmn/hmn/src/logging" + "github.com/Masterminds/sprig" + "github.com/teacat/noire" +) + +//go:embed src +var templateFs embed.FS +var Templates map[string]*template.Template + +var cachebust string + +func Init() { + cachebust = fmt.Sprint(time.Now().Unix()) + + Templates = make(map[string]*template.Template) + + files, _ := templateFs.ReadDir("src") + for _, f := range files { + if strings.HasSuffix(f.Name(), ".html") { + t := template.New(f.Name()) + t = t.Funcs(sprig.FuncMap()) + t = t.Funcs(HMNTemplateFuncs) + t, err := t.ParseFS(templateFs, "src/layouts/*.html", "src/include/*.html", "src/"+f.Name()) + if err != nil { + logging.Fatal().Str("filename", f.Name()).Err(err).Msg("failed to parse template") + } + + Templates[f.Name()] = t + } else if strings.HasSuffix(f.Name(), ".css") { + t := template.New(f.Name()) + t = t.Funcs(sprig.FuncMap()) + t = t.Funcs(HMNTemplateFuncs) + t, err := t.ParseFS(templateFs, "src/"+f.Name()) + if err != nil { + logging.Fatal().Str("filename", f.Name()).Err(err).Msg("failed to parse template") + } + + Templates[f.Name()] = t + } + } + + for name, t := range Templates { + fmt.Printf("%s: %v\n", name, names(t.Templates())) + } +} + +func names(ts []*template.Template) []string { + result := make([]string, len(ts)) + for i, t := range ts { + result[i] = t.Name() + } + return result +} + +var HMNTemplateFuncs = template.FuncMap{ + "brighten": func(hexColor string, amount float64) (string, error) { + if len(hexColor) < 6 { + return "", fmt.Errorf("couldn't brighten invalid hex color: %v", hexColor) + } + return noire.NewHex(hexColor).Tint(amount).Hex(), nil + }, + "cachebust": func() string { + return cachebust + }, + "darken": func(hexColor string, amount float64) (string, error) { + if len(hexColor) < 6 { + return "", fmt.Errorf("couldn't darken invalid hex color: %v", hexColor) + } + return noire.NewHex(hexColor).Shade(amount).Hex(), nil + }, + // TODO: Actually put paths in here, duh + "static": func(filepath string) string { + return fmt.Sprintf("A static file at %v, busted with %v", filepath, cachebust) + }, + "staticnobust": func(filepath string) string { + return fmt.Sprintf("A static file at %v", filepath) + }, + "statictheme": func(theme string, filepath string) string { + return fmt.Sprintf("A static file for the current theme at %v, busted with %v", filepath, cachebust) + }, + "staticthemenobust": func(theme string, filepath string) string { + return fmt.Sprintf("A static file for the current theme at %v", filepath) + }, + "url": func(url string) string { + return "/" + url + }, +} + +type ErrInvalidHexColor struct { + color string +} + +func (e ErrInvalidHexColor) Error() string { + return fmt.Sprintf("invalid hex color: %s", e.color) +} diff --git a/src/templates/types.go b/src/templates/types.go new file mode 100644 index 0000000..4a5144b --- /dev/null +++ b/src/templates/types.go @@ -0,0 +1,22 @@ +package templates + +type BaseData struct { + Title string + CanonicalLink string + OpenGraphItems []OpenGraphItem + BackgroundImage BackgroundImage + ProjectColor string + Theme string + BodyClasses []string +} + +type OpenGraphItem struct { + Property string + Name string + Value string +} + +type BackgroundImage struct { + Url string + Size string // A valid CSS background-size value +} diff --git a/src/website/routes.go b/src/website/routes.go new file mode 100644 index 0000000..5faab94 --- /dev/null +++ b/src/website/routes.go @@ -0,0 +1,88 @@ +package website + +import ( + "context" + _ "embed" + "fmt" + "net/http" + + "git.handmade.network/hmn/hmn/src/logging" + "git.handmade.network/hmn/hmn/src/templates" + _ "git.handmade.network/hmn/hmn/src/templates" + "github.com/jackc/pgx/v4/pgxpool" + "github.com/julienschmidt/httprouter" +) + +type websiteRoutes struct { + *httprouter.Router + + conn *pgxpool.Pool +} + +func NewWebsiteRoutes(conn *pgxpool.Pool) http.Handler { + routes := &websiteRoutes{ + Router: httprouter.New(), + conn: conn, + } + + routes.GET("/", routes.Index) + routes.GET("/project/:id", routes.Project) + routes.GET("/assets/project.css", routes.ProjectCSS) + + return routes +} + +/* +TODO: Make a custom context thing so that routes won't directly use a response writer. + +This should store up a body, desired headers, status codes, etc. Doing this allows us to +make middleware that can write headers after an aborted request. + +This context should also provide a sub-logger with request fields so we can easily see +which URLs are having problems. +*/ + +func (s *websiteRoutes) Index(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { + err := templates.Templates["index.html"].Execute(rw, templates.BaseData{ + ProjectColor: "cd4e31", + Theme: "dark", + }) + if err != nil { + panic(err) + } +} + +func (s *websiteRoutes) Project(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { + id := p.ByName("id") + row := s.conn.QueryRow(context.Background(), "SELECT name FROM handmade_project WHERE id = $1", p.ByName("id")) + var name string + err := row.Scan(&name) + if err != nil { + panic(err) + } + + rw.Write([]byte(fmt.Sprintf("(%s) %s\n", id, name))) +} + +func (s *websiteRoutes) ProjectCSS(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { + color := r.URL.Query().Get("color") + if color == "" { + rw.WriteHeader(http.StatusBadRequest) + rw.Write([]byte("You must provide a 'color' parameter.\n")) + return + } + + templateData := struct { + Color string + Theme string + }{ + Color: color, + Theme: "dark", + } + + err := templates.Templates["project.css"].Execute(rw, templateData) + if err != nil { + logging.Error().Err(err).Msg("failed to generate project CSS") + return + } +} diff --git a/src/website/website.go b/src/website/website.go index 2b7d9de..c091d85 100644 --- a/src/website/website.go +++ b/src/website/website.go @@ -3,7 +3,6 @@ package website import ( "context" "errors" - "fmt" "net/http" "os" "os/signal" @@ -12,6 +11,7 @@ import ( "git.handmade.network/hmn/hmn/src/config" "git.handmade.network/hmn/hmn/src/db" "git.handmade.network/hmn/hmn/src/logging" + "git.handmade.network/hmn/hmn/src/templates" "github.com/julienschmidt/httprouter" "github.com/spf13/cobra" ) @@ -19,31 +19,17 @@ import ( var WebsiteCommand = &cobra.Command{ Short: "Run the HMN website", Run: func(cmd *cobra.Command, args []string) { + templates.Init() + defer logging.LogPanics() logging.Info().Msg("Hello, HMN!") conn := db.NewConnPool(4, 8) - router := httprouter.New() - router.GET("/", WithRequestLogger(func(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { - rw.Write([]byte(fmt.Sprintf("Hello, HMN! The time is: %v\n", time.Now()))) - })) - router.GET("/project/:id", func(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { - id := p.ByName("id") - row := conn.QueryRow(context.Background(), "SELECT name FROM handmade_project WHERE id = $1", p.ByName("id")) - var name string - err := row.Scan(&name) - if err != nil { - panic(err) - } - - rw.Write([]byte(fmt.Sprintf("(%s) %s\n", id, name))) - }) - server := http.Server{ Addr: config.Config.Addr, - Handler: router, + Handler: NewWebsiteRoutes(conn), } signals := make(chan os.Signal, 1) @@ -67,7 +53,7 @@ var WebsiteCommand = &cobra.Command{ }, } -func WithRequestLogger(h httprouter.Handle) httprouter.Handle { +func withRequestLogger(h httprouter.Handle) httprouter.Handle { return func(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { defer logging.LogPanics() @@ -80,3 +66,5 @@ func WithRequestLogger(h httprouter.Handle) httprouter.Handle { h(rw, r, p) } } + +// func handleRequestResults