diff --git a/Makefile b/Makefile index 836ea29..7004251 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ +GOMOD=readonly + vuln: govulncheck ./... debug: @make css @make js - go run -mod vendor cmd/example/main.go + go run -mod $(GOMOD) cmd/example/main.go -javascript-at-eof -rollup-assets local-scan: /usr/local/sfomuseum/bin/sonar-scanner/bin/sonar-scanner -Dsonar.projectKey=go-http-sfomuseum -Dsonar.sources=. -Dsonar.host.url=http://localhost:9000 -Dsonar.login=$(TOKEN) @@ -12,7 +14,7 @@ local-scan: lambda: if test -f main; then rm -f main; fi if test -f example.zip; then rm -f example.zip; fi - GOOS=linux go build -mod vendor -o main cmd/example/main.go + GOOS=linux go build -mod $(GOMOD) -o main cmd/example/main.go zip example.zip main rm -f main @@ -42,7 +44,7 @@ js-sfom: cat static/javascript/js_-CPIpBjXzxABQv31RXcqizSgaLzthEF_xbzTZvR1Nak.pruned.js >> static/javascript/sfomuseum.org.js echo "\n" >> static/javascript/sfomuseum.org.js echo "});" >> static/javascript/sfomuseum.org.js - go run -mod vendor cmd/minify/main.go -media-type text/js static/javascript/sfomuseum.org.js > static/javascript/sfomuseum.org.min.js + minify static/javascript/sfomuseum.org.js > static/javascript/sfomuseum.org.min.js js-deps: echo "// This file was generated by robots\n\n" > static/javascript/sfomuseum.org.deps.min.js @@ -54,5 +56,5 @@ js-deps: cat static/javascript/superfish.min.js >> static/javascript/sfomuseum.org.deps.min.js css: - go run -mod vendor cmd/minify/main.go -media-type text/css static/css/sfomuseum.org.base.css static/css/sfomuseum.org.bootstrap.css > static/css/sfomuseum.org.min.css - go run -mod vendor cmd/minify/main.go -media-type text/css static/css/sfomuseum.common.css static/css/sfomuseum.common.grid.css static/css/sfomuseum.common.media.css > static/css/sfomuseum.common.min.css + minify static/css/sfomuseum.org.base.css static/css/sfomuseum.org.bootstrap.css > static/css/sfomuseum.org.min.css + minify static/css/sfomuseum.common.css static/css/sfomuseum.common.grid.css static/css/sfomuseum.common.media.css > static/css/sfomuseum.common.min.css diff --git a/cmd/example/main.go b/cmd/example/main.go index 8809bd7..4e0ec9c 100644 --- a/cmd/example/main.go +++ b/cmd/example/main.go @@ -4,13 +4,14 @@ package main import ( "context" "errors" - "github.com/aaronland/go-http-server" - "github.com/sfomuseum/go-flags/flagset" - "github.com/sfomuseum/go-http-sfomuseum" - "github.com/sfomuseum/go-http-sfomuseum/templates/html" "html/template" "log" "net/http" + + "github.com/aaronland/go-http-server" + "github.com/sfomuseum/go-flags/flagset" + "github.com/sfomuseum/go-http-sfomuseum/v2" + "github.com/sfomuseum/go-http-sfomuseum/v2/templates/html" ) // ExampleVars is struct containing template variables for the example website. @@ -48,6 +49,9 @@ func main() { server_uri := fs.String("server-uri", "http://localhost:8080", "A valid aaronland/go-http-server URI.") + js_eof := fs.Bool("javascript-at-eof", false, "Append JavaScript resources to end of HTML file.") + rollup_assets := fs.Bool("rollup-assets", false, "Rollup (minify and bundle) JavaScript and CSS assets.") + flagset.Parse(fs) err := flagset.SetFlagsFromEnvVars(fs, "EXAMPLE") @@ -66,14 +70,19 @@ func main() { mux := http.NewServeMux() - err = sfomuseum.AppendAssetHandlers(mux) + sfomuseum_opts := sfomuseum.DefaultSFOMuseumOptions() + + sfomuseum_opts.EnableCollectionNavi() + + sfomuseum_opts.AppendJavaScriptAtEOF = *js_eof + sfomuseum_opts.RollupAssets = *rollup_assets + + err = sfomuseum.AppendAssetHandlers(mux, sfomuseum_opts) if err != nil { log.Fatalf("Failed to append SFOMuseum assets handler, %v", err) } - sfomuseum_opts := sfomuseum.DefaultSFOMuseumOptions() - example_vars := &ExampleVars{ Title: "Example", } diff --git a/cmd/minify/main.go b/cmd/minify/main.go deleted file mode 100644 index 57c081d..0000000 --- a/cmd/minify/main.go +++ /dev/null @@ -1,40 +0,0 @@ -// minify is a command line tool for minifying CSS and JavaScript assets. -package main - -import ( - "flag" - "github.com/tdewolff/minify/v2" - "github.com/tdewolff/minify/v2/css" - "github.com/tdewolff/minify/v2/js" - "log" - "os" -) - -func main() { - - media_type := flag.String("media-type", "", "A media-type to use for minifying. Valid options are: text/css, text/js.") - flag.Parse() - - m := minify.New() - m.AddFunc("text/css", css.Minify) - m.AddFunc("text/js", js.Minify) - - wr := os.Stdout - - for _, path := range flag.Args() { - - r, err := os.Open(path) - - if err != nil { - log.Fatalf("Failed to open %s, %v", path, err) - } - - defer r.Close() - - err = m.Minify(*media_type, wr, r) - - if err != nil { - log.Fatalf("Failed to minify %s, %v", path, err) - } - } -} diff --git a/go.mod b/go.mod index b4cded7..41d94b6 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,23 @@ -module github.com/sfomuseum/go-http-sfomuseum +module github.com/sfomuseum/go-http-sfomuseum/v2 -go 1.19 +go 1.18 require ( - github.com/aaronland/go-http-bootstrap v0.2.0 - github.com/aaronland/go-http-rewrite v1.0.1 - github.com/aaronland/go-http-server v1.0.0 + github.com/aaronland/go-http-bootstrap v0.4.0 + github.com/aaronland/go-http-server v1.0.1 + github.com/aaronland/go-http-static v0.0.3 github.com/sfomuseum/go-flags v0.10.0 - github.com/sfomuseum/go-template v1.2.1 - github.com/tdewolff/minify/v2 v2.12.4 + github.com/sfomuseum/go-http-rollup v0.0.2 + github.com/sfomuseum/go-template v1.5.1 ) require ( + github.com/aaronland/go-http-rewrite v1.1.0 // indirect + github.com/aaronland/go-log/v2 v2.0.0 // indirect github.com/aaronland/go-roster v1.0.0 // indirect - github.com/akrylysov/algnhsa v0.12.1 // indirect - github.com/aws/aws-lambda-go v1.9.0 // indirect + github.com/akrylysov/algnhsa v1.0.0 // indirect + github.com/aws/aws-lambda-go v1.37.0 // indirect + github.com/tdewolff/minify/v2 v2.12.4 // indirect github.com/tdewolff/parse/v2 v2.6.4 // indirect - golang.org/x/net v0.7.0 // indirect + golang.org/x/net v0.8.0 // indirect ) diff --git a/go.sum b/go.sum index 37c3bf7..93bde36 100644 --- a/go.sum +++ b/go.sum @@ -1,38 +1,41 @@ -github.com/aaronland/go-http-bootstrap v0.2.0 h1:eNIppbaFJvTDEbF+vJ5xFBZEgMhcDbvrcWSJfB1tK/w= -github.com/aaronland/go-http-bootstrap v0.2.0/go.mod h1:Dd4Z7H55XdgB7JyVma3cFvKQZDdyCaOo/0Dl7qjAu/A= -github.com/aaronland/go-http-rewrite v1.0.1 h1:BWUlr88wN+jQJUGFd5sSl5fysxHlLYN0FB330pRRP+Q= -github.com/aaronland/go-http-rewrite v1.0.1/go.mod h1:DVpymWnsPZI9P2cmgs6lz2cWiUltfDJ6UNOwuvSXyF0= -github.com/aaronland/go-http-server v1.0.0 h1:AF+4JLEyXNj7Mulpcx8yaek1RWGojWOQMg5vinEDDVs= -github.com/aaronland/go-http-server v1.0.0/go.mod h1:gJ2TDOB9EhK8IULIf3UqVYcv1TaEa5N2er9YaBvD2M0= +github.com/aaronland/go-http-bootstrap v0.4.0 h1:W+wXKbJvpT7eW3hjjLNXDfJy980+G/xju6Y4S2VD7Kk= +github.com/aaronland/go-http-bootstrap v0.4.0/go.mod h1:v71tU1uyr8cSInBOV2vhnaV+l3bQ/yEtkPvchD1Ho64= +github.com/aaronland/go-http-rewrite v1.1.0 h1:HhsltNyYRnIz2FR+qANZLx2ykiRuNuNK1JgPonKBLHQ= +github.com/aaronland/go-http-rewrite v1.1.0/go.mod h1:iA9jQBureJrzO6fTzmRLS+fkbAI1Fna71iTb1hP8n3k= +github.com/aaronland/go-http-server v1.0.1 h1:ULzPl1cinglgIDd1fRV02WFRUrG4Sv1LW06rGasLHqA= +github.com/aaronland/go-http-server v1.0.1/go.mod h1:sg3+O9NJREN2YTChO5e2sdjmuhFJKTH39u+HV5V8Bpo= +github.com/aaronland/go-http-static v0.0.3 h1:0MnYXNwGVDCzre5YwinfPSdAFHInbBbmBv5hJtb/FX8= +github.com/aaronland/go-http-static v0.0.3/go.mod h1:/s6lHGXq95ZR9nMJmE9slE4uMi92GP34CuG3f9xlfsY= +github.com/aaronland/go-log/v2 v2.0.0 h1:lMoaVDHd4Etaz2+ibze3ReqvHHG68z2SpuxYXv12WlE= +github.com/aaronland/go-log/v2 v2.0.0/go.mod h1:jOLBCaHVyOC7DQpbVFFQSiuU8CA8MRMrqA1mMSJQtLs= github.com/aaronland/go-roster v1.0.0 h1:FRDGrTqsYySKjWnAhbBGXyeGlI/o5/t9FZYCbUmyQtI= github.com/aaronland/go-roster v1.0.0/go.mod h1:KIsYZgrJlAsyb9LsXSCvlqvbcCBVjCSqcQiZx42i9ro= -github.com/akrylysov/algnhsa v0.12.1 h1:A9Ojt4hZrL77mhBc3qGO3Sn9reyf+tvM3DmR0SfXguc= -github.com/akrylysov/algnhsa v0.12.1/go.mod h1:xAcJ/X8DV+81e+dUjIoB/r5CbISrSXV9//leoMDHcdk= -github.com/aws/aws-lambda-go v1.9.0 h1:r9TWtk8ozLYdMW+aelUeWny8z2mjghJCMx6/uUwOLNo= -github.com/aws/aws-lambda-go v1.9.0/go.mod h1:zUsUQhAUjYzR8AuduJPCfhBuKWUaDbQiPOG+ouzmE1A= +github.com/akrylysov/algnhsa v1.0.0 h1:qlogYL9n7MfU/TJJJCKqpg6gLgCuR/IkdFGwIJClBnE= +github.com/akrylysov/algnhsa v1.0.0/go.mod h1:ConzNpk7uLAl7Hi5LqcImgl3Oq2flRe6W7zum5A1p/8= +github.com/aws/aws-lambda-go v1.37.0 h1:WXkQ/xhIcXZZ2P5ZBEw+bbAKeCEcb5NtiYpSwVVzIXg= +github.com/aws/aws-lambda-go v1.37.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM= github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sfomuseum/go-flags v0.10.0 h1:1OC1ACxpWMsl3XQ9OeNVMQj7Zi2CzufP3Rym3mPI8HU= github.com/sfomuseum/go-flags v0.10.0/go.mod h1:VXOnnX1/yxQpX2yiwHaBV6aCmhtszQOL5bL1/nNo3co= -github.com/sfomuseum/go-template v1.2.1 h1:vetza00Hf3TP3sW8c2B/++WMInCzBdwAQaPH3TQY78E= -github.com/sfomuseum/go-template v1.2.1/go.mod h1:JRpTSqjgYv6+PdkoVbX5GmuyCQqnRLd0Yk8LFvLb6/k= +github.com/sfomuseum/go-http-rollup v0.0.2 h1:cc0p0pppG1VJc6o3IUdkbocPnJedRzOqxWFNlz2mkYM= +github.com/sfomuseum/go-http-rollup v0.0.2/go.mod h1:kxVTXkkaUsxVAMq3lFSNoILzKkv1L4ETuaQiDCQcBfI= +github.com/sfomuseum/go-template v1.5.1 h1:al8tyls02fgDChAIJnGEBonaw8vMykjUuQn7Gi0Rx0M= +github.com/sfomuseum/go-template v1.5.1/go.mod h1:JRpTSqjgYv6+PdkoVbX5GmuyCQqnRLd0Yk8LFvLb6/k= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/tdewolff/minify/v2 v2.12.4 h1:kejsHQMM17n6/gwdw53qsi6lg0TGddZADVyQOz1KMdE= github.com/tdewolff/minify/v2 v2.12.4/go.mod h1:h+SRvSIX3kwgwTFOpSckvSxgax3uy8kZTSF1Ojrr3bk= github.com/tdewolff/parse/v2 v2.6.4 h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ= github.com/tdewolff/parse/v2 v2.6.4/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs= github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM= github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sfomuseum.go b/sfomuseum.go index 0d36fbd..2ff638a 100644 --- a/sfomuseum.go +++ b/sfomuseum.go @@ -2,28 +2,46 @@ package sfomuseum import ( "fmt" - "github.com/aaronland/go-http-bootstrap" - "github.com/aaronland/go-http-rewrite" - "github.com/sfomuseum/go-http-sfomuseum/static" + "io" "io/fs" - _ "log" + "log" "net/http" + "net/url" "path/filepath" "strings" -) -// INCLUDE_BOOTSTRAP is a boolean flag indicating whether this package should load Bootstrap assets. Default is true. -var INCLUDE_BOOTSTRAP = true + "github.com/aaronland/go-http-bootstrap" + aa_static "github.com/aaronland/go-http-static" + "github.com/sfomuseum/go-http-rollup" + "github.com/sfomuseum/go-http-sfomuseum/v2/static" +) // SFOMuseumOptions provides a list of JavaScript and CSS link to include with HTML output. type SFOMuseumOptions struct { JS []string CSS []string + // A bootstrap.BoostrapOptions struct + BootstrapOptions *bootstrap.BootstrapOptions + // AppendJavaScriptAtEOF is a boolean flag to append JavaScript markup at the end of an HTML document + // rather than in the HTML element. Default is false + AppendJavaScriptAtEOF bool + // Rollup (minify and bundle) JavaScript and CSS assets. + RollupAssets bool + Prefix string + Logger *log.Logger + // By default the go-http-protomaps package will also include and reference Bootstrap.js resources using the aaronland/go-http-bootstrap package. If you want or need to disable this behaviour set this variable to false. + AppendBootstrapResources bool + // By default the go-http-protomaps package will also include and reference Bootstrap.js assets using the aaronland/go-http-bootstrap package. If you want or need to disable this behaviour set this variable to false. + AppendBootstrapAssets bool } // Return a *SFOMuseumOptions struct with default paths and URIs. func DefaultSFOMuseumOptions() *SFOMuseumOptions { + logger := log.New(io.Discard, "", 0) + + bootstrap_opts := bootstrap.DefaultBootstrapOptions() + opts := &SFOMuseumOptions{ CSS: []string{ "/css/sfomuseum.org.min.css", @@ -33,156 +51,247 @@ func DefaultSFOMuseumOptions() *SFOMuseumOptions { "/javascript/sfomuseum.org.deps.min.js", "/javascript/sfomuseum.org.min.js", }, + Logger: logger, + BootstrapOptions: bootstrap_opts, + AppendBootstrapResources: true, + AppendBootstrapAssets: true, } return opts } +func (opts *SFOMuseumOptions) EnableCollectionNavi() { + + opts.CSS = append(opts.CSS, "/css/sfomuseum.collection.navi.css") + opts.JS = append(opts.JS, "/javascript/sfomuseum.collection.navi.init.js") +} + // AppendResourcesHandler will rewrite any HTML produced by previous handler to include the necessary markup to load SFOMuseum JavaScript and CSS files and related assets. func AppendResourcesHandler(next http.Handler, opts *SFOMuseumOptions) http.Handler { - return AppendResourcesHandlerWithPrefix(next, opts, "") -} -// AppendResourcesHandlerWithPrefix will rewrite any HTML produced by previous handler to include the necessary markup to load SFOMuseum JavaScript files and related assets ensuring that all URIs are prepended with a prefix. -func AppendResourcesHandlerWithPrefix(next http.Handler, opts *SFOMuseumOptions, prefix string) http.Handler { + if opts.AppendBootstrapResources { - // The order of events here is important. We want to load the Bootstrap - // first so that /css/sfomuseum.org.bootstrap.css follows it and applies - // any necessary fixes for layout issues. + opts.BootstrapOptions.AppendJavaScriptAtEOF = opts.AppendJavaScriptAtEOF + opts.BootstrapOptions.RollupAssets = opts.RollupAssets + opts.BootstrapOptions.Prefix = opts.Prefix + opts.BootstrapOptions.Logger = opts.Logger - var handler http.Handler + next = bootstrap.AppendResourcesHandler(next, opts.BootstrapOptions) + } - if INCLUDE_BOOTSTRAP { + static_opts := aa_static.DefaultResourcesOptions() + static_opts.AppendJavaScriptAtEOF = opts.AppendJavaScriptAtEOF - bootstrap_opts := bootstrap.DefaultBootstrapOptions() + js_uris := opts.JS + css_uris := opts.CSS - bootstrap_opts.JS = []string{ - "/javascript/bootstrap.bundle.min.js", - } + if opts.RollupAssets { - handler = bootstrap.AppendResourcesHandlerWithPrefix(next, bootstrap_opts, prefix) + if len(opts.JS) > 1 { + js_uris = []string{ + "/javascript/sfomuseum.rollup.js", + } + } - } else { - handler = next + if len(opts.CSS) > 1 { + css_uris = []string{ + "/css/sfomuseum.rollup.css", + } + } } - js := make([]string, len(opts.JS)) - css := make([]string, len(opts.CSS)) + static_opts.JS = js_uris + static_opts.CSS = css_uris + + return aa_static.AppendResourcesHandlerWithPrefix(next, static_opts, opts.Prefix) +} + +// Append all the files in the net/http FS instance containing the embedded SFOMuseum assets to an *http.ServeMux instance. +func AppendAssetHandlers(mux *http.ServeMux, opts *SFOMuseumOptions) error { + + if opts.AppendBootstrapAssets { - for i, path := range opts.JS { + opts.BootstrapOptions.AppendJavaScriptAtEOF = opts.AppendJavaScriptAtEOF + opts.BootstrapOptions.RollupAssets = opts.RollupAssets + opts.BootstrapOptions.Prefix = opts.Prefix + opts.BootstrapOptions.Logger = opts.Logger - if prefix != "" { - path = appendPrefix(prefix, path) + err := bootstrap.AppendAssetHandlers(mux, opts.BootstrapOptions) + + if err != nil { + return fmt.Errorf("Failed to append Bootstrap assets, %w", err) } + } - js[i] = path + if !opts.RollupAssets { + return aa_static.AppendStaticAssetHandlersWithPrefix(mux, static.FS, opts.Prefix) } - for i, path := range opts.CSS { + // START OF this should eventually be made a generic function in go-http-rollup - if prefix != "" { - path = appendPrefix(prefix, path) - } + js_paths := make([]string, len(opts.JS)) + css_paths := make([]string, len(opts.CSS)) - css[i] = path + for idx, path := range opts.JS { + path = strings.TrimLeft(path, "/") + js_paths[idx] = path } - ext_opts := &rewrite.AppendResourcesOptions{ - JavaScript: js, - Stylesheets: css, + for idx, path := range opts.CSS { + path = strings.TrimLeft(path, "/") + css_paths[idx] = path } - handler = rewrite.AppendResourcesHandler(handler, ext_opts) - return handler -} + switch len(js_paths) { + case 0: + // pass + case 1: + err := serveSubDir(mux, opts, "javascript") -// AssetsHandler returns a net/http FS instance containing the embedded SFOMuseum assets that are included with this package. -func AssetsHandler() (http.Handler, error) { + if err != nil { + return fmt.Errorf("Failed to append static asset handler for javascript FS, %w", err) + } - http_fs := http.FS(static.FS) - return http.FileServer(http_fs), nil -} + default: -// AssetsHandler returns a net/http FS instance containing the embedded SFOMuseum assets that are included with this package ensuring that all URLs are stripped of prefix. -func AssetsHandlerWithPrefix(prefix string) (http.Handler, error) { + rollup_js_paths := map[string][]string{ + "sfomuseum.rollup.js": js_paths, + } - fs_handler, err := AssetsHandler() + rollup_js_opts := &rollup.RollupJSHandlerOptions{ + FS: static.FS, + Paths: rollup_js_paths, + Logger: opts.Logger, + } - if err != nil { - return nil, err - } + rollup_js_handler, err := rollup.RollupJSHandler(rollup_js_opts) - prefix = strings.TrimRight(prefix, "/") + if err != nil { + return fmt.Errorf("Failed to create rollup JS handler, %w", err) + } - if prefix == "" { - return fs_handler, nil - } + rollup_js_uri := "/javascript/sfomuseum.rollup.js" + + if opts.Prefix != "" { + + u, err := url.JoinPath(opts.Prefix, rollup_js_uri) - rewrite_func := func(req *http.Request) (*http.Request, error) { - req.URL.Path = strings.Replace(req.URL.Path, prefix, "", 1) - return req, nil + if err != nil { + return fmt.Errorf("Failed to append prefix to %s, %w", rollup_js_uri, err) + } + + rollup_js_uri = u + } + + mux.Handle(rollup_js_uri, rollup_js_handler) } - rewrite_handler := rewrite.RewriteRequestHandler(fs_handler, rewrite_func) - return rewrite_handler, nil -} + // CSS -// Append all the files in the net/http FS instance containing the embedded SFOMuseum assets to an *http.ServeMux instance. -func AppendAssetHandlers(mux *http.ServeMux) error { - return AppendAssetHandlersWithPrefix(mux, "") -} + switch len(css_paths) { + case 0: + // pass + case 1: -// Append all the files in the net/http FS instance containing the embedded SFOMuseum assets to an *http.ServeMux instance ensuring that all URLs are prepended with prefix. -func AppendAssetHandlersWithPrefix(mux *http.ServeMux, prefix string) error { + err := serveSubDir(mux, opts, "css") - if INCLUDE_BOOTSTRAP { + if err != nil { + return fmt.Errorf("Failed to append static asset handler for css FS, %w", err) + } - err := bootstrap.AppendAssetHandlersWithPrefix(mux, prefix) + default: + + rollup_css_paths := map[string][]string{ + "sfomuseum.rollup.css": css_paths, + } + + rollup_css_opts := &rollup.RollupCSSHandlerOptions{ + FS: static.FS, + Paths: rollup_css_paths, + Logger: opts.Logger, + } + + rollup_css_handler, err := rollup.RollupCSSHandler(rollup_css_opts) if err != nil { - return fmt.Errorf("Failed to append Bootstrap asset handlers, %v", err) + return fmt.Errorf("Failed to create rollup CSS handler, %w", err) + } + + rollup_css_uri := "/css/sfomuseum.rollup.css" + + if opts.Prefix != "" { + + u, err := url.JoinPath(opts.Prefix, rollup_css_uri) + + if err != nil { + return fmt.Errorf("Failed to append prefix to %s, %w", rollup_css_uri, err) + } + + rollup_css_uri = u } + + mux.Handle(rollup_css_uri, rollup_css_handler) } - asset_handler, err := AssetsHandlerWithPrefix(prefix) + // END OF this should eventually be made a generic function in go-http-rollup + + return nil +} + +func serveSubDir(mux *http.ServeMux, opts *SFOMuseumOptions, dirname string) error { + + sub_fs, err := fs.Sub(static.FS, dirname) if err != nil { - return nil + return fmt.Errorf("Failed to load %s FS, %w", dirname, err) } - walk_func := func(path string, info fs.DirEntry, err error) error { + sub_prefix := dirname - if path == "." { - return nil - } + if opts.Prefix != "" { - if info.IsDir() { - return nil - } + prefix, err := url.JoinPath(opts.Prefix, sub_prefix) - if prefix != "" { - path = appendPrefix(prefix, path) + if err != nil { + return fmt.Errorf("Failed to append prefix to %s, %w", sub_prefix, err) } - if !strings.HasPrefix(path, "/") { - path = fmt.Sprintf("/%s", path) - } + sub_prefix = prefix + } - mux.Handle(path, asset_handler) - return nil + err = aa_static.AppendStaticAssetHandlersWithPrefix(mux, sub_fs, sub_prefix) + + if err != nil { + return fmt.Errorf("Failed to append static asset handler for %s FS, %w", dirname, err) } - return fs.WalkDir(static.FS, ".", walk_func) + return nil } -func appendPrefix(prefix string, path string) string { +// FileHandlerFromPath will take a path and create a http.FileServer handler +// instance for the files in its root directory. The handler is returned with +// a relative URI for the filename in 'path' to be assigned to a net/http +// ServeMux instance. +func FileHandlerFromPath(path string, prefix string) (string, http.Handler, error) { + + abs_path, err := filepath.Abs(path) - prefix = strings.TrimRight(prefix, "/") + if err != nil { + return "", nil, fmt.Errorf("Failed to determine absolute path for '%s', %v", path, err) + } + + fname := filepath.Base(abs_path) + root := filepath.Dir(abs_path) + + tile_dir := http.Dir(root) + tile_handler := http.FileServer(tile_dir) + + tile_url := fmt.Sprintf("/%s", fname) if prefix != "" { - path = strings.TrimLeft(path, "/") - path = filepath.Join(prefix, path) + tile_handler = http.StripPrefix(prefix, tile_handler) + tile_url = filepath.Join(prefix, fname) } - return path + return tile_url, tile_handler, nil } diff --git a/static/css/sfomuseum.org.min.css b/static/css/sfomuseum.org.min.css index 57872e2..4aacb55 100644 --- a/static/css/sfomuseum.org.min.css +++ b/static/css/sfomuseum.org.min.css @@ -1 +1 @@ -html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}footer,header,nav{display:block}h1{font-size:2em;margin:.67em 0}main{display:block}a{background-color:initial;-webkit-text-decoration-skip:objects}b{font-weight:inherit}b{font-weight:bolder}sub{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}video{display:inline-block}img{border-style:none}svg:not(:root){overflow:hidden}button,input,select{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}menu{display:block}canvas{display:inline-block}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}dd,h1,h2,h3,h4,h5,h6,p{margin:0}button{background:0 0;padding:0}button:focus{outline:5px auto -webkit-focus-ring-color}ol,ul{margin:0}*,::after,::before{border-width:0;border-style:solid;border-color:initial}img{border-style:solid}[type=button],[type=reset],[type=submit],button{border-radius:0}img{max-width:100%;height:auto}button,input,select{font-family:inherit}input::-webkit-input-placeholder{color:inherit;opacity:.5}input::-moz-placeholder{color:inherit;opacity:.5}input::-ms-input-placeholder{color:inherit;opacity:.5}input::placeholder{color:inherit;opacity:.5}[role=button],button{cursor:pointer}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1rem;padding-left:1rem}@media(min-width:576px){.container{max-width:576px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:992px){.container{max-width:992px}}@media(min-width:1200px){.container{max-width:1200px}}.list-reset{list-style:none;padding:0}.bg-transparent{background-color:initial}.bg-color-mine-shaft{background-color:#373737}.bg-color-emperor{background-color:#5d5d5d}.bg-color-silver{background-color:#bbb}.bg-color-alto{background-color:#dadada}.bg-color-mercury{background-color:#e9e9e9}.bg-color-white{background-color:#fff}.bg-color-yellow-metal{background-color:#807040}.bg-color-kumera{background-color:#8a741d}.bg-color-barley-corn{background-color:#a0915e}.group:hover .group-hover\:bg-transparent{background-color:initial}.group:hover .group-hover\:bg-color-black{background-color:#000}.group:hover .group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .group-hover\:bg-color-silver{background-color:#bbb}.group:hover .group-hover\:bg-color-alto{background-color:#dadada}.group:hover .group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .group-hover\:bg-color-white{background-color:#fff}.group:hover .group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .group-hover\:bg-color-ferra{background-color:#634849}.group:hover .group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .group-hover\:bg-color-tea-green{background-color:#cfefc2}.hover\:bg-transparent:hover{background-color:initial}.hover\:bg-color-black:hover{background-color:#000}.hover\:bg-color-mine-shaft:hover{background-color:#373737}.hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.hover\:bg-color-emperor:hover{background-color:#5d5d5d}.hover\:bg-color-dove-gray:hover{background-color:#646464}.hover\:bg-color-boulder:hover{background-color:#7b7b7b}.hover\:bg-color-silver:hover{background-color:#bbb}.hover\:bg-color-alto:hover{background-color:#dadada}.hover\:bg-color-mercury:hover{background-color:#e9e9e9}.hover\:bg-color-seashell:hover{background-color:#f1f1f1}.hover\:bg-color-white:hover{background-color:#fff}.hover\:bg-color-orient:hover{background-color:#005c7c}.hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.hover\:bg-color-yellow-metal:hover{background-color:#807040}.hover\:bg-color-kumera:hover{background-color:#8a741d}.hover\:bg-color-olive:hover{background-color:#8e7100}.hover\:bg-color-barley-corn:hover{background-color:#a0915e}.hover\:bg-color-verdigris:hover{background-color:#494a2d}.hover\:bg-color-texas:hover{background-color:#f9fb93}.hover\:bg-color-ferra:hover{background-color:#634849}.hover\:bg-color-cherub:hover{background-color:#fbe3e4}.hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.hover\:bg-color-tea-green:hover{background-color:#cfefc2}.bg-bottom{background-position:bottom}.bg-center{background-position:50%}.bg-right{background-position:100%}.bg-right-bottom{background-position:100% 100%}.bg-auto{background-size:auto}.border-transparent{border-color:transparent}.border-color-mine-shaft{border-color:#373737}.border-color-emperor{border-color:#5d5d5d}.border-color-silver{border-color:#bbb}.border-color-alto{border-color:#dadada}.border-color-mercury{border-color:#e9e9e9}.border-color-white{border-color:#fff}.border-color-yellow-metal{border-color:#807040}.border-color-kumera{border-color:#8a741d}.border-color-barley-corn{border-color:#a0915e}.hover\:border-transparent:hover{border-color:transparent}.hover\:border-color-black:hover{border-color:#000}.hover\:border-color-mine-shaft:hover{border-color:#373737}.hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.hover\:border-color-emperor:hover{border-color:#5d5d5d}.hover\:border-color-dove-gray:hover{border-color:#646464}.hover\:border-color-boulder:hover{border-color:#7b7b7b}.hover\:border-color-silver:hover{border-color:#bbb}.hover\:border-color-alto:hover{border-color:#dadada}.hover\:border-color-mercury:hover{border-color:#e9e9e9}.hover\:border-color-seashell:hover{border-color:#f1f1f1}.hover\:border-color-white:hover{border-color:#fff}.hover\:border-color-orient:hover{border-color:#005c7c}.hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.hover\:border-color-yellow-metal:hover{border-color:#807040}.hover\:border-color-kumera:hover{border-color:#8a741d}.hover\:border-color-olive:hover{border-color:#8e7100}.hover\:border-color-barley-corn:hover{border-color:#a0915e}.hover\:border-color-verdigris:hover{border-color:#494a2d}.hover\:border-color-texas:hover{border-color:#f9fb93}.hover\:border-color-ferra:hover{border-color:#634849}.hover\:border-color-cherub:hover{border-color:#fbe3e4}.hover\:border-color-cabbage-pont:hover{border-color:#454e41}.hover\:border-color-tea-green:hover{border-color:#cfefc2}.border-none{border-style:none}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-8{border-width:8px}.border{border-width:1px}.border-t-0{border-top-width:0}.border-r-0{border-right-width:0}.border-b-0{border-bottom-width:0}.border-l-0{border-left-width:0}.border-t-2{border-top-width:2px}.border-r-2{border-right-width:2px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-t-4{border-top-width:4px}.border-r-4{border-right-width:4px}.border-b-4{border-bottom-width:4px}.border-l-4{border-left-width:4px}.border-t-8{border-top-width:8px}.border-r-8{border-right-width:8px}.border-b-8{border-bottom-width:8px}.border-l-8{border-left-width:8px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.hidden{display:none}.hover\:block:hover{display:block}.hover\:inline-block:hover{display:inline-block}.hover\:inline:hover{display:inline}.hover\:table:hover{display:table}.hover\:table-row:hover{display:table-row}.hover\:table-cell:hover{display:table-cell}.hover\:hidden:hover{display:none}.flex{display:flex}.inline-flex{display:inline-flex}.items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content-center{-ms-flex-line-pack:center;align-content:center}.content-end{-ms-flex-line-pack:end;align-content:flex-end}.content-between{-ms-flex-line-pack:justify;align-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.float-right{float:right}.float-none{float:none}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-normal{font-weight:400}.font-bold{font-weight:700}.hover\:font-hairline:hover{font-weight:100}.hover\:font-thin:hover{font-weight:200}.hover\:font-light:hover{font-weight:300}.hover\:font-normal:hover{font-weight:400}.hover\:font-medium:hover{font-weight:500}.hover\:font-semibold:hover{font-weight:600}.hover\:font-bold:hover{font-weight:700}.hover\:font-extrabold:hover{font-weight:800}.hover\:font-black:hover{font-weight:900}.h-1{height:.25rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-24{height:6rem}.h-32{height:8rem}.h-48{height:12rem}.h-64{height:16rem}.h-auto{height:auto}.h-px{height:1px}.h-full{height:100%}.leading-none{line-height:1}.leading-normal{line-height:1.5}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-8{margin:2rem}.m-10{margin:2.5rem}.m-12{margin:3rem}.m-16{margin:4rem}.m-20{margin:5rem}.m-24{margin:6rem}.m-32{margin:8rem}.m-auto{margin:auto}.m-px{margin:1px}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-24{margin-top:6rem;margin-bottom:6rem}.my-32{margin-top:8rem;margin-bottom:8rem}.my-auto{margin-top:auto;margin-bottom:auto}.my-px{margin-top:1px;margin-bottom:1px}.mt-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mr-5{margin-right:1.25rem}.mb-5{margin-bottom:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-8{margin-bottom:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mb-10{margin-bottom:2.5rem}.mt-12{margin-top:3rem}.mr-12{margin-right:3rem}.mb-12{margin-bottom:3rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.mb-16{margin-bottom:4rem}.mt-20{margin-top:5rem}.mr-20{margin-right:5rem}.mb-20{margin-bottom:5rem}.mt-24{margin-top:6rem}.mr-24{margin-right:6rem}.mb-24{margin-bottom:6rem}.mt-32{margin-top:8rem}.mr-32{margin-right:8rem}.mb-32{margin-bottom:8rem}.mt-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-auto{margin-bottom:auto}.mt-px{margin-top:1px}.mr-px{margin-right:1px}.mb-px{margin-bottom:1px}.max-h-full{max-height:100%}.max-w-sm{max-width:576px}.max-w-md{max-width:768px}.max-w-lg{max-width:992px}.max-w-xl{max-width:1200px}.max-w-full{max-width:100%}.min-h-0{min-height:0}.min-h-full{min-height:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.-m-0{margin:0}.-m-1{margin:-.25rem}.-m-2{margin:-.5rem}.-m-3{margin:-.75rem}.-m-4{margin:-1rem}.-m-5{margin:-1.25rem}.-m-6{margin:-1.5rem}.-m-8{margin:-2rem}.-m-10{margin:-2.5rem}.-m-12{margin:-3rem}.-m-16{margin:-4rem}.-m-20{margin:-5rem}.-m-24{margin:-6rem}.-m-32{margin:-8rem}.-m-px{margin:-1px}.-my-0{margin-top:0;margin-bottom:0}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.-my-8{margin-top:-2rem;margin-bottom:-2rem}.-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.-my-12{margin-top:-3rem;margin-bottom:-3rem}.-my-16{margin-top:-4rem;margin-bottom:-4rem}.-my-20{margin-top:-5rem;margin-bottom:-5rem}.-my-24{margin-top:-6rem;margin-bottom:-6rem}.-my-32{margin-top:-8rem;margin-bottom:-8rem}.-my-px{margin-top:-1px;margin-bottom:-1px}.-mt-0{margin-top:0}.-mr-0{margin-right:0}.-mb-0{margin-bottom:0}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mt-2{margin-top:-.5rem}.-mr-2{margin-right:-.5rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-3{margin-bottom:-.75rem}.-mt-4{margin-top:-1rem}.-mr-4{margin-right:-1rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-mr-5{margin-right:-1.25rem}.-mb-5{margin-bottom:-1.25rem}.-mt-6{margin-top:-1.5rem}.-mr-6{margin-right:-1.5rem}.-mb-6{margin-bottom:-1.5rem}.-mt-8{margin-top:-2rem}.-mr-8{margin-right:-2rem}.-mb-8{margin-bottom:-2rem}.-mt-10{margin-top:-2.5rem}.-mr-10{margin-right:-2.5rem}.-mb-10{margin-bottom:-2.5rem}.-mt-12{margin-top:-3rem}.-mr-12{margin-right:-3rem}.-mb-12{margin-bottom:-3rem}.-mt-16{margin-top:-4rem}.-mr-16{margin-right:-4rem}.-mb-16{margin-bottom:-4rem}.-mt-20{margin-top:-5rem}.-mr-20{margin-right:-5rem}.-mb-20{margin-bottom:-5rem}.-mt-24{margin-top:-6rem}.-mr-24{margin-right:-6rem}.-mb-24{margin-bottom:-6rem}.-mt-32{margin-top:-8rem}.-mr-32{margin-right:-8rem}.-mb-32{margin-bottom:-8rem}.-mt-px{margin-top:-1px}.-mr-px{margin-right:-1px}.-mb-px{margin-bottom:-1px}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.group:hover .group-hover\:opacity-0{opacity:0}.group:hover .group-hover\:opacity-25{opacity:.25}.group:hover .group-hover\:opacity-50{opacity:.5}.group:hover .group-hover\:opacity-75{opacity:.75}.group:hover .group-hover\:opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-16{padding:4rem}.p-20{padding:5rem}.p-24{padding:6rem}.p-32{padding:8rem}.p-px{padding:1px}.py-0{padding-top:0;padding-bottom:0}.px-0{padding-left:0;padding-right:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.px-16{padding-left:4rem;padding-right:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.px-20{padding-left:5rem;padding-right:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.px-24{padding-left:6rem;padding-right:6rem}.py-32{padding-top:8rem;padding-bottom:8rem}.px-32{padding-left:8rem;padding-right:8rem}.py-px{padding-top:1px;padding-bottom:1px}.px-px{padding-left:1px;padding-right:1px}.pt-0{padding-top:0}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pr-5{padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-8{padding-top:2rem}.pr-8{padding-right:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pr-10{padding-right:2.5rem}.pb-10{padding-bottom:2.5rem}.pl-10{padding-left:2.5rem}.pt-12{padding-top:3rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-12{padding-left:3rem}.pt-16{padding-top:4rem}.pr-16{padding-right:4rem}.pb-16{padding-bottom:4rem}.pl-16{padding-left:4rem}.pt-20{padding-top:5rem}.pr-20{padding-right:5rem}.pb-20{padding-bottom:5rem}.pl-20{padding-left:5rem}.pt-24{padding-top:6rem}.pr-24{padding-right:6rem}.pb-24{padding-bottom:6rem}.pl-24{padding-left:6rem}.pt-32{padding-top:8rem}.pr-32{padding-right:8rem}.pb-32{padding-bottom:8rem}.pl-32{padding-left:8rem}.pt-px{padding-top:1px}.pr-px{padding-right:1px}.pb-px{padding-bottom:1px}.pl-px{padding-left:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.pin-none{top:auto;right:auto;bottom:auto;left:auto}.pin{top:0;right:0;bottom:0;left:0}.pin-x{right:0;left:0}.pin-t{top:0}.pin-r{right:0}.pin-b{bottom:0}.pin-l{left:0}.shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.shadow-none{-webkit-box-shadow:none;box-shadow:none}.hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.fill-current{fill:currentColor}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-transparent{color:transparent}.text-color-mine-shaft{color:#373737}.text-color-emperor{color:#5d5d5d}.text-color-silver{color:#bbb}.text-color-alto{color:#dadada}.text-color-mercury{color:#e9e9e9}.text-color-white{color:#fff}.text-color-yellow-metal{color:#807040}.text-color-kumera{color:#8a741d}.text-color-barley-corn{color:#a0915e}.group:hover .group-hover\:text-transparent{color:transparent}.group:hover .group-hover\:text-color-black{color:#000}.group:hover .group-hover\:text-color-mine-shaft{color:#373737}.group:hover .group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .group-hover\:text-color-dove-gray{color:#646464}.group:hover .group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .group-hover\:text-color-silver{color:#bbb}.group:hover .group-hover\:text-color-alto{color:#dadada}.group:hover .group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .group-hover\:text-color-white{color:#fff}.group:hover .group-hover\:text-color-orient{color:#005c7c}.group:hover .group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .group-hover\:text-color-yellow-metal{color:#807040}.group:hover .group-hover\:text-color-kumera{color:#8a741d}.group:hover .group-hover\:text-color-olive{color:#8e7100}.group:hover .group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .group-hover\:text-color-verdigris{color:#494a2d}.group:hover .group-hover\:text-color-texas{color:#f9fb93}.group:hover .group-hover\:text-color-ferra{color:#634849}.group:hover .group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .group-hover\:text-color-tea-green{color:#cfefc2}.hover\:text-transparent:hover{color:transparent}.hover\:text-color-black:hover{color:#000}.hover\:text-color-mine-shaft:hover{color:#373737}.hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.hover\:text-color-emperor:hover{color:#5d5d5d}.hover\:text-color-dove-gray:hover{color:#646464}.hover\:text-color-boulder:hover{color:#7b7b7b}.hover\:text-color-silver:hover{color:#bbb}.hover\:text-color-alto:hover{color:#dadada}.hover\:text-color-mercury:hover{color:#e9e9e9}.hover\:text-color-seashell:hover{color:#f1f1f1}.hover\:text-color-white:hover{color:#fff}.hover\:text-color-orient:hover{color:#005c7c}.hover\:text-color-shakespeare:hover{color:#4ab9d4}.hover\:text-color-yellow-metal:hover{color:#807040}.hover\:text-color-kumera:hover{color:#8a741d}.hover\:text-color-olive:hover{color:#8e7100}.hover\:text-color-barley-corn:hover{color:#a0915e}.hover\:text-color-verdigris:hover{color:#494a2d}.hover\:text-color-texas:hover{color:#f9fb93}.hover\:text-color-ferra:hover{color:#634849}.hover\:text-color-cherub:hover{color:#fbe3e4}.hover\:text-color-cabbage-pont:hover{color:#454e41}.hover\:text-color-tea-green:hover{color:#cfefc2}.text-3xs{font-size:.667rem}.text-2xs{font-size:.8rem}.text-xs{font-size:.867rem}.text-sm{font-size:.933rem}.text-base{font-size:15px}.text-lg{font-size:1.067rem}.text-xl{font-size:1.2rem}.text-2xl{font-size:1.267rem}.text-3xl{font-size:1.933rem}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:italic:hover{font-style:italic}.hover\:roman:hover{font-style:normal}.hover\:uppercase:hover{text-transform:uppercase}.hover\:lowercase:hover{text-transform:lowercase}.hover\:capitalize:hover{text-transform:capitalize}.hover\:normal-case:hover{text-transform:none}.hover\:underline:hover{text-decoration:underline}.hover\:line-through:hover{text-decoration:line-through}.hover\:no-underline:hover{text-decoration:none}.hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.visible{visibility:visible}.w-1{width:.25rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-32{width:8rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-px{width:1px}.w-1\/2{width:50%}.w-1\/3{width:33.33333%}.w-2\/3{width:66.66667%}.w-1\/4{width:25%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-1\/6{width:16.66667%}.w-1\/8{width:12.5%}.w-1\/10{width:10%}.w-1\/12{width:8.33333%}.w-full{width:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-auto{z-index:auto}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-book-webfont.eot);src:url(/fonts/cartogothicstd-book-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-book-webfont.woff)format('woff'),url(/fonts/cartogothicstd-book-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-book-webfont.svg#cartogothic_stdregular)format('svg');font-weight:400;font-style:normal}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-italic-webfont.eot);src:url(/fonts/cartogothicstd-italic-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-italic-webfont.woff)format('woff'),url(/fonts/cartogothicstd-italic-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-italic-webfont.svg#cartogothic_stditalic)format('svg');font-weight:400;font-style:italic}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-bold-webfont.eot);src:url(/fonts/cartogothicstd-bold-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-bold-webfont.woff)format('woff'),url(/fonts/cartogothicstd-bold-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-bold-webfont.svg#cartogothic_stdbold)format('svg');font-weight:700;font-style:normal}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-bolditalic-webfont.eot);src:url(/fonts/cartogothicstd-bolditalic-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-bolditalic-webfont.woff)format('woff'),url(/fonts/cartogothicstd-bolditalic-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-bolditalic-webfont.svg#cartogothic_stdbold_italic)format('svg');font-weight:700;font-style:italic}@font-face{font-family:cartogothic_regular;src:url(/fonts/cartogothicstd-book-webfont.eot);src:url(/fonts/cartogothicstd-book-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-book-webfont.woff)format('woff'),url(/fonts/cartogothicstd-book-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-book-webfont.svg#cartogothic_stdregular)format('svg');font-weight:400;font-style:normal}h1,h2,h3,h4,h5,h6{color:#5d5d5d}a.text-color-kumera:hover{color:#807040}#show-form.active,a.bg-color-kumera:hover,input.bg-color-kumera:hover{background-color:#807040}.press-release--image-grid a{word-wrap:break-word}select{width:100%;border-width:0;background-color:initial;border-radius:0;color:#8a741d;-webkit-appearance:none}select:focus{outline:0}option:hover{background-color:#8a741d;color:#fff}input:focus{outline:0}input:-internal-autofill-selected,input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1e3px rgba(138,116,29,.5)inset}.views-exposed-form .form-submit{clear:both;display:block}.select--single input:not(".chosen-search-input"){display:none}.select--single .selected,.select--single li:hover{background-color:#dadada}.header .views-exposed-form .form-submit{display:none}.chosen-container{width:100%!important}.chosen-container .chosen-single{background:0 0;border:none;border-radius:0}@media screen and (max-width:991px){.header .views-exposed-form .container{max-width:none!important}}@media screen and (min-width:992px){.header .views-exposed-form .form-submit{display:block}}#navbar .views-exposed-form .js-form-type-select{display:none}h2.title{color:#000;display:inline-block;margin:14px 0 4px;padding:0}::-moz-selection{background-color:#4ab9d4;color:#fff;text-shadow:none;outline:0}::selection{background-color:#4ab9d4;color:#fff;text-shadow:none;outline:0}.text-shadow{text-shadow:1px 1px rgba(#fff,1)}.text-shadow-none{text-shadow:none}.gradient-grey,.hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.pin-t8{top:2rem}.pin-t16{top:4rem}.pin-b24{bottom:12rem}.sm-container{margin:0 auto;max-width:970px}.container-sm{max-width:680px}.collection-label{display:inline-block;width:200px}.bg-color-transparent{background:rgba(0,0,0,.25)}.bg-color-transparent:hover{background:rgba(0,0,0,.5)}.sf-main .pin-t16{top:4.4rem}.eu-cookie-compliance-banner h2{font-weight:400}.eu-cookie-compliance-banner p{font-weight:400;font-size:14px}@media(min-width:992px){#block-content-bottom-navigation{display:none}}@media(max-width:575px){.to-sm\:list-reset{list-style:none;padding:0}.to-sm\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.to-sm\:bg-fixed{background-attachment:fixed}.to-sm\:bg-local{background-attachment:local}.to-sm\:bg-scroll{background-attachment:scroll}.to-sm\:bg-transparent{background-color:initial}.to-sm\:bg-color-black{background-color:#000}.to-sm\:bg-color-mine-shaft{background-color:#373737}.to-sm\:bg-color-fuscous-gray{background-color:#4c4d4b}.to-sm\:bg-color-emperor{background-color:#5d5d5d}.to-sm\:bg-color-dove-gray{background-color:#646464}.to-sm\:bg-color-boulder{background-color:#7b7b7b}.to-sm\:bg-color-silver{background-color:#bbb}.to-sm\:bg-color-alto{background-color:#dadada}.to-sm\:bg-color-mercury{background-color:#e9e9e9}.to-sm\:bg-color-seashell{background-color:#f1f1f1}.to-sm\:bg-color-white{background-color:#fff}.to-sm\:bg-color-orient{background-color:#005c7c}.to-sm\:bg-color-shakespeare{background-color:#4ab9d4}.to-sm\:bg-color-yellow-metal{background-color:#807040}.to-sm\:bg-color-kumera{background-color:#8a741d}.to-sm\:bg-color-olive{background-color:#8e7100}.to-sm\:bg-color-barley-corn{background-color:#a0915e}.to-sm\:bg-color-verdigris{background-color:#494a2d}.to-sm\:bg-color-texas{background-color:#f9fb93}.to-sm\:bg-color-ferra{background-color:#634849}.to-sm\:bg-color-cherub{background-color:#fbe3e4}.to-sm\:bg-color-cabbage-pont{background-color:#454e41}.to-sm\:bg-color-tea-green{background-color:#cfefc2}.group:hover .to-sm\:group-hover\:bg-transparent{background-color:initial}.group:hover .to-sm\:group-hover\:bg-color-black{background-color:#000}.group:hover .to-sm\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .to-sm\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .to-sm\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .to-sm\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .to-sm\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .to-sm\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .to-sm\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .to-sm\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .to-sm\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .to-sm\:group-hover\:bg-color-white{background-color:#fff}.group:hover .to-sm\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .to-sm\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .to-sm\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .to-sm\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .to-sm\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .to-sm\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .to-sm\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .to-sm\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .to-sm\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .to-sm\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .to-sm\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .to-sm\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.to-sm\:hover\:bg-transparent:hover{background-color:initial}.to-sm\:hover\:bg-color-black:hover{background-color:#000}.to-sm\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.to-sm\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.to-sm\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.to-sm\:hover\:bg-color-dove-gray:hover{background-color:#646464}.to-sm\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.to-sm\:hover\:bg-color-silver:hover{background-color:#bbb}.to-sm\:hover\:bg-color-alto:hover{background-color:#dadada}.to-sm\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.to-sm\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.to-sm\:hover\:bg-color-white:hover{background-color:#fff}.to-sm\:hover\:bg-color-orient:hover{background-color:#005c7c}.to-sm\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.to-sm\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.to-sm\:hover\:bg-color-kumera:hover{background-color:#8a741d}.to-sm\:hover\:bg-color-olive:hover{background-color:#8e7100}.to-sm\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.to-sm\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.to-sm\:hover\:bg-color-texas:hover{background-color:#f9fb93}.to-sm\:hover\:bg-color-ferra:hover{background-color:#634849}.to-sm\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.to-sm\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.to-sm\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.to-sm\:focus\:bg-transparent:focus{background-color:initial}.to-sm\:focus\:bg-color-black:focus{background-color:#000}.to-sm\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.to-sm\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.to-sm\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.to-sm\:focus\:bg-color-dove-gray:focus{background-color:#646464}.to-sm\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.to-sm\:focus\:bg-color-silver:focus{background-color:#bbb}.to-sm\:focus\:bg-color-alto:focus{background-color:#dadada}.to-sm\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.to-sm\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.to-sm\:focus\:bg-color-white:focus{background-color:#fff}.to-sm\:focus\:bg-color-orient:focus{background-color:#005c7c}.to-sm\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.to-sm\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.to-sm\:focus\:bg-color-kumera:focus{background-color:#8a741d}.to-sm\:focus\:bg-color-olive:focus{background-color:#8e7100}.to-sm\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.to-sm\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.to-sm\:focus\:bg-color-texas:focus{background-color:#f9fb93}.to-sm\:focus\:bg-color-ferra:focus{background-color:#634849}.to-sm\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.to-sm\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.to-sm\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.to-sm\:bg-bottom{background-position:bottom}.to-sm\:bg-center{background-position:50%}.to-sm\:bg-left{background-position:0}.to-sm\:bg-left-bottom{background-position:0 100%}.to-sm\:bg-left-top{background-position:0 0}.to-sm\:bg-right{background-position:100%}.to-sm\:bg-right-bottom{background-position:100% 100%}.to-sm\:bg-right-top{background-position:100% 0}.to-sm\:bg-top{background-position:top}.to-sm\:bg-repeat{background-repeat:repeat}.to-sm\:bg-no-repeat{background-repeat:no-repeat}.to-sm\:bg-repeat-x{background-repeat:repeat-x}.to-sm\:bg-repeat-y{background-repeat:repeat-y}.to-sm\:bg-auto{background-size:auto}.to-sm\:bg-cover{background-size:cover}.to-sm\:bg-contain{background-size:contain}.to-sm\:border-transparent{border-color:transparent}.to-sm\:border-color-black{border-color:#000}.to-sm\:border-color-mine-shaft{border-color:#373737}.to-sm\:border-color-fuscous-gray{border-color:#4c4d4b}.to-sm\:border-color-emperor{border-color:#5d5d5d}.to-sm\:border-color-dove-gray{border-color:#646464}.to-sm\:border-color-boulder{border-color:#7b7b7b}.to-sm\:border-color-silver{border-color:#bbb}.to-sm\:border-color-alto{border-color:#dadada}.to-sm\:border-color-mercury{border-color:#e9e9e9}.to-sm\:border-color-seashell{border-color:#f1f1f1}.to-sm\:border-color-white{border-color:#fff}.to-sm\:border-color-orient{border-color:#005c7c}.to-sm\:border-color-shakespeare{border-color:#4ab9d4}.to-sm\:border-color-yellow-metal{border-color:#807040}.to-sm\:border-color-kumera{border-color:#8a741d}.to-sm\:border-color-olive{border-color:#8e7100}.to-sm\:border-color-barley-corn{border-color:#a0915e}.to-sm\:border-color-verdigris{border-color:#494a2d}.to-sm\:border-color-texas{border-color:#f9fb93}.to-sm\:border-color-ferra{border-color:#634849}.to-sm\:border-color-cherub{border-color:#fbe3e4}.to-sm\:border-color-cabbage-pont{border-color:#454e41}.to-sm\:border-color-tea-green{border-color:#cfefc2}.to-sm\:hover\:border-transparent:hover{border-color:transparent}.to-sm\:hover\:border-color-black:hover{border-color:#000}.to-sm\:hover\:border-color-mine-shaft:hover{border-color:#373737}.to-sm\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.to-sm\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.to-sm\:hover\:border-color-dove-gray:hover{border-color:#646464}.to-sm\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.to-sm\:hover\:border-color-silver:hover{border-color:#bbb}.to-sm\:hover\:border-color-alto:hover{border-color:#dadada}.to-sm\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.to-sm\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.to-sm\:hover\:border-color-white:hover{border-color:#fff}.to-sm\:hover\:border-color-orient:hover{border-color:#005c7c}.to-sm\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.to-sm\:hover\:border-color-yellow-metal:hover{border-color:#807040}.to-sm\:hover\:border-color-kumera:hover{border-color:#8a741d}.to-sm\:hover\:border-color-olive:hover{border-color:#8e7100}.to-sm\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.to-sm\:hover\:border-color-verdigris:hover{border-color:#494a2d}.to-sm\:hover\:border-color-texas:hover{border-color:#f9fb93}.to-sm\:hover\:border-color-ferra:hover{border-color:#634849}.to-sm\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.to-sm\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.to-sm\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.to-sm\:focus\:border-transparent:focus{border-color:transparent}.to-sm\:focus\:border-color-black:focus{border-color:#000}.to-sm\:focus\:border-color-mine-shaft:focus{border-color:#373737}.to-sm\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.to-sm\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.to-sm\:focus\:border-color-dove-gray:focus{border-color:#646464}.to-sm\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.to-sm\:focus\:border-color-silver:focus{border-color:#bbb}.to-sm\:focus\:border-color-alto:focus{border-color:#dadada}.to-sm\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.to-sm\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.to-sm\:focus\:border-color-white:focus{border-color:#fff}.to-sm\:focus\:border-color-orient:focus{border-color:#005c7c}.to-sm\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.to-sm\:focus\:border-color-yellow-metal:focus{border-color:#807040}.to-sm\:focus\:border-color-kumera:focus{border-color:#8a741d}.to-sm\:focus\:border-color-olive:focus{border-color:#8e7100}.to-sm\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.to-sm\:focus\:border-color-verdigris:focus{border-color:#494a2d}.to-sm\:focus\:border-color-texas:focus{border-color:#f9fb93}.to-sm\:focus\:border-color-ferra:focus{border-color:#634849}.to-sm\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.to-sm\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.to-sm\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.to-sm\:rounded-none{border-radius:0}.to-sm\:rounded-sm{border-radius:.125rem}.to-sm\:rounded{border-radius:.25rem}.to-sm\:rounded-lg{border-radius:.5rem}.to-sm\:rounded-full{border-radius:9999px}.to-sm\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.to-sm\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.to-sm\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.to-sm\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.to-sm\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.to-sm\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.to-sm\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.to-sm\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.to-sm\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.to-sm\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.to-sm\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.to-sm\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.to-sm\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.to-sm\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.to-sm\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.to-sm\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.to-sm\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.to-sm\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.to-sm\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.to-sm\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.to-sm\:rounded-tl-none{border-top-left-radius:0}.to-sm\:rounded-tr-none{border-top-right-radius:0}.to-sm\:rounded-br-none{border-bottom-right-radius:0}.to-sm\:rounded-bl-none{border-bottom-left-radius:0}.to-sm\:rounded-tl-sm{border-top-left-radius:.125rem}.to-sm\:rounded-tr-sm{border-top-right-radius:.125rem}.to-sm\:rounded-br-sm{border-bottom-right-radius:.125rem}.to-sm\:rounded-bl-sm{border-bottom-left-radius:.125rem}.to-sm\:rounded-tl{border-top-left-radius:.25rem}.to-sm\:rounded-tr{border-top-right-radius:.25rem}.to-sm\:rounded-br{border-bottom-right-radius:.25rem}.to-sm\:rounded-bl{border-bottom-left-radius:.25rem}.to-sm\:rounded-tl-lg{border-top-left-radius:.5rem}.to-sm\:rounded-tr-lg{border-top-right-radius:.5rem}.to-sm\:rounded-br-lg{border-bottom-right-radius:.5rem}.to-sm\:rounded-bl-lg{border-bottom-left-radius:.5rem}.to-sm\:rounded-tl-full{border-top-left-radius:9999px}.to-sm\:rounded-tr-full{border-top-right-radius:9999px}.to-sm\:rounded-br-full{border-bottom-right-radius:9999px}.to-sm\:rounded-bl-full{border-bottom-left-radius:9999px}.to-sm\:border-solid{border-style:solid}.to-sm\:border-dashed{border-style:dashed}.to-sm\:border-dotted{border-style:dotted}.to-sm\:border-none{border-style:none}.to-sm\:border-0{border-width:0}.to-sm\:border-2{border-width:2px}.to-sm\:border-4{border-width:4px}.to-sm\:border-8{border-width:8px}.to-sm\:border{border-width:1px}.to-sm\:border-t-0{border-top-width:0}.to-sm\:border-r-0{border-right-width:0}.to-sm\:border-b-0{border-bottom-width:0}.to-sm\:border-l-0{border-left-width:0}.to-sm\:border-t-2{border-top-width:2px}.to-sm\:border-r-2{border-right-width:2px}.to-sm\:border-b-2{border-bottom-width:2px}.to-sm\:border-l-2{border-left-width:2px}.to-sm\:border-t-4{border-top-width:4px}.to-sm\:border-r-4{border-right-width:4px}.to-sm\:border-b-4{border-bottom-width:4px}.to-sm\:border-l-4{border-left-width:4px}.to-sm\:border-t-8{border-top-width:8px}.to-sm\:border-r-8{border-right-width:8px}.to-sm\:border-b-8{border-bottom-width:8px}.to-sm\:border-l-8{border-left-width:8px}.to-sm\:border-t{border-top-width:1px}.to-sm\:border-r{border-right-width:1px}.to-sm\:border-b{border-bottom-width:1px}.to-sm\:border-l{border-left-width:1px}.to-sm\:cursor-auto{cursor:auto}.to-sm\:cursor-default{cursor:default}.to-sm\:cursor-pointer{cursor:pointer}.to-sm\:cursor-wait{cursor:wait}.to-sm\:cursor-move{cursor:move}.to-sm\:cursor-not-allowed{cursor:not-allowed}.to-sm\:block{display:block}.to-sm\:inline-block{display:inline-block}.to-sm\:inline{display:inline}.to-sm\:table{display:table}.to-sm\:table-row{display:table-row}.to-sm\:table-cell{display:table-cell}.to-sm\:hidden{display:none}.to-sm\:hover\:block:hover{display:block}.to-sm\:hover\:inline-block:hover{display:inline-block}.to-sm\:hover\:inline:hover{display:inline}.to-sm\:hover\:table:hover{display:table}.to-sm\:hover\:table-row:hover{display:table-row}.to-sm\:hover\:table-cell:hover{display:table-cell}.to-sm\:hover\:hidden:hover{display:none}.to-sm\:flex{display:flex}.to-sm\:inline-flex{display:inline-flex}.to-sm\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.to-sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.to-sm\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.to-sm\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.to-sm\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.to-sm\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.to-sm\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.to-sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.to-sm\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.to-sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.to-sm\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.to-sm\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.to-sm\:self-auto{-ms-flex-item-align:auto;align-self:auto}.to-sm\:self-start{-ms-flex-item-align:start;align-self:flex-start}.to-sm\:self-end{-ms-flex-item-align:end;align-self:flex-end}.to-sm\:self-center{-ms-flex-item-align:center;align-self:center}.to-sm\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.to-sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.to-sm\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.to-sm\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.to-sm\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.to-sm\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.to-sm\:content-center{-ms-flex-line-pack:center;align-content:center}.to-sm\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.to-sm\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.to-sm\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.to-sm\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.to-sm\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.to-sm\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.to-sm\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.to-sm\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.to-sm\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.to-sm\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.to-sm\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.to-sm\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.to-sm\:float-right{float:right}.to-sm\:float-left{float:left}.to-sm\:float-none{float:none}.to-sm\:clearfix:after{content:"";display:table;clear:both}.to-sm\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.to-sm\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.to-sm\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.to-sm\:font-hairline{font-weight:100}.to-sm\:font-thin{font-weight:200}.to-sm\:font-light{font-weight:300}.to-sm\:font-normal{font-weight:400}.to-sm\:font-medium{font-weight:500}.to-sm\:font-semibold{font-weight:600}.to-sm\:font-bold{font-weight:700}.to-sm\:font-extrabold{font-weight:800}.to-sm\:font-black{font-weight:900}.to-sm\:hover\:font-hairline:hover{font-weight:100}.to-sm\:hover\:font-thin:hover{font-weight:200}.to-sm\:hover\:font-light:hover{font-weight:300}.to-sm\:hover\:font-normal:hover{font-weight:400}.to-sm\:hover\:font-medium:hover{font-weight:500}.to-sm\:hover\:font-semibold:hover{font-weight:600}.to-sm\:hover\:font-bold:hover{font-weight:700}.to-sm\:hover\:font-extrabold:hover{font-weight:800}.to-sm\:hover\:font-black:hover{font-weight:900}.to-sm\:focus\:font-hairline:focus{font-weight:100}.to-sm\:focus\:font-thin:focus{font-weight:200}.to-sm\:focus\:font-light:focus{font-weight:300}.to-sm\:focus\:font-normal:focus{font-weight:400}.to-sm\:focus\:font-medium:focus{font-weight:500}.to-sm\:focus\:font-semibold:focus{font-weight:600}.to-sm\:focus\:font-bold:focus{font-weight:700}.to-sm\:focus\:font-extrabold:focus{font-weight:800}.to-sm\:focus\:font-black:focus{font-weight:900}.to-sm\:h-1{height:.25rem}.to-sm\:h-2{height:.5rem}.to-sm\:h-3{height:.75rem}.to-sm\:h-4{height:1rem}.to-sm\:h-5{height:1.25rem}.to-sm\:h-6{height:1.5rem}.to-sm\:h-8{height:2rem}.to-sm\:h-10{height:2.5rem}.to-sm\:h-12{height:3rem}.to-sm\:h-16{height:4rem}.to-sm\:h-24{height:6rem}.to-sm\:h-32{height:8rem}.to-sm\:h-48{height:12rem}.to-sm\:h-64{height:16rem}.to-sm\:h-auto{height:auto}.to-sm\:h-px{height:1px}.to-sm\:h-full{height:100%}.to-sm\:h-screen{height:100vh}.to-sm\:h-screen-40-width{height:40vw}.to-sm\:h-screen-60-width{height:60vw}.to-sm\:h-screen-full-width{height:100vw}.to-sm\:leading-zero{line-height:0}.to-sm\:leading-none{line-height:1}.to-sm\:leading-tight{line-height:1.25}.to-sm\:leading-normal{line-height:1.5}.to-sm\:leading-loose{line-height:2}.to-sm\:m-0{margin:0}.to-sm\:m-1{margin:.25rem}.to-sm\:m-2{margin:.5rem}.to-sm\:m-3{margin:.75rem}.to-sm\:m-4{margin:1rem}.to-sm\:m-5{margin:1.25rem}.to-sm\:m-6{margin:1.5rem}.to-sm\:m-8{margin:2rem}.to-sm\:m-10{margin:2.5rem}.to-sm\:m-12{margin:3rem}.to-sm\:m-16{margin:4rem}.to-sm\:m-20{margin:5rem}.to-sm\:m-24{margin:6rem}.to-sm\:m-32{margin:8rem}.to-sm\:m-auto{margin:auto}.to-sm\:m-px{margin:1px}.to-sm\:my-0{margin-top:0;margin-bottom:0}.to-sm\:mx-0{margin-left:0;margin-right:0}.to-sm\:my-1{margin-top:.25rem;margin-bottom:.25rem}.to-sm\:mx-1{margin-left:.25rem;margin-right:.25rem}.to-sm\:my-2{margin-top:.5rem;margin-bottom:.5rem}.to-sm\:mx-2{margin-left:.5rem;margin-right:.5rem}.to-sm\:my-3{margin-top:.75rem;margin-bottom:.75rem}.to-sm\:mx-3{margin-left:.75rem;margin-right:.75rem}.to-sm\:my-4{margin-top:1rem;margin-bottom:1rem}.to-sm\:mx-4{margin-left:1rem;margin-right:1rem}.to-sm\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.to-sm\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.to-sm\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.to-sm\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.to-sm\:my-8{margin-top:2rem;margin-bottom:2rem}.to-sm\:mx-8{margin-left:2rem;margin-right:2rem}.to-sm\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.to-sm\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.to-sm\:my-12{margin-top:3rem;margin-bottom:3rem}.to-sm\:mx-12{margin-left:3rem;margin-right:3rem}.to-sm\:my-16{margin-top:4rem;margin-bottom:4rem}.to-sm\:mx-16{margin-left:4rem;margin-right:4rem}.to-sm\:my-20{margin-top:5rem;margin-bottom:5rem}.to-sm\:mx-20{margin-left:5rem;margin-right:5rem}.to-sm\:my-24{margin-top:6rem;margin-bottom:6rem}.to-sm\:mx-24{margin-left:6rem;margin-right:6rem}.to-sm\:my-32{margin-top:8rem;margin-bottom:8rem}.to-sm\:mx-32{margin-left:8rem;margin-right:8rem}.to-sm\:my-auto{margin-top:auto;margin-bottom:auto}.to-sm\:mx-auto{margin-left:auto;margin-right:auto}.to-sm\:my-px{margin-top:1px;margin-bottom:1px}.to-sm\:mx-px{margin-left:1px;margin-right:1px}.to-sm\:mt-0{margin-top:0}.to-sm\:mr-0{margin-right:0}.to-sm\:mb-0{margin-bottom:0}.to-sm\:ml-0{margin-left:0}.to-sm\:mt-1{margin-top:.25rem}.to-sm\:mr-1{margin-right:.25rem}.to-sm\:mb-1{margin-bottom:.25rem}.to-sm\:ml-1{margin-left:.25rem}.to-sm\:mt-2{margin-top:.5rem}.to-sm\:mr-2{margin-right:.5rem}.to-sm\:mb-2{margin-bottom:.5rem}.to-sm\:ml-2{margin-left:.5rem}.to-sm\:mt-3{margin-top:.75rem}.to-sm\:mr-3{margin-right:.75rem}.to-sm\:mb-3{margin-bottom:.75rem}.to-sm\:ml-3{margin-left:.75rem}.to-sm\:mt-4{margin-top:1rem}.to-sm\:mr-4{margin-right:1rem}.to-sm\:mb-4{margin-bottom:1rem}.to-sm\:ml-4{margin-left:1rem}.to-sm\:mt-5{margin-top:1.25rem}.to-sm\:mr-5{margin-right:1.25rem}.to-sm\:mb-5{margin-bottom:1.25rem}.to-sm\:ml-5{margin-left:1.25rem}.to-sm\:mt-6{margin-top:1.5rem}.to-sm\:mr-6{margin-right:1.5rem}.to-sm\:mb-6{margin-bottom:1.5rem}.to-sm\:ml-6{margin-left:1.5rem}.to-sm\:mt-8{margin-top:2rem}.to-sm\:mr-8{margin-right:2rem}.to-sm\:mb-8{margin-bottom:2rem}.to-sm\:ml-8{margin-left:2rem}.to-sm\:mt-10{margin-top:2.5rem}.to-sm\:mr-10{margin-right:2.5rem}.to-sm\:mb-10{margin-bottom:2.5rem}.to-sm\:ml-10{margin-left:2.5rem}.to-sm\:mt-12{margin-top:3rem}.to-sm\:mr-12{margin-right:3rem}.to-sm\:mb-12{margin-bottom:3rem}.to-sm\:ml-12{margin-left:3rem}.to-sm\:mt-16{margin-top:4rem}.to-sm\:mr-16{margin-right:4rem}.to-sm\:mb-16{margin-bottom:4rem}.to-sm\:ml-16{margin-left:4rem}.to-sm\:mt-20{margin-top:5rem}.to-sm\:mr-20{margin-right:5rem}.to-sm\:mb-20{margin-bottom:5rem}.to-sm\:ml-20{margin-left:5rem}.to-sm\:mt-24{margin-top:6rem}.to-sm\:mr-24{margin-right:6rem}.to-sm\:mb-24{margin-bottom:6rem}.to-sm\:ml-24{margin-left:6rem}.to-sm\:mt-32{margin-top:8rem}.to-sm\:mr-32{margin-right:8rem}.to-sm\:mb-32{margin-bottom:8rem}.to-sm\:ml-32{margin-left:8rem}.to-sm\:mt-auto{margin-top:auto}.to-sm\:mr-auto{margin-right:auto}.to-sm\:mb-auto{margin-bottom:auto}.to-sm\:ml-auto{margin-left:auto}.to-sm\:mt-px{margin-top:1px}.to-sm\:mr-px{margin-right:1px}.to-sm\:mb-px{margin-bottom:1px}.to-sm\:ml-px{margin-left:1px}.to-sm\:max-h-full{max-height:100%}.to-sm\:max-h-screen{max-height:100vh}.to-sm\:max-w-sm{max-width:576px}.to-sm\:max-w-md{max-width:768px}.to-sm\:max-w-lg{max-width:992px}.to-sm\:max-w-xl{max-width:1200px}.to-sm\:max-w-full{max-width:100%}.to-sm\:min-h-0{min-height:0}.to-sm\:min-h-full{min-height:100%}.to-sm\:min-h-screen{min-height:100vh}.to-sm\:min-w-0{min-width:0}.to-sm\:min-w-full{min-width:100%}.to-sm\:-m-0{margin:0}.to-sm\:-m-1{margin:-.25rem}.to-sm\:-m-2{margin:-.5rem}.to-sm\:-m-3{margin:-.75rem}.to-sm\:-m-4{margin:-1rem}.to-sm\:-m-5{margin:-1.25rem}.to-sm\:-m-6{margin:-1.5rem}.to-sm\:-m-8{margin:-2rem}.to-sm\:-m-10{margin:-2.5rem}.to-sm\:-m-12{margin:-3rem}.to-sm\:-m-16{margin:-4rem}.to-sm\:-m-20{margin:-5rem}.to-sm\:-m-24{margin:-6rem}.to-sm\:-m-32{margin:-8rem}.to-sm\:-m-px{margin:-1px}.to-sm\:-my-0{margin-top:0;margin-bottom:0}.to-sm\:-mx-0{margin-left:0;margin-right:0}.to-sm\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.to-sm\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.to-sm\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.to-sm\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.to-sm\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.to-sm\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.to-sm\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.to-sm\:-mx-4{margin-left:-1rem;margin-right:-1rem}.to-sm\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.to-sm\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.to-sm\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.to-sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.to-sm\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.to-sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.to-sm\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.to-sm\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.to-sm\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.to-sm\:-mx-12{margin-left:-3rem;margin-right:-3rem}.to-sm\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.to-sm\:-mx-16{margin-left:-4rem;margin-right:-4rem}.to-sm\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.to-sm\:-mx-20{margin-left:-5rem;margin-right:-5rem}.to-sm\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.to-sm\:-mx-24{margin-left:-6rem;margin-right:-6rem}.to-sm\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.to-sm\:-mx-32{margin-left:-8rem;margin-right:-8rem}.to-sm\:-my-px{margin-top:-1px;margin-bottom:-1px}.to-sm\:-mx-px{margin-left:-1px;margin-right:-1px}.to-sm\:-mt-0{margin-top:0}.to-sm\:-mr-0{margin-right:0}.to-sm\:-mb-0{margin-bottom:0}.to-sm\:-ml-0{margin-left:0}.to-sm\:-mt-1{margin-top:-.25rem}.to-sm\:-mr-1{margin-right:-.25rem}.to-sm\:-mb-1{margin-bottom:-.25rem}.to-sm\:-ml-1{margin-left:-.25rem}.to-sm\:-mt-2{margin-top:-.5rem}.to-sm\:-mr-2{margin-right:-.5rem}.to-sm\:-mb-2{margin-bottom:-.5rem}.to-sm\:-ml-2{margin-left:-.5rem}.to-sm\:-mt-3{margin-top:-.75rem}.to-sm\:-mr-3{margin-right:-.75rem}.to-sm\:-mb-3{margin-bottom:-.75rem}.to-sm\:-ml-3{margin-left:-.75rem}.to-sm\:-mt-4{margin-top:-1rem}.to-sm\:-mr-4{margin-right:-1rem}.to-sm\:-mb-4{margin-bottom:-1rem}.to-sm\:-ml-4{margin-left:-1rem}.to-sm\:-mt-5{margin-top:-1.25rem}.to-sm\:-mr-5{margin-right:-1.25rem}.to-sm\:-mb-5{margin-bottom:-1.25rem}.to-sm\:-ml-5{margin-left:-1.25rem}.to-sm\:-mt-6{margin-top:-1.5rem}.to-sm\:-mr-6{margin-right:-1.5rem}.to-sm\:-mb-6{margin-bottom:-1.5rem}.to-sm\:-ml-6{margin-left:-1.5rem}.to-sm\:-mt-8{margin-top:-2rem}.to-sm\:-mr-8{margin-right:-2rem}.to-sm\:-mb-8{margin-bottom:-2rem}.to-sm\:-ml-8{margin-left:-2rem}.to-sm\:-mt-10{margin-top:-2.5rem}.to-sm\:-mr-10{margin-right:-2.5rem}.to-sm\:-mb-10{margin-bottom:-2.5rem}.to-sm\:-ml-10{margin-left:-2.5rem}.to-sm\:-mt-12{margin-top:-3rem}.to-sm\:-mr-12{margin-right:-3rem}.to-sm\:-mb-12{margin-bottom:-3rem}.to-sm\:-ml-12{margin-left:-3rem}.to-sm\:-mt-16{margin-top:-4rem}.to-sm\:-mr-16{margin-right:-4rem}.to-sm\:-mb-16{margin-bottom:-4rem}.to-sm\:-ml-16{margin-left:-4rem}.to-sm\:-mt-20{margin-top:-5rem}.to-sm\:-mr-20{margin-right:-5rem}.to-sm\:-mb-20{margin-bottom:-5rem}.to-sm\:-ml-20{margin-left:-5rem}.to-sm\:-mt-24{margin-top:-6rem}.to-sm\:-mr-24{margin-right:-6rem}.to-sm\:-mb-24{margin-bottom:-6rem}.to-sm\:-ml-24{margin-left:-6rem}.to-sm\:-mt-32{margin-top:-8rem}.to-sm\:-mr-32{margin-right:-8rem}.to-sm\:-mb-32{margin-bottom:-8rem}.to-sm\:-ml-32{margin-left:-8rem}.to-sm\:-mt-px{margin-top:-1px}.to-sm\:-mr-px{margin-right:-1px}.to-sm\:-mb-px{margin-bottom:-1px}.to-sm\:-ml-px{margin-left:-1px}.to-sm\:opacity-0{opacity:0}.to-sm\:opacity-25{opacity:.25}.to-sm\:opacity-50{opacity:.5}.to-sm\:opacity-75{opacity:.75}.to-sm\:opacity-100{opacity:1}.group:hover .to-sm\:group-hover\:opacity-0{opacity:0}.group:hover .to-sm\:group-hover\:opacity-25{opacity:.25}.group:hover .to-sm\:group-hover\:opacity-50{opacity:.5}.group:hover .to-sm\:group-hover\:opacity-75{opacity:.75}.group:hover .to-sm\:group-hover\:opacity-100{opacity:1}.to-sm\:overflow-auto{overflow:auto}.to-sm\:overflow-hidden{overflow:hidden}.to-sm\:overflow-visible{overflow:visible}.to-sm\:overflow-scroll{overflow:scroll}.to-sm\:overflow-x-auto{overflow-x:auto}.to-sm\:overflow-y-auto{overflow-y:auto}.to-sm\:overflow-x-hidden{overflow-x:hidden}.to-sm\:overflow-y-hidden{overflow-y:hidden}.to-sm\:overflow-x-visible{overflow-x:visible}.to-sm\:overflow-y-visible{overflow-y:visible}.to-sm\:overflow-x-scroll{overflow-x:scroll}.to-sm\:overflow-y-scroll{overflow-y:scroll}.to-sm\:scrolling-touch{-webkit-overflow-scrolling:touch}.to-sm\:scrolling-auto{-webkit-overflow-scrolling:auto}.to-sm\:p-0{padding:0}.to-sm\:p-1{padding:.25rem}.to-sm\:p-2{padding:.5rem}.to-sm\:p-3{padding:.75rem}.to-sm\:p-4{padding:1rem}.to-sm\:p-5{padding:1.25rem}.to-sm\:p-6{padding:1.5rem}.to-sm\:p-8{padding:2rem}.to-sm\:p-10{padding:2.5rem}.to-sm\:p-12{padding:3rem}.to-sm\:p-16{padding:4rem}.to-sm\:p-20{padding:5rem}.to-sm\:p-24{padding:6rem}.to-sm\:p-32{padding:8rem}.to-sm\:p-px{padding:1px}.to-sm\:py-0{padding-top:0;padding-bottom:0}.to-sm\:px-0{padding-left:0;padding-right:0}.to-sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.to-sm\:px-1{padding-left:.25rem;padding-right:.25rem}.to-sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.to-sm\:px-2{padding-left:.5rem;padding-right:.5rem}.to-sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.to-sm\:px-3{padding-left:.75rem;padding-right:.75rem}.to-sm\:py-4{padding-top:1rem;padding-bottom:1rem}.to-sm\:px-4{padding-left:1rem;padding-right:1rem}.to-sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.to-sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.to-sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.to-sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.to-sm\:py-8{padding-top:2rem;padding-bottom:2rem}.to-sm\:px-8{padding-left:2rem;padding-right:2rem}.to-sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.to-sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.to-sm\:py-12{padding-top:3rem;padding-bottom:3rem}.to-sm\:px-12{padding-left:3rem;padding-right:3rem}.to-sm\:py-16{padding-top:4rem;padding-bottom:4rem}.to-sm\:px-16{padding-left:4rem;padding-right:4rem}.to-sm\:py-20{padding-top:5rem;padding-bottom:5rem}.to-sm\:px-20{padding-left:5rem;padding-right:5rem}.to-sm\:py-24{padding-top:6rem;padding-bottom:6rem}.to-sm\:px-24{padding-left:6rem;padding-right:6rem}.to-sm\:py-32{padding-top:8rem;padding-bottom:8rem}.to-sm\:px-32{padding-left:8rem;padding-right:8rem}.to-sm\:py-px{padding-top:1px;padding-bottom:1px}.to-sm\:px-px{padding-left:1px;padding-right:1px}.to-sm\:pt-0{padding-top:0}.to-sm\:pr-0{padding-right:0}.to-sm\:pb-0{padding-bottom:0}.to-sm\:pl-0{padding-left:0}.to-sm\:pt-1{padding-top:.25rem}.to-sm\:pr-1{padding-right:.25rem}.to-sm\:pb-1{padding-bottom:.25rem}.to-sm\:pl-1{padding-left:.25rem}.to-sm\:pt-2{padding-top:.5rem}.to-sm\:pr-2{padding-right:.5rem}.to-sm\:pb-2{padding-bottom:.5rem}.to-sm\:pl-2{padding-left:.5rem}.to-sm\:pt-3{padding-top:.75rem}.to-sm\:pr-3{padding-right:.75rem}.to-sm\:pb-3{padding-bottom:.75rem}.to-sm\:pl-3{padding-left:.75rem}.to-sm\:pt-4{padding-top:1rem}.to-sm\:pr-4{padding-right:1rem}.to-sm\:pb-4{padding-bottom:1rem}.to-sm\:pl-4{padding-left:1rem}.to-sm\:pt-5{padding-top:1.25rem}.to-sm\:pr-5{padding-right:1.25rem}.to-sm\:pb-5{padding-bottom:1.25rem}.to-sm\:pl-5{padding-left:1.25rem}.to-sm\:pt-6{padding-top:1.5rem}.to-sm\:pr-6{padding-right:1.5rem}.to-sm\:pb-6{padding-bottom:1.5rem}.to-sm\:pl-6{padding-left:1.5rem}.to-sm\:pt-8{padding-top:2rem}.to-sm\:pr-8{padding-right:2rem}.to-sm\:pb-8{padding-bottom:2rem}.to-sm\:pl-8{padding-left:2rem}.to-sm\:pt-10{padding-top:2.5rem}.to-sm\:pr-10{padding-right:2.5rem}.to-sm\:pb-10{padding-bottom:2.5rem}.to-sm\:pl-10{padding-left:2.5rem}.to-sm\:pt-12{padding-top:3rem}.to-sm\:pr-12{padding-right:3rem}.to-sm\:pb-12{padding-bottom:3rem}.to-sm\:pl-12{padding-left:3rem}.to-sm\:pt-16{padding-top:4rem}.to-sm\:pr-16{padding-right:4rem}.to-sm\:pb-16{padding-bottom:4rem}.to-sm\:pl-16{padding-left:4rem}.to-sm\:pt-20{padding-top:5rem}.to-sm\:pr-20{padding-right:5rem}.to-sm\:pb-20{padding-bottom:5rem}.to-sm\:pl-20{padding-left:5rem}.to-sm\:pt-24{padding-top:6rem}.to-sm\:pr-24{padding-right:6rem}.to-sm\:pb-24{padding-bottom:6rem}.to-sm\:pl-24{padding-left:6rem}.to-sm\:pt-32{padding-top:8rem}.to-sm\:pr-32{padding-right:8rem}.to-sm\:pb-32{padding-bottom:8rem}.to-sm\:pl-32{padding-left:8rem}.to-sm\:pt-px{padding-top:1px}.to-sm\:pr-px{padding-right:1px}.to-sm\:pb-px{padding-bottom:1px}.to-sm\:pl-px{padding-left:1px}.to-sm\:pointer-events-none{pointer-events:none}.to-sm\:pointer-events-auto{pointer-events:auto}.to-sm\:static{position:static}.to-sm\:fixed{position:fixed}.to-sm\:absolute{position:absolute}.to-sm\:relative{position:relative}.to-sm\:sticky{position:sticky}.to-sm\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.to-sm\:pin{top:0;right:0;bottom:0;left:0}.to-sm\:pin-y{top:0;bottom:0}.to-sm\:pin-x{right:0;left:0}.to-sm\:pin-t{top:0}.to-sm\:pin-r{right:0}.to-sm\:pin-b{bottom:0}.to-sm\:pin-l{left:0}.to-sm\:resize-none{resize:none}.to-sm\:resize-y{resize:vertical}.to-sm\:resize-x{resize:horizontal}.to-sm\:resize{resize:both}.to-sm\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-sm\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.to-sm\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-sm\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.to-sm\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-sm\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:none}.to-sm\:table-auto{table-layout:auto}.to-sm\:table-fixed{table-layout:fixed}.to-sm\:text-left{text-align:left}.to-sm\:text-center{text-align:center}.to-sm\:text-right{text-align:right}.to-sm\:text-justify{text-align:justify}.to-sm\:text-transparent{color:transparent}.to-sm\:text-color-black{color:#000}.to-sm\:text-color-mine-shaft{color:#373737}.to-sm\:text-color-fuscous-gray{color:#4c4d4b}.to-sm\:text-color-emperor{color:#5d5d5d}.to-sm\:text-color-dove-gray{color:#646464}.to-sm\:text-color-boulder{color:#7b7b7b}.to-sm\:text-color-silver{color:#bbb}.to-sm\:text-color-alto{color:#dadada}.to-sm\:text-color-mercury{color:#e9e9e9}.to-sm\:text-color-seashell{color:#f1f1f1}.to-sm\:text-color-white{color:#fff}.to-sm\:text-color-orient{color:#005c7c}.to-sm\:text-color-shakespeare{color:#4ab9d4}.to-sm\:text-color-yellow-metal{color:#807040}.to-sm\:text-color-kumera{color:#8a741d}.to-sm\:text-color-olive{color:#8e7100}.to-sm\:text-color-barley-corn{color:#a0915e}.to-sm\:text-color-verdigris{color:#494a2d}.to-sm\:text-color-texas{color:#f9fb93}.to-sm\:text-color-ferra{color:#634849}.to-sm\:text-color-cherub{color:#fbe3e4}.to-sm\:text-color-cabbage-pont{color:#454e41}.to-sm\:text-color-tea-green{color:#cfefc2}.group:hover .to-sm\:group-hover\:text-transparent{color:transparent}.group:hover .to-sm\:group-hover\:text-color-black{color:#000}.group:hover .to-sm\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .to-sm\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .to-sm\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .to-sm\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .to-sm\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .to-sm\:group-hover\:text-color-silver{color:#bbb}.group:hover .to-sm\:group-hover\:text-color-alto{color:#dadada}.group:hover .to-sm\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .to-sm\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .to-sm\:group-hover\:text-color-white{color:#fff}.group:hover .to-sm\:group-hover\:text-color-orient{color:#005c7c}.group:hover .to-sm\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .to-sm\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .to-sm\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .to-sm\:group-hover\:text-color-olive{color:#8e7100}.group:hover .to-sm\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .to-sm\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .to-sm\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .to-sm\:group-hover\:text-color-ferra{color:#634849}.group:hover .to-sm\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .to-sm\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .to-sm\:group-hover\:text-color-tea-green{color:#cfefc2}.to-sm\:hover\:text-transparent:hover{color:transparent}.to-sm\:hover\:text-color-black:hover{color:#000}.to-sm\:hover\:text-color-mine-shaft:hover{color:#373737}.to-sm\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.to-sm\:hover\:text-color-emperor:hover{color:#5d5d5d}.to-sm\:hover\:text-color-dove-gray:hover{color:#646464}.to-sm\:hover\:text-color-boulder:hover{color:#7b7b7b}.to-sm\:hover\:text-color-silver:hover{color:#bbb}.to-sm\:hover\:text-color-alto:hover{color:#dadada}.to-sm\:hover\:text-color-mercury:hover{color:#e9e9e9}.to-sm\:hover\:text-color-seashell:hover{color:#f1f1f1}.to-sm\:hover\:text-color-white:hover{color:#fff}.to-sm\:hover\:text-color-orient:hover{color:#005c7c}.to-sm\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.to-sm\:hover\:text-color-yellow-metal:hover{color:#807040}.to-sm\:hover\:text-color-kumera:hover{color:#8a741d}.to-sm\:hover\:text-color-olive:hover{color:#8e7100}.to-sm\:hover\:text-color-barley-corn:hover{color:#a0915e}.to-sm\:hover\:text-color-verdigris:hover{color:#494a2d}.to-sm\:hover\:text-color-texas:hover{color:#f9fb93}.to-sm\:hover\:text-color-ferra:hover{color:#634849}.to-sm\:hover\:text-color-cherub:hover{color:#fbe3e4}.to-sm\:hover\:text-color-cabbage-pont:hover{color:#454e41}.to-sm\:hover\:text-color-tea-green:hover{color:#cfefc2}.to-sm\:focus\:text-transparent:focus{color:transparent}.to-sm\:focus\:text-color-black:focus{color:#000}.to-sm\:focus\:text-color-mine-shaft:focus{color:#373737}.to-sm\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.to-sm\:focus\:text-color-emperor:focus{color:#5d5d5d}.to-sm\:focus\:text-color-dove-gray:focus{color:#646464}.to-sm\:focus\:text-color-boulder:focus{color:#7b7b7b}.to-sm\:focus\:text-color-silver:focus{color:#bbb}.to-sm\:focus\:text-color-alto:focus{color:#dadada}.to-sm\:focus\:text-color-mercury:focus{color:#e9e9e9}.to-sm\:focus\:text-color-seashell:focus{color:#f1f1f1}.to-sm\:focus\:text-color-white:focus{color:#fff}.to-sm\:focus\:text-color-orient:focus{color:#005c7c}.to-sm\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.to-sm\:focus\:text-color-yellow-metal:focus{color:#807040}.to-sm\:focus\:text-color-kumera:focus{color:#8a741d}.to-sm\:focus\:text-color-olive:focus{color:#8e7100}.to-sm\:focus\:text-color-barley-corn:focus{color:#a0915e}.to-sm\:focus\:text-color-verdigris:focus{color:#494a2d}.to-sm\:focus\:text-color-texas:focus{color:#f9fb93}.to-sm\:focus\:text-color-ferra:focus{color:#634849}.to-sm\:focus\:text-color-cherub:focus{color:#fbe3e4}.to-sm\:focus\:text-color-cabbage-pont:focus{color:#454e41}.to-sm\:focus\:text-color-tea-green:focus{color:#cfefc2}.to-sm\:text-3xs{font-size:.667rem}.to-sm\:text-2xs{font-size:.8rem}.to-sm\:text-xs{font-size:.867rem}.to-sm\:text-sm{font-size:.933rem}.to-sm\:text-base{font-size:15px}.to-sm\:text-lg{font-size:1.067rem}.to-sm\:text-xl{font-size:1.2rem}.to-sm\:text-2xl{font-size:1.267rem}.to-sm\:text-3xl{font-size:1.933rem}.to-sm\:italic{font-style:italic}.to-sm\:roman{font-style:normal}.to-sm\:uppercase{text-transform:uppercase}.to-sm\:lowercase{text-transform:lowercase}.to-sm\:capitalize{text-transform:capitalize}.to-sm\:normal-case{text-transform:none}.to-sm\:underline{text-decoration:underline}.to-sm\:line-through{text-decoration:line-through}.to-sm\:no-underline{text-decoration:none}.to-sm\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-sm\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-sm\:hover\:italic:hover{font-style:italic}.to-sm\:hover\:roman:hover{font-style:normal}.to-sm\:hover\:uppercase:hover{text-transform:uppercase}.to-sm\:hover\:lowercase:hover{text-transform:lowercase}.to-sm\:hover\:capitalize:hover{text-transform:capitalize}.to-sm\:hover\:normal-case:hover{text-transform:none}.to-sm\:hover\:underline:hover{text-decoration:underline}.to-sm\:hover\:line-through:hover{text-decoration:line-through}.to-sm\:hover\:no-underline:hover{text-decoration:none}.to-sm\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-sm\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-sm\:focus\:italic:focus{font-style:italic}.to-sm\:focus\:roman:focus{font-style:normal}.to-sm\:focus\:uppercase:focus{text-transform:uppercase}.to-sm\:focus\:lowercase:focus{text-transform:lowercase}.to-sm\:focus\:capitalize:focus{text-transform:capitalize}.to-sm\:focus\:normal-case:focus{text-transform:none}.to-sm\:focus\:underline:focus{text-decoration:underline}.to-sm\:focus\:line-through:focus{text-decoration:line-through}.to-sm\:focus\:no-underline:focus{text-decoration:none}.to-sm\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-sm\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-sm\:tracking-tight{letter-spacing:-.05em}.to-sm\:tracking-normal{letter-spacing:0}.to-sm\:tracking-wide{letter-spacing:.05em}.to-sm\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.to-sm\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.to-sm\:align-baseline{vertical-align:baseline}.to-sm\:align-top{vertical-align:top}.to-sm\:align-middle{vertical-align:middle}.to-sm\:align-bottom{vertical-align:bottom}.to-sm\:align-text-top{vertical-align:text-top}.to-sm\:align-text-bottom{vertical-align:text-bottom}.to-sm\:visible{visibility:visible}.to-sm\:invisible{visibility:hidden}.to-sm\:whitespace-normal{white-space:normal}.to-sm\:whitespace-no-wrap{white-space:nowrap}.to-sm\:whitespace-pre{white-space:pre}.to-sm\:whitespace-pre-line{white-space:pre-line}.to-sm\:whitespace-pre-wrap{white-space:pre-wrap}.to-sm\:break-words{word-wrap:break-word}.to-sm\:break-normal{word-wrap:normal}.to-sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.to-sm\:w-1{width:.25rem}.to-sm\:w-2{width:.5rem}.to-sm\:w-3{width:.75rem}.to-sm\:w-4{width:1rem}.to-sm\:w-5{width:1.25rem}.to-sm\:w-6{width:1.5rem}.to-sm\:w-8{width:2rem}.to-sm\:w-10{width:2.5rem}.to-sm\:w-12{width:3rem}.to-sm\:w-16{width:4rem}.to-sm\:w-24{width:6rem}.to-sm\:w-32{width:8rem}.to-sm\:w-40{width:10rem}.to-sm\:w-48{width:12rem}.to-sm\:w-56{width:14rem}.to-sm\:w-64{width:16rem}.to-sm\:w-auto{width:auto}.to-sm\:w-px{width:1px}.to-sm\:w-1\/2{width:50%}.to-sm\:w-1\/3{width:33.33333%}.to-sm\:w-2\/3{width:66.66667%}.to-sm\:w-1\/4{width:25%}.to-sm\:w-3\/4{width:75%}.to-sm\:w-1\/5{width:20%}.to-sm\:w-2\/5{width:40%}.to-sm\:w-3\/5{width:60%}.to-sm\:w-4\/5{width:80%}.to-sm\:w-1\/6{width:16.66667%}.to-sm\:w-1\/8{width:12.5%}.to-sm\:w-1\/10{width:10%}.to-sm\:w-1\/12{width:8.33333%}.to-sm\:w-full{width:100%}.to-sm\:w-screen{width:100vw}.to-sm\:z-0{z-index:0}.to-sm\:z-10{z-index:10}.to-sm\:z-20{z-index:20}.to-sm\:z-30{z-index:30}.to-sm\:z-40{z-index:40}.to-sm\:z-50{z-index:50}.to-sm\:z-auto{z-index:auto}.to-sm\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.to-sm\:text-shadow-none{text-shadow:none}.to-sm\:gradient-grey,.to-sm\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.to-sm\:gradient-grey-reversed,.to-sm\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.to-sm\:pin-t8{top:2rem}.to-sm\:pin-t16{top:4rem}.to-sm\:pin-b24{bottom:12rem}.to-sm\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.to-sm\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.to-sm\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:576px){.sm\:list-reset{list-style:none;padding:0}.sm\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.sm\:bg-fixed{background-attachment:fixed}.sm\:bg-local{background-attachment:local}.sm\:bg-scroll{background-attachment:scroll}.sm\:bg-transparent{background-color:initial}.sm\:bg-color-black{background-color:#000}.sm\:bg-color-mine-shaft{background-color:#373737}.sm\:bg-color-fuscous-gray{background-color:#4c4d4b}.sm\:bg-color-emperor{background-color:#5d5d5d}.sm\:bg-color-dove-gray{background-color:#646464}.sm\:bg-color-boulder{background-color:#7b7b7b}.sm\:bg-color-silver{background-color:#bbb}.sm\:bg-color-alto{background-color:#dadada}.sm\:bg-color-mercury{background-color:#e9e9e9}.sm\:bg-color-seashell{background-color:#f1f1f1}.sm\:bg-color-white{background-color:#fff}.sm\:bg-color-orient{background-color:#005c7c}.sm\:bg-color-shakespeare{background-color:#4ab9d4}.sm\:bg-color-yellow-metal{background-color:#807040}.sm\:bg-color-kumera{background-color:#8a741d}.sm\:bg-color-olive{background-color:#8e7100}.sm\:bg-color-barley-corn{background-color:#a0915e}.sm\:bg-color-verdigris{background-color:#494a2d}.sm\:bg-color-texas{background-color:#f9fb93}.sm\:bg-color-ferra{background-color:#634849}.sm\:bg-color-cherub{background-color:#fbe3e4}.sm\:bg-color-cabbage-pont{background-color:#454e41}.sm\:bg-color-tea-green{background-color:#cfefc2}.group:hover .sm\:group-hover\:bg-transparent{background-color:initial}.group:hover .sm\:group-hover\:bg-color-black{background-color:#000}.group:hover .sm\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .sm\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .sm\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .sm\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .sm\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .sm\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .sm\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .sm\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .sm\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .sm\:group-hover\:bg-color-white{background-color:#fff}.group:hover .sm\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .sm\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .sm\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .sm\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .sm\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .sm\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .sm\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .sm\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .sm\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .sm\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .sm\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .sm\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.sm\:hover\:bg-transparent:hover{background-color:initial}.sm\:hover\:bg-color-black:hover{background-color:#000}.sm\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.sm\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.sm\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.sm\:hover\:bg-color-dove-gray:hover{background-color:#646464}.sm\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.sm\:hover\:bg-color-silver:hover{background-color:#bbb}.sm\:hover\:bg-color-alto:hover{background-color:#dadada}.sm\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.sm\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.sm\:hover\:bg-color-white:hover{background-color:#fff}.sm\:hover\:bg-color-orient:hover{background-color:#005c7c}.sm\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.sm\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.sm\:hover\:bg-color-kumera:hover{background-color:#8a741d}.sm\:hover\:bg-color-olive:hover{background-color:#8e7100}.sm\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.sm\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.sm\:hover\:bg-color-texas:hover{background-color:#f9fb93}.sm\:hover\:bg-color-ferra:hover{background-color:#634849}.sm\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.sm\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.sm\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.sm\:focus\:bg-transparent:focus{background-color:initial}.sm\:focus\:bg-color-black:focus{background-color:#000}.sm\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.sm\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.sm\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.sm\:focus\:bg-color-dove-gray:focus{background-color:#646464}.sm\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.sm\:focus\:bg-color-silver:focus{background-color:#bbb}.sm\:focus\:bg-color-alto:focus{background-color:#dadada}.sm\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.sm\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.sm\:focus\:bg-color-white:focus{background-color:#fff}.sm\:focus\:bg-color-orient:focus{background-color:#005c7c}.sm\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.sm\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.sm\:focus\:bg-color-kumera:focus{background-color:#8a741d}.sm\:focus\:bg-color-olive:focus{background-color:#8e7100}.sm\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.sm\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.sm\:focus\:bg-color-texas:focus{background-color:#f9fb93}.sm\:focus\:bg-color-ferra:focus{background-color:#634849}.sm\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.sm\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.sm\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.sm\:bg-bottom{background-position:bottom}.sm\:bg-center{background-position:50%}.sm\:bg-left{background-position:0}.sm\:bg-left-bottom{background-position:0 100%}.sm\:bg-left-top{background-position:0 0}.sm\:bg-right{background-position:100%}.sm\:bg-right-bottom{background-position:100% 100%}.sm\:bg-right-top{background-position:100% 0}.sm\:bg-top{background-position:top}.sm\:bg-repeat{background-repeat:repeat}.sm\:bg-no-repeat{background-repeat:no-repeat}.sm\:bg-repeat-x{background-repeat:repeat-x}.sm\:bg-repeat-y{background-repeat:repeat-y}.sm\:bg-auto{background-size:auto}.sm\:bg-cover{background-size:cover}.sm\:bg-contain{background-size:contain}.sm\:border-transparent{border-color:transparent}.sm\:border-color-black{border-color:#000}.sm\:border-color-mine-shaft{border-color:#373737}.sm\:border-color-fuscous-gray{border-color:#4c4d4b}.sm\:border-color-emperor{border-color:#5d5d5d}.sm\:border-color-dove-gray{border-color:#646464}.sm\:border-color-boulder{border-color:#7b7b7b}.sm\:border-color-silver{border-color:#bbb}.sm\:border-color-alto{border-color:#dadada}.sm\:border-color-mercury{border-color:#e9e9e9}.sm\:border-color-seashell{border-color:#f1f1f1}.sm\:border-color-white{border-color:#fff}.sm\:border-color-orient{border-color:#005c7c}.sm\:border-color-shakespeare{border-color:#4ab9d4}.sm\:border-color-yellow-metal{border-color:#807040}.sm\:border-color-kumera{border-color:#8a741d}.sm\:border-color-olive{border-color:#8e7100}.sm\:border-color-barley-corn{border-color:#a0915e}.sm\:border-color-verdigris{border-color:#494a2d}.sm\:border-color-texas{border-color:#f9fb93}.sm\:border-color-ferra{border-color:#634849}.sm\:border-color-cherub{border-color:#fbe3e4}.sm\:border-color-cabbage-pont{border-color:#454e41}.sm\:border-color-tea-green{border-color:#cfefc2}.sm\:hover\:border-transparent:hover{border-color:transparent}.sm\:hover\:border-color-black:hover{border-color:#000}.sm\:hover\:border-color-mine-shaft:hover{border-color:#373737}.sm\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.sm\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.sm\:hover\:border-color-dove-gray:hover{border-color:#646464}.sm\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.sm\:hover\:border-color-silver:hover{border-color:#bbb}.sm\:hover\:border-color-alto:hover{border-color:#dadada}.sm\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.sm\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.sm\:hover\:border-color-white:hover{border-color:#fff}.sm\:hover\:border-color-orient:hover{border-color:#005c7c}.sm\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.sm\:hover\:border-color-yellow-metal:hover{border-color:#807040}.sm\:hover\:border-color-kumera:hover{border-color:#8a741d}.sm\:hover\:border-color-olive:hover{border-color:#8e7100}.sm\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.sm\:hover\:border-color-verdigris:hover{border-color:#494a2d}.sm\:hover\:border-color-texas:hover{border-color:#f9fb93}.sm\:hover\:border-color-ferra:hover{border-color:#634849}.sm\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.sm\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.sm\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.sm\:focus\:border-transparent:focus{border-color:transparent}.sm\:focus\:border-color-black:focus{border-color:#000}.sm\:focus\:border-color-mine-shaft:focus{border-color:#373737}.sm\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.sm\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.sm\:focus\:border-color-dove-gray:focus{border-color:#646464}.sm\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.sm\:focus\:border-color-silver:focus{border-color:#bbb}.sm\:focus\:border-color-alto:focus{border-color:#dadada}.sm\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.sm\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.sm\:focus\:border-color-white:focus{border-color:#fff}.sm\:focus\:border-color-orient:focus{border-color:#005c7c}.sm\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.sm\:focus\:border-color-yellow-metal:focus{border-color:#807040}.sm\:focus\:border-color-kumera:focus{border-color:#8a741d}.sm\:focus\:border-color-olive:focus{border-color:#8e7100}.sm\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.sm\:focus\:border-color-verdigris:focus{border-color:#494a2d}.sm\:focus\:border-color-texas:focus{border-color:#f9fb93}.sm\:focus\:border-color-ferra:focus{border-color:#634849}.sm\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.sm\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.sm\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.sm\:rounded-none{border-radius:0}.sm\:rounded-sm{border-radius:.125rem}.sm\:rounded{border-radius:.25rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:rounded-full{border-radius:9999px}.sm\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.sm\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.sm\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.sm\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.sm\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.sm\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.sm\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.sm\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.sm\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.sm\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.sm\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.sm\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.sm\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.sm\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.sm\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.sm\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.sm\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.sm\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.sm\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.sm\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.sm\:rounded-tl-none{border-top-left-radius:0}.sm\:rounded-tr-none{border-top-right-radius:0}.sm\:rounded-br-none{border-bottom-right-radius:0}.sm\:rounded-bl-none{border-bottom-left-radius:0}.sm\:rounded-tl-sm{border-top-left-radius:.125rem}.sm\:rounded-tr-sm{border-top-right-radius:.125rem}.sm\:rounded-br-sm{border-bottom-right-radius:.125rem}.sm\:rounded-bl-sm{border-bottom-left-radius:.125rem}.sm\:rounded-tl{border-top-left-radius:.25rem}.sm\:rounded-tr{border-top-right-radius:.25rem}.sm\:rounded-br{border-bottom-right-radius:.25rem}.sm\:rounded-bl{border-bottom-left-radius:.25rem}.sm\:rounded-tl-lg{border-top-left-radius:.5rem}.sm\:rounded-tr-lg{border-top-right-radius:.5rem}.sm\:rounded-br-lg{border-bottom-right-radius:.5rem}.sm\:rounded-bl-lg{border-bottom-left-radius:.5rem}.sm\:rounded-tl-full{border-top-left-radius:9999px}.sm\:rounded-tr-full{border-top-right-radius:9999px}.sm\:rounded-br-full{border-bottom-right-radius:9999px}.sm\:rounded-bl-full{border-bottom-left-radius:9999px}.sm\:border-solid{border-style:solid}.sm\:border-dashed{border-style:dashed}.sm\:border-dotted{border-style:dotted}.sm\:border-none{border-style:none}.sm\:border-0{border-width:0}.sm\:border-2{border-width:2px}.sm\:border-4{border-width:4px}.sm\:border-8{border-width:8px}.sm\:border{border-width:1px}.sm\:border-t-0{border-top-width:0}.sm\:border-r-0{border-right-width:0}.sm\:border-b-0{border-bottom-width:0}.sm\:border-l-0{border-left-width:0}.sm\:border-t-2{border-top-width:2px}.sm\:border-r-2{border-right-width:2px}.sm\:border-b-2{border-bottom-width:2px}.sm\:border-l-2{border-left-width:2px}.sm\:border-t-4{border-top-width:4px}.sm\:border-r-4{border-right-width:4px}.sm\:border-b-4{border-bottom-width:4px}.sm\:border-l-4{border-left-width:4px}.sm\:border-t-8{border-top-width:8px}.sm\:border-r-8{border-right-width:8px}.sm\:border-b-8{border-bottom-width:8px}.sm\:border-l-8{border-left-width:8px}.sm\:border-t{border-top-width:1px}.sm\:border-r{border-right-width:1px}.sm\:border-b{border-bottom-width:1px}.sm\:border-l{border-left-width:1px}.sm\:cursor-auto{cursor:auto}.sm\:cursor-default{cursor:default}.sm\:cursor-pointer{cursor:pointer}.sm\:cursor-wait{cursor:wait}.sm\:cursor-move{cursor:move}.sm\:cursor-not-allowed{cursor:not-allowed}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:table{display:table}.sm\:table-row{display:table-row}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:hover\:block:hover{display:block}.sm\:hover\:inline-block:hover{display:inline-block}.sm\:hover\:inline:hover{display:inline}.sm\:hover\:table:hover{display:table}.sm\:hover\:table-row:hover{display:table-row}.sm\:hover\:table-cell:hover{display:table-cell}.sm\:hover\:hidden:hover{display:none}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sm\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.sm\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.sm\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.sm\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.sm\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.sm\:self-auto{-ms-flex-item-align:auto;align-self:auto}.sm\:self-start{-ms-flex-item-align:start;align-self:flex-start}.sm\:self-end{-ms-flex-item-align:end;align-self:flex-end}.sm\:self-center{-ms-flex-item-align:center;align-self:center}.sm\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.sm\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.sm\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.sm\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.sm\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.sm\:content-center{-ms-flex-line-pack:center;align-content:center}.sm\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.sm\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.sm\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.sm\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.sm\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.sm\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.sm\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.sm\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.sm\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.sm\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.sm\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.sm\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.sm\:float-right{float:right}.sm\:float-left{float:left}.sm\:float-none{float:none}.sm\:clearfix:after{content:"";display:table;clear:both}.sm\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.sm\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.sm\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.sm\:font-hairline{font-weight:100}.sm\:font-thin{font-weight:200}.sm\:font-light{font-weight:300}.sm\:font-normal{font-weight:400}.sm\:font-medium{font-weight:500}.sm\:font-semibold{font-weight:600}.sm\:font-bold{font-weight:700}.sm\:font-extrabold{font-weight:800}.sm\:font-black{font-weight:900}.sm\:hover\:font-hairline:hover{font-weight:100}.sm\:hover\:font-thin:hover{font-weight:200}.sm\:hover\:font-light:hover{font-weight:300}.sm\:hover\:font-normal:hover{font-weight:400}.sm\:hover\:font-medium:hover{font-weight:500}.sm\:hover\:font-semibold:hover{font-weight:600}.sm\:hover\:font-bold:hover{font-weight:700}.sm\:hover\:font-extrabold:hover{font-weight:800}.sm\:hover\:font-black:hover{font-weight:900}.sm\:focus\:font-hairline:focus{font-weight:100}.sm\:focus\:font-thin:focus{font-weight:200}.sm\:focus\:font-light:focus{font-weight:300}.sm\:focus\:font-normal:focus{font-weight:400}.sm\:focus\:font-medium:focus{font-weight:500}.sm\:focus\:font-semibold:focus{font-weight:600}.sm\:focus\:font-bold:focus{font-weight:700}.sm\:focus\:font-extrabold:focus{font-weight:800}.sm\:focus\:font-black:focus{font-weight:900}.sm\:h-1{height:.25rem}.sm\:h-2{height:.5rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-6{height:1.5rem}.sm\:h-8{height:2rem}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-16{height:4rem}.sm\:h-24{height:6rem}.sm\:h-32{height:8rem}.sm\:h-48{height:12rem}.sm\:h-64{height:16rem}.sm\:h-auto{height:auto}.sm\:h-px{height:1px}.sm\:h-full{height:100%}.sm\:h-screen{height:100vh}.sm\:h-screen-40-width{height:40vw}.sm\:h-screen-60-width{height:60vw}.sm\:h-screen-full-width{height:100vw}.sm\:leading-zero{line-height:0}.sm\:leading-none{line-height:1}.sm\:leading-tight{line-height:1.25}.sm\:leading-normal{line-height:1.5}.sm\:leading-loose{line-height:2}.sm\:m-0{margin:0}.sm\:m-1{margin:.25rem}.sm\:m-2{margin:.5rem}.sm\:m-3{margin:.75rem}.sm\:m-4{margin:1rem}.sm\:m-5{margin:1.25rem}.sm\:m-6{margin:1.5rem}.sm\:m-8{margin:2rem}.sm\:m-10{margin:2.5rem}.sm\:m-12{margin:3rem}.sm\:m-16{margin:4rem}.sm\:m-20{margin:5rem}.sm\:m-24{margin:6rem}.sm\:m-32{margin:8rem}.sm\:m-auto{margin:auto}.sm\:m-px{margin:1px}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-1{margin-top:.25rem;margin-bottom:.25rem}.sm\:mx-1{margin-left:.25rem;margin-right:.25rem}.sm\:my-2{margin-top:.5rem;margin-bottom:.5rem}.sm\:mx-2{margin-left:.5rem;margin-right:.5rem}.sm\:my-3{margin-top:.75rem;margin-bottom:.75rem}.sm\:mx-3{margin-left:.75rem;margin-right:.75rem}.sm\:my-4{margin-top:1rem;margin-bottom:1rem}.sm\:mx-4{margin-left:1rem;margin-right:1rem}.sm\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.sm\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.sm\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.sm\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mx-8{margin-left:2rem;margin-right:2rem}.sm\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.sm\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mx-12{margin-left:3rem;margin-right:3rem}.sm\:my-16{margin-top:4rem;margin-bottom:4rem}.sm\:mx-16{margin-left:4rem;margin-right:4rem}.sm\:my-20{margin-top:5rem;margin-bottom:5rem}.sm\:mx-20{margin-left:5rem;margin-right:5rem}.sm\:my-24{margin-top:6rem;margin-bottom:6rem}.sm\:mx-24{margin-left:6rem;margin-right:6rem}.sm\:my-32{margin-top:8rem;margin-bottom:8rem}.sm\:mx-32{margin-left:8rem;margin-right:8rem}.sm\:my-auto{margin-top:auto;margin-bottom:auto}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:my-px{margin-top:1px;margin-bottom:1px}.sm\:mx-px{margin-left:1px;margin-right:1px}.sm\:mt-0{margin-top:0}.sm\:mr-0{margin-right:0}.sm\:mb-0{margin-bottom:0}.sm\:ml-0{margin-left:0}.sm\:mt-1{margin-top:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mb-1{margin-bottom:.25rem}.sm\:ml-1{margin-left:.25rem}.sm\:mt-2{margin-top:.5rem}.sm\:mr-2{margin-right:.5rem}.sm\:mb-2{margin-bottom:.5rem}.sm\:ml-2{margin-left:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mr-3{margin-right:.75rem}.sm\:mb-3{margin-bottom:.75rem}.sm\:ml-3{margin-left:.75rem}.sm\:mt-4{margin-top:1rem}.sm\:mr-4{margin-right:1rem}.sm\:mb-4{margin-bottom:1rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:mr-5{margin-right:1.25rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:ml-5{margin-left:1.25rem}.sm\:mt-6{margin-top:1.5rem}.sm\:mr-6{margin-right:1.5rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-8{margin-top:2rem}.sm\:mr-8{margin-right:2rem}.sm\:mb-8{margin-bottom:2rem}.sm\:ml-8{margin-left:2rem}.sm\:mt-10{margin-top:2.5rem}.sm\:mr-10{margin-right:2.5rem}.sm\:mb-10{margin-bottom:2.5rem}.sm\:ml-10{margin-left:2.5rem}.sm\:mt-12{margin-top:3rem}.sm\:mr-12{margin-right:3rem}.sm\:mb-12{margin-bottom:3rem}.sm\:ml-12{margin-left:3rem}.sm\:mt-16{margin-top:4rem}.sm\:mr-16{margin-right:4rem}.sm\:mb-16{margin-bottom:4rem}.sm\:ml-16{margin-left:4rem}.sm\:mt-20{margin-top:5rem}.sm\:mr-20{margin-right:5rem}.sm\:mb-20{margin-bottom:5rem}.sm\:ml-20{margin-left:5rem}.sm\:mt-24{margin-top:6rem}.sm\:mr-24{margin-right:6rem}.sm\:mb-24{margin-bottom:6rem}.sm\:ml-24{margin-left:6rem}.sm\:mt-32{margin-top:8rem}.sm\:mr-32{margin-right:8rem}.sm\:mb-32{margin-bottom:8rem}.sm\:ml-32{margin-left:8rem}.sm\:mt-auto{margin-top:auto}.sm\:mr-auto{margin-right:auto}.sm\:mb-auto{margin-bottom:auto}.sm\:ml-auto{margin-left:auto}.sm\:mt-px{margin-top:1px}.sm\:mr-px{margin-right:1px}.sm\:mb-px{margin-bottom:1px}.sm\:ml-px{margin-left:1px}.sm\:max-h-full{max-height:100%}.sm\:max-h-screen{max-height:100vh}.sm\:max-w-sm{max-width:576px}.sm\:max-w-md{max-width:768px}.sm\:max-w-lg{max-width:992px}.sm\:max-w-xl{max-width:1200px}.sm\:max-w-full{max-width:100%}.sm\:min-h-0{min-height:0}.sm\:min-h-full{min-height:100%}.sm\:min-h-screen{min-height:100vh}.sm\:min-w-0{min-width:0}.sm\:min-w-full{min-width:100%}.sm\:-m-0{margin:0}.sm\:-m-1{margin:-.25rem}.sm\:-m-2{margin:-.5rem}.sm\:-m-3{margin:-.75rem}.sm\:-m-4{margin:-1rem}.sm\:-m-5{margin:-1.25rem}.sm\:-m-6{margin:-1.5rem}.sm\:-m-8{margin:-2rem}.sm\:-m-10{margin:-2.5rem}.sm\:-m-12{margin:-3rem}.sm\:-m-16{margin:-4rem}.sm\:-m-20{margin:-5rem}.sm\:-m-24{margin:-6rem}.sm\:-m-32{margin:-8rem}.sm\:-m-px{margin:-1px}.sm\:-my-0{margin-top:0;margin-bottom:0}.sm\:-mx-0{margin-left:0;margin-right:0}.sm\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.sm\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.sm\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.sm\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.sm\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.sm\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.sm\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.sm\:-mx-4{margin-left:-1rem;margin-right:-1rem}.sm\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.sm\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.sm\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.sm\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.sm\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.sm\:-mx-12{margin-left:-3rem;margin-right:-3rem}.sm\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.sm\:-mx-16{margin-left:-4rem;margin-right:-4rem}.sm\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.sm\:-mx-20{margin-left:-5rem;margin-right:-5rem}.sm\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.sm\:-mx-24{margin-left:-6rem;margin-right:-6rem}.sm\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.sm\:-mx-32{margin-left:-8rem;margin-right:-8rem}.sm\:-my-px{margin-top:-1px;margin-bottom:-1px}.sm\:-mx-px{margin-left:-1px;margin-right:-1px}.sm\:-mt-0{margin-top:0}.sm\:-mr-0{margin-right:0}.sm\:-mb-0{margin-bottom:0}.sm\:-ml-0{margin-left:0}.sm\:-mt-1{margin-top:-.25rem}.sm\:-mr-1{margin-right:-.25rem}.sm\:-mb-1{margin-bottom:-.25rem}.sm\:-ml-1{margin-left:-.25rem}.sm\:-mt-2{margin-top:-.5rem}.sm\:-mr-2{margin-right:-.5rem}.sm\:-mb-2{margin-bottom:-.5rem}.sm\:-ml-2{margin-left:-.5rem}.sm\:-mt-3{margin-top:-.75rem}.sm\:-mr-3{margin-right:-.75rem}.sm\:-mb-3{margin-bottom:-.75rem}.sm\:-ml-3{margin-left:-.75rem}.sm\:-mt-4{margin-top:-1rem}.sm\:-mr-4{margin-right:-1rem}.sm\:-mb-4{margin-bottom:-1rem}.sm\:-ml-4{margin-left:-1rem}.sm\:-mt-5{margin-top:-1.25rem}.sm\:-mr-5{margin-right:-1.25rem}.sm\:-mb-5{margin-bottom:-1.25rem}.sm\:-ml-5{margin-left:-1.25rem}.sm\:-mt-6{margin-top:-1.5rem}.sm\:-mr-6{margin-right:-1.5rem}.sm\:-mb-6{margin-bottom:-1.5rem}.sm\:-ml-6{margin-left:-1.5rem}.sm\:-mt-8{margin-top:-2rem}.sm\:-mr-8{margin-right:-2rem}.sm\:-mb-8{margin-bottom:-2rem}.sm\:-ml-8{margin-left:-2rem}.sm\:-mt-10{margin-top:-2.5rem}.sm\:-mr-10{margin-right:-2.5rem}.sm\:-mb-10{margin-bottom:-2.5rem}.sm\:-ml-10{margin-left:-2.5rem}.sm\:-mt-12{margin-top:-3rem}.sm\:-mr-12{margin-right:-3rem}.sm\:-mb-12{margin-bottom:-3rem}.sm\:-ml-12{margin-left:-3rem}.sm\:-mt-16{margin-top:-4rem}.sm\:-mr-16{margin-right:-4rem}.sm\:-mb-16{margin-bottom:-4rem}.sm\:-ml-16{margin-left:-4rem}.sm\:-mt-20{margin-top:-5rem}.sm\:-mr-20{margin-right:-5rem}.sm\:-mb-20{margin-bottom:-5rem}.sm\:-ml-20{margin-left:-5rem}.sm\:-mt-24{margin-top:-6rem}.sm\:-mr-24{margin-right:-6rem}.sm\:-mb-24{margin-bottom:-6rem}.sm\:-ml-24{margin-left:-6rem}.sm\:-mt-32{margin-top:-8rem}.sm\:-mr-32{margin-right:-8rem}.sm\:-mb-32{margin-bottom:-8rem}.sm\:-ml-32{margin-left:-8rem}.sm\:-mt-px{margin-top:-1px}.sm\:-mr-px{margin-right:-1px}.sm\:-mb-px{margin-bottom:-1px}.sm\:-ml-px{margin-left:-1px}.sm\:opacity-0{opacity:0}.sm\:opacity-25{opacity:.25}.sm\:opacity-50{opacity:.5}.sm\:opacity-75{opacity:.75}.sm\:opacity-100{opacity:1}.group:hover .sm\:group-hover\:opacity-0{opacity:0}.group:hover .sm\:group-hover\:opacity-25{opacity:.25}.group:hover .sm\:group-hover\:opacity-50{opacity:.5}.group:hover .sm\:group-hover\:opacity-75{opacity:.75}.group:hover .sm\:group-hover\:opacity-100{opacity:1}.sm\:overflow-auto{overflow:auto}.sm\:overflow-hidden{overflow:hidden}.sm\:overflow-visible{overflow:visible}.sm\:overflow-scroll{overflow:scroll}.sm\:overflow-x-auto{overflow-x:auto}.sm\:overflow-y-auto{overflow-y:auto}.sm\:overflow-x-hidden{overflow-x:hidden}.sm\:overflow-y-hidden{overflow-y:hidden}.sm\:overflow-x-visible{overflow-x:visible}.sm\:overflow-y-visible{overflow-y:visible}.sm\:overflow-x-scroll{overflow-x:scroll}.sm\:overflow-y-scroll{overflow-y:scroll}.sm\:scrolling-touch{-webkit-overflow-scrolling:touch}.sm\:scrolling-auto{-webkit-overflow-scrolling:auto}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:p-10{padding:2.5rem}.sm\:p-12{padding:3rem}.sm\:p-16{padding:4rem}.sm\:p-20{padding:5rem}.sm\:p-24{padding:6rem}.sm\:p-32{padding:8rem}.sm\:p-px{padding:1px}.sm\:py-0{padding-top:0;padding-bottom:0}.sm\:px-0{padding-left:0;padding-right:0}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:px-1{padding-left:.25rem;padding-right:.25rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:py-20{padding-top:5rem;padding-bottom:5rem}.sm\:px-20{padding-left:5rem;padding-right:5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:px-24{padding-left:6rem;padding-right:6rem}.sm\:py-32{padding-top:8rem;padding-bottom:8rem}.sm\:px-32{padding-left:8rem;padding-right:8rem}.sm\:py-px{padding-top:1px;padding-bottom:1px}.sm\:px-px{padding-left:1px;padding-right:1px}.sm\:pt-0{padding-top:0}.sm\:pr-0{padding-right:0}.sm\:pb-0{padding-bottom:0}.sm\:pl-0{padding-left:0}.sm\:pt-1{padding-top:.25rem}.sm\:pr-1{padding-right:.25rem}.sm\:pb-1{padding-bottom:.25rem}.sm\:pl-1{padding-left:.25rem}.sm\:pt-2{padding-top:.5rem}.sm\:pr-2{padding-right:.5rem}.sm\:pb-2{padding-bottom:.5rem}.sm\:pl-2{padding-left:.5rem}.sm\:pt-3{padding-top:.75rem}.sm\:pr-3{padding-right:.75rem}.sm\:pb-3{padding-bottom:.75rem}.sm\:pl-3{padding-left:.75rem}.sm\:pt-4{padding-top:1rem}.sm\:pr-4{padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:pl-4{padding-left:1rem}.sm\:pt-5{padding-top:1.25rem}.sm\:pr-5{padding-right:1.25rem}.sm\:pb-5{padding-bottom:1.25rem}.sm\:pl-5{padding-left:1.25rem}.sm\:pt-6{padding-top:1.5rem}.sm\:pr-6{padding-right:1.5rem}.sm\:pb-6{padding-bottom:1.5rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pt-8{padding-top:2rem}.sm\:pr-8{padding-right:2rem}.sm\:pb-8{padding-bottom:2rem}.sm\:pl-8{padding-left:2rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pr-10{padding-right:2.5rem}.sm\:pb-10{padding-bottom:2.5rem}.sm\:pl-10{padding-left:2.5rem}.sm\:pt-12{padding-top:3rem}.sm\:pr-12{padding-right:3rem}.sm\:pb-12{padding-bottom:3rem}.sm\:pl-12{padding-left:3rem}.sm\:pt-16{padding-top:4rem}.sm\:pr-16{padding-right:4rem}.sm\:pb-16{padding-bottom:4rem}.sm\:pl-16{padding-left:4rem}.sm\:pt-20{padding-top:5rem}.sm\:pr-20{padding-right:5rem}.sm\:pb-20{padding-bottom:5rem}.sm\:pl-20{padding-left:5rem}.sm\:pt-24{padding-top:6rem}.sm\:pr-24{padding-right:6rem}.sm\:pb-24{padding-bottom:6rem}.sm\:pl-24{padding-left:6rem}.sm\:pt-32{padding-top:8rem}.sm\:pr-32{padding-right:8rem}.sm\:pb-32{padding-bottom:8rem}.sm\:pl-32{padding-left:8rem}.sm\:pt-px{padding-top:1px}.sm\:pr-px{padding-right:1px}.sm\:pb-px{padding-bottom:1px}.sm\:pl-px{padding-left:1px}.sm\:pointer-events-none{pointer-events:none}.sm\:pointer-events-auto{pointer-events:auto}.sm\:static{position:static}.sm\:fixed{position:fixed}.sm\:absolute{position:absolute}.sm\:relative{position:relative}.sm\:sticky{position:sticky}.sm\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.sm\:pin{top:0;right:0;bottom:0;left:0}.sm\:pin-y{top:0;bottom:0}.sm\:pin-x{right:0;left:0}.sm\:pin-t{top:0}.sm\:pin-r{right:0}.sm\:pin-b{bottom:0}.sm\:pin-l{left:0}.sm\:resize-none{resize:none}.sm\:resize-y{resize:vertical}.sm\:resize-x{resize:horizontal}.sm\:resize{resize:both}.sm\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.sm\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.sm\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.sm\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.sm\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.sm\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:none}.sm\:table-auto{table-layout:auto}.sm\:table-fixed{table-layout:fixed}.sm\:text-left{text-align:left}.sm\:text-center{text-align:center}.sm\:text-right{text-align:right}.sm\:text-justify{text-align:justify}.sm\:text-transparent{color:transparent}.sm\:text-color-black{color:#000}.sm\:text-color-mine-shaft{color:#373737}.sm\:text-color-fuscous-gray{color:#4c4d4b}.sm\:text-color-emperor{color:#5d5d5d}.sm\:text-color-dove-gray{color:#646464}.sm\:text-color-boulder{color:#7b7b7b}.sm\:text-color-silver{color:#bbb}.sm\:text-color-alto{color:#dadada}.sm\:text-color-mercury{color:#e9e9e9}.sm\:text-color-seashell{color:#f1f1f1}.sm\:text-color-white{color:#fff}.sm\:text-color-orient{color:#005c7c}.sm\:text-color-shakespeare{color:#4ab9d4}.sm\:text-color-yellow-metal{color:#807040}.sm\:text-color-kumera{color:#8a741d}.sm\:text-color-olive{color:#8e7100}.sm\:text-color-barley-corn{color:#a0915e}.sm\:text-color-verdigris{color:#494a2d}.sm\:text-color-texas{color:#f9fb93}.sm\:text-color-ferra{color:#634849}.sm\:text-color-cherub{color:#fbe3e4}.sm\:text-color-cabbage-pont{color:#454e41}.sm\:text-color-tea-green{color:#cfefc2}.group:hover .sm\:group-hover\:text-transparent{color:transparent}.group:hover .sm\:group-hover\:text-color-black{color:#000}.group:hover .sm\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .sm\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .sm\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .sm\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .sm\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .sm\:group-hover\:text-color-silver{color:#bbb}.group:hover .sm\:group-hover\:text-color-alto{color:#dadada}.group:hover .sm\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .sm\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .sm\:group-hover\:text-color-white{color:#fff}.group:hover .sm\:group-hover\:text-color-orient{color:#005c7c}.group:hover .sm\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .sm\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .sm\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .sm\:group-hover\:text-color-olive{color:#8e7100}.group:hover .sm\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .sm\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .sm\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .sm\:group-hover\:text-color-ferra{color:#634849}.group:hover .sm\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .sm\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .sm\:group-hover\:text-color-tea-green{color:#cfefc2}.sm\:hover\:text-transparent:hover{color:transparent}.sm\:hover\:text-color-black:hover{color:#000}.sm\:hover\:text-color-mine-shaft:hover{color:#373737}.sm\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.sm\:hover\:text-color-emperor:hover{color:#5d5d5d}.sm\:hover\:text-color-dove-gray:hover{color:#646464}.sm\:hover\:text-color-boulder:hover{color:#7b7b7b}.sm\:hover\:text-color-silver:hover{color:#bbb}.sm\:hover\:text-color-alto:hover{color:#dadada}.sm\:hover\:text-color-mercury:hover{color:#e9e9e9}.sm\:hover\:text-color-seashell:hover{color:#f1f1f1}.sm\:hover\:text-color-white:hover{color:#fff}.sm\:hover\:text-color-orient:hover{color:#005c7c}.sm\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.sm\:hover\:text-color-yellow-metal:hover{color:#807040}.sm\:hover\:text-color-kumera:hover{color:#8a741d}.sm\:hover\:text-color-olive:hover{color:#8e7100}.sm\:hover\:text-color-barley-corn:hover{color:#a0915e}.sm\:hover\:text-color-verdigris:hover{color:#494a2d}.sm\:hover\:text-color-texas:hover{color:#f9fb93}.sm\:hover\:text-color-ferra:hover{color:#634849}.sm\:hover\:text-color-cherub:hover{color:#fbe3e4}.sm\:hover\:text-color-cabbage-pont:hover{color:#454e41}.sm\:hover\:text-color-tea-green:hover{color:#cfefc2}.sm\:focus\:text-transparent:focus{color:transparent}.sm\:focus\:text-color-black:focus{color:#000}.sm\:focus\:text-color-mine-shaft:focus{color:#373737}.sm\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.sm\:focus\:text-color-emperor:focus{color:#5d5d5d}.sm\:focus\:text-color-dove-gray:focus{color:#646464}.sm\:focus\:text-color-boulder:focus{color:#7b7b7b}.sm\:focus\:text-color-silver:focus{color:#bbb}.sm\:focus\:text-color-alto:focus{color:#dadada}.sm\:focus\:text-color-mercury:focus{color:#e9e9e9}.sm\:focus\:text-color-seashell:focus{color:#f1f1f1}.sm\:focus\:text-color-white:focus{color:#fff}.sm\:focus\:text-color-orient:focus{color:#005c7c}.sm\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.sm\:focus\:text-color-yellow-metal:focus{color:#807040}.sm\:focus\:text-color-kumera:focus{color:#8a741d}.sm\:focus\:text-color-olive:focus{color:#8e7100}.sm\:focus\:text-color-barley-corn:focus{color:#a0915e}.sm\:focus\:text-color-verdigris:focus{color:#494a2d}.sm\:focus\:text-color-texas:focus{color:#f9fb93}.sm\:focus\:text-color-ferra:focus{color:#634849}.sm\:focus\:text-color-cherub:focus{color:#fbe3e4}.sm\:focus\:text-color-cabbage-pont:focus{color:#454e41}.sm\:focus\:text-color-tea-green:focus{color:#cfefc2}.sm\:text-3xs{font-size:.667rem}.sm\:text-2xs{font-size:.8rem}.sm\:text-xs{font-size:.867rem}.sm\:text-sm{font-size:.933rem}.sm\:text-base{font-size:15px}.sm\:text-lg{font-size:1.067rem}.sm\:text-xl{font-size:1.2rem}.sm\:text-2xl{font-size:1.267rem}.sm\:text-3xl{font-size:1.933rem}.sm\:italic{font-style:italic}.sm\:roman{font-style:normal}.sm\:uppercase{text-transform:uppercase}.sm\:lowercase{text-transform:lowercase}.sm\:capitalize{text-transform:capitalize}.sm\:normal-case{text-transform:none}.sm\:underline{text-decoration:underline}.sm\:line-through{text-decoration:line-through}.sm\:no-underline{text-decoration:none}.sm\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sm\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.sm\:hover\:italic:hover{font-style:italic}.sm\:hover\:roman:hover{font-style:normal}.sm\:hover\:uppercase:hover{text-transform:uppercase}.sm\:hover\:lowercase:hover{text-transform:lowercase}.sm\:hover\:capitalize:hover{text-transform:capitalize}.sm\:hover\:normal-case:hover{text-transform:none}.sm\:hover\:underline:hover{text-decoration:underline}.sm\:hover\:line-through:hover{text-decoration:line-through}.sm\:hover\:no-underline:hover{text-decoration:none}.sm\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sm\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.sm\:focus\:italic:focus{font-style:italic}.sm\:focus\:roman:focus{font-style:normal}.sm\:focus\:uppercase:focus{text-transform:uppercase}.sm\:focus\:lowercase:focus{text-transform:lowercase}.sm\:focus\:capitalize:focus{text-transform:capitalize}.sm\:focus\:normal-case:focus{text-transform:none}.sm\:focus\:underline:focus{text-decoration:underline}.sm\:focus\:line-through:focus{text-decoration:line-through}.sm\:focus\:no-underline:focus{text-decoration:none}.sm\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sm\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.sm\:tracking-tight{letter-spacing:-.05em}.sm\:tracking-normal{letter-spacing:0}.sm\:tracking-wide{letter-spacing:.05em}.sm\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sm\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.sm\:align-baseline{vertical-align:baseline}.sm\:align-top{vertical-align:top}.sm\:align-middle{vertical-align:middle}.sm\:align-bottom{vertical-align:bottom}.sm\:align-text-top{vertical-align:text-top}.sm\:align-text-bottom{vertical-align:text-bottom}.sm\:visible{visibility:visible}.sm\:invisible{visibility:hidden}.sm\:whitespace-normal{white-space:normal}.sm\:whitespace-no-wrap{white-space:nowrap}.sm\:whitespace-pre{white-space:pre}.sm\:whitespace-pre-line{white-space:pre-line}.sm\:whitespace-pre-wrap{white-space:pre-wrap}.sm\:break-words{word-wrap:break-word}.sm\:break-normal{word-wrap:normal}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-1{width:.25rem}.sm\:w-2{width:.5rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-6{width:1.5rem}.sm\:w-8{width:2rem}.sm\:w-10{width:2.5rem}.sm\:w-12{width:3rem}.sm\:w-16{width:4rem}.sm\:w-24{width:6rem}.sm\:w-32{width:8rem}.sm\:w-40{width:10rem}.sm\:w-48{width:12rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:w-px{width:1px}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.33333%}.sm\:w-2\/3{width:66.66667%}.sm\:w-1\/4{width:25%}.sm\:w-3\/4{width:75%}.sm\:w-1\/5{width:20%}.sm\:w-2\/5{width:40%}.sm\:w-3\/5{width:60%}.sm\:w-4\/5{width:80%}.sm\:w-1\/6{width:16.66667%}.sm\:w-1\/8{width:12.5%}.sm\:w-1\/10{width:10%}.sm\:w-1\/12{width:8.33333%}.sm\:w-full{width:100%}.sm\:w-screen{width:100vw}.sm\:z-0{z-index:0}.sm\:z-10{z-index:10}.sm\:z-20{z-index:20}.sm\:z-30{z-index:30}.sm\:z-40{z-index:40}.sm\:z-50{z-index:50}.sm\:z-auto{z-index:auto}.sm\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.sm\:text-shadow-none{text-shadow:none}.sm\:gradient-grey,.sm\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.sm\:gradient-grey-reversed,.sm\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.sm\:pin-t8{top:2rem}.sm\:pin-t16{top:4rem}.sm\:pin-b24{bottom:12rem}.sm\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.sm\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.sm\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:768px){.md\:list-reset{list-style:none;padding:0}.md\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.md\:bg-fixed{background-attachment:fixed}.md\:bg-local{background-attachment:local}.md\:bg-scroll{background-attachment:scroll}.md\:bg-transparent{background-color:initial}.md\:bg-color-black{background-color:#000}.md\:bg-color-mine-shaft{background-color:#373737}.md\:bg-color-fuscous-gray{background-color:#4c4d4b}.md\:bg-color-emperor{background-color:#5d5d5d}.md\:bg-color-dove-gray{background-color:#646464}.md\:bg-color-boulder{background-color:#7b7b7b}.md\:bg-color-silver{background-color:#bbb}.md\:bg-color-alto{background-color:#dadada}.md\:bg-color-mercury{background-color:#e9e9e9}.md\:bg-color-seashell{background-color:#f1f1f1}.md\:bg-color-white{background-color:#fff}.md\:bg-color-orient{background-color:#005c7c}.md\:bg-color-shakespeare{background-color:#4ab9d4}.md\:bg-color-yellow-metal{background-color:#807040}.md\:bg-color-kumera{background-color:#8a741d}.md\:bg-color-olive{background-color:#8e7100}.md\:bg-color-barley-corn{background-color:#a0915e}.md\:bg-color-verdigris{background-color:#494a2d}.md\:bg-color-texas{background-color:#f9fb93}.md\:bg-color-ferra{background-color:#634849}.md\:bg-color-cherub{background-color:#fbe3e4}.md\:bg-color-cabbage-pont{background-color:#454e41}.md\:bg-color-tea-green{background-color:#cfefc2}.group:hover .md\:group-hover\:bg-transparent{background-color:initial}.group:hover .md\:group-hover\:bg-color-black{background-color:#000}.group:hover .md\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .md\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .md\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .md\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .md\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .md\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .md\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .md\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .md\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .md\:group-hover\:bg-color-white{background-color:#fff}.group:hover .md\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .md\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .md\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .md\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .md\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .md\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .md\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .md\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .md\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .md\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .md\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .md\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.md\:hover\:bg-transparent:hover{background-color:initial}.md\:hover\:bg-color-black:hover{background-color:#000}.md\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.md\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.md\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.md\:hover\:bg-color-dove-gray:hover{background-color:#646464}.md\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.md\:hover\:bg-color-silver:hover{background-color:#bbb}.md\:hover\:bg-color-alto:hover{background-color:#dadada}.md\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.md\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.md\:hover\:bg-color-white:hover{background-color:#fff}.md\:hover\:bg-color-orient:hover{background-color:#005c7c}.md\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.md\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.md\:hover\:bg-color-kumera:hover{background-color:#8a741d}.md\:hover\:bg-color-olive:hover{background-color:#8e7100}.md\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.md\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.md\:hover\:bg-color-texas:hover{background-color:#f9fb93}.md\:hover\:bg-color-ferra:hover{background-color:#634849}.md\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.md\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.md\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.md\:focus\:bg-transparent:focus{background-color:initial}.md\:focus\:bg-color-black:focus{background-color:#000}.md\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.md\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.md\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.md\:focus\:bg-color-dove-gray:focus{background-color:#646464}.md\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.md\:focus\:bg-color-silver:focus{background-color:#bbb}.md\:focus\:bg-color-alto:focus{background-color:#dadada}.md\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.md\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.md\:focus\:bg-color-white:focus{background-color:#fff}.md\:focus\:bg-color-orient:focus{background-color:#005c7c}.md\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.md\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.md\:focus\:bg-color-kumera:focus{background-color:#8a741d}.md\:focus\:bg-color-olive:focus{background-color:#8e7100}.md\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.md\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.md\:focus\:bg-color-texas:focus{background-color:#f9fb93}.md\:focus\:bg-color-ferra:focus{background-color:#634849}.md\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.md\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.md\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.md\:bg-bottom{background-position:bottom}.md\:bg-center{background-position:50%}.md\:bg-left{background-position:0}.md\:bg-left-bottom{background-position:0 100%}.md\:bg-left-top{background-position:0 0}.md\:bg-right{background-position:100%}.md\:bg-right-bottom{background-position:100% 100%}.md\:bg-right-top{background-position:100% 0}.md\:bg-top{background-position:top}.md\:bg-repeat{background-repeat:repeat}.md\:bg-no-repeat{background-repeat:no-repeat}.md\:bg-repeat-x{background-repeat:repeat-x}.md\:bg-repeat-y{background-repeat:repeat-y}.md\:bg-auto{background-size:auto}.md\:bg-cover{background-size:cover}.md\:bg-contain{background-size:contain}.md\:border-transparent{border-color:transparent}.md\:border-color-black{border-color:#000}.md\:border-color-mine-shaft{border-color:#373737}.md\:border-color-fuscous-gray{border-color:#4c4d4b}.md\:border-color-emperor{border-color:#5d5d5d}.md\:border-color-dove-gray{border-color:#646464}.md\:border-color-boulder{border-color:#7b7b7b}.md\:border-color-silver{border-color:#bbb}.md\:border-color-alto{border-color:#dadada}.md\:border-color-mercury{border-color:#e9e9e9}.md\:border-color-seashell{border-color:#f1f1f1}.md\:border-color-white{border-color:#fff}.md\:border-color-orient{border-color:#005c7c}.md\:border-color-shakespeare{border-color:#4ab9d4}.md\:border-color-yellow-metal{border-color:#807040}.md\:border-color-kumera{border-color:#8a741d}.md\:border-color-olive{border-color:#8e7100}.md\:border-color-barley-corn{border-color:#a0915e}.md\:border-color-verdigris{border-color:#494a2d}.md\:border-color-texas{border-color:#f9fb93}.md\:border-color-ferra{border-color:#634849}.md\:border-color-cherub{border-color:#fbe3e4}.md\:border-color-cabbage-pont{border-color:#454e41}.md\:border-color-tea-green{border-color:#cfefc2}.md\:hover\:border-transparent:hover{border-color:transparent}.md\:hover\:border-color-black:hover{border-color:#000}.md\:hover\:border-color-mine-shaft:hover{border-color:#373737}.md\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.md\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.md\:hover\:border-color-dove-gray:hover{border-color:#646464}.md\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.md\:hover\:border-color-silver:hover{border-color:#bbb}.md\:hover\:border-color-alto:hover{border-color:#dadada}.md\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.md\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.md\:hover\:border-color-white:hover{border-color:#fff}.md\:hover\:border-color-orient:hover{border-color:#005c7c}.md\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.md\:hover\:border-color-yellow-metal:hover{border-color:#807040}.md\:hover\:border-color-kumera:hover{border-color:#8a741d}.md\:hover\:border-color-olive:hover{border-color:#8e7100}.md\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.md\:hover\:border-color-verdigris:hover{border-color:#494a2d}.md\:hover\:border-color-texas:hover{border-color:#f9fb93}.md\:hover\:border-color-ferra:hover{border-color:#634849}.md\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.md\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.md\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.md\:focus\:border-transparent:focus{border-color:transparent}.md\:focus\:border-color-black:focus{border-color:#000}.md\:focus\:border-color-mine-shaft:focus{border-color:#373737}.md\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.md\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.md\:focus\:border-color-dove-gray:focus{border-color:#646464}.md\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.md\:focus\:border-color-silver:focus{border-color:#bbb}.md\:focus\:border-color-alto:focus{border-color:#dadada}.md\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.md\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.md\:focus\:border-color-white:focus{border-color:#fff}.md\:focus\:border-color-orient:focus{border-color:#005c7c}.md\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.md\:focus\:border-color-yellow-metal:focus{border-color:#807040}.md\:focus\:border-color-kumera:focus{border-color:#8a741d}.md\:focus\:border-color-olive:focus{border-color:#8e7100}.md\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.md\:focus\:border-color-verdigris:focus{border-color:#494a2d}.md\:focus\:border-color-texas:focus{border-color:#f9fb93}.md\:focus\:border-color-ferra:focus{border-color:#634849}.md\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.md\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.md\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.md\:rounded-none{border-radius:0}.md\:rounded-sm{border-radius:.125rem}.md\:rounded{border-radius:.25rem}.md\:rounded-lg{border-radius:.5rem}.md\:rounded-full{border-radius:9999px}.md\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.md\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.md\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.md\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.md\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.md\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.md\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.md\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.md\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.md\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.md\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.md\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.md\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.md\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.md\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.md\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.md\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.md\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.md\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.md\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.md\:rounded-tl-none{border-top-left-radius:0}.md\:rounded-tr-none{border-top-right-radius:0}.md\:rounded-br-none{border-bottom-right-radius:0}.md\:rounded-bl-none{border-bottom-left-radius:0}.md\:rounded-tl-sm{border-top-left-radius:.125rem}.md\:rounded-tr-sm{border-top-right-radius:.125rem}.md\:rounded-br-sm{border-bottom-right-radius:.125rem}.md\:rounded-bl-sm{border-bottom-left-radius:.125rem}.md\:rounded-tl{border-top-left-radius:.25rem}.md\:rounded-tr{border-top-right-radius:.25rem}.md\:rounded-br{border-bottom-right-radius:.25rem}.md\:rounded-bl{border-bottom-left-radius:.25rem}.md\:rounded-tl-lg{border-top-left-radius:.5rem}.md\:rounded-tr-lg{border-top-right-radius:.5rem}.md\:rounded-br-lg{border-bottom-right-radius:.5rem}.md\:rounded-bl-lg{border-bottom-left-radius:.5rem}.md\:rounded-tl-full{border-top-left-radius:9999px}.md\:rounded-tr-full{border-top-right-radius:9999px}.md\:rounded-br-full{border-bottom-right-radius:9999px}.md\:rounded-bl-full{border-bottom-left-radius:9999px}.md\:border-solid{border-style:solid}.md\:border-dashed{border-style:dashed}.md\:border-dotted{border-style:dotted}.md\:border-none{border-style:none}.md\:border-0{border-width:0}.md\:border-2{border-width:2px}.md\:border-4{border-width:4px}.md\:border-8{border-width:8px}.md\:border{border-width:1px}.md\:border-t-0{border-top-width:0}.md\:border-r-0{border-right-width:0}.md\:border-b-0{border-bottom-width:0}.md\:border-l-0{border-left-width:0}.md\:border-t-2{border-top-width:2px}.md\:border-r-2{border-right-width:2px}.md\:border-b-2{border-bottom-width:2px}.md\:border-l-2{border-left-width:2px}.md\:border-t-4{border-top-width:4px}.md\:border-r-4{border-right-width:4px}.md\:border-b-4{border-bottom-width:4px}.md\:border-l-4{border-left-width:4px}.md\:border-t-8{border-top-width:8px}.md\:border-r-8{border-right-width:8px}.md\:border-b-8{border-bottom-width:8px}.md\:border-l-8{border-left-width:8px}.md\:border-t{border-top-width:1px}.md\:border-r{border-right-width:1px}.md\:border-b{border-bottom-width:1px}.md\:border-l{border-left-width:1px}.md\:cursor-auto{cursor:auto}.md\:cursor-default{cursor:default}.md\:cursor-pointer{cursor:pointer}.md\:cursor-wait{cursor:wait}.md\:cursor-move{cursor:move}.md\:cursor-not-allowed{cursor:not-allowed}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:inline{display:inline}.md\:table{display:table}.md\:table-row{display:table-row}.md\:table-cell{display:table-cell}.md\:hidden{display:none}.md\:hover\:block:hover{display:block}.md\:hover\:inline-block:hover{display:inline-block}.md\:hover\:inline:hover{display:inline}.md\:hover\:table:hover{display:table}.md\:hover\:table-row:hover{display:table-row}.md\:hover\:table-cell:hover{display:table-cell}.md\:hover\:hidden:hover{display:none}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.md\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.md\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.md\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.md\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.md\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.md\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.md\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.md\:self-auto{-ms-flex-item-align:auto;align-self:auto}.md\:self-start{-ms-flex-item-align:start;align-self:flex-start}.md\:self-end{-ms-flex-item-align:end;align-self:flex-end}.md\:self-center{-ms-flex-item-align:center;align-self:center}.md\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.md\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.md\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.md\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.md\:content-center{-ms-flex-line-pack:center;align-content:center}.md\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.md\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.md\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.md\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.md\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.md\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.md\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.md\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.md\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.md\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.md\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.md\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.md\:float-right{float:right}.md\:float-left{float:left}.md\:float-none{float:none}.md\:clearfix:after{content:"";display:table;clear:both}.md\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.md\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.md\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.md\:font-hairline{font-weight:100}.md\:font-thin{font-weight:200}.md\:font-light{font-weight:300}.md\:font-normal{font-weight:400}.md\:font-medium{font-weight:500}.md\:font-semibold{font-weight:600}.md\:font-bold{font-weight:700}.md\:font-extrabold{font-weight:800}.md\:font-black{font-weight:900}.md\:hover\:font-hairline:hover{font-weight:100}.md\:hover\:font-thin:hover{font-weight:200}.md\:hover\:font-light:hover{font-weight:300}.md\:hover\:font-normal:hover{font-weight:400}.md\:hover\:font-medium:hover{font-weight:500}.md\:hover\:font-semibold:hover{font-weight:600}.md\:hover\:font-bold:hover{font-weight:700}.md\:hover\:font-extrabold:hover{font-weight:800}.md\:hover\:font-black:hover{font-weight:900}.md\:focus\:font-hairline:focus{font-weight:100}.md\:focus\:font-thin:focus{font-weight:200}.md\:focus\:font-light:focus{font-weight:300}.md\:focus\:font-normal:focus{font-weight:400}.md\:focus\:font-medium:focus{font-weight:500}.md\:focus\:font-semibold:focus{font-weight:600}.md\:focus\:font-bold:focus{font-weight:700}.md\:focus\:font-extrabold:focus{font-weight:800}.md\:focus\:font-black:focus{font-weight:900}.md\:h-1{height:.25rem}.md\:h-2{height:.5rem}.md\:h-3{height:.75rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-6{height:1.5rem}.md\:h-8{height:2rem}.md\:h-10{height:2.5rem}.md\:h-12{height:3rem}.md\:h-16{height:4rem}.md\:h-24{height:6rem}.md\:h-32{height:8rem}.md\:h-48{height:12rem}.md\:h-64{height:16rem}.md\:h-auto{height:auto}.md\:h-px{height:1px}.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:h-screen-40-width{height:40vw}.md\:h-screen-60-width{height:60vw}.md\:h-screen-full-width{height:100vw}.md\:leading-zero{line-height:0}.md\:leading-none{line-height:1}.md\:leading-tight{line-height:1.25}.md\:leading-normal{line-height:1.5}.md\:leading-loose{line-height:2}.md\:m-0{margin:0}.md\:m-1{margin:.25rem}.md\:m-2{margin:.5rem}.md\:m-3{margin:.75rem}.md\:m-4{margin:1rem}.md\:m-5{margin:1.25rem}.md\:m-6{margin:1.5rem}.md\:m-8{margin:2rem}.md\:m-10{margin:2.5rem}.md\:m-12{margin:3rem}.md\:m-16{margin:4rem}.md\:m-20{margin:5rem}.md\:m-24{margin:6rem}.md\:m-32{margin:8rem}.md\:m-auto{margin:auto}.md\:m-px{margin:1px}.md\:my-0{margin-top:0;margin-bottom:0}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-1{margin-top:.25rem;margin-bottom:.25rem}.md\:mx-1{margin-left:.25rem;margin-right:.25rem}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-2{margin-left:.5rem;margin-right:.5rem}.md\:my-3{margin-top:.75rem;margin-bottom:.75rem}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:my-4{margin-top:1rem;margin-bottom:1rem}.md\:mx-4{margin-left:1rem;margin-right:1rem}.md\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.md\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.md\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.md\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.md\:my-8{margin-top:2rem;margin-bottom:2rem}.md\:mx-8{margin-left:2rem;margin-right:2rem}.md\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.md\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.md\:my-12{margin-top:3rem;margin-bottom:3rem}.md\:mx-12{margin-left:3rem;margin-right:3rem}.md\:my-16{margin-top:4rem;margin-bottom:4rem}.md\:mx-16{margin-left:4rem;margin-right:4rem}.md\:my-20{margin-top:5rem;margin-bottom:5rem}.md\:mx-20{margin-left:5rem;margin-right:5rem}.md\:my-24{margin-top:6rem;margin-bottom:6rem}.md\:mx-24{margin-left:6rem;margin-right:6rem}.md\:my-32{margin-top:8rem;margin-bottom:8rem}.md\:mx-32{margin-left:8rem;margin-right:8rem}.md\:my-auto{margin-top:auto;margin-bottom:auto}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:my-px{margin-top:1px;margin-bottom:1px}.md\:mx-px{margin-left:1px;margin-right:1px}.md\:mt-0{margin-top:0}.md\:mr-0{margin-right:0}.md\:mb-0{margin-bottom:0}.md\:ml-0{margin-left:0}.md\:mt-1{margin-top:.25rem}.md\:mr-1{margin-right:.25rem}.md\:mb-1{margin-bottom:.25rem}.md\:ml-1{margin-left:.25rem}.md\:mt-2{margin-top:.5rem}.md\:mr-2{margin-right:.5rem}.md\:mb-2{margin-bottom:.5rem}.md\:ml-2{margin-left:.5rem}.md\:mt-3{margin-top:.75rem}.md\:mr-3{margin-right:.75rem}.md\:mb-3{margin-bottom:.75rem}.md\:ml-3{margin-left:.75rem}.md\:mt-4{margin-top:1rem}.md\:mr-4{margin-right:1rem}.md\:mb-4{margin-bottom:1rem}.md\:ml-4{margin-left:1rem}.md\:mt-5{margin-top:1.25rem}.md\:mr-5{margin-right:1.25rem}.md\:mb-5{margin-bottom:1.25rem}.md\:ml-5{margin-left:1.25rem}.md\:mt-6{margin-top:1.5rem}.md\:mr-6{margin-right:1.5rem}.md\:mb-6{margin-bottom:1.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mt-8{margin-top:2rem}.md\:mr-8{margin-right:2rem}.md\:mb-8{margin-bottom:2rem}.md\:ml-8{margin-left:2rem}.md\:mt-10{margin-top:2.5rem}.md\:mr-10{margin-right:2.5rem}.md\:mb-10{margin-bottom:2.5rem}.md\:ml-10{margin-left:2.5rem}.md\:mt-12{margin-top:3rem}.md\:mr-12{margin-right:3rem}.md\:mb-12{margin-bottom:3rem}.md\:ml-12{margin-left:3rem}.md\:mt-16{margin-top:4rem}.md\:mr-16{margin-right:4rem}.md\:mb-16{margin-bottom:4rem}.md\:ml-16{margin-left:4rem}.md\:mt-20{margin-top:5rem}.md\:mr-20{margin-right:5rem}.md\:mb-20{margin-bottom:5rem}.md\:ml-20{margin-left:5rem}.md\:mt-24{margin-top:6rem}.md\:mr-24{margin-right:6rem}.md\:mb-24{margin-bottom:6rem}.md\:ml-24{margin-left:6rem}.md\:mt-32{margin-top:8rem}.md\:mr-32{margin-right:8rem}.md\:mb-32{margin-bottom:8rem}.md\:ml-32{margin-left:8rem}.md\:mt-auto{margin-top:auto}.md\:mr-auto{margin-right:auto}.md\:mb-auto{margin-bottom:auto}.md\:ml-auto{margin-left:auto}.md\:mt-px{margin-top:1px}.md\:mr-px{margin-right:1px}.md\:mb-px{margin-bottom:1px}.md\:ml-px{margin-left:1px}.md\:max-h-full{max-height:100%}.md\:max-h-screen{max-height:100vh}.md\:max-w-sm{max-width:576px}.md\:max-w-md{max-width:768px}.md\:max-w-lg{max-width:992px}.md\:max-w-xl{max-width:1200px}.md\:max-w-full{max-width:100%}.md\:min-h-0{min-height:0}.md\:min-h-full{min-height:100%}.md\:min-h-screen{min-height:100vh}.md\:min-w-0{min-width:0}.md\:min-w-full{min-width:100%}.md\:-m-0{margin:0}.md\:-m-1{margin:-.25rem}.md\:-m-2{margin:-.5rem}.md\:-m-3{margin:-.75rem}.md\:-m-4{margin:-1rem}.md\:-m-5{margin:-1.25rem}.md\:-m-6{margin:-1.5rem}.md\:-m-8{margin:-2rem}.md\:-m-10{margin:-2.5rem}.md\:-m-12{margin:-3rem}.md\:-m-16{margin:-4rem}.md\:-m-20{margin:-5rem}.md\:-m-24{margin:-6rem}.md\:-m-32{margin:-8rem}.md\:-m-px{margin:-1px}.md\:-my-0{margin-top:0;margin-bottom:0}.md\:-mx-0{margin-left:0;margin-right:0}.md\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.md\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.md\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.md\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.md\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.md\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.md\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.md\:-mx-4{margin-left:-1rem;margin-right:-1rem}.md\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.md\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.md\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.md\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.md\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.md\:-mx-8{margin-left:-2rem;margin-right:-2rem}.md\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.md\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.md\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.md\:-mx-12{margin-left:-3rem;margin-right:-3rem}.md\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.md\:-mx-16{margin-left:-4rem;margin-right:-4rem}.md\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.md\:-mx-20{margin-left:-5rem;margin-right:-5rem}.md\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.md\:-mx-24{margin-left:-6rem;margin-right:-6rem}.md\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.md\:-mx-32{margin-left:-8rem;margin-right:-8rem}.md\:-my-px{margin-top:-1px;margin-bottom:-1px}.md\:-mx-px{margin-left:-1px;margin-right:-1px}.md\:-mt-0{margin-top:0}.md\:-mr-0{margin-right:0}.md\:-mb-0{margin-bottom:0}.md\:-ml-0{margin-left:0}.md\:-mt-1{margin-top:-.25rem}.md\:-mr-1{margin-right:-.25rem}.md\:-mb-1{margin-bottom:-.25rem}.md\:-ml-1{margin-left:-.25rem}.md\:-mt-2{margin-top:-.5rem}.md\:-mr-2{margin-right:-.5rem}.md\:-mb-2{margin-bottom:-.5rem}.md\:-ml-2{margin-left:-.5rem}.md\:-mt-3{margin-top:-.75rem}.md\:-mr-3{margin-right:-.75rem}.md\:-mb-3{margin-bottom:-.75rem}.md\:-ml-3{margin-left:-.75rem}.md\:-mt-4{margin-top:-1rem}.md\:-mr-4{margin-right:-1rem}.md\:-mb-4{margin-bottom:-1rem}.md\:-ml-4{margin-left:-1rem}.md\:-mt-5{margin-top:-1.25rem}.md\:-mr-5{margin-right:-1.25rem}.md\:-mb-5{margin-bottom:-1.25rem}.md\:-ml-5{margin-left:-1.25rem}.md\:-mt-6{margin-top:-1.5rem}.md\:-mr-6{margin-right:-1.5rem}.md\:-mb-6{margin-bottom:-1.5rem}.md\:-ml-6{margin-left:-1.5rem}.md\:-mt-8{margin-top:-2rem}.md\:-mr-8{margin-right:-2rem}.md\:-mb-8{margin-bottom:-2rem}.md\:-ml-8{margin-left:-2rem}.md\:-mt-10{margin-top:-2.5rem}.md\:-mr-10{margin-right:-2.5rem}.md\:-mb-10{margin-bottom:-2.5rem}.md\:-ml-10{margin-left:-2.5rem}.md\:-mt-12{margin-top:-3rem}.md\:-mr-12{margin-right:-3rem}.md\:-mb-12{margin-bottom:-3rem}.md\:-ml-12{margin-left:-3rem}.md\:-mt-16{margin-top:-4rem}.md\:-mr-16{margin-right:-4rem}.md\:-mb-16{margin-bottom:-4rem}.md\:-ml-16{margin-left:-4rem}.md\:-mt-20{margin-top:-5rem}.md\:-mr-20{margin-right:-5rem}.md\:-mb-20{margin-bottom:-5rem}.md\:-ml-20{margin-left:-5rem}.md\:-mt-24{margin-top:-6rem}.md\:-mr-24{margin-right:-6rem}.md\:-mb-24{margin-bottom:-6rem}.md\:-ml-24{margin-left:-6rem}.md\:-mt-32{margin-top:-8rem}.md\:-mr-32{margin-right:-8rem}.md\:-mb-32{margin-bottom:-8rem}.md\:-ml-32{margin-left:-8rem}.md\:-mt-px{margin-top:-1px}.md\:-mr-px{margin-right:-1px}.md\:-mb-px{margin-bottom:-1px}.md\:-ml-px{margin-left:-1px}.md\:opacity-0{opacity:0}.md\:opacity-25{opacity:.25}.md\:opacity-50{opacity:.5}.md\:opacity-75{opacity:.75}.md\:opacity-100{opacity:1}.group:hover .md\:group-hover\:opacity-0{opacity:0}.group:hover .md\:group-hover\:opacity-25{opacity:.25}.group:hover .md\:group-hover\:opacity-50{opacity:.5}.group:hover .md\:group-hover\:opacity-75{opacity:.75}.group:hover .md\:group-hover\:opacity-100{opacity:1}.md\:overflow-auto{overflow:auto}.md\:overflow-hidden{overflow:hidden}.md\:overflow-visible{overflow:visible}.md\:overflow-scroll{overflow:scroll}.md\:overflow-x-auto{overflow-x:auto}.md\:overflow-y-auto{overflow-y:auto}.md\:overflow-x-hidden{overflow-x:hidden}.md\:overflow-y-hidden{overflow-y:hidden}.md\:overflow-x-visible{overflow-x:visible}.md\:overflow-y-visible{overflow-y:visible}.md\:overflow-x-scroll{overflow-x:scroll}.md\:overflow-y-scroll{overflow-y:scroll}.md\:scrolling-touch{-webkit-overflow-scrolling:touch}.md\:scrolling-auto{-webkit-overflow-scrolling:auto}.md\:p-0{padding:0}.md\:p-1{padding:.25rem}.md\:p-2{padding:.5rem}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:p-10{padding:2.5rem}.md\:p-12{padding:3rem}.md\:p-16{padding:4rem}.md\:p-20{padding:5rem}.md\:p-24{padding:6rem}.md\:p-32{padding:8rem}.md\:p-px{padding:1px}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-0{padding-left:0;padding-right:0}.md\:py-1{padding-top:.25rem;padding-bottom:.25rem}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-3{padding-top:.75rem;padding-bottom:.75rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:py-4{padding-top:1rem;padding-bottom:1rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:px-12{padding-left:3rem;padding-right:3rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:py-24{padding-top:6rem;padding-bottom:6rem}.md\:px-24{padding-left:6rem;padding-right:6rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:px-32{padding-left:8rem;padding-right:8rem}.md\:py-px{padding-top:1px;padding-bottom:1px}.md\:px-px{padding-left:1px;padding-right:1px}.md\:pt-0{padding-top:0}.md\:pr-0{padding-right:0}.md\:pb-0{padding-bottom:0}.md\:pl-0{padding-left:0}.md\:pt-1{padding-top:.25rem}.md\:pr-1{padding-right:.25rem}.md\:pb-1{padding-bottom:.25rem}.md\:pl-1{padding-left:.25rem}.md\:pt-2{padding-top:.5rem}.md\:pr-2{padding-right:.5rem}.md\:pb-2{padding-bottom:.5rem}.md\:pl-2{padding-left:.5rem}.md\:pt-3{padding-top:.75rem}.md\:pr-3{padding-right:.75rem}.md\:pb-3{padding-bottom:.75rem}.md\:pl-3{padding-left:.75rem}.md\:pt-4{padding-top:1rem}.md\:pr-4{padding-right:1rem}.md\:pb-4{padding-bottom:1rem}.md\:pl-4{padding-left:1rem}.md\:pt-5{padding-top:1.25rem}.md\:pr-5{padding-right:1.25rem}.md\:pb-5{padding-bottom:1.25rem}.md\:pl-5{padding-left:1.25rem}.md\:pt-6{padding-top:1.5rem}.md\:pr-6{padding-right:1.5rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pl-6{padding-left:1.5rem}.md\:pt-8{padding-top:2rem}.md\:pr-8{padding-right:2rem}.md\:pb-8{padding-bottom:2rem}.md\:pl-8{padding-left:2rem}.md\:pt-10{padding-top:2.5rem}.md\:pr-10{padding-right:2.5rem}.md\:pb-10{padding-bottom:2.5rem}.md\:pl-10{padding-left:2.5rem}.md\:pt-12{padding-top:3rem}.md\:pr-12{padding-right:3rem}.md\:pb-12{padding-bottom:3rem}.md\:pl-12{padding-left:3rem}.md\:pt-16{padding-top:4rem}.md\:pr-16{padding-right:4rem}.md\:pb-16{padding-bottom:4rem}.md\:pl-16{padding-left:4rem}.md\:pt-20{padding-top:5rem}.md\:pr-20{padding-right:5rem}.md\:pb-20{padding-bottom:5rem}.md\:pl-20{padding-left:5rem}.md\:pt-24{padding-top:6rem}.md\:pr-24{padding-right:6rem}.md\:pb-24{padding-bottom:6rem}.md\:pl-24{padding-left:6rem}.md\:pt-32{padding-top:8rem}.md\:pr-32{padding-right:8rem}.md\:pb-32{padding-bottom:8rem}.md\:pl-32{padding-left:8rem}.md\:pt-px{padding-top:1px}.md\:pr-px{padding-right:1px}.md\:pb-px{padding-bottom:1px}.md\:pl-px{padding-left:1px}.md\:pointer-events-none{pointer-events:none}.md\:pointer-events-auto{pointer-events:auto}.md\:static{position:static}.md\:fixed{position:fixed}.md\:absolute{position:absolute}.md\:relative{position:relative}.md\:sticky{position:sticky}.md\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.md\:pin{top:0;right:0;bottom:0;left:0}.md\:pin-y{top:0;bottom:0}.md\:pin-x{right:0;left:0}.md\:pin-t{top:0}.md\:pin-r{right:0}.md\:pin-b{bottom:0}.md\:pin-l{left:0}.md\:resize-none{resize:none}.md\:resize-y{resize:vertical}.md\:resize-x{resize:horizontal}.md\:resize{resize:both}.md\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.md\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.md\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.md\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.md\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.md\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:none}.md\:table-auto{table-layout:auto}.md\:table-fixed{table-layout:fixed}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-right{text-align:right}.md\:text-justify{text-align:justify}.md\:text-transparent{color:transparent}.md\:text-color-black{color:#000}.md\:text-color-mine-shaft{color:#373737}.md\:text-color-fuscous-gray{color:#4c4d4b}.md\:text-color-emperor{color:#5d5d5d}.md\:text-color-dove-gray{color:#646464}.md\:text-color-boulder{color:#7b7b7b}.md\:text-color-silver{color:#bbb}.md\:text-color-alto{color:#dadada}.md\:text-color-mercury{color:#e9e9e9}.md\:text-color-seashell{color:#f1f1f1}.md\:text-color-white{color:#fff}.md\:text-color-orient{color:#005c7c}.md\:text-color-shakespeare{color:#4ab9d4}.md\:text-color-yellow-metal{color:#807040}.md\:text-color-kumera{color:#8a741d}.md\:text-color-olive{color:#8e7100}.md\:text-color-barley-corn{color:#a0915e}.md\:text-color-verdigris{color:#494a2d}.md\:text-color-texas{color:#f9fb93}.md\:text-color-ferra{color:#634849}.md\:text-color-cherub{color:#fbe3e4}.md\:text-color-cabbage-pont{color:#454e41}.md\:text-color-tea-green{color:#cfefc2}.group:hover .md\:group-hover\:text-transparent{color:transparent}.group:hover .md\:group-hover\:text-color-black{color:#000}.group:hover .md\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .md\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .md\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .md\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .md\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .md\:group-hover\:text-color-silver{color:#bbb}.group:hover .md\:group-hover\:text-color-alto{color:#dadada}.group:hover .md\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .md\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .md\:group-hover\:text-color-white{color:#fff}.group:hover .md\:group-hover\:text-color-orient{color:#005c7c}.group:hover .md\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .md\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .md\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .md\:group-hover\:text-color-olive{color:#8e7100}.group:hover .md\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .md\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .md\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .md\:group-hover\:text-color-ferra{color:#634849}.group:hover .md\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .md\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .md\:group-hover\:text-color-tea-green{color:#cfefc2}.md\:hover\:text-transparent:hover{color:transparent}.md\:hover\:text-color-black:hover{color:#000}.md\:hover\:text-color-mine-shaft:hover{color:#373737}.md\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.md\:hover\:text-color-emperor:hover{color:#5d5d5d}.md\:hover\:text-color-dove-gray:hover{color:#646464}.md\:hover\:text-color-boulder:hover{color:#7b7b7b}.md\:hover\:text-color-silver:hover{color:#bbb}.md\:hover\:text-color-alto:hover{color:#dadada}.md\:hover\:text-color-mercury:hover{color:#e9e9e9}.md\:hover\:text-color-seashell:hover{color:#f1f1f1}.md\:hover\:text-color-white:hover{color:#fff}.md\:hover\:text-color-orient:hover{color:#005c7c}.md\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.md\:hover\:text-color-yellow-metal:hover{color:#807040}.md\:hover\:text-color-kumera:hover{color:#8a741d}.md\:hover\:text-color-olive:hover{color:#8e7100}.md\:hover\:text-color-barley-corn:hover{color:#a0915e}.md\:hover\:text-color-verdigris:hover{color:#494a2d}.md\:hover\:text-color-texas:hover{color:#f9fb93}.md\:hover\:text-color-ferra:hover{color:#634849}.md\:hover\:text-color-cherub:hover{color:#fbe3e4}.md\:hover\:text-color-cabbage-pont:hover{color:#454e41}.md\:hover\:text-color-tea-green:hover{color:#cfefc2}.md\:focus\:text-transparent:focus{color:transparent}.md\:focus\:text-color-black:focus{color:#000}.md\:focus\:text-color-mine-shaft:focus{color:#373737}.md\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.md\:focus\:text-color-emperor:focus{color:#5d5d5d}.md\:focus\:text-color-dove-gray:focus{color:#646464}.md\:focus\:text-color-boulder:focus{color:#7b7b7b}.md\:focus\:text-color-silver:focus{color:#bbb}.md\:focus\:text-color-alto:focus{color:#dadada}.md\:focus\:text-color-mercury:focus{color:#e9e9e9}.md\:focus\:text-color-seashell:focus{color:#f1f1f1}.md\:focus\:text-color-white:focus{color:#fff}.md\:focus\:text-color-orient:focus{color:#005c7c}.md\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.md\:focus\:text-color-yellow-metal:focus{color:#807040}.md\:focus\:text-color-kumera:focus{color:#8a741d}.md\:focus\:text-color-olive:focus{color:#8e7100}.md\:focus\:text-color-barley-corn:focus{color:#a0915e}.md\:focus\:text-color-verdigris:focus{color:#494a2d}.md\:focus\:text-color-texas:focus{color:#f9fb93}.md\:focus\:text-color-ferra:focus{color:#634849}.md\:focus\:text-color-cherub:focus{color:#fbe3e4}.md\:focus\:text-color-cabbage-pont:focus{color:#454e41}.md\:focus\:text-color-tea-green:focus{color:#cfefc2}.md\:text-3xs{font-size:.667rem}.md\:text-2xs{font-size:.8rem}.md\:text-xs{font-size:.867rem}.md\:text-sm{font-size:.933rem}.md\:text-base{font-size:15px}.md\:text-lg{font-size:1.067rem}.md\:text-xl{font-size:1.2rem}.md\:text-2xl{font-size:1.267rem}.md\:text-3xl{font-size:1.933rem}.md\:italic{font-style:italic}.md\:roman{font-style:normal}.md\:uppercase{text-transform:uppercase}.md\:lowercase{text-transform:lowercase}.md\:capitalize{text-transform:capitalize}.md\:normal-case{text-transform:none}.md\:underline{text-decoration:underline}.md\:line-through{text-decoration:line-through}.md\:no-underline{text-decoration:none}.md\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.md\:hover\:italic:hover{font-style:italic}.md\:hover\:roman:hover{font-style:normal}.md\:hover\:uppercase:hover{text-transform:uppercase}.md\:hover\:lowercase:hover{text-transform:lowercase}.md\:hover\:capitalize:hover{text-transform:capitalize}.md\:hover\:normal-case:hover{text-transform:none}.md\:hover\:underline:hover{text-decoration:underline}.md\:hover\:line-through:hover{text-decoration:line-through}.md\:hover\:no-underline:hover{text-decoration:none}.md\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.md\:focus\:italic:focus{font-style:italic}.md\:focus\:roman:focus{font-style:normal}.md\:focus\:uppercase:focus{text-transform:uppercase}.md\:focus\:lowercase:focus{text-transform:lowercase}.md\:focus\:capitalize:focus{text-transform:capitalize}.md\:focus\:normal-case:focus{text-transform:none}.md\:focus\:underline:focus{text-decoration:underline}.md\:focus\:line-through:focus{text-decoration:line-through}.md\:focus\:no-underline:focus{text-decoration:none}.md\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.md\:tracking-tight{letter-spacing:-.05em}.md\:tracking-normal{letter-spacing:0}.md\:tracking-wide{letter-spacing:.05em}.md\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.md\:align-baseline{vertical-align:baseline}.md\:align-top{vertical-align:top}.md\:align-middle{vertical-align:middle}.md\:align-bottom{vertical-align:bottom}.md\:align-text-top{vertical-align:text-top}.md\:align-text-bottom{vertical-align:text-bottom}.md\:visible{visibility:visible}.md\:invisible{visibility:hidden}.md\:whitespace-normal{white-space:normal}.md\:whitespace-no-wrap{white-space:nowrap}.md\:whitespace-pre{white-space:pre}.md\:whitespace-pre-line{white-space:pre-line}.md\:whitespace-pre-wrap{white-space:pre-wrap}.md\:break-words{word-wrap:break-word}.md\:break-normal{word-wrap:normal}.md\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md\:w-1{width:.25rem}.md\:w-2{width:.5rem}.md\:w-3{width:.75rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-6{width:1.5rem}.md\:w-8{width:2rem}.md\:w-10{width:2.5rem}.md\:w-12{width:3rem}.md\:w-16{width:4rem}.md\:w-24{width:6rem}.md\:w-32{width:8rem}.md\:w-40{width:10rem}.md\:w-48{width:12rem}.md\:w-56{width:14rem}.md\:w-64{width:16rem}.md\:w-auto{width:auto}.md\:w-px{width:1px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.33333%}.md\:w-2\/3{width:66.66667%}.md\:w-1\/4{width:25%}.md\:w-3\/4{width:75%}.md\:w-1\/5{width:20%}.md\:w-2\/5{width:40%}.md\:w-3\/5{width:60%}.md\:w-4\/5{width:80%}.md\:w-1\/6{width:16.66667%}.md\:w-1\/8{width:12.5%}.md\:w-1\/10{width:10%}.md\:w-1\/12{width:8.33333%}.md\:w-full{width:100%}.md\:w-screen{width:100vw}.md\:z-0{z-index:0}.md\:z-10{z-index:10}.md\:z-20{z-index:20}.md\:z-30{z-index:30}.md\:z-40{z-index:40}.md\:z-50{z-index:50}.md\:z-auto{z-index:auto}.md\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.md\:text-shadow-none{text-shadow:none}.md\:gradient-grey,.md\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.md\:gradient-grey-reversed,.md\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.md\:pin-t8{top:2rem}.md\:pin-t16{top:4rem}.md\:pin-b24{bottom:12rem}.md\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.md\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.md\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(max-width:991px){.to-lg\:list-reset{list-style:none;padding:0}.to-lg\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.to-lg\:bg-fixed{background-attachment:fixed}.to-lg\:bg-local{background-attachment:local}.to-lg\:bg-scroll{background-attachment:scroll}.to-lg\:bg-transparent{background-color:initial}.to-lg\:bg-color-black{background-color:#000}.to-lg\:bg-color-mine-shaft{background-color:#373737}.to-lg\:bg-color-fuscous-gray{background-color:#4c4d4b}.to-lg\:bg-color-emperor{background-color:#5d5d5d}.to-lg\:bg-color-dove-gray{background-color:#646464}.to-lg\:bg-color-boulder{background-color:#7b7b7b}.to-lg\:bg-color-silver{background-color:#bbb}.to-lg\:bg-color-alto{background-color:#dadada}.to-lg\:bg-color-mercury{background-color:#e9e9e9}.to-lg\:bg-color-seashell{background-color:#f1f1f1}.to-lg\:bg-color-white{background-color:#fff}.to-lg\:bg-color-orient{background-color:#005c7c}.to-lg\:bg-color-shakespeare{background-color:#4ab9d4}.to-lg\:bg-color-yellow-metal{background-color:#807040}.to-lg\:bg-color-kumera{background-color:#8a741d}.to-lg\:bg-color-olive{background-color:#8e7100}.to-lg\:bg-color-barley-corn{background-color:#a0915e}.to-lg\:bg-color-verdigris{background-color:#494a2d}.to-lg\:bg-color-texas{background-color:#f9fb93}.to-lg\:bg-color-ferra{background-color:#634849}.to-lg\:bg-color-cherub{background-color:#fbe3e4}.to-lg\:bg-color-cabbage-pont{background-color:#454e41}.to-lg\:bg-color-tea-green{background-color:#cfefc2}.group:hover .to-lg\:group-hover\:bg-transparent{background-color:initial}.group:hover .to-lg\:group-hover\:bg-color-black{background-color:#000}.group:hover .to-lg\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .to-lg\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .to-lg\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .to-lg\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .to-lg\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .to-lg\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .to-lg\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .to-lg\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .to-lg\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .to-lg\:group-hover\:bg-color-white{background-color:#fff}.group:hover .to-lg\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .to-lg\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .to-lg\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .to-lg\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .to-lg\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .to-lg\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .to-lg\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .to-lg\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .to-lg\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .to-lg\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .to-lg\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .to-lg\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.to-lg\:hover\:bg-transparent:hover{background-color:initial}.to-lg\:hover\:bg-color-black:hover{background-color:#000}.to-lg\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.to-lg\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.to-lg\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.to-lg\:hover\:bg-color-dove-gray:hover{background-color:#646464}.to-lg\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.to-lg\:hover\:bg-color-silver:hover{background-color:#bbb}.to-lg\:hover\:bg-color-alto:hover{background-color:#dadada}.to-lg\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.to-lg\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.to-lg\:hover\:bg-color-white:hover{background-color:#fff}.to-lg\:hover\:bg-color-orient:hover{background-color:#005c7c}.to-lg\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.to-lg\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.to-lg\:hover\:bg-color-kumera:hover{background-color:#8a741d}.to-lg\:hover\:bg-color-olive:hover{background-color:#8e7100}.to-lg\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.to-lg\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.to-lg\:hover\:bg-color-texas:hover{background-color:#f9fb93}.to-lg\:hover\:bg-color-ferra:hover{background-color:#634849}.to-lg\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.to-lg\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.to-lg\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.to-lg\:focus\:bg-transparent:focus{background-color:initial}.to-lg\:focus\:bg-color-black:focus{background-color:#000}.to-lg\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.to-lg\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.to-lg\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.to-lg\:focus\:bg-color-dove-gray:focus{background-color:#646464}.to-lg\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.to-lg\:focus\:bg-color-silver:focus{background-color:#bbb}.to-lg\:focus\:bg-color-alto:focus{background-color:#dadada}.to-lg\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.to-lg\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.to-lg\:focus\:bg-color-white:focus{background-color:#fff}.to-lg\:focus\:bg-color-orient:focus{background-color:#005c7c}.to-lg\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.to-lg\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.to-lg\:focus\:bg-color-kumera:focus{background-color:#8a741d}.to-lg\:focus\:bg-color-olive:focus{background-color:#8e7100}.to-lg\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.to-lg\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.to-lg\:focus\:bg-color-texas:focus{background-color:#f9fb93}.to-lg\:focus\:bg-color-ferra:focus{background-color:#634849}.to-lg\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.to-lg\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.to-lg\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.to-lg\:bg-bottom{background-position:bottom}.to-lg\:bg-center{background-position:50%}.to-lg\:bg-left{background-position:0}.to-lg\:bg-left-bottom{background-position:0 100%}.to-lg\:bg-left-top{background-position:0 0}.to-lg\:bg-right{background-position:100%}.to-lg\:bg-right-bottom{background-position:100% 100%}.to-lg\:bg-right-top{background-position:100% 0}.to-lg\:bg-top{background-position:top}.to-lg\:bg-repeat{background-repeat:repeat}.to-lg\:bg-no-repeat{background-repeat:no-repeat}.to-lg\:bg-repeat-x{background-repeat:repeat-x}.to-lg\:bg-repeat-y{background-repeat:repeat-y}.to-lg\:bg-auto{background-size:auto}.to-lg\:bg-cover{background-size:cover}.to-lg\:bg-contain{background-size:contain}.to-lg\:border-transparent{border-color:transparent}.to-lg\:border-color-black{border-color:#000}.to-lg\:border-color-mine-shaft{border-color:#373737}.to-lg\:border-color-fuscous-gray{border-color:#4c4d4b}.to-lg\:border-color-emperor{border-color:#5d5d5d}.to-lg\:border-color-dove-gray{border-color:#646464}.to-lg\:border-color-boulder{border-color:#7b7b7b}.to-lg\:border-color-silver{border-color:#bbb}.to-lg\:border-color-alto{border-color:#dadada}.to-lg\:border-color-mercury{border-color:#e9e9e9}.to-lg\:border-color-seashell{border-color:#f1f1f1}.to-lg\:border-color-white{border-color:#fff}.to-lg\:border-color-orient{border-color:#005c7c}.to-lg\:border-color-shakespeare{border-color:#4ab9d4}.to-lg\:border-color-yellow-metal{border-color:#807040}.to-lg\:border-color-kumera{border-color:#8a741d}.to-lg\:border-color-olive{border-color:#8e7100}.to-lg\:border-color-barley-corn{border-color:#a0915e}.to-lg\:border-color-verdigris{border-color:#494a2d}.to-lg\:border-color-texas{border-color:#f9fb93}.to-lg\:border-color-ferra{border-color:#634849}.to-lg\:border-color-cherub{border-color:#fbe3e4}.to-lg\:border-color-cabbage-pont{border-color:#454e41}.to-lg\:border-color-tea-green{border-color:#cfefc2}.to-lg\:hover\:border-transparent:hover{border-color:transparent}.to-lg\:hover\:border-color-black:hover{border-color:#000}.to-lg\:hover\:border-color-mine-shaft:hover{border-color:#373737}.to-lg\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.to-lg\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.to-lg\:hover\:border-color-dove-gray:hover{border-color:#646464}.to-lg\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.to-lg\:hover\:border-color-silver:hover{border-color:#bbb}.to-lg\:hover\:border-color-alto:hover{border-color:#dadada}.to-lg\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.to-lg\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.to-lg\:hover\:border-color-white:hover{border-color:#fff}.to-lg\:hover\:border-color-orient:hover{border-color:#005c7c}.to-lg\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.to-lg\:hover\:border-color-yellow-metal:hover{border-color:#807040}.to-lg\:hover\:border-color-kumera:hover{border-color:#8a741d}.to-lg\:hover\:border-color-olive:hover{border-color:#8e7100}.to-lg\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.to-lg\:hover\:border-color-verdigris:hover{border-color:#494a2d}.to-lg\:hover\:border-color-texas:hover{border-color:#f9fb93}.to-lg\:hover\:border-color-ferra:hover{border-color:#634849}.to-lg\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.to-lg\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.to-lg\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.to-lg\:focus\:border-transparent:focus{border-color:transparent}.to-lg\:focus\:border-color-black:focus{border-color:#000}.to-lg\:focus\:border-color-mine-shaft:focus{border-color:#373737}.to-lg\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.to-lg\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.to-lg\:focus\:border-color-dove-gray:focus{border-color:#646464}.to-lg\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.to-lg\:focus\:border-color-silver:focus{border-color:#bbb}.to-lg\:focus\:border-color-alto:focus{border-color:#dadada}.to-lg\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.to-lg\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.to-lg\:focus\:border-color-white:focus{border-color:#fff}.to-lg\:focus\:border-color-orient:focus{border-color:#005c7c}.to-lg\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.to-lg\:focus\:border-color-yellow-metal:focus{border-color:#807040}.to-lg\:focus\:border-color-kumera:focus{border-color:#8a741d}.to-lg\:focus\:border-color-olive:focus{border-color:#8e7100}.to-lg\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.to-lg\:focus\:border-color-verdigris:focus{border-color:#494a2d}.to-lg\:focus\:border-color-texas:focus{border-color:#f9fb93}.to-lg\:focus\:border-color-ferra:focus{border-color:#634849}.to-lg\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.to-lg\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.to-lg\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.to-lg\:rounded-none{border-radius:0}.to-lg\:rounded-sm{border-radius:.125rem}.to-lg\:rounded{border-radius:.25rem}.to-lg\:rounded-lg{border-radius:.5rem}.to-lg\:rounded-full{border-radius:9999px}.to-lg\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.to-lg\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.to-lg\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.to-lg\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.to-lg\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.to-lg\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.to-lg\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.to-lg\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.to-lg\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.to-lg\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.to-lg\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.to-lg\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.to-lg\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.to-lg\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.to-lg\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.to-lg\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.to-lg\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.to-lg\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.to-lg\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.to-lg\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.to-lg\:rounded-tl-none{border-top-left-radius:0}.to-lg\:rounded-tr-none{border-top-right-radius:0}.to-lg\:rounded-br-none{border-bottom-right-radius:0}.to-lg\:rounded-bl-none{border-bottom-left-radius:0}.to-lg\:rounded-tl-sm{border-top-left-radius:.125rem}.to-lg\:rounded-tr-sm{border-top-right-radius:.125rem}.to-lg\:rounded-br-sm{border-bottom-right-radius:.125rem}.to-lg\:rounded-bl-sm{border-bottom-left-radius:.125rem}.to-lg\:rounded-tl{border-top-left-radius:.25rem}.to-lg\:rounded-tr{border-top-right-radius:.25rem}.to-lg\:rounded-br{border-bottom-right-radius:.25rem}.to-lg\:rounded-bl{border-bottom-left-radius:.25rem}.to-lg\:rounded-tl-lg{border-top-left-radius:.5rem}.to-lg\:rounded-tr-lg{border-top-right-radius:.5rem}.to-lg\:rounded-br-lg{border-bottom-right-radius:.5rem}.to-lg\:rounded-bl-lg{border-bottom-left-radius:.5rem}.to-lg\:rounded-tl-full{border-top-left-radius:9999px}.to-lg\:rounded-tr-full{border-top-right-radius:9999px}.to-lg\:rounded-br-full{border-bottom-right-radius:9999px}.to-lg\:rounded-bl-full{border-bottom-left-radius:9999px}.to-lg\:border-solid{border-style:solid}.to-lg\:border-dashed{border-style:dashed}.to-lg\:border-dotted{border-style:dotted}.to-lg\:border-none{border-style:none}.to-lg\:border-0{border-width:0}.to-lg\:border-2{border-width:2px}.to-lg\:border-4{border-width:4px}.to-lg\:border-8{border-width:8px}.to-lg\:border{border-width:1px}.to-lg\:border-t-0{border-top-width:0}.to-lg\:border-r-0{border-right-width:0}.to-lg\:border-b-0{border-bottom-width:0}.to-lg\:border-l-0{border-left-width:0}.to-lg\:border-t-2{border-top-width:2px}.to-lg\:border-r-2{border-right-width:2px}.to-lg\:border-b-2{border-bottom-width:2px}.to-lg\:border-l-2{border-left-width:2px}.to-lg\:border-t-4{border-top-width:4px}.to-lg\:border-r-4{border-right-width:4px}.to-lg\:border-b-4{border-bottom-width:4px}.to-lg\:border-l-4{border-left-width:4px}.to-lg\:border-t-8{border-top-width:8px}.to-lg\:border-r-8{border-right-width:8px}.to-lg\:border-b-8{border-bottom-width:8px}.to-lg\:border-l-8{border-left-width:8px}.to-lg\:border-t{border-top-width:1px}.to-lg\:border-r{border-right-width:1px}.to-lg\:border-b{border-bottom-width:1px}.to-lg\:border-l{border-left-width:1px}.to-lg\:cursor-auto{cursor:auto}.to-lg\:cursor-default{cursor:default}.to-lg\:cursor-pointer{cursor:pointer}.to-lg\:cursor-wait{cursor:wait}.to-lg\:cursor-move{cursor:move}.to-lg\:cursor-not-allowed{cursor:not-allowed}.to-lg\:block{display:block}.to-lg\:inline-block{display:inline-block}.to-lg\:inline{display:inline}.to-lg\:table{display:table}.to-lg\:table-row{display:table-row}.to-lg\:table-cell{display:table-cell}.to-lg\:hidden{display:none}.to-lg\:hover\:block:hover{display:block}.to-lg\:hover\:inline-block:hover{display:inline-block}.to-lg\:hover\:inline:hover{display:inline}.to-lg\:hover\:table:hover{display:table}.to-lg\:hover\:table-row:hover{display:table-row}.to-lg\:hover\:table-cell:hover{display:table-cell}.to-lg\:hover\:hidden:hover{display:none}.to-lg\:flex{display:flex}.to-lg\:inline-flex{display:inline-flex}.to-lg\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.to-lg\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.to-lg\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.to-lg\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.to-lg\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.to-lg\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.to-lg\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.to-lg\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.to-lg\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.to-lg\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.to-lg\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.to-lg\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.to-lg\:self-auto{-ms-flex-item-align:auto;align-self:auto}.to-lg\:self-start{-ms-flex-item-align:start;align-self:flex-start}.to-lg\:self-end{-ms-flex-item-align:end;align-self:flex-end}.to-lg\:self-center{-ms-flex-item-align:center;align-self:center}.to-lg\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.to-lg\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.to-lg\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.to-lg\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.to-lg\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.to-lg\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.to-lg\:content-center{-ms-flex-line-pack:center;align-content:center}.to-lg\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.to-lg\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.to-lg\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.to-lg\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.to-lg\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.to-lg\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.to-lg\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.to-lg\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.to-lg\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.to-lg\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.to-lg\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.to-lg\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.to-lg\:float-right{float:right}.to-lg\:float-left{float:left}.to-lg\:float-none{float:none}.to-lg\:clearfix:after{content:"";display:table;clear:both}.to-lg\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.to-lg\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.to-lg\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.to-lg\:font-hairline{font-weight:100}.to-lg\:font-thin{font-weight:200}.to-lg\:font-light{font-weight:300}.to-lg\:font-normal{font-weight:400}.to-lg\:font-medium{font-weight:500}.to-lg\:font-semibold{font-weight:600}.to-lg\:font-bold{font-weight:700}.to-lg\:font-extrabold{font-weight:800}.to-lg\:font-black{font-weight:900}.to-lg\:hover\:font-hairline:hover{font-weight:100}.to-lg\:hover\:font-thin:hover{font-weight:200}.to-lg\:hover\:font-light:hover{font-weight:300}.to-lg\:hover\:font-normal:hover{font-weight:400}.to-lg\:hover\:font-medium:hover{font-weight:500}.to-lg\:hover\:font-semibold:hover{font-weight:600}.to-lg\:hover\:font-bold:hover{font-weight:700}.to-lg\:hover\:font-extrabold:hover{font-weight:800}.to-lg\:hover\:font-black:hover{font-weight:900}.to-lg\:focus\:font-hairline:focus{font-weight:100}.to-lg\:focus\:font-thin:focus{font-weight:200}.to-lg\:focus\:font-light:focus{font-weight:300}.to-lg\:focus\:font-normal:focus{font-weight:400}.to-lg\:focus\:font-medium:focus{font-weight:500}.to-lg\:focus\:font-semibold:focus{font-weight:600}.to-lg\:focus\:font-bold:focus{font-weight:700}.to-lg\:focus\:font-extrabold:focus{font-weight:800}.to-lg\:focus\:font-black:focus{font-weight:900}.to-lg\:h-1{height:.25rem}.to-lg\:h-2{height:.5rem}.to-lg\:h-3{height:.75rem}.to-lg\:h-4{height:1rem}.to-lg\:h-5{height:1.25rem}.to-lg\:h-6{height:1.5rem}.to-lg\:h-8{height:2rem}.to-lg\:h-10{height:2.5rem}.to-lg\:h-12{height:3rem}.to-lg\:h-16{height:4rem}.to-lg\:h-24{height:6rem}.to-lg\:h-32{height:8rem}.to-lg\:h-48{height:12rem}.to-lg\:h-64{height:16rem}.to-lg\:h-auto{height:auto}.to-lg\:h-px{height:1px}.to-lg\:h-full{height:100%}.to-lg\:h-screen{height:100vh}.to-lg\:h-screen-40-width{height:40vw}.to-lg\:h-screen-60-width{height:60vw}.to-lg\:h-screen-full-width{height:100vw}.to-lg\:leading-zero{line-height:0}.to-lg\:leading-none{line-height:1}.to-lg\:leading-tight{line-height:1.25}.to-lg\:leading-normal{line-height:1.5}.to-lg\:leading-loose{line-height:2}.to-lg\:m-0{margin:0}.to-lg\:m-1{margin:.25rem}.to-lg\:m-2{margin:.5rem}.to-lg\:m-3{margin:.75rem}.to-lg\:m-4{margin:1rem}.to-lg\:m-5{margin:1.25rem}.to-lg\:m-6{margin:1.5rem}.to-lg\:m-8{margin:2rem}.to-lg\:m-10{margin:2.5rem}.to-lg\:m-12{margin:3rem}.to-lg\:m-16{margin:4rem}.to-lg\:m-20{margin:5rem}.to-lg\:m-24{margin:6rem}.to-lg\:m-32{margin:8rem}.to-lg\:m-auto{margin:auto}.to-lg\:m-px{margin:1px}.to-lg\:my-0{margin-top:0;margin-bottom:0}.to-lg\:mx-0{margin-left:0;margin-right:0}.to-lg\:my-1{margin-top:.25rem;margin-bottom:.25rem}.to-lg\:mx-1{margin-left:.25rem;margin-right:.25rem}.to-lg\:my-2{margin-top:.5rem;margin-bottom:.5rem}.to-lg\:mx-2{margin-left:.5rem;margin-right:.5rem}.to-lg\:my-3{margin-top:.75rem;margin-bottom:.75rem}.to-lg\:mx-3{margin-left:.75rem;margin-right:.75rem}.to-lg\:my-4{margin-top:1rem;margin-bottom:1rem}.to-lg\:mx-4{margin-left:1rem;margin-right:1rem}.to-lg\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.to-lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.to-lg\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.to-lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.to-lg\:my-8{margin-top:2rem;margin-bottom:2rem}.to-lg\:mx-8{margin-left:2rem;margin-right:2rem}.to-lg\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.to-lg\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.to-lg\:my-12{margin-top:3rem;margin-bottom:3rem}.to-lg\:mx-12{margin-left:3rem;margin-right:3rem}.to-lg\:my-16{margin-top:4rem;margin-bottom:4rem}.to-lg\:mx-16{margin-left:4rem;margin-right:4rem}.to-lg\:my-20{margin-top:5rem;margin-bottom:5rem}.to-lg\:mx-20{margin-left:5rem;margin-right:5rem}.to-lg\:my-24{margin-top:6rem;margin-bottom:6rem}.to-lg\:mx-24{margin-left:6rem;margin-right:6rem}.to-lg\:my-32{margin-top:8rem;margin-bottom:8rem}.to-lg\:mx-32{margin-left:8rem;margin-right:8rem}.to-lg\:my-auto{margin-top:auto;margin-bottom:auto}.to-lg\:mx-auto{margin-left:auto;margin-right:auto}.to-lg\:my-px{margin-top:1px;margin-bottom:1px}.to-lg\:mx-px{margin-left:1px;margin-right:1px}.to-lg\:mt-0{margin-top:0}.to-lg\:mr-0{margin-right:0}.to-lg\:mb-0{margin-bottom:0}.to-lg\:ml-0{margin-left:0}.to-lg\:mt-1{margin-top:.25rem}.to-lg\:mr-1{margin-right:.25rem}.to-lg\:mb-1{margin-bottom:.25rem}.to-lg\:ml-1{margin-left:.25rem}.to-lg\:mt-2{margin-top:.5rem}.to-lg\:mr-2{margin-right:.5rem}.to-lg\:mb-2{margin-bottom:.5rem}.to-lg\:ml-2{margin-left:.5rem}.to-lg\:mt-3{margin-top:.75rem}.to-lg\:mr-3{margin-right:.75rem}.to-lg\:mb-3{margin-bottom:.75rem}.to-lg\:ml-3{margin-left:.75rem}.to-lg\:mt-4{margin-top:1rem}.to-lg\:mr-4{margin-right:1rem}.to-lg\:mb-4{margin-bottom:1rem}.to-lg\:ml-4{margin-left:1rem}.to-lg\:mt-5{margin-top:1.25rem}.to-lg\:mr-5{margin-right:1.25rem}.to-lg\:mb-5{margin-bottom:1.25rem}.to-lg\:ml-5{margin-left:1.25rem}.to-lg\:mt-6{margin-top:1.5rem}.to-lg\:mr-6{margin-right:1.5rem}.to-lg\:mb-6{margin-bottom:1.5rem}.to-lg\:ml-6{margin-left:1.5rem}.to-lg\:mt-8{margin-top:2rem}.to-lg\:mr-8{margin-right:2rem}.to-lg\:mb-8{margin-bottom:2rem}.to-lg\:ml-8{margin-left:2rem}.to-lg\:mt-10{margin-top:2.5rem}.to-lg\:mr-10{margin-right:2.5rem}.to-lg\:mb-10{margin-bottom:2.5rem}.to-lg\:ml-10{margin-left:2.5rem}.to-lg\:mt-12{margin-top:3rem}.to-lg\:mr-12{margin-right:3rem}.to-lg\:mb-12{margin-bottom:3rem}.to-lg\:ml-12{margin-left:3rem}.to-lg\:mt-16{margin-top:4rem}.to-lg\:mr-16{margin-right:4rem}.to-lg\:mb-16{margin-bottom:4rem}.to-lg\:ml-16{margin-left:4rem}.to-lg\:mt-20{margin-top:5rem}.to-lg\:mr-20{margin-right:5rem}.to-lg\:mb-20{margin-bottom:5rem}.to-lg\:ml-20{margin-left:5rem}.to-lg\:mt-24{margin-top:6rem}.to-lg\:mr-24{margin-right:6rem}.to-lg\:mb-24{margin-bottom:6rem}.to-lg\:ml-24{margin-left:6rem}.to-lg\:mt-32{margin-top:8rem}.to-lg\:mr-32{margin-right:8rem}.to-lg\:mb-32{margin-bottom:8rem}.to-lg\:ml-32{margin-left:8rem}.to-lg\:mt-auto{margin-top:auto}.to-lg\:mr-auto{margin-right:auto}.to-lg\:mb-auto{margin-bottom:auto}.to-lg\:ml-auto{margin-left:auto}.to-lg\:mt-px{margin-top:1px}.to-lg\:mr-px{margin-right:1px}.to-lg\:mb-px{margin-bottom:1px}.to-lg\:ml-px{margin-left:1px}.to-lg\:max-h-full{max-height:100%}.to-lg\:max-h-screen{max-height:100vh}.to-lg\:max-w-sm{max-width:576px}.to-lg\:max-w-md{max-width:768px}.to-lg\:max-w-lg{max-width:992px}.to-lg\:max-w-xl{max-width:1200px}.to-lg\:max-w-full{max-width:100%}.to-lg\:min-h-0{min-height:0}.to-lg\:min-h-full{min-height:100%}.to-lg\:min-h-screen{min-height:100vh}.to-lg\:min-w-0{min-width:0}.to-lg\:min-w-full{min-width:100%}.to-lg\:-m-0{margin:0}.to-lg\:-m-1{margin:-.25rem}.to-lg\:-m-2{margin:-.5rem}.to-lg\:-m-3{margin:-.75rem}.to-lg\:-m-4{margin:-1rem}.to-lg\:-m-5{margin:-1.25rem}.to-lg\:-m-6{margin:-1.5rem}.to-lg\:-m-8{margin:-2rem}.to-lg\:-m-10{margin:-2.5rem}.to-lg\:-m-12{margin:-3rem}.to-lg\:-m-16{margin:-4rem}.to-lg\:-m-20{margin:-5rem}.to-lg\:-m-24{margin:-6rem}.to-lg\:-m-32{margin:-8rem}.to-lg\:-m-px{margin:-1px}.to-lg\:-my-0{margin-top:0;margin-bottom:0}.to-lg\:-mx-0{margin-left:0;margin-right:0}.to-lg\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.to-lg\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.to-lg\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.to-lg\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.to-lg\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.to-lg\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.to-lg\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.to-lg\:-mx-4{margin-left:-1rem;margin-right:-1rem}.to-lg\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.to-lg\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.to-lg\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.to-lg\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.to-lg\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.to-lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.to-lg\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.to-lg\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.to-lg\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.to-lg\:-mx-12{margin-left:-3rem;margin-right:-3rem}.to-lg\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.to-lg\:-mx-16{margin-left:-4rem;margin-right:-4rem}.to-lg\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.to-lg\:-mx-20{margin-left:-5rem;margin-right:-5rem}.to-lg\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.to-lg\:-mx-24{margin-left:-6rem;margin-right:-6rem}.to-lg\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.to-lg\:-mx-32{margin-left:-8rem;margin-right:-8rem}.to-lg\:-my-px{margin-top:-1px;margin-bottom:-1px}.to-lg\:-mx-px{margin-left:-1px;margin-right:-1px}.to-lg\:-mt-0{margin-top:0}.to-lg\:-mr-0{margin-right:0}.to-lg\:-mb-0{margin-bottom:0}.to-lg\:-ml-0{margin-left:0}.to-lg\:-mt-1{margin-top:-.25rem}.to-lg\:-mr-1{margin-right:-.25rem}.to-lg\:-mb-1{margin-bottom:-.25rem}.to-lg\:-ml-1{margin-left:-.25rem}.to-lg\:-mt-2{margin-top:-.5rem}.to-lg\:-mr-2{margin-right:-.5rem}.to-lg\:-mb-2{margin-bottom:-.5rem}.to-lg\:-ml-2{margin-left:-.5rem}.to-lg\:-mt-3{margin-top:-.75rem}.to-lg\:-mr-3{margin-right:-.75rem}.to-lg\:-mb-3{margin-bottom:-.75rem}.to-lg\:-ml-3{margin-left:-.75rem}.to-lg\:-mt-4{margin-top:-1rem}.to-lg\:-mr-4{margin-right:-1rem}.to-lg\:-mb-4{margin-bottom:-1rem}.to-lg\:-ml-4{margin-left:-1rem}.to-lg\:-mt-5{margin-top:-1.25rem}.to-lg\:-mr-5{margin-right:-1.25rem}.to-lg\:-mb-5{margin-bottom:-1.25rem}.to-lg\:-ml-5{margin-left:-1.25rem}.to-lg\:-mt-6{margin-top:-1.5rem}.to-lg\:-mr-6{margin-right:-1.5rem}.to-lg\:-mb-6{margin-bottom:-1.5rem}.to-lg\:-ml-6{margin-left:-1.5rem}.to-lg\:-mt-8{margin-top:-2rem}.to-lg\:-mr-8{margin-right:-2rem}.to-lg\:-mb-8{margin-bottom:-2rem}.to-lg\:-ml-8{margin-left:-2rem}.to-lg\:-mt-10{margin-top:-2.5rem}.to-lg\:-mr-10{margin-right:-2.5rem}.to-lg\:-mb-10{margin-bottom:-2.5rem}.to-lg\:-ml-10{margin-left:-2.5rem}.to-lg\:-mt-12{margin-top:-3rem}.to-lg\:-mr-12{margin-right:-3rem}.to-lg\:-mb-12{margin-bottom:-3rem}.to-lg\:-ml-12{margin-left:-3rem}.to-lg\:-mt-16{margin-top:-4rem}.to-lg\:-mr-16{margin-right:-4rem}.to-lg\:-mb-16{margin-bottom:-4rem}.to-lg\:-ml-16{margin-left:-4rem}.to-lg\:-mt-20{margin-top:-5rem}.to-lg\:-mr-20{margin-right:-5rem}.to-lg\:-mb-20{margin-bottom:-5rem}.to-lg\:-ml-20{margin-left:-5rem}.to-lg\:-mt-24{margin-top:-6rem}.to-lg\:-mr-24{margin-right:-6rem}.to-lg\:-mb-24{margin-bottom:-6rem}.to-lg\:-ml-24{margin-left:-6rem}.to-lg\:-mt-32{margin-top:-8rem}.to-lg\:-mr-32{margin-right:-8rem}.to-lg\:-mb-32{margin-bottom:-8rem}.to-lg\:-ml-32{margin-left:-8rem}.to-lg\:-mt-px{margin-top:-1px}.to-lg\:-mr-px{margin-right:-1px}.to-lg\:-mb-px{margin-bottom:-1px}.to-lg\:-ml-px{margin-left:-1px}.to-lg\:opacity-0{opacity:0}.to-lg\:opacity-25{opacity:.25}.to-lg\:opacity-50{opacity:.5}.to-lg\:opacity-75{opacity:.75}.to-lg\:opacity-100{opacity:1}.group:hover .to-lg\:group-hover\:opacity-0{opacity:0}.group:hover .to-lg\:group-hover\:opacity-25{opacity:.25}.group:hover .to-lg\:group-hover\:opacity-50{opacity:.5}.group:hover .to-lg\:group-hover\:opacity-75{opacity:.75}.group:hover .to-lg\:group-hover\:opacity-100{opacity:1}.to-lg\:overflow-auto{overflow:auto}.to-lg\:overflow-hidden{overflow:hidden}.to-lg\:overflow-visible{overflow:visible}.to-lg\:overflow-scroll{overflow:scroll}.to-lg\:overflow-x-auto{overflow-x:auto}.to-lg\:overflow-y-auto{overflow-y:auto}.to-lg\:overflow-x-hidden{overflow-x:hidden}.to-lg\:overflow-y-hidden{overflow-y:hidden}.to-lg\:overflow-x-visible{overflow-x:visible}.to-lg\:overflow-y-visible{overflow-y:visible}.to-lg\:overflow-x-scroll{overflow-x:scroll}.to-lg\:overflow-y-scroll{overflow-y:scroll}.to-lg\:scrolling-touch{-webkit-overflow-scrolling:touch}.to-lg\:scrolling-auto{-webkit-overflow-scrolling:auto}.to-lg\:p-0{padding:0}.to-lg\:p-1{padding:.25rem}.to-lg\:p-2{padding:.5rem}.to-lg\:p-3{padding:.75rem}.to-lg\:p-4{padding:1rem}.to-lg\:p-5{padding:1.25rem}.to-lg\:p-6{padding:1.5rem}.to-lg\:p-8{padding:2rem}.to-lg\:p-10{padding:2.5rem}.to-lg\:p-12{padding:3rem}.to-lg\:p-16{padding:4rem}.to-lg\:p-20{padding:5rem}.to-lg\:p-24{padding:6rem}.to-lg\:p-32{padding:8rem}.to-lg\:p-px{padding:1px}.to-lg\:py-0{padding-top:0;padding-bottom:0}.to-lg\:px-0{padding-left:0;padding-right:0}.to-lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.to-lg\:px-1{padding-left:.25rem;padding-right:.25rem}.to-lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}.to-lg\:px-2{padding-left:.5rem;padding-right:.5rem}.to-lg\:py-3{padding-top:.75rem;padding-bottom:.75rem}.to-lg\:px-3{padding-left:.75rem;padding-right:.75rem}.to-lg\:py-4{padding-top:1rem;padding-bottom:1rem}.to-lg\:px-4{padding-left:1rem;padding-right:1rem}.to-lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.to-lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.to-lg\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.to-lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.to-lg\:py-8{padding-top:2rem;padding-bottom:2rem}.to-lg\:px-8{padding-left:2rem;padding-right:2rem}.to-lg\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.to-lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.to-lg\:py-12{padding-top:3rem;padding-bottom:3rem}.to-lg\:px-12{padding-left:3rem;padding-right:3rem}.to-lg\:py-16{padding-top:4rem;padding-bottom:4rem}.to-lg\:px-16{padding-left:4rem;padding-right:4rem}.to-lg\:py-20{padding-top:5rem;padding-bottom:5rem}.to-lg\:px-20{padding-left:5rem;padding-right:5rem}.to-lg\:py-24{padding-top:6rem;padding-bottom:6rem}.to-lg\:px-24{padding-left:6rem;padding-right:6rem}.to-lg\:py-32{padding-top:8rem;padding-bottom:8rem}.to-lg\:px-32{padding-left:8rem;padding-right:8rem}.to-lg\:py-px{padding-top:1px;padding-bottom:1px}.to-lg\:px-px{padding-left:1px;padding-right:1px}.to-lg\:pt-0{padding-top:0}.to-lg\:pr-0{padding-right:0}.to-lg\:pb-0{padding-bottom:0}.to-lg\:pl-0{padding-left:0}.to-lg\:pt-1{padding-top:.25rem}.to-lg\:pr-1{padding-right:.25rem}.to-lg\:pb-1{padding-bottom:.25rem}.to-lg\:pl-1{padding-left:.25rem}.to-lg\:pt-2{padding-top:.5rem}.to-lg\:pr-2{padding-right:.5rem}.to-lg\:pb-2{padding-bottom:.5rem}.to-lg\:pl-2{padding-left:.5rem}.to-lg\:pt-3{padding-top:.75rem}.to-lg\:pr-3{padding-right:.75rem}.to-lg\:pb-3{padding-bottom:.75rem}.to-lg\:pl-3{padding-left:.75rem}.to-lg\:pt-4{padding-top:1rem}.to-lg\:pr-4{padding-right:1rem}.to-lg\:pb-4{padding-bottom:1rem}.to-lg\:pl-4{padding-left:1rem}.to-lg\:pt-5{padding-top:1.25rem}.to-lg\:pr-5{padding-right:1.25rem}.to-lg\:pb-5{padding-bottom:1.25rem}.to-lg\:pl-5{padding-left:1.25rem}.to-lg\:pt-6{padding-top:1.5rem}.to-lg\:pr-6{padding-right:1.5rem}.to-lg\:pb-6{padding-bottom:1.5rem}.to-lg\:pl-6{padding-left:1.5rem}.to-lg\:pt-8{padding-top:2rem}.to-lg\:pr-8{padding-right:2rem}.to-lg\:pb-8{padding-bottom:2rem}.to-lg\:pl-8{padding-left:2rem}.to-lg\:pt-10{padding-top:2.5rem}.to-lg\:pr-10{padding-right:2.5rem}.to-lg\:pb-10{padding-bottom:2.5rem}.to-lg\:pl-10{padding-left:2.5rem}.to-lg\:pt-12{padding-top:3rem}.to-lg\:pr-12{padding-right:3rem}.to-lg\:pb-12{padding-bottom:3rem}.to-lg\:pl-12{padding-left:3rem}.to-lg\:pt-16{padding-top:4rem}.to-lg\:pr-16{padding-right:4rem}.to-lg\:pb-16{padding-bottom:4rem}.to-lg\:pl-16{padding-left:4rem}.to-lg\:pt-20{padding-top:5rem}.to-lg\:pr-20{padding-right:5rem}.to-lg\:pb-20{padding-bottom:5rem}.to-lg\:pl-20{padding-left:5rem}.to-lg\:pt-24{padding-top:6rem}.to-lg\:pr-24{padding-right:6rem}.to-lg\:pb-24{padding-bottom:6rem}.to-lg\:pl-24{padding-left:6rem}.to-lg\:pt-32{padding-top:8rem}.to-lg\:pr-32{padding-right:8rem}.to-lg\:pb-32{padding-bottom:8rem}.to-lg\:pl-32{padding-left:8rem}.to-lg\:pt-px{padding-top:1px}.to-lg\:pr-px{padding-right:1px}.to-lg\:pb-px{padding-bottom:1px}.to-lg\:pl-px{padding-left:1px}.to-lg\:pointer-events-none{pointer-events:none}.to-lg\:pointer-events-auto{pointer-events:auto}.to-lg\:static{position:static}.to-lg\:fixed{position:fixed}.to-lg\:absolute{position:absolute}.to-lg\:relative{position:relative}.to-lg\:sticky{position:sticky}.to-lg\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.to-lg\:pin{top:0;right:0;bottom:0;left:0}.to-lg\:pin-y{top:0;bottom:0}.to-lg\:pin-x{right:0;left:0}.to-lg\:pin-t{top:0}.to-lg\:pin-r{right:0}.to-lg\:pin-b{bottom:0}.to-lg\:pin-l{left:0}.to-lg\:resize-none{resize:none}.to-lg\:resize-y{resize:vertical}.to-lg\:resize-x{resize:horizontal}.to-lg\:resize{resize:both}.to-lg\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.to-lg\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-lg\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.to-lg\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-lg\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:none}.to-lg\:table-auto{table-layout:auto}.to-lg\:table-fixed{table-layout:fixed}.to-lg\:text-left{text-align:left}.to-lg\:text-center{text-align:center}.to-lg\:text-right{text-align:right}.to-lg\:text-justify{text-align:justify}.to-lg\:text-transparent{color:transparent}.to-lg\:text-color-black{color:#000}.to-lg\:text-color-mine-shaft{color:#373737}.to-lg\:text-color-fuscous-gray{color:#4c4d4b}.to-lg\:text-color-emperor{color:#5d5d5d}.to-lg\:text-color-dove-gray{color:#646464}.to-lg\:text-color-boulder{color:#7b7b7b}.to-lg\:text-color-silver{color:#bbb}.to-lg\:text-color-alto{color:#dadada}.to-lg\:text-color-mercury{color:#e9e9e9}.to-lg\:text-color-seashell{color:#f1f1f1}.to-lg\:text-color-white{color:#fff}.to-lg\:text-color-orient{color:#005c7c}.to-lg\:text-color-shakespeare{color:#4ab9d4}.to-lg\:text-color-yellow-metal{color:#807040}.to-lg\:text-color-kumera{color:#8a741d}.to-lg\:text-color-olive{color:#8e7100}.to-lg\:text-color-barley-corn{color:#a0915e}.to-lg\:text-color-verdigris{color:#494a2d}.to-lg\:text-color-texas{color:#f9fb93}.to-lg\:text-color-ferra{color:#634849}.to-lg\:text-color-cherub{color:#fbe3e4}.to-lg\:text-color-cabbage-pont{color:#454e41}.to-lg\:text-color-tea-green{color:#cfefc2}.group:hover .to-lg\:group-hover\:text-transparent{color:transparent}.group:hover .to-lg\:group-hover\:text-color-black{color:#000}.group:hover .to-lg\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .to-lg\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .to-lg\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .to-lg\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .to-lg\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .to-lg\:group-hover\:text-color-silver{color:#bbb}.group:hover .to-lg\:group-hover\:text-color-alto{color:#dadada}.group:hover .to-lg\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .to-lg\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .to-lg\:group-hover\:text-color-white{color:#fff}.group:hover .to-lg\:group-hover\:text-color-orient{color:#005c7c}.group:hover .to-lg\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .to-lg\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .to-lg\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .to-lg\:group-hover\:text-color-olive{color:#8e7100}.group:hover .to-lg\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .to-lg\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .to-lg\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .to-lg\:group-hover\:text-color-ferra{color:#634849}.group:hover .to-lg\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .to-lg\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .to-lg\:group-hover\:text-color-tea-green{color:#cfefc2}.to-lg\:hover\:text-transparent:hover{color:transparent}.to-lg\:hover\:text-color-black:hover{color:#000}.to-lg\:hover\:text-color-mine-shaft:hover{color:#373737}.to-lg\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.to-lg\:hover\:text-color-emperor:hover{color:#5d5d5d}.to-lg\:hover\:text-color-dove-gray:hover{color:#646464}.to-lg\:hover\:text-color-boulder:hover{color:#7b7b7b}.to-lg\:hover\:text-color-silver:hover{color:#bbb}.to-lg\:hover\:text-color-alto:hover{color:#dadada}.to-lg\:hover\:text-color-mercury:hover{color:#e9e9e9}.to-lg\:hover\:text-color-seashell:hover{color:#f1f1f1}.to-lg\:hover\:text-color-white:hover{color:#fff}.to-lg\:hover\:text-color-orient:hover{color:#005c7c}.to-lg\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.to-lg\:hover\:text-color-yellow-metal:hover{color:#807040}.to-lg\:hover\:text-color-kumera:hover{color:#8a741d}.to-lg\:hover\:text-color-olive:hover{color:#8e7100}.to-lg\:hover\:text-color-barley-corn:hover{color:#a0915e}.to-lg\:hover\:text-color-verdigris:hover{color:#494a2d}.to-lg\:hover\:text-color-texas:hover{color:#f9fb93}.to-lg\:hover\:text-color-ferra:hover{color:#634849}.to-lg\:hover\:text-color-cherub:hover{color:#fbe3e4}.to-lg\:hover\:text-color-cabbage-pont:hover{color:#454e41}.to-lg\:hover\:text-color-tea-green:hover{color:#cfefc2}.to-lg\:focus\:text-transparent:focus{color:transparent}.to-lg\:focus\:text-color-black:focus{color:#000}.to-lg\:focus\:text-color-mine-shaft:focus{color:#373737}.to-lg\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.to-lg\:focus\:text-color-emperor:focus{color:#5d5d5d}.to-lg\:focus\:text-color-dove-gray:focus{color:#646464}.to-lg\:focus\:text-color-boulder:focus{color:#7b7b7b}.to-lg\:focus\:text-color-silver:focus{color:#bbb}.to-lg\:focus\:text-color-alto:focus{color:#dadada}.to-lg\:focus\:text-color-mercury:focus{color:#e9e9e9}.to-lg\:focus\:text-color-seashell:focus{color:#f1f1f1}.to-lg\:focus\:text-color-white:focus{color:#fff}.to-lg\:focus\:text-color-orient:focus{color:#005c7c}.to-lg\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.to-lg\:focus\:text-color-yellow-metal:focus{color:#807040}.to-lg\:focus\:text-color-kumera:focus{color:#8a741d}.to-lg\:focus\:text-color-olive:focus{color:#8e7100}.to-lg\:focus\:text-color-barley-corn:focus{color:#a0915e}.to-lg\:focus\:text-color-verdigris:focus{color:#494a2d}.to-lg\:focus\:text-color-texas:focus{color:#f9fb93}.to-lg\:focus\:text-color-ferra:focus{color:#634849}.to-lg\:focus\:text-color-cherub:focus{color:#fbe3e4}.to-lg\:focus\:text-color-cabbage-pont:focus{color:#454e41}.to-lg\:focus\:text-color-tea-green:focus{color:#cfefc2}.to-lg\:text-3xs{font-size:.667rem}.to-lg\:text-2xs{font-size:.8rem}.to-lg\:text-xs{font-size:.867rem}.to-lg\:text-sm{font-size:.933rem}.to-lg\:text-base{font-size:15px}.to-lg\:text-lg{font-size:1.067rem}.to-lg\:text-xl{font-size:1.2rem}.to-lg\:text-2xl{font-size:1.267rem}.to-lg\:text-3xl{font-size:1.933rem}.to-lg\:italic{font-style:italic}.to-lg\:roman{font-style:normal}.to-lg\:uppercase{text-transform:uppercase}.to-lg\:lowercase{text-transform:lowercase}.to-lg\:capitalize{text-transform:capitalize}.to-lg\:normal-case{text-transform:none}.to-lg\:underline{text-decoration:underline}.to-lg\:line-through{text-decoration:line-through}.to-lg\:no-underline{text-decoration:none}.to-lg\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-lg\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-lg\:hover\:italic:hover{font-style:italic}.to-lg\:hover\:roman:hover{font-style:normal}.to-lg\:hover\:uppercase:hover{text-transform:uppercase}.to-lg\:hover\:lowercase:hover{text-transform:lowercase}.to-lg\:hover\:capitalize:hover{text-transform:capitalize}.to-lg\:hover\:normal-case:hover{text-transform:none}.to-lg\:hover\:underline:hover{text-decoration:underline}.to-lg\:hover\:line-through:hover{text-decoration:line-through}.to-lg\:hover\:no-underline:hover{text-decoration:none}.to-lg\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-lg\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-lg\:focus\:italic:focus{font-style:italic}.to-lg\:focus\:roman:focus{font-style:normal}.to-lg\:focus\:uppercase:focus{text-transform:uppercase}.to-lg\:focus\:lowercase:focus{text-transform:lowercase}.to-lg\:focus\:capitalize:focus{text-transform:capitalize}.to-lg\:focus\:normal-case:focus{text-transform:none}.to-lg\:focus\:underline:focus{text-decoration:underline}.to-lg\:focus\:line-through:focus{text-decoration:line-through}.to-lg\:focus\:no-underline:focus{text-decoration:none}.to-lg\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-lg\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-lg\:tracking-tight{letter-spacing:-.05em}.to-lg\:tracking-normal{letter-spacing:0}.to-lg\:tracking-wide{letter-spacing:.05em}.to-lg\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.to-lg\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.to-lg\:align-baseline{vertical-align:baseline}.to-lg\:align-top{vertical-align:top}.to-lg\:align-middle{vertical-align:middle}.to-lg\:align-bottom{vertical-align:bottom}.to-lg\:align-text-top{vertical-align:text-top}.to-lg\:align-text-bottom{vertical-align:text-bottom}.to-lg\:visible{visibility:visible}.to-lg\:invisible{visibility:hidden}.to-lg\:whitespace-normal{white-space:normal}.to-lg\:whitespace-no-wrap{white-space:nowrap}.to-lg\:whitespace-pre{white-space:pre}.to-lg\:whitespace-pre-line{white-space:pre-line}.to-lg\:whitespace-pre-wrap{white-space:pre-wrap}.to-lg\:break-words{word-wrap:break-word}.to-lg\:break-normal{word-wrap:normal}.to-lg\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.to-lg\:w-1{width:.25rem}.to-lg\:w-2{width:.5rem}.to-lg\:w-3{width:.75rem}.to-lg\:w-4{width:1rem}.to-lg\:w-5{width:1.25rem}.to-lg\:w-6{width:1.5rem}.to-lg\:w-8{width:2rem}.to-lg\:w-10{width:2.5rem}.to-lg\:w-12{width:3rem}.to-lg\:w-16{width:4rem}.to-lg\:w-24{width:6rem}.to-lg\:w-32{width:8rem}.to-lg\:w-40{width:10rem}.to-lg\:w-48{width:12rem}.to-lg\:w-56{width:14rem}.to-lg\:w-64{width:16rem}.to-lg\:w-auto{width:auto}.to-lg\:w-px{width:1px}.to-lg\:w-1\/2{width:50%}.to-lg\:w-1\/3{width:33.33333%}.to-lg\:w-2\/3{width:66.66667%}.to-lg\:w-1\/4{width:25%}.to-lg\:w-3\/4{width:75%}.to-lg\:w-1\/5{width:20%}.to-lg\:w-2\/5{width:40%}.to-lg\:w-3\/5{width:60%}.to-lg\:w-4\/5{width:80%}.to-lg\:w-1\/6{width:16.66667%}.to-lg\:w-1\/8{width:12.5%}.to-lg\:w-1\/10{width:10%}.to-lg\:w-1\/12{width:8.33333%}.to-lg\:w-full{width:100%}.to-lg\:w-screen{width:100vw}.to-lg\:z-0{z-index:0}.to-lg\:z-10{z-index:10}.to-lg\:z-20{z-index:20}.to-lg\:z-30{z-index:30}.to-lg\:z-40{z-index:40}.to-lg\:z-50{z-index:50}.to-lg\:z-auto{z-index:auto}.to-lg\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.to-lg\:text-shadow-none{text-shadow:none}.to-lg\:gradient-grey,.to-lg\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.to-lg\:gradient-grey-reversed,.to-lg\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.to-lg\:pin-t8{top:2rem}.to-lg\:pin-t16{top:4rem}.to-lg\:pin-b24{bottom:12rem}.to-lg\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.to-lg\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.to-lg\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:992px){.lg\:list-reset{list-style:none;padding:0}.lg\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lg\:bg-fixed{background-attachment:fixed}.lg\:bg-local{background-attachment:local}.lg\:bg-scroll{background-attachment:scroll}.lg\:bg-transparent{background-color:initial}.lg\:bg-color-black{background-color:#000}.lg\:bg-color-mine-shaft{background-color:#373737}.lg\:bg-color-fuscous-gray{background-color:#4c4d4b}.lg\:bg-color-emperor{background-color:#5d5d5d}.lg\:bg-color-dove-gray{background-color:#646464}.lg\:bg-color-boulder{background-color:#7b7b7b}.lg\:bg-color-silver{background-color:#bbb}.lg\:bg-color-alto{background-color:#dadada}.lg\:bg-color-mercury{background-color:#e9e9e9}.lg\:bg-color-seashell{background-color:#f1f1f1}.lg\:bg-color-white{background-color:#fff}.lg\:bg-color-orient{background-color:#005c7c}.lg\:bg-color-shakespeare{background-color:#4ab9d4}.lg\:bg-color-yellow-metal{background-color:#807040}.lg\:bg-color-kumera{background-color:#8a741d}.lg\:bg-color-olive{background-color:#8e7100}.lg\:bg-color-barley-corn{background-color:#a0915e}.lg\:bg-color-verdigris{background-color:#494a2d}.lg\:bg-color-texas{background-color:#f9fb93}.lg\:bg-color-ferra{background-color:#634849}.lg\:bg-color-cherub{background-color:#fbe3e4}.lg\:bg-color-cabbage-pont{background-color:#454e41}.lg\:bg-color-tea-green{background-color:#cfefc2}.group:hover .lg\:group-hover\:bg-transparent{background-color:initial}.group:hover .lg\:group-hover\:bg-color-black{background-color:#000}.group:hover .lg\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .lg\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .lg\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .lg\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .lg\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .lg\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .lg\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .lg\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .lg\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .lg\:group-hover\:bg-color-white{background-color:#fff}.group:hover .lg\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .lg\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .lg\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .lg\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .lg\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .lg\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .lg\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .lg\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .lg\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .lg\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .lg\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .lg\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.lg\:hover\:bg-transparent:hover{background-color:initial}.lg\:hover\:bg-color-black:hover{background-color:#000}.lg\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.lg\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.lg\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.lg\:hover\:bg-color-dove-gray:hover{background-color:#646464}.lg\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.lg\:hover\:bg-color-silver:hover{background-color:#bbb}.lg\:hover\:bg-color-alto:hover{background-color:#dadada}.lg\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.lg\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.lg\:hover\:bg-color-white:hover{background-color:#fff}.lg\:hover\:bg-color-orient:hover{background-color:#005c7c}.lg\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.lg\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.lg\:hover\:bg-color-kumera:hover{background-color:#8a741d}.lg\:hover\:bg-color-olive:hover{background-color:#8e7100}.lg\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.lg\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.lg\:hover\:bg-color-texas:hover{background-color:#f9fb93}.lg\:hover\:bg-color-ferra:hover{background-color:#634849}.lg\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.lg\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.lg\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.lg\:focus\:bg-transparent:focus{background-color:initial}.lg\:focus\:bg-color-black:focus{background-color:#000}.lg\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.lg\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.lg\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.lg\:focus\:bg-color-dove-gray:focus{background-color:#646464}.lg\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.lg\:focus\:bg-color-silver:focus{background-color:#bbb}.lg\:focus\:bg-color-alto:focus{background-color:#dadada}.lg\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.lg\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.lg\:focus\:bg-color-white:focus{background-color:#fff}.lg\:focus\:bg-color-orient:focus{background-color:#005c7c}.lg\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.lg\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.lg\:focus\:bg-color-kumera:focus{background-color:#8a741d}.lg\:focus\:bg-color-olive:focus{background-color:#8e7100}.lg\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.lg\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.lg\:focus\:bg-color-texas:focus{background-color:#f9fb93}.lg\:focus\:bg-color-ferra:focus{background-color:#634849}.lg\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.lg\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.lg\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.lg\:bg-bottom{background-position:bottom}.lg\:bg-center{background-position:50%}.lg\:bg-left{background-position:0}.lg\:bg-left-bottom{background-position:0 100%}.lg\:bg-left-top{background-position:0 0}.lg\:bg-right{background-position:100%}.lg\:bg-right-bottom{background-position:100% 100%}.lg\:bg-right-top{background-position:100% 0}.lg\:bg-top{background-position:top}.lg\:bg-repeat{background-repeat:repeat}.lg\:bg-no-repeat{background-repeat:no-repeat}.lg\:bg-repeat-x{background-repeat:repeat-x}.lg\:bg-repeat-y{background-repeat:repeat-y}.lg\:bg-auto{background-size:auto}.lg\:bg-cover{background-size:cover}.lg\:bg-contain{background-size:contain}.lg\:border-transparent{border-color:transparent}.lg\:border-color-black{border-color:#000}.lg\:border-color-mine-shaft{border-color:#373737}.lg\:border-color-fuscous-gray{border-color:#4c4d4b}.lg\:border-color-emperor{border-color:#5d5d5d}.lg\:border-color-dove-gray{border-color:#646464}.lg\:border-color-boulder{border-color:#7b7b7b}.lg\:border-color-silver{border-color:#bbb}.lg\:border-color-alto{border-color:#dadada}.lg\:border-color-mercury{border-color:#e9e9e9}.lg\:border-color-seashell{border-color:#f1f1f1}.lg\:border-color-white{border-color:#fff}.lg\:border-color-orient{border-color:#005c7c}.lg\:border-color-shakespeare{border-color:#4ab9d4}.lg\:border-color-yellow-metal{border-color:#807040}.lg\:border-color-kumera{border-color:#8a741d}.lg\:border-color-olive{border-color:#8e7100}.lg\:border-color-barley-corn{border-color:#a0915e}.lg\:border-color-verdigris{border-color:#494a2d}.lg\:border-color-texas{border-color:#f9fb93}.lg\:border-color-ferra{border-color:#634849}.lg\:border-color-cherub{border-color:#fbe3e4}.lg\:border-color-cabbage-pont{border-color:#454e41}.lg\:border-color-tea-green{border-color:#cfefc2}.lg\:hover\:border-transparent:hover{border-color:transparent}.lg\:hover\:border-color-black:hover{border-color:#000}.lg\:hover\:border-color-mine-shaft:hover{border-color:#373737}.lg\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.lg\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.lg\:hover\:border-color-dove-gray:hover{border-color:#646464}.lg\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.lg\:hover\:border-color-silver:hover{border-color:#bbb}.lg\:hover\:border-color-alto:hover{border-color:#dadada}.lg\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.lg\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.lg\:hover\:border-color-white:hover{border-color:#fff}.lg\:hover\:border-color-orient:hover{border-color:#005c7c}.lg\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.lg\:hover\:border-color-yellow-metal:hover{border-color:#807040}.lg\:hover\:border-color-kumera:hover{border-color:#8a741d}.lg\:hover\:border-color-olive:hover{border-color:#8e7100}.lg\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.lg\:hover\:border-color-verdigris:hover{border-color:#494a2d}.lg\:hover\:border-color-texas:hover{border-color:#f9fb93}.lg\:hover\:border-color-ferra:hover{border-color:#634849}.lg\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.lg\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.lg\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.lg\:focus\:border-transparent:focus{border-color:transparent}.lg\:focus\:border-color-black:focus{border-color:#000}.lg\:focus\:border-color-mine-shaft:focus{border-color:#373737}.lg\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.lg\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.lg\:focus\:border-color-dove-gray:focus{border-color:#646464}.lg\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.lg\:focus\:border-color-silver:focus{border-color:#bbb}.lg\:focus\:border-color-alto:focus{border-color:#dadada}.lg\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.lg\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.lg\:focus\:border-color-white:focus{border-color:#fff}.lg\:focus\:border-color-orient:focus{border-color:#005c7c}.lg\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.lg\:focus\:border-color-yellow-metal:focus{border-color:#807040}.lg\:focus\:border-color-kumera:focus{border-color:#8a741d}.lg\:focus\:border-color-olive:focus{border-color:#8e7100}.lg\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.lg\:focus\:border-color-verdigris:focus{border-color:#494a2d}.lg\:focus\:border-color-texas:focus{border-color:#f9fb93}.lg\:focus\:border-color-ferra:focus{border-color:#634849}.lg\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.lg\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.lg\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.lg\:rounded-none{border-radius:0}.lg\:rounded-sm{border-radius:.125rem}.lg\:rounded{border-radius:.25rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:rounded-full{border-radius:9999px}.lg\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.lg\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.lg\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.lg\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.lg\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.lg\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.lg\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.lg\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.lg\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.lg\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.lg\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.lg\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.lg\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.lg\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.lg\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.lg\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.lg\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.lg\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.lg\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.lg\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.lg\:rounded-tl-none{border-top-left-radius:0}.lg\:rounded-tr-none{border-top-right-radius:0}.lg\:rounded-br-none{border-bottom-right-radius:0}.lg\:rounded-bl-none{border-bottom-left-radius:0}.lg\:rounded-tl-sm{border-top-left-radius:.125rem}.lg\:rounded-tr-sm{border-top-right-radius:.125rem}.lg\:rounded-br-sm{border-bottom-right-radius:.125rem}.lg\:rounded-bl-sm{border-bottom-left-radius:.125rem}.lg\:rounded-tl{border-top-left-radius:.25rem}.lg\:rounded-tr{border-top-right-radius:.25rem}.lg\:rounded-br{border-bottom-right-radius:.25rem}.lg\:rounded-bl{border-bottom-left-radius:.25rem}.lg\:rounded-tl-lg{border-top-left-radius:.5rem}.lg\:rounded-tr-lg{border-top-right-radius:.5rem}.lg\:rounded-br-lg{border-bottom-right-radius:.5rem}.lg\:rounded-bl-lg{border-bottom-left-radius:.5rem}.lg\:rounded-tl-full{border-top-left-radius:9999px}.lg\:rounded-tr-full{border-top-right-radius:9999px}.lg\:rounded-br-full{border-bottom-right-radius:9999px}.lg\:rounded-bl-full{border-bottom-left-radius:9999px}.lg\:border-solid{border-style:solid}.lg\:border-dashed{border-style:dashed}.lg\:border-dotted{border-style:dotted}.lg\:border-none{border-style:none}.lg\:border-0{border-width:0}.lg\:border-2{border-width:2px}.lg\:border-4{border-width:4px}.lg\:border-8{border-width:8px}.lg\:border{border-width:1px}.lg\:border-t-0{border-top-width:0}.lg\:border-r-0{border-right-width:0}.lg\:border-b-0{border-bottom-width:0}.lg\:border-l-0{border-left-width:0}.lg\:border-t-2{border-top-width:2px}.lg\:border-r-2{border-right-width:2px}.lg\:border-b-2{border-bottom-width:2px}.lg\:border-l-2{border-left-width:2px}.lg\:border-t-4{border-top-width:4px}.lg\:border-r-4{border-right-width:4px}.lg\:border-b-4{border-bottom-width:4px}.lg\:border-l-4{border-left-width:4px}.lg\:border-t-8{border-top-width:8px}.lg\:border-r-8{border-right-width:8px}.lg\:border-b-8{border-bottom-width:8px}.lg\:border-l-8{border-left-width:8px}.lg\:border-t{border-top-width:1px}.lg\:border-r{border-right-width:1px}.lg\:border-b{border-bottom-width:1px}.lg\:border-l{border-left-width:1px}.lg\:cursor-auto{cursor:auto}.lg\:cursor-default{cursor:default}.lg\:cursor-pointer{cursor:pointer}.lg\:cursor-wait{cursor:wait}.lg\:cursor-move{cursor:move}.lg\:cursor-not-allowed{cursor:not-allowed}.lg\:block{display:block}.lg\:inline-block{display:inline-block}.lg\:inline{display:inline}.lg\:table{display:table}.lg\:table-row{display:table-row}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:hover\:block:hover{display:block}.lg\:hover\:inline-block:hover{display:inline-block}.lg\:hover\:inline:hover{display:inline}.lg\:hover\:table:hover{display:table}.lg\:hover\:table-row:hover{display:table-row}.lg\:hover\:table-cell:hover{display:table-cell}.lg\:hover\:hidden:hover{display:none}.lg\:flex{display:flex}.lg\:inline-flex{display:inline-flex}.lg\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.lg\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.lg\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.lg\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.lg\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.lg\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.lg\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.lg\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.lg\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.lg\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.lg\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.lg\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.lg\:self-auto{-ms-flex-item-align:auto;align-self:auto}.lg\:self-start{-ms-flex-item-align:start;align-self:flex-start}.lg\:self-end{-ms-flex-item-align:end;align-self:flex-end}.lg\:self-center{-ms-flex-item-align:center;align-self:center}.lg\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.lg\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.lg\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.lg\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.lg\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.lg\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.lg\:content-center{-ms-flex-line-pack:center;align-content:center}.lg\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.lg\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.lg\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.lg\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.lg\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.lg\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.lg\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.lg\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.lg\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.lg\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.lg\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.lg\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.lg\:float-right{float:right}.lg\:float-left{float:left}.lg\:float-none{float:none}.lg\:clearfix:after{content:"";display:table;clear:both}.lg\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.lg\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.lg\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lg\:font-hairline{font-weight:100}.lg\:font-thin{font-weight:200}.lg\:font-light{font-weight:300}.lg\:font-normal{font-weight:400}.lg\:font-medium{font-weight:500}.lg\:font-semibold{font-weight:600}.lg\:font-bold{font-weight:700}.lg\:font-extrabold{font-weight:800}.lg\:font-black{font-weight:900}.lg\:hover\:font-hairline:hover{font-weight:100}.lg\:hover\:font-thin:hover{font-weight:200}.lg\:hover\:font-light:hover{font-weight:300}.lg\:hover\:font-normal:hover{font-weight:400}.lg\:hover\:font-medium:hover{font-weight:500}.lg\:hover\:font-semibold:hover{font-weight:600}.lg\:hover\:font-bold:hover{font-weight:700}.lg\:hover\:font-extrabold:hover{font-weight:800}.lg\:hover\:font-black:hover{font-weight:900}.lg\:focus\:font-hairline:focus{font-weight:100}.lg\:focus\:font-thin:focus{font-weight:200}.lg\:focus\:font-light:focus{font-weight:300}.lg\:focus\:font-normal:focus{font-weight:400}.lg\:focus\:font-medium:focus{font-weight:500}.lg\:focus\:font-semibold:focus{font-weight:600}.lg\:focus\:font-bold:focus{font-weight:700}.lg\:focus\:font-extrabold:focus{font-weight:800}.lg\:focus\:font-black:focus{font-weight:900}.lg\:h-1{height:.25rem}.lg\:h-2{height:.5rem}.lg\:h-3{height:.75rem}.lg\:h-4{height:1rem}.lg\:h-5{height:1.25rem}.lg\:h-6{height:1.5rem}.lg\:h-8{height:2rem}.lg\:h-10{height:2.5rem}.lg\:h-12{height:3rem}.lg\:h-16{height:4rem}.lg\:h-24{height:6rem}.lg\:h-32{height:8rem}.lg\:h-48{height:12rem}.lg\:h-64{height:16rem}.lg\:h-auto{height:auto}.lg\:h-px{height:1px}.lg\:h-full{height:100%}.lg\:h-screen{height:100vh}.lg\:h-screen-40-width{height:40vw}.lg\:h-screen-60-width{height:60vw}.lg\:h-screen-full-width{height:100vw}.lg\:leading-zero{line-height:0}.lg\:leading-none{line-height:1}.lg\:leading-tight{line-height:1.25}.lg\:leading-normal{line-height:1.5}.lg\:leading-loose{line-height:2}.lg\:m-0{margin:0}.lg\:m-1{margin:.25rem}.lg\:m-2{margin:.5rem}.lg\:m-3{margin:.75rem}.lg\:m-4{margin:1rem}.lg\:m-5{margin:1.25rem}.lg\:m-6{margin:1.5rem}.lg\:m-8{margin:2rem}.lg\:m-10{margin:2.5rem}.lg\:m-12{margin:3rem}.lg\:m-16{margin:4rem}.lg\:m-20{margin:5rem}.lg\:m-24{margin:6rem}.lg\:m-32{margin:8rem}.lg\:m-auto{margin:auto}.lg\:m-px{margin:1px}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:my-1{margin-top:.25rem;margin-bottom:.25rem}.lg\:mx-1{margin-left:.25rem;margin-right:.25rem}.lg\:my-2{margin-top:.5rem;margin-bottom:.5rem}.lg\:mx-2{margin-left:.5rem;margin-right:.5rem}.lg\:my-3{margin-top:.75rem;margin-bottom:.75rem}.lg\:mx-3{margin-left:.75rem;margin-right:.75rem}.lg\:my-4{margin-top:1rem;margin-bottom:1rem}.lg\:mx-4{margin-left:1rem;margin-right:1rem}.lg\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.lg\:my-8{margin-top:2rem;margin-bottom:2rem}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.lg\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.lg\:my-12{margin-top:3rem;margin-bottom:3rem}.lg\:mx-12{margin-left:3rem;margin-right:3rem}.lg\:my-16{margin-top:4rem;margin-bottom:4rem}.lg\:mx-16{margin-left:4rem;margin-right:4rem}.lg\:my-20{margin-top:5rem;margin-bottom:5rem}.lg\:mx-20{margin-left:5rem;margin-right:5rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-24{margin-left:6rem;margin-right:6rem}.lg\:my-32{margin-top:8rem;margin-bottom:8rem}.lg\:mx-32{margin-left:8rem;margin-right:8rem}.lg\:my-auto{margin-top:auto;margin-bottom:auto}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:my-px{margin-top:1px;margin-bottom:1px}.lg\:mx-px{margin-left:1px;margin-right:1px}.lg\:mt-0{margin-top:0}.lg\:mr-0{margin-right:0}.lg\:mb-0{margin-bottom:0}.lg\:ml-0{margin-left:0}.lg\:mt-1{margin-top:.25rem}.lg\:mr-1{margin-right:.25rem}.lg\:mb-1{margin-bottom:.25rem}.lg\:ml-1{margin-left:.25rem}.lg\:mt-2{margin-top:.5rem}.lg\:mr-2{margin-right:.5rem}.lg\:mb-2{margin-bottom:.5rem}.lg\:ml-2{margin-left:.5rem}.lg\:mt-3{margin-top:.75rem}.lg\:mr-3{margin-right:.75rem}.lg\:mb-3{margin-bottom:.75rem}.lg\:ml-3{margin-left:.75rem}.lg\:mt-4{margin-top:1rem}.lg\:mr-4{margin-right:1rem}.lg\:mb-4{margin-bottom:1rem}.lg\:ml-4{margin-left:1rem}.lg\:mt-5{margin-top:1.25rem}.lg\:mr-5{margin-right:1.25rem}.lg\:mb-5{margin-bottom:1.25rem}.lg\:ml-5{margin-left:1.25rem}.lg\:mt-6{margin-top:1.5rem}.lg\:mr-6{margin-right:1.5rem}.lg\:mb-6{margin-bottom:1.5rem}.lg\:ml-6{margin-left:1.5rem}.lg\:mt-8{margin-top:2rem}.lg\:mr-8{margin-right:2rem}.lg\:mb-8{margin-bottom:2rem}.lg\:ml-8{margin-left:2rem}.lg\:mt-10{margin-top:2.5rem}.lg\:mr-10{margin-right:2.5rem}.lg\:mb-10{margin-bottom:2.5rem}.lg\:ml-10{margin-left:2.5rem}.lg\:mt-12{margin-top:3rem}.lg\:mr-12{margin-right:3rem}.lg\:mb-12{margin-bottom:3rem}.lg\:ml-12{margin-left:3rem}.lg\:mt-16{margin-top:4rem}.lg\:mr-16{margin-right:4rem}.lg\:mb-16{margin-bottom:4rem}.lg\:ml-16{margin-left:4rem}.lg\:mt-20{margin-top:5rem}.lg\:mr-20{margin-right:5rem}.lg\:mb-20{margin-bottom:5rem}.lg\:ml-20{margin-left:5rem}.lg\:mt-24{margin-top:6rem}.lg\:mr-24{margin-right:6rem}.lg\:mb-24{margin-bottom:6rem}.lg\:ml-24{margin-left:6rem}.lg\:mt-32{margin-top:8rem}.lg\:mr-32{margin-right:8rem}.lg\:mb-32{margin-bottom:8rem}.lg\:ml-32{margin-left:8rem}.lg\:mt-auto{margin-top:auto}.lg\:mr-auto{margin-right:auto}.lg\:mb-auto{margin-bottom:auto}.lg\:ml-auto{margin-left:auto}.lg\:mt-px{margin-top:1px}.lg\:mr-px{margin-right:1px}.lg\:mb-px{margin-bottom:1px}.lg\:ml-px{margin-left:1px}.lg\:max-h-full{max-height:100%}.lg\:max-h-screen{max-height:100vh}.lg\:max-w-sm{max-width:576px}.lg\:max-w-md{max-width:768px}.lg\:max-w-lg{max-width:992px}.lg\:max-w-xl{max-width:1200px}.lg\:max-w-full{max-width:100%}.lg\:min-h-0{min-height:0}.lg\:min-h-full{min-height:100%}.lg\:min-h-screen{min-height:100vh}.lg\:min-w-0{min-width:0}.lg\:min-w-full{min-width:100%}.lg\:-m-0{margin:0}.lg\:-m-1{margin:-.25rem}.lg\:-m-2{margin:-.5rem}.lg\:-m-3{margin:-.75rem}.lg\:-m-4{margin:-1rem}.lg\:-m-5{margin:-1.25rem}.lg\:-m-6{margin:-1.5rem}.lg\:-m-8{margin:-2rem}.lg\:-m-10{margin:-2.5rem}.lg\:-m-12{margin:-3rem}.lg\:-m-16{margin:-4rem}.lg\:-m-20{margin:-5rem}.lg\:-m-24{margin:-6rem}.lg\:-m-32{margin:-8rem}.lg\:-m-px{margin:-1px}.lg\:-my-0{margin-top:0;margin-bottom:0}.lg\:-mx-0{margin-left:0;margin-right:0}.lg\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.lg\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.lg\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.lg\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.lg\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.lg\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.lg\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.lg\:-mx-4{margin-left:-1rem;margin-right:-1rem}.lg\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.lg\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lg\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.lg\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.lg\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.lg\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.lg\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.lg\:-mx-12{margin-left:-3rem;margin-right:-3rem}.lg\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.lg\:-mx-16{margin-left:-4rem;margin-right:-4rem}.lg\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.lg\:-mx-20{margin-left:-5rem;margin-right:-5rem}.lg\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.lg\:-mx-24{margin-left:-6rem;margin-right:-6rem}.lg\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.lg\:-mx-32{margin-left:-8rem;margin-right:-8rem}.lg\:-my-px{margin-top:-1px;margin-bottom:-1px}.lg\:-mx-px{margin-left:-1px;margin-right:-1px}.lg\:-mt-0{margin-top:0}.lg\:-mr-0{margin-right:0}.lg\:-mb-0{margin-bottom:0}.lg\:-ml-0{margin-left:0}.lg\:-mt-1{margin-top:-.25rem}.lg\:-mr-1{margin-right:-.25rem}.lg\:-mb-1{margin-bottom:-.25rem}.lg\:-ml-1{margin-left:-.25rem}.lg\:-mt-2{margin-top:-.5rem}.lg\:-mr-2{margin-right:-.5rem}.lg\:-mb-2{margin-bottom:-.5rem}.lg\:-ml-2{margin-left:-.5rem}.lg\:-mt-3{margin-top:-.75rem}.lg\:-mr-3{margin-right:-.75rem}.lg\:-mb-3{margin-bottom:-.75rem}.lg\:-ml-3{margin-left:-.75rem}.lg\:-mt-4{margin-top:-1rem}.lg\:-mr-4{margin-right:-1rem}.lg\:-mb-4{margin-bottom:-1rem}.lg\:-ml-4{margin-left:-1rem}.lg\:-mt-5{margin-top:-1.25rem}.lg\:-mr-5{margin-right:-1.25rem}.lg\:-mb-5{margin-bottom:-1.25rem}.lg\:-ml-5{margin-left:-1.25rem}.lg\:-mt-6{margin-top:-1.5rem}.lg\:-mr-6{margin-right:-1.5rem}.lg\:-mb-6{margin-bottom:-1.5rem}.lg\:-ml-6{margin-left:-1.5rem}.lg\:-mt-8{margin-top:-2rem}.lg\:-mr-8{margin-right:-2rem}.lg\:-mb-8{margin-bottom:-2rem}.lg\:-ml-8{margin-left:-2rem}.lg\:-mt-10{margin-top:-2.5rem}.lg\:-mr-10{margin-right:-2.5rem}.lg\:-mb-10{margin-bottom:-2.5rem}.lg\:-ml-10{margin-left:-2.5rem}.lg\:-mt-12{margin-top:-3rem}.lg\:-mr-12{margin-right:-3rem}.lg\:-mb-12{margin-bottom:-3rem}.lg\:-ml-12{margin-left:-3rem}.lg\:-mt-16{margin-top:-4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:-mb-16{margin-bottom:-4rem}.lg\:-ml-16{margin-left:-4rem}.lg\:-mt-20{margin-top:-5rem}.lg\:-mr-20{margin-right:-5rem}.lg\:-mb-20{margin-bottom:-5rem}.lg\:-ml-20{margin-left:-5rem}.lg\:-mt-24{margin-top:-6rem}.lg\:-mr-24{margin-right:-6rem}.lg\:-mb-24{margin-bottom:-6rem}.lg\:-ml-24{margin-left:-6rem}.lg\:-mt-32{margin-top:-8rem}.lg\:-mr-32{margin-right:-8rem}.lg\:-mb-32{margin-bottom:-8rem}.lg\:-ml-32{margin-left:-8rem}.lg\:-mt-px{margin-top:-1px}.lg\:-mr-px{margin-right:-1px}.lg\:-mb-px{margin-bottom:-1px}.lg\:-ml-px{margin-left:-1px}.lg\:opacity-0{opacity:0}.lg\:opacity-25{opacity:.25}.lg\:opacity-50{opacity:.5}.lg\:opacity-75{opacity:.75}.lg\:opacity-100{opacity:1}.group:hover .lg\:group-hover\:opacity-0{opacity:0}.group:hover .lg\:group-hover\:opacity-25{opacity:.25}.group:hover .lg\:group-hover\:opacity-50{opacity:.5}.group:hover .lg\:group-hover\:opacity-75{opacity:.75}.group:hover .lg\:group-hover\:opacity-100{opacity:1}.lg\:overflow-auto{overflow:auto}.lg\:overflow-hidden{overflow:hidden}.lg\:overflow-visible{overflow:visible}.lg\:overflow-scroll{overflow:scroll}.lg\:overflow-x-auto{overflow-x:auto}.lg\:overflow-y-auto{overflow-y:auto}.lg\:overflow-x-hidden{overflow-x:hidden}.lg\:overflow-y-hidden{overflow-y:hidden}.lg\:overflow-x-visible{overflow-x:visible}.lg\:overflow-y-visible{overflow-y:visible}.lg\:overflow-x-scroll{overflow-x:scroll}.lg\:overflow-y-scroll{overflow-y:scroll}.lg\:scrolling-touch{-webkit-overflow-scrolling:touch}.lg\:scrolling-auto{-webkit-overflow-scrolling:auto}.lg\:p-0{padding:0}.lg\:p-1{padding:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-3{padding:.75rem}.lg\:p-4{padding:1rem}.lg\:p-5{padding:1.25rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:p-10{padding:2.5rem}.lg\:p-12{padding:3rem}.lg\:p-16{padding:4rem}.lg\:p-20{padding:5rem}.lg\:p-24{padding:6rem}.lg\:p-32{padding:8rem}.lg\:p-px{padding:1px}.lg\:py-0{padding-top:0;padding-bottom:0}.lg\:px-0{padding-left:0;padding-right:0}.lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.lg\:px-1{padding-left:.25rem;padding-right:.25rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:py-3{padding-top:.75rem;padding-bottom:.75rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:py-8{padding-top:2rem;padding-bottom:2rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:py-12{padding-top:3rem;padding-bottom:3rem}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:py-16{padding-top:4rem;padding-bottom:4rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:py-20{padding-top:5rem;padding-bottom:5rem}.lg\:px-20{padding-left:5rem;padding-right:5rem}.lg\:py-24{padding-top:6rem;padding-bottom:6rem}.lg\:px-24{padding-left:6rem;padding-right:6rem}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:py-px{padding-top:1px;padding-bottom:1px}.lg\:px-px{padding-left:1px;padding-right:1px}.lg\:pt-0{padding-top:0}.lg\:pr-0{padding-right:0}.lg\:pb-0{padding-bottom:0}.lg\:pl-0{padding-left:0}.lg\:pt-1{padding-top:.25rem}.lg\:pr-1{padding-right:.25rem}.lg\:pb-1{padding-bottom:.25rem}.lg\:pl-1{padding-left:.25rem}.lg\:pt-2{padding-top:.5rem}.lg\:pr-2{padding-right:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:pt-3{padding-top:.75rem}.lg\:pr-3{padding-right:.75rem}.lg\:pb-3{padding-bottom:.75rem}.lg\:pl-3{padding-left:.75rem}.lg\:pt-4{padding-top:1rem}.lg\:pr-4{padding-right:1rem}.lg\:pb-4{padding-bottom:1rem}.lg\:pl-4{padding-left:1rem}.lg\:pt-5{padding-top:1.25rem}.lg\:pr-5{padding-right:1.25rem}.lg\:pb-5{padding-bottom:1.25rem}.lg\:pl-5{padding-left:1.25rem}.lg\:pt-6{padding-top:1.5rem}.lg\:pr-6{padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:pl-6{padding-left:1.5rem}.lg\:pt-8{padding-top:2rem}.lg\:pr-8{padding-right:2rem}.lg\:pb-8{padding-bottom:2rem}.lg\:pl-8{padding-left:2rem}.lg\:pt-10{padding-top:2.5rem}.lg\:pr-10{padding-right:2.5rem}.lg\:pb-10{padding-bottom:2.5rem}.lg\:pl-10{padding-left:2.5rem}.lg\:pt-12{padding-top:3rem}.lg\:pr-12{padding-right:3rem}.lg\:pb-12{padding-bottom:3rem}.lg\:pl-12{padding-left:3rem}.lg\:pt-16{padding-top:4rem}.lg\:pr-16{padding-right:4rem}.lg\:pb-16{padding-bottom:4rem}.lg\:pl-16{padding-left:4rem}.lg\:pt-20{padding-top:5rem}.lg\:pr-20{padding-right:5rem}.lg\:pb-20{padding-bottom:5rem}.lg\:pl-20{padding-left:5rem}.lg\:pt-24{padding-top:6rem}.lg\:pr-24{padding-right:6rem}.lg\:pb-24{padding-bottom:6rem}.lg\:pl-24{padding-left:6rem}.lg\:pt-32{padding-top:8rem}.lg\:pr-32{padding-right:8rem}.lg\:pb-32{padding-bottom:8rem}.lg\:pl-32{padding-left:8rem}.lg\:pt-px{padding-top:1px}.lg\:pr-px{padding-right:1px}.lg\:pb-px{padding-bottom:1px}.lg\:pl-px{padding-left:1px}.lg\:pointer-events-none{pointer-events:none}.lg\:pointer-events-auto{pointer-events:auto}.lg\:static{position:static}.lg\:fixed{position:fixed}.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:sticky}.lg\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.lg\:pin{top:0;right:0;bottom:0;left:0}.lg\:pin-y{top:0;bottom:0}.lg\:pin-x{right:0;left:0}.lg\:pin-t{top:0}.lg\:pin-r{right:0}.lg\:pin-b{bottom:0}.lg\:pin-l{left:0}.lg\:resize-none{resize:none}.lg\:resize-y{resize:vertical}.lg\:resize-x{resize:horizontal}.lg\:resize{resize:both}.lg\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.lg\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.lg\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.lg\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:none}.lg\:table-auto{table-layout:auto}.lg\:table-fixed{table-layout:fixed}.lg\:text-left{text-align:left}.lg\:text-center{text-align:center}.lg\:text-right{text-align:right}.lg\:text-justify{text-align:justify}.lg\:text-transparent{color:transparent}.lg\:text-color-black{color:#000}.lg\:text-color-mine-shaft{color:#373737}.lg\:text-color-fuscous-gray{color:#4c4d4b}.lg\:text-color-emperor{color:#5d5d5d}.lg\:text-color-dove-gray{color:#646464}.lg\:text-color-boulder{color:#7b7b7b}.lg\:text-color-silver{color:#bbb}.lg\:text-color-alto{color:#dadada}.lg\:text-color-mercury{color:#e9e9e9}.lg\:text-color-seashell{color:#f1f1f1}.lg\:text-color-white{color:#fff}.lg\:text-color-orient{color:#005c7c}.lg\:text-color-shakespeare{color:#4ab9d4}.lg\:text-color-yellow-metal{color:#807040}.lg\:text-color-kumera{color:#8a741d}.lg\:text-color-olive{color:#8e7100}.lg\:text-color-barley-corn{color:#a0915e}.lg\:text-color-verdigris{color:#494a2d}.lg\:text-color-texas{color:#f9fb93}.lg\:text-color-ferra{color:#634849}.lg\:text-color-cherub{color:#fbe3e4}.lg\:text-color-cabbage-pont{color:#454e41}.lg\:text-color-tea-green{color:#cfefc2}.group:hover .lg\:group-hover\:text-transparent{color:transparent}.group:hover .lg\:group-hover\:text-color-black{color:#000}.group:hover .lg\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .lg\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .lg\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .lg\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .lg\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .lg\:group-hover\:text-color-silver{color:#bbb}.group:hover .lg\:group-hover\:text-color-alto{color:#dadada}.group:hover .lg\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .lg\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .lg\:group-hover\:text-color-white{color:#fff}.group:hover .lg\:group-hover\:text-color-orient{color:#005c7c}.group:hover .lg\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .lg\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .lg\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .lg\:group-hover\:text-color-olive{color:#8e7100}.group:hover .lg\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .lg\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .lg\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .lg\:group-hover\:text-color-ferra{color:#634849}.group:hover .lg\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .lg\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .lg\:group-hover\:text-color-tea-green{color:#cfefc2}.lg\:hover\:text-transparent:hover{color:transparent}.lg\:hover\:text-color-black:hover{color:#000}.lg\:hover\:text-color-mine-shaft:hover{color:#373737}.lg\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.lg\:hover\:text-color-emperor:hover{color:#5d5d5d}.lg\:hover\:text-color-dove-gray:hover{color:#646464}.lg\:hover\:text-color-boulder:hover{color:#7b7b7b}.lg\:hover\:text-color-silver:hover{color:#bbb}.lg\:hover\:text-color-alto:hover{color:#dadada}.lg\:hover\:text-color-mercury:hover{color:#e9e9e9}.lg\:hover\:text-color-seashell:hover{color:#f1f1f1}.lg\:hover\:text-color-white:hover{color:#fff}.lg\:hover\:text-color-orient:hover{color:#005c7c}.lg\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.lg\:hover\:text-color-yellow-metal:hover{color:#807040}.lg\:hover\:text-color-kumera:hover{color:#8a741d}.lg\:hover\:text-color-olive:hover{color:#8e7100}.lg\:hover\:text-color-barley-corn:hover{color:#a0915e}.lg\:hover\:text-color-verdigris:hover{color:#494a2d}.lg\:hover\:text-color-texas:hover{color:#f9fb93}.lg\:hover\:text-color-ferra:hover{color:#634849}.lg\:hover\:text-color-cherub:hover{color:#fbe3e4}.lg\:hover\:text-color-cabbage-pont:hover{color:#454e41}.lg\:hover\:text-color-tea-green:hover{color:#cfefc2}.lg\:focus\:text-transparent:focus{color:transparent}.lg\:focus\:text-color-black:focus{color:#000}.lg\:focus\:text-color-mine-shaft:focus{color:#373737}.lg\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.lg\:focus\:text-color-emperor:focus{color:#5d5d5d}.lg\:focus\:text-color-dove-gray:focus{color:#646464}.lg\:focus\:text-color-boulder:focus{color:#7b7b7b}.lg\:focus\:text-color-silver:focus{color:#bbb}.lg\:focus\:text-color-alto:focus{color:#dadada}.lg\:focus\:text-color-mercury:focus{color:#e9e9e9}.lg\:focus\:text-color-seashell:focus{color:#f1f1f1}.lg\:focus\:text-color-white:focus{color:#fff}.lg\:focus\:text-color-orient:focus{color:#005c7c}.lg\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.lg\:focus\:text-color-yellow-metal:focus{color:#807040}.lg\:focus\:text-color-kumera:focus{color:#8a741d}.lg\:focus\:text-color-olive:focus{color:#8e7100}.lg\:focus\:text-color-barley-corn:focus{color:#a0915e}.lg\:focus\:text-color-verdigris:focus{color:#494a2d}.lg\:focus\:text-color-texas:focus{color:#f9fb93}.lg\:focus\:text-color-ferra:focus{color:#634849}.lg\:focus\:text-color-cherub:focus{color:#fbe3e4}.lg\:focus\:text-color-cabbage-pont:focus{color:#454e41}.lg\:focus\:text-color-tea-green:focus{color:#cfefc2}.lg\:text-3xs{font-size:.667rem}.lg\:text-2xs{font-size:.8rem}.lg\:text-xs{font-size:.867rem}.lg\:text-sm{font-size:.933rem}.lg\:text-base{font-size:15px}.lg\:text-lg{font-size:1.067rem}.lg\:text-xl{font-size:1.2rem}.lg\:text-2xl{font-size:1.267rem}.lg\:text-3xl{font-size:1.933rem}.lg\:italic{font-style:italic}.lg\:roman{font-style:normal}.lg\:uppercase{text-transform:uppercase}.lg\:lowercase{text-transform:lowercase}.lg\:capitalize{text-transform:capitalize}.lg\:normal-case{text-transform:none}.lg\:underline{text-decoration:underline}.lg\:line-through{text-decoration:line-through}.lg\:no-underline{text-decoration:none}.lg\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.lg\:hover\:italic:hover{font-style:italic}.lg\:hover\:roman:hover{font-style:normal}.lg\:hover\:uppercase:hover{text-transform:uppercase}.lg\:hover\:lowercase:hover{text-transform:lowercase}.lg\:hover\:capitalize:hover{text-transform:capitalize}.lg\:hover\:normal-case:hover{text-transform:none}.lg\:hover\:underline:hover{text-decoration:underline}.lg\:hover\:line-through:hover{text-decoration:line-through}.lg\:hover\:no-underline:hover{text-decoration:none}.lg\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.lg\:focus\:italic:focus{font-style:italic}.lg\:focus\:roman:focus{font-style:normal}.lg\:focus\:uppercase:focus{text-transform:uppercase}.lg\:focus\:lowercase:focus{text-transform:lowercase}.lg\:focus\:capitalize:focus{text-transform:capitalize}.lg\:focus\:normal-case:focus{text-transform:none}.lg\:focus\:underline:focus{text-decoration:underline}.lg\:focus\:line-through:focus{text-decoration:line-through}.lg\:focus\:no-underline:focus{text-decoration:none}.lg\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.lg\:tracking-tight{letter-spacing:-.05em}.lg\:tracking-normal{letter-spacing:0}.lg\:tracking-wide{letter-spacing:.05em}.lg\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lg\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.lg\:align-baseline{vertical-align:baseline}.lg\:align-top{vertical-align:top}.lg\:align-middle{vertical-align:middle}.lg\:align-bottom{vertical-align:bottom}.lg\:align-text-top{vertical-align:text-top}.lg\:align-text-bottom{vertical-align:text-bottom}.lg\:visible{visibility:visible}.lg\:invisible{visibility:hidden}.lg\:whitespace-normal{white-space:normal}.lg\:whitespace-no-wrap{white-space:nowrap}.lg\:whitespace-pre{white-space:pre}.lg\:whitespace-pre-line{white-space:pre-line}.lg\:whitespace-pre-wrap{white-space:pre-wrap}.lg\:break-words{word-wrap:break-word}.lg\:break-normal{word-wrap:normal}.lg\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lg\:w-1{width:.25rem}.lg\:w-2{width:.5rem}.lg\:w-3{width:.75rem}.lg\:w-4{width:1rem}.lg\:w-5{width:1.25rem}.lg\:w-6{width:1.5rem}.lg\:w-8{width:2rem}.lg\:w-10{width:2.5rem}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-24{width:6rem}.lg\:w-32{width:8rem}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-56{width:14rem}.lg\:w-64{width:16rem}.lg\:w-auto{width:auto}.lg\:w-px{width:1px}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.33333%}.lg\:w-2\/3{width:66.66667%}.lg\:w-1\/4{width:25%}.lg\:w-3\/4{width:75%}.lg\:w-1\/5{width:20%}.lg\:w-2\/5{width:40%}.lg\:w-3\/5{width:60%}.lg\:w-4\/5{width:80%}.lg\:w-1\/6{width:16.66667%}.lg\:w-1\/8{width:12.5%}.lg\:w-1\/10{width:10%}.lg\:w-1\/12{width:8.33333%}.lg\:w-full{width:100%}.lg\:w-screen{width:100vw}.lg\:z-0{z-index:0}.lg\:z-10{z-index:10}.lg\:z-20{z-index:20}.lg\:z-30{z-index:30}.lg\:z-40{z-index:40}.lg\:z-50{z-index:50}.lg\:z-auto{z-index:auto}.lg\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.lg\:text-shadow-none{text-shadow:none}.lg\:gradient-grey,.lg\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.lg\:gradient-grey-reversed,.lg\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.lg\:pin-t8{top:2rem}.lg\:pin-t16{top:4rem}.lg\:pin-b24{bottom:12rem}.lg\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.lg\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.lg\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:1200px){.xl\:list-reset{list-style:none;padding:0}.xl\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.xl\:bg-fixed{background-attachment:fixed}.xl\:bg-local{background-attachment:local}.xl\:bg-scroll{background-attachment:scroll}.xl\:bg-transparent{background-color:initial}.xl\:bg-color-black{background-color:#000}.xl\:bg-color-mine-shaft{background-color:#373737}.xl\:bg-color-fuscous-gray{background-color:#4c4d4b}.xl\:bg-color-emperor{background-color:#5d5d5d}.xl\:bg-color-dove-gray{background-color:#646464}.xl\:bg-color-boulder{background-color:#7b7b7b}.xl\:bg-color-silver{background-color:#bbb}.xl\:bg-color-alto{background-color:#dadada}.xl\:bg-color-mercury{background-color:#e9e9e9}.xl\:bg-color-seashell{background-color:#f1f1f1}.xl\:bg-color-white{background-color:#fff}.xl\:bg-color-orient{background-color:#005c7c}.xl\:bg-color-shakespeare{background-color:#4ab9d4}.xl\:bg-color-yellow-metal{background-color:#807040}.xl\:bg-color-kumera{background-color:#8a741d}.xl\:bg-color-olive{background-color:#8e7100}.xl\:bg-color-barley-corn{background-color:#a0915e}.xl\:bg-color-verdigris{background-color:#494a2d}.xl\:bg-color-texas{background-color:#f9fb93}.xl\:bg-color-ferra{background-color:#634849}.xl\:bg-color-cherub{background-color:#fbe3e4}.xl\:bg-color-cabbage-pont{background-color:#454e41}.xl\:bg-color-tea-green{background-color:#cfefc2}.group:hover .xl\:group-hover\:bg-transparent{background-color:initial}.group:hover .xl\:group-hover\:bg-color-black{background-color:#000}.group:hover .xl\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .xl\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .xl\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .xl\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .xl\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .xl\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .xl\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .xl\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .xl\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .xl\:group-hover\:bg-color-white{background-color:#fff}.group:hover .xl\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .xl\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .xl\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .xl\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .xl\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .xl\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .xl\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .xl\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .xl\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .xl\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .xl\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .xl\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.xl\:hover\:bg-transparent:hover{background-color:initial}.xl\:hover\:bg-color-black:hover{background-color:#000}.xl\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.xl\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.xl\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.xl\:hover\:bg-color-dove-gray:hover{background-color:#646464}.xl\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.xl\:hover\:bg-color-silver:hover{background-color:#bbb}.xl\:hover\:bg-color-alto:hover{background-color:#dadada}.xl\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.xl\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.xl\:hover\:bg-color-white:hover{background-color:#fff}.xl\:hover\:bg-color-orient:hover{background-color:#005c7c}.xl\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.xl\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.xl\:hover\:bg-color-kumera:hover{background-color:#8a741d}.xl\:hover\:bg-color-olive:hover{background-color:#8e7100}.xl\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.xl\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.xl\:hover\:bg-color-texas:hover{background-color:#f9fb93}.xl\:hover\:bg-color-ferra:hover{background-color:#634849}.xl\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.xl\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.xl\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.xl\:focus\:bg-transparent:focus{background-color:initial}.xl\:focus\:bg-color-black:focus{background-color:#000}.xl\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.xl\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.xl\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.xl\:focus\:bg-color-dove-gray:focus{background-color:#646464}.xl\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.xl\:focus\:bg-color-silver:focus{background-color:#bbb}.xl\:focus\:bg-color-alto:focus{background-color:#dadada}.xl\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.xl\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.xl\:focus\:bg-color-white:focus{background-color:#fff}.xl\:focus\:bg-color-orient:focus{background-color:#005c7c}.xl\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.xl\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.xl\:focus\:bg-color-kumera:focus{background-color:#8a741d}.xl\:focus\:bg-color-olive:focus{background-color:#8e7100}.xl\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.xl\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.xl\:focus\:bg-color-texas:focus{background-color:#f9fb93}.xl\:focus\:bg-color-ferra:focus{background-color:#634849}.xl\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.xl\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.xl\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.xl\:bg-bottom{background-position:bottom}.xl\:bg-center{background-position:50%}.xl\:bg-left{background-position:0}.xl\:bg-left-bottom{background-position:0 100%}.xl\:bg-left-top{background-position:0 0}.xl\:bg-right{background-position:100%}.xl\:bg-right-bottom{background-position:100% 100%}.xl\:bg-right-top{background-position:100% 0}.xl\:bg-top{background-position:top}.xl\:bg-repeat{background-repeat:repeat}.xl\:bg-no-repeat{background-repeat:no-repeat}.xl\:bg-repeat-x{background-repeat:repeat-x}.xl\:bg-repeat-y{background-repeat:repeat-y}.xl\:bg-auto{background-size:auto}.xl\:bg-cover{background-size:cover}.xl\:bg-contain{background-size:contain}.xl\:border-transparent{border-color:transparent}.xl\:border-color-black{border-color:#000}.xl\:border-color-mine-shaft{border-color:#373737}.xl\:border-color-fuscous-gray{border-color:#4c4d4b}.xl\:border-color-emperor{border-color:#5d5d5d}.xl\:border-color-dove-gray{border-color:#646464}.xl\:border-color-boulder{border-color:#7b7b7b}.xl\:border-color-silver{border-color:#bbb}.xl\:border-color-alto{border-color:#dadada}.xl\:border-color-mercury{border-color:#e9e9e9}.xl\:border-color-seashell{border-color:#f1f1f1}.xl\:border-color-white{border-color:#fff}.xl\:border-color-orient{border-color:#005c7c}.xl\:border-color-shakespeare{border-color:#4ab9d4}.xl\:border-color-yellow-metal{border-color:#807040}.xl\:border-color-kumera{border-color:#8a741d}.xl\:border-color-olive{border-color:#8e7100}.xl\:border-color-barley-corn{border-color:#a0915e}.xl\:border-color-verdigris{border-color:#494a2d}.xl\:border-color-texas{border-color:#f9fb93}.xl\:border-color-ferra{border-color:#634849}.xl\:border-color-cherub{border-color:#fbe3e4}.xl\:border-color-cabbage-pont{border-color:#454e41}.xl\:border-color-tea-green{border-color:#cfefc2}.xl\:hover\:border-transparent:hover{border-color:transparent}.xl\:hover\:border-color-black:hover{border-color:#000}.xl\:hover\:border-color-mine-shaft:hover{border-color:#373737}.xl\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.xl\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.xl\:hover\:border-color-dove-gray:hover{border-color:#646464}.xl\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.xl\:hover\:border-color-silver:hover{border-color:#bbb}.xl\:hover\:border-color-alto:hover{border-color:#dadada}.xl\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.xl\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.xl\:hover\:border-color-white:hover{border-color:#fff}.xl\:hover\:border-color-orient:hover{border-color:#005c7c}.xl\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.xl\:hover\:border-color-yellow-metal:hover{border-color:#807040}.xl\:hover\:border-color-kumera:hover{border-color:#8a741d}.xl\:hover\:border-color-olive:hover{border-color:#8e7100}.xl\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.xl\:hover\:border-color-verdigris:hover{border-color:#494a2d}.xl\:hover\:border-color-texas:hover{border-color:#f9fb93}.xl\:hover\:border-color-ferra:hover{border-color:#634849}.xl\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.xl\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.xl\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.xl\:focus\:border-transparent:focus{border-color:transparent}.xl\:focus\:border-color-black:focus{border-color:#000}.xl\:focus\:border-color-mine-shaft:focus{border-color:#373737}.xl\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.xl\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.xl\:focus\:border-color-dove-gray:focus{border-color:#646464}.xl\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.xl\:focus\:border-color-silver:focus{border-color:#bbb}.xl\:focus\:border-color-alto:focus{border-color:#dadada}.xl\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.xl\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.xl\:focus\:border-color-white:focus{border-color:#fff}.xl\:focus\:border-color-orient:focus{border-color:#005c7c}.xl\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.xl\:focus\:border-color-yellow-metal:focus{border-color:#807040}.xl\:focus\:border-color-kumera:focus{border-color:#8a741d}.xl\:focus\:border-color-olive:focus{border-color:#8e7100}.xl\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.xl\:focus\:border-color-verdigris:focus{border-color:#494a2d}.xl\:focus\:border-color-texas:focus{border-color:#f9fb93}.xl\:focus\:border-color-ferra:focus{border-color:#634849}.xl\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.xl\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.xl\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.xl\:rounded-none{border-radius:0}.xl\:rounded-sm{border-radius:.125rem}.xl\:rounded{border-radius:.25rem}.xl\:rounded-lg{border-radius:.5rem}.xl\:rounded-full{border-radius:9999px}.xl\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.xl\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.xl\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.xl\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.xl\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.xl\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.xl\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.xl\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.xl\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.xl\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.xl\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.xl\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.xl\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.xl\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.xl\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.xl\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.xl\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.xl\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.xl\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.xl\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.xl\:rounded-tl-none{border-top-left-radius:0}.xl\:rounded-tr-none{border-top-right-radius:0}.xl\:rounded-br-none{border-bottom-right-radius:0}.xl\:rounded-bl-none{border-bottom-left-radius:0}.xl\:rounded-tl-sm{border-top-left-radius:.125rem}.xl\:rounded-tr-sm{border-top-right-radius:.125rem}.xl\:rounded-br-sm{border-bottom-right-radius:.125rem}.xl\:rounded-bl-sm{border-bottom-left-radius:.125rem}.xl\:rounded-tl{border-top-left-radius:.25rem}.xl\:rounded-tr{border-top-right-radius:.25rem}.xl\:rounded-br{border-bottom-right-radius:.25rem}.xl\:rounded-bl{border-bottom-left-radius:.25rem}.xl\:rounded-tl-lg{border-top-left-radius:.5rem}.xl\:rounded-tr-lg{border-top-right-radius:.5rem}.xl\:rounded-br-lg{border-bottom-right-radius:.5rem}.xl\:rounded-bl-lg{border-bottom-left-radius:.5rem}.xl\:rounded-tl-full{border-top-left-radius:9999px}.xl\:rounded-tr-full{border-top-right-radius:9999px}.xl\:rounded-br-full{border-bottom-right-radius:9999px}.xl\:rounded-bl-full{border-bottom-left-radius:9999px}.xl\:border-solid{border-style:solid}.xl\:border-dashed{border-style:dashed}.xl\:border-dotted{border-style:dotted}.xl\:border-none{border-style:none}.xl\:border-0{border-width:0}.xl\:border-2{border-width:2px}.xl\:border-4{border-width:4px}.xl\:border-8{border-width:8px}.xl\:border{border-width:1px}.xl\:border-t-0{border-top-width:0}.xl\:border-r-0{border-right-width:0}.xl\:border-b-0{border-bottom-width:0}.xl\:border-l-0{border-left-width:0}.xl\:border-t-2{border-top-width:2px}.xl\:border-r-2{border-right-width:2px}.xl\:border-b-2{border-bottom-width:2px}.xl\:border-l-2{border-left-width:2px}.xl\:border-t-4{border-top-width:4px}.xl\:border-r-4{border-right-width:4px}.xl\:border-b-4{border-bottom-width:4px}.xl\:border-l-4{border-left-width:4px}.xl\:border-t-8{border-top-width:8px}.xl\:border-r-8{border-right-width:8px}.xl\:border-b-8{border-bottom-width:8px}.xl\:border-l-8{border-left-width:8px}.xl\:border-t{border-top-width:1px}.xl\:border-r{border-right-width:1px}.xl\:border-b{border-bottom-width:1px}.xl\:border-l{border-left-width:1px}.xl\:cursor-auto{cursor:auto}.xl\:cursor-default{cursor:default}.xl\:cursor-pointer{cursor:pointer}.xl\:cursor-wait{cursor:wait}.xl\:cursor-move{cursor:move}.xl\:cursor-not-allowed{cursor:not-allowed}.xl\:block{display:block}.xl\:inline-block{display:inline-block}.xl\:inline{display:inline}.xl\:table{display:table}.xl\:table-row{display:table-row}.xl\:table-cell{display:table-cell}.xl\:hidden{display:none}.xl\:hover\:block:hover{display:block}.xl\:hover\:inline-block:hover{display:inline-block}.xl\:hover\:inline:hover{display:inline}.xl\:hover\:table:hover{display:table}.xl\:hover\:table-row:hover{display:table-row}.xl\:hover\:table-cell:hover{display:table-cell}.xl\:hover\:hidden:hover{display:none}.xl\:flex{display:flex}.xl\:inline-flex{display:inline-flex}.xl\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.xl\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xl\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.xl\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.xl\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.xl\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.xl\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.xl\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.xl\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.xl\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.xl\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.xl\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.xl\:self-auto{-ms-flex-item-align:auto;align-self:auto}.xl\:self-start{-ms-flex-item-align:start;align-self:flex-start}.xl\:self-end{-ms-flex-item-align:end;align-self:flex-end}.xl\:self-center{-ms-flex-item-align:center;align-self:center}.xl\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.xl\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.xl\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.xl\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.xl\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.xl\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.xl\:content-center{-ms-flex-line-pack:center;align-content:center}.xl\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.xl\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.xl\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.xl\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.xl\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.xl\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.xl\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.xl\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.xl\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.xl\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.xl\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.xl\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.xl\:float-right{float:right}.xl\:float-left{float:left}.xl\:float-none{float:none}.xl\:clearfix:after{content:"";display:table;clear:both}.xl\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.xl\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.xl\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.xl\:font-hairline{font-weight:100}.xl\:font-thin{font-weight:200}.xl\:font-light{font-weight:300}.xl\:font-normal{font-weight:400}.xl\:font-medium{font-weight:500}.xl\:font-semibold{font-weight:600}.xl\:font-bold{font-weight:700}.xl\:font-extrabold{font-weight:800}.xl\:font-black{font-weight:900}.xl\:hover\:font-hairline:hover{font-weight:100}.xl\:hover\:font-thin:hover{font-weight:200}.xl\:hover\:font-light:hover{font-weight:300}.xl\:hover\:font-normal:hover{font-weight:400}.xl\:hover\:font-medium:hover{font-weight:500}.xl\:hover\:font-semibold:hover{font-weight:600}.xl\:hover\:font-bold:hover{font-weight:700}.xl\:hover\:font-extrabold:hover{font-weight:800}.xl\:hover\:font-black:hover{font-weight:900}.xl\:focus\:font-hairline:focus{font-weight:100}.xl\:focus\:font-thin:focus{font-weight:200}.xl\:focus\:font-light:focus{font-weight:300}.xl\:focus\:font-normal:focus{font-weight:400}.xl\:focus\:font-medium:focus{font-weight:500}.xl\:focus\:font-semibold:focus{font-weight:600}.xl\:focus\:font-bold:focus{font-weight:700}.xl\:focus\:font-extrabold:focus{font-weight:800}.xl\:focus\:font-black:focus{font-weight:900}.xl\:h-1{height:.25rem}.xl\:h-2{height:.5rem}.xl\:h-3{height:.75rem}.xl\:h-4{height:1rem}.xl\:h-5{height:1.25rem}.xl\:h-6{height:1.5rem}.xl\:h-8{height:2rem}.xl\:h-10{height:2.5rem}.xl\:h-12{height:3rem}.xl\:h-16{height:4rem}.xl\:h-24{height:6rem}.xl\:h-32{height:8rem}.xl\:h-48{height:12rem}.xl\:h-64{height:16rem}.xl\:h-auto{height:auto}.xl\:h-px{height:1px}.xl\:h-full{height:100%}.xl\:h-screen{height:100vh}.xl\:h-screen-40-width{height:40vw}.xl\:h-screen-60-width{height:60vw}.xl\:h-screen-full-width{height:100vw}.xl\:leading-zero{line-height:0}.xl\:leading-none{line-height:1}.xl\:leading-tight{line-height:1.25}.xl\:leading-normal{line-height:1.5}.xl\:leading-loose{line-height:2}.xl\:m-0{margin:0}.xl\:m-1{margin:.25rem}.xl\:m-2{margin:.5rem}.xl\:m-3{margin:.75rem}.xl\:m-4{margin:1rem}.xl\:m-5{margin:1.25rem}.xl\:m-6{margin:1.5rem}.xl\:m-8{margin:2rem}.xl\:m-10{margin:2.5rem}.xl\:m-12{margin:3rem}.xl\:m-16{margin:4rem}.xl\:m-20{margin:5rem}.xl\:m-24{margin:6rem}.xl\:m-32{margin:8rem}.xl\:m-auto{margin:auto}.xl\:m-px{margin:1px}.xl\:my-0{margin-top:0;margin-bottom:0}.xl\:mx-0{margin-left:0;margin-right:0}.xl\:my-1{margin-top:.25rem;margin-bottom:.25rem}.xl\:mx-1{margin-left:.25rem;margin-right:.25rem}.xl\:my-2{margin-top:.5rem;margin-bottom:.5rem}.xl\:mx-2{margin-left:.5rem;margin-right:.5rem}.xl\:my-3{margin-top:.75rem;margin-bottom:.75rem}.xl\:mx-3{margin-left:.75rem;margin-right:.75rem}.xl\:my-4{margin-top:1rem;margin-bottom:1rem}.xl\:mx-4{margin-left:1rem;margin-right:1rem}.xl\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.xl\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.xl\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.xl\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.xl\:my-8{margin-top:2rem;margin-bottom:2rem}.xl\:mx-8{margin-left:2rem;margin-right:2rem}.xl\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.xl\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.xl\:my-12{margin-top:3rem;margin-bottom:3rem}.xl\:mx-12{margin-left:3rem;margin-right:3rem}.xl\:my-16{margin-top:4rem;margin-bottom:4rem}.xl\:mx-16{margin-left:4rem;margin-right:4rem}.xl\:my-20{margin-top:5rem;margin-bottom:5rem}.xl\:mx-20{margin-left:5rem;margin-right:5rem}.xl\:my-24{margin-top:6rem;margin-bottom:6rem}.xl\:mx-24{margin-left:6rem;margin-right:6rem}.xl\:my-32{margin-top:8rem;margin-bottom:8rem}.xl\:mx-32{margin-left:8rem;margin-right:8rem}.xl\:my-auto{margin-top:auto;margin-bottom:auto}.xl\:mx-auto{margin-left:auto;margin-right:auto}.xl\:my-px{margin-top:1px;margin-bottom:1px}.xl\:mx-px{margin-left:1px;margin-right:1px}.xl\:mt-0{margin-top:0}.xl\:mr-0{margin-right:0}.xl\:mb-0{margin-bottom:0}.xl\:ml-0{margin-left:0}.xl\:mt-1{margin-top:.25rem}.xl\:mr-1{margin-right:.25rem}.xl\:mb-1{margin-bottom:.25rem}.xl\:ml-1{margin-left:.25rem}.xl\:mt-2{margin-top:.5rem}.xl\:mr-2{margin-right:.5rem}.xl\:mb-2{margin-bottom:.5rem}.xl\:ml-2{margin-left:.5rem}.xl\:mt-3{margin-top:.75rem}.xl\:mr-3{margin-right:.75rem}.xl\:mb-3{margin-bottom:.75rem}.xl\:ml-3{margin-left:.75rem}.xl\:mt-4{margin-top:1rem}.xl\:mr-4{margin-right:1rem}.xl\:mb-4{margin-bottom:1rem}.xl\:ml-4{margin-left:1rem}.xl\:mt-5{margin-top:1.25rem}.xl\:mr-5{margin-right:1.25rem}.xl\:mb-5{margin-bottom:1.25rem}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-6{margin-top:1.5rem}.xl\:mr-6{margin-right:1.5rem}.xl\:mb-6{margin-bottom:1.5rem}.xl\:ml-6{margin-left:1.5rem}.xl\:mt-8{margin-top:2rem}.xl\:mr-8{margin-right:2rem}.xl\:mb-8{margin-bottom:2rem}.xl\:ml-8{margin-left:2rem}.xl\:mt-10{margin-top:2.5rem}.xl\:mr-10{margin-right:2.5rem}.xl\:mb-10{margin-bottom:2.5rem}.xl\:ml-10{margin-left:2.5rem}.xl\:mt-12{margin-top:3rem}.xl\:mr-12{margin-right:3rem}.xl\:mb-12{margin-bottom:3rem}.xl\:ml-12{margin-left:3rem}.xl\:mt-16{margin-top:4rem}.xl\:mr-16{margin-right:4rem}.xl\:mb-16{margin-bottom:4rem}.xl\:ml-16{margin-left:4rem}.xl\:mt-20{margin-top:5rem}.xl\:mr-20{margin-right:5rem}.xl\:mb-20{margin-bottom:5rem}.xl\:ml-20{margin-left:5rem}.xl\:mt-24{margin-top:6rem}.xl\:mr-24{margin-right:6rem}.xl\:mb-24{margin-bottom:6rem}.xl\:ml-24{margin-left:6rem}.xl\:mt-32{margin-top:8rem}.xl\:mr-32{margin-right:8rem}.xl\:mb-32{margin-bottom:8rem}.xl\:ml-32{margin-left:8rem}.xl\:mt-auto{margin-top:auto}.xl\:mr-auto{margin-right:auto}.xl\:mb-auto{margin-bottom:auto}.xl\:ml-auto{margin-left:auto}.xl\:mt-px{margin-top:1px}.xl\:mr-px{margin-right:1px}.xl\:mb-px{margin-bottom:1px}.xl\:ml-px{margin-left:1px}.xl\:max-h-full{max-height:100%}.xl\:max-h-screen{max-height:100vh}.xl\:max-w-sm{max-width:576px}.xl\:max-w-md{max-width:768px}.xl\:max-w-lg{max-width:992px}.xl\:max-w-xl{max-width:1200px}.xl\:max-w-full{max-width:100%}.xl\:min-h-0{min-height:0}.xl\:min-h-full{min-height:100%}.xl\:min-h-screen{min-height:100vh}.xl\:min-w-0{min-width:0}.xl\:min-w-full{min-width:100%}.xl\:-m-0{margin:0}.xl\:-m-1{margin:-.25rem}.xl\:-m-2{margin:-.5rem}.xl\:-m-3{margin:-.75rem}.xl\:-m-4{margin:-1rem}.xl\:-m-5{margin:-1.25rem}.xl\:-m-6{margin:-1.5rem}.xl\:-m-8{margin:-2rem}.xl\:-m-10{margin:-2.5rem}.xl\:-m-12{margin:-3rem}.xl\:-m-16{margin:-4rem}.xl\:-m-20{margin:-5rem}.xl\:-m-24{margin:-6rem}.xl\:-m-32{margin:-8rem}.xl\:-m-px{margin:-1px}.xl\:-my-0{margin-top:0;margin-bottom:0}.xl\:-mx-0{margin-left:0;margin-right:0}.xl\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.xl\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.xl\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.xl\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.xl\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.xl\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.xl\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.xl\:-mx-4{margin-left:-1rem;margin-right:-1rem}.xl\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.xl\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.xl\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.xl\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.xl\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.xl\:-mx-8{margin-left:-2rem;margin-right:-2rem}.xl\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.xl\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.xl\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.xl\:-mx-12{margin-left:-3rem;margin-right:-3rem}.xl\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.xl\:-mx-16{margin-left:-4rem;margin-right:-4rem}.xl\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.xl\:-mx-20{margin-left:-5rem;margin-right:-5rem}.xl\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.xl\:-mx-24{margin-left:-6rem;margin-right:-6rem}.xl\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.xl\:-mx-32{margin-left:-8rem;margin-right:-8rem}.xl\:-my-px{margin-top:-1px;margin-bottom:-1px}.xl\:-mx-px{margin-left:-1px;margin-right:-1px}.xl\:-mt-0{margin-top:0}.xl\:-mr-0{margin-right:0}.xl\:-mb-0{margin-bottom:0}.xl\:-ml-0{margin-left:0}.xl\:-mt-1{margin-top:-.25rem}.xl\:-mr-1{margin-right:-.25rem}.xl\:-mb-1{margin-bottom:-.25rem}.xl\:-ml-1{margin-left:-.25rem}.xl\:-mt-2{margin-top:-.5rem}.xl\:-mr-2{margin-right:-.5rem}.xl\:-mb-2{margin-bottom:-.5rem}.xl\:-ml-2{margin-left:-.5rem}.xl\:-mt-3{margin-top:-.75rem}.xl\:-mr-3{margin-right:-.75rem}.xl\:-mb-3{margin-bottom:-.75rem}.xl\:-ml-3{margin-left:-.75rem}.xl\:-mt-4{margin-top:-1rem}.xl\:-mr-4{margin-right:-1rem}.xl\:-mb-4{margin-bottom:-1rem}.xl\:-ml-4{margin-left:-1rem}.xl\:-mt-5{margin-top:-1.25rem}.xl\:-mr-5{margin-right:-1.25rem}.xl\:-mb-5{margin-bottom:-1.25rem}.xl\:-ml-5{margin-left:-1.25rem}.xl\:-mt-6{margin-top:-1.5rem}.xl\:-mr-6{margin-right:-1.5rem}.xl\:-mb-6{margin-bottom:-1.5rem}.xl\:-ml-6{margin-left:-1.5rem}.xl\:-mt-8{margin-top:-2rem}.xl\:-mr-8{margin-right:-2rem}.xl\:-mb-8{margin-bottom:-2rem}.xl\:-ml-8{margin-left:-2rem}.xl\:-mt-10{margin-top:-2.5rem}.xl\:-mr-10{margin-right:-2.5rem}.xl\:-mb-10{margin-bottom:-2.5rem}.xl\:-ml-10{margin-left:-2.5rem}.xl\:-mt-12{margin-top:-3rem}.xl\:-mr-12{margin-right:-3rem}.xl\:-mb-12{margin-bottom:-3rem}.xl\:-ml-12{margin-left:-3rem}.xl\:-mt-16{margin-top:-4rem}.xl\:-mr-16{margin-right:-4rem}.xl\:-mb-16{margin-bottom:-4rem}.xl\:-ml-16{margin-left:-4rem}.xl\:-mt-20{margin-top:-5rem}.xl\:-mr-20{margin-right:-5rem}.xl\:-mb-20{margin-bottom:-5rem}.xl\:-ml-20{margin-left:-5rem}.xl\:-mt-24{margin-top:-6rem}.xl\:-mr-24{margin-right:-6rem}.xl\:-mb-24{margin-bottom:-6rem}.xl\:-ml-24{margin-left:-6rem}.xl\:-mt-32{margin-top:-8rem}.xl\:-mr-32{margin-right:-8rem}.xl\:-mb-32{margin-bottom:-8rem}.xl\:-ml-32{margin-left:-8rem}.xl\:-mt-px{margin-top:-1px}.xl\:-mr-px{margin-right:-1px}.xl\:-mb-px{margin-bottom:-1px}.xl\:-ml-px{margin-left:-1px}.xl\:opacity-0{opacity:0}.xl\:opacity-25{opacity:.25}.xl\:opacity-50{opacity:.5}.xl\:opacity-75{opacity:.75}.xl\:opacity-100{opacity:1}.group:hover .xl\:group-hover\:opacity-0{opacity:0}.group:hover .xl\:group-hover\:opacity-25{opacity:.25}.group:hover .xl\:group-hover\:opacity-50{opacity:.5}.group:hover .xl\:group-hover\:opacity-75{opacity:.75}.group:hover .xl\:group-hover\:opacity-100{opacity:1}.xl\:overflow-auto{overflow:auto}.xl\:overflow-hidden{overflow:hidden}.xl\:overflow-visible{overflow:visible}.xl\:overflow-scroll{overflow:scroll}.xl\:overflow-x-auto{overflow-x:auto}.xl\:overflow-y-auto{overflow-y:auto}.xl\:overflow-x-hidden{overflow-x:hidden}.xl\:overflow-y-hidden{overflow-y:hidden}.xl\:overflow-x-visible{overflow-x:visible}.xl\:overflow-y-visible{overflow-y:visible}.xl\:overflow-x-scroll{overflow-x:scroll}.xl\:overflow-y-scroll{overflow-y:scroll}.xl\:scrolling-touch{-webkit-overflow-scrolling:touch}.xl\:scrolling-auto{-webkit-overflow-scrolling:auto}.xl\:p-0{padding:0}.xl\:p-1{padding:.25rem}.xl\:p-2{padding:.5rem}.xl\:p-3{padding:.75rem}.xl\:p-4{padding:1rem}.xl\:p-5{padding:1.25rem}.xl\:p-6{padding:1.5rem}.xl\:p-8{padding:2rem}.xl\:p-10{padding:2.5rem}.xl\:p-12{padding:3rem}.xl\:p-16{padding:4rem}.xl\:p-20{padding:5rem}.xl\:p-24{padding:6rem}.xl\:p-32{padding:8rem}.xl\:p-px{padding:1px}.xl\:py-0{padding-top:0;padding-bottom:0}.xl\:px-0{padding-left:0;padding-right:0}.xl\:py-1{padding-top:.25rem;padding-bottom:.25rem}.xl\:px-1{padding-left:.25rem;padding-right:.25rem}.xl\:py-2{padding-top:.5rem;padding-bottom:.5rem}.xl\:px-2{padding-left:.5rem;padding-right:.5rem}.xl\:py-3{padding-top:.75rem;padding-bottom:.75rem}.xl\:px-3{padding-left:.75rem;padding-right:.75rem}.xl\:py-4{padding-top:1rem;padding-bottom:1rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.xl\:px-6{padding-left:1.5rem;padding-right:1.5rem}.xl\:py-8{padding-top:2rem;padding-bottom:2rem}.xl\:px-8{padding-left:2rem;padding-right:2rem}.xl\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.xl\:px-10{padding-left:2.5rem;padding-right:2.5rem}.xl\:py-12{padding-top:3rem;padding-bottom:3rem}.xl\:px-12{padding-left:3rem;padding-right:3rem}.xl\:py-16{padding-top:4rem;padding-bottom:4rem}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:py-20{padding-top:5rem;padding-bottom:5rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:py-24{padding-top:6rem;padding-bottom:6rem}.xl\:px-24{padding-left:6rem;padding-right:6rem}.xl\:py-32{padding-top:8rem;padding-bottom:8rem}.xl\:px-32{padding-left:8rem;padding-right:8rem}.xl\:py-px{padding-top:1px;padding-bottom:1px}.xl\:px-px{padding-left:1px;padding-right:1px}.xl\:pt-0{padding-top:0}.xl\:pr-0{padding-right:0}.xl\:pb-0{padding-bottom:0}.xl\:pl-0{padding-left:0}.xl\:pt-1{padding-top:.25rem}.xl\:pr-1{padding-right:.25rem}.xl\:pb-1{padding-bottom:.25rem}.xl\:pl-1{padding-left:.25rem}.xl\:pt-2{padding-top:.5rem}.xl\:pr-2{padding-right:.5rem}.xl\:pb-2{padding-bottom:.5rem}.xl\:pl-2{padding-left:.5rem}.xl\:pt-3{padding-top:.75rem}.xl\:pr-3{padding-right:.75rem}.xl\:pb-3{padding-bottom:.75rem}.xl\:pl-3{padding-left:.75rem}.xl\:pt-4{padding-top:1rem}.xl\:pr-4{padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:pl-4{padding-left:1rem}.xl\:pt-5{padding-top:1.25rem}.xl\:pr-5{padding-right:1.25rem}.xl\:pb-5{padding-bottom:1.25rem}.xl\:pl-5{padding-left:1.25rem}.xl\:pt-6{padding-top:1.5rem}.xl\:pr-6{padding-right:1.5rem}.xl\:pb-6{padding-bottom:1.5rem}.xl\:pl-6{padding-left:1.5rem}.xl\:pt-8{padding-top:2rem}.xl\:pr-8{padding-right:2rem}.xl\:pb-8{padding-bottom:2rem}.xl\:pl-8{padding-left:2rem}.xl\:pt-10{padding-top:2.5rem}.xl\:pr-10{padding-right:2.5rem}.xl\:pb-10{padding-bottom:2.5rem}.xl\:pl-10{padding-left:2.5rem}.xl\:pt-12{padding-top:3rem}.xl\:pr-12{padding-right:3rem}.xl\:pb-12{padding-bottom:3rem}.xl\:pl-12{padding-left:3rem}.xl\:pt-16{padding-top:4rem}.xl\:pr-16{padding-right:4rem}.xl\:pb-16{padding-bottom:4rem}.xl\:pl-16{padding-left:4rem}.xl\:pt-20{padding-top:5rem}.xl\:pr-20{padding-right:5rem}.xl\:pb-20{padding-bottom:5rem}.xl\:pl-20{padding-left:5rem}.xl\:pt-24{padding-top:6rem}.xl\:pr-24{padding-right:6rem}.xl\:pb-24{padding-bottom:6rem}.xl\:pl-24{padding-left:6rem}.xl\:pt-32{padding-top:8rem}.xl\:pr-32{padding-right:8rem}.xl\:pb-32{padding-bottom:8rem}.xl\:pl-32{padding-left:8rem}.xl\:pt-px{padding-top:1px}.xl\:pr-px{padding-right:1px}.xl\:pb-px{padding-bottom:1px}.xl\:pl-px{padding-left:1px}.xl\:pointer-events-none{pointer-events:none}.xl\:pointer-events-auto{pointer-events:auto}.xl\:static{position:static}.xl\:fixed{position:fixed}.xl\:absolute{position:absolute}.xl\:relative{position:relative}.xl\:sticky{position:sticky}.xl\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.xl\:pin{top:0;right:0;bottom:0;left:0}.xl\:pin-y{top:0;bottom:0}.xl\:pin-x{right:0;left:0}.xl\:pin-t{top:0}.xl\:pin-r{right:0}.xl\:pin-b{bottom:0}.xl\:pin-l{left:0}.xl\:resize-none{resize:none}.xl\:resize-y{resize:vertical}.xl\:resize-x{resize:horizontal}.xl\:resize{resize:both}.xl\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.xl\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.xl\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.xl\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:none}.xl\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.xl\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:none}.xl\:table-auto{table-layout:auto}.xl\:table-fixed{table-layout:fixed}.xl\:text-left{text-align:left}.xl\:text-center{text-align:center}.xl\:text-right{text-align:right}.xl\:text-justify{text-align:justify}.xl\:text-transparent{color:transparent}.xl\:text-color-black{color:#000}.xl\:text-color-mine-shaft{color:#373737}.xl\:text-color-fuscous-gray{color:#4c4d4b}.xl\:text-color-emperor{color:#5d5d5d}.xl\:text-color-dove-gray{color:#646464}.xl\:text-color-boulder{color:#7b7b7b}.xl\:text-color-silver{color:#bbb}.xl\:text-color-alto{color:#dadada}.xl\:text-color-mercury{color:#e9e9e9}.xl\:text-color-seashell{color:#f1f1f1}.xl\:text-color-white{color:#fff}.xl\:text-color-orient{color:#005c7c}.xl\:text-color-shakespeare{color:#4ab9d4}.xl\:text-color-yellow-metal{color:#807040}.xl\:text-color-kumera{color:#8a741d}.xl\:text-color-olive{color:#8e7100}.xl\:text-color-barley-corn{color:#a0915e}.xl\:text-color-verdigris{color:#494a2d}.xl\:text-color-texas{color:#f9fb93}.xl\:text-color-ferra{color:#634849}.xl\:text-color-cherub{color:#fbe3e4}.xl\:text-color-cabbage-pont{color:#454e41}.xl\:text-color-tea-green{color:#cfefc2}.group:hover .xl\:group-hover\:text-transparent{color:transparent}.group:hover .xl\:group-hover\:text-color-black{color:#000}.group:hover .xl\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .xl\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .xl\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .xl\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .xl\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .xl\:group-hover\:text-color-silver{color:#bbb}.group:hover .xl\:group-hover\:text-color-alto{color:#dadada}.group:hover .xl\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .xl\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .xl\:group-hover\:text-color-white{color:#fff}.group:hover .xl\:group-hover\:text-color-orient{color:#005c7c}.group:hover .xl\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .xl\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .xl\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .xl\:group-hover\:text-color-olive{color:#8e7100}.group:hover .xl\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .xl\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .xl\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .xl\:group-hover\:text-color-ferra{color:#634849}.group:hover .xl\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .xl\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .xl\:group-hover\:text-color-tea-green{color:#cfefc2}.xl\:hover\:text-transparent:hover{color:transparent}.xl\:hover\:text-color-black:hover{color:#000}.xl\:hover\:text-color-mine-shaft:hover{color:#373737}.xl\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.xl\:hover\:text-color-emperor:hover{color:#5d5d5d}.xl\:hover\:text-color-dove-gray:hover{color:#646464}.xl\:hover\:text-color-boulder:hover{color:#7b7b7b}.xl\:hover\:text-color-silver:hover{color:#bbb}.xl\:hover\:text-color-alto:hover{color:#dadada}.xl\:hover\:text-color-mercury:hover{color:#e9e9e9}.xl\:hover\:text-color-seashell:hover{color:#f1f1f1}.xl\:hover\:text-color-white:hover{color:#fff}.xl\:hover\:text-color-orient:hover{color:#005c7c}.xl\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.xl\:hover\:text-color-yellow-metal:hover{color:#807040}.xl\:hover\:text-color-kumera:hover{color:#8a741d}.xl\:hover\:text-color-olive:hover{color:#8e7100}.xl\:hover\:text-color-barley-corn:hover{color:#a0915e}.xl\:hover\:text-color-verdigris:hover{color:#494a2d}.xl\:hover\:text-color-texas:hover{color:#f9fb93}.xl\:hover\:text-color-ferra:hover{color:#634849}.xl\:hover\:text-color-cherub:hover{color:#fbe3e4}.xl\:hover\:text-color-cabbage-pont:hover{color:#454e41}.xl\:hover\:text-color-tea-green:hover{color:#cfefc2}.xl\:focus\:text-transparent:focus{color:transparent}.xl\:focus\:text-color-black:focus{color:#000}.xl\:focus\:text-color-mine-shaft:focus{color:#373737}.xl\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.xl\:focus\:text-color-emperor:focus{color:#5d5d5d}.xl\:focus\:text-color-dove-gray:focus{color:#646464}.xl\:focus\:text-color-boulder:focus{color:#7b7b7b}.xl\:focus\:text-color-silver:focus{color:#bbb}.xl\:focus\:text-color-alto:focus{color:#dadada}.xl\:focus\:text-color-mercury:focus{color:#e9e9e9}.xl\:focus\:text-color-seashell:focus{color:#f1f1f1}.xl\:focus\:text-color-white:focus{color:#fff}.xl\:focus\:text-color-orient:focus{color:#005c7c}.xl\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.xl\:focus\:text-color-yellow-metal:focus{color:#807040}.xl\:focus\:text-color-kumera:focus{color:#8a741d}.xl\:focus\:text-color-olive:focus{color:#8e7100}.xl\:focus\:text-color-barley-corn:focus{color:#a0915e}.xl\:focus\:text-color-verdigris:focus{color:#494a2d}.xl\:focus\:text-color-texas:focus{color:#f9fb93}.xl\:focus\:text-color-ferra:focus{color:#634849}.xl\:focus\:text-color-cherub:focus{color:#fbe3e4}.xl\:focus\:text-color-cabbage-pont:focus{color:#454e41}.xl\:focus\:text-color-tea-green:focus{color:#cfefc2}.xl\:text-3xs{font-size:.667rem}.xl\:text-2xs{font-size:.8rem}.xl\:text-xs{font-size:.867rem}.xl\:text-sm{font-size:.933rem}.xl\:text-base{font-size:15px}.xl\:text-lg{font-size:1.067rem}.xl\:text-xl{font-size:1.2rem}.xl\:text-2xl{font-size:1.267rem}.xl\:text-3xl{font-size:1.933rem}.xl\:italic{font-style:italic}.xl\:roman{font-style:normal}.xl\:uppercase{text-transform:uppercase}.xl\:lowercase{text-transform:lowercase}.xl\:capitalize{text-transform:capitalize}.xl\:normal-case{text-transform:none}.xl\:underline{text-decoration:underline}.xl\:line-through{text-decoration:line-through}.xl\:no-underline{text-decoration:none}.xl\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xl\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.xl\:hover\:italic:hover{font-style:italic}.xl\:hover\:roman:hover{font-style:normal}.xl\:hover\:uppercase:hover{text-transform:uppercase}.xl\:hover\:lowercase:hover{text-transform:lowercase}.xl\:hover\:capitalize:hover{text-transform:capitalize}.xl\:hover\:normal-case:hover{text-transform:none}.xl\:hover\:underline:hover{text-decoration:underline}.xl\:hover\:line-through:hover{text-decoration:line-through}.xl\:hover\:no-underline:hover{text-decoration:none}.xl\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xl\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.xl\:focus\:italic:focus{font-style:italic}.xl\:focus\:roman:focus{font-style:normal}.xl\:focus\:uppercase:focus{text-transform:uppercase}.xl\:focus\:lowercase:focus{text-transform:lowercase}.xl\:focus\:capitalize:focus{text-transform:capitalize}.xl\:focus\:normal-case:focus{text-transform:none}.xl\:focus\:underline:focus{text-decoration:underline}.xl\:focus\:line-through:focus{text-decoration:line-through}.xl\:focus\:no-underline:focus{text-decoration:none}.xl\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xl\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.xl\:tracking-tight{letter-spacing:-.05em}.xl\:tracking-normal{letter-spacing:0}.xl\:tracking-wide{letter-spacing:.05em}.xl\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.xl\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.xl\:align-baseline{vertical-align:baseline}.xl\:align-top{vertical-align:top}.xl\:align-middle{vertical-align:middle}.xl\:align-bottom{vertical-align:bottom}.xl\:align-text-top{vertical-align:text-top}.xl\:align-text-bottom{vertical-align:text-bottom}.xl\:visible{visibility:visible}.xl\:invisible{visibility:hidden}.xl\:whitespace-normal{white-space:normal}.xl\:whitespace-no-wrap{white-space:nowrap}.xl\:whitespace-pre{white-space:pre}.xl\:whitespace-pre-line{white-space:pre-line}.xl\:whitespace-pre-wrap{white-space:pre-wrap}.xl\:break-words{word-wrap:break-word}.xl\:break-normal{word-wrap:normal}.xl\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xl\:w-1{width:.25rem}.xl\:w-2{width:.5rem}.xl\:w-3{width:.75rem}.xl\:w-4{width:1rem}.xl\:w-5{width:1.25rem}.xl\:w-6{width:1.5rem}.xl\:w-8{width:2rem}.xl\:w-10{width:2.5rem}.xl\:w-12{width:3rem}.xl\:w-16{width:4rem}.xl\:w-24{width:6rem}.xl\:w-32{width:8rem}.xl\:w-40{width:10rem}.xl\:w-48{width:12rem}.xl\:w-56{width:14rem}.xl\:w-64{width:16rem}.xl\:w-auto{width:auto}.xl\:w-px{width:1px}.xl\:w-1\/2{width:50%}.xl\:w-1\/3{width:33.33333%}.xl\:w-2\/3{width:66.66667%}.xl\:w-1\/4{width:25%}.xl\:w-3\/4{width:75%}.xl\:w-1\/5{width:20%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-4\/5{width:80%}.xl\:w-1\/6{width:16.66667%}.xl\:w-1\/8{width:12.5%}.xl\:w-1\/10{width:10%}.xl\:w-1\/12{width:8.33333%}.xl\:w-full{width:100%}.xl\:w-screen{width:100vw}.xl\:z-0{z-index:0}.xl\:z-10{z-index:10}.xl\:z-20{z-index:20}.xl\:z-30{z-index:30}.xl\:z-40{z-index:40}.xl\:z-50{z-index:50}.xl\:z-auto{z-index:auto}.xl\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.xl\:text-shadow-none{text-shadow:none}.xl\:gradient-grey,.xl\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.xl\:gradient-grey-reversed,.xl\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.xl\:pin-t8{top:2rem}.xl\:pin-t16{top:4rem}.xl\:pin-b24{bottom:12rem}.xl\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.xl\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.xl\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1em}.svg-inline--fa.fa-stack-2x{height:2em;width:2em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}#superfish-main li a{color:#fff!important}#superfish-main li a:hover{color:#fff!important}#superfish-main li ul{margin-top:-1px!important}.list-reset li a{color:#fff!important}.list-reset li a:hover{color:#fff!important}a .nav-link{color:#fff!important}a .navbar-brand{color:#fff!important}.nav-link:visited{color:#fff!important}.nav-link:hover{color:#fff!important}#edit-submit-search-solr{margin-top:3px!important;height:44px}.pt-1{padding-top:.25rem!important}.pt-4{padding-top:1rem!important}.pb-3{padding-bottom:.75rem!important}.pr-3 .border{border:none!important}.nav-item a{color:#fff!important}#navbar-collection-content input{border-radius:0;border:none}#navbar-collection-content button{border-radius:1px;background-color:#8a741d;color:#fff}.container-fluid{padding-left:0;padding-right:0}.navbar-brand{color:#fff!important;font-size:1rem!important;font-weight:700}.navbar-brand:hover{color:#fff!important}button{background-color:#8a741d!important;color:#fff!important;border-radius:0!important}.navbar-toggler{background-color:initial!important;padding-right:4px!important}.navbar-toggler:focus{box-shadow:none!important}.navbar-toggler[aria-expanded=false] .navbar-toggler-icon .hamburger-close{display:none}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon .hamburger-open{display:none}@media(min-width:992px){.container-collection{max-height:70px!important}}@media(max-width:992px){.container-collection{max-width:none!important;padding-left:0!important;padding-right:0!important}.navbar-brand{padding-left:1rem!important}.navbar-search{padding:1rem!important;padding-top:1.5rem!important;border-top:1px solid #a0915e}.navbar-toggler{padding-right:1.3rem!important}.nav-item{font-weight:700;border-top:1px solid #a0915e;padding:1rem!important}.nav-item:first-child{border:none!important}} \ No newline at end of file +html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}footer,header,nav{display:block}h1{font-size:2em;margin:.67em 0}main{display:block}a{background-color:initial;-webkit-text-decoration-skip:objects}b{font-weight:inherit}b{font-weight:bolder}sub{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}video{display:inline-block}img{border-style:none}svg:not(:root){overflow:hidden}button,input,select{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}menu{display:block}canvas{display:inline-block}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}dd,h1,h2,h3,h4,h5,h6,p{margin:0}button{background:0 0;padding:0}button:focus{outline:5px auto -webkit-focus-ring-color}ol,ul{margin:0}*,::after,::before{border-width:0;border-style:solid;border-color:initial}img{border-style:solid}[type=button],[type=reset],[type=submit],button{border-radius:0}img{max-width:100%;height:auto}button,input,select{font-family:inherit}input::-webkit-input-placeholder{color:inherit;opacity:.5}input::-moz-placeholder{color:inherit;opacity:.5}input::-ms-input-placeholder{color:inherit;opacity:.5}input::placeholder{color:inherit;opacity:.5}[role=button],button{cursor:pointer}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1rem;padding-left:1rem}@media(min-width:576px){.container{max-width:576px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:992px){.container{max-width:992px}}@media(min-width:1200px){.container{max-width:1200px}}.list-reset{list-style:none;padding:0}.bg-transparent{background-color:initial}.bg-color-mine-shaft{background-color:#373737}.bg-color-emperor{background-color:#5d5d5d}.bg-color-silver{background-color:#bbb}.bg-color-alto{background-color:#dadada}.bg-color-mercury{background-color:#e9e9e9}.bg-color-white{background-color:#fff}.bg-color-yellow-metal{background-color:#807040}.bg-color-kumera{background-color:#8a741d}.bg-color-barley-corn{background-color:#a0915e}.group:hover .group-hover\:bg-transparent{background-color:initial}.group:hover .group-hover\:bg-color-black{background-color:#000}.group:hover .group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .group-hover\:bg-color-silver{background-color:#bbb}.group:hover .group-hover\:bg-color-alto{background-color:#dadada}.group:hover .group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .group-hover\:bg-color-white{background-color:#fff}.group:hover .group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .group-hover\:bg-color-ferra{background-color:#634849}.group:hover .group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .group-hover\:bg-color-tea-green{background-color:#cfefc2}.hover\:bg-transparent:hover{background-color:initial}.hover\:bg-color-black:hover{background-color:#000}.hover\:bg-color-mine-shaft:hover{background-color:#373737}.hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.hover\:bg-color-emperor:hover{background-color:#5d5d5d}.hover\:bg-color-dove-gray:hover{background-color:#646464}.hover\:bg-color-boulder:hover{background-color:#7b7b7b}.hover\:bg-color-silver:hover{background-color:#bbb}.hover\:bg-color-alto:hover{background-color:#dadada}.hover\:bg-color-mercury:hover{background-color:#e9e9e9}.hover\:bg-color-seashell:hover{background-color:#f1f1f1}.hover\:bg-color-white:hover{background-color:#fff}.hover\:bg-color-orient:hover{background-color:#005c7c}.hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.hover\:bg-color-yellow-metal:hover{background-color:#807040}.hover\:bg-color-kumera:hover{background-color:#8a741d}.hover\:bg-color-olive:hover{background-color:#8e7100}.hover\:bg-color-barley-corn:hover{background-color:#a0915e}.hover\:bg-color-verdigris:hover{background-color:#494a2d}.hover\:bg-color-texas:hover{background-color:#f9fb93}.hover\:bg-color-ferra:hover{background-color:#634849}.hover\:bg-color-cherub:hover{background-color:#fbe3e4}.hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.hover\:bg-color-tea-green:hover{background-color:#cfefc2}.bg-bottom{background-position:bottom}.bg-center{background-position:50%}.bg-right{background-position:100%}.bg-right-bottom{background-position:100% 100%}.bg-auto{background-size:auto}.border-transparent{border-color:transparent}.border-color-mine-shaft{border-color:#373737}.border-color-emperor{border-color:#5d5d5d}.border-color-silver{border-color:#bbb}.border-color-alto{border-color:#dadada}.border-color-mercury{border-color:#e9e9e9}.border-color-white{border-color:#fff}.border-color-yellow-metal{border-color:#807040}.border-color-kumera{border-color:#8a741d}.border-color-barley-corn{border-color:#a0915e}.hover\:border-transparent:hover{border-color:transparent}.hover\:border-color-black:hover{border-color:#000}.hover\:border-color-mine-shaft:hover{border-color:#373737}.hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.hover\:border-color-emperor:hover{border-color:#5d5d5d}.hover\:border-color-dove-gray:hover{border-color:#646464}.hover\:border-color-boulder:hover{border-color:#7b7b7b}.hover\:border-color-silver:hover{border-color:#bbb}.hover\:border-color-alto:hover{border-color:#dadada}.hover\:border-color-mercury:hover{border-color:#e9e9e9}.hover\:border-color-seashell:hover{border-color:#f1f1f1}.hover\:border-color-white:hover{border-color:#fff}.hover\:border-color-orient:hover{border-color:#005c7c}.hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.hover\:border-color-yellow-metal:hover{border-color:#807040}.hover\:border-color-kumera:hover{border-color:#8a741d}.hover\:border-color-olive:hover{border-color:#8e7100}.hover\:border-color-barley-corn:hover{border-color:#a0915e}.hover\:border-color-verdigris:hover{border-color:#494a2d}.hover\:border-color-texas:hover{border-color:#f9fb93}.hover\:border-color-ferra:hover{border-color:#634849}.hover\:border-color-cherub:hover{border-color:#fbe3e4}.hover\:border-color-cabbage-pont:hover{border-color:#454e41}.hover\:border-color-tea-green:hover{border-color:#cfefc2}.border-none{border-style:none}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-8{border-width:8px}.border{border-width:1px}.border-t-0{border-top-width:0}.border-r-0{border-right-width:0}.border-b-0{border-bottom-width:0}.border-l-0{border-left-width:0}.border-t-2{border-top-width:2px}.border-r-2{border-right-width:2px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-t-4{border-top-width:4px}.border-r-4{border-right-width:4px}.border-b-4{border-bottom-width:4px}.border-l-4{border-left-width:4px}.border-t-8{border-top-width:8px}.border-r-8{border-right-width:8px}.border-b-8{border-bottom-width:8px}.border-l-8{border-left-width:8px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.hidden{display:none}.hover\:block:hover{display:block}.hover\:inline-block:hover{display:inline-block}.hover\:inline:hover{display:inline}.hover\:table:hover{display:table}.hover\:table-row:hover{display:table-row}.hover\:table-cell:hover{display:table-cell}.hover\:hidden:hover{display:none}.flex{display:flex}.inline-flex{display:inline-flex}.items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content-center{-ms-flex-line-pack:center;align-content:center}.content-end{-ms-flex-line-pack:end;align-content:flex-end}.content-between{-ms-flex-line-pack:justify;align-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.float-right{float:right}.float-none{float:none}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-normal{font-weight:400}.font-bold{font-weight:700}.hover\:font-hairline:hover{font-weight:100}.hover\:font-thin:hover{font-weight:200}.hover\:font-light:hover{font-weight:300}.hover\:font-normal:hover{font-weight:400}.hover\:font-medium:hover{font-weight:500}.hover\:font-semibold:hover{font-weight:600}.hover\:font-bold:hover{font-weight:700}.hover\:font-extrabold:hover{font-weight:800}.hover\:font-black:hover{font-weight:900}.h-1{height:.25rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-24{height:6rem}.h-32{height:8rem}.h-48{height:12rem}.h-64{height:16rem}.h-auto{height:auto}.h-px{height:1px}.h-full{height:100%}.leading-none{line-height:1}.leading-normal{line-height:1.5}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-8{margin:2rem}.m-10{margin:2.5rem}.m-12{margin:3rem}.m-16{margin:4rem}.m-20{margin:5rem}.m-24{margin:6rem}.m-32{margin:8rem}.m-auto{margin:auto}.m-px{margin:1px}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-24{margin-top:6rem;margin-bottom:6rem}.my-32{margin-top:8rem;margin-bottom:8rem}.my-auto{margin-top:auto;margin-bottom:auto}.my-px{margin-top:1px;margin-bottom:1px}.mt-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mr-5{margin-right:1.25rem}.mb-5{margin-bottom:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-8{margin-bottom:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mb-10{margin-bottom:2.5rem}.mt-12{margin-top:3rem}.mr-12{margin-right:3rem}.mb-12{margin-bottom:3rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.mb-16{margin-bottom:4rem}.mt-20{margin-top:5rem}.mr-20{margin-right:5rem}.mb-20{margin-bottom:5rem}.mt-24{margin-top:6rem}.mr-24{margin-right:6rem}.mb-24{margin-bottom:6rem}.mt-32{margin-top:8rem}.mr-32{margin-right:8rem}.mb-32{margin-bottom:8rem}.mt-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-auto{margin-bottom:auto}.mt-px{margin-top:1px}.mr-px{margin-right:1px}.mb-px{margin-bottom:1px}.max-h-full{max-height:100%}.max-w-sm{max-width:576px}.max-w-md{max-width:768px}.max-w-lg{max-width:992px}.max-w-xl{max-width:1200px}.max-w-full{max-width:100%}.min-h-0{min-height:0}.min-h-full{min-height:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.-m-0{margin:0}.-m-1{margin:-.25rem}.-m-2{margin:-.5rem}.-m-3{margin:-.75rem}.-m-4{margin:-1rem}.-m-5{margin:-1.25rem}.-m-6{margin:-1.5rem}.-m-8{margin:-2rem}.-m-10{margin:-2.5rem}.-m-12{margin:-3rem}.-m-16{margin:-4rem}.-m-20{margin:-5rem}.-m-24{margin:-6rem}.-m-32{margin:-8rem}.-m-px{margin:-1px}.-my-0{margin-top:0;margin-bottom:0}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.-my-8{margin-top:-2rem;margin-bottom:-2rem}.-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.-my-12{margin-top:-3rem;margin-bottom:-3rem}.-my-16{margin-top:-4rem;margin-bottom:-4rem}.-my-20{margin-top:-5rem;margin-bottom:-5rem}.-my-24{margin-top:-6rem;margin-bottom:-6rem}.-my-32{margin-top:-8rem;margin-bottom:-8rem}.-my-px{margin-top:-1px;margin-bottom:-1px}.-mt-0{margin-top:0}.-mr-0{margin-right:0}.-mb-0{margin-bottom:0}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mt-2{margin-top:-.5rem}.-mr-2{margin-right:-.5rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-3{margin-bottom:-.75rem}.-mt-4{margin-top:-1rem}.-mr-4{margin-right:-1rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-mr-5{margin-right:-1.25rem}.-mb-5{margin-bottom:-1.25rem}.-mt-6{margin-top:-1.5rem}.-mr-6{margin-right:-1.5rem}.-mb-6{margin-bottom:-1.5rem}.-mt-8{margin-top:-2rem}.-mr-8{margin-right:-2rem}.-mb-8{margin-bottom:-2rem}.-mt-10{margin-top:-2.5rem}.-mr-10{margin-right:-2.5rem}.-mb-10{margin-bottom:-2.5rem}.-mt-12{margin-top:-3rem}.-mr-12{margin-right:-3rem}.-mb-12{margin-bottom:-3rem}.-mt-16{margin-top:-4rem}.-mr-16{margin-right:-4rem}.-mb-16{margin-bottom:-4rem}.-mt-20{margin-top:-5rem}.-mr-20{margin-right:-5rem}.-mb-20{margin-bottom:-5rem}.-mt-24{margin-top:-6rem}.-mr-24{margin-right:-6rem}.-mb-24{margin-bottom:-6rem}.-mt-32{margin-top:-8rem}.-mr-32{margin-right:-8rem}.-mb-32{margin-bottom:-8rem}.-mt-px{margin-top:-1px}.-mr-px{margin-right:-1px}.-mb-px{margin-bottom:-1px}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.group:hover .group-hover\:opacity-0{opacity:0}.group:hover .group-hover\:opacity-25{opacity:.25}.group:hover .group-hover\:opacity-50{opacity:.5}.group:hover .group-hover\:opacity-75{opacity:.75}.group:hover .group-hover\:opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-16{padding:4rem}.p-20{padding:5rem}.p-24{padding:6rem}.p-32{padding:8rem}.p-px{padding:1px}.py-0{padding-top:0;padding-bottom:0}.px-0{padding-left:0;padding-right:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.px-16{padding-left:4rem;padding-right:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.px-20{padding-left:5rem;padding-right:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.px-24{padding-left:6rem;padding-right:6rem}.py-32{padding-top:8rem;padding-bottom:8rem}.px-32{padding-left:8rem;padding-right:8rem}.py-px{padding-top:1px;padding-bottom:1px}.px-px{padding-left:1px;padding-right:1px}.pt-0{padding-top:0}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pr-5{padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-8{padding-top:2rem}.pr-8{padding-right:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pr-10{padding-right:2.5rem}.pb-10{padding-bottom:2.5rem}.pl-10{padding-left:2.5rem}.pt-12{padding-top:3rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-12{padding-left:3rem}.pt-16{padding-top:4rem}.pr-16{padding-right:4rem}.pb-16{padding-bottom:4rem}.pl-16{padding-left:4rem}.pt-20{padding-top:5rem}.pr-20{padding-right:5rem}.pb-20{padding-bottom:5rem}.pl-20{padding-left:5rem}.pt-24{padding-top:6rem}.pr-24{padding-right:6rem}.pb-24{padding-bottom:6rem}.pl-24{padding-left:6rem}.pt-32{padding-top:8rem}.pr-32{padding-right:8rem}.pb-32{padding-bottom:8rem}.pl-32{padding-left:8rem}.pt-px{padding-top:1px}.pr-px{padding-right:1px}.pb-px{padding-bottom:1px}.pl-px{padding-left:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.pin-none{top:auto;right:auto;bottom:auto;left:auto}.pin{top:0;right:0;bottom:0;left:0}.pin-x{right:0;left:0}.pin-t{top:0}.pin-r{right:0}.pin-b{bottom:0}.pin-l{left:0}.shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.fill-current{fill:currentColor}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-transparent{color:transparent}.text-color-mine-shaft{color:#373737}.text-color-emperor{color:#5d5d5d}.text-color-silver{color:#bbb}.text-color-alto{color:#dadada}.text-color-mercury{color:#e9e9e9}.text-color-white{color:#fff}.text-color-yellow-metal{color:#807040}.text-color-kumera{color:#8a741d}.text-color-barley-corn{color:#a0915e}.group:hover .group-hover\:text-transparent{color:transparent}.group:hover .group-hover\:text-color-black{color:#000}.group:hover .group-hover\:text-color-mine-shaft{color:#373737}.group:hover .group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .group-hover\:text-color-dove-gray{color:#646464}.group:hover .group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .group-hover\:text-color-silver{color:#bbb}.group:hover .group-hover\:text-color-alto{color:#dadada}.group:hover .group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .group-hover\:text-color-white{color:#fff}.group:hover .group-hover\:text-color-orient{color:#005c7c}.group:hover .group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .group-hover\:text-color-yellow-metal{color:#807040}.group:hover .group-hover\:text-color-kumera{color:#8a741d}.group:hover .group-hover\:text-color-olive{color:#8e7100}.group:hover .group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .group-hover\:text-color-verdigris{color:#494a2d}.group:hover .group-hover\:text-color-texas{color:#f9fb93}.group:hover .group-hover\:text-color-ferra{color:#634849}.group:hover .group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .group-hover\:text-color-tea-green{color:#cfefc2}.hover\:text-transparent:hover{color:transparent}.hover\:text-color-black:hover{color:#000}.hover\:text-color-mine-shaft:hover{color:#373737}.hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.hover\:text-color-emperor:hover{color:#5d5d5d}.hover\:text-color-dove-gray:hover{color:#646464}.hover\:text-color-boulder:hover{color:#7b7b7b}.hover\:text-color-silver:hover{color:#bbb}.hover\:text-color-alto:hover{color:#dadada}.hover\:text-color-mercury:hover{color:#e9e9e9}.hover\:text-color-seashell:hover{color:#f1f1f1}.hover\:text-color-white:hover{color:#fff}.hover\:text-color-orient:hover{color:#005c7c}.hover\:text-color-shakespeare:hover{color:#4ab9d4}.hover\:text-color-yellow-metal:hover{color:#807040}.hover\:text-color-kumera:hover{color:#8a741d}.hover\:text-color-olive:hover{color:#8e7100}.hover\:text-color-barley-corn:hover{color:#a0915e}.hover\:text-color-verdigris:hover{color:#494a2d}.hover\:text-color-texas:hover{color:#f9fb93}.hover\:text-color-ferra:hover{color:#634849}.hover\:text-color-cherub:hover{color:#fbe3e4}.hover\:text-color-cabbage-pont:hover{color:#454e41}.hover\:text-color-tea-green:hover{color:#cfefc2}.text-3xs{font-size:.667rem}.text-2xs{font-size:.8rem}.text-xs{font-size:.867rem}.text-sm{font-size:.933rem}.text-base{font-size:15px}.text-lg{font-size:1.067rem}.text-xl{font-size:1.2rem}.text-2xl{font-size:1.267rem}.text-3xl{font-size:1.933rem}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:italic:hover{font-style:italic}.hover\:roman:hover{font-style:normal}.hover\:uppercase:hover{text-transform:uppercase}.hover\:lowercase:hover{text-transform:lowercase}.hover\:capitalize:hover{text-transform:capitalize}.hover\:normal-case:hover{text-transform:none}.hover\:underline:hover{text-decoration:underline}.hover\:line-through:hover{text-decoration:line-through}.hover\:no-underline:hover{text-decoration:none}.hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.visible{visibility:visible}.w-1{width:.25rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-32{width:8rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-px{width:1px}.w-1\/2{width:50%}.w-1\/3{width:33.33333%}.w-2\/3{width:66.66667%}.w-1\/4{width:25%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-1\/6{width:16.66667%}.w-1\/8{width:12.5%}.w-1\/10{width:10%}.w-1\/12{width:8.33333%}.w-full{width:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-auto{z-index:auto}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-book-webfont.eot);src:url(/fonts/cartogothicstd-book-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-book-webfont.woff)format('woff'),url(/fonts/cartogothicstd-book-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-book-webfont.svg#cartogothic_stdregular)format('svg');font-weight:400;font-style:normal}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-italic-webfont.eot);src:url(/fonts/cartogothicstd-italic-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-italic-webfont.woff)format('woff'),url(/fonts/cartogothicstd-italic-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-italic-webfont.svg#cartogothic_stditalic)format('svg');font-weight:400;font-style:italic}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-bold-webfont.eot);src:url(/fonts/cartogothicstd-bold-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-bold-webfont.woff)format('woff'),url(/fonts/cartogothicstd-bold-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-bold-webfont.svg#cartogothic_stdbold)format('svg');font-weight:700;font-style:normal}@font-face{font-family:cartogothic;src:url(/fonts/cartogothicstd-bolditalic-webfont.eot);src:url(/fonts/cartogothicstd-bolditalic-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-bolditalic-webfont.woff)format('woff'),url(/fonts/cartogothicstd-bolditalic-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-bolditalic-webfont.svg#cartogothic_stdbold_italic)format('svg');font-weight:700;font-style:italic}@font-face{font-family:cartogothic_regular;src:url(/fonts/cartogothicstd-book-webfont.eot);src:url(/fonts/cartogothicstd-book-webfont.eot#iefix)format('embedded-opentype'),url(/fonts/cartogothicstd-book-webfont.woff)format('woff'),url(/fonts/cartogothicstd-book-webfont.ttf)format('truetype'),url(/fonts/cartogothicstd-book-webfont.svg#cartogothic_stdregular)format('svg');font-weight:400;font-style:normal}h1,h2,h3,h4,h5,h6{color:#5d5d5d}a.text-color-kumera:hover{color:#807040}#show-form.active,a.bg-color-kumera:hover,input.bg-color-kumera:hover{background-color:#807040}.press-release--image-grid a{word-wrap:break-word}select{width:100%;border-width:0;background-color:initial;border-radius:0;color:#8a741d;-webkit-appearance:none}select:focus{outline:0}option:hover{background-color:#8a741d;color:#fff}input:focus{outline:0}input:-internal-autofill-selected,input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1e3px rgba(138,116,29,.5)inset}.views-exposed-form .form-submit{clear:both;display:block}.select--single input:not(".chosen-search-input"){display:none}.select--single .selected,.select--single li:hover{background-color:#dadada}.header .views-exposed-form .form-submit{display:none}.chosen-container{width:100%!important}.chosen-container .chosen-single{background:0 0;border:none;border-radius:0}@media screen and (max-width:991px){.header .views-exposed-form .container{max-width:none!important}}@media screen and (min-width:992px){.header .views-exposed-form .form-submit{display:block}}#navbar .views-exposed-form .js-form-type-select{display:none}h2.title{color:#000;display:inline-block;margin:14px 0 4px;padding:0}::-moz-selection{background-color:#4ab9d4;color:#fff;text-shadow:none;outline:0}::selection{background-color:#4ab9d4;color:#fff;text-shadow:none;outline:0}.text-shadow{text-shadow:1px 1px rgba(#fff,1)}.text-shadow-none{text-shadow:none}.gradient-grey,.hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.pin-t8{top:2rem}.pin-t16{top:4rem}.pin-b24{bottom:12rem}.sm-container{margin:0 auto;max-width:970px}.container-sm{max-width:680px}.collection-label{display:inline-block;width:200px}.bg-color-transparent{background:rgba(0,0,0,.25)}.bg-color-transparent:hover{background:rgba(0,0,0,.5)}.sf-main .pin-t16{top:4.4rem}.eu-cookie-compliance-banner h2{font-weight:400}.eu-cookie-compliance-banner p{font-weight:400;font-size:14px}@media(min-width:992px){#block-content-bottom-navigation{display:none}}@media(max-width:575px){.to-sm\:list-reset{list-style:none;padding:0}.to-sm\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.to-sm\:bg-fixed{background-attachment:fixed}.to-sm\:bg-local{background-attachment:local}.to-sm\:bg-scroll{background-attachment:scroll}.to-sm\:bg-transparent{background-color:initial}.to-sm\:bg-color-black{background-color:#000}.to-sm\:bg-color-mine-shaft{background-color:#373737}.to-sm\:bg-color-fuscous-gray{background-color:#4c4d4b}.to-sm\:bg-color-emperor{background-color:#5d5d5d}.to-sm\:bg-color-dove-gray{background-color:#646464}.to-sm\:bg-color-boulder{background-color:#7b7b7b}.to-sm\:bg-color-silver{background-color:#bbb}.to-sm\:bg-color-alto{background-color:#dadada}.to-sm\:bg-color-mercury{background-color:#e9e9e9}.to-sm\:bg-color-seashell{background-color:#f1f1f1}.to-sm\:bg-color-white{background-color:#fff}.to-sm\:bg-color-orient{background-color:#005c7c}.to-sm\:bg-color-shakespeare{background-color:#4ab9d4}.to-sm\:bg-color-yellow-metal{background-color:#807040}.to-sm\:bg-color-kumera{background-color:#8a741d}.to-sm\:bg-color-olive{background-color:#8e7100}.to-sm\:bg-color-barley-corn{background-color:#a0915e}.to-sm\:bg-color-verdigris{background-color:#494a2d}.to-sm\:bg-color-texas{background-color:#f9fb93}.to-sm\:bg-color-ferra{background-color:#634849}.to-sm\:bg-color-cherub{background-color:#fbe3e4}.to-sm\:bg-color-cabbage-pont{background-color:#454e41}.to-sm\:bg-color-tea-green{background-color:#cfefc2}.group:hover .to-sm\:group-hover\:bg-transparent{background-color:initial}.group:hover .to-sm\:group-hover\:bg-color-black{background-color:#000}.group:hover .to-sm\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .to-sm\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .to-sm\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .to-sm\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .to-sm\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .to-sm\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .to-sm\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .to-sm\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .to-sm\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .to-sm\:group-hover\:bg-color-white{background-color:#fff}.group:hover .to-sm\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .to-sm\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .to-sm\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .to-sm\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .to-sm\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .to-sm\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .to-sm\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .to-sm\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .to-sm\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .to-sm\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .to-sm\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .to-sm\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.to-sm\:hover\:bg-transparent:hover{background-color:initial}.to-sm\:hover\:bg-color-black:hover{background-color:#000}.to-sm\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.to-sm\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.to-sm\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.to-sm\:hover\:bg-color-dove-gray:hover{background-color:#646464}.to-sm\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.to-sm\:hover\:bg-color-silver:hover{background-color:#bbb}.to-sm\:hover\:bg-color-alto:hover{background-color:#dadada}.to-sm\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.to-sm\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.to-sm\:hover\:bg-color-white:hover{background-color:#fff}.to-sm\:hover\:bg-color-orient:hover{background-color:#005c7c}.to-sm\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.to-sm\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.to-sm\:hover\:bg-color-kumera:hover{background-color:#8a741d}.to-sm\:hover\:bg-color-olive:hover{background-color:#8e7100}.to-sm\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.to-sm\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.to-sm\:hover\:bg-color-texas:hover{background-color:#f9fb93}.to-sm\:hover\:bg-color-ferra:hover{background-color:#634849}.to-sm\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.to-sm\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.to-sm\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.to-sm\:focus\:bg-transparent:focus{background-color:initial}.to-sm\:focus\:bg-color-black:focus{background-color:#000}.to-sm\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.to-sm\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.to-sm\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.to-sm\:focus\:bg-color-dove-gray:focus{background-color:#646464}.to-sm\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.to-sm\:focus\:bg-color-silver:focus{background-color:#bbb}.to-sm\:focus\:bg-color-alto:focus{background-color:#dadada}.to-sm\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.to-sm\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.to-sm\:focus\:bg-color-white:focus{background-color:#fff}.to-sm\:focus\:bg-color-orient:focus{background-color:#005c7c}.to-sm\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.to-sm\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.to-sm\:focus\:bg-color-kumera:focus{background-color:#8a741d}.to-sm\:focus\:bg-color-olive:focus{background-color:#8e7100}.to-sm\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.to-sm\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.to-sm\:focus\:bg-color-texas:focus{background-color:#f9fb93}.to-sm\:focus\:bg-color-ferra:focus{background-color:#634849}.to-sm\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.to-sm\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.to-sm\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.to-sm\:bg-bottom{background-position:bottom}.to-sm\:bg-center{background-position:50%}.to-sm\:bg-left{background-position:0}.to-sm\:bg-left-bottom{background-position:0 100%}.to-sm\:bg-left-top{background-position:0 0}.to-sm\:bg-right{background-position:100%}.to-sm\:bg-right-bottom{background-position:100% 100%}.to-sm\:bg-right-top{background-position:100% 0}.to-sm\:bg-top{background-position:top}.to-sm\:bg-repeat{background-repeat:repeat}.to-sm\:bg-no-repeat{background-repeat:no-repeat}.to-sm\:bg-repeat-x{background-repeat:repeat-x}.to-sm\:bg-repeat-y{background-repeat:repeat-y}.to-sm\:bg-auto{background-size:auto}.to-sm\:bg-cover{background-size:cover}.to-sm\:bg-contain{background-size:contain}.to-sm\:border-transparent{border-color:transparent}.to-sm\:border-color-black{border-color:#000}.to-sm\:border-color-mine-shaft{border-color:#373737}.to-sm\:border-color-fuscous-gray{border-color:#4c4d4b}.to-sm\:border-color-emperor{border-color:#5d5d5d}.to-sm\:border-color-dove-gray{border-color:#646464}.to-sm\:border-color-boulder{border-color:#7b7b7b}.to-sm\:border-color-silver{border-color:#bbb}.to-sm\:border-color-alto{border-color:#dadada}.to-sm\:border-color-mercury{border-color:#e9e9e9}.to-sm\:border-color-seashell{border-color:#f1f1f1}.to-sm\:border-color-white{border-color:#fff}.to-sm\:border-color-orient{border-color:#005c7c}.to-sm\:border-color-shakespeare{border-color:#4ab9d4}.to-sm\:border-color-yellow-metal{border-color:#807040}.to-sm\:border-color-kumera{border-color:#8a741d}.to-sm\:border-color-olive{border-color:#8e7100}.to-sm\:border-color-barley-corn{border-color:#a0915e}.to-sm\:border-color-verdigris{border-color:#494a2d}.to-sm\:border-color-texas{border-color:#f9fb93}.to-sm\:border-color-ferra{border-color:#634849}.to-sm\:border-color-cherub{border-color:#fbe3e4}.to-sm\:border-color-cabbage-pont{border-color:#454e41}.to-sm\:border-color-tea-green{border-color:#cfefc2}.to-sm\:hover\:border-transparent:hover{border-color:transparent}.to-sm\:hover\:border-color-black:hover{border-color:#000}.to-sm\:hover\:border-color-mine-shaft:hover{border-color:#373737}.to-sm\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.to-sm\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.to-sm\:hover\:border-color-dove-gray:hover{border-color:#646464}.to-sm\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.to-sm\:hover\:border-color-silver:hover{border-color:#bbb}.to-sm\:hover\:border-color-alto:hover{border-color:#dadada}.to-sm\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.to-sm\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.to-sm\:hover\:border-color-white:hover{border-color:#fff}.to-sm\:hover\:border-color-orient:hover{border-color:#005c7c}.to-sm\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.to-sm\:hover\:border-color-yellow-metal:hover{border-color:#807040}.to-sm\:hover\:border-color-kumera:hover{border-color:#8a741d}.to-sm\:hover\:border-color-olive:hover{border-color:#8e7100}.to-sm\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.to-sm\:hover\:border-color-verdigris:hover{border-color:#494a2d}.to-sm\:hover\:border-color-texas:hover{border-color:#f9fb93}.to-sm\:hover\:border-color-ferra:hover{border-color:#634849}.to-sm\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.to-sm\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.to-sm\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.to-sm\:focus\:border-transparent:focus{border-color:transparent}.to-sm\:focus\:border-color-black:focus{border-color:#000}.to-sm\:focus\:border-color-mine-shaft:focus{border-color:#373737}.to-sm\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.to-sm\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.to-sm\:focus\:border-color-dove-gray:focus{border-color:#646464}.to-sm\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.to-sm\:focus\:border-color-silver:focus{border-color:#bbb}.to-sm\:focus\:border-color-alto:focus{border-color:#dadada}.to-sm\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.to-sm\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.to-sm\:focus\:border-color-white:focus{border-color:#fff}.to-sm\:focus\:border-color-orient:focus{border-color:#005c7c}.to-sm\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.to-sm\:focus\:border-color-yellow-metal:focus{border-color:#807040}.to-sm\:focus\:border-color-kumera:focus{border-color:#8a741d}.to-sm\:focus\:border-color-olive:focus{border-color:#8e7100}.to-sm\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.to-sm\:focus\:border-color-verdigris:focus{border-color:#494a2d}.to-sm\:focus\:border-color-texas:focus{border-color:#f9fb93}.to-sm\:focus\:border-color-ferra:focus{border-color:#634849}.to-sm\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.to-sm\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.to-sm\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.to-sm\:rounded-none{border-radius:0}.to-sm\:rounded-sm{border-radius:.125rem}.to-sm\:rounded{border-radius:.25rem}.to-sm\:rounded-lg{border-radius:.5rem}.to-sm\:rounded-full{border-radius:9999px}.to-sm\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.to-sm\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.to-sm\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.to-sm\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.to-sm\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.to-sm\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.to-sm\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.to-sm\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.to-sm\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.to-sm\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.to-sm\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.to-sm\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.to-sm\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.to-sm\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.to-sm\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.to-sm\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.to-sm\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.to-sm\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.to-sm\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.to-sm\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.to-sm\:rounded-tl-none{border-top-left-radius:0}.to-sm\:rounded-tr-none{border-top-right-radius:0}.to-sm\:rounded-br-none{border-bottom-right-radius:0}.to-sm\:rounded-bl-none{border-bottom-left-radius:0}.to-sm\:rounded-tl-sm{border-top-left-radius:.125rem}.to-sm\:rounded-tr-sm{border-top-right-radius:.125rem}.to-sm\:rounded-br-sm{border-bottom-right-radius:.125rem}.to-sm\:rounded-bl-sm{border-bottom-left-radius:.125rem}.to-sm\:rounded-tl{border-top-left-radius:.25rem}.to-sm\:rounded-tr{border-top-right-radius:.25rem}.to-sm\:rounded-br{border-bottom-right-radius:.25rem}.to-sm\:rounded-bl{border-bottom-left-radius:.25rem}.to-sm\:rounded-tl-lg{border-top-left-radius:.5rem}.to-sm\:rounded-tr-lg{border-top-right-radius:.5rem}.to-sm\:rounded-br-lg{border-bottom-right-radius:.5rem}.to-sm\:rounded-bl-lg{border-bottom-left-radius:.5rem}.to-sm\:rounded-tl-full{border-top-left-radius:9999px}.to-sm\:rounded-tr-full{border-top-right-radius:9999px}.to-sm\:rounded-br-full{border-bottom-right-radius:9999px}.to-sm\:rounded-bl-full{border-bottom-left-radius:9999px}.to-sm\:border-solid{border-style:solid}.to-sm\:border-dashed{border-style:dashed}.to-sm\:border-dotted{border-style:dotted}.to-sm\:border-none{border-style:none}.to-sm\:border-0{border-width:0}.to-sm\:border-2{border-width:2px}.to-sm\:border-4{border-width:4px}.to-sm\:border-8{border-width:8px}.to-sm\:border{border-width:1px}.to-sm\:border-t-0{border-top-width:0}.to-sm\:border-r-0{border-right-width:0}.to-sm\:border-b-0{border-bottom-width:0}.to-sm\:border-l-0{border-left-width:0}.to-sm\:border-t-2{border-top-width:2px}.to-sm\:border-r-2{border-right-width:2px}.to-sm\:border-b-2{border-bottom-width:2px}.to-sm\:border-l-2{border-left-width:2px}.to-sm\:border-t-4{border-top-width:4px}.to-sm\:border-r-4{border-right-width:4px}.to-sm\:border-b-4{border-bottom-width:4px}.to-sm\:border-l-4{border-left-width:4px}.to-sm\:border-t-8{border-top-width:8px}.to-sm\:border-r-8{border-right-width:8px}.to-sm\:border-b-8{border-bottom-width:8px}.to-sm\:border-l-8{border-left-width:8px}.to-sm\:border-t{border-top-width:1px}.to-sm\:border-r{border-right-width:1px}.to-sm\:border-b{border-bottom-width:1px}.to-sm\:border-l{border-left-width:1px}.to-sm\:cursor-auto{cursor:auto}.to-sm\:cursor-default{cursor:default}.to-sm\:cursor-pointer{cursor:pointer}.to-sm\:cursor-wait{cursor:wait}.to-sm\:cursor-move{cursor:move}.to-sm\:cursor-not-allowed{cursor:not-allowed}.to-sm\:block{display:block}.to-sm\:inline-block{display:inline-block}.to-sm\:inline{display:inline}.to-sm\:table{display:table}.to-sm\:table-row{display:table-row}.to-sm\:table-cell{display:table-cell}.to-sm\:hidden{display:none}.to-sm\:hover\:block:hover{display:block}.to-sm\:hover\:inline-block:hover{display:inline-block}.to-sm\:hover\:inline:hover{display:inline}.to-sm\:hover\:table:hover{display:table}.to-sm\:hover\:table-row:hover{display:table-row}.to-sm\:hover\:table-cell:hover{display:table-cell}.to-sm\:hover\:hidden:hover{display:none}.to-sm\:flex{display:flex}.to-sm\:inline-flex{display:inline-flex}.to-sm\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.to-sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.to-sm\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.to-sm\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.to-sm\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.to-sm\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.to-sm\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.to-sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.to-sm\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.to-sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.to-sm\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.to-sm\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.to-sm\:self-auto{-ms-flex-item-align:auto;align-self:auto}.to-sm\:self-start{-ms-flex-item-align:start;align-self:flex-start}.to-sm\:self-end{-ms-flex-item-align:end;align-self:flex-end}.to-sm\:self-center{-ms-flex-item-align:center;align-self:center}.to-sm\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.to-sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.to-sm\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.to-sm\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.to-sm\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.to-sm\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.to-sm\:content-center{-ms-flex-line-pack:center;align-content:center}.to-sm\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.to-sm\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.to-sm\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.to-sm\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.to-sm\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.to-sm\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.to-sm\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.to-sm\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.to-sm\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.to-sm\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.to-sm\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.to-sm\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.to-sm\:float-right{float:right}.to-sm\:float-left{float:left}.to-sm\:float-none{float:none}.to-sm\:clearfix:after{content:"";display:table;clear:both}.to-sm\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.to-sm\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.to-sm\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.to-sm\:font-hairline{font-weight:100}.to-sm\:font-thin{font-weight:200}.to-sm\:font-light{font-weight:300}.to-sm\:font-normal{font-weight:400}.to-sm\:font-medium{font-weight:500}.to-sm\:font-semibold{font-weight:600}.to-sm\:font-bold{font-weight:700}.to-sm\:font-extrabold{font-weight:800}.to-sm\:font-black{font-weight:900}.to-sm\:hover\:font-hairline:hover{font-weight:100}.to-sm\:hover\:font-thin:hover{font-weight:200}.to-sm\:hover\:font-light:hover{font-weight:300}.to-sm\:hover\:font-normal:hover{font-weight:400}.to-sm\:hover\:font-medium:hover{font-weight:500}.to-sm\:hover\:font-semibold:hover{font-weight:600}.to-sm\:hover\:font-bold:hover{font-weight:700}.to-sm\:hover\:font-extrabold:hover{font-weight:800}.to-sm\:hover\:font-black:hover{font-weight:900}.to-sm\:focus\:font-hairline:focus{font-weight:100}.to-sm\:focus\:font-thin:focus{font-weight:200}.to-sm\:focus\:font-light:focus{font-weight:300}.to-sm\:focus\:font-normal:focus{font-weight:400}.to-sm\:focus\:font-medium:focus{font-weight:500}.to-sm\:focus\:font-semibold:focus{font-weight:600}.to-sm\:focus\:font-bold:focus{font-weight:700}.to-sm\:focus\:font-extrabold:focus{font-weight:800}.to-sm\:focus\:font-black:focus{font-weight:900}.to-sm\:h-1{height:.25rem}.to-sm\:h-2{height:.5rem}.to-sm\:h-3{height:.75rem}.to-sm\:h-4{height:1rem}.to-sm\:h-5{height:1.25rem}.to-sm\:h-6{height:1.5rem}.to-sm\:h-8{height:2rem}.to-sm\:h-10{height:2.5rem}.to-sm\:h-12{height:3rem}.to-sm\:h-16{height:4rem}.to-sm\:h-24{height:6rem}.to-sm\:h-32{height:8rem}.to-sm\:h-48{height:12rem}.to-sm\:h-64{height:16rem}.to-sm\:h-auto{height:auto}.to-sm\:h-px{height:1px}.to-sm\:h-full{height:100%}.to-sm\:h-screen{height:100vh}.to-sm\:h-screen-40-width{height:40vw}.to-sm\:h-screen-60-width{height:60vw}.to-sm\:h-screen-full-width{height:100vw}.to-sm\:leading-zero{line-height:0}.to-sm\:leading-none{line-height:1}.to-sm\:leading-tight{line-height:1.25}.to-sm\:leading-normal{line-height:1.5}.to-sm\:leading-loose{line-height:2}.to-sm\:m-0{margin:0}.to-sm\:m-1{margin:.25rem}.to-sm\:m-2{margin:.5rem}.to-sm\:m-3{margin:.75rem}.to-sm\:m-4{margin:1rem}.to-sm\:m-5{margin:1.25rem}.to-sm\:m-6{margin:1.5rem}.to-sm\:m-8{margin:2rem}.to-sm\:m-10{margin:2.5rem}.to-sm\:m-12{margin:3rem}.to-sm\:m-16{margin:4rem}.to-sm\:m-20{margin:5rem}.to-sm\:m-24{margin:6rem}.to-sm\:m-32{margin:8rem}.to-sm\:m-auto{margin:auto}.to-sm\:m-px{margin:1px}.to-sm\:my-0{margin-top:0;margin-bottom:0}.to-sm\:mx-0{margin-left:0;margin-right:0}.to-sm\:my-1{margin-top:.25rem;margin-bottom:.25rem}.to-sm\:mx-1{margin-left:.25rem;margin-right:.25rem}.to-sm\:my-2{margin-top:.5rem;margin-bottom:.5rem}.to-sm\:mx-2{margin-left:.5rem;margin-right:.5rem}.to-sm\:my-3{margin-top:.75rem;margin-bottom:.75rem}.to-sm\:mx-3{margin-left:.75rem;margin-right:.75rem}.to-sm\:my-4{margin-top:1rem;margin-bottom:1rem}.to-sm\:mx-4{margin-left:1rem;margin-right:1rem}.to-sm\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.to-sm\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.to-sm\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.to-sm\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.to-sm\:my-8{margin-top:2rem;margin-bottom:2rem}.to-sm\:mx-8{margin-left:2rem;margin-right:2rem}.to-sm\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.to-sm\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.to-sm\:my-12{margin-top:3rem;margin-bottom:3rem}.to-sm\:mx-12{margin-left:3rem;margin-right:3rem}.to-sm\:my-16{margin-top:4rem;margin-bottom:4rem}.to-sm\:mx-16{margin-left:4rem;margin-right:4rem}.to-sm\:my-20{margin-top:5rem;margin-bottom:5rem}.to-sm\:mx-20{margin-left:5rem;margin-right:5rem}.to-sm\:my-24{margin-top:6rem;margin-bottom:6rem}.to-sm\:mx-24{margin-left:6rem;margin-right:6rem}.to-sm\:my-32{margin-top:8rem;margin-bottom:8rem}.to-sm\:mx-32{margin-left:8rem;margin-right:8rem}.to-sm\:my-auto{margin-top:auto;margin-bottom:auto}.to-sm\:mx-auto{margin-left:auto;margin-right:auto}.to-sm\:my-px{margin-top:1px;margin-bottom:1px}.to-sm\:mx-px{margin-left:1px;margin-right:1px}.to-sm\:mt-0{margin-top:0}.to-sm\:mr-0{margin-right:0}.to-sm\:mb-0{margin-bottom:0}.to-sm\:ml-0{margin-left:0}.to-sm\:mt-1{margin-top:.25rem}.to-sm\:mr-1{margin-right:.25rem}.to-sm\:mb-1{margin-bottom:.25rem}.to-sm\:ml-1{margin-left:.25rem}.to-sm\:mt-2{margin-top:.5rem}.to-sm\:mr-2{margin-right:.5rem}.to-sm\:mb-2{margin-bottom:.5rem}.to-sm\:ml-2{margin-left:.5rem}.to-sm\:mt-3{margin-top:.75rem}.to-sm\:mr-3{margin-right:.75rem}.to-sm\:mb-3{margin-bottom:.75rem}.to-sm\:ml-3{margin-left:.75rem}.to-sm\:mt-4{margin-top:1rem}.to-sm\:mr-4{margin-right:1rem}.to-sm\:mb-4{margin-bottom:1rem}.to-sm\:ml-4{margin-left:1rem}.to-sm\:mt-5{margin-top:1.25rem}.to-sm\:mr-5{margin-right:1.25rem}.to-sm\:mb-5{margin-bottom:1.25rem}.to-sm\:ml-5{margin-left:1.25rem}.to-sm\:mt-6{margin-top:1.5rem}.to-sm\:mr-6{margin-right:1.5rem}.to-sm\:mb-6{margin-bottom:1.5rem}.to-sm\:ml-6{margin-left:1.5rem}.to-sm\:mt-8{margin-top:2rem}.to-sm\:mr-8{margin-right:2rem}.to-sm\:mb-8{margin-bottom:2rem}.to-sm\:ml-8{margin-left:2rem}.to-sm\:mt-10{margin-top:2.5rem}.to-sm\:mr-10{margin-right:2.5rem}.to-sm\:mb-10{margin-bottom:2.5rem}.to-sm\:ml-10{margin-left:2.5rem}.to-sm\:mt-12{margin-top:3rem}.to-sm\:mr-12{margin-right:3rem}.to-sm\:mb-12{margin-bottom:3rem}.to-sm\:ml-12{margin-left:3rem}.to-sm\:mt-16{margin-top:4rem}.to-sm\:mr-16{margin-right:4rem}.to-sm\:mb-16{margin-bottom:4rem}.to-sm\:ml-16{margin-left:4rem}.to-sm\:mt-20{margin-top:5rem}.to-sm\:mr-20{margin-right:5rem}.to-sm\:mb-20{margin-bottom:5rem}.to-sm\:ml-20{margin-left:5rem}.to-sm\:mt-24{margin-top:6rem}.to-sm\:mr-24{margin-right:6rem}.to-sm\:mb-24{margin-bottom:6rem}.to-sm\:ml-24{margin-left:6rem}.to-sm\:mt-32{margin-top:8rem}.to-sm\:mr-32{margin-right:8rem}.to-sm\:mb-32{margin-bottom:8rem}.to-sm\:ml-32{margin-left:8rem}.to-sm\:mt-auto{margin-top:auto}.to-sm\:mr-auto{margin-right:auto}.to-sm\:mb-auto{margin-bottom:auto}.to-sm\:ml-auto{margin-left:auto}.to-sm\:mt-px{margin-top:1px}.to-sm\:mr-px{margin-right:1px}.to-sm\:mb-px{margin-bottom:1px}.to-sm\:ml-px{margin-left:1px}.to-sm\:max-h-full{max-height:100%}.to-sm\:max-h-screen{max-height:100vh}.to-sm\:max-w-sm{max-width:576px}.to-sm\:max-w-md{max-width:768px}.to-sm\:max-w-lg{max-width:992px}.to-sm\:max-w-xl{max-width:1200px}.to-sm\:max-w-full{max-width:100%}.to-sm\:min-h-0{min-height:0}.to-sm\:min-h-full{min-height:100%}.to-sm\:min-h-screen{min-height:100vh}.to-sm\:min-w-0{min-width:0}.to-sm\:min-w-full{min-width:100%}.to-sm\:-m-0{margin:0}.to-sm\:-m-1{margin:-.25rem}.to-sm\:-m-2{margin:-.5rem}.to-sm\:-m-3{margin:-.75rem}.to-sm\:-m-4{margin:-1rem}.to-sm\:-m-5{margin:-1.25rem}.to-sm\:-m-6{margin:-1.5rem}.to-sm\:-m-8{margin:-2rem}.to-sm\:-m-10{margin:-2.5rem}.to-sm\:-m-12{margin:-3rem}.to-sm\:-m-16{margin:-4rem}.to-sm\:-m-20{margin:-5rem}.to-sm\:-m-24{margin:-6rem}.to-sm\:-m-32{margin:-8rem}.to-sm\:-m-px{margin:-1px}.to-sm\:-my-0{margin-top:0;margin-bottom:0}.to-sm\:-mx-0{margin-left:0;margin-right:0}.to-sm\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.to-sm\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.to-sm\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.to-sm\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.to-sm\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.to-sm\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.to-sm\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.to-sm\:-mx-4{margin-left:-1rem;margin-right:-1rem}.to-sm\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.to-sm\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.to-sm\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.to-sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.to-sm\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.to-sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.to-sm\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.to-sm\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.to-sm\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.to-sm\:-mx-12{margin-left:-3rem;margin-right:-3rem}.to-sm\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.to-sm\:-mx-16{margin-left:-4rem;margin-right:-4rem}.to-sm\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.to-sm\:-mx-20{margin-left:-5rem;margin-right:-5rem}.to-sm\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.to-sm\:-mx-24{margin-left:-6rem;margin-right:-6rem}.to-sm\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.to-sm\:-mx-32{margin-left:-8rem;margin-right:-8rem}.to-sm\:-my-px{margin-top:-1px;margin-bottom:-1px}.to-sm\:-mx-px{margin-left:-1px;margin-right:-1px}.to-sm\:-mt-0{margin-top:0}.to-sm\:-mr-0{margin-right:0}.to-sm\:-mb-0{margin-bottom:0}.to-sm\:-ml-0{margin-left:0}.to-sm\:-mt-1{margin-top:-.25rem}.to-sm\:-mr-1{margin-right:-.25rem}.to-sm\:-mb-1{margin-bottom:-.25rem}.to-sm\:-ml-1{margin-left:-.25rem}.to-sm\:-mt-2{margin-top:-.5rem}.to-sm\:-mr-2{margin-right:-.5rem}.to-sm\:-mb-2{margin-bottom:-.5rem}.to-sm\:-ml-2{margin-left:-.5rem}.to-sm\:-mt-3{margin-top:-.75rem}.to-sm\:-mr-3{margin-right:-.75rem}.to-sm\:-mb-3{margin-bottom:-.75rem}.to-sm\:-ml-3{margin-left:-.75rem}.to-sm\:-mt-4{margin-top:-1rem}.to-sm\:-mr-4{margin-right:-1rem}.to-sm\:-mb-4{margin-bottom:-1rem}.to-sm\:-ml-4{margin-left:-1rem}.to-sm\:-mt-5{margin-top:-1.25rem}.to-sm\:-mr-5{margin-right:-1.25rem}.to-sm\:-mb-5{margin-bottom:-1.25rem}.to-sm\:-ml-5{margin-left:-1.25rem}.to-sm\:-mt-6{margin-top:-1.5rem}.to-sm\:-mr-6{margin-right:-1.5rem}.to-sm\:-mb-6{margin-bottom:-1.5rem}.to-sm\:-ml-6{margin-left:-1.5rem}.to-sm\:-mt-8{margin-top:-2rem}.to-sm\:-mr-8{margin-right:-2rem}.to-sm\:-mb-8{margin-bottom:-2rem}.to-sm\:-ml-8{margin-left:-2rem}.to-sm\:-mt-10{margin-top:-2.5rem}.to-sm\:-mr-10{margin-right:-2.5rem}.to-sm\:-mb-10{margin-bottom:-2.5rem}.to-sm\:-ml-10{margin-left:-2.5rem}.to-sm\:-mt-12{margin-top:-3rem}.to-sm\:-mr-12{margin-right:-3rem}.to-sm\:-mb-12{margin-bottom:-3rem}.to-sm\:-ml-12{margin-left:-3rem}.to-sm\:-mt-16{margin-top:-4rem}.to-sm\:-mr-16{margin-right:-4rem}.to-sm\:-mb-16{margin-bottom:-4rem}.to-sm\:-ml-16{margin-left:-4rem}.to-sm\:-mt-20{margin-top:-5rem}.to-sm\:-mr-20{margin-right:-5rem}.to-sm\:-mb-20{margin-bottom:-5rem}.to-sm\:-ml-20{margin-left:-5rem}.to-sm\:-mt-24{margin-top:-6rem}.to-sm\:-mr-24{margin-right:-6rem}.to-sm\:-mb-24{margin-bottom:-6rem}.to-sm\:-ml-24{margin-left:-6rem}.to-sm\:-mt-32{margin-top:-8rem}.to-sm\:-mr-32{margin-right:-8rem}.to-sm\:-mb-32{margin-bottom:-8rem}.to-sm\:-ml-32{margin-left:-8rem}.to-sm\:-mt-px{margin-top:-1px}.to-sm\:-mr-px{margin-right:-1px}.to-sm\:-mb-px{margin-bottom:-1px}.to-sm\:-ml-px{margin-left:-1px}.to-sm\:opacity-0{opacity:0}.to-sm\:opacity-25{opacity:.25}.to-sm\:opacity-50{opacity:.5}.to-sm\:opacity-75{opacity:.75}.to-sm\:opacity-100{opacity:1}.group:hover .to-sm\:group-hover\:opacity-0{opacity:0}.group:hover .to-sm\:group-hover\:opacity-25{opacity:.25}.group:hover .to-sm\:group-hover\:opacity-50{opacity:.5}.group:hover .to-sm\:group-hover\:opacity-75{opacity:.75}.group:hover .to-sm\:group-hover\:opacity-100{opacity:1}.to-sm\:overflow-auto{overflow:auto}.to-sm\:overflow-hidden{overflow:hidden}.to-sm\:overflow-visible{overflow:visible}.to-sm\:overflow-scroll{overflow:scroll}.to-sm\:overflow-x-auto{overflow-x:auto}.to-sm\:overflow-y-auto{overflow-y:auto}.to-sm\:overflow-x-hidden{overflow-x:hidden}.to-sm\:overflow-y-hidden{overflow-y:hidden}.to-sm\:overflow-x-visible{overflow-x:visible}.to-sm\:overflow-y-visible{overflow-y:visible}.to-sm\:overflow-x-scroll{overflow-x:scroll}.to-sm\:overflow-y-scroll{overflow-y:scroll}.to-sm\:scrolling-touch{-webkit-overflow-scrolling:touch}.to-sm\:scrolling-auto{-webkit-overflow-scrolling:auto}.to-sm\:p-0{padding:0}.to-sm\:p-1{padding:.25rem}.to-sm\:p-2{padding:.5rem}.to-sm\:p-3{padding:.75rem}.to-sm\:p-4{padding:1rem}.to-sm\:p-5{padding:1.25rem}.to-sm\:p-6{padding:1.5rem}.to-sm\:p-8{padding:2rem}.to-sm\:p-10{padding:2.5rem}.to-sm\:p-12{padding:3rem}.to-sm\:p-16{padding:4rem}.to-sm\:p-20{padding:5rem}.to-sm\:p-24{padding:6rem}.to-sm\:p-32{padding:8rem}.to-sm\:p-px{padding:1px}.to-sm\:py-0{padding-top:0;padding-bottom:0}.to-sm\:px-0{padding-left:0;padding-right:0}.to-sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.to-sm\:px-1{padding-left:.25rem;padding-right:.25rem}.to-sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.to-sm\:px-2{padding-left:.5rem;padding-right:.5rem}.to-sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.to-sm\:px-3{padding-left:.75rem;padding-right:.75rem}.to-sm\:py-4{padding-top:1rem;padding-bottom:1rem}.to-sm\:px-4{padding-left:1rem;padding-right:1rem}.to-sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.to-sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.to-sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.to-sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.to-sm\:py-8{padding-top:2rem;padding-bottom:2rem}.to-sm\:px-8{padding-left:2rem;padding-right:2rem}.to-sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.to-sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.to-sm\:py-12{padding-top:3rem;padding-bottom:3rem}.to-sm\:px-12{padding-left:3rem;padding-right:3rem}.to-sm\:py-16{padding-top:4rem;padding-bottom:4rem}.to-sm\:px-16{padding-left:4rem;padding-right:4rem}.to-sm\:py-20{padding-top:5rem;padding-bottom:5rem}.to-sm\:px-20{padding-left:5rem;padding-right:5rem}.to-sm\:py-24{padding-top:6rem;padding-bottom:6rem}.to-sm\:px-24{padding-left:6rem;padding-right:6rem}.to-sm\:py-32{padding-top:8rem;padding-bottom:8rem}.to-sm\:px-32{padding-left:8rem;padding-right:8rem}.to-sm\:py-px{padding-top:1px;padding-bottom:1px}.to-sm\:px-px{padding-left:1px;padding-right:1px}.to-sm\:pt-0{padding-top:0}.to-sm\:pr-0{padding-right:0}.to-sm\:pb-0{padding-bottom:0}.to-sm\:pl-0{padding-left:0}.to-sm\:pt-1{padding-top:.25rem}.to-sm\:pr-1{padding-right:.25rem}.to-sm\:pb-1{padding-bottom:.25rem}.to-sm\:pl-1{padding-left:.25rem}.to-sm\:pt-2{padding-top:.5rem}.to-sm\:pr-2{padding-right:.5rem}.to-sm\:pb-2{padding-bottom:.5rem}.to-sm\:pl-2{padding-left:.5rem}.to-sm\:pt-3{padding-top:.75rem}.to-sm\:pr-3{padding-right:.75rem}.to-sm\:pb-3{padding-bottom:.75rem}.to-sm\:pl-3{padding-left:.75rem}.to-sm\:pt-4{padding-top:1rem}.to-sm\:pr-4{padding-right:1rem}.to-sm\:pb-4{padding-bottom:1rem}.to-sm\:pl-4{padding-left:1rem}.to-sm\:pt-5{padding-top:1.25rem}.to-sm\:pr-5{padding-right:1.25rem}.to-sm\:pb-5{padding-bottom:1.25rem}.to-sm\:pl-5{padding-left:1.25rem}.to-sm\:pt-6{padding-top:1.5rem}.to-sm\:pr-6{padding-right:1.5rem}.to-sm\:pb-6{padding-bottom:1.5rem}.to-sm\:pl-6{padding-left:1.5rem}.to-sm\:pt-8{padding-top:2rem}.to-sm\:pr-8{padding-right:2rem}.to-sm\:pb-8{padding-bottom:2rem}.to-sm\:pl-8{padding-left:2rem}.to-sm\:pt-10{padding-top:2.5rem}.to-sm\:pr-10{padding-right:2.5rem}.to-sm\:pb-10{padding-bottom:2.5rem}.to-sm\:pl-10{padding-left:2.5rem}.to-sm\:pt-12{padding-top:3rem}.to-sm\:pr-12{padding-right:3rem}.to-sm\:pb-12{padding-bottom:3rem}.to-sm\:pl-12{padding-left:3rem}.to-sm\:pt-16{padding-top:4rem}.to-sm\:pr-16{padding-right:4rem}.to-sm\:pb-16{padding-bottom:4rem}.to-sm\:pl-16{padding-left:4rem}.to-sm\:pt-20{padding-top:5rem}.to-sm\:pr-20{padding-right:5rem}.to-sm\:pb-20{padding-bottom:5rem}.to-sm\:pl-20{padding-left:5rem}.to-sm\:pt-24{padding-top:6rem}.to-sm\:pr-24{padding-right:6rem}.to-sm\:pb-24{padding-bottom:6rem}.to-sm\:pl-24{padding-left:6rem}.to-sm\:pt-32{padding-top:8rem}.to-sm\:pr-32{padding-right:8rem}.to-sm\:pb-32{padding-bottom:8rem}.to-sm\:pl-32{padding-left:8rem}.to-sm\:pt-px{padding-top:1px}.to-sm\:pr-px{padding-right:1px}.to-sm\:pb-px{padding-bottom:1px}.to-sm\:pl-px{padding-left:1px}.to-sm\:pointer-events-none{pointer-events:none}.to-sm\:pointer-events-auto{pointer-events:auto}.to-sm\:static{position:static}.to-sm\:fixed{position:fixed}.to-sm\:absolute{position:absolute}.to-sm\:relative{position:relative}.to-sm\:sticky{position:sticky}.to-sm\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.to-sm\:pin{top:0;right:0;bottom:0;left:0}.to-sm\:pin-y{top:0;bottom:0}.to-sm\:pin-x{right:0;left:0}.to-sm\:pin-t{top:0}.to-sm\:pin-r{right:0}.to-sm\:pin-b{bottom:0}.to-sm\:pin-l{left:0}.to-sm\:resize-none{resize:none}.to-sm\:resize-y{resize:vertical}.to-sm\:resize-x{resize:horizontal}.to-sm\:resize{resize:both}.to-sm\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-sm\:shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.to-sm\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-sm\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.to-sm\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-sm\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:0 0}.to-sm\:table-auto{table-layout:auto}.to-sm\:table-fixed{table-layout:fixed}.to-sm\:text-left{text-align:left}.to-sm\:text-center{text-align:center}.to-sm\:text-right{text-align:right}.to-sm\:text-justify{text-align:justify}.to-sm\:text-transparent{color:transparent}.to-sm\:text-color-black{color:#000}.to-sm\:text-color-mine-shaft{color:#373737}.to-sm\:text-color-fuscous-gray{color:#4c4d4b}.to-sm\:text-color-emperor{color:#5d5d5d}.to-sm\:text-color-dove-gray{color:#646464}.to-sm\:text-color-boulder{color:#7b7b7b}.to-sm\:text-color-silver{color:#bbb}.to-sm\:text-color-alto{color:#dadada}.to-sm\:text-color-mercury{color:#e9e9e9}.to-sm\:text-color-seashell{color:#f1f1f1}.to-sm\:text-color-white{color:#fff}.to-sm\:text-color-orient{color:#005c7c}.to-sm\:text-color-shakespeare{color:#4ab9d4}.to-sm\:text-color-yellow-metal{color:#807040}.to-sm\:text-color-kumera{color:#8a741d}.to-sm\:text-color-olive{color:#8e7100}.to-sm\:text-color-barley-corn{color:#a0915e}.to-sm\:text-color-verdigris{color:#494a2d}.to-sm\:text-color-texas{color:#f9fb93}.to-sm\:text-color-ferra{color:#634849}.to-sm\:text-color-cherub{color:#fbe3e4}.to-sm\:text-color-cabbage-pont{color:#454e41}.to-sm\:text-color-tea-green{color:#cfefc2}.group:hover .to-sm\:group-hover\:text-transparent{color:transparent}.group:hover .to-sm\:group-hover\:text-color-black{color:#000}.group:hover .to-sm\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .to-sm\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .to-sm\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .to-sm\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .to-sm\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .to-sm\:group-hover\:text-color-silver{color:#bbb}.group:hover .to-sm\:group-hover\:text-color-alto{color:#dadada}.group:hover .to-sm\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .to-sm\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .to-sm\:group-hover\:text-color-white{color:#fff}.group:hover .to-sm\:group-hover\:text-color-orient{color:#005c7c}.group:hover .to-sm\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .to-sm\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .to-sm\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .to-sm\:group-hover\:text-color-olive{color:#8e7100}.group:hover .to-sm\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .to-sm\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .to-sm\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .to-sm\:group-hover\:text-color-ferra{color:#634849}.group:hover .to-sm\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .to-sm\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .to-sm\:group-hover\:text-color-tea-green{color:#cfefc2}.to-sm\:hover\:text-transparent:hover{color:transparent}.to-sm\:hover\:text-color-black:hover{color:#000}.to-sm\:hover\:text-color-mine-shaft:hover{color:#373737}.to-sm\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.to-sm\:hover\:text-color-emperor:hover{color:#5d5d5d}.to-sm\:hover\:text-color-dove-gray:hover{color:#646464}.to-sm\:hover\:text-color-boulder:hover{color:#7b7b7b}.to-sm\:hover\:text-color-silver:hover{color:#bbb}.to-sm\:hover\:text-color-alto:hover{color:#dadada}.to-sm\:hover\:text-color-mercury:hover{color:#e9e9e9}.to-sm\:hover\:text-color-seashell:hover{color:#f1f1f1}.to-sm\:hover\:text-color-white:hover{color:#fff}.to-sm\:hover\:text-color-orient:hover{color:#005c7c}.to-sm\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.to-sm\:hover\:text-color-yellow-metal:hover{color:#807040}.to-sm\:hover\:text-color-kumera:hover{color:#8a741d}.to-sm\:hover\:text-color-olive:hover{color:#8e7100}.to-sm\:hover\:text-color-barley-corn:hover{color:#a0915e}.to-sm\:hover\:text-color-verdigris:hover{color:#494a2d}.to-sm\:hover\:text-color-texas:hover{color:#f9fb93}.to-sm\:hover\:text-color-ferra:hover{color:#634849}.to-sm\:hover\:text-color-cherub:hover{color:#fbe3e4}.to-sm\:hover\:text-color-cabbage-pont:hover{color:#454e41}.to-sm\:hover\:text-color-tea-green:hover{color:#cfefc2}.to-sm\:focus\:text-transparent:focus{color:transparent}.to-sm\:focus\:text-color-black:focus{color:#000}.to-sm\:focus\:text-color-mine-shaft:focus{color:#373737}.to-sm\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.to-sm\:focus\:text-color-emperor:focus{color:#5d5d5d}.to-sm\:focus\:text-color-dove-gray:focus{color:#646464}.to-sm\:focus\:text-color-boulder:focus{color:#7b7b7b}.to-sm\:focus\:text-color-silver:focus{color:#bbb}.to-sm\:focus\:text-color-alto:focus{color:#dadada}.to-sm\:focus\:text-color-mercury:focus{color:#e9e9e9}.to-sm\:focus\:text-color-seashell:focus{color:#f1f1f1}.to-sm\:focus\:text-color-white:focus{color:#fff}.to-sm\:focus\:text-color-orient:focus{color:#005c7c}.to-sm\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.to-sm\:focus\:text-color-yellow-metal:focus{color:#807040}.to-sm\:focus\:text-color-kumera:focus{color:#8a741d}.to-sm\:focus\:text-color-olive:focus{color:#8e7100}.to-sm\:focus\:text-color-barley-corn:focus{color:#a0915e}.to-sm\:focus\:text-color-verdigris:focus{color:#494a2d}.to-sm\:focus\:text-color-texas:focus{color:#f9fb93}.to-sm\:focus\:text-color-ferra:focus{color:#634849}.to-sm\:focus\:text-color-cherub:focus{color:#fbe3e4}.to-sm\:focus\:text-color-cabbage-pont:focus{color:#454e41}.to-sm\:focus\:text-color-tea-green:focus{color:#cfefc2}.to-sm\:text-3xs{font-size:.667rem}.to-sm\:text-2xs{font-size:.8rem}.to-sm\:text-xs{font-size:.867rem}.to-sm\:text-sm{font-size:.933rem}.to-sm\:text-base{font-size:15px}.to-sm\:text-lg{font-size:1.067rem}.to-sm\:text-xl{font-size:1.2rem}.to-sm\:text-2xl{font-size:1.267rem}.to-sm\:text-3xl{font-size:1.933rem}.to-sm\:italic{font-style:italic}.to-sm\:roman{font-style:normal}.to-sm\:uppercase{text-transform:uppercase}.to-sm\:lowercase{text-transform:lowercase}.to-sm\:capitalize{text-transform:capitalize}.to-sm\:normal-case{text-transform:none}.to-sm\:underline{text-decoration:underline}.to-sm\:line-through{text-decoration:line-through}.to-sm\:no-underline{text-decoration:none}.to-sm\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-sm\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-sm\:hover\:italic:hover{font-style:italic}.to-sm\:hover\:roman:hover{font-style:normal}.to-sm\:hover\:uppercase:hover{text-transform:uppercase}.to-sm\:hover\:lowercase:hover{text-transform:lowercase}.to-sm\:hover\:capitalize:hover{text-transform:capitalize}.to-sm\:hover\:normal-case:hover{text-transform:none}.to-sm\:hover\:underline:hover{text-decoration:underline}.to-sm\:hover\:line-through:hover{text-decoration:line-through}.to-sm\:hover\:no-underline:hover{text-decoration:none}.to-sm\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-sm\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-sm\:focus\:italic:focus{font-style:italic}.to-sm\:focus\:roman:focus{font-style:normal}.to-sm\:focus\:uppercase:focus{text-transform:uppercase}.to-sm\:focus\:lowercase:focus{text-transform:lowercase}.to-sm\:focus\:capitalize:focus{text-transform:capitalize}.to-sm\:focus\:normal-case:focus{text-transform:none}.to-sm\:focus\:underline:focus{text-decoration:underline}.to-sm\:focus\:line-through:focus{text-decoration:line-through}.to-sm\:focus\:no-underline:focus{text-decoration:none}.to-sm\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-sm\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-sm\:tracking-tight{letter-spacing:-.05em}.to-sm\:tracking-normal{letter-spacing:0}.to-sm\:tracking-wide{letter-spacing:.05em}.to-sm\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.to-sm\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.to-sm\:align-baseline{vertical-align:baseline}.to-sm\:align-top{vertical-align:top}.to-sm\:align-middle{vertical-align:middle}.to-sm\:align-bottom{vertical-align:bottom}.to-sm\:align-text-top{vertical-align:text-top}.to-sm\:align-text-bottom{vertical-align:text-bottom}.to-sm\:visible{visibility:visible}.to-sm\:invisible{visibility:hidden}.to-sm\:whitespace-normal{white-space:normal}.to-sm\:whitespace-no-wrap{white-space:nowrap}.to-sm\:whitespace-pre{white-space:pre}.to-sm\:whitespace-pre-line{white-space:pre-line}.to-sm\:whitespace-pre-wrap{white-space:pre-wrap}.to-sm\:break-words{word-wrap:break-word}.to-sm\:break-normal{word-wrap:normal}.to-sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.to-sm\:w-1{width:.25rem}.to-sm\:w-2{width:.5rem}.to-sm\:w-3{width:.75rem}.to-sm\:w-4{width:1rem}.to-sm\:w-5{width:1.25rem}.to-sm\:w-6{width:1.5rem}.to-sm\:w-8{width:2rem}.to-sm\:w-10{width:2.5rem}.to-sm\:w-12{width:3rem}.to-sm\:w-16{width:4rem}.to-sm\:w-24{width:6rem}.to-sm\:w-32{width:8rem}.to-sm\:w-40{width:10rem}.to-sm\:w-48{width:12rem}.to-sm\:w-56{width:14rem}.to-sm\:w-64{width:16rem}.to-sm\:w-auto{width:auto}.to-sm\:w-px{width:1px}.to-sm\:w-1\/2{width:50%}.to-sm\:w-1\/3{width:33.33333%}.to-sm\:w-2\/3{width:66.66667%}.to-sm\:w-1\/4{width:25%}.to-sm\:w-3\/4{width:75%}.to-sm\:w-1\/5{width:20%}.to-sm\:w-2\/5{width:40%}.to-sm\:w-3\/5{width:60%}.to-sm\:w-4\/5{width:80%}.to-sm\:w-1\/6{width:16.66667%}.to-sm\:w-1\/8{width:12.5%}.to-sm\:w-1\/10{width:10%}.to-sm\:w-1\/12{width:8.33333%}.to-sm\:w-full{width:100%}.to-sm\:w-screen{width:100vw}.to-sm\:z-0{z-index:0}.to-sm\:z-10{z-index:10}.to-sm\:z-20{z-index:20}.to-sm\:z-30{z-index:30}.to-sm\:z-40{z-index:40}.to-sm\:z-50{z-index:50}.to-sm\:z-auto{z-index:auto}.to-sm\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.to-sm\:text-shadow-none{text-shadow:none}.to-sm\:gradient-grey,.to-sm\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.to-sm\:gradient-grey-reversed,.to-sm\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.to-sm\:pin-t8{top:2rem}.to-sm\:pin-t16{top:4rem}.to-sm\:pin-b24{bottom:12rem}.to-sm\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.to-sm\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.to-sm\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:576px){.sm\:list-reset{list-style:none;padding:0}.sm\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.sm\:bg-fixed{background-attachment:fixed}.sm\:bg-local{background-attachment:local}.sm\:bg-scroll{background-attachment:scroll}.sm\:bg-transparent{background-color:initial}.sm\:bg-color-black{background-color:#000}.sm\:bg-color-mine-shaft{background-color:#373737}.sm\:bg-color-fuscous-gray{background-color:#4c4d4b}.sm\:bg-color-emperor{background-color:#5d5d5d}.sm\:bg-color-dove-gray{background-color:#646464}.sm\:bg-color-boulder{background-color:#7b7b7b}.sm\:bg-color-silver{background-color:#bbb}.sm\:bg-color-alto{background-color:#dadada}.sm\:bg-color-mercury{background-color:#e9e9e9}.sm\:bg-color-seashell{background-color:#f1f1f1}.sm\:bg-color-white{background-color:#fff}.sm\:bg-color-orient{background-color:#005c7c}.sm\:bg-color-shakespeare{background-color:#4ab9d4}.sm\:bg-color-yellow-metal{background-color:#807040}.sm\:bg-color-kumera{background-color:#8a741d}.sm\:bg-color-olive{background-color:#8e7100}.sm\:bg-color-barley-corn{background-color:#a0915e}.sm\:bg-color-verdigris{background-color:#494a2d}.sm\:bg-color-texas{background-color:#f9fb93}.sm\:bg-color-ferra{background-color:#634849}.sm\:bg-color-cherub{background-color:#fbe3e4}.sm\:bg-color-cabbage-pont{background-color:#454e41}.sm\:bg-color-tea-green{background-color:#cfefc2}.group:hover .sm\:group-hover\:bg-transparent{background-color:initial}.group:hover .sm\:group-hover\:bg-color-black{background-color:#000}.group:hover .sm\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .sm\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .sm\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .sm\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .sm\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .sm\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .sm\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .sm\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .sm\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .sm\:group-hover\:bg-color-white{background-color:#fff}.group:hover .sm\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .sm\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .sm\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .sm\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .sm\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .sm\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .sm\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .sm\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .sm\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .sm\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .sm\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .sm\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.sm\:hover\:bg-transparent:hover{background-color:initial}.sm\:hover\:bg-color-black:hover{background-color:#000}.sm\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.sm\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.sm\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.sm\:hover\:bg-color-dove-gray:hover{background-color:#646464}.sm\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.sm\:hover\:bg-color-silver:hover{background-color:#bbb}.sm\:hover\:bg-color-alto:hover{background-color:#dadada}.sm\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.sm\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.sm\:hover\:bg-color-white:hover{background-color:#fff}.sm\:hover\:bg-color-orient:hover{background-color:#005c7c}.sm\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.sm\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.sm\:hover\:bg-color-kumera:hover{background-color:#8a741d}.sm\:hover\:bg-color-olive:hover{background-color:#8e7100}.sm\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.sm\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.sm\:hover\:bg-color-texas:hover{background-color:#f9fb93}.sm\:hover\:bg-color-ferra:hover{background-color:#634849}.sm\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.sm\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.sm\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.sm\:focus\:bg-transparent:focus{background-color:initial}.sm\:focus\:bg-color-black:focus{background-color:#000}.sm\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.sm\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.sm\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.sm\:focus\:bg-color-dove-gray:focus{background-color:#646464}.sm\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.sm\:focus\:bg-color-silver:focus{background-color:#bbb}.sm\:focus\:bg-color-alto:focus{background-color:#dadada}.sm\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.sm\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.sm\:focus\:bg-color-white:focus{background-color:#fff}.sm\:focus\:bg-color-orient:focus{background-color:#005c7c}.sm\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.sm\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.sm\:focus\:bg-color-kumera:focus{background-color:#8a741d}.sm\:focus\:bg-color-olive:focus{background-color:#8e7100}.sm\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.sm\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.sm\:focus\:bg-color-texas:focus{background-color:#f9fb93}.sm\:focus\:bg-color-ferra:focus{background-color:#634849}.sm\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.sm\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.sm\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.sm\:bg-bottom{background-position:bottom}.sm\:bg-center{background-position:50%}.sm\:bg-left{background-position:0}.sm\:bg-left-bottom{background-position:0 100%}.sm\:bg-left-top{background-position:0 0}.sm\:bg-right{background-position:100%}.sm\:bg-right-bottom{background-position:100% 100%}.sm\:bg-right-top{background-position:100% 0}.sm\:bg-top{background-position:top}.sm\:bg-repeat{background-repeat:repeat}.sm\:bg-no-repeat{background-repeat:no-repeat}.sm\:bg-repeat-x{background-repeat:repeat-x}.sm\:bg-repeat-y{background-repeat:repeat-y}.sm\:bg-auto{background-size:auto}.sm\:bg-cover{background-size:cover}.sm\:bg-contain{background-size:contain}.sm\:border-transparent{border-color:transparent}.sm\:border-color-black{border-color:#000}.sm\:border-color-mine-shaft{border-color:#373737}.sm\:border-color-fuscous-gray{border-color:#4c4d4b}.sm\:border-color-emperor{border-color:#5d5d5d}.sm\:border-color-dove-gray{border-color:#646464}.sm\:border-color-boulder{border-color:#7b7b7b}.sm\:border-color-silver{border-color:#bbb}.sm\:border-color-alto{border-color:#dadada}.sm\:border-color-mercury{border-color:#e9e9e9}.sm\:border-color-seashell{border-color:#f1f1f1}.sm\:border-color-white{border-color:#fff}.sm\:border-color-orient{border-color:#005c7c}.sm\:border-color-shakespeare{border-color:#4ab9d4}.sm\:border-color-yellow-metal{border-color:#807040}.sm\:border-color-kumera{border-color:#8a741d}.sm\:border-color-olive{border-color:#8e7100}.sm\:border-color-barley-corn{border-color:#a0915e}.sm\:border-color-verdigris{border-color:#494a2d}.sm\:border-color-texas{border-color:#f9fb93}.sm\:border-color-ferra{border-color:#634849}.sm\:border-color-cherub{border-color:#fbe3e4}.sm\:border-color-cabbage-pont{border-color:#454e41}.sm\:border-color-tea-green{border-color:#cfefc2}.sm\:hover\:border-transparent:hover{border-color:transparent}.sm\:hover\:border-color-black:hover{border-color:#000}.sm\:hover\:border-color-mine-shaft:hover{border-color:#373737}.sm\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.sm\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.sm\:hover\:border-color-dove-gray:hover{border-color:#646464}.sm\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.sm\:hover\:border-color-silver:hover{border-color:#bbb}.sm\:hover\:border-color-alto:hover{border-color:#dadada}.sm\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.sm\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.sm\:hover\:border-color-white:hover{border-color:#fff}.sm\:hover\:border-color-orient:hover{border-color:#005c7c}.sm\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.sm\:hover\:border-color-yellow-metal:hover{border-color:#807040}.sm\:hover\:border-color-kumera:hover{border-color:#8a741d}.sm\:hover\:border-color-olive:hover{border-color:#8e7100}.sm\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.sm\:hover\:border-color-verdigris:hover{border-color:#494a2d}.sm\:hover\:border-color-texas:hover{border-color:#f9fb93}.sm\:hover\:border-color-ferra:hover{border-color:#634849}.sm\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.sm\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.sm\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.sm\:focus\:border-transparent:focus{border-color:transparent}.sm\:focus\:border-color-black:focus{border-color:#000}.sm\:focus\:border-color-mine-shaft:focus{border-color:#373737}.sm\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.sm\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.sm\:focus\:border-color-dove-gray:focus{border-color:#646464}.sm\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.sm\:focus\:border-color-silver:focus{border-color:#bbb}.sm\:focus\:border-color-alto:focus{border-color:#dadada}.sm\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.sm\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.sm\:focus\:border-color-white:focus{border-color:#fff}.sm\:focus\:border-color-orient:focus{border-color:#005c7c}.sm\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.sm\:focus\:border-color-yellow-metal:focus{border-color:#807040}.sm\:focus\:border-color-kumera:focus{border-color:#8a741d}.sm\:focus\:border-color-olive:focus{border-color:#8e7100}.sm\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.sm\:focus\:border-color-verdigris:focus{border-color:#494a2d}.sm\:focus\:border-color-texas:focus{border-color:#f9fb93}.sm\:focus\:border-color-ferra:focus{border-color:#634849}.sm\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.sm\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.sm\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.sm\:rounded-none{border-radius:0}.sm\:rounded-sm{border-radius:.125rem}.sm\:rounded{border-radius:.25rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:rounded-full{border-radius:9999px}.sm\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.sm\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.sm\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.sm\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.sm\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.sm\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.sm\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.sm\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.sm\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.sm\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.sm\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.sm\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.sm\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.sm\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.sm\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.sm\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.sm\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.sm\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.sm\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.sm\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.sm\:rounded-tl-none{border-top-left-radius:0}.sm\:rounded-tr-none{border-top-right-radius:0}.sm\:rounded-br-none{border-bottom-right-radius:0}.sm\:rounded-bl-none{border-bottom-left-radius:0}.sm\:rounded-tl-sm{border-top-left-radius:.125rem}.sm\:rounded-tr-sm{border-top-right-radius:.125rem}.sm\:rounded-br-sm{border-bottom-right-radius:.125rem}.sm\:rounded-bl-sm{border-bottom-left-radius:.125rem}.sm\:rounded-tl{border-top-left-radius:.25rem}.sm\:rounded-tr{border-top-right-radius:.25rem}.sm\:rounded-br{border-bottom-right-radius:.25rem}.sm\:rounded-bl{border-bottom-left-radius:.25rem}.sm\:rounded-tl-lg{border-top-left-radius:.5rem}.sm\:rounded-tr-lg{border-top-right-radius:.5rem}.sm\:rounded-br-lg{border-bottom-right-radius:.5rem}.sm\:rounded-bl-lg{border-bottom-left-radius:.5rem}.sm\:rounded-tl-full{border-top-left-radius:9999px}.sm\:rounded-tr-full{border-top-right-radius:9999px}.sm\:rounded-br-full{border-bottom-right-radius:9999px}.sm\:rounded-bl-full{border-bottom-left-radius:9999px}.sm\:border-solid{border-style:solid}.sm\:border-dashed{border-style:dashed}.sm\:border-dotted{border-style:dotted}.sm\:border-none{border-style:none}.sm\:border-0{border-width:0}.sm\:border-2{border-width:2px}.sm\:border-4{border-width:4px}.sm\:border-8{border-width:8px}.sm\:border{border-width:1px}.sm\:border-t-0{border-top-width:0}.sm\:border-r-0{border-right-width:0}.sm\:border-b-0{border-bottom-width:0}.sm\:border-l-0{border-left-width:0}.sm\:border-t-2{border-top-width:2px}.sm\:border-r-2{border-right-width:2px}.sm\:border-b-2{border-bottom-width:2px}.sm\:border-l-2{border-left-width:2px}.sm\:border-t-4{border-top-width:4px}.sm\:border-r-4{border-right-width:4px}.sm\:border-b-4{border-bottom-width:4px}.sm\:border-l-4{border-left-width:4px}.sm\:border-t-8{border-top-width:8px}.sm\:border-r-8{border-right-width:8px}.sm\:border-b-8{border-bottom-width:8px}.sm\:border-l-8{border-left-width:8px}.sm\:border-t{border-top-width:1px}.sm\:border-r{border-right-width:1px}.sm\:border-b{border-bottom-width:1px}.sm\:border-l{border-left-width:1px}.sm\:cursor-auto{cursor:auto}.sm\:cursor-default{cursor:default}.sm\:cursor-pointer{cursor:pointer}.sm\:cursor-wait{cursor:wait}.sm\:cursor-move{cursor:move}.sm\:cursor-not-allowed{cursor:not-allowed}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:table{display:table}.sm\:table-row{display:table-row}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:hover\:block:hover{display:block}.sm\:hover\:inline-block:hover{display:inline-block}.sm\:hover\:inline:hover{display:inline}.sm\:hover\:table:hover{display:table}.sm\:hover\:table-row:hover{display:table-row}.sm\:hover\:table-cell:hover{display:table-cell}.sm\:hover\:hidden:hover{display:none}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sm\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.sm\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.sm\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.sm\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.sm\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.sm\:self-auto{-ms-flex-item-align:auto;align-self:auto}.sm\:self-start{-ms-flex-item-align:start;align-self:flex-start}.sm\:self-end{-ms-flex-item-align:end;align-self:flex-end}.sm\:self-center{-ms-flex-item-align:center;align-self:center}.sm\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.sm\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.sm\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.sm\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.sm\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.sm\:content-center{-ms-flex-line-pack:center;align-content:center}.sm\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.sm\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.sm\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.sm\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.sm\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.sm\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.sm\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.sm\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.sm\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.sm\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.sm\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.sm\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.sm\:float-right{float:right}.sm\:float-left{float:left}.sm\:float-none{float:none}.sm\:clearfix:after{content:"";display:table;clear:both}.sm\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.sm\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.sm\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.sm\:font-hairline{font-weight:100}.sm\:font-thin{font-weight:200}.sm\:font-light{font-weight:300}.sm\:font-normal{font-weight:400}.sm\:font-medium{font-weight:500}.sm\:font-semibold{font-weight:600}.sm\:font-bold{font-weight:700}.sm\:font-extrabold{font-weight:800}.sm\:font-black{font-weight:900}.sm\:hover\:font-hairline:hover{font-weight:100}.sm\:hover\:font-thin:hover{font-weight:200}.sm\:hover\:font-light:hover{font-weight:300}.sm\:hover\:font-normal:hover{font-weight:400}.sm\:hover\:font-medium:hover{font-weight:500}.sm\:hover\:font-semibold:hover{font-weight:600}.sm\:hover\:font-bold:hover{font-weight:700}.sm\:hover\:font-extrabold:hover{font-weight:800}.sm\:hover\:font-black:hover{font-weight:900}.sm\:focus\:font-hairline:focus{font-weight:100}.sm\:focus\:font-thin:focus{font-weight:200}.sm\:focus\:font-light:focus{font-weight:300}.sm\:focus\:font-normal:focus{font-weight:400}.sm\:focus\:font-medium:focus{font-weight:500}.sm\:focus\:font-semibold:focus{font-weight:600}.sm\:focus\:font-bold:focus{font-weight:700}.sm\:focus\:font-extrabold:focus{font-weight:800}.sm\:focus\:font-black:focus{font-weight:900}.sm\:h-1{height:.25rem}.sm\:h-2{height:.5rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-6{height:1.5rem}.sm\:h-8{height:2rem}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-16{height:4rem}.sm\:h-24{height:6rem}.sm\:h-32{height:8rem}.sm\:h-48{height:12rem}.sm\:h-64{height:16rem}.sm\:h-auto{height:auto}.sm\:h-px{height:1px}.sm\:h-full{height:100%}.sm\:h-screen{height:100vh}.sm\:h-screen-40-width{height:40vw}.sm\:h-screen-60-width{height:60vw}.sm\:h-screen-full-width{height:100vw}.sm\:leading-zero{line-height:0}.sm\:leading-none{line-height:1}.sm\:leading-tight{line-height:1.25}.sm\:leading-normal{line-height:1.5}.sm\:leading-loose{line-height:2}.sm\:m-0{margin:0}.sm\:m-1{margin:.25rem}.sm\:m-2{margin:.5rem}.sm\:m-3{margin:.75rem}.sm\:m-4{margin:1rem}.sm\:m-5{margin:1.25rem}.sm\:m-6{margin:1.5rem}.sm\:m-8{margin:2rem}.sm\:m-10{margin:2.5rem}.sm\:m-12{margin:3rem}.sm\:m-16{margin:4rem}.sm\:m-20{margin:5rem}.sm\:m-24{margin:6rem}.sm\:m-32{margin:8rem}.sm\:m-auto{margin:auto}.sm\:m-px{margin:1px}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-1{margin-top:.25rem;margin-bottom:.25rem}.sm\:mx-1{margin-left:.25rem;margin-right:.25rem}.sm\:my-2{margin-top:.5rem;margin-bottom:.5rem}.sm\:mx-2{margin-left:.5rem;margin-right:.5rem}.sm\:my-3{margin-top:.75rem;margin-bottom:.75rem}.sm\:mx-3{margin-left:.75rem;margin-right:.75rem}.sm\:my-4{margin-top:1rem;margin-bottom:1rem}.sm\:mx-4{margin-left:1rem;margin-right:1rem}.sm\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.sm\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.sm\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.sm\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mx-8{margin-left:2rem;margin-right:2rem}.sm\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.sm\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mx-12{margin-left:3rem;margin-right:3rem}.sm\:my-16{margin-top:4rem;margin-bottom:4rem}.sm\:mx-16{margin-left:4rem;margin-right:4rem}.sm\:my-20{margin-top:5rem;margin-bottom:5rem}.sm\:mx-20{margin-left:5rem;margin-right:5rem}.sm\:my-24{margin-top:6rem;margin-bottom:6rem}.sm\:mx-24{margin-left:6rem;margin-right:6rem}.sm\:my-32{margin-top:8rem;margin-bottom:8rem}.sm\:mx-32{margin-left:8rem;margin-right:8rem}.sm\:my-auto{margin-top:auto;margin-bottom:auto}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:my-px{margin-top:1px;margin-bottom:1px}.sm\:mx-px{margin-left:1px;margin-right:1px}.sm\:mt-0{margin-top:0}.sm\:mr-0{margin-right:0}.sm\:mb-0{margin-bottom:0}.sm\:ml-0{margin-left:0}.sm\:mt-1{margin-top:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mb-1{margin-bottom:.25rem}.sm\:ml-1{margin-left:.25rem}.sm\:mt-2{margin-top:.5rem}.sm\:mr-2{margin-right:.5rem}.sm\:mb-2{margin-bottom:.5rem}.sm\:ml-2{margin-left:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mr-3{margin-right:.75rem}.sm\:mb-3{margin-bottom:.75rem}.sm\:ml-3{margin-left:.75rem}.sm\:mt-4{margin-top:1rem}.sm\:mr-4{margin-right:1rem}.sm\:mb-4{margin-bottom:1rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:mr-5{margin-right:1.25rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:ml-5{margin-left:1.25rem}.sm\:mt-6{margin-top:1.5rem}.sm\:mr-6{margin-right:1.5rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-8{margin-top:2rem}.sm\:mr-8{margin-right:2rem}.sm\:mb-8{margin-bottom:2rem}.sm\:ml-8{margin-left:2rem}.sm\:mt-10{margin-top:2.5rem}.sm\:mr-10{margin-right:2.5rem}.sm\:mb-10{margin-bottom:2.5rem}.sm\:ml-10{margin-left:2.5rem}.sm\:mt-12{margin-top:3rem}.sm\:mr-12{margin-right:3rem}.sm\:mb-12{margin-bottom:3rem}.sm\:ml-12{margin-left:3rem}.sm\:mt-16{margin-top:4rem}.sm\:mr-16{margin-right:4rem}.sm\:mb-16{margin-bottom:4rem}.sm\:ml-16{margin-left:4rem}.sm\:mt-20{margin-top:5rem}.sm\:mr-20{margin-right:5rem}.sm\:mb-20{margin-bottom:5rem}.sm\:ml-20{margin-left:5rem}.sm\:mt-24{margin-top:6rem}.sm\:mr-24{margin-right:6rem}.sm\:mb-24{margin-bottom:6rem}.sm\:ml-24{margin-left:6rem}.sm\:mt-32{margin-top:8rem}.sm\:mr-32{margin-right:8rem}.sm\:mb-32{margin-bottom:8rem}.sm\:ml-32{margin-left:8rem}.sm\:mt-auto{margin-top:auto}.sm\:mr-auto{margin-right:auto}.sm\:mb-auto{margin-bottom:auto}.sm\:ml-auto{margin-left:auto}.sm\:mt-px{margin-top:1px}.sm\:mr-px{margin-right:1px}.sm\:mb-px{margin-bottom:1px}.sm\:ml-px{margin-left:1px}.sm\:max-h-full{max-height:100%}.sm\:max-h-screen{max-height:100vh}.sm\:max-w-sm{max-width:576px}.sm\:max-w-md{max-width:768px}.sm\:max-w-lg{max-width:992px}.sm\:max-w-xl{max-width:1200px}.sm\:max-w-full{max-width:100%}.sm\:min-h-0{min-height:0}.sm\:min-h-full{min-height:100%}.sm\:min-h-screen{min-height:100vh}.sm\:min-w-0{min-width:0}.sm\:min-w-full{min-width:100%}.sm\:-m-0{margin:0}.sm\:-m-1{margin:-.25rem}.sm\:-m-2{margin:-.5rem}.sm\:-m-3{margin:-.75rem}.sm\:-m-4{margin:-1rem}.sm\:-m-5{margin:-1.25rem}.sm\:-m-6{margin:-1.5rem}.sm\:-m-8{margin:-2rem}.sm\:-m-10{margin:-2.5rem}.sm\:-m-12{margin:-3rem}.sm\:-m-16{margin:-4rem}.sm\:-m-20{margin:-5rem}.sm\:-m-24{margin:-6rem}.sm\:-m-32{margin:-8rem}.sm\:-m-px{margin:-1px}.sm\:-my-0{margin-top:0;margin-bottom:0}.sm\:-mx-0{margin-left:0;margin-right:0}.sm\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.sm\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.sm\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.sm\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.sm\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.sm\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.sm\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.sm\:-mx-4{margin-left:-1rem;margin-right:-1rem}.sm\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.sm\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.sm\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.sm\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.sm\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.sm\:-mx-12{margin-left:-3rem;margin-right:-3rem}.sm\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.sm\:-mx-16{margin-left:-4rem;margin-right:-4rem}.sm\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.sm\:-mx-20{margin-left:-5rem;margin-right:-5rem}.sm\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.sm\:-mx-24{margin-left:-6rem;margin-right:-6rem}.sm\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.sm\:-mx-32{margin-left:-8rem;margin-right:-8rem}.sm\:-my-px{margin-top:-1px;margin-bottom:-1px}.sm\:-mx-px{margin-left:-1px;margin-right:-1px}.sm\:-mt-0{margin-top:0}.sm\:-mr-0{margin-right:0}.sm\:-mb-0{margin-bottom:0}.sm\:-ml-0{margin-left:0}.sm\:-mt-1{margin-top:-.25rem}.sm\:-mr-1{margin-right:-.25rem}.sm\:-mb-1{margin-bottom:-.25rem}.sm\:-ml-1{margin-left:-.25rem}.sm\:-mt-2{margin-top:-.5rem}.sm\:-mr-2{margin-right:-.5rem}.sm\:-mb-2{margin-bottom:-.5rem}.sm\:-ml-2{margin-left:-.5rem}.sm\:-mt-3{margin-top:-.75rem}.sm\:-mr-3{margin-right:-.75rem}.sm\:-mb-3{margin-bottom:-.75rem}.sm\:-ml-3{margin-left:-.75rem}.sm\:-mt-4{margin-top:-1rem}.sm\:-mr-4{margin-right:-1rem}.sm\:-mb-4{margin-bottom:-1rem}.sm\:-ml-4{margin-left:-1rem}.sm\:-mt-5{margin-top:-1.25rem}.sm\:-mr-5{margin-right:-1.25rem}.sm\:-mb-5{margin-bottom:-1.25rem}.sm\:-ml-5{margin-left:-1.25rem}.sm\:-mt-6{margin-top:-1.5rem}.sm\:-mr-6{margin-right:-1.5rem}.sm\:-mb-6{margin-bottom:-1.5rem}.sm\:-ml-6{margin-left:-1.5rem}.sm\:-mt-8{margin-top:-2rem}.sm\:-mr-8{margin-right:-2rem}.sm\:-mb-8{margin-bottom:-2rem}.sm\:-ml-8{margin-left:-2rem}.sm\:-mt-10{margin-top:-2.5rem}.sm\:-mr-10{margin-right:-2.5rem}.sm\:-mb-10{margin-bottom:-2.5rem}.sm\:-ml-10{margin-left:-2.5rem}.sm\:-mt-12{margin-top:-3rem}.sm\:-mr-12{margin-right:-3rem}.sm\:-mb-12{margin-bottom:-3rem}.sm\:-ml-12{margin-left:-3rem}.sm\:-mt-16{margin-top:-4rem}.sm\:-mr-16{margin-right:-4rem}.sm\:-mb-16{margin-bottom:-4rem}.sm\:-ml-16{margin-left:-4rem}.sm\:-mt-20{margin-top:-5rem}.sm\:-mr-20{margin-right:-5rem}.sm\:-mb-20{margin-bottom:-5rem}.sm\:-ml-20{margin-left:-5rem}.sm\:-mt-24{margin-top:-6rem}.sm\:-mr-24{margin-right:-6rem}.sm\:-mb-24{margin-bottom:-6rem}.sm\:-ml-24{margin-left:-6rem}.sm\:-mt-32{margin-top:-8rem}.sm\:-mr-32{margin-right:-8rem}.sm\:-mb-32{margin-bottom:-8rem}.sm\:-ml-32{margin-left:-8rem}.sm\:-mt-px{margin-top:-1px}.sm\:-mr-px{margin-right:-1px}.sm\:-mb-px{margin-bottom:-1px}.sm\:-ml-px{margin-left:-1px}.sm\:opacity-0{opacity:0}.sm\:opacity-25{opacity:.25}.sm\:opacity-50{opacity:.5}.sm\:opacity-75{opacity:.75}.sm\:opacity-100{opacity:1}.group:hover .sm\:group-hover\:opacity-0{opacity:0}.group:hover .sm\:group-hover\:opacity-25{opacity:.25}.group:hover .sm\:group-hover\:opacity-50{opacity:.5}.group:hover .sm\:group-hover\:opacity-75{opacity:.75}.group:hover .sm\:group-hover\:opacity-100{opacity:1}.sm\:overflow-auto{overflow:auto}.sm\:overflow-hidden{overflow:hidden}.sm\:overflow-visible{overflow:visible}.sm\:overflow-scroll{overflow:scroll}.sm\:overflow-x-auto{overflow-x:auto}.sm\:overflow-y-auto{overflow-y:auto}.sm\:overflow-x-hidden{overflow-x:hidden}.sm\:overflow-y-hidden{overflow-y:hidden}.sm\:overflow-x-visible{overflow-x:visible}.sm\:overflow-y-visible{overflow-y:visible}.sm\:overflow-x-scroll{overflow-x:scroll}.sm\:overflow-y-scroll{overflow-y:scroll}.sm\:scrolling-touch{-webkit-overflow-scrolling:touch}.sm\:scrolling-auto{-webkit-overflow-scrolling:auto}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:p-10{padding:2.5rem}.sm\:p-12{padding:3rem}.sm\:p-16{padding:4rem}.sm\:p-20{padding:5rem}.sm\:p-24{padding:6rem}.sm\:p-32{padding:8rem}.sm\:p-px{padding:1px}.sm\:py-0{padding-top:0;padding-bottom:0}.sm\:px-0{padding-left:0;padding-right:0}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:px-1{padding-left:.25rem;padding-right:.25rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:py-20{padding-top:5rem;padding-bottom:5rem}.sm\:px-20{padding-left:5rem;padding-right:5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:px-24{padding-left:6rem;padding-right:6rem}.sm\:py-32{padding-top:8rem;padding-bottom:8rem}.sm\:px-32{padding-left:8rem;padding-right:8rem}.sm\:py-px{padding-top:1px;padding-bottom:1px}.sm\:px-px{padding-left:1px;padding-right:1px}.sm\:pt-0{padding-top:0}.sm\:pr-0{padding-right:0}.sm\:pb-0{padding-bottom:0}.sm\:pl-0{padding-left:0}.sm\:pt-1{padding-top:.25rem}.sm\:pr-1{padding-right:.25rem}.sm\:pb-1{padding-bottom:.25rem}.sm\:pl-1{padding-left:.25rem}.sm\:pt-2{padding-top:.5rem}.sm\:pr-2{padding-right:.5rem}.sm\:pb-2{padding-bottom:.5rem}.sm\:pl-2{padding-left:.5rem}.sm\:pt-3{padding-top:.75rem}.sm\:pr-3{padding-right:.75rem}.sm\:pb-3{padding-bottom:.75rem}.sm\:pl-3{padding-left:.75rem}.sm\:pt-4{padding-top:1rem}.sm\:pr-4{padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:pl-4{padding-left:1rem}.sm\:pt-5{padding-top:1.25rem}.sm\:pr-5{padding-right:1.25rem}.sm\:pb-5{padding-bottom:1.25rem}.sm\:pl-5{padding-left:1.25rem}.sm\:pt-6{padding-top:1.5rem}.sm\:pr-6{padding-right:1.5rem}.sm\:pb-6{padding-bottom:1.5rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pt-8{padding-top:2rem}.sm\:pr-8{padding-right:2rem}.sm\:pb-8{padding-bottom:2rem}.sm\:pl-8{padding-left:2rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pr-10{padding-right:2.5rem}.sm\:pb-10{padding-bottom:2.5rem}.sm\:pl-10{padding-left:2.5rem}.sm\:pt-12{padding-top:3rem}.sm\:pr-12{padding-right:3rem}.sm\:pb-12{padding-bottom:3rem}.sm\:pl-12{padding-left:3rem}.sm\:pt-16{padding-top:4rem}.sm\:pr-16{padding-right:4rem}.sm\:pb-16{padding-bottom:4rem}.sm\:pl-16{padding-left:4rem}.sm\:pt-20{padding-top:5rem}.sm\:pr-20{padding-right:5rem}.sm\:pb-20{padding-bottom:5rem}.sm\:pl-20{padding-left:5rem}.sm\:pt-24{padding-top:6rem}.sm\:pr-24{padding-right:6rem}.sm\:pb-24{padding-bottom:6rem}.sm\:pl-24{padding-left:6rem}.sm\:pt-32{padding-top:8rem}.sm\:pr-32{padding-right:8rem}.sm\:pb-32{padding-bottom:8rem}.sm\:pl-32{padding-left:8rem}.sm\:pt-px{padding-top:1px}.sm\:pr-px{padding-right:1px}.sm\:pb-px{padding-bottom:1px}.sm\:pl-px{padding-left:1px}.sm\:pointer-events-none{pointer-events:none}.sm\:pointer-events-auto{pointer-events:auto}.sm\:static{position:static}.sm\:fixed{position:fixed}.sm\:absolute{position:absolute}.sm\:relative{position:relative}.sm\:sticky{position:sticky}.sm\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.sm\:pin{top:0;right:0;bottom:0;left:0}.sm\:pin-y{top:0;bottom:0}.sm\:pin-x{right:0;left:0}.sm\:pin-t{top:0}.sm\:pin-r{right:0}.sm\:pin-b{bottom:0}.sm\:pin-l{left:0}.sm\:resize-none{resize:none}.sm\:resize-y{resize:vertical}.sm\:resize-x{resize:horizontal}.sm\:resize{resize:both}.sm\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.sm\:shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.sm\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.sm\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.sm\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.sm\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:0 0}.sm\:table-auto{table-layout:auto}.sm\:table-fixed{table-layout:fixed}.sm\:text-left{text-align:left}.sm\:text-center{text-align:center}.sm\:text-right{text-align:right}.sm\:text-justify{text-align:justify}.sm\:text-transparent{color:transparent}.sm\:text-color-black{color:#000}.sm\:text-color-mine-shaft{color:#373737}.sm\:text-color-fuscous-gray{color:#4c4d4b}.sm\:text-color-emperor{color:#5d5d5d}.sm\:text-color-dove-gray{color:#646464}.sm\:text-color-boulder{color:#7b7b7b}.sm\:text-color-silver{color:#bbb}.sm\:text-color-alto{color:#dadada}.sm\:text-color-mercury{color:#e9e9e9}.sm\:text-color-seashell{color:#f1f1f1}.sm\:text-color-white{color:#fff}.sm\:text-color-orient{color:#005c7c}.sm\:text-color-shakespeare{color:#4ab9d4}.sm\:text-color-yellow-metal{color:#807040}.sm\:text-color-kumera{color:#8a741d}.sm\:text-color-olive{color:#8e7100}.sm\:text-color-barley-corn{color:#a0915e}.sm\:text-color-verdigris{color:#494a2d}.sm\:text-color-texas{color:#f9fb93}.sm\:text-color-ferra{color:#634849}.sm\:text-color-cherub{color:#fbe3e4}.sm\:text-color-cabbage-pont{color:#454e41}.sm\:text-color-tea-green{color:#cfefc2}.group:hover .sm\:group-hover\:text-transparent{color:transparent}.group:hover .sm\:group-hover\:text-color-black{color:#000}.group:hover .sm\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .sm\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .sm\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .sm\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .sm\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .sm\:group-hover\:text-color-silver{color:#bbb}.group:hover .sm\:group-hover\:text-color-alto{color:#dadada}.group:hover .sm\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .sm\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .sm\:group-hover\:text-color-white{color:#fff}.group:hover .sm\:group-hover\:text-color-orient{color:#005c7c}.group:hover .sm\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .sm\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .sm\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .sm\:group-hover\:text-color-olive{color:#8e7100}.group:hover .sm\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .sm\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .sm\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .sm\:group-hover\:text-color-ferra{color:#634849}.group:hover .sm\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .sm\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .sm\:group-hover\:text-color-tea-green{color:#cfefc2}.sm\:hover\:text-transparent:hover{color:transparent}.sm\:hover\:text-color-black:hover{color:#000}.sm\:hover\:text-color-mine-shaft:hover{color:#373737}.sm\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.sm\:hover\:text-color-emperor:hover{color:#5d5d5d}.sm\:hover\:text-color-dove-gray:hover{color:#646464}.sm\:hover\:text-color-boulder:hover{color:#7b7b7b}.sm\:hover\:text-color-silver:hover{color:#bbb}.sm\:hover\:text-color-alto:hover{color:#dadada}.sm\:hover\:text-color-mercury:hover{color:#e9e9e9}.sm\:hover\:text-color-seashell:hover{color:#f1f1f1}.sm\:hover\:text-color-white:hover{color:#fff}.sm\:hover\:text-color-orient:hover{color:#005c7c}.sm\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.sm\:hover\:text-color-yellow-metal:hover{color:#807040}.sm\:hover\:text-color-kumera:hover{color:#8a741d}.sm\:hover\:text-color-olive:hover{color:#8e7100}.sm\:hover\:text-color-barley-corn:hover{color:#a0915e}.sm\:hover\:text-color-verdigris:hover{color:#494a2d}.sm\:hover\:text-color-texas:hover{color:#f9fb93}.sm\:hover\:text-color-ferra:hover{color:#634849}.sm\:hover\:text-color-cherub:hover{color:#fbe3e4}.sm\:hover\:text-color-cabbage-pont:hover{color:#454e41}.sm\:hover\:text-color-tea-green:hover{color:#cfefc2}.sm\:focus\:text-transparent:focus{color:transparent}.sm\:focus\:text-color-black:focus{color:#000}.sm\:focus\:text-color-mine-shaft:focus{color:#373737}.sm\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.sm\:focus\:text-color-emperor:focus{color:#5d5d5d}.sm\:focus\:text-color-dove-gray:focus{color:#646464}.sm\:focus\:text-color-boulder:focus{color:#7b7b7b}.sm\:focus\:text-color-silver:focus{color:#bbb}.sm\:focus\:text-color-alto:focus{color:#dadada}.sm\:focus\:text-color-mercury:focus{color:#e9e9e9}.sm\:focus\:text-color-seashell:focus{color:#f1f1f1}.sm\:focus\:text-color-white:focus{color:#fff}.sm\:focus\:text-color-orient:focus{color:#005c7c}.sm\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.sm\:focus\:text-color-yellow-metal:focus{color:#807040}.sm\:focus\:text-color-kumera:focus{color:#8a741d}.sm\:focus\:text-color-olive:focus{color:#8e7100}.sm\:focus\:text-color-barley-corn:focus{color:#a0915e}.sm\:focus\:text-color-verdigris:focus{color:#494a2d}.sm\:focus\:text-color-texas:focus{color:#f9fb93}.sm\:focus\:text-color-ferra:focus{color:#634849}.sm\:focus\:text-color-cherub:focus{color:#fbe3e4}.sm\:focus\:text-color-cabbage-pont:focus{color:#454e41}.sm\:focus\:text-color-tea-green:focus{color:#cfefc2}.sm\:text-3xs{font-size:.667rem}.sm\:text-2xs{font-size:.8rem}.sm\:text-xs{font-size:.867rem}.sm\:text-sm{font-size:.933rem}.sm\:text-base{font-size:15px}.sm\:text-lg{font-size:1.067rem}.sm\:text-xl{font-size:1.2rem}.sm\:text-2xl{font-size:1.267rem}.sm\:text-3xl{font-size:1.933rem}.sm\:italic{font-style:italic}.sm\:roman{font-style:normal}.sm\:uppercase{text-transform:uppercase}.sm\:lowercase{text-transform:lowercase}.sm\:capitalize{text-transform:capitalize}.sm\:normal-case{text-transform:none}.sm\:underline{text-decoration:underline}.sm\:line-through{text-decoration:line-through}.sm\:no-underline{text-decoration:none}.sm\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sm\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.sm\:hover\:italic:hover{font-style:italic}.sm\:hover\:roman:hover{font-style:normal}.sm\:hover\:uppercase:hover{text-transform:uppercase}.sm\:hover\:lowercase:hover{text-transform:lowercase}.sm\:hover\:capitalize:hover{text-transform:capitalize}.sm\:hover\:normal-case:hover{text-transform:none}.sm\:hover\:underline:hover{text-decoration:underline}.sm\:hover\:line-through:hover{text-decoration:line-through}.sm\:hover\:no-underline:hover{text-decoration:none}.sm\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sm\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.sm\:focus\:italic:focus{font-style:italic}.sm\:focus\:roman:focus{font-style:normal}.sm\:focus\:uppercase:focus{text-transform:uppercase}.sm\:focus\:lowercase:focus{text-transform:lowercase}.sm\:focus\:capitalize:focus{text-transform:capitalize}.sm\:focus\:normal-case:focus{text-transform:none}.sm\:focus\:underline:focus{text-decoration:underline}.sm\:focus\:line-through:focus{text-decoration:line-through}.sm\:focus\:no-underline:focus{text-decoration:none}.sm\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sm\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.sm\:tracking-tight{letter-spacing:-.05em}.sm\:tracking-normal{letter-spacing:0}.sm\:tracking-wide{letter-spacing:.05em}.sm\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sm\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.sm\:align-baseline{vertical-align:baseline}.sm\:align-top{vertical-align:top}.sm\:align-middle{vertical-align:middle}.sm\:align-bottom{vertical-align:bottom}.sm\:align-text-top{vertical-align:text-top}.sm\:align-text-bottom{vertical-align:text-bottom}.sm\:visible{visibility:visible}.sm\:invisible{visibility:hidden}.sm\:whitespace-normal{white-space:normal}.sm\:whitespace-no-wrap{white-space:nowrap}.sm\:whitespace-pre{white-space:pre}.sm\:whitespace-pre-line{white-space:pre-line}.sm\:whitespace-pre-wrap{white-space:pre-wrap}.sm\:break-words{word-wrap:break-word}.sm\:break-normal{word-wrap:normal}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-1{width:.25rem}.sm\:w-2{width:.5rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-6{width:1.5rem}.sm\:w-8{width:2rem}.sm\:w-10{width:2.5rem}.sm\:w-12{width:3rem}.sm\:w-16{width:4rem}.sm\:w-24{width:6rem}.sm\:w-32{width:8rem}.sm\:w-40{width:10rem}.sm\:w-48{width:12rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:w-px{width:1px}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.33333%}.sm\:w-2\/3{width:66.66667%}.sm\:w-1\/4{width:25%}.sm\:w-3\/4{width:75%}.sm\:w-1\/5{width:20%}.sm\:w-2\/5{width:40%}.sm\:w-3\/5{width:60%}.sm\:w-4\/5{width:80%}.sm\:w-1\/6{width:16.66667%}.sm\:w-1\/8{width:12.5%}.sm\:w-1\/10{width:10%}.sm\:w-1\/12{width:8.33333%}.sm\:w-full{width:100%}.sm\:w-screen{width:100vw}.sm\:z-0{z-index:0}.sm\:z-10{z-index:10}.sm\:z-20{z-index:20}.sm\:z-30{z-index:30}.sm\:z-40{z-index:40}.sm\:z-50{z-index:50}.sm\:z-auto{z-index:auto}.sm\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.sm\:text-shadow-none{text-shadow:none}.sm\:gradient-grey,.sm\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.sm\:gradient-grey-reversed,.sm\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.sm\:pin-t8{top:2rem}.sm\:pin-t16{top:4rem}.sm\:pin-b24{bottom:12rem}.sm\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.sm\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.sm\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:768px){.md\:list-reset{list-style:none;padding:0}.md\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.md\:bg-fixed{background-attachment:fixed}.md\:bg-local{background-attachment:local}.md\:bg-scroll{background-attachment:scroll}.md\:bg-transparent{background-color:initial}.md\:bg-color-black{background-color:#000}.md\:bg-color-mine-shaft{background-color:#373737}.md\:bg-color-fuscous-gray{background-color:#4c4d4b}.md\:bg-color-emperor{background-color:#5d5d5d}.md\:bg-color-dove-gray{background-color:#646464}.md\:bg-color-boulder{background-color:#7b7b7b}.md\:bg-color-silver{background-color:#bbb}.md\:bg-color-alto{background-color:#dadada}.md\:bg-color-mercury{background-color:#e9e9e9}.md\:bg-color-seashell{background-color:#f1f1f1}.md\:bg-color-white{background-color:#fff}.md\:bg-color-orient{background-color:#005c7c}.md\:bg-color-shakespeare{background-color:#4ab9d4}.md\:bg-color-yellow-metal{background-color:#807040}.md\:bg-color-kumera{background-color:#8a741d}.md\:bg-color-olive{background-color:#8e7100}.md\:bg-color-barley-corn{background-color:#a0915e}.md\:bg-color-verdigris{background-color:#494a2d}.md\:bg-color-texas{background-color:#f9fb93}.md\:bg-color-ferra{background-color:#634849}.md\:bg-color-cherub{background-color:#fbe3e4}.md\:bg-color-cabbage-pont{background-color:#454e41}.md\:bg-color-tea-green{background-color:#cfefc2}.group:hover .md\:group-hover\:bg-transparent{background-color:initial}.group:hover .md\:group-hover\:bg-color-black{background-color:#000}.group:hover .md\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .md\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .md\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .md\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .md\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .md\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .md\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .md\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .md\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .md\:group-hover\:bg-color-white{background-color:#fff}.group:hover .md\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .md\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .md\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .md\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .md\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .md\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .md\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .md\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .md\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .md\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .md\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .md\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.md\:hover\:bg-transparent:hover{background-color:initial}.md\:hover\:bg-color-black:hover{background-color:#000}.md\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.md\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.md\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.md\:hover\:bg-color-dove-gray:hover{background-color:#646464}.md\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.md\:hover\:bg-color-silver:hover{background-color:#bbb}.md\:hover\:bg-color-alto:hover{background-color:#dadada}.md\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.md\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.md\:hover\:bg-color-white:hover{background-color:#fff}.md\:hover\:bg-color-orient:hover{background-color:#005c7c}.md\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.md\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.md\:hover\:bg-color-kumera:hover{background-color:#8a741d}.md\:hover\:bg-color-olive:hover{background-color:#8e7100}.md\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.md\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.md\:hover\:bg-color-texas:hover{background-color:#f9fb93}.md\:hover\:bg-color-ferra:hover{background-color:#634849}.md\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.md\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.md\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.md\:focus\:bg-transparent:focus{background-color:initial}.md\:focus\:bg-color-black:focus{background-color:#000}.md\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.md\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.md\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.md\:focus\:bg-color-dove-gray:focus{background-color:#646464}.md\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.md\:focus\:bg-color-silver:focus{background-color:#bbb}.md\:focus\:bg-color-alto:focus{background-color:#dadada}.md\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.md\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.md\:focus\:bg-color-white:focus{background-color:#fff}.md\:focus\:bg-color-orient:focus{background-color:#005c7c}.md\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.md\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.md\:focus\:bg-color-kumera:focus{background-color:#8a741d}.md\:focus\:bg-color-olive:focus{background-color:#8e7100}.md\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.md\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.md\:focus\:bg-color-texas:focus{background-color:#f9fb93}.md\:focus\:bg-color-ferra:focus{background-color:#634849}.md\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.md\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.md\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.md\:bg-bottom{background-position:bottom}.md\:bg-center{background-position:50%}.md\:bg-left{background-position:0}.md\:bg-left-bottom{background-position:0 100%}.md\:bg-left-top{background-position:0 0}.md\:bg-right{background-position:100%}.md\:bg-right-bottom{background-position:100% 100%}.md\:bg-right-top{background-position:100% 0}.md\:bg-top{background-position:top}.md\:bg-repeat{background-repeat:repeat}.md\:bg-no-repeat{background-repeat:no-repeat}.md\:bg-repeat-x{background-repeat:repeat-x}.md\:bg-repeat-y{background-repeat:repeat-y}.md\:bg-auto{background-size:auto}.md\:bg-cover{background-size:cover}.md\:bg-contain{background-size:contain}.md\:border-transparent{border-color:transparent}.md\:border-color-black{border-color:#000}.md\:border-color-mine-shaft{border-color:#373737}.md\:border-color-fuscous-gray{border-color:#4c4d4b}.md\:border-color-emperor{border-color:#5d5d5d}.md\:border-color-dove-gray{border-color:#646464}.md\:border-color-boulder{border-color:#7b7b7b}.md\:border-color-silver{border-color:#bbb}.md\:border-color-alto{border-color:#dadada}.md\:border-color-mercury{border-color:#e9e9e9}.md\:border-color-seashell{border-color:#f1f1f1}.md\:border-color-white{border-color:#fff}.md\:border-color-orient{border-color:#005c7c}.md\:border-color-shakespeare{border-color:#4ab9d4}.md\:border-color-yellow-metal{border-color:#807040}.md\:border-color-kumera{border-color:#8a741d}.md\:border-color-olive{border-color:#8e7100}.md\:border-color-barley-corn{border-color:#a0915e}.md\:border-color-verdigris{border-color:#494a2d}.md\:border-color-texas{border-color:#f9fb93}.md\:border-color-ferra{border-color:#634849}.md\:border-color-cherub{border-color:#fbe3e4}.md\:border-color-cabbage-pont{border-color:#454e41}.md\:border-color-tea-green{border-color:#cfefc2}.md\:hover\:border-transparent:hover{border-color:transparent}.md\:hover\:border-color-black:hover{border-color:#000}.md\:hover\:border-color-mine-shaft:hover{border-color:#373737}.md\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.md\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.md\:hover\:border-color-dove-gray:hover{border-color:#646464}.md\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.md\:hover\:border-color-silver:hover{border-color:#bbb}.md\:hover\:border-color-alto:hover{border-color:#dadada}.md\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.md\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.md\:hover\:border-color-white:hover{border-color:#fff}.md\:hover\:border-color-orient:hover{border-color:#005c7c}.md\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.md\:hover\:border-color-yellow-metal:hover{border-color:#807040}.md\:hover\:border-color-kumera:hover{border-color:#8a741d}.md\:hover\:border-color-olive:hover{border-color:#8e7100}.md\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.md\:hover\:border-color-verdigris:hover{border-color:#494a2d}.md\:hover\:border-color-texas:hover{border-color:#f9fb93}.md\:hover\:border-color-ferra:hover{border-color:#634849}.md\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.md\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.md\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.md\:focus\:border-transparent:focus{border-color:transparent}.md\:focus\:border-color-black:focus{border-color:#000}.md\:focus\:border-color-mine-shaft:focus{border-color:#373737}.md\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.md\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.md\:focus\:border-color-dove-gray:focus{border-color:#646464}.md\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.md\:focus\:border-color-silver:focus{border-color:#bbb}.md\:focus\:border-color-alto:focus{border-color:#dadada}.md\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.md\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.md\:focus\:border-color-white:focus{border-color:#fff}.md\:focus\:border-color-orient:focus{border-color:#005c7c}.md\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.md\:focus\:border-color-yellow-metal:focus{border-color:#807040}.md\:focus\:border-color-kumera:focus{border-color:#8a741d}.md\:focus\:border-color-olive:focus{border-color:#8e7100}.md\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.md\:focus\:border-color-verdigris:focus{border-color:#494a2d}.md\:focus\:border-color-texas:focus{border-color:#f9fb93}.md\:focus\:border-color-ferra:focus{border-color:#634849}.md\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.md\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.md\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.md\:rounded-none{border-radius:0}.md\:rounded-sm{border-radius:.125rem}.md\:rounded{border-radius:.25rem}.md\:rounded-lg{border-radius:.5rem}.md\:rounded-full{border-radius:9999px}.md\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.md\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.md\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.md\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.md\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.md\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.md\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.md\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.md\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.md\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.md\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.md\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.md\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.md\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.md\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.md\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.md\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.md\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.md\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.md\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.md\:rounded-tl-none{border-top-left-radius:0}.md\:rounded-tr-none{border-top-right-radius:0}.md\:rounded-br-none{border-bottom-right-radius:0}.md\:rounded-bl-none{border-bottom-left-radius:0}.md\:rounded-tl-sm{border-top-left-radius:.125rem}.md\:rounded-tr-sm{border-top-right-radius:.125rem}.md\:rounded-br-sm{border-bottom-right-radius:.125rem}.md\:rounded-bl-sm{border-bottom-left-radius:.125rem}.md\:rounded-tl{border-top-left-radius:.25rem}.md\:rounded-tr{border-top-right-radius:.25rem}.md\:rounded-br{border-bottom-right-radius:.25rem}.md\:rounded-bl{border-bottom-left-radius:.25rem}.md\:rounded-tl-lg{border-top-left-radius:.5rem}.md\:rounded-tr-lg{border-top-right-radius:.5rem}.md\:rounded-br-lg{border-bottom-right-radius:.5rem}.md\:rounded-bl-lg{border-bottom-left-radius:.5rem}.md\:rounded-tl-full{border-top-left-radius:9999px}.md\:rounded-tr-full{border-top-right-radius:9999px}.md\:rounded-br-full{border-bottom-right-radius:9999px}.md\:rounded-bl-full{border-bottom-left-radius:9999px}.md\:border-solid{border-style:solid}.md\:border-dashed{border-style:dashed}.md\:border-dotted{border-style:dotted}.md\:border-none{border-style:none}.md\:border-0{border-width:0}.md\:border-2{border-width:2px}.md\:border-4{border-width:4px}.md\:border-8{border-width:8px}.md\:border{border-width:1px}.md\:border-t-0{border-top-width:0}.md\:border-r-0{border-right-width:0}.md\:border-b-0{border-bottom-width:0}.md\:border-l-0{border-left-width:0}.md\:border-t-2{border-top-width:2px}.md\:border-r-2{border-right-width:2px}.md\:border-b-2{border-bottom-width:2px}.md\:border-l-2{border-left-width:2px}.md\:border-t-4{border-top-width:4px}.md\:border-r-4{border-right-width:4px}.md\:border-b-4{border-bottom-width:4px}.md\:border-l-4{border-left-width:4px}.md\:border-t-8{border-top-width:8px}.md\:border-r-8{border-right-width:8px}.md\:border-b-8{border-bottom-width:8px}.md\:border-l-8{border-left-width:8px}.md\:border-t{border-top-width:1px}.md\:border-r{border-right-width:1px}.md\:border-b{border-bottom-width:1px}.md\:border-l{border-left-width:1px}.md\:cursor-auto{cursor:auto}.md\:cursor-default{cursor:default}.md\:cursor-pointer{cursor:pointer}.md\:cursor-wait{cursor:wait}.md\:cursor-move{cursor:move}.md\:cursor-not-allowed{cursor:not-allowed}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:inline{display:inline}.md\:table{display:table}.md\:table-row{display:table-row}.md\:table-cell{display:table-cell}.md\:hidden{display:none}.md\:hover\:block:hover{display:block}.md\:hover\:inline-block:hover{display:inline-block}.md\:hover\:inline:hover{display:inline}.md\:hover\:table:hover{display:table}.md\:hover\:table-row:hover{display:table-row}.md\:hover\:table-cell:hover{display:table-cell}.md\:hover\:hidden:hover{display:none}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.md\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.md\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.md\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.md\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.md\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.md\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.md\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.md\:self-auto{-ms-flex-item-align:auto;align-self:auto}.md\:self-start{-ms-flex-item-align:start;align-self:flex-start}.md\:self-end{-ms-flex-item-align:end;align-self:flex-end}.md\:self-center{-ms-flex-item-align:center;align-self:center}.md\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.md\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.md\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.md\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.md\:content-center{-ms-flex-line-pack:center;align-content:center}.md\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.md\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.md\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.md\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.md\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.md\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.md\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.md\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.md\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.md\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.md\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.md\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.md\:float-right{float:right}.md\:float-left{float:left}.md\:float-none{float:none}.md\:clearfix:after{content:"";display:table;clear:both}.md\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.md\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.md\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.md\:font-hairline{font-weight:100}.md\:font-thin{font-weight:200}.md\:font-light{font-weight:300}.md\:font-normal{font-weight:400}.md\:font-medium{font-weight:500}.md\:font-semibold{font-weight:600}.md\:font-bold{font-weight:700}.md\:font-extrabold{font-weight:800}.md\:font-black{font-weight:900}.md\:hover\:font-hairline:hover{font-weight:100}.md\:hover\:font-thin:hover{font-weight:200}.md\:hover\:font-light:hover{font-weight:300}.md\:hover\:font-normal:hover{font-weight:400}.md\:hover\:font-medium:hover{font-weight:500}.md\:hover\:font-semibold:hover{font-weight:600}.md\:hover\:font-bold:hover{font-weight:700}.md\:hover\:font-extrabold:hover{font-weight:800}.md\:hover\:font-black:hover{font-weight:900}.md\:focus\:font-hairline:focus{font-weight:100}.md\:focus\:font-thin:focus{font-weight:200}.md\:focus\:font-light:focus{font-weight:300}.md\:focus\:font-normal:focus{font-weight:400}.md\:focus\:font-medium:focus{font-weight:500}.md\:focus\:font-semibold:focus{font-weight:600}.md\:focus\:font-bold:focus{font-weight:700}.md\:focus\:font-extrabold:focus{font-weight:800}.md\:focus\:font-black:focus{font-weight:900}.md\:h-1{height:.25rem}.md\:h-2{height:.5rem}.md\:h-3{height:.75rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-6{height:1.5rem}.md\:h-8{height:2rem}.md\:h-10{height:2.5rem}.md\:h-12{height:3rem}.md\:h-16{height:4rem}.md\:h-24{height:6rem}.md\:h-32{height:8rem}.md\:h-48{height:12rem}.md\:h-64{height:16rem}.md\:h-auto{height:auto}.md\:h-px{height:1px}.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:h-screen-40-width{height:40vw}.md\:h-screen-60-width{height:60vw}.md\:h-screen-full-width{height:100vw}.md\:leading-zero{line-height:0}.md\:leading-none{line-height:1}.md\:leading-tight{line-height:1.25}.md\:leading-normal{line-height:1.5}.md\:leading-loose{line-height:2}.md\:m-0{margin:0}.md\:m-1{margin:.25rem}.md\:m-2{margin:.5rem}.md\:m-3{margin:.75rem}.md\:m-4{margin:1rem}.md\:m-5{margin:1.25rem}.md\:m-6{margin:1.5rem}.md\:m-8{margin:2rem}.md\:m-10{margin:2.5rem}.md\:m-12{margin:3rem}.md\:m-16{margin:4rem}.md\:m-20{margin:5rem}.md\:m-24{margin:6rem}.md\:m-32{margin:8rem}.md\:m-auto{margin:auto}.md\:m-px{margin:1px}.md\:my-0{margin-top:0;margin-bottom:0}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-1{margin-top:.25rem;margin-bottom:.25rem}.md\:mx-1{margin-left:.25rem;margin-right:.25rem}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-2{margin-left:.5rem;margin-right:.5rem}.md\:my-3{margin-top:.75rem;margin-bottom:.75rem}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:my-4{margin-top:1rem;margin-bottom:1rem}.md\:mx-4{margin-left:1rem;margin-right:1rem}.md\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.md\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.md\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.md\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.md\:my-8{margin-top:2rem;margin-bottom:2rem}.md\:mx-8{margin-left:2rem;margin-right:2rem}.md\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.md\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.md\:my-12{margin-top:3rem;margin-bottom:3rem}.md\:mx-12{margin-left:3rem;margin-right:3rem}.md\:my-16{margin-top:4rem;margin-bottom:4rem}.md\:mx-16{margin-left:4rem;margin-right:4rem}.md\:my-20{margin-top:5rem;margin-bottom:5rem}.md\:mx-20{margin-left:5rem;margin-right:5rem}.md\:my-24{margin-top:6rem;margin-bottom:6rem}.md\:mx-24{margin-left:6rem;margin-right:6rem}.md\:my-32{margin-top:8rem;margin-bottom:8rem}.md\:mx-32{margin-left:8rem;margin-right:8rem}.md\:my-auto{margin-top:auto;margin-bottom:auto}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:my-px{margin-top:1px;margin-bottom:1px}.md\:mx-px{margin-left:1px;margin-right:1px}.md\:mt-0{margin-top:0}.md\:mr-0{margin-right:0}.md\:mb-0{margin-bottom:0}.md\:ml-0{margin-left:0}.md\:mt-1{margin-top:.25rem}.md\:mr-1{margin-right:.25rem}.md\:mb-1{margin-bottom:.25rem}.md\:ml-1{margin-left:.25rem}.md\:mt-2{margin-top:.5rem}.md\:mr-2{margin-right:.5rem}.md\:mb-2{margin-bottom:.5rem}.md\:ml-2{margin-left:.5rem}.md\:mt-3{margin-top:.75rem}.md\:mr-3{margin-right:.75rem}.md\:mb-3{margin-bottom:.75rem}.md\:ml-3{margin-left:.75rem}.md\:mt-4{margin-top:1rem}.md\:mr-4{margin-right:1rem}.md\:mb-4{margin-bottom:1rem}.md\:ml-4{margin-left:1rem}.md\:mt-5{margin-top:1.25rem}.md\:mr-5{margin-right:1.25rem}.md\:mb-5{margin-bottom:1.25rem}.md\:ml-5{margin-left:1.25rem}.md\:mt-6{margin-top:1.5rem}.md\:mr-6{margin-right:1.5rem}.md\:mb-6{margin-bottom:1.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mt-8{margin-top:2rem}.md\:mr-8{margin-right:2rem}.md\:mb-8{margin-bottom:2rem}.md\:ml-8{margin-left:2rem}.md\:mt-10{margin-top:2.5rem}.md\:mr-10{margin-right:2.5rem}.md\:mb-10{margin-bottom:2.5rem}.md\:ml-10{margin-left:2.5rem}.md\:mt-12{margin-top:3rem}.md\:mr-12{margin-right:3rem}.md\:mb-12{margin-bottom:3rem}.md\:ml-12{margin-left:3rem}.md\:mt-16{margin-top:4rem}.md\:mr-16{margin-right:4rem}.md\:mb-16{margin-bottom:4rem}.md\:ml-16{margin-left:4rem}.md\:mt-20{margin-top:5rem}.md\:mr-20{margin-right:5rem}.md\:mb-20{margin-bottom:5rem}.md\:ml-20{margin-left:5rem}.md\:mt-24{margin-top:6rem}.md\:mr-24{margin-right:6rem}.md\:mb-24{margin-bottom:6rem}.md\:ml-24{margin-left:6rem}.md\:mt-32{margin-top:8rem}.md\:mr-32{margin-right:8rem}.md\:mb-32{margin-bottom:8rem}.md\:ml-32{margin-left:8rem}.md\:mt-auto{margin-top:auto}.md\:mr-auto{margin-right:auto}.md\:mb-auto{margin-bottom:auto}.md\:ml-auto{margin-left:auto}.md\:mt-px{margin-top:1px}.md\:mr-px{margin-right:1px}.md\:mb-px{margin-bottom:1px}.md\:ml-px{margin-left:1px}.md\:max-h-full{max-height:100%}.md\:max-h-screen{max-height:100vh}.md\:max-w-sm{max-width:576px}.md\:max-w-md{max-width:768px}.md\:max-w-lg{max-width:992px}.md\:max-w-xl{max-width:1200px}.md\:max-w-full{max-width:100%}.md\:min-h-0{min-height:0}.md\:min-h-full{min-height:100%}.md\:min-h-screen{min-height:100vh}.md\:min-w-0{min-width:0}.md\:min-w-full{min-width:100%}.md\:-m-0{margin:0}.md\:-m-1{margin:-.25rem}.md\:-m-2{margin:-.5rem}.md\:-m-3{margin:-.75rem}.md\:-m-4{margin:-1rem}.md\:-m-5{margin:-1.25rem}.md\:-m-6{margin:-1.5rem}.md\:-m-8{margin:-2rem}.md\:-m-10{margin:-2.5rem}.md\:-m-12{margin:-3rem}.md\:-m-16{margin:-4rem}.md\:-m-20{margin:-5rem}.md\:-m-24{margin:-6rem}.md\:-m-32{margin:-8rem}.md\:-m-px{margin:-1px}.md\:-my-0{margin-top:0;margin-bottom:0}.md\:-mx-0{margin-left:0;margin-right:0}.md\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.md\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.md\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.md\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.md\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.md\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.md\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.md\:-mx-4{margin-left:-1rem;margin-right:-1rem}.md\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.md\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.md\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.md\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.md\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.md\:-mx-8{margin-left:-2rem;margin-right:-2rem}.md\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.md\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.md\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.md\:-mx-12{margin-left:-3rem;margin-right:-3rem}.md\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.md\:-mx-16{margin-left:-4rem;margin-right:-4rem}.md\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.md\:-mx-20{margin-left:-5rem;margin-right:-5rem}.md\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.md\:-mx-24{margin-left:-6rem;margin-right:-6rem}.md\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.md\:-mx-32{margin-left:-8rem;margin-right:-8rem}.md\:-my-px{margin-top:-1px;margin-bottom:-1px}.md\:-mx-px{margin-left:-1px;margin-right:-1px}.md\:-mt-0{margin-top:0}.md\:-mr-0{margin-right:0}.md\:-mb-0{margin-bottom:0}.md\:-ml-0{margin-left:0}.md\:-mt-1{margin-top:-.25rem}.md\:-mr-1{margin-right:-.25rem}.md\:-mb-1{margin-bottom:-.25rem}.md\:-ml-1{margin-left:-.25rem}.md\:-mt-2{margin-top:-.5rem}.md\:-mr-2{margin-right:-.5rem}.md\:-mb-2{margin-bottom:-.5rem}.md\:-ml-2{margin-left:-.5rem}.md\:-mt-3{margin-top:-.75rem}.md\:-mr-3{margin-right:-.75rem}.md\:-mb-3{margin-bottom:-.75rem}.md\:-ml-3{margin-left:-.75rem}.md\:-mt-4{margin-top:-1rem}.md\:-mr-4{margin-right:-1rem}.md\:-mb-4{margin-bottom:-1rem}.md\:-ml-4{margin-left:-1rem}.md\:-mt-5{margin-top:-1.25rem}.md\:-mr-5{margin-right:-1.25rem}.md\:-mb-5{margin-bottom:-1.25rem}.md\:-ml-5{margin-left:-1.25rem}.md\:-mt-6{margin-top:-1.5rem}.md\:-mr-6{margin-right:-1.5rem}.md\:-mb-6{margin-bottom:-1.5rem}.md\:-ml-6{margin-left:-1.5rem}.md\:-mt-8{margin-top:-2rem}.md\:-mr-8{margin-right:-2rem}.md\:-mb-8{margin-bottom:-2rem}.md\:-ml-8{margin-left:-2rem}.md\:-mt-10{margin-top:-2.5rem}.md\:-mr-10{margin-right:-2.5rem}.md\:-mb-10{margin-bottom:-2.5rem}.md\:-ml-10{margin-left:-2.5rem}.md\:-mt-12{margin-top:-3rem}.md\:-mr-12{margin-right:-3rem}.md\:-mb-12{margin-bottom:-3rem}.md\:-ml-12{margin-left:-3rem}.md\:-mt-16{margin-top:-4rem}.md\:-mr-16{margin-right:-4rem}.md\:-mb-16{margin-bottom:-4rem}.md\:-ml-16{margin-left:-4rem}.md\:-mt-20{margin-top:-5rem}.md\:-mr-20{margin-right:-5rem}.md\:-mb-20{margin-bottom:-5rem}.md\:-ml-20{margin-left:-5rem}.md\:-mt-24{margin-top:-6rem}.md\:-mr-24{margin-right:-6rem}.md\:-mb-24{margin-bottom:-6rem}.md\:-ml-24{margin-left:-6rem}.md\:-mt-32{margin-top:-8rem}.md\:-mr-32{margin-right:-8rem}.md\:-mb-32{margin-bottom:-8rem}.md\:-ml-32{margin-left:-8rem}.md\:-mt-px{margin-top:-1px}.md\:-mr-px{margin-right:-1px}.md\:-mb-px{margin-bottom:-1px}.md\:-ml-px{margin-left:-1px}.md\:opacity-0{opacity:0}.md\:opacity-25{opacity:.25}.md\:opacity-50{opacity:.5}.md\:opacity-75{opacity:.75}.md\:opacity-100{opacity:1}.group:hover .md\:group-hover\:opacity-0{opacity:0}.group:hover .md\:group-hover\:opacity-25{opacity:.25}.group:hover .md\:group-hover\:opacity-50{opacity:.5}.group:hover .md\:group-hover\:opacity-75{opacity:.75}.group:hover .md\:group-hover\:opacity-100{opacity:1}.md\:overflow-auto{overflow:auto}.md\:overflow-hidden{overflow:hidden}.md\:overflow-visible{overflow:visible}.md\:overflow-scroll{overflow:scroll}.md\:overflow-x-auto{overflow-x:auto}.md\:overflow-y-auto{overflow-y:auto}.md\:overflow-x-hidden{overflow-x:hidden}.md\:overflow-y-hidden{overflow-y:hidden}.md\:overflow-x-visible{overflow-x:visible}.md\:overflow-y-visible{overflow-y:visible}.md\:overflow-x-scroll{overflow-x:scroll}.md\:overflow-y-scroll{overflow-y:scroll}.md\:scrolling-touch{-webkit-overflow-scrolling:touch}.md\:scrolling-auto{-webkit-overflow-scrolling:auto}.md\:p-0{padding:0}.md\:p-1{padding:.25rem}.md\:p-2{padding:.5rem}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:p-10{padding:2.5rem}.md\:p-12{padding:3rem}.md\:p-16{padding:4rem}.md\:p-20{padding:5rem}.md\:p-24{padding:6rem}.md\:p-32{padding:8rem}.md\:p-px{padding:1px}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-0{padding-left:0;padding-right:0}.md\:py-1{padding-top:.25rem;padding-bottom:.25rem}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-3{padding-top:.75rem;padding-bottom:.75rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:py-4{padding-top:1rem;padding-bottom:1rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:px-12{padding-left:3rem;padding-right:3rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:py-24{padding-top:6rem;padding-bottom:6rem}.md\:px-24{padding-left:6rem;padding-right:6rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:px-32{padding-left:8rem;padding-right:8rem}.md\:py-px{padding-top:1px;padding-bottom:1px}.md\:px-px{padding-left:1px;padding-right:1px}.md\:pt-0{padding-top:0}.md\:pr-0{padding-right:0}.md\:pb-0{padding-bottom:0}.md\:pl-0{padding-left:0}.md\:pt-1{padding-top:.25rem}.md\:pr-1{padding-right:.25rem}.md\:pb-1{padding-bottom:.25rem}.md\:pl-1{padding-left:.25rem}.md\:pt-2{padding-top:.5rem}.md\:pr-2{padding-right:.5rem}.md\:pb-2{padding-bottom:.5rem}.md\:pl-2{padding-left:.5rem}.md\:pt-3{padding-top:.75rem}.md\:pr-3{padding-right:.75rem}.md\:pb-3{padding-bottom:.75rem}.md\:pl-3{padding-left:.75rem}.md\:pt-4{padding-top:1rem}.md\:pr-4{padding-right:1rem}.md\:pb-4{padding-bottom:1rem}.md\:pl-4{padding-left:1rem}.md\:pt-5{padding-top:1.25rem}.md\:pr-5{padding-right:1.25rem}.md\:pb-5{padding-bottom:1.25rem}.md\:pl-5{padding-left:1.25rem}.md\:pt-6{padding-top:1.5rem}.md\:pr-6{padding-right:1.5rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pl-6{padding-left:1.5rem}.md\:pt-8{padding-top:2rem}.md\:pr-8{padding-right:2rem}.md\:pb-8{padding-bottom:2rem}.md\:pl-8{padding-left:2rem}.md\:pt-10{padding-top:2.5rem}.md\:pr-10{padding-right:2.5rem}.md\:pb-10{padding-bottom:2.5rem}.md\:pl-10{padding-left:2.5rem}.md\:pt-12{padding-top:3rem}.md\:pr-12{padding-right:3rem}.md\:pb-12{padding-bottom:3rem}.md\:pl-12{padding-left:3rem}.md\:pt-16{padding-top:4rem}.md\:pr-16{padding-right:4rem}.md\:pb-16{padding-bottom:4rem}.md\:pl-16{padding-left:4rem}.md\:pt-20{padding-top:5rem}.md\:pr-20{padding-right:5rem}.md\:pb-20{padding-bottom:5rem}.md\:pl-20{padding-left:5rem}.md\:pt-24{padding-top:6rem}.md\:pr-24{padding-right:6rem}.md\:pb-24{padding-bottom:6rem}.md\:pl-24{padding-left:6rem}.md\:pt-32{padding-top:8rem}.md\:pr-32{padding-right:8rem}.md\:pb-32{padding-bottom:8rem}.md\:pl-32{padding-left:8rem}.md\:pt-px{padding-top:1px}.md\:pr-px{padding-right:1px}.md\:pb-px{padding-bottom:1px}.md\:pl-px{padding-left:1px}.md\:pointer-events-none{pointer-events:none}.md\:pointer-events-auto{pointer-events:auto}.md\:static{position:static}.md\:fixed{position:fixed}.md\:absolute{position:absolute}.md\:relative{position:relative}.md\:sticky{position:sticky}.md\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.md\:pin{top:0;right:0;bottom:0;left:0}.md\:pin-y{top:0;bottom:0}.md\:pin-x{right:0;left:0}.md\:pin-t{top:0}.md\:pin-r{right:0}.md\:pin-b{bottom:0}.md\:pin-l{left:0}.md\:resize-none{resize:none}.md\:resize-y{resize:vertical}.md\:resize-x{resize:horizontal}.md\:resize{resize:both}.md\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.md\:shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.md\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.md\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.md\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.md\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:0 0}.md\:table-auto{table-layout:auto}.md\:table-fixed{table-layout:fixed}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-right{text-align:right}.md\:text-justify{text-align:justify}.md\:text-transparent{color:transparent}.md\:text-color-black{color:#000}.md\:text-color-mine-shaft{color:#373737}.md\:text-color-fuscous-gray{color:#4c4d4b}.md\:text-color-emperor{color:#5d5d5d}.md\:text-color-dove-gray{color:#646464}.md\:text-color-boulder{color:#7b7b7b}.md\:text-color-silver{color:#bbb}.md\:text-color-alto{color:#dadada}.md\:text-color-mercury{color:#e9e9e9}.md\:text-color-seashell{color:#f1f1f1}.md\:text-color-white{color:#fff}.md\:text-color-orient{color:#005c7c}.md\:text-color-shakespeare{color:#4ab9d4}.md\:text-color-yellow-metal{color:#807040}.md\:text-color-kumera{color:#8a741d}.md\:text-color-olive{color:#8e7100}.md\:text-color-barley-corn{color:#a0915e}.md\:text-color-verdigris{color:#494a2d}.md\:text-color-texas{color:#f9fb93}.md\:text-color-ferra{color:#634849}.md\:text-color-cherub{color:#fbe3e4}.md\:text-color-cabbage-pont{color:#454e41}.md\:text-color-tea-green{color:#cfefc2}.group:hover .md\:group-hover\:text-transparent{color:transparent}.group:hover .md\:group-hover\:text-color-black{color:#000}.group:hover .md\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .md\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .md\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .md\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .md\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .md\:group-hover\:text-color-silver{color:#bbb}.group:hover .md\:group-hover\:text-color-alto{color:#dadada}.group:hover .md\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .md\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .md\:group-hover\:text-color-white{color:#fff}.group:hover .md\:group-hover\:text-color-orient{color:#005c7c}.group:hover .md\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .md\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .md\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .md\:group-hover\:text-color-olive{color:#8e7100}.group:hover .md\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .md\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .md\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .md\:group-hover\:text-color-ferra{color:#634849}.group:hover .md\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .md\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .md\:group-hover\:text-color-tea-green{color:#cfefc2}.md\:hover\:text-transparent:hover{color:transparent}.md\:hover\:text-color-black:hover{color:#000}.md\:hover\:text-color-mine-shaft:hover{color:#373737}.md\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.md\:hover\:text-color-emperor:hover{color:#5d5d5d}.md\:hover\:text-color-dove-gray:hover{color:#646464}.md\:hover\:text-color-boulder:hover{color:#7b7b7b}.md\:hover\:text-color-silver:hover{color:#bbb}.md\:hover\:text-color-alto:hover{color:#dadada}.md\:hover\:text-color-mercury:hover{color:#e9e9e9}.md\:hover\:text-color-seashell:hover{color:#f1f1f1}.md\:hover\:text-color-white:hover{color:#fff}.md\:hover\:text-color-orient:hover{color:#005c7c}.md\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.md\:hover\:text-color-yellow-metal:hover{color:#807040}.md\:hover\:text-color-kumera:hover{color:#8a741d}.md\:hover\:text-color-olive:hover{color:#8e7100}.md\:hover\:text-color-barley-corn:hover{color:#a0915e}.md\:hover\:text-color-verdigris:hover{color:#494a2d}.md\:hover\:text-color-texas:hover{color:#f9fb93}.md\:hover\:text-color-ferra:hover{color:#634849}.md\:hover\:text-color-cherub:hover{color:#fbe3e4}.md\:hover\:text-color-cabbage-pont:hover{color:#454e41}.md\:hover\:text-color-tea-green:hover{color:#cfefc2}.md\:focus\:text-transparent:focus{color:transparent}.md\:focus\:text-color-black:focus{color:#000}.md\:focus\:text-color-mine-shaft:focus{color:#373737}.md\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.md\:focus\:text-color-emperor:focus{color:#5d5d5d}.md\:focus\:text-color-dove-gray:focus{color:#646464}.md\:focus\:text-color-boulder:focus{color:#7b7b7b}.md\:focus\:text-color-silver:focus{color:#bbb}.md\:focus\:text-color-alto:focus{color:#dadada}.md\:focus\:text-color-mercury:focus{color:#e9e9e9}.md\:focus\:text-color-seashell:focus{color:#f1f1f1}.md\:focus\:text-color-white:focus{color:#fff}.md\:focus\:text-color-orient:focus{color:#005c7c}.md\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.md\:focus\:text-color-yellow-metal:focus{color:#807040}.md\:focus\:text-color-kumera:focus{color:#8a741d}.md\:focus\:text-color-olive:focus{color:#8e7100}.md\:focus\:text-color-barley-corn:focus{color:#a0915e}.md\:focus\:text-color-verdigris:focus{color:#494a2d}.md\:focus\:text-color-texas:focus{color:#f9fb93}.md\:focus\:text-color-ferra:focus{color:#634849}.md\:focus\:text-color-cherub:focus{color:#fbe3e4}.md\:focus\:text-color-cabbage-pont:focus{color:#454e41}.md\:focus\:text-color-tea-green:focus{color:#cfefc2}.md\:text-3xs{font-size:.667rem}.md\:text-2xs{font-size:.8rem}.md\:text-xs{font-size:.867rem}.md\:text-sm{font-size:.933rem}.md\:text-base{font-size:15px}.md\:text-lg{font-size:1.067rem}.md\:text-xl{font-size:1.2rem}.md\:text-2xl{font-size:1.267rem}.md\:text-3xl{font-size:1.933rem}.md\:italic{font-style:italic}.md\:roman{font-style:normal}.md\:uppercase{text-transform:uppercase}.md\:lowercase{text-transform:lowercase}.md\:capitalize{text-transform:capitalize}.md\:normal-case{text-transform:none}.md\:underline{text-decoration:underline}.md\:line-through{text-decoration:line-through}.md\:no-underline{text-decoration:none}.md\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.md\:hover\:italic:hover{font-style:italic}.md\:hover\:roman:hover{font-style:normal}.md\:hover\:uppercase:hover{text-transform:uppercase}.md\:hover\:lowercase:hover{text-transform:lowercase}.md\:hover\:capitalize:hover{text-transform:capitalize}.md\:hover\:normal-case:hover{text-transform:none}.md\:hover\:underline:hover{text-decoration:underline}.md\:hover\:line-through:hover{text-decoration:line-through}.md\:hover\:no-underline:hover{text-decoration:none}.md\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.md\:focus\:italic:focus{font-style:italic}.md\:focus\:roman:focus{font-style:normal}.md\:focus\:uppercase:focus{text-transform:uppercase}.md\:focus\:lowercase:focus{text-transform:lowercase}.md\:focus\:capitalize:focus{text-transform:capitalize}.md\:focus\:normal-case:focus{text-transform:none}.md\:focus\:underline:focus{text-decoration:underline}.md\:focus\:line-through:focus{text-decoration:line-through}.md\:focus\:no-underline:focus{text-decoration:none}.md\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.md\:tracking-tight{letter-spacing:-.05em}.md\:tracking-normal{letter-spacing:0}.md\:tracking-wide{letter-spacing:.05em}.md\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.md\:align-baseline{vertical-align:baseline}.md\:align-top{vertical-align:top}.md\:align-middle{vertical-align:middle}.md\:align-bottom{vertical-align:bottom}.md\:align-text-top{vertical-align:text-top}.md\:align-text-bottom{vertical-align:text-bottom}.md\:visible{visibility:visible}.md\:invisible{visibility:hidden}.md\:whitespace-normal{white-space:normal}.md\:whitespace-no-wrap{white-space:nowrap}.md\:whitespace-pre{white-space:pre}.md\:whitespace-pre-line{white-space:pre-line}.md\:whitespace-pre-wrap{white-space:pre-wrap}.md\:break-words{word-wrap:break-word}.md\:break-normal{word-wrap:normal}.md\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md\:w-1{width:.25rem}.md\:w-2{width:.5rem}.md\:w-3{width:.75rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-6{width:1.5rem}.md\:w-8{width:2rem}.md\:w-10{width:2.5rem}.md\:w-12{width:3rem}.md\:w-16{width:4rem}.md\:w-24{width:6rem}.md\:w-32{width:8rem}.md\:w-40{width:10rem}.md\:w-48{width:12rem}.md\:w-56{width:14rem}.md\:w-64{width:16rem}.md\:w-auto{width:auto}.md\:w-px{width:1px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.33333%}.md\:w-2\/3{width:66.66667%}.md\:w-1\/4{width:25%}.md\:w-3\/4{width:75%}.md\:w-1\/5{width:20%}.md\:w-2\/5{width:40%}.md\:w-3\/5{width:60%}.md\:w-4\/5{width:80%}.md\:w-1\/6{width:16.66667%}.md\:w-1\/8{width:12.5%}.md\:w-1\/10{width:10%}.md\:w-1\/12{width:8.33333%}.md\:w-full{width:100%}.md\:w-screen{width:100vw}.md\:z-0{z-index:0}.md\:z-10{z-index:10}.md\:z-20{z-index:20}.md\:z-30{z-index:30}.md\:z-40{z-index:40}.md\:z-50{z-index:50}.md\:z-auto{z-index:auto}.md\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.md\:text-shadow-none{text-shadow:none}.md\:gradient-grey,.md\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.md\:gradient-grey-reversed,.md\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.md\:pin-t8{top:2rem}.md\:pin-t16{top:4rem}.md\:pin-b24{bottom:12rem}.md\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.md\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.md\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(max-width:991px){.to-lg\:list-reset{list-style:none;padding:0}.to-lg\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.to-lg\:bg-fixed{background-attachment:fixed}.to-lg\:bg-local{background-attachment:local}.to-lg\:bg-scroll{background-attachment:scroll}.to-lg\:bg-transparent{background-color:initial}.to-lg\:bg-color-black{background-color:#000}.to-lg\:bg-color-mine-shaft{background-color:#373737}.to-lg\:bg-color-fuscous-gray{background-color:#4c4d4b}.to-lg\:bg-color-emperor{background-color:#5d5d5d}.to-lg\:bg-color-dove-gray{background-color:#646464}.to-lg\:bg-color-boulder{background-color:#7b7b7b}.to-lg\:bg-color-silver{background-color:#bbb}.to-lg\:bg-color-alto{background-color:#dadada}.to-lg\:bg-color-mercury{background-color:#e9e9e9}.to-lg\:bg-color-seashell{background-color:#f1f1f1}.to-lg\:bg-color-white{background-color:#fff}.to-lg\:bg-color-orient{background-color:#005c7c}.to-lg\:bg-color-shakespeare{background-color:#4ab9d4}.to-lg\:bg-color-yellow-metal{background-color:#807040}.to-lg\:bg-color-kumera{background-color:#8a741d}.to-lg\:bg-color-olive{background-color:#8e7100}.to-lg\:bg-color-barley-corn{background-color:#a0915e}.to-lg\:bg-color-verdigris{background-color:#494a2d}.to-lg\:bg-color-texas{background-color:#f9fb93}.to-lg\:bg-color-ferra{background-color:#634849}.to-lg\:bg-color-cherub{background-color:#fbe3e4}.to-lg\:bg-color-cabbage-pont{background-color:#454e41}.to-lg\:bg-color-tea-green{background-color:#cfefc2}.group:hover .to-lg\:group-hover\:bg-transparent{background-color:initial}.group:hover .to-lg\:group-hover\:bg-color-black{background-color:#000}.group:hover .to-lg\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .to-lg\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .to-lg\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .to-lg\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .to-lg\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .to-lg\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .to-lg\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .to-lg\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .to-lg\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .to-lg\:group-hover\:bg-color-white{background-color:#fff}.group:hover .to-lg\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .to-lg\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .to-lg\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .to-lg\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .to-lg\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .to-lg\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .to-lg\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .to-lg\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .to-lg\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .to-lg\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .to-lg\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .to-lg\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.to-lg\:hover\:bg-transparent:hover{background-color:initial}.to-lg\:hover\:bg-color-black:hover{background-color:#000}.to-lg\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.to-lg\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.to-lg\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.to-lg\:hover\:bg-color-dove-gray:hover{background-color:#646464}.to-lg\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.to-lg\:hover\:bg-color-silver:hover{background-color:#bbb}.to-lg\:hover\:bg-color-alto:hover{background-color:#dadada}.to-lg\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.to-lg\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.to-lg\:hover\:bg-color-white:hover{background-color:#fff}.to-lg\:hover\:bg-color-orient:hover{background-color:#005c7c}.to-lg\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.to-lg\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.to-lg\:hover\:bg-color-kumera:hover{background-color:#8a741d}.to-lg\:hover\:bg-color-olive:hover{background-color:#8e7100}.to-lg\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.to-lg\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.to-lg\:hover\:bg-color-texas:hover{background-color:#f9fb93}.to-lg\:hover\:bg-color-ferra:hover{background-color:#634849}.to-lg\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.to-lg\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.to-lg\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.to-lg\:focus\:bg-transparent:focus{background-color:initial}.to-lg\:focus\:bg-color-black:focus{background-color:#000}.to-lg\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.to-lg\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.to-lg\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.to-lg\:focus\:bg-color-dove-gray:focus{background-color:#646464}.to-lg\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.to-lg\:focus\:bg-color-silver:focus{background-color:#bbb}.to-lg\:focus\:bg-color-alto:focus{background-color:#dadada}.to-lg\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.to-lg\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.to-lg\:focus\:bg-color-white:focus{background-color:#fff}.to-lg\:focus\:bg-color-orient:focus{background-color:#005c7c}.to-lg\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.to-lg\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.to-lg\:focus\:bg-color-kumera:focus{background-color:#8a741d}.to-lg\:focus\:bg-color-olive:focus{background-color:#8e7100}.to-lg\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.to-lg\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.to-lg\:focus\:bg-color-texas:focus{background-color:#f9fb93}.to-lg\:focus\:bg-color-ferra:focus{background-color:#634849}.to-lg\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.to-lg\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.to-lg\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.to-lg\:bg-bottom{background-position:bottom}.to-lg\:bg-center{background-position:50%}.to-lg\:bg-left{background-position:0}.to-lg\:bg-left-bottom{background-position:0 100%}.to-lg\:bg-left-top{background-position:0 0}.to-lg\:bg-right{background-position:100%}.to-lg\:bg-right-bottom{background-position:100% 100%}.to-lg\:bg-right-top{background-position:100% 0}.to-lg\:bg-top{background-position:top}.to-lg\:bg-repeat{background-repeat:repeat}.to-lg\:bg-no-repeat{background-repeat:no-repeat}.to-lg\:bg-repeat-x{background-repeat:repeat-x}.to-lg\:bg-repeat-y{background-repeat:repeat-y}.to-lg\:bg-auto{background-size:auto}.to-lg\:bg-cover{background-size:cover}.to-lg\:bg-contain{background-size:contain}.to-lg\:border-transparent{border-color:transparent}.to-lg\:border-color-black{border-color:#000}.to-lg\:border-color-mine-shaft{border-color:#373737}.to-lg\:border-color-fuscous-gray{border-color:#4c4d4b}.to-lg\:border-color-emperor{border-color:#5d5d5d}.to-lg\:border-color-dove-gray{border-color:#646464}.to-lg\:border-color-boulder{border-color:#7b7b7b}.to-lg\:border-color-silver{border-color:#bbb}.to-lg\:border-color-alto{border-color:#dadada}.to-lg\:border-color-mercury{border-color:#e9e9e9}.to-lg\:border-color-seashell{border-color:#f1f1f1}.to-lg\:border-color-white{border-color:#fff}.to-lg\:border-color-orient{border-color:#005c7c}.to-lg\:border-color-shakespeare{border-color:#4ab9d4}.to-lg\:border-color-yellow-metal{border-color:#807040}.to-lg\:border-color-kumera{border-color:#8a741d}.to-lg\:border-color-olive{border-color:#8e7100}.to-lg\:border-color-barley-corn{border-color:#a0915e}.to-lg\:border-color-verdigris{border-color:#494a2d}.to-lg\:border-color-texas{border-color:#f9fb93}.to-lg\:border-color-ferra{border-color:#634849}.to-lg\:border-color-cherub{border-color:#fbe3e4}.to-lg\:border-color-cabbage-pont{border-color:#454e41}.to-lg\:border-color-tea-green{border-color:#cfefc2}.to-lg\:hover\:border-transparent:hover{border-color:transparent}.to-lg\:hover\:border-color-black:hover{border-color:#000}.to-lg\:hover\:border-color-mine-shaft:hover{border-color:#373737}.to-lg\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.to-lg\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.to-lg\:hover\:border-color-dove-gray:hover{border-color:#646464}.to-lg\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.to-lg\:hover\:border-color-silver:hover{border-color:#bbb}.to-lg\:hover\:border-color-alto:hover{border-color:#dadada}.to-lg\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.to-lg\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.to-lg\:hover\:border-color-white:hover{border-color:#fff}.to-lg\:hover\:border-color-orient:hover{border-color:#005c7c}.to-lg\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.to-lg\:hover\:border-color-yellow-metal:hover{border-color:#807040}.to-lg\:hover\:border-color-kumera:hover{border-color:#8a741d}.to-lg\:hover\:border-color-olive:hover{border-color:#8e7100}.to-lg\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.to-lg\:hover\:border-color-verdigris:hover{border-color:#494a2d}.to-lg\:hover\:border-color-texas:hover{border-color:#f9fb93}.to-lg\:hover\:border-color-ferra:hover{border-color:#634849}.to-lg\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.to-lg\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.to-lg\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.to-lg\:focus\:border-transparent:focus{border-color:transparent}.to-lg\:focus\:border-color-black:focus{border-color:#000}.to-lg\:focus\:border-color-mine-shaft:focus{border-color:#373737}.to-lg\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.to-lg\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.to-lg\:focus\:border-color-dove-gray:focus{border-color:#646464}.to-lg\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.to-lg\:focus\:border-color-silver:focus{border-color:#bbb}.to-lg\:focus\:border-color-alto:focus{border-color:#dadada}.to-lg\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.to-lg\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.to-lg\:focus\:border-color-white:focus{border-color:#fff}.to-lg\:focus\:border-color-orient:focus{border-color:#005c7c}.to-lg\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.to-lg\:focus\:border-color-yellow-metal:focus{border-color:#807040}.to-lg\:focus\:border-color-kumera:focus{border-color:#8a741d}.to-lg\:focus\:border-color-olive:focus{border-color:#8e7100}.to-lg\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.to-lg\:focus\:border-color-verdigris:focus{border-color:#494a2d}.to-lg\:focus\:border-color-texas:focus{border-color:#f9fb93}.to-lg\:focus\:border-color-ferra:focus{border-color:#634849}.to-lg\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.to-lg\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.to-lg\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.to-lg\:rounded-none{border-radius:0}.to-lg\:rounded-sm{border-radius:.125rem}.to-lg\:rounded{border-radius:.25rem}.to-lg\:rounded-lg{border-radius:.5rem}.to-lg\:rounded-full{border-radius:9999px}.to-lg\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.to-lg\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.to-lg\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.to-lg\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.to-lg\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.to-lg\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.to-lg\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.to-lg\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.to-lg\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.to-lg\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.to-lg\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.to-lg\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.to-lg\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.to-lg\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.to-lg\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.to-lg\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.to-lg\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.to-lg\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.to-lg\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.to-lg\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.to-lg\:rounded-tl-none{border-top-left-radius:0}.to-lg\:rounded-tr-none{border-top-right-radius:0}.to-lg\:rounded-br-none{border-bottom-right-radius:0}.to-lg\:rounded-bl-none{border-bottom-left-radius:0}.to-lg\:rounded-tl-sm{border-top-left-radius:.125rem}.to-lg\:rounded-tr-sm{border-top-right-radius:.125rem}.to-lg\:rounded-br-sm{border-bottom-right-radius:.125rem}.to-lg\:rounded-bl-sm{border-bottom-left-radius:.125rem}.to-lg\:rounded-tl{border-top-left-radius:.25rem}.to-lg\:rounded-tr{border-top-right-radius:.25rem}.to-lg\:rounded-br{border-bottom-right-radius:.25rem}.to-lg\:rounded-bl{border-bottom-left-radius:.25rem}.to-lg\:rounded-tl-lg{border-top-left-radius:.5rem}.to-lg\:rounded-tr-lg{border-top-right-radius:.5rem}.to-lg\:rounded-br-lg{border-bottom-right-radius:.5rem}.to-lg\:rounded-bl-lg{border-bottom-left-radius:.5rem}.to-lg\:rounded-tl-full{border-top-left-radius:9999px}.to-lg\:rounded-tr-full{border-top-right-radius:9999px}.to-lg\:rounded-br-full{border-bottom-right-radius:9999px}.to-lg\:rounded-bl-full{border-bottom-left-radius:9999px}.to-lg\:border-solid{border-style:solid}.to-lg\:border-dashed{border-style:dashed}.to-lg\:border-dotted{border-style:dotted}.to-lg\:border-none{border-style:none}.to-lg\:border-0{border-width:0}.to-lg\:border-2{border-width:2px}.to-lg\:border-4{border-width:4px}.to-lg\:border-8{border-width:8px}.to-lg\:border{border-width:1px}.to-lg\:border-t-0{border-top-width:0}.to-lg\:border-r-0{border-right-width:0}.to-lg\:border-b-0{border-bottom-width:0}.to-lg\:border-l-0{border-left-width:0}.to-lg\:border-t-2{border-top-width:2px}.to-lg\:border-r-2{border-right-width:2px}.to-lg\:border-b-2{border-bottom-width:2px}.to-lg\:border-l-2{border-left-width:2px}.to-lg\:border-t-4{border-top-width:4px}.to-lg\:border-r-4{border-right-width:4px}.to-lg\:border-b-4{border-bottom-width:4px}.to-lg\:border-l-4{border-left-width:4px}.to-lg\:border-t-8{border-top-width:8px}.to-lg\:border-r-8{border-right-width:8px}.to-lg\:border-b-8{border-bottom-width:8px}.to-lg\:border-l-8{border-left-width:8px}.to-lg\:border-t{border-top-width:1px}.to-lg\:border-r{border-right-width:1px}.to-lg\:border-b{border-bottom-width:1px}.to-lg\:border-l{border-left-width:1px}.to-lg\:cursor-auto{cursor:auto}.to-lg\:cursor-default{cursor:default}.to-lg\:cursor-pointer{cursor:pointer}.to-lg\:cursor-wait{cursor:wait}.to-lg\:cursor-move{cursor:move}.to-lg\:cursor-not-allowed{cursor:not-allowed}.to-lg\:block{display:block}.to-lg\:inline-block{display:inline-block}.to-lg\:inline{display:inline}.to-lg\:table{display:table}.to-lg\:table-row{display:table-row}.to-lg\:table-cell{display:table-cell}.to-lg\:hidden{display:none}.to-lg\:hover\:block:hover{display:block}.to-lg\:hover\:inline-block:hover{display:inline-block}.to-lg\:hover\:inline:hover{display:inline}.to-lg\:hover\:table:hover{display:table}.to-lg\:hover\:table-row:hover{display:table-row}.to-lg\:hover\:table-cell:hover{display:table-cell}.to-lg\:hover\:hidden:hover{display:none}.to-lg\:flex{display:flex}.to-lg\:inline-flex{display:inline-flex}.to-lg\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.to-lg\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.to-lg\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.to-lg\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.to-lg\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.to-lg\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.to-lg\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.to-lg\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.to-lg\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.to-lg\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.to-lg\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.to-lg\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.to-lg\:self-auto{-ms-flex-item-align:auto;align-self:auto}.to-lg\:self-start{-ms-flex-item-align:start;align-self:flex-start}.to-lg\:self-end{-ms-flex-item-align:end;align-self:flex-end}.to-lg\:self-center{-ms-flex-item-align:center;align-self:center}.to-lg\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.to-lg\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.to-lg\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.to-lg\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.to-lg\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.to-lg\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.to-lg\:content-center{-ms-flex-line-pack:center;align-content:center}.to-lg\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.to-lg\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.to-lg\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.to-lg\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.to-lg\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.to-lg\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.to-lg\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.to-lg\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.to-lg\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.to-lg\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.to-lg\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.to-lg\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.to-lg\:float-right{float:right}.to-lg\:float-left{float:left}.to-lg\:float-none{float:none}.to-lg\:clearfix:after{content:"";display:table;clear:both}.to-lg\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.to-lg\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.to-lg\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.to-lg\:font-hairline{font-weight:100}.to-lg\:font-thin{font-weight:200}.to-lg\:font-light{font-weight:300}.to-lg\:font-normal{font-weight:400}.to-lg\:font-medium{font-weight:500}.to-lg\:font-semibold{font-weight:600}.to-lg\:font-bold{font-weight:700}.to-lg\:font-extrabold{font-weight:800}.to-lg\:font-black{font-weight:900}.to-lg\:hover\:font-hairline:hover{font-weight:100}.to-lg\:hover\:font-thin:hover{font-weight:200}.to-lg\:hover\:font-light:hover{font-weight:300}.to-lg\:hover\:font-normal:hover{font-weight:400}.to-lg\:hover\:font-medium:hover{font-weight:500}.to-lg\:hover\:font-semibold:hover{font-weight:600}.to-lg\:hover\:font-bold:hover{font-weight:700}.to-lg\:hover\:font-extrabold:hover{font-weight:800}.to-lg\:hover\:font-black:hover{font-weight:900}.to-lg\:focus\:font-hairline:focus{font-weight:100}.to-lg\:focus\:font-thin:focus{font-weight:200}.to-lg\:focus\:font-light:focus{font-weight:300}.to-lg\:focus\:font-normal:focus{font-weight:400}.to-lg\:focus\:font-medium:focus{font-weight:500}.to-lg\:focus\:font-semibold:focus{font-weight:600}.to-lg\:focus\:font-bold:focus{font-weight:700}.to-lg\:focus\:font-extrabold:focus{font-weight:800}.to-lg\:focus\:font-black:focus{font-weight:900}.to-lg\:h-1{height:.25rem}.to-lg\:h-2{height:.5rem}.to-lg\:h-3{height:.75rem}.to-lg\:h-4{height:1rem}.to-lg\:h-5{height:1.25rem}.to-lg\:h-6{height:1.5rem}.to-lg\:h-8{height:2rem}.to-lg\:h-10{height:2.5rem}.to-lg\:h-12{height:3rem}.to-lg\:h-16{height:4rem}.to-lg\:h-24{height:6rem}.to-lg\:h-32{height:8rem}.to-lg\:h-48{height:12rem}.to-lg\:h-64{height:16rem}.to-lg\:h-auto{height:auto}.to-lg\:h-px{height:1px}.to-lg\:h-full{height:100%}.to-lg\:h-screen{height:100vh}.to-lg\:h-screen-40-width{height:40vw}.to-lg\:h-screen-60-width{height:60vw}.to-lg\:h-screen-full-width{height:100vw}.to-lg\:leading-zero{line-height:0}.to-lg\:leading-none{line-height:1}.to-lg\:leading-tight{line-height:1.25}.to-lg\:leading-normal{line-height:1.5}.to-lg\:leading-loose{line-height:2}.to-lg\:m-0{margin:0}.to-lg\:m-1{margin:.25rem}.to-lg\:m-2{margin:.5rem}.to-lg\:m-3{margin:.75rem}.to-lg\:m-4{margin:1rem}.to-lg\:m-5{margin:1.25rem}.to-lg\:m-6{margin:1.5rem}.to-lg\:m-8{margin:2rem}.to-lg\:m-10{margin:2.5rem}.to-lg\:m-12{margin:3rem}.to-lg\:m-16{margin:4rem}.to-lg\:m-20{margin:5rem}.to-lg\:m-24{margin:6rem}.to-lg\:m-32{margin:8rem}.to-lg\:m-auto{margin:auto}.to-lg\:m-px{margin:1px}.to-lg\:my-0{margin-top:0;margin-bottom:0}.to-lg\:mx-0{margin-left:0;margin-right:0}.to-lg\:my-1{margin-top:.25rem;margin-bottom:.25rem}.to-lg\:mx-1{margin-left:.25rem;margin-right:.25rem}.to-lg\:my-2{margin-top:.5rem;margin-bottom:.5rem}.to-lg\:mx-2{margin-left:.5rem;margin-right:.5rem}.to-lg\:my-3{margin-top:.75rem;margin-bottom:.75rem}.to-lg\:mx-3{margin-left:.75rem;margin-right:.75rem}.to-lg\:my-4{margin-top:1rem;margin-bottom:1rem}.to-lg\:mx-4{margin-left:1rem;margin-right:1rem}.to-lg\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.to-lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.to-lg\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.to-lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.to-lg\:my-8{margin-top:2rem;margin-bottom:2rem}.to-lg\:mx-8{margin-left:2rem;margin-right:2rem}.to-lg\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.to-lg\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.to-lg\:my-12{margin-top:3rem;margin-bottom:3rem}.to-lg\:mx-12{margin-left:3rem;margin-right:3rem}.to-lg\:my-16{margin-top:4rem;margin-bottom:4rem}.to-lg\:mx-16{margin-left:4rem;margin-right:4rem}.to-lg\:my-20{margin-top:5rem;margin-bottom:5rem}.to-lg\:mx-20{margin-left:5rem;margin-right:5rem}.to-lg\:my-24{margin-top:6rem;margin-bottom:6rem}.to-lg\:mx-24{margin-left:6rem;margin-right:6rem}.to-lg\:my-32{margin-top:8rem;margin-bottom:8rem}.to-lg\:mx-32{margin-left:8rem;margin-right:8rem}.to-lg\:my-auto{margin-top:auto;margin-bottom:auto}.to-lg\:mx-auto{margin-left:auto;margin-right:auto}.to-lg\:my-px{margin-top:1px;margin-bottom:1px}.to-lg\:mx-px{margin-left:1px;margin-right:1px}.to-lg\:mt-0{margin-top:0}.to-lg\:mr-0{margin-right:0}.to-lg\:mb-0{margin-bottom:0}.to-lg\:ml-0{margin-left:0}.to-lg\:mt-1{margin-top:.25rem}.to-lg\:mr-1{margin-right:.25rem}.to-lg\:mb-1{margin-bottom:.25rem}.to-lg\:ml-1{margin-left:.25rem}.to-lg\:mt-2{margin-top:.5rem}.to-lg\:mr-2{margin-right:.5rem}.to-lg\:mb-2{margin-bottom:.5rem}.to-lg\:ml-2{margin-left:.5rem}.to-lg\:mt-3{margin-top:.75rem}.to-lg\:mr-3{margin-right:.75rem}.to-lg\:mb-3{margin-bottom:.75rem}.to-lg\:ml-3{margin-left:.75rem}.to-lg\:mt-4{margin-top:1rem}.to-lg\:mr-4{margin-right:1rem}.to-lg\:mb-4{margin-bottom:1rem}.to-lg\:ml-4{margin-left:1rem}.to-lg\:mt-5{margin-top:1.25rem}.to-lg\:mr-5{margin-right:1.25rem}.to-lg\:mb-5{margin-bottom:1.25rem}.to-lg\:ml-5{margin-left:1.25rem}.to-lg\:mt-6{margin-top:1.5rem}.to-lg\:mr-6{margin-right:1.5rem}.to-lg\:mb-6{margin-bottom:1.5rem}.to-lg\:ml-6{margin-left:1.5rem}.to-lg\:mt-8{margin-top:2rem}.to-lg\:mr-8{margin-right:2rem}.to-lg\:mb-8{margin-bottom:2rem}.to-lg\:ml-8{margin-left:2rem}.to-lg\:mt-10{margin-top:2.5rem}.to-lg\:mr-10{margin-right:2.5rem}.to-lg\:mb-10{margin-bottom:2.5rem}.to-lg\:ml-10{margin-left:2.5rem}.to-lg\:mt-12{margin-top:3rem}.to-lg\:mr-12{margin-right:3rem}.to-lg\:mb-12{margin-bottom:3rem}.to-lg\:ml-12{margin-left:3rem}.to-lg\:mt-16{margin-top:4rem}.to-lg\:mr-16{margin-right:4rem}.to-lg\:mb-16{margin-bottom:4rem}.to-lg\:ml-16{margin-left:4rem}.to-lg\:mt-20{margin-top:5rem}.to-lg\:mr-20{margin-right:5rem}.to-lg\:mb-20{margin-bottom:5rem}.to-lg\:ml-20{margin-left:5rem}.to-lg\:mt-24{margin-top:6rem}.to-lg\:mr-24{margin-right:6rem}.to-lg\:mb-24{margin-bottom:6rem}.to-lg\:ml-24{margin-left:6rem}.to-lg\:mt-32{margin-top:8rem}.to-lg\:mr-32{margin-right:8rem}.to-lg\:mb-32{margin-bottom:8rem}.to-lg\:ml-32{margin-left:8rem}.to-lg\:mt-auto{margin-top:auto}.to-lg\:mr-auto{margin-right:auto}.to-lg\:mb-auto{margin-bottom:auto}.to-lg\:ml-auto{margin-left:auto}.to-lg\:mt-px{margin-top:1px}.to-lg\:mr-px{margin-right:1px}.to-lg\:mb-px{margin-bottom:1px}.to-lg\:ml-px{margin-left:1px}.to-lg\:max-h-full{max-height:100%}.to-lg\:max-h-screen{max-height:100vh}.to-lg\:max-w-sm{max-width:576px}.to-lg\:max-w-md{max-width:768px}.to-lg\:max-w-lg{max-width:992px}.to-lg\:max-w-xl{max-width:1200px}.to-lg\:max-w-full{max-width:100%}.to-lg\:min-h-0{min-height:0}.to-lg\:min-h-full{min-height:100%}.to-lg\:min-h-screen{min-height:100vh}.to-lg\:min-w-0{min-width:0}.to-lg\:min-w-full{min-width:100%}.to-lg\:-m-0{margin:0}.to-lg\:-m-1{margin:-.25rem}.to-lg\:-m-2{margin:-.5rem}.to-lg\:-m-3{margin:-.75rem}.to-lg\:-m-4{margin:-1rem}.to-lg\:-m-5{margin:-1.25rem}.to-lg\:-m-6{margin:-1.5rem}.to-lg\:-m-8{margin:-2rem}.to-lg\:-m-10{margin:-2.5rem}.to-lg\:-m-12{margin:-3rem}.to-lg\:-m-16{margin:-4rem}.to-lg\:-m-20{margin:-5rem}.to-lg\:-m-24{margin:-6rem}.to-lg\:-m-32{margin:-8rem}.to-lg\:-m-px{margin:-1px}.to-lg\:-my-0{margin-top:0;margin-bottom:0}.to-lg\:-mx-0{margin-left:0;margin-right:0}.to-lg\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.to-lg\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.to-lg\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.to-lg\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.to-lg\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.to-lg\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.to-lg\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.to-lg\:-mx-4{margin-left:-1rem;margin-right:-1rem}.to-lg\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.to-lg\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.to-lg\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.to-lg\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.to-lg\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.to-lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.to-lg\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.to-lg\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.to-lg\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.to-lg\:-mx-12{margin-left:-3rem;margin-right:-3rem}.to-lg\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.to-lg\:-mx-16{margin-left:-4rem;margin-right:-4rem}.to-lg\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.to-lg\:-mx-20{margin-left:-5rem;margin-right:-5rem}.to-lg\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.to-lg\:-mx-24{margin-left:-6rem;margin-right:-6rem}.to-lg\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.to-lg\:-mx-32{margin-left:-8rem;margin-right:-8rem}.to-lg\:-my-px{margin-top:-1px;margin-bottom:-1px}.to-lg\:-mx-px{margin-left:-1px;margin-right:-1px}.to-lg\:-mt-0{margin-top:0}.to-lg\:-mr-0{margin-right:0}.to-lg\:-mb-0{margin-bottom:0}.to-lg\:-ml-0{margin-left:0}.to-lg\:-mt-1{margin-top:-.25rem}.to-lg\:-mr-1{margin-right:-.25rem}.to-lg\:-mb-1{margin-bottom:-.25rem}.to-lg\:-ml-1{margin-left:-.25rem}.to-lg\:-mt-2{margin-top:-.5rem}.to-lg\:-mr-2{margin-right:-.5rem}.to-lg\:-mb-2{margin-bottom:-.5rem}.to-lg\:-ml-2{margin-left:-.5rem}.to-lg\:-mt-3{margin-top:-.75rem}.to-lg\:-mr-3{margin-right:-.75rem}.to-lg\:-mb-3{margin-bottom:-.75rem}.to-lg\:-ml-3{margin-left:-.75rem}.to-lg\:-mt-4{margin-top:-1rem}.to-lg\:-mr-4{margin-right:-1rem}.to-lg\:-mb-4{margin-bottom:-1rem}.to-lg\:-ml-4{margin-left:-1rem}.to-lg\:-mt-5{margin-top:-1.25rem}.to-lg\:-mr-5{margin-right:-1.25rem}.to-lg\:-mb-5{margin-bottom:-1.25rem}.to-lg\:-ml-5{margin-left:-1.25rem}.to-lg\:-mt-6{margin-top:-1.5rem}.to-lg\:-mr-6{margin-right:-1.5rem}.to-lg\:-mb-6{margin-bottom:-1.5rem}.to-lg\:-ml-6{margin-left:-1.5rem}.to-lg\:-mt-8{margin-top:-2rem}.to-lg\:-mr-8{margin-right:-2rem}.to-lg\:-mb-8{margin-bottom:-2rem}.to-lg\:-ml-8{margin-left:-2rem}.to-lg\:-mt-10{margin-top:-2.5rem}.to-lg\:-mr-10{margin-right:-2.5rem}.to-lg\:-mb-10{margin-bottom:-2.5rem}.to-lg\:-ml-10{margin-left:-2.5rem}.to-lg\:-mt-12{margin-top:-3rem}.to-lg\:-mr-12{margin-right:-3rem}.to-lg\:-mb-12{margin-bottom:-3rem}.to-lg\:-ml-12{margin-left:-3rem}.to-lg\:-mt-16{margin-top:-4rem}.to-lg\:-mr-16{margin-right:-4rem}.to-lg\:-mb-16{margin-bottom:-4rem}.to-lg\:-ml-16{margin-left:-4rem}.to-lg\:-mt-20{margin-top:-5rem}.to-lg\:-mr-20{margin-right:-5rem}.to-lg\:-mb-20{margin-bottom:-5rem}.to-lg\:-ml-20{margin-left:-5rem}.to-lg\:-mt-24{margin-top:-6rem}.to-lg\:-mr-24{margin-right:-6rem}.to-lg\:-mb-24{margin-bottom:-6rem}.to-lg\:-ml-24{margin-left:-6rem}.to-lg\:-mt-32{margin-top:-8rem}.to-lg\:-mr-32{margin-right:-8rem}.to-lg\:-mb-32{margin-bottom:-8rem}.to-lg\:-ml-32{margin-left:-8rem}.to-lg\:-mt-px{margin-top:-1px}.to-lg\:-mr-px{margin-right:-1px}.to-lg\:-mb-px{margin-bottom:-1px}.to-lg\:-ml-px{margin-left:-1px}.to-lg\:opacity-0{opacity:0}.to-lg\:opacity-25{opacity:.25}.to-lg\:opacity-50{opacity:.5}.to-lg\:opacity-75{opacity:.75}.to-lg\:opacity-100{opacity:1}.group:hover .to-lg\:group-hover\:opacity-0{opacity:0}.group:hover .to-lg\:group-hover\:opacity-25{opacity:.25}.group:hover .to-lg\:group-hover\:opacity-50{opacity:.5}.group:hover .to-lg\:group-hover\:opacity-75{opacity:.75}.group:hover .to-lg\:group-hover\:opacity-100{opacity:1}.to-lg\:overflow-auto{overflow:auto}.to-lg\:overflow-hidden{overflow:hidden}.to-lg\:overflow-visible{overflow:visible}.to-lg\:overflow-scroll{overflow:scroll}.to-lg\:overflow-x-auto{overflow-x:auto}.to-lg\:overflow-y-auto{overflow-y:auto}.to-lg\:overflow-x-hidden{overflow-x:hidden}.to-lg\:overflow-y-hidden{overflow-y:hidden}.to-lg\:overflow-x-visible{overflow-x:visible}.to-lg\:overflow-y-visible{overflow-y:visible}.to-lg\:overflow-x-scroll{overflow-x:scroll}.to-lg\:overflow-y-scroll{overflow-y:scroll}.to-lg\:scrolling-touch{-webkit-overflow-scrolling:touch}.to-lg\:scrolling-auto{-webkit-overflow-scrolling:auto}.to-lg\:p-0{padding:0}.to-lg\:p-1{padding:.25rem}.to-lg\:p-2{padding:.5rem}.to-lg\:p-3{padding:.75rem}.to-lg\:p-4{padding:1rem}.to-lg\:p-5{padding:1.25rem}.to-lg\:p-6{padding:1.5rem}.to-lg\:p-8{padding:2rem}.to-lg\:p-10{padding:2.5rem}.to-lg\:p-12{padding:3rem}.to-lg\:p-16{padding:4rem}.to-lg\:p-20{padding:5rem}.to-lg\:p-24{padding:6rem}.to-lg\:p-32{padding:8rem}.to-lg\:p-px{padding:1px}.to-lg\:py-0{padding-top:0;padding-bottom:0}.to-lg\:px-0{padding-left:0;padding-right:0}.to-lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.to-lg\:px-1{padding-left:.25rem;padding-right:.25rem}.to-lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}.to-lg\:px-2{padding-left:.5rem;padding-right:.5rem}.to-lg\:py-3{padding-top:.75rem;padding-bottom:.75rem}.to-lg\:px-3{padding-left:.75rem;padding-right:.75rem}.to-lg\:py-4{padding-top:1rem;padding-bottom:1rem}.to-lg\:px-4{padding-left:1rem;padding-right:1rem}.to-lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.to-lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.to-lg\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.to-lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.to-lg\:py-8{padding-top:2rem;padding-bottom:2rem}.to-lg\:px-8{padding-left:2rem;padding-right:2rem}.to-lg\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.to-lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.to-lg\:py-12{padding-top:3rem;padding-bottom:3rem}.to-lg\:px-12{padding-left:3rem;padding-right:3rem}.to-lg\:py-16{padding-top:4rem;padding-bottom:4rem}.to-lg\:px-16{padding-left:4rem;padding-right:4rem}.to-lg\:py-20{padding-top:5rem;padding-bottom:5rem}.to-lg\:px-20{padding-left:5rem;padding-right:5rem}.to-lg\:py-24{padding-top:6rem;padding-bottom:6rem}.to-lg\:px-24{padding-left:6rem;padding-right:6rem}.to-lg\:py-32{padding-top:8rem;padding-bottom:8rem}.to-lg\:px-32{padding-left:8rem;padding-right:8rem}.to-lg\:py-px{padding-top:1px;padding-bottom:1px}.to-lg\:px-px{padding-left:1px;padding-right:1px}.to-lg\:pt-0{padding-top:0}.to-lg\:pr-0{padding-right:0}.to-lg\:pb-0{padding-bottom:0}.to-lg\:pl-0{padding-left:0}.to-lg\:pt-1{padding-top:.25rem}.to-lg\:pr-1{padding-right:.25rem}.to-lg\:pb-1{padding-bottom:.25rem}.to-lg\:pl-1{padding-left:.25rem}.to-lg\:pt-2{padding-top:.5rem}.to-lg\:pr-2{padding-right:.5rem}.to-lg\:pb-2{padding-bottom:.5rem}.to-lg\:pl-2{padding-left:.5rem}.to-lg\:pt-3{padding-top:.75rem}.to-lg\:pr-3{padding-right:.75rem}.to-lg\:pb-3{padding-bottom:.75rem}.to-lg\:pl-3{padding-left:.75rem}.to-lg\:pt-4{padding-top:1rem}.to-lg\:pr-4{padding-right:1rem}.to-lg\:pb-4{padding-bottom:1rem}.to-lg\:pl-4{padding-left:1rem}.to-lg\:pt-5{padding-top:1.25rem}.to-lg\:pr-5{padding-right:1.25rem}.to-lg\:pb-5{padding-bottom:1.25rem}.to-lg\:pl-5{padding-left:1.25rem}.to-lg\:pt-6{padding-top:1.5rem}.to-lg\:pr-6{padding-right:1.5rem}.to-lg\:pb-6{padding-bottom:1.5rem}.to-lg\:pl-6{padding-left:1.5rem}.to-lg\:pt-8{padding-top:2rem}.to-lg\:pr-8{padding-right:2rem}.to-lg\:pb-8{padding-bottom:2rem}.to-lg\:pl-8{padding-left:2rem}.to-lg\:pt-10{padding-top:2.5rem}.to-lg\:pr-10{padding-right:2.5rem}.to-lg\:pb-10{padding-bottom:2.5rem}.to-lg\:pl-10{padding-left:2.5rem}.to-lg\:pt-12{padding-top:3rem}.to-lg\:pr-12{padding-right:3rem}.to-lg\:pb-12{padding-bottom:3rem}.to-lg\:pl-12{padding-left:3rem}.to-lg\:pt-16{padding-top:4rem}.to-lg\:pr-16{padding-right:4rem}.to-lg\:pb-16{padding-bottom:4rem}.to-lg\:pl-16{padding-left:4rem}.to-lg\:pt-20{padding-top:5rem}.to-lg\:pr-20{padding-right:5rem}.to-lg\:pb-20{padding-bottom:5rem}.to-lg\:pl-20{padding-left:5rem}.to-lg\:pt-24{padding-top:6rem}.to-lg\:pr-24{padding-right:6rem}.to-lg\:pb-24{padding-bottom:6rem}.to-lg\:pl-24{padding-left:6rem}.to-lg\:pt-32{padding-top:8rem}.to-lg\:pr-32{padding-right:8rem}.to-lg\:pb-32{padding-bottom:8rem}.to-lg\:pl-32{padding-left:8rem}.to-lg\:pt-px{padding-top:1px}.to-lg\:pr-px{padding-right:1px}.to-lg\:pb-px{padding-bottom:1px}.to-lg\:pl-px{padding-left:1px}.to-lg\:pointer-events-none{pointer-events:none}.to-lg\:pointer-events-auto{pointer-events:auto}.to-lg\:static{position:static}.to-lg\:fixed{position:fixed}.to-lg\:absolute{position:absolute}.to-lg\:relative{position:relative}.to-lg\:sticky{position:sticky}.to-lg\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.to-lg\:pin{top:0;right:0;bottom:0;left:0}.to-lg\:pin-y{top:0;bottom:0}.to-lg\:pin-x{right:0;left:0}.to-lg\:pin-t{top:0}.to-lg\:pin-r{right:0}.to-lg\:pin-b{bottom:0}.to-lg\:pin-l{left:0}.to-lg\:resize-none{resize:none}.to-lg\:resize-y{resize:vertical}.to-lg\:resize-x{resize:horizontal}.to-lg\:resize{resize:both}.to-lg\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-lg\:shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.to-lg\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-lg\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.to-lg\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.to-lg\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:0 0}.to-lg\:table-auto{table-layout:auto}.to-lg\:table-fixed{table-layout:fixed}.to-lg\:text-left{text-align:left}.to-lg\:text-center{text-align:center}.to-lg\:text-right{text-align:right}.to-lg\:text-justify{text-align:justify}.to-lg\:text-transparent{color:transparent}.to-lg\:text-color-black{color:#000}.to-lg\:text-color-mine-shaft{color:#373737}.to-lg\:text-color-fuscous-gray{color:#4c4d4b}.to-lg\:text-color-emperor{color:#5d5d5d}.to-lg\:text-color-dove-gray{color:#646464}.to-lg\:text-color-boulder{color:#7b7b7b}.to-lg\:text-color-silver{color:#bbb}.to-lg\:text-color-alto{color:#dadada}.to-lg\:text-color-mercury{color:#e9e9e9}.to-lg\:text-color-seashell{color:#f1f1f1}.to-lg\:text-color-white{color:#fff}.to-lg\:text-color-orient{color:#005c7c}.to-lg\:text-color-shakespeare{color:#4ab9d4}.to-lg\:text-color-yellow-metal{color:#807040}.to-lg\:text-color-kumera{color:#8a741d}.to-lg\:text-color-olive{color:#8e7100}.to-lg\:text-color-barley-corn{color:#a0915e}.to-lg\:text-color-verdigris{color:#494a2d}.to-lg\:text-color-texas{color:#f9fb93}.to-lg\:text-color-ferra{color:#634849}.to-lg\:text-color-cherub{color:#fbe3e4}.to-lg\:text-color-cabbage-pont{color:#454e41}.to-lg\:text-color-tea-green{color:#cfefc2}.group:hover .to-lg\:group-hover\:text-transparent{color:transparent}.group:hover .to-lg\:group-hover\:text-color-black{color:#000}.group:hover .to-lg\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .to-lg\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .to-lg\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .to-lg\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .to-lg\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .to-lg\:group-hover\:text-color-silver{color:#bbb}.group:hover .to-lg\:group-hover\:text-color-alto{color:#dadada}.group:hover .to-lg\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .to-lg\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .to-lg\:group-hover\:text-color-white{color:#fff}.group:hover .to-lg\:group-hover\:text-color-orient{color:#005c7c}.group:hover .to-lg\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .to-lg\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .to-lg\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .to-lg\:group-hover\:text-color-olive{color:#8e7100}.group:hover .to-lg\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .to-lg\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .to-lg\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .to-lg\:group-hover\:text-color-ferra{color:#634849}.group:hover .to-lg\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .to-lg\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .to-lg\:group-hover\:text-color-tea-green{color:#cfefc2}.to-lg\:hover\:text-transparent:hover{color:transparent}.to-lg\:hover\:text-color-black:hover{color:#000}.to-lg\:hover\:text-color-mine-shaft:hover{color:#373737}.to-lg\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.to-lg\:hover\:text-color-emperor:hover{color:#5d5d5d}.to-lg\:hover\:text-color-dove-gray:hover{color:#646464}.to-lg\:hover\:text-color-boulder:hover{color:#7b7b7b}.to-lg\:hover\:text-color-silver:hover{color:#bbb}.to-lg\:hover\:text-color-alto:hover{color:#dadada}.to-lg\:hover\:text-color-mercury:hover{color:#e9e9e9}.to-lg\:hover\:text-color-seashell:hover{color:#f1f1f1}.to-lg\:hover\:text-color-white:hover{color:#fff}.to-lg\:hover\:text-color-orient:hover{color:#005c7c}.to-lg\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.to-lg\:hover\:text-color-yellow-metal:hover{color:#807040}.to-lg\:hover\:text-color-kumera:hover{color:#8a741d}.to-lg\:hover\:text-color-olive:hover{color:#8e7100}.to-lg\:hover\:text-color-barley-corn:hover{color:#a0915e}.to-lg\:hover\:text-color-verdigris:hover{color:#494a2d}.to-lg\:hover\:text-color-texas:hover{color:#f9fb93}.to-lg\:hover\:text-color-ferra:hover{color:#634849}.to-lg\:hover\:text-color-cherub:hover{color:#fbe3e4}.to-lg\:hover\:text-color-cabbage-pont:hover{color:#454e41}.to-lg\:hover\:text-color-tea-green:hover{color:#cfefc2}.to-lg\:focus\:text-transparent:focus{color:transparent}.to-lg\:focus\:text-color-black:focus{color:#000}.to-lg\:focus\:text-color-mine-shaft:focus{color:#373737}.to-lg\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.to-lg\:focus\:text-color-emperor:focus{color:#5d5d5d}.to-lg\:focus\:text-color-dove-gray:focus{color:#646464}.to-lg\:focus\:text-color-boulder:focus{color:#7b7b7b}.to-lg\:focus\:text-color-silver:focus{color:#bbb}.to-lg\:focus\:text-color-alto:focus{color:#dadada}.to-lg\:focus\:text-color-mercury:focus{color:#e9e9e9}.to-lg\:focus\:text-color-seashell:focus{color:#f1f1f1}.to-lg\:focus\:text-color-white:focus{color:#fff}.to-lg\:focus\:text-color-orient:focus{color:#005c7c}.to-lg\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.to-lg\:focus\:text-color-yellow-metal:focus{color:#807040}.to-lg\:focus\:text-color-kumera:focus{color:#8a741d}.to-lg\:focus\:text-color-olive:focus{color:#8e7100}.to-lg\:focus\:text-color-barley-corn:focus{color:#a0915e}.to-lg\:focus\:text-color-verdigris:focus{color:#494a2d}.to-lg\:focus\:text-color-texas:focus{color:#f9fb93}.to-lg\:focus\:text-color-ferra:focus{color:#634849}.to-lg\:focus\:text-color-cherub:focus{color:#fbe3e4}.to-lg\:focus\:text-color-cabbage-pont:focus{color:#454e41}.to-lg\:focus\:text-color-tea-green:focus{color:#cfefc2}.to-lg\:text-3xs{font-size:.667rem}.to-lg\:text-2xs{font-size:.8rem}.to-lg\:text-xs{font-size:.867rem}.to-lg\:text-sm{font-size:.933rem}.to-lg\:text-base{font-size:15px}.to-lg\:text-lg{font-size:1.067rem}.to-lg\:text-xl{font-size:1.2rem}.to-lg\:text-2xl{font-size:1.267rem}.to-lg\:text-3xl{font-size:1.933rem}.to-lg\:italic{font-style:italic}.to-lg\:roman{font-style:normal}.to-lg\:uppercase{text-transform:uppercase}.to-lg\:lowercase{text-transform:lowercase}.to-lg\:capitalize{text-transform:capitalize}.to-lg\:normal-case{text-transform:none}.to-lg\:underline{text-decoration:underline}.to-lg\:line-through{text-decoration:line-through}.to-lg\:no-underline{text-decoration:none}.to-lg\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-lg\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-lg\:hover\:italic:hover{font-style:italic}.to-lg\:hover\:roman:hover{font-style:normal}.to-lg\:hover\:uppercase:hover{text-transform:uppercase}.to-lg\:hover\:lowercase:hover{text-transform:lowercase}.to-lg\:hover\:capitalize:hover{text-transform:capitalize}.to-lg\:hover\:normal-case:hover{text-transform:none}.to-lg\:hover\:underline:hover{text-decoration:underline}.to-lg\:hover\:line-through:hover{text-decoration:line-through}.to-lg\:hover\:no-underline:hover{text-decoration:none}.to-lg\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-lg\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-lg\:focus\:italic:focus{font-style:italic}.to-lg\:focus\:roman:focus{font-style:normal}.to-lg\:focus\:uppercase:focus{text-transform:uppercase}.to-lg\:focus\:lowercase:focus{text-transform:lowercase}.to-lg\:focus\:capitalize:focus{text-transform:capitalize}.to-lg\:focus\:normal-case:focus{text-transform:none}.to-lg\:focus\:underline:focus{text-decoration:underline}.to-lg\:focus\:line-through:focus{text-decoration:line-through}.to-lg\:focus\:no-underline:focus{text-decoration:none}.to-lg\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.to-lg\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.to-lg\:tracking-tight{letter-spacing:-.05em}.to-lg\:tracking-normal{letter-spacing:0}.to-lg\:tracking-wide{letter-spacing:.05em}.to-lg\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.to-lg\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.to-lg\:align-baseline{vertical-align:baseline}.to-lg\:align-top{vertical-align:top}.to-lg\:align-middle{vertical-align:middle}.to-lg\:align-bottom{vertical-align:bottom}.to-lg\:align-text-top{vertical-align:text-top}.to-lg\:align-text-bottom{vertical-align:text-bottom}.to-lg\:visible{visibility:visible}.to-lg\:invisible{visibility:hidden}.to-lg\:whitespace-normal{white-space:normal}.to-lg\:whitespace-no-wrap{white-space:nowrap}.to-lg\:whitespace-pre{white-space:pre}.to-lg\:whitespace-pre-line{white-space:pre-line}.to-lg\:whitespace-pre-wrap{white-space:pre-wrap}.to-lg\:break-words{word-wrap:break-word}.to-lg\:break-normal{word-wrap:normal}.to-lg\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.to-lg\:w-1{width:.25rem}.to-lg\:w-2{width:.5rem}.to-lg\:w-3{width:.75rem}.to-lg\:w-4{width:1rem}.to-lg\:w-5{width:1.25rem}.to-lg\:w-6{width:1.5rem}.to-lg\:w-8{width:2rem}.to-lg\:w-10{width:2.5rem}.to-lg\:w-12{width:3rem}.to-lg\:w-16{width:4rem}.to-lg\:w-24{width:6rem}.to-lg\:w-32{width:8rem}.to-lg\:w-40{width:10rem}.to-lg\:w-48{width:12rem}.to-lg\:w-56{width:14rem}.to-lg\:w-64{width:16rem}.to-lg\:w-auto{width:auto}.to-lg\:w-px{width:1px}.to-lg\:w-1\/2{width:50%}.to-lg\:w-1\/3{width:33.33333%}.to-lg\:w-2\/3{width:66.66667%}.to-lg\:w-1\/4{width:25%}.to-lg\:w-3\/4{width:75%}.to-lg\:w-1\/5{width:20%}.to-lg\:w-2\/5{width:40%}.to-lg\:w-3\/5{width:60%}.to-lg\:w-4\/5{width:80%}.to-lg\:w-1\/6{width:16.66667%}.to-lg\:w-1\/8{width:12.5%}.to-lg\:w-1\/10{width:10%}.to-lg\:w-1\/12{width:8.33333%}.to-lg\:w-full{width:100%}.to-lg\:w-screen{width:100vw}.to-lg\:z-0{z-index:0}.to-lg\:z-10{z-index:10}.to-lg\:z-20{z-index:20}.to-lg\:z-30{z-index:30}.to-lg\:z-40{z-index:40}.to-lg\:z-50{z-index:50}.to-lg\:z-auto{z-index:auto}.to-lg\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.to-lg\:text-shadow-none{text-shadow:none}.to-lg\:gradient-grey,.to-lg\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.to-lg\:gradient-grey-reversed,.to-lg\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.to-lg\:pin-t8{top:2rem}.to-lg\:pin-t16{top:4rem}.to-lg\:pin-b24{bottom:12rem}.to-lg\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.to-lg\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.to-lg\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:992px){.lg\:list-reset{list-style:none;padding:0}.lg\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lg\:bg-fixed{background-attachment:fixed}.lg\:bg-local{background-attachment:local}.lg\:bg-scroll{background-attachment:scroll}.lg\:bg-transparent{background-color:initial}.lg\:bg-color-black{background-color:#000}.lg\:bg-color-mine-shaft{background-color:#373737}.lg\:bg-color-fuscous-gray{background-color:#4c4d4b}.lg\:bg-color-emperor{background-color:#5d5d5d}.lg\:bg-color-dove-gray{background-color:#646464}.lg\:bg-color-boulder{background-color:#7b7b7b}.lg\:bg-color-silver{background-color:#bbb}.lg\:bg-color-alto{background-color:#dadada}.lg\:bg-color-mercury{background-color:#e9e9e9}.lg\:bg-color-seashell{background-color:#f1f1f1}.lg\:bg-color-white{background-color:#fff}.lg\:bg-color-orient{background-color:#005c7c}.lg\:bg-color-shakespeare{background-color:#4ab9d4}.lg\:bg-color-yellow-metal{background-color:#807040}.lg\:bg-color-kumera{background-color:#8a741d}.lg\:bg-color-olive{background-color:#8e7100}.lg\:bg-color-barley-corn{background-color:#a0915e}.lg\:bg-color-verdigris{background-color:#494a2d}.lg\:bg-color-texas{background-color:#f9fb93}.lg\:bg-color-ferra{background-color:#634849}.lg\:bg-color-cherub{background-color:#fbe3e4}.lg\:bg-color-cabbage-pont{background-color:#454e41}.lg\:bg-color-tea-green{background-color:#cfefc2}.group:hover .lg\:group-hover\:bg-transparent{background-color:initial}.group:hover .lg\:group-hover\:bg-color-black{background-color:#000}.group:hover .lg\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .lg\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .lg\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .lg\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .lg\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .lg\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .lg\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .lg\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .lg\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .lg\:group-hover\:bg-color-white{background-color:#fff}.group:hover .lg\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .lg\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .lg\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .lg\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .lg\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .lg\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .lg\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .lg\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .lg\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .lg\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .lg\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .lg\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.lg\:hover\:bg-transparent:hover{background-color:initial}.lg\:hover\:bg-color-black:hover{background-color:#000}.lg\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.lg\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.lg\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.lg\:hover\:bg-color-dove-gray:hover{background-color:#646464}.lg\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.lg\:hover\:bg-color-silver:hover{background-color:#bbb}.lg\:hover\:bg-color-alto:hover{background-color:#dadada}.lg\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.lg\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.lg\:hover\:bg-color-white:hover{background-color:#fff}.lg\:hover\:bg-color-orient:hover{background-color:#005c7c}.lg\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.lg\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.lg\:hover\:bg-color-kumera:hover{background-color:#8a741d}.lg\:hover\:bg-color-olive:hover{background-color:#8e7100}.lg\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.lg\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.lg\:hover\:bg-color-texas:hover{background-color:#f9fb93}.lg\:hover\:bg-color-ferra:hover{background-color:#634849}.lg\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.lg\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.lg\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.lg\:focus\:bg-transparent:focus{background-color:initial}.lg\:focus\:bg-color-black:focus{background-color:#000}.lg\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.lg\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.lg\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.lg\:focus\:bg-color-dove-gray:focus{background-color:#646464}.lg\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.lg\:focus\:bg-color-silver:focus{background-color:#bbb}.lg\:focus\:bg-color-alto:focus{background-color:#dadada}.lg\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.lg\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.lg\:focus\:bg-color-white:focus{background-color:#fff}.lg\:focus\:bg-color-orient:focus{background-color:#005c7c}.lg\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.lg\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.lg\:focus\:bg-color-kumera:focus{background-color:#8a741d}.lg\:focus\:bg-color-olive:focus{background-color:#8e7100}.lg\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.lg\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.lg\:focus\:bg-color-texas:focus{background-color:#f9fb93}.lg\:focus\:bg-color-ferra:focus{background-color:#634849}.lg\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.lg\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.lg\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.lg\:bg-bottom{background-position:bottom}.lg\:bg-center{background-position:50%}.lg\:bg-left{background-position:0}.lg\:bg-left-bottom{background-position:0 100%}.lg\:bg-left-top{background-position:0 0}.lg\:bg-right{background-position:100%}.lg\:bg-right-bottom{background-position:100% 100%}.lg\:bg-right-top{background-position:100% 0}.lg\:bg-top{background-position:top}.lg\:bg-repeat{background-repeat:repeat}.lg\:bg-no-repeat{background-repeat:no-repeat}.lg\:bg-repeat-x{background-repeat:repeat-x}.lg\:bg-repeat-y{background-repeat:repeat-y}.lg\:bg-auto{background-size:auto}.lg\:bg-cover{background-size:cover}.lg\:bg-contain{background-size:contain}.lg\:border-transparent{border-color:transparent}.lg\:border-color-black{border-color:#000}.lg\:border-color-mine-shaft{border-color:#373737}.lg\:border-color-fuscous-gray{border-color:#4c4d4b}.lg\:border-color-emperor{border-color:#5d5d5d}.lg\:border-color-dove-gray{border-color:#646464}.lg\:border-color-boulder{border-color:#7b7b7b}.lg\:border-color-silver{border-color:#bbb}.lg\:border-color-alto{border-color:#dadada}.lg\:border-color-mercury{border-color:#e9e9e9}.lg\:border-color-seashell{border-color:#f1f1f1}.lg\:border-color-white{border-color:#fff}.lg\:border-color-orient{border-color:#005c7c}.lg\:border-color-shakespeare{border-color:#4ab9d4}.lg\:border-color-yellow-metal{border-color:#807040}.lg\:border-color-kumera{border-color:#8a741d}.lg\:border-color-olive{border-color:#8e7100}.lg\:border-color-barley-corn{border-color:#a0915e}.lg\:border-color-verdigris{border-color:#494a2d}.lg\:border-color-texas{border-color:#f9fb93}.lg\:border-color-ferra{border-color:#634849}.lg\:border-color-cherub{border-color:#fbe3e4}.lg\:border-color-cabbage-pont{border-color:#454e41}.lg\:border-color-tea-green{border-color:#cfefc2}.lg\:hover\:border-transparent:hover{border-color:transparent}.lg\:hover\:border-color-black:hover{border-color:#000}.lg\:hover\:border-color-mine-shaft:hover{border-color:#373737}.lg\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.lg\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.lg\:hover\:border-color-dove-gray:hover{border-color:#646464}.lg\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.lg\:hover\:border-color-silver:hover{border-color:#bbb}.lg\:hover\:border-color-alto:hover{border-color:#dadada}.lg\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.lg\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.lg\:hover\:border-color-white:hover{border-color:#fff}.lg\:hover\:border-color-orient:hover{border-color:#005c7c}.lg\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.lg\:hover\:border-color-yellow-metal:hover{border-color:#807040}.lg\:hover\:border-color-kumera:hover{border-color:#8a741d}.lg\:hover\:border-color-olive:hover{border-color:#8e7100}.lg\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.lg\:hover\:border-color-verdigris:hover{border-color:#494a2d}.lg\:hover\:border-color-texas:hover{border-color:#f9fb93}.lg\:hover\:border-color-ferra:hover{border-color:#634849}.lg\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.lg\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.lg\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.lg\:focus\:border-transparent:focus{border-color:transparent}.lg\:focus\:border-color-black:focus{border-color:#000}.lg\:focus\:border-color-mine-shaft:focus{border-color:#373737}.lg\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.lg\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.lg\:focus\:border-color-dove-gray:focus{border-color:#646464}.lg\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.lg\:focus\:border-color-silver:focus{border-color:#bbb}.lg\:focus\:border-color-alto:focus{border-color:#dadada}.lg\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.lg\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.lg\:focus\:border-color-white:focus{border-color:#fff}.lg\:focus\:border-color-orient:focus{border-color:#005c7c}.lg\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.lg\:focus\:border-color-yellow-metal:focus{border-color:#807040}.lg\:focus\:border-color-kumera:focus{border-color:#8a741d}.lg\:focus\:border-color-olive:focus{border-color:#8e7100}.lg\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.lg\:focus\:border-color-verdigris:focus{border-color:#494a2d}.lg\:focus\:border-color-texas:focus{border-color:#f9fb93}.lg\:focus\:border-color-ferra:focus{border-color:#634849}.lg\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.lg\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.lg\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.lg\:rounded-none{border-radius:0}.lg\:rounded-sm{border-radius:.125rem}.lg\:rounded{border-radius:.25rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:rounded-full{border-radius:9999px}.lg\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.lg\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.lg\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.lg\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.lg\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.lg\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.lg\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.lg\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.lg\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.lg\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.lg\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.lg\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.lg\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.lg\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.lg\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.lg\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.lg\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.lg\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.lg\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.lg\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.lg\:rounded-tl-none{border-top-left-radius:0}.lg\:rounded-tr-none{border-top-right-radius:0}.lg\:rounded-br-none{border-bottom-right-radius:0}.lg\:rounded-bl-none{border-bottom-left-radius:0}.lg\:rounded-tl-sm{border-top-left-radius:.125rem}.lg\:rounded-tr-sm{border-top-right-radius:.125rem}.lg\:rounded-br-sm{border-bottom-right-radius:.125rem}.lg\:rounded-bl-sm{border-bottom-left-radius:.125rem}.lg\:rounded-tl{border-top-left-radius:.25rem}.lg\:rounded-tr{border-top-right-radius:.25rem}.lg\:rounded-br{border-bottom-right-radius:.25rem}.lg\:rounded-bl{border-bottom-left-radius:.25rem}.lg\:rounded-tl-lg{border-top-left-radius:.5rem}.lg\:rounded-tr-lg{border-top-right-radius:.5rem}.lg\:rounded-br-lg{border-bottom-right-radius:.5rem}.lg\:rounded-bl-lg{border-bottom-left-radius:.5rem}.lg\:rounded-tl-full{border-top-left-radius:9999px}.lg\:rounded-tr-full{border-top-right-radius:9999px}.lg\:rounded-br-full{border-bottom-right-radius:9999px}.lg\:rounded-bl-full{border-bottom-left-radius:9999px}.lg\:border-solid{border-style:solid}.lg\:border-dashed{border-style:dashed}.lg\:border-dotted{border-style:dotted}.lg\:border-none{border-style:none}.lg\:border-0{border-width:0}.lg\:border-2{border-width:2px}.lg\:border-4{border-width:4px}.lg\:border-8{border-width:8px}.lg\:border{border-width:1px}.lg\:border-t-0{border-top-width:0}.lg\:border-r-0{border-right-width:0}.lg\:border-b-0{border-bottom-width:0}.lg\:border-l-0{border-left-width:0}.lg\:border-t-2{border-top-width:2px}.lg\:border-r-2{border-right-width:2px}.lg\:border-b-2{border-bottom-width:2px}.lg\:border-l-2{border-left-width:2px}.lg\:border-t-4{border-top-width:4px}.lg\:border-r-4{border-right-width:4px}.lg\:border-b-4{border-bottom-width:4px}.lg\:border-l-4{border-left-width:4px}.lg\:border-t-8{border-top-width:8px}.lg\:border-r-8{border-right-width:8px}.lg\:border-b-8{border-bottom-width:8px}.lg\:border-l-8{border-left-width:8px}.lg\:border-t{border-top-width:1px}.lg\:border-r{border-right-width:1px}.lg\:border-b{border-bottom-width:1px}.lg\:border-l{border-left-width:1px}.lg\:cursor-auto{cursor:auto}.lg\:cursor-default{cursor:default}.lg\:cursor-pointer{cursor:pointer}.lg\:cursor-wait{cursor:wait}.lg\:cursor-move{cursor:move}.lg\:cursor-not-allowed{cursor:not-allowed}.lg\:block{display:block}.lg\:inline-block{display:inline-block}.lg\:inline{display:inline}.lg\:table{display:table}.lg\:table-row{display:table-row}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:hover\:block:hover{display:block}.lg\:hover\:inline-block:hover{display:inline-block}.lg\:hover\:inline:hover{display:inline}.lg\:hover\:table:hover{display:table}.lg\:hover\:table-row:hover{display:table-row}.lg\:hover\:table-cell:hover{display:table-cell}.lg\:hover\:hidden:hover{display:none}.lg\:flex{display:flex}.lg\:inline-flex{display:inline-flex}.lg\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.lg\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.lg\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.lg\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.lg\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.lg\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.lg\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.lg\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.lg\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.lg\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.lg\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.lg\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.lg\:self-auto{-ms-flex-item-align:auto;align-self:auto}.lg\:self-start{-ms-flex-item-align:start;align-self:flex-start}.lg\:self-end{-ms-flex-item-align:end;align-self:flex-end}.lg\:self-center{-ms-flex-item-align:center;align-self:center}.lg\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.lg\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.lg\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.lg\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.lg\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.lg\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.lg\:content-center{-ms-flex-line-pack:center;align-content:center}.lg\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.lg\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.lg\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.lg\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.lg\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.lg\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.lg\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.lg\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.lg\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.lg\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.lg\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.lg\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.lg\:float-right{float:right}.lg\:float-left{float:left}.lg\:float-none{float:none}.lg\:clearfix:after{content:"";display:table;clear:both}.lg\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.lg\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.lg\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lg\:font-hairline{font-weight:100}.lg\:font-thin{font-weight:200}.lg\:font-light{font-weight:300}.lg\:font-normal{font-weight:400}.lg\:font-medium{font-weight:500}.lg\:font-semibold{font-weight:600}.lg\:font-bold{font-weight:700}.lg\:font-extrabold{font-weight:800}.lg\:font-black{font-weight:900}.lg\:hover\:font-hairline:hover{font-weight:100}.lg\:hover\:font-thin:hover{font-weight:200}.lg\:hover\:font-light:hover{font-weight:300}.lg\:hover\:font-normal:hover{font-weight:400}.lg\:hover\:font-medium:hover{font-weight:500}.lg\:hover\:font-semibold:hover{font-weight:600}.lg\:hover\:font-bold:hover{font-weight:700}.lg\:hover\:font-extrabold:hover{font-weight:800}.lg\:hover\:font-black:hover{font-weight:900}.lg\:focus\:font-hairline:focus{font-weight:100}.lg\:focus\:font-thin:focus{font-weight:200}.lg\:focus\:font-light:focus{font-weight:300}.lg\:focus\:font-normal:focus{font-weight:400}.lg\:focus\:font-medium:focus{font-weight:500}.lg\:focus\:font-semibold:focus{font-weight:600}.lg\:focus\:font-bold:focus{font-weight:700}.lg\:focus\:font-extrabold:focus{font-weight:800}.lg\:focus\:font-black:focus{font-weight:900}.lg\:h-1{height:.25rem}.lg\:h-2{height:.5rem}.lg\:h-3{height:.75rem}.lg\:h-4{height:1rem}.lg\:h-5{height:1.25rem}.lg\:h-6{height:1.5rem}.lg\:h-8{height:2rem}.lg\:h-10{height:2.5rem}.lg\:h-12{height:3rem}.lg\:h-16{height:4rem}.lg\:h-24{height:6rem}.lg\:h-32{height:8rem}.lg\:h-48{height:12rem}.lg\:h-64{height:16rem}.lg\:h-auto{height:auto}.lg\:h-px{height:1px}.lg\:h-full{height:100%}.lg\:h-screen{height:100vh}.lg\:h-screen-40-width{height:40vw}.lg\:h-screen-60-width{height:60vw}.lg\:h-screen-full-width{height:100vw}.lg\:leading-zero{line-height:0}.lg\:leading-none{line-height:1}.lg\:leading-tight{line-height:1.25}.lg\:leading-normal{line-height:1.5}.lg\:leading-loose{line-height:2}.lg\:m-0{margin:0}.lg\:m-1{margin:.25rem}.lg\:m-2{margin:.5rem}.lg\:m-3{margin:.75rem}.lg\:m-4{margin:1rem}.lg\:m-5{margin:1.25rem}.lg\:m-6{margin:1.5rem}.lg\:m-8{margin:2rem}.lg\:m-10{margin:2.5rem}.lg\:m-12{margin:3rem}.lg\:m-16{margin:4rem}.lg\:m-20{margin:5rem}.lg\:m-24{margin:6rem}.lg\:m-32{margin:8rem}.lg\:m-auto{margin:auto}.lg\:m-px{margin:1px}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:my-1{margin-top:.25rem;margin-bottom:.25rem}.lg\:mx-1{margin-left:.25rem;margin-right:.25rem}.lg\:my-2{margin-top:.5rem;margin-bottom:.5rem}.lg\:mx-2{margin-left:.5rem;margin-right:.5rem}.lg\:my-3{margin-top:.75rem;margin-bottom:.75rem}.lg\:mx-3{margin-left:.75rem;margin-right:.75rem}.lg\:my-4{margin-top:1rem;margin-bottom:1rem}.lg\:mx-4{margin-left:1rem;margin-right:1rem}.lg\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.lg\:my-8{margin-top:2rem;margin-bottom:2rem}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.lg\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.lg\:my-12{margin-top:3rem;margin-bottom:3rem}.lg\:mx-12{margin-left:3rem;margin-right:3rem}.lg\:my-16{margin-top:4rem;margin-bottom:4rem}.lg\:mx-16{margin-left:4rem;margin-right:4rem}.lg\:my-20{margin-top:5rem;margin-bottom:5rem}.lg\:mx-20{margin-left:5rem;margin-right:5rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-24{margin-left:6rem;margin-right:6rem}.lg\:my-32{margin-top:8rem;margin-bottom:8rem}.lg\:mx-32{margin-left:8rem;margin-right:8rem}.lg\:my-auto{margin-top:auto;margin-bottom:auto}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:my-px{margin-top:1px;margin-bottom:1px}.lg\:mx-px{margin-left:1px;margin-right:1px}.lg\:mt-0{margin-top:0}.lg\:mr-0{margin-right:0}.lg\:mb-0{margin-bottom:0}.lg\:ml-0{margin-left:0}.lg\:mt-1{margin-top:.25rem}.lg\:mr-1{margin-right:.25rem}.lg\:mb-1{margin-bottom:.25rem}.lg\:ml-1{margin-left:.25rem}.lg\:mt-2{margin-top:.5rem}.lg\:mr-2{margin-right:.5rem}.lg\:mb-2{margin-bottom:.5rem}.lg\:ml-2{margin-left:.5rem}.lg\:mt-3{margin-top:.75rem}.lg\:mr-3{margin-right:.75rem}.lg\:mb-3{margin-bottom:.75rem}.lg\:ml-3{margin-left:.75rem}.lg\:mt-4{margin-top:1rem}.lg\:mr-4{margin-right:1rem}.lg\:mb-4{margin-bottom:1rem}.lg\:ml-4{margin-left:1rem}.lg\:mt-5{margin-top:1.25rem}.lg\:mr-5{margin-right:1.25rem}.lg\:mb-5{margin-bottom:1.25rem}.lg\:ml-5{margin-left:1.25rem}.lg\:mt-6{margin-top:1.5rem}.lg\:mr-6{margin-right:1.5rem}.lg\:mb-6{margin-bottom:1.5rem}.lg\:ml-6{margin-left:1.5rem}.lg\:mt-8{margin-top:2rem}.lg\:mr-8{margin-right:2rem}.lg\:mb-8{margin-bottom:2rem}.lg\:ml-8{margin-left:2rem}.lg\:mt-10{margin-top:2.5rem}.lg\:mr-10{margin-right:2.5rem}.lg\:mb-10{margin-bottom:2.5rem}.lg\:ml-10{margin-left:2.5rem}.lg\:mt-12{margin-top:3rem}.lg\:mr-12{margin-right:3rem}.lg\:mb-12{margin-bottom:3rem}.lg\:ml-12{margin-left:3rem}.lg\:mt-16{margin-top:4rem}.lg\:mr-16{margin-right:4rem}.lg\:mb-16{margin-bottom:4rem}.lg\:ml-16{margin-left:4rem}.lg\:mt-20{margin-top:5rem}.lg\:mr-20{margin-right:5rem}.lg\:mb-20{margin-bottom:5rem}.lg\:ml-20{margin-left:5rem}.lg\:mt-24{margin-top:6rem}.lg\:mr-24{margin-right:6rem}.lg\:mb-24{margin-bottom:6rem}.lg\:ml-24{margin-left:6rem}.lg\:mt-32{margin-top:8rem}.lg\:mr-32{margin-right:8rem}.lg\:mb-32{margin-bottom:8rem}.lg\:ml-32{margin-left:8rem}.lg\:mt-auto{margin-top:auto}.lg\:mr-auto{margin-right:auto}.lg\:mb-auto{margin-bottom:auto}.lg\:ml-auto{margin-left:auto}.lg\:mt-px{margin-top:1px}.lg\:mr-px{margin-right:1px}.lg\:mb-px{margin-bottom:1px}.lg\:ml-px{margin-left:1px}.lg\:max-h-full{max-height:100%}.lg\:max-h-screen{max-height:100vh}.lg\:max-w-sm{max-width:576px}.lg\:max-w-md{max-width:768px}.lg\:max-w-lg{max-width:992px}.lg\:max-w-xl{max-width:1200px}.lg\:max-w-full{max-width:100%}.lg\:min-h-0{min-height:0}.lg\:min-h-full{min-height:100%}.lg\:min-h-screen{min-height:100vh}.lg\:min-w-0{min-width:0}.lg\:min-w-full{min-width:100%}.lg\:-m-0{margin:0}.lg\:-m-1{margin:-.25rem}.lg\:-m-2{margin:-.5rem}.lg\:-m-3{margin:-.75rem}.lg\:-m-4{margin:-1rem}.lg\:-m-5{margin:-1.25rem}.lg\:-m-6{margin:-1.5rem}.lg\:-m-8{margin:-2rem}.lg\:-m-10{margin:-2.5rem}.lg\:-m-12{margin:-3rem}.lg\:-m-16{margin:-4rem}.lg\:-m-20{margin:-5rem}.lg\:-m-24{margin:-6rem}.lg\:-m-32{margin:-8rem}.lg\:-m-px{margin:-1px}.lg\:-my-0{margin-top:0;margin-bottom:0}.lg\:-mx-0{margin-left:0;margin-right:0}.lg\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.lg\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.lg\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.lg\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.lg\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.lg\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.lg\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.lg\:-mx-4{margin-left:-1rem;margin-right:-1rem}.lg\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.lg\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lg\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.lg\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.lg\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.lg\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.lg\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.lg\:-mx-12{margin-left:-3rem;margin-right:-3rem}.lg\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.lg\:-mx-16{margin-left:-4rem;margin-right:-4rem}.lg\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.lg\:-mx-20{margin-left:-5rem;margin-right:-5rem}.lg\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.lg\:-mx-24{margin-left:-6rem;margin-right:-6rem}.lg\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.lg\:-mx-32{margin-left:-8rem;margin-right:-8rem}.lg\:-my-px{margin-top:-1px;margin-bottom:-1px}.lg\:-mx-px{margin-left:-1px;margin-right:-1px}.lg\:-mt-0{margin-top:0}.lg\:-mr-0{margin-right:0}.lg\:-mb-0{margin-bottom:0}.lg\:-ml-0{margin-left:0}.lg\:-mt-1{margin-top:-.25rem}.lg\:-mr-1{margin-right:-.25rem}.lg\:-mb-1{margin-bottom:-.25rem}.lg\:-ml-1{margin-left:-.25rem}.lg\:-mt-2{margin-top:-.5rem}.lg\:-mr-2{margin-right:-.5rem}.lg\:-mb-2{margin-bottom:-.5rem}.lg\:-ml-2{margin-left:-.5rem}.lg\:-mt-3{margin-top:-.75rem}.lg\:-mr-3{margin-right:-.75rem}.lg\:-mb-3{margin-bottom:-.75rem}.lg\:-ml-3{margin-left:-.75rem}.lg\:-mt-4{margin-top:-1rem}.lg\:-mr-4{margin-right:-1rem}.lg\:-mb-4{margin-bottom:-1rem}.lg\:-ml-4{margin-left:-1rem}.lg\:-mt-5{margin-top:-1.25rem}.lg\:-mr-5{margin-right:-1.25rem}.lg\:-mb-5{margin-bottom:-1.25rem}.lg\:-ml-5{margin-left:-1.25rem}.lg\:-mt-6{margin-top:-1.5rem}.lg\:-mr-6{margin-right:-1.5rem}.lg\:-mb-6{margin-bottom:-1.5rem}.lg\:-ml-6{margin-left:-1.5rem}.lg\:-mt-8{margin-top:-2rem}.lg\:-mr-8{margin-right:-2rem}.lg\:-mb-8{margin-bottom:-2rem}.lg\:-ml-8{margin-left:-2rem}.lg\:-mt-10{margin-top:-2.5rem}.lg\:-mr-10{margin-right:-2.5rem}.lg\:-mb-10{margin-bottom:-2.5rem}.lg\:-ml-10{margin-left:-2.5rem}.lg\:-mt-12{margin-top:-3rem}.lg\:-mr-12{margin-right:-3rem}.lg\:-mb-12{margin-bottom:-3rem}.lg\:-ml-12{margin-left:-3rem}.lg\:-mt-16{margin-top:-4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:-mb-16{margin-bottom:-4rem}.lg\:-ml-16{margin-left:-4rem}.lg\:-mt-20{margin-top:-5rem}.lg\:-mr-20{margin-right:-5rem}.lg\:-mb-20{margin-bottom:-5rem}.lg\:-ml-20{margin-left:-5rem}.lg\:-mt-24{margin-top:-6rem}.lg\:-mr-24{margin-right:-6rem}.lg\:-mb-24{margin-bottom:-6rem}.lg\:-ml-24{margin-left:-6rem}.lg\:-mt-32{margin-top:-8rem}.lg\:-mr-32{margin-right:-8rem}.lg\:-mb-32{margin-bottom:-8rem}.lg\:-ml-32{margin-left:-8rem}.lg\:-mt-px{margin-top:-1px}.lg\:-mr-px{margin-right:-1px}.lg\:-mb-px{margin-bottom:-1px}.lg\:-ml-px{margin-left:-1px}.lg\:opacity-0{opacity:0}.lg\:opacity-25{opacity:.25}.lg\:opacity-50{opacity:.5}.lg\:opacity-75{opacity:.75}.lg\:opacity-100{opacity:1}.group:hover .lg\:group-hover\:opacity-0{opacity:0}.group:hover .lg\:group-hover\:opacity-25{opacity:.25}.group:hover .lg\:group-hover\:opacity-50{opacity:.5}.group:hover .lg\:group-hover\:opacity-75{opacity:.75}.group:hover .lg\:group-hover\:opacity-100{opacity:1}.lg\:overflow-auto{overflow:auto}.lg\:overflow-hidden{overflow:hidden}.lg\:overflow-visible{overflow:visible}.lg\:overflow-scroll{overflow:scroll}.lg\:overflow-x-auto{overflow-x:auto}.lg\:overflow-y-auto{overflow-y:auto}.lg\:overflow-x-hidden{overflow-x:hidden}.lg\:overflow-y-hidden{overflow-y:hidden}.lg\:overflow-x-visible{overflow-x:visible}.lg\:overflow-y-visible{overflow-y:visible}.lg\:overflow-x-scroll{overflow-x:scroll}.lg\:overflow-y-scroll{overflow-y:scroll}.lg\:scrolling-touch{-webkit-overflow-scrolling:touch}.lg\:scrolling-auto{-webkit-overflow-scrolling:auto}.lg\:p-0{padding:0}.lg\:p-1{padding:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-3{padding:.75rem}.lg\:p-4{padding:1rem}.lg\:p-5{padding:1.25rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:p-10{padding:2.5rem}.lg\:p-12{padding:3rem}.lg\:p-16{padding:4rem}.lg\:p-20{padding:5rem}.lg\:p-24{padding:6rem}.lg\:p-32{padding:8rem}.lg\:p-px{padding:1px}.lg\:py-0{padding-top:0;padding-bottom:0}.lg\:px-0{padding-left:0;padding-right:0}.lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.lg\:px-1{padding-left:.25rem;padding-right:.25rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:py-3{padding-top:.75rem;padding-bottom:.75rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:py-8{padding-top:2rem;padding-bottom:2rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:py-12{padding-top:3rem;padding-bottom:3rem}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:py-16{padding-top:4rem;padding-bottom:4rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:py-20{padding-top:5rem;padding-bottom:5rem}.lg\:px-20{padding-left:5rem;padding-right:5rem}.lg\:py-24{padding-top:6rem;padding-bottom:6rem}.lg\:px-24{padding-left:6rem;padding-right:6rem}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:py-px{padding-top:1px;padding-bottom:1px}.lg\:px-px{padding-left:1px;padding-right:1px}.lg\:pt-0{padding-top:0}.lg\:pr-0{padding-right:0}.lg\:pb-0{padding-bottom:0}.lg\:pl-0{padding-left:0}.lg\:pt-1{padding-top:.25rem}.lg\:pr-1{padding-right:.25rem}.lg\:pb-1{padding-bottom:.25rem}.lg\:pl-1{padding-left:.25rem}.lg\:pt-2{padding-top:.5rem}.lg\:pr-2{padding-right:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:pt-3{padding-top:.75rem}.lg\:pr-3{padding-right:.75rem}.lg\:pb-3{padding-bottom:.75rem}.lg\:pl-3{padding-left:.75rem}.lg\:pt-4{padding-top:1rem}.lg\:pr-4{padding-right:1rem}.lg\:pb-4{padding-bottom:1rem}.lg\:pl-4{padding-left:1rem}.lg\:pt-5{padding-top:1.25rem}.lg\:pr-5{padding-right:1.25rem}.lg\:pb-5{padding-bottom:1.25rem}.lg\:pl-5{padding-left:1.25rem}.lg\:pt-6{padding-top:1.5rem}.lg\:pr-6{padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:pl-6{padding-left:1.5rem}.lg\:pt-8{padding-top:2rem}.lg\:pr-8{padding-right:2rem}.lg\:pb-8{padding-bottom:2rem}.lg\:pl-8{padding-left:2rem}.lg\:pt-10{padding-top:2.5rem}.lg\:pr-10{padding-right:2.5rem}.lg\:pb-10{padding-bottom:2.5rem}.lg\:pl-10{padding-left:2.5rem}.lg\:pt-12{padding-top:3rem}.lg\:pr-12{padding-right:3rem}.lg\:pb-12{padding-bottom:3rem}.lg\:pl-12{padding-left:3rem}.lg\:pt-16{padding-top:4rem}.lg\:pr-16{padding-right:4rem}.lg\:pb-16{padding-bottom:4rem}.lg\:pl-16{padding-left:4rem}.lg\:pt-20{padding-top:5rem}.lg\:pr-20{padding-right:5rem}.lg\:pb-20{padding-bottom:5rem}.lg\:pl-20{padding-left:5rem}.lg\:pt-24{padding-top:6rem}.lg\:pr-24{padding-right:6rem}.lg\:pb-24{padding-bottom:6rem}.lg\:pl-24{padding-left:6rem}.lg\:pt-32{padding-top:8rem}.lg\:pr-32{padding-right:8rem}.lg\:pb-32{padding-bottom:8rem}.lg\:pl-32{padding-left:8rem}.lg\:pt-px{padding-top:1px}.lg\:pr-px{padding-right:1px}.lg\:pb-px{padding-bottom:1px}.lg\:pl-px{padding-left:1px}.lg\:pointer-events-none{pointer-events:none}.lg\:pointer-events-auto{pointer-events:auto}.lg\:static{position:static}.lg\:fixed{position:fixed}.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:sticky}.lg\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.lg\:pin{top:0;right:0;bottom:0;left:0}.lg\:pin-y{top:0;bottom:0}.lg\:pin-x{right:0;left:0}.lg\:pin-t{top:0}.lg\:pin-r{right:0}.lg\:pin-b{bottom:0}.lg\:pin-l{left:0}.lg\:resize-none{resize:none}.lg\:resize-y{resize:vertical}.lg\:resize-x{resize:horizontal}.lg\:resize{resize:both}.lg\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.lg\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.lg\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.lg\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.lg\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:0 0}.lg\:table-auto{table-layout:auto}.lg\:table-fixed{table-layout:fixed}.lg\:text-left{text-align:left}.lg\:text-center{text-align:center}.lg\:text-right{text-align:right}.lg\:text-justify{text-align:justify}.lg\:text-transparent{color:transparent}.lg\:text-color-black{color:#000}.lg\:text-color-mine-shaft{color:#373737}.lg\:text-color-fuscous-gray{color:#4c4d4b}.lg\:text-color-emperor{color:#5d5d5d}.lg\:text-color-dove-gray{color:#646464}.lg\:text-color-boulder{color:#7b7b7b}.lg\:text-color-silver{color:#bbb}.lg\:text-color-alto{color:#dadada}.lg\:text-color-mercury{color:#e9e9e9}.lg\:text-color-seashell{color:#f1f1f1}.lg\:text-color-white{color:#fff}.lg\:text-color-orient{color:#005c7c}.lg\:text-color-shakespeare{color:#4ab9d4}.lg\:text-color-yellow-metal{color:#807040}.lg\:text-color-kumera{color:#8a741d}.lg\:text-color-olive{color:#8e7100}.lg\:text-color-barley-corn{color:#a0915e}.lg\:text-color-verdigris{color:#494a2d}.lg\:text-color-texas{color:#f9fb93}.lg\:text-color-ferra{color:#634849}.lg\:text-color-cherub{color:#fbe3e4}.lg\:text-color-cabbage-pont{color:#454e41}.lg\:text-color-tea-green{color:#cfefc2}.group:hover .lg\:group-hover\:text-transparent{color:transparent}.group:hover .lg\:group-hover\:text-color-black{color:#000}.group:hover .lg\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .lg\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .lg\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .lg\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .lg\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .lg\:group-hover\:text-color-silver{color:#bbb}.group:hover .lg\:group-hover\:text-color-alto{color:#dadada}.group:hover .lg\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .lg\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .lg\:group-hover\:text-color-white{color:#fff}.group:hover .lg\:group-hover\:text-color-orient{color:#005c7c}.group:hover .lg\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .lg\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .lg\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .lg\:group-hover\:text-color-olive{color:#8e7100}.group:hover .lg\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .lg\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .lg\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .lg\:group-hover\:text-color-ferra{color:#634849}.group:hover .lg\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .lg\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .lg\:group-hover\:text-color-tea-green{color:#cfefc2}.lg\:hover\:text-transparent:hover{color:transparent}.lg\:hover\:text-color-black:hover{color:#000}.lg\:hover\:text-color-mine-shaft:hover{color:#373737}.lg\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.lg\:hover\:text-color-emperor:hover{color:#5d5d5d}.lg\:hover\:text-color-dove-gray:hover{color:#646464}.lg\:hover\:text-color-boulder:hover{color:#7b7b7b}.lg\:hover\:text-color-silver:hover{color:#bbb}.lg\:hover\:text-color-alto:hover{color:#dadada}.lg\:hover\:text-color-mercury:hover{color:#e9e9e9}.lg\:hover\:text-color-seashell:hover{color:#f1f1f1}.lg\:hover\:text-color-white:hover{color:#fff}.lg\:hover\:text-color-orient:hover{color:#005c7c}.lg\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.lg\:hover\:text-color-yellow-metal:hover{color:#807040}.lg\:hover\:text-color-kumera:hover{color:#8a741d}.lg\:hover\:text-color-olive:hover{color:#8e7100}.lg\:hover\:text-color-barley-corn:hover{color:#a0915e}.lg\:hover\:text-color-verdigris:hover{color:#494a2d}.lg\:hover\:text-color-texas:hover{color:#f9fb93}.lg\:hover\:text-color-ferra:hover{color:#634849}.lg\:hover\:text-color-cherub:hover{color:#fbe3e4}.lg\:hover\:text-color-cabbage-pont:hover{color:#454e41}.lg\:hover\:text-color-tea-green:hover{color:#cfefc2}.lg\:focus\:text-transparent:focus{color:transparent}.lg\:focus\:text-color-black:focus{color:#000}.lg\:focus\:text-color-mine-shaft:focus{color:#373737}.lg\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.lg\:focus\:text-color-emperor:focus{color:#5d5d5d}.lg\:focus\:text-color-dove-gray:focus{color:#646464}.lg\:focus\:text-color-boulder:focus{color:#7b7b7b}.lg\:focus\:text-color-silver:focus{color:#bbb}.lg\:focus\:text-color-alto:focus{color:#dadada}.lg\:focus\:text-color-mercury:focus{color:#e9e9e9}.lg\:focus\:text-color-seashell:focus{color:#f1f1f1}.lg\:focus\:text-color-white:focus{color:#fff}.lg\:focus\:text-color-orient:focus{color:#005c7c}.lg\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.lg\:focus\:text-color-yellow-metal:focus{color:#807040}.lg\:focus\:text-color-kumera:focus{color:#8a741d}.lg\:focus\:text-color-olive:focus{color:#8e7100}.lg\:focus\:text-color-barley-corn:focus{color:#a0915e}.lg\:focus\:text-color-verdigris:focus{color:#494a2d}.lg\:focus\:text-color-texas:focus{color:#f9fb93}.lg\:focus\:text-color-ferra:focus{color:#634849}.lg\:focus\:text-color-cherub:focus{color:#fbe3e4}.lg\:focus\:text-color-cabbage-pont:focus{color:#454e41}.lg\:focus\:text-color-tea-green:focus{color:#cfefc2}.lg\:text-3xs{font-size:.667rem}.lg\:text-2xs{font-size:.8rem}.lg\:text-xs{font-size:.867rem}.lg\:text-sm{font-size:.933rem}.lg\:text-base{font-size:15px}.lg\:text-lg{font-size:1.067rem}.lg\:text-xl{font-size:1.2rem}.lg\:text-2xl{font-size:1.267rem}.lg\:text-3xl{font-size:1.933rem}.lg\:italic{font-style:italic}.lg\:roman{font-style:normal}.lg\:uppercase{text-transform:uppercase}.lg\:lowercase{text-transform:lowercase}.lg\:capitalize{text-transform:capitalize}.lg\:normal-case{text-transform:none}.lg\:underline{text-decoration:underline}.lg\:line-through{text-decoration:line-through}.lg\:no-underline{text-decoration:none}.lg\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.lg\:hover\:italic:hover{font-style:italic}.lg\:hover\:roman:hover{font-style:normal}.lg\:hover\:uppercase:hover{text-transform:uppercase}.lg\:hover\:lowercase:hover{text-transform:lowercase}.lg\:hover\:capitalize:hover{text-transform:capitalize}.lg\:hover\:normal-case:hover{text-transform:none}.lg\:hover\:underline:hover{text-decoration:underline}.lg\:hover\:line-through:hover{text-decoration:line-through}.lg\:hover\:no-underline:hover{text-decoration:none}.lg\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.lg\:focus\:italic:focus{font-style:italic}.lg\:focus\:roman:focus{font-style:normal}.lg\:focus\:uppercase:focus{text-transform:uppercase}.lg\:focus\:lowercase:focus{text-transform:lowercase}.lg\:focus\:capitalize:focus{text-transform:capitalize}.lg\:focus\:normal-case:focus{text-transform:none}.lg\:focus\:underline:focus{text-decoration:underline}.lg\:focus\:line-through:focus{text-decoration:line-through}.lg\:focus\:no-underline:focus{text-decoration:none}.lg\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.lg\:tracking-tight{letter-spacing:-.05em}.lg\:tracking-normal{letter-spacing:0}.lg\:tracking-wide{letter-spacing:.05em}.lg\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lg\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.lg\:align-baseline{vertical-align:baseline}.lg\:align-top{vertical-align:top}.lg\:align-middle{vertical-align:middle}.lg\:align-bottom{vertical-align:bottom}.lg\:align-text-top{vertical-align:text-top}.lg\:align-text-bottom{vertical-align:text-bottom}.lg\:visible{visibility:visible}.lg\:invisible{visibility:hidden}.lg\:whitespace-normal{white-space:normal}.lg\:whitespace-no-wrap{white-space:nowrap}.lg\:whitespace-pre{white-space:pre}.lg\:whitespace-pre-line{white-space:pre-line}.lg\:whitespace-pre-wrap{white-space:pre-wrap}.lg\:break-words{word-wrap:break-word}.lg\:break-normal{word-wrap:normal}.lg\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lg\:w-1{width:.25rem}.lg\:w-2{width:.5rem}.lg\:w-3{width:.75rem}.lg\:w-4{width:1rem}.lg\:w-5{width:1.25rem}.lg\:w-6{width:1.5rem}.lg\:w-8{width:2rem}.lg\:w-10{width:2.5rem}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-24{width:6rem}.lg\:w-32{width:8rem}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-56{width:14rem}.lg\:w-64{width:16rem}.lg\:w-auto{width:auto}.lg\:w-px{width:1px}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.33333%}.lg\:w-2\/3{width:66.66667%}.lg\:w-1\/4{width:25%}.lg\:w-3\/4{width:75%}.lg\:w-1\/5{width:20%}.lg\:w-2\/5{width:40%}.lg\:w-3\/5{width:60%}.lg\:w-4\/5{width:80%}.lg\:w-1\/6{width:16.66667%}.lg\:w-1\/8{width:12.5%}.lg\:w-1\/10{width:10%}.lg\:w-1\/12{width:8.33333%}.lg\:w-full{width:100%}.lg\:w-screen{width:100vw}.lg\:z-0{z-index:0}.lg\:z-10{z-index:10}.lg\:z-20{z-index:20}.lg\:z-30{z-index:30}.lg\:z-40{z-index:40}.lg\:z-50{z-index:50}.lg\:z-auto{z-index:auto}.lg\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.lg\:text-shadow-none{text-shadow:none}.lg\:gradient-grey,.lg\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.lg\:gradient-grey-reversed,.lg\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.lg\:pin-t8{top:2rem}.lg\:pin-t16{top:4rem}.lg\:pin-b24{bottom:12rem}.lg\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.lg\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.lg\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}@media(min-width:1200px){.xl\:list-reset{list-style:none;padding:0}.xl\:appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.xl\:bg-fixed{background-attachment:fixed}.xl\:bg-local{background-attachment:local}.xl\:bg-scroll{background-attachment:scroll}.xl\:bg-transparent{background-color:initial}.xl\:bg-color-black{background-color:#000}.xl\:bg-color-mine-shaft{background-color:#373737}.xl\:bg-color-fuscous-gray{background-color:#4c4d4b}.xl\:bg-color-emperor{background-color:#5d5d5d}.xl\:bg-color-dove-gray{background-color:#646464}.xl\:bg-color-boulder{background-color:#7b7b7b}.xl\:bg-color-silver{background-color:#bbb}.xl\:bg-color-alto{background-color:#dadada}.xl\:bg-color-mercury{background-color:#e9e9e9}.xl\:bg-color-seashell{background-color:#f1f1f1}.xl\:bg-color-white{background-color:#fff}.xl\:bg-color-orient{background-color:#005c7c}.xl\:bg-color-shakespeare{background-color:#4ab9d4}.xl\:bg-color-yellow-metal{background-color:#807040}.xl\:bg-color-kumera{background-color:#8a741d}.xl\:bg-color-olive{background-color:#8e7100}.xl\:bg-color-barley-corn{background-color:#a0915e}.xl\:bg-color-verdigris{background-color:#494a2d}.xl\:bg-color-texas{background-color:#f9fb93}.xl\:bg-color-ferra{background-color:#634849}.xl\:bg-color-cherub{background-color:#fbe3e4}.xl\:bg-color-cabbage-pont{background-color:#454e41}.xl\:bg-color-tea-green{background-color:#cfefc2}.group:hover .xl\:group-hover\:bg-transparent{background-color:initial}.group:hover .xl\:group-hover\:bg-color-black{background-color:#000}.group:hover .xl\:group-hover\:bg-color-mine-shaft{background-color:#373737}.group:hover .xl\:group-hover\:bg-color-fuscous-gray{background-color:#4c4d4b}.group:hover .xl\:group-hover\:bg-color-emperor{background-color:#5d5d5d}.group:hover .xl\:group-hover\:bg-color-dove-gray{background-color:#646464}.group:hover .xl\:group-hover\:bg-color-boulder{background-color:#7b7b7b}.group:hover .xl\:group-hover\:bg-color-silver{background-color:#bbb}.group:hover .xl\:group-hover\:bg-color-alto{background-color:#dadada}.group:hover .xl\:group-hover\:bg-color-mercury{background-color:#e9e9e9}.group:hover .xl\:group-hover\:bg-color-seashell{background-color:#f1f1f1}.group:hover .xl\:group-hover\:bg-color-white{background-color:#fff}.group:hover .xl\:group-hover\:bg-color-orient{background-color:#005c7c}.group:hover .xl\:group-hover\:bg-color-shakespeare{background-color:#4ab9d4}.group:hover .xl\:group-hover\:bg-color-yellow-metal{background-color:#807040}.group:hover .xl\:group-hover\:bg-color-kumera{background-color:#8a741d}.group:hover .xl\:group-hover\:bg-color-olive{background-color:#8e7100}.group:hover .xl\:group-hover\:bg-color-barley-corn{background-color:#a0915e}.group:hover .xl\:group-hover\:bg-color-verdigris{background-color:#494a2d}.group:hover .xl\:group-hover\:bg-color-texas{background-color:#f9fb93}.group:hover .xl\:group-hover\:bg-color-ferra{background-color:#634849}.group:hover .xl\:group-hover\:bg-color-cherub{background-color:#fbe3e4}.group:hover .xl\:group-hover\:bg-color-cabbage-pont{background-color:#454e41}.group:hover .xl\:group-hover\:bg-color-tea-green{background-color:#cfefc2}.xl\:hover\:bg-transparent:hover{background-color:initial}.xl\:hover\:bg-color-black:hover{background-color:#000}.xl\:hover\:bg-color-mine-shaft:hover{background-color:#373737}.xl\:hover\:bg-color-fuscous-gray:hover{background-color:#4c4d4b}.xl\:hover\:bg-color-emperor:hover{background-color:#5d5d5d}.xl\:hover\:bg-color-dove-gray:hover{background-color:#646464}.xl\:hover\:bg-color-boulder:hover{background-color:#7b7b7b}.xl\:hover\:bg-color-silver:hover{background-color:#bbb}.xl\:hover\:bg-color-alto:hover{background-color:#dadada}.xl\:hover\:bg-color-mercury:hover{background-color:#e9e9e9}.xl\:hover\:bg-color-seashell:hover{background-color:#f1f1f1}.xl\:hover\:bg-color-white:hover{background-color:#fff}.xl\:hover\:bg-color-orient:hover{background-color:#005c7c}.xl\:hover\:bg-color-shakespeare:hover{background-color:#4ab9d4}.xl\:hover\:bg-color-yellow-metal:hover{background-color:#807040}.xl\:hover\:bg-color-kumera:hover{background-color:#8a741d}.xl\:hover\:bg-color-olive:hover{background-color:#8e7100}.xl\:hover\:bg-color-barley-corn:hover{background-color:#a0915e}.xl\:hover\:bg-color-verdigris:hover{background-color:#494a2d}.xl\:hover\:bg-color-texas:hover{background-color:#f9fb93}.xl\:hover\:bg-color-ferra:hover{background-color:#634849}.xl\:hover\:bg-color-cherub:hover{background-color:#fbe3e4}.xl\:hover\:bg-color-cabbage-pont:hover{background-color:#454e41}.xl\:hover\:bg-color-tea-green:hover{background-color:#cfefc2}.xl\:focus\:bg-transparent:focus{background-color:initial}.xl\:focus\:bg-color-black:focus{background-color:#000}.xl\:focus\:bg-color-mine-shaft:focus{background-color:#373737}.xl\:focus\:bg-color-fuscous-gray:focus{background-color:#4c4d4b}.xl\:focus\:bg-color-emperor:focus{background-color:#5d5d5d}.xl\:focus\:bg-color-dove-gray:focus{background-color:#646464}.xl\:focus\:bg-color-boulder:focus{background-color:#7b7b7b}.xl\:focus\:bg-color-silver:focus{background-color:#bbb}.xl\:focus\:bg-color-alto:focus{background-color:#dadada}.xl\:focus\:bg-color-mercury:focus{background-color:#e9e9e9}.xl\:focus\:bg-color-seashell:focus{background-color:#f1f1f1}.xl\:focus\:bg-color-white:focus{background-color:#fff}.xl\:focus\:bg-color-orient:focus{background-color:#005c7c}.xl\:focus\:bg-color-shakespeare:focus{background-color:#4ab9d4}.xl\:focus\:bg-color-yellow-metal:focus{background-color:#807040}.xl\:focus\:bg-color-kumera:focus{background-color:#8a741d}.xl\:focus\:bg-color-olive:focus{background-color:#8e7100}.xl\:focus\:bg-color-barley-corn:focus{background-color:#a0915e}.xl\:focus\:bg-color-verdigris:focus{background-color:#494a2d}.xl\:focus\:bg-color-texas:focus{background-color:#f9fb93}.xl\:focus\:bg-color-ferra:focus{background-color:#634849}.xl\:focus\:bg-color-cherub:focus{background-color:#fbe3e4}.xl\:focus\:bg-color-cabbage-pont:focus{background-color:#454e41}.xl\:focus\:bg-color-tea-green:focus{background-color:#cfefc2}.xl\:bg-bottom{background-position:bottom}.xl\:bg-center{background-position:50%}.xl\:bg-left{background-position:0}.xl\:bg-left-bottom{background-position:0 100%}.xl\:bg-left-top{background-position:0 0}.xl\:bg-right{background-position:100%}.xl\:bg-right-bottom{background-position:100% 100%}.xl\:bg-right-top{background-position:100% 0}.xl\:bg-top{background-position:top}.xl\:bg-repeat{background-repeat:repeat}.xl\:bg-no-repeat{background-repeat:no-repeat}.xl\:bg-repeat-x{background-repeat:repeat-x}.xl\:bg-repeat-y{background-repeat:repeat-y}.xl\:bg-auto{background-size:auto}.xl\:bg-cover{background-size:cover}.xl\:bg-contain{background-size:contain}.xl\:border-transparent{border-color:transparent}.xl\:border-color-black{border-color:#000}.xl\:border-color-mine-shaft{border-color:#373737}.xl\:border-color-fuscous-gray{border-color:#4c4d4b}.xl\:border-color-emperor{border-color:#5d5d5d}.xl\:border-color-dove-gray{border-color:#646464}.xl\:border-color-boulder{border-color:#7b7b7b}.xl\:border-color-silver{border-color:#bbb}.xl\:border-color-alto{border-color:#dadada}.xl\:border-color-mercury{border-color:#e9e9e9}.xl\:border-color-seashell{border-color:#f1f1f1}.xl\:border-color-white{border-color:#fff}.xl\:border-color-orient{border-color:#005c7c}.xl\:border-color-shakespeare{border-color:#4ab9d4}.xl\:border-color-yellow-metal{border-color:#807040}.xl\:border-color-kumera{border-color:#8a741d}.xl\:border-color-olive{border-color:#8e7100}.xl\:border-color-barley-corn{border-color:#a0915e}.xl\:border-color-verdigris{border-color:#494a2d}.xl\:border-color-texas{border-color:#f9fb93}.xl\:border-color-ferra{border-color:#634849}.xl\:border-color-cherub{border-color:#fbe3e4}.xl\:border-color-cabbage-pont{border-color:#454e41}.xl\:border-color-tea-green{border-color:#cfefc2}.xl\:hover\:border-transparent:hover{border-color:transparent}.xl\:hover\:border-color-black:hover{border-color:#000}.xl\:hover\:border-color-mine-shaft:hover{border-color:#373737}.xl\:hover\:border-color-fuscous-gray:hover{border-color:#4c4d4b}.xl\:hover\:border-color-emperor:hover{border-color:#5d5d5d}.xl\:hover\:border-color-dove-gray:hover{border-color:#646464}.xl\:hover\:border-color-boulder:hover{border-color:#7b7b7b}.xl\:hover\:border-color-silver:hover{border-color:#bbb}.xl\:hover\:border-color-alto:hover{border-color:#dadada}.xl\:hover\:border-color-mercury:hover{border-color:#e9e9e9}.xl\:hover\:border-color-seashell:hover{border-color:#f1f1f1}.xl\:hover\:border-color-white:hover{border-color:#fff}.xl\:hover\:border-color-orient:hover{border-color:#005c7c}.xl\:hover\:border-color-shakespeare:hover{border-color:#4ab9d4}.xl\:hover\:border-color-yellow-metal:hover{border-color:#807040}.xl\:hover\:border-color-kumera:hover{border-color:#8a741d}.xl\:hover\:border-color-olive:hover{border-color:#8e7100}.xl\:hover\:border-color-barley-corn:hover{border-color:#a0915e}.xl\:hover\:border-color-verdigris:hover{border-color:#494a2d}.xl\:hover\:border-color-texas:hover{border-color:#f9fb93}.xl\:hover\:border-color-ferra:hover{border-color:#634849}.xl\:hover\:border-color-cherub:hover{border-color:#fbe3e4}.xl\:hover\:border-color-cabbage-pont:hover{border-color:#454e41}.xl\:hover\:border-color-tea-green:hover{border-color:#cfefc2}.xl\:focus\:border-transparent:focus{border-color:transparent}.xl\:focus\:border-color-black:focus{border-color:#000}.xl\:focus\:border-color-mine-shaft:focus{border-color:#373737}.xl\:focus\:border-color-fuscous-gray:focus{border-color:#4c4d4b}.xl\:focus\:border-color-emperor:focus{border-color:#5d5d5d}.xl\:focus\:border-color-dove-gray:focus{border-color:#646464}.xl\:focus\:border-color-boulder:focus{border-color:#7b7b7b}.xl\:focus\:border-color-silver:focus{border-color:#bbb}.xl\:focus\:border-color-alto:focus{border-color:#dadada}.xl\:focus\:border-color-mercury:focus{border-color:#e9e9e9}.xl\:focus\:border-color-seashell:focus{border-color:#f1f1f1}.xl\:focus\:border-color-white:focus{border-color:#fff}.xl\:focus\:border-color-orient:focus{border-color:#005c7c}.xl\:focus\:border-color-shakespeare:focus{border-color:#4ab9d4}.xl\:focus\:border-color-yellow-metal:focus{border-color:#807040}.xl\:focus\:border-color-kumera:focus{border-color:#8a741d}.xl\:focus\:border-color-olive:focus{border-color:#8e7100}.xl\:focus\:border-color-barley-corn:focus{border-color:#a0915e}.xl\:focus\:border-color-verdigris:focus{border-color:#494a2d}.xl\:focus\:border-color-texas:focus{border-color:#f9fb93}.xl\:focus\:border-color-ferra:focus{border-color:#634849}.xl\:focus\:border-color-cherub:focus{border-color:#fbe3e4}.xl\:focus\:border-color-cabbage-pont:focus{border-color:#454e41}.xl\:focus\:border-color-tea-green:focus{border-color:#cfefc2}.xl\:rounded-none{border-radius:0}.xl\:rounded-sm{border-radius:.125rem}.xl\:rounded{border-radius:.25rem}.xl\:rounded-lg{border-radius:.5rem}.xl\:rounded-full{border-radius:9999px}.xl\:rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.xl\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.xl\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.xl\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.xl\:rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.xl\:rounded-r-sm{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem}.xl\:rounded-b-sm{border-bottom-right-radius:.125rem;border-bottom-left-radius:.125rem}.xl\:rounded-l-sm{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem}.xl\:rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.xl\:rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.xl\:rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.xl\:rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.xl\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.xl\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.xl\:rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.xl\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.xl\:rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.xl\:rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.xl\:rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.xl\:rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.xl\:rounded-tl-none{border-top-left-radius:0}.xl\:rounded-tr-none{border-top-right-radius:0}.xl\:rounded-br-none{border-bottom-right-radius:0}.xl\:rounded-bl-none{border-bottom-left-radius:0}.xl\:rounded-tl-sm{border-top-left-radius:.125rem}.xl\:rounded-tr-sm{border-top-right-radius:.125rem}.xl\:rounded-br-sm{border-bottom-right-radius:.125rem}.xl\:rounded-bl-sm{border-bottom-left-radius:.125rem}.xl\:rounded-tl{border-top-left-radius:.25rem}.xl\:rounded-tr{border-top-right-radius:.25rem}.xl\:rounded-br{border-bottom-right-radius:.25rem}.xl\:rounded-bl{border-bottom-left-radius:.25rem}.xl\:rounded-tl-lg{border-top-left-radius:.5rem}.xl\:rounded-tr-lg{border-top-right-radius:.5rem}.xl\:rounded-br-lg{border-bottom-right-radius:.5rem}.xl\:rounded-bl-lg{border-bottom-left-radius:.5rem}.xl\:rounded-tl-full{border-top-left-radius:9999px}.xl\:rounded-tr-full{border-top-right-radius:9999px}.xl\:rounded-br-full{border-bottom-right-radius:9999px}.xl\:rounded-bl-full{border-bottom-left-radius:9999px}.xl\:border-solid{border-style:solid}.xl\:border-dashed{border-style:dashed}.xl\:border-dotted{border-style:dotted}.xl\:border-none{border-style:none}.xl\:border-0{border-width:0}.xl\:border-2{border-width:2px}.xl\:border-4{border-width:4px}.xl\:border-8{border-width:8px}.xl\:border{border-width:1px}.xl\:border-t-0{border-top-width:0}.xl\:border-r-0{border-right-width:0}.xl\:border-b-0{border-bottom-width:0}.xl\:border-l-0{border-left-width:0}.xl\:border-t-2{border-top-width:2px}.xl\:border-r-2{border-right-width:2px}.xl\:border-b-2{border-bottom-width:2px}.xl\:border-l-2{border-left-width:2px}.xl\:border-t-4{border-top-width:4px}.xl\:border-r-4{border-right-width:4px}.xl\:border-b-4{border-bottom-width:4px}.xl\:border-l-4{border-left-width:4px}.xl\:border-t-8{border-top-width:8px}.xl\:border-r-8{border-right-width:8px}.xl\:border-b-8{border-bottom-width:8px}.xl\:border-l-8{border-left-width:8px}.xl\:border-t{border-top-width:1px}.xl\:border-r{border-right-width:1px}.xl\:border-b{border-bottom-width:1px}.xl\:border-l{border-left-width:1px}.xl\:cursor-auto{cursor:auto}.xl\:cursor-default{cursor:default}.xl\:cursor-pointer{cursor:pointer}.xl\:cursor-wait{cursor:wait}.xl\:cursor-move{cursor:move}.xl\:cursor-not-allowed{cursor:not-allowed}.xl\:block{display:block}.xl\:inline-block{display:inline-block}.xl\:inline{display:inline}.xl\:table{display:table}.xl\:table-row{display:table-row}.xl\:table-cell{display:table-cell}.xl\:hidden{display:none}.xl\:hover\:block:hover{display:block}.xl\:hover\:inline-block:hover{display:inline-block}.xl\:hover\:inline:hover{display:inline}.xl\:hover\:table:hover{display:table}.xl\:hover\:table-row:hover{display:table-row}.xl\:hover\:table-cell:hover{display:table-cell}.xl\:hover\:hidden:hover{display:none}.xl\:flex{display:flex}.xl\:inline-flex{display:inline-flex}.xl\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.xl\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xl\:flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.xl\:flex-col-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.xl\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.xl\:flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.xl\:flex-no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.xl\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.xl\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.xl\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.xl\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.xl\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.xl\:self-auto{-ms-flex-item-align:auto;align-self:auto}.xl\:self-start{-ms-flex-item-align:start;align-self:flex-start}.xl\:self-end{-ms-flex-item-align:end;align-self:flex-end}.xl\:self-center{-ms-flex-item-align:center;align-self:center}.xl\:self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.xl\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.xl\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.xl\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.xl\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.xl\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}.xl\:content-center{-ms-flex-line-pack:center;align-content:center}.xl\:content-start{-ms-flex-line-pack:start;align-content:flex-start}.xl\:content-end{-ms-flex-line-pack:end;align-content:flex-end}.xl\:content-between{-ms-flex-line-pack:justify;align-content:space-between}.xl\:content-around{-ms-flex-line-pack:distribute;align-content:space-around}.xl\:flex-1{-webkit-box-flex:1;-ms-flex:1;flex:1}.xl\:flex-auto{-webkit-box-flex:1;-ms-flex:auto;flex:1 1}.xl\:flex-initial{-webkit-box-flex:initial;-ms-flex:initial;flex:0 1}.xl\:flex-none{-webkit-box-flex:0;-ms-flex:none;flex:0 0}.xl\:flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.xl\:flex-shrink{-ms-flex-negative:1;flex-shrink:1}.xl\:flex-no-grow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.xl\:flex-no-shrink{-ms-flex-negative:0;flex-shrink:0}.xl\:float-right{float:right}.xl\:float-left{float:left}.xl\:float-none{float:none}.xl\:clearfix:after{content:"";display:table;clear:both}.xl\:font-sans{font-family:cartogothic,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.xl\:font-serif{font-family:Constantia,Lucida Bright,Lucidabright,Lucida Serif,Lucida,DejaVu Serif,Bitstream Vera Serif,Liberation Serif,Georgia,serif}.xl\:font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.xl\:font-hairline{font-weight:100}.xl\:font-thin{font-weight:200}.xl\:font-light{font-weight:300}.xl\:font-normal{font-weight:400}.xl\:font-medium{font-weight:500}.xl\:font-semibold{font-weight:600}.xl\:font-bold{font-weight:700}.xl\:font-extrabold{font-weight:800}.xl\:font-black{font-weight:900}.xl\:hover\:font-hairline:hover{font-weight:100}.xl\:hover\:font-thin:hover{font-weight:200}.xl\:hover\:font-light:hover{font-weight:300}.xl\:hover\:font-normal:hover{font-weight:400}.xl\:hover\:font-medium:hover{font-weight:500}.xl\:hover\:font-semibold:hover{font-weight:600}.xl\:hover\:font-bold:hover{font-weight:700}.xl\:hover\:font-extrabold:hover{font-weight:800}.xl\:hover\:font-black:hover{font-weight:900}.xl\:focus\:font-hairline:focus{font-weight:100}.xl\:focus\:font-thin:focus{font-weight:200}.xl\:focus\:font-light:focus{font-weight:300}.xl\:focus\:font-normal:focus{font-weight:400}.xl\:focus\:font-medium:focus{font-weight:500}.xl\:focus\:font-semibold:focus{font-weight:600}.xl\:focus\:font-bold:focus{font-weight:700}.xl\:focus\:font-extrabold:focus{font-weight:800}.xl\:focus\:font-black:focus{font-weight:900}.xl\:h-1{height:.25rem}.xl\:h-2{height:.5rem}.xl\:h-3{height:.75rem}.xl\:h-4{height:1rem}.xl\:h-5{height:1.25rem}.xl\:h-6{height:1.5rem}.xl\:h-8{height:2rem}.xl\:h-10{height:2.5rem}.xl\:h-12{height:3rem}.xl\:h-16{height:4rem}.xl\:h-24{height:6rem}.xl\:h-32{height:8rem}.xl\:h-48{height:12rem}.xl\:h-64{height:16rem}.xl\:h-auto{height:auto}.xl\:h-px{height:1px}.xl\:h-full{height:100%}.xl\:h-screen{height:100vh}.xl\:h-screen-40-width{height:40vw}.xl\:h-screen-60-width{height:60vw}.xl\:h-screen-full-width{height:100vw}.xl\:leading-zero{line-height:0}.xl\:leading-none{line-height:1}.xl\:leading-tight{line-height:1.25}.xl\:leading-normal{line-height:1.5}.xl\:leading-loose{line-height:2}.xl\:m-0{margin:0}.xl\:m-1{margin:.25rem}.xl\:m-2{margin:.5rem}.xl\:m-3{margin:.75rem}.xl\:m-4{margin:1rem}.xl\:m-5{margin:1.25rem}.xl\:m-6{margin:1.5rem}.xl\:m-8{margin:2rem}.xl\:m-10{margin:2.5rem}.xl\:m-12{margin:3rem}.xl\:m-16{margin:4rem}.xl\:m-20{margin:5rem}.xl\:m-24{margin:6rem}.xl\:m-32{margin:8rem}.xl\:m-auto{margin:auto}.xl\:m-px{margin:1px}.xl\:my-0{margin-top:0;margin-bottom:0}.xl\:mx-0{margin-left:0;margin-right:0}.xl\:my-1{margin-top:.25rem;margin-bottom:.25rem}.xl\:mx-1{margin-left:.25rem;margin-right:.25rem}.xl\:my-2{margin-top:.5rem;margin-bottom:.5rem}.xl\:mx-2{margin-left:.5rem;margin-right:.5rem}.xl\:my-3{margin-top:.75rem;margin-bottom:.75rem}.xl\:mx-3{margin-left:.75rem;margin-right:.75rem}.xl\:my-4{margin-top:1rem;margin-bottom:1rem}.xl\:mx-4{margin-left:1rem;margin-right:1rem}.xl\:my-5{margin-top:1.25rem;margin-bottom:1.25rem}.xl\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.xl\:my-6{margin-top:1.5rem;margin-bottom:1.5rem}.xl\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.xl\:my-8{margin-top:2rem;margin-bottom:2rem}.xl\:mx-8{margin-left:2rem;margin-right:2rem}.xl\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.xl\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.xl\:my-12{margin-top:3rem;margin-bottom:3rem}.xl\:mx-12{margin-left:3rem;margin-right:3rem}.xl\:my-16{margin-top:4rem;margin-bottom:4rem}.xl\:mx-16{margin-left:4rem;margin-right:4rem}.xl\:my-20{margin-top:5rem;margin-bottom:5rem}.xl\:mx-20{margin-left:5rem;margin-right:5rem}.xl\:my-24{margin-top:6rem;margin-bottom:6rem}.xl\:mx-24{margin-left:6rem;margin-right:6rem}.xl\:my-32{margin-top:8rem;margin-bottom:8rem}.xl\:mx-32{margin-left:8rem;margin-right:8rem}.xl\:my-auto{margin-top:auto;margin-bottom:auto}.xl\:mx-auto{margin-left:auto;margin-right:auto}.xl\:my-px{margin-top:1px;margin-bottom:1px}.xl\:mx-px{margin-left:1px;margin-right:1px}.xl\:mt-0{margin-top:0}.xl\:mr-0{margin-right:0}.xl\:mb-0{margin-bottom:0}.xl\:ml-0{margin-left:0}.xl\:mt-1{margin-top:.25rem}.xl\:mr-1{margin-right:.25rem}.xl\:mb-1{margin-bottom:.25rem}.xl\:ml-1{margin-left:.25rem}.xl\:mt-2{margin-top:.5rem}.xl\:mr-2{margin-right:.5rem}.xl\:mb-2{margin-bottom:.5rem}.xl\:ml-2{margin-left:.5rem}.xl\:mt-3{margin-top:.75rem}.xl\:mr-3{margin-right:.75rem}.xl\:mb-3{margin-bottom:.75rem}.xl\:ml-3{margin-left:.75rem}.xl\:mt-4{margin-top:1rem}.xl\:mr-4{margin-right:1rem}.xl\:mb-4{margin-bottom:1rem}.xl\:ml-4{margin-left:1rem}.xl\:mt-5{margin-top:1.25rem}.xl\:mr-5{margin-right:1.25rem}.xl\:mb-5{margin-bottom:1.25rem}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-6{margin-top:1.5rem}.xl\:mr-6{margin-right:1.5rem}.xl\:mb-6{margin-bottom:1.5rem}.xl\:ml-6{margin-left:1.5rem}.xl\:mt-8{margin-top:2rem}.xl\:mr-8{margin-right:2rem}.xl\:mb-8{margin-bottom:2rem}.xl\:ml-8{margin-left:2rem}.xl\:mt-10{margin-top:2.5rem}.xl\:mr-10{margin-right:2.5rem}.xl\:mb-10{margin-bottom:2.5rem}.xl\:ml-10{margin-left:2.5rem}.xl\:mt-12{margin-top:3rem}.xl\:mr-12{margin-right:3rem}.xl\:mb-12{margin-bottom:3rem}.xl\:ml-12{margin-left:3rem}.xl\:mt-16{margin-top:4rem}.xl\:mr-16{margin-right:4rem}.xl\:mb-16{margin-bottom:4rem}.xl\:ml-16{margin-left:4rem}.xl\:mt-20{margin-top:5rem}.xl\:mr-20{margin-right:5rem}.xl\:mb-20{margin-bottom:5rem}.xl\:ml-20{margin-left:5rem}.xl\:mt-24{margin-top:6rem}.xl\:mr-24{margin-right:6rem}.xl\:mb-24{margin-bottom:6rem}.xl\:ml-24{margin-left:6rem}.xl\:mt-32{margin-top:8rem}.xl\:mr-32{margin-right:8rem}.xl\:mb-32{margin-bottom:8rem}.xl\:ml-32{margin-left:8rem}.xl\:mt-auto{margin-top:auto}.xl\:mr-auto{margin-right:auto}.xl\:mb-auto{margin-bottom:auto}.xl\:ml-auto{margin-left:auto}.xl\:mt-px{margin-top:1px}.xl\:mr-px{margin-right:1px}.xl\:mb-px{margin-bottom:1px}.xl\:ml-px{margin-left:1px}.xl\:max-h-full{max-height:100%}.xl\:max-h-screen{max-height:100vh}.xl\:max-w-sm{max-width:576px}.xl\:max-w-md{max-width:768px}.xl\:max-w-lg{max-width:992px}.xl\:max-w-xl{max-width:1200px}.xl\:max-w-full{max-width:100%}.xl\:min-h-0{min-height:0}.xl\:min-h-full{min-height:100%}.xl\:min-h-screen{min-height:100vh}.xl\:min-w-0{min-width:0}.xl\:min-w-full{min-width:100%}.xl\:-m-0{margin:0}.xl\:-m-1{margin:-.25rem}.xl\:-m-2{margin:-.5rem}.xl\:-m-3{margin:-.75rem}.xl\:-m-4{margin:-1rem}.xl\:-m-5{margin:-1.25rem}.xl\:-m-6{margin:-1.5rem}.xl\:-m-8{margin:-2rem}.xl\:-m-10{margin:-2.5rem}.xl\:-m-12{margin:-3rem}.xl\:-m-16{margin:-4rem}.xl\:-m-20{margin:-5rem}.xl\:-m-24{margin:-6rem}.xl\:-m-32{margin:-8rem}.xl\:-m-px{margin:-1px}.xl\:-my-0{margin-top:0;margin-bottom:0}.xl\:-mx-0{margin-left:0;margin-right:0}.xl\:-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.xl\:-mx-1{margin-left:-.25rem;margin-right:-.25rem}.xl\:-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.xl\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.xl\:-my-3{margin-top:-.75rem;margin-bottom:-.75rem}.xl\:-mx-3{margin-left:-.75rem;margin-right:-.75rem}.xl\:-my-4{margin-top:-1rem;margin-bottom:-1rem}.xl\:-mx-4{margin-left:-1rem;margin-right:-1rem}.xl\:-my-5{margin-top:-1.25rem;margin-bottom:-1.25rem}.xl\:-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.xl\:-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.xl\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.xl\:-my-8{margin-top:-2rem;margin-bottom:-2rem}.xl\:-mx-8{margin-left:-2rem;margin-right:-2rem}.xl\:-my-10{margin-top:-2.5rem;margin-bottom:-2.5rem}.xl\:-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.xl\:-my-12{margin-top:-3rem;margin-bottom:-3rem}.xl\:-mx-12{margin-left:-3rem;margin-right:-3rem}.xl\:-my-16{margin-top:-4rem;margin-bottom:-4rem}.xl\:-mx-16{margin-left:-4rem;margin-right:-4rem}.xl\:-my-20{margin-top:-5rem;margin-bottom:-5rem}.xl\:-mx-20{margin-left:-5rem;margin-right:-5rem}.xl\:-my-24{margin-top:-6rem;margin-bottom:-6rem}.xl\:-mx-24{margin-left:-6rem;margin-right:-6rem}.xl\:-my-32{margin-top:-8rem;margin-bottom:-8rem}.xl\:-mx-32{margin-left:-8rem;margin-right:-8rem}.xl\:-my-px{margin-top:-1px;margin-bottom:-1px}.xl\:-mx-px{margin-left:-1px;margin-right:-1px}.xl\:-mt-0{margin-top:0}.xl\:-mr-0{margin-right:0}.xl\:-mb-0{margin-bottom:0}.xl\:-ml-0{margin-left:0}.xl\:-mt-1{margin-top:-.25rem}.xl\:-mr-1{margin-right:-.25rem}.xl\:-mb-1{margin-bottom:-.25rem}.xl\:-ml-1{margin-left:-.25rem}.xl\:-mt-2{margin-top:-.5rem}.xl\:-mr-2{margin-right:-.5rem}.xl\:-mb-2{margin-bottom:-.5rem}.xl\:-ml-2{margin-left:-.5rem}.xl\:-mt-3{margin-top:-.75rem}.xl\:-mr-3{margin-right:-.75rem}.xl\:-mb-3{margin-bottom:-.75rem}.xl\:-ml-3{margin-left:-.75rem}.xl\:-mt-4{margin-top:-1rem}.xl\:-mr-4{margin-right:-1rem}.xl\:-mb-4{margin-bottom:-1rem}.xl\:-ml-4{margin-left:-1rem}.xl\:-mt-5{margin-top:-1.25rem}.xl\:-mr-5{margin-right:-1.25rem}.xl\:-mb-5{margin-bottom:-1.25rem}.xl\:-ml-5{margin-left:-1.25rem}.xl\:-mt-6{margin-top:-1.5rem}.xl\:-mr-6{margin-right:-1.5rem}.xl\:-mb-6{margin-bottom:-1.5rem}.xl\:-ml-6{margin-left:-1.5rem}.xl\:-mt-8{margin-top:-2rem}.xl\:-mr-8{margin-right:-2rem}.xl\:-mb-8{margin-bottom:-2rem}.xl\:-ml-8{margin-left:-2rem}.xl\:-mt-10{margin-top:-2.5rem}.xl\:-mr-10{margin-right:-2.5rem}.xl\:-mb-10{margin-bottom:-2.5rem}.xl\:-ml-10{margin-left:-2.5rem}.xl\:-mt-12{margin-top:-3rem}.xl\:-mr-12{margin-right:-3rem}.xl\:-mb-12{margin-bottom:-3rem}.xl\:-ml-12{margin-left:-3rem}.xl\:-mt-16{margin-top:-4rem}.xl\:-mr-16{margin-right:-4rem}.xl\:-mb-16{margin-bottom:-4rem}.xl\:-ml-16{margin-left:-4rem}.xl\:-mt-20{margin-top:-5rem}.xl\:-mr-20{margin-right:-5rem}.xl\:-mb-20{margin-bottom:-5rem}.xl\:-ml-20{margin-left:-5rem}.xl\:-mt-24{margin-top:-6rem}.xl\:-mr-24{margin-right:-6rem}.xl\:-mb-24{margin-bottom:-6rem}.xl\:-ml-24{margin-left:-6rem}.xl\:-mt-32{margin-top:-8rem}.xl\:-mr-32{margin-right:-8rem}.xl\:-mb-32{margin-bottom:-8rem}.xl\:-ml-32{margin-left:-8rem}.xl\:-mt-px{margin-top:-1px}.xl\:-mr-px{margin-right:-1px}.xl\:-mb-px{margin-bottom:-1px}.xl\:-ml-px{margin-left:-1px}.xl\:opacity-0{opacity:0}.xl\:opacity-25{opacity:.25}.xl\:opacity-50{opacity:.5}.xl\:opacity-75{opacity:.75}.xl\:opacity-100{opacity:1}.group:hover .xl\:group-hover\:opacity-0{opacity:0}.group:hover .xl\:group-hover\:opacity-25{opacity:.25}.group:hover .xl\:group-hover\:opacity-50{opacity:.5}.group:hover .xl\:group-hover\:opacity-75{opacity:.75}.group:hover .xl\:group-hover\:opacity-100{opacity:1}.xl\:overflow-auto{overflow:auto}.xl\:overflow-hidden{overflow:hidden}.xl\:overflow-visible{overflow:visible}.xl\:overflow-scroll{overflow:scroll}.xl\:overflow-x-auto{overflow-x:auto}.xl\:overflow-y-auto{overflow-y:auto}.xl\:overflow-x-hidden{overflow-x:hidden}.xl\:overflow-y-hidden{overflow-y:hidden}.xl\:overflow-x-visible{overflow-x:visible}.xl\:overflow-y-visible{overflow-y:visible}.xl\:overflow-x-scroll{overflow-x:scroll}.xl\:overflow-y-scroll{overflow-y:scroll}.xl\:scrolling-touch{-webkit-overflow-scrolling:touch}.xl\:scrolling-auto{-webkit-overflow-scrolling:auto}.xl\:p-0{padding:0}.xl\:p-1{padding:.25rem}.xl\:p-2{padding:.5rem}.xl\:p-3{padding:.75rem}.xl\:p-4{padding:1rem}.xl\:p-5{padding:1.25rem}.xl\:p-6{padding:1.5rem}.xl\:p-8{padding:2rem}.xl\:p-10{padding:2.5rem}.xl\:p-12{padding:3rem}.xl\:p-16{padding:4rem}.xl\:p-20{padding:5rem}.xl\:p-24{padding:6rem}.xl\:p-32{padding:8rem}.xl\:p-px{padding:1px}.xl\:py-0{padding-top:0;padding-bottom:0}.xl\:px-0{padding-left:0;padding-right:0}.xl\:py-1{padding-top:.25rem;padding-bottom:.25rem}.xl\:px-1{padding-left:.25rem;padding-right:.25rem}.xl\:py-2{padding-top:.5rem;padding-bottom:.5rem}.xl\:px-2{padding-left:.5rem;padding-right:.5rem}.xl\:py-3{padding-top:.75rem;padding-bottom:.75rem}.xl\:px-3{padding-left:.75rem;padding-right:.75rem}.xl\:py-4{padding-top:1rem;padding-bottom:1rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.xl\:px-6{padding-left:1.5rem;padding-right:1.5rem}.xl\:py-8{padding-top:2rem;padding-bottom:2rem}.xl\:px-8{padding-left:2rem;padding-right:2rem}.xl\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.xl\:px-10{padding-left:2.5rem;padding-right:2.5rem}.xl\:py-12{padding-top:3rem;padding-bottom:3rem}.xl\:px-12{padding-left:3rem;padding-right:3rem}.xl\:py-16{padding-top:4rem;padding-bottom:4rem}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:py-20{padding-top:5rem;padding-bottom:5rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:py-24{padding-top:6rem;padding-bottom:6rem}.xl\:px-24{padding-left:6rem;padding-right:6rem}.xl\:py-32{padding-top:8rem;padding-bottom:8rem}.xl\:px-32{padding-left:8rem;padding-right:8rem}.xl\:py-px{padding-top:1px;padding-bottom:1px}.xl\:px-px{padding-left:1px;padding-right:1px}.xl\:pt-0{padding-top:0}.xl\:pr-0{padding-right:0}.xl\:pb-0{padding-bottom:0}.xl\:pl-0{padding-left:0}.xl\:pt-1{padding-top:.25rem}.xl\:pr-1{padding-right:.25rem}.xl\:pb-1{padding-bottom:.25rem}.xl\:pl-1{padding-left:.25rem}.xl\:pt-2{padding-top:.5rem}.xl\:pr-2{padding-right:.5rem}.xl\:pb-2{padding-bottom:.5rem}.xl\:pl-2{padding-left:.5rem}.xl\:pt-3{padding-top:.75rem}.xl\:pr-3{padding-right:.75rem}.xl\:pb-3{padding-bottom:.75rem}.xl\:pl-3{padding-left:.75rem}.xl\:pt-4{padding-top:1rem}.xl\:pr-4{padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:pl-4{padding-left:1rem}.xl\:pt-5{padding-top:1.25rem}.xl\:pr-5{padding-right:1.25rem}.xl\:pb-5{padding-bottom:1.25rem}.xl\:pl-5{padding-left:1.25rem}.xl\:pt-6{padding-top:1.5rem}.xl\:pr-6{padding-right:1.5rem}.xl\:pb-6{padding-bottom:1.5rem}.xl\:pl-6{padding-left:1.5rem}.xl\:pt-8{padding-top:2rem}.xl\:pr-8{padding-right:2rem}.xl\:pb-8{padding-bottom:2rem}.xl\:pl-8{padding-left:2rem}.xl\:pt-10{padding-top:2.5rem}.xl\:pr-10{padding-right:2.5rem}.xl\:pb-10{padding-bottom:2.5rem}.xl\:pl-10{padding-left:2.5rem}.xl\:pt-12{padding-top:3rem}.xl\:pr-12{padding-right:3rem}.xl\:pb-12{padding-bottom:3rem}.xl\:pl-12{padding-left:3rem}.xl\:pt-16{padding-top:4rem}.xl\:pr-16{padding-right:4rem}.xl\:pb-16{padding-bottom:4rem}.xl\:pl-16{padding-left:4rem}.xl\:pt-20{padding-top:5rem}.xl\:pr-20{padding-right:5rem}.xl\:pb-20{padding-bottom:5rem}.xl\:pl-20{padding-left:5rem}.xl\:pt-24{padding-top:6rem}.xl\:pr-24{padding-right:6rem}.xl\:pb-24{padding-bottom:6rem}.xl\:pl-24{padding-left:6rem}.xl\:pt-32{padding-top:8rem}.xl\:pr-32{padding-right:8rem}.xl\:pb-32{padding-bottom:8rem}.xl\:pl-32{padding-left:8rem}.xl\:pt-px{padding-top:1px}.xl\:pr-px{padding-right:1px}.xl\:pb-px{padding-bottom:1px}.xl\:pl-px{padding-left:1px}.xl\:pointer-events-none{pointer-events:none}.xl\:pointer-events-auto{pointer-events:auto}.xl\:static{position:static}.xl\:fixed{position:fixed}.xl\:absolute{position:absolute}.xl\:relative{position:relative}.xl\:sticky{position:sticky}.xl\:pin-none{top:auto;right:auto;bottom:auto;left:auto}.xl\:pin{top:0;right:0;bottom:0;left:0}.xl\:pin-y{top:0;bottom:0}.xl\:pin-x{right:0;left:0}.xl\:pin-t{top:0}.xl\:pin-r{right:0}.xl\:pin-b{bottom:0}.xl\:pin-l{left:0}.xl\:resize-none{resize:none}.xl\:resize-y{resize:vertical}.xl\:resize-x{resize:horizontal}.xl\:resize{resize:both}.xl\:shadow{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.xl\:shadow-none{-webkit-box-shadow:none;box-shadow:0 0}.xl\:hover\:shadow:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.xl\:hover\:shadow-none:hover{-webkit-box-shadow:none;box-shadow:0 0}.xl\:focus\:shadow:focus{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.4);box-shadow:0 3px 3px rgba(0,0,0,.4)}.xl\:focus\:shadow-none:focus{-webkit-box-shadow:none;box-shadow:0 0}.xl\:table-auto{table-layout:auto}.xl\:table-fixed{table-layout:fixed}.xl\:text-left{text-align:left}.xl\:text-center{text-align:center}.xl\:text-right{text-align:right}.xl\:text-justify{text-align:justify}.xl\:text-transparent{color:transparent}.xl\:text-color-black{color:#000}.xl\:text-color-mine-shaft{color:#373737}.xl\:text-color-fuscous-gray{color:#4c4d4b}.xl\:text-color-emperor{color:#5d5d5d}.xl\:text-color-dove-gray{color:#646464}.xl\:text-color-boulder{color:#7b7b7b}.xl\:text-color-silver{color:#bbb}.xl\:text-color-alto{color:#dadada}.xl\:text-color-mercury{color:#e9e9e9}.xl\:text-color-seashell{color:#f1f1f1}.xl\:text-color-white{color:#fff}.xl\:text-color-orient{color:#005c7c}.xl\:text-color-shakespeare{color:#4ab9d4}.xl\:text-color-yellow-metal{color:#807040}.xl\:text-color-kumera{color:#8a741d}.xl\:text-color-olive{color:#8e7100}.xl\:text-color-barley-corn{color:#a0915e}.xl\:text-color-verdigris{color:#494a2d}.xl\:text-color-texas{color:#f9fb93}.xl\:text-color-ferra{color:#634849}.xl\:text-color-cherub{color:#fbe3e4}.xl\:text-color-cabbage-pont{color:#454e41}.xl\:text-color-tea-green{color:#cfefc2}.group:hover .xl\:group-hover\:text-transparent{color:transparent}.group:hover .xl\:group-hover\:text-color-black{color:#000}.group:hover .xl\:group-hover\:text-color-mine-shaft{color:#373737}.group:hover .xl\:group-hover\:text-color-fuscous-gray{color:#4c4d4b}.group:hover .xl\:group-hover\:text-color-emperor{color:#5d5d5d}.group:hover .xl\:group-hover\:text-color-dove-gray{color:#646464}.group:hover .xl\:group-hover\:text-color-boulder{color:#7b7b7b}.group:hover .xl\:group-hover\:text-color-silver{color:#bbb}.group:hover .xl\:group-hover\:text-color-alto{color:#dadada}.group:hover .xl\:group-hover\:text-color-mercury{color:#e9e9e9}.group:hover .xl\:group-hover\:text-color-seashell{color:#f1f1f1}.group:hover .xl\:group-hover\:text-color-white{color:#fff}.group:hover .xl\:group-hover\:text-color-orient{color:#005c7c}.group:hover .xl\:group-hover\:text-color-shakespeare{color:#4ab9d4}.group:hover .xl\:group-hover\:text-color-yellow-metal{color:#807040}.group:hover .xl\:group-hover\:text-color-kumera{color:#8a741d}.group:hover .xl\:group-hover\:text-color-olive{color:#8e7100}.group:hover .xl\:group-hover\:text-color-barley-corn{color:#a0915e}.group:hover .xl\:group-hover\:text-color-verdigris{color:#494a2d}.group:hover .xl\:group-hover\:text-color-texas{color:#f9fb93}.group:hover .xl\:group-hover\:text-color-ferra{color:#634849}.group:hover .xl\:group-hover\:text-color-cherub{color:#fbe3e4}.group:hover .xl\:group-hover\:text-color-cabbage-pont{color:#454e41}.group:hover .xl\:group-hover\:text-color-tea-green{color:#cfefc2}.xl\:hover\:text-transparent:hover{color:transparent}.xl\:hover\:text-color-black:hover{color:#000}.xl\:hover\:text-color-mine-shaft:hover{color:#373737}.xl\:hover\:text-color-fuscous-gray:hover{color:#4c4d4b}.xl\:hover\:text-color-emperor:hover{color:#5d5d5d}.xl\:hover\:text-color-dove-gray:hover{color:#646464}.xl\:hover\:text-color-boulder:hover{color:#7b7b7b}.xl\:hover\:text-color-silver:hover{color:#bbb}.xl\:hover\:text-color-alto:hover{color:#dadada}.xl\:hover\:text-color-mercury:hover{color:#e9e9e9}.xl\:hover\:text-color-seashell:hover{color:#f1f1f1}.xl\:hover\:text-color-white:hover{color:#fff}.xl\:hover\:text-color-orient:hover{color:#005c7c}.xl\:hover\:text-color-shakespeare:hover{color:#4ab9d4}.xl\:hover\:text-color-yellow-metal:hover{color:#807040}.xl\:hover\:text-color-kumera:hover{color:#8a741d}.xl\:hover\:text-color-olive:hover{color:#8e7100}.xl\:hover\:text-color-barley-corn:hover{color:#a0915e}.xl\:hover\:text-color-verdigris:hover{color:#494a2d}.xl\:hover\:text-color-texas:hover{color:#f9fb93}.xl\:hover\:text-color-ferra:hover{color:#634849}.xl\:hover\:text-color-cherub:hover{color:#fbe3e4}.xl\:hover\:text-color-cabbage-pont:hover{color:#454e41}.xl\:hover\:text-color-tea-green:hover{color:#cfefc2}.xl\:focus\:text-transparent:focus{color:transparent}.xl\:focus\:text-color-black:focus{color:#000}.xl\:focus\:text-color-mine-shaft:focus{color:#373737}.xl\:focus\:text-color-fuscous-gray:focus{color:#4c4d4b}.xl\:focus\:text-color-emperor:focus{color:#5d5d5d}.xl\:focus\:text-color-dove-gray:focus{color:#646464}.xl\:focus\:text-color-boulder:focus{color:#7b7b7b}.xl\:focus\:text-color-silver:focus{color:#bbb}.xl\:focus\:text-color-alto:focus{color:#dadada}.xl\:focus\:text-color-mercury:focus{color:#e9e9e9}.xl\:focus\:text-color-seashell:focus{color:#f1f1f1}.xl\:focus\:text-color-white:focus{color:#fff}.xl\:focus\:text-color-orient:focus{color:#005c7c}.xl\:focus\:text-color-shakespeare:focus{color:#4ab9d4}.xl\:focus\:text-color-yellow-metal:focus{color:#807040}.xl\:focus\:text-color-kumera:focus{color:#8a741d}.xl\:focus\:text-color-olive:focus{color:#8e7100}.xl\:focus\:text-color-barley-corn:focus{color:#a0915e}.xl\:focus\:text-color-verdigris:focus{color:#494a2d}.xl\:focus\:text-color-texas:focus{color:#f9fb93}.xl\:focus\:text-color-ferra:focus{color:#634849}.xl\:focus\:text-color-cherub:focus{color:#fbe3e4}.xl\:focus\:text-color-cabbage-pont:focus{color:#454e41}.xl\:focus\:text-color-tea-green:focus{color:#cfefc2}.xl\:text-3xs{font-size:.667rem}.xl\:text-2xs{font-size:.8rem}.xl\:text-xs{font-size:.867rem}.xl\:text-sm{font-size:.933rem}.xl\:text-base{font-size:15px}.xl\:text-lg{font-size:1.067rem}.xl\:text-xl{font-size:1.2rem}.xl\:text-2xl{font-size:1.267rem}.xl\:text-3xl{font-size:1.933rem}.xl\:italic{font-style:italic}.xl\:roman{font-style:normal}.xl\:uppercase{text-transform:uppercase}.xl\:lowercase{text-transform:lowercase}.xl\:capitalize{text-transform:capitalize}.xl\:normal-case{text-transform:none}.xl\:underline{text-decoration:underline}.xl\:line-through{text-decoration:line-through}.xl\:no-underline{text-decoration:none}.xl\:antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xl\:subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.xl\:hover\:italic:hover{font-style:italic}.xl\:hover\:roman:hover{font-style:normal}.xl\:hover\:uppercase:hover{text-transform:uppercase}.xl\:hover\:lowercase:hover{text-transform:lowercase}.xl\:hover\:capitalize:hover{text-transform:capitalize}.xl\:hover\:normal-case:hover{text-transform:none}.xl\:hover\:underline:hover{text-decoration:underline}.xl\:hover\:line-through:hover{text-decoration:line-through}.xl\:hover\:no-underline:hover{text-decoration:none}.xl\:hover\:antialiased:hover{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xl\:hover\:subpixel-antialiased:hover{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.xl\:focus\:italic:focus{font-style:italic}.xl\:focus\:roman:focus{font-style:normal}.xl\:focus\:uppercase:focus{text-transform:uppercase}.xl\:focus\:lowercase:focus{text-transform:lowercase}.xl\:focus\:capitalize:focus{text-transform:capitalize}.xl\:focus\:normal-case:focus{text-transform:none}.xl\:focus\:underline:focus{text-decoration:underline}.xl\:focus\:line-through:focus{text-decoration:line-through}.xl\:focus\:no-underline:focus{text-decoration:none}.xl\:focus\:antialiased:focus{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xl\:focus\:subpixel-antialiased:focus{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.xl\:tracking-tight{letter-spacing:-.05em}.xl\:tracking-normal{letter-spacing:0}.xl\:tracking-wide{letter-spacing:.05em}.xl\:select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.xl\:select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.xl\:align-baseline{vertical-align:baseline}.xl\:align-top{vertical-align:top}.xl\:align-middle{vertical-align:middle}.xl\:align-bottom{vertical-align:bottom}.xl\:align-text-top{vertical-align:text-top}.xl\:align-text-bottom{vertical-align:text-bottom}.xl\:visible{visibility:visible}.xl\:invisible{visibility:hidden}.xl\:whitespace-normal{white-space:normal}.xl\:whitespace-no-wrap{white-space:nowrap}.xl\:whitespace-pre{white-space:pre}.xl\:whitespace-pre-line{white-space:pre-line}.xl\:whitespace-pre-wrap{white-space:pre-wrap}.xl\:break-words{word-wrap:break-word}.xl\:break-normal{word-wrap:normal}.xl\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xl\:w-1{width:.25rem}.xl\:w-2{width:.5rem}.xl\:w-3{width:.75rem}.xl\:w-4{width:1rem}.xl\:w-5{width:1.25rem}.xl\:w-6{width:1.5rem}.xl\:w-8{width:2rem}.xl\:w-10{width:2.5rem}.xl\:w-12{width:3rem}.xl\:w-16{width:4rem}.xl\:w-24{width:6rem}.xl\:w-32{width:8rem}.xl\:w-40{width:10rem}.xl\:w-48{width:12rem}.xl\:w-56{width:14rem}.xl\:w-64{width:16rem}.xl\:w-auto{width:auto}.xl\:w-px{width:1px}.xl\:w-1\/2{width:50%}.xl\:w-1\/3{width:33.33333%}.xl\:w-2\/3{width:66.66667%}.xl\:w-1\/4{width:25%}.xl\:w-3\/4{width:75%}.xl\:w-1\/5{width:20%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-4\/5{width:80%}.xl\:w-1\/6{width:16.66667%}.xl\:w-1\/8{width:12.5%}.xl\:w-1\/10{width:10%}.xl\:w-1\/12{width:8.33333%}.xl\:w-full{width:100%}.xl\:w-screen{width:100vw}.xl\:z-0{z-index:0}.xl\:z-10{z-index:10}.xl\:z-20{z-index:20}.xl\:z-30{z-index:30}.xl\:z-40{z-index:40}.xl\:z-50{z-index:50}.xl\:z-auto{z-index:auto}.xl\:text-shadow{text-shadow:1px 1px rgba(#fff,1)}.xl\:text-shadow-none{text-shadow:none}.xl\:gradient-grey,.xl\:hover\:gradient-grey:hover{background:linear-gradient(#a1a1a1,#515151)}.xl\:gradient-grey-reversed,.xl\:hover\:gradient-grey-reversed:hover{background:linear-gradient(#515151,#a1a1a1)}.xl\:pin-t8{top:2rem}.xl\:pin-t16{top:4rem}.xl\:pin-b24{bottom:12rem}.xl\:transition-opacity{-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.xl\:transition-bg-color{-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.xl\:transition-text-color{-webkit-transition:color .2s ease-in-out;transition:color .2s ease-in-out}}svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1em}.svg-inline--fa.fa-stack-2x{height:2em;width:2em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}#superfish-main li a{color:#fff!important}#superfish-main li a:hover{color:#fff!important}#superfish-main li ul{margin-top:-1px!important}.list-reset li a{color:#fff!important}.list-reset li a:hover{color:#fff!important}a .nav-link{color:#fff!important}a .navbar-brand{color:#fff!important}.nav-link:visited{color:#fff!important}.nav-link:hover{color:#fff!important}#edit-submit-search-solr{margin-top:3px!important;height:44px}.pt-1{padding-top:.25rem!important}.pt-4{padding-top:1rem!important}.pb-3{padding-bottom:.75rem!important}.pr-3 .border{border:none!important}.nav-item a{color:#fff!important}#navbar-collection-content input{border-radius:0;border:none}#navbar-collection-content button{border-radius:1px;background-color:#8a741d;color:#fff}.container-fluid{padding-left:0;padding-right:0}.navbar-brand{color:#fff!important;font-size:1rem!important;font-weight:700}.navbar-brand:hover{color:#fff!important}button{background-color:#8a741d!important;color:#fff!important;border-radius:0!important}.navbar-toggler{background-color:initial!important;padding-right:4px!important}.navbar-toggler:focus{box-shadow:0 0!important}.navbar-toggler[aria-expanded=false] .navbar-toggler-icon .hamburger-close{display:none}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon .hamburger-open{display:none}@media(min-width:992px){.container-collection{max-height:70px!important}}@media(max-width:992px){.container-collection{max-width:none!important;padding-left:0!important;padding-right:0!important}.navbar-brand{padding-left:1rem!important}.navbar-search{padding:1rem!important;padding-top:1.5rem!important;border-top:1px solid #a0915e}.navbar-toggler{padding-right:1.3rem!important}.nav-item{font-weight:700;border-top:1px solid #a0915e;padding:1rem!important}.nav-item:first-child{border:none!important}} \ No newline at end of file diff --git a/static/javascript/sfomuseum.org.min.js b/static/javascript/sfomuseum.org.min.js index 9becd2c..41080ed 100644 --- a/static/javascript/sfomuseum.org.min.js +++ b/static/javascript/sfomuseum.org.min.js @@ -1 +1,4 @@ -window.addEventListener("load",function(){(function(){var e=document.querySelector('head > script[type="application/json"][data-drupal-selector="drupal-settings-json"], body > script[type="application/json"][data-drupal-selector="drupal-settings-json"]');window.drupalSettings={},e!==null&&(window.drupalSettings=JSON.parse(e.textContent))})(),window.Drupal={behaviors:{},locale:{}},function(e,t){e.throwError=function(e){setTimeout(function(){throw e},0)},e.attachBehaviors=function(n,s){n=n||document,s=s||t;var o=e.behaviors;Object.keys(o||{}).forEach(function(t){if(typeof o[t].attach=="function")try{o[t].attach(n,s)}catch(t){e.throwError(t)}})},e.detachBehaviors=function(n,s,o){n=n||document,s=s||t,o=o||"unload";var i=e.behaviors;Object.keys(i||{}).forEach(function(t){if(typeof i[t].detach=="function")try{i[t].detach(n,s,o)}catch(t){e.throwError(t)}})}}(Drupal,window.drupalSettings,window.drupalTranslations,window.console,window.Proxy,window.Reflect),function(e,t){var n=function(t){var n=function e(){t(),document.removeEventListener("DOMContentLoaded",e)};document.readyState!=="loading"?setTimeout(t,0):document.addEventListener("DOMContentLoaded",n)};n(function(){e.attachBehaviors(document,t)})}(Drupal,window.drupalSettings),"use strict","use strict",function(e,t){t.behaviors.mobileMenu={attach:function(n){e(".mobile-menu-controls",n).click(function(){e(this).children().toggleClass("hidden"),e("#block-museum-mobile-menu").slideToggle(250,function(){e(this).toggleClass("block").toggleClass("hidden"),e(this).css("display","")})}),e("#block-museum-mobile-menu > ul > li > a",n).click(function(t){t.preventDefault(),e(t.currentTarget).parent().find(".sub-nav-controls").children().toggleClass("hidden"),e(t.currentTarget).parent().find(".sub-nav-controls").next().slideToggle(200)}),e(".sub-nav-controls",n).click(function(){e(this).children().toggleClass("hidden"),e(this).next().slideToggle(200)})}}}(jQuery,Drupal),function(e,t){"use strict";t.behaviors.search={attach:function(n){e(".search-controls",n).once().click(function(){e("#block-search-solr-header-search-form").toggleClass("open").slideToggle(200,function(){e("#edit-keys",this).focus()})}),e(".main-container, footer").once().click(function(){e("#block-search-solr-header-search-form").hasClass("open")&&e("#block-search-solr-header-search-form").removeClass("open").slideUp(200)})}}}(jQuery,Drupal),function(e,t){"use strict";t.behaviors.superfish={attach:function(t,n){e.each(n.superfish||{},function(n,s){var o=e("ul#"+s.id,t);(s.plugins||!1)&&(s.plugins.supersubs||!1)&&o.supersubs(s.plugins.supersubs),o.superfish(s.sf),(s.plugins||!1)&&((s.plugins.touchscreen||!1)&&o.sftouchscreen(s.plugins.touchscreen),(s.plugins.smallscreen||!1)&&o.sfsmallscreen(s.plugins.smallscreen),s.plugins.supposition||!1)})}}}(jQuery,Drupal,drupalSettings)}) \ No newline at end of file +window.addEventListener('load',function(e){(function(){var settingsElement=document.querySelector('head > script[type="application/json"][data-drupal-selector="drupal-settings-json"], body > script[type="application/json"][data-drupal-selector="drupal-settings-json"]');window.drupalSettings={};if(settingsElement!==null){window.drupalSettings=JSON.parse(settingsElement.textContent);}})();;window.Drupal={behaviors:{},locale:{}};(function(Drupal,drupalSettings,drupalTranslations,console,Proxy,Reflect){Drupal.throwError=function(error){setTimeout(function(){throw error;},0);};Drupal.attachBehaviors=function(context,settings){context=context||document;settings=settings||drupalSettings;var behaviors=Drupal.behaviors;Object.keys(behaviors||{}).forEach(function(i){if(typeof behaviors[i].attach==='function'){try{behaviors[i].attach(context,settings);}catch(e){Drupal.throwError(e);}}});};Drupal.detachBehaviors=function(context,settings,trigger){context=context||document;settings=settings||drupalSettings;trigger=trigger||'unload';var behaviors=Drupal.behaviors;Object.keys(behaviors||{}).forEach(function(i){if(typeof behaviors[i].detach==='function'){try{behaviors[i].detach(context,settings,trigger);}catch(e){Drupal.throwError(e);}}});};})(Drupal,window.drupalSettings,window.drupalTranslations,window.console,window.Proxy,window.Reflect);;(function(Drupal,drupalSettings){var domReady=function domReady(callback){var listener=function listener(){callback();document.removeEventListener('DOMContentLoaded',listener);};if(document.readyState!=='loading'){setTimeout(callback,0);}else{document.addEventListener('DOMContentLoaded',listener);}};domReady(function(){Drupal.attachBehaviors(document,drupalSettings);});})(Drupal,window.drupalSettings);'use strict';"use strict";(function($,Drupal){Drupal.behaviors.mobileMenu={attach:function attach(context){$('.mobile-menu-controls',context).click(function(){$(this).children().toggleClass('hidden');$('#block-museum-mobile-menu').slideToggle(250,function(){$(this).toggleClass('block').toggleClass('hidden');$(this).css('display','');});});$('#block-museum-mobile-menu > ul > li > a',context).click(function(e){e.preventDefault();$(e.currentTarget).parent().find('.sub-nav-controls').children().toggleClass('hidden');$(e.currentTarget).parent().find('.sub-nav-controls').next().slideToggle(200);});$('.sub-nav-controls',context).click(function(){$(this).children().toggleClass('hidden');$(this).next().slideToggle(200);});}};})(jQuery,Drupal);(function($,Drupal){"use strict";Drupal.behaviors.search={attach:function attach(context){$('.search-controls',context).once().click(function(){$('#block-search-solr-header-search-form').toggleClass('open').slideToggle(200,function(){$('#edit-keys',this).focus();});});$('.main-container, footer').once().click(function(){if($('#block-search-solr-header-search-form').hasClass('open')){$('#block-search-solr-header-search-form').removeClass('open').slideUp(200);}});}};})(jQuery,Drupal);(function($,Drupal,drupalSettings){'use strict';Drupal.behaviors.superfish={attach:function(context,drupalSettings){$.each(drupalSettings.superfish||{},function(index,options){var $menu=$('ul#'+options.id,context);if(options.plugins||false){if(options.plugins.supersubs||false){$menu.supersubs(options.plugins.supersubs);}} +$menu.superfish(options.sf);if(options.plugins||false){if(options.plugins.touchscreen||false){$menu.sftouchscreen(options.plugins.touchscreen);} +if(options.plugins.smallscreen||false){$menu.sfsmallscreen(options.plugins.smallscreen);} +if(options.plugins.supposition||false){}}});}};})(jQuery,Drupal,drupalSettings);}); \ No newline at end of file diff --git a/templates/css/css.go b/templates/css/css.go index 3a80b81..12baa82 100644 --- a/templates/css/css.go +++ b/templates/css/css.go @@ -3,8 +3,8 @@ package css import ( "context" "embed" + sfom_css "github.com/sfomuseum/go-template/css" "text/template" - sfom_css "github.com/sfomuseum/go-template/css" ) //go:embed *.css diff --git a/templates/html/html.go b/templates/html/html.go index b064122..f2d12d2 100644 --- a/templates/html/html.go +++ b/templates/html/html.go @@ -5,8 +5,8 @@ package html import ( "context" "embed" - "html/template" sfom_html "github.com/sfomuseum/go-template/html" + "html/template" ) //go:embed *.html diff --git a/templates/html/navi_collection.html b/templates/html/navi_collection.html index 1abc2f8..aac1c27 100644 --- a/templates/html/navi_collection.html +++ b/templates/html/navi_collection.html @@ -56,6 +56,4 @@ - - {{ end }} diff --git a/vendor/github.com/aaronland/go-http-bootstrap/Makefile b/vendor/github.com/aaronland/go-http-bootstrap/Makefile index 0c4516b..74d1635 100644 --- a/vendor/github.com/aaronland/go-http-bootstrap/Makefile +++ b/vendor/github.com/aaronland/go-http-bootstrap/Makefile @@ -1,2 +1,2 @@ example: - go run -mod vendor cmd/example/main.go + go run -mod vendor cmd/example/main.go -enable-javascript -javascript-at-eof -rollup-assets diff --git a/vendor/github.com/aaronland/go-http-bootstrap/bootstrap.go b/vendor/github.com/aaronland/go-http-bootstrap/bootstrap.go index 57faeeb..6e12462 100644 --- a/vendor/github.com/aaronland/go-http-bootstrap/bootstrap.go +++ b/vendor/github.com/aaronland/go-http-bootstrap/bootstrap.go @@ -2,142 +2,222 @@ package bootstrap import ( "fmt" - "github.com/aaronland/go-http-rewrite" - "github.com/aaronland/go-http-bootstrap/static" + "io" "io/fs" - _ "log" + "log" "net/http" - "path/filepath" + "net/url" "strings" + + "github.com/aaronland/go-http-bootstrap/static" + aa_static "github.com/aaronland/go-http-static" + "github.com/sfomuseum/go-http-rollup" ) // BootstrapOptions provides a list of JavaScript and CSS link to include with HTML output. type BootstrapOptions struct { // A list of relative Bootstrap Javascript URLs to append as resources in HTML output. - JS []string - // A list of relative Bootstrap CSS URLs to append as resources in HTML output. + JS []string + // A list of relative Bootstrap CSS URLs to append as resources in HTML output. CSS []string + // AppendJavaScriptAtEOF is a boolean flag to append JavaScript markup at the end of an HTML document + // rather than in the HTML element. Default is false + AppendJavaScriptAtEOF bool + RollupAssets bool + Prefix string + Logger *log.Logger } // Return a *BootstrapOptions struct with default paths and URIs. func DefaultBootstrapOptions() *BootstrapOptions { + logger := log.New(io.Discard, "", 0) + opts := &BootstrapOptions{ - CSS: []string{"/css/bootstrap.min.css"}, - JS: make([]string, 0), + CSS: []string{"/css/bootstrap.min.css"}, + JS: make([]string, 0), + Logger: logger, } return opts } +func (opts *BootstrapOptions) EnableJavascript() { + opts.JS = append(opts.JS, "/javascript/bootstrap.bundle.min.js") +} + // AppendResourcesHandler will rewrite any HTML produced by previous handler to include the necessary markup to load Bootstrap JavaScript files and related assets. func AppendResourcesHandler(next http.Handler, opts *BootstrapOptions) http.Handler { - return AppendResourcesHandlerWithPrefix(next, opts, "") -} -// AppendResourcesHandlerWithPrefix will rewrite any HTML produced by previous handler to include the necessary markup to load Bootstrap JavaScript files and related assets ensuring that all URIs are prepended with a prefix. -func AppendResourcesHandlerWithPrefix(next http.Handler, opts *BootstrapOptions, prefix string) http.Handler { + static_opts := aa_static.DefaultResourcesOptions() + static_opts.AppendJavaScriptAtEOF = opts.AppendJavaScriptAtEOF - // We're doing this the long way because otherwise there is a - // risk of infinite-prefixing because of copy by reference issues - // (20210322/straup) + static_opts.CSS = opts.CSS + static_opts.JS = opts.JS - js := make([]string, len(opts.JS)) - css := make([]string, len(opts.CSS)) + if opts.RollupAssets { - for idx, path := range opts.JS { + if len(opts.CSS) > 1 { - if prefix != "" { - path = appendPrefix(prefix, path) + static_opts.CSS = []string{ + "/css/bootstrap.rollup.css", + } + } + + if len(opts.JS) > 1 { + + static_opts.JS = []string{ + "/javascript/bootstrap.rollup.js", + } } - js[idx] = path } - for idx, path := range opts.CSS { + return aa_static.AppendResourcesHandlerWithPrefix(next, static_opts, opts.Prefix) +} - if prefix != "" { - path = appendPrefix(prefix, path) - } +// Append all the files in the net/http FS instance containing the embedded Bootstrap assets to an *http.ServeMux instance. +func AppendAssetHandlers(mux *http.ServeMux, opts *BootstrapOptions) error { - css[idx] = path + if !opts.RollupAssets { + return aa_static.AppendStaticAssetHandlersWithPrefix(mux, static.FS, opts.Prefix) } - rewrite_opts := &rewrite.AppendResourcesOptions{ - JavaScript: js, - Stylesheets: css, + js_paths := make([]string, len(opts.JS)) + css_paths := make([]string, len(opts.CSS)) + + for idx, path := range opts.JS { + path = strings.TrimLeft(path, "/") + js_paths[idx] = path } - return rewrite.AppendResourcesHandler(next, rewrite_opts) -} + for idx, path := range opts.CSS { + path = strings.TrimLeft(path, "/") + css_paths[idx] = path + } -// AssetsHandler returns a net/http FS instance containing the embedded Bootstrap assets that are included with this package. -func AssetsHandler() (http.Handler, error) { + switch len(js_paths) { + case 0: + // pass + case 1: + err := serveSubDir(mux, opts, "javascript") - http_fs := http.FS(static.FS) - return http.FileServer(http_fs), nil -} + if err != nil { + return fmt.Errorf("Failed to append static asset handler for javascript FS, %w", err) + } -// AssetsHandler returns a net/http FS instance containing the embedded Bootstrap assets that are included with this package ensuring that all URLs are stripped of prefix. -func AssetsHandlerWithPrefix(prefix string) (http.Handler, error) { + default: - fs_handler, err := AssetsHandler() + rollup_js_paths := map[string][]string{ + "bootstrap.rollup.js": js_paths, + } - if err != nil { - return nil, err - } + rollup_js_opts := &rollup.RollupJSHandlerOptions{ + FS: static.FS, + Paths: rollup_js_paths, + Logger: opts.Logger, + } - fs_handler = http.StripPrefix(prefix, fs_handler) - return fs_handler, nil -} + rollup_js_handler, err := rollup.RollupJSHandler(rollup_js_opts) -// Append all the files in the net/http FS instance containing the embedded Bootstrap assets to an *http.ServeMux instance. -func AppendAssetHandlers(mux *http.ServeMux) error { - return AppendAssetHandlersWithPrefix(mux, "") -} + if err != nil { + return fmt.Errorf("Failed to create rollup JS handler, %w", err) + } -// Append all the files in the net/http FS instance containing the embedded Bootstrap assets to an *http.ServeMux instance ensuring that all URLs are prepended with prefix. -func AppendAssetHandlersWithPrefix(mux *http.ServeMux, prefix string) error { + rollup_js_uri := "/javascript/bootstrap.rollup.js" - asset_handler, err := AssetsHandlerWithPrefix(prefix) + if opts.Prefix != "" { - if err != nil { - return nil + u, err := url.JoinPath(opts.Prefix, rollup_js_uri) + + if err != nil { + return fmt.Errorf("Failed to append prefix to %s, %w", rollup_js_uri, err) + } + + rollup_js_uri = u + } + + mux.Handle(rollup_js_uri, rollup_js_handler) } - walk_func := func(path string, info fs.DirEntry, err error) error { + // CSS + + switch len(css_paths) { + case 0: + // pass + case 1: + + err := serveSubDir(mux, opts, "css") - if path == "." { - return nil + if err != nil { + return fmt.Errorf("Failed to append static asset handler for css FS, %w", err) } - if info.IsDir() { - return nil + default: + + rollup_css_paths := map[string][]string{ + "bootstrap.rollup.css": css_paths, + } + + rollup_css_opts := &rollup.RollupCSSHandlerOptions{ + FS: static.FS, + Paths: rollup_css_paths, + Logger: opts.Logger, } - if prefix != "" { - path = appendPrefix(prefix, path) + rollup_css_handler, err := rollup.RollupCSSHandler(rollup_css_opts) + + if err != nil { + return fmt.Errorf("Failed to create rollup CSS handler, %w", err) } - if !strings.HasPrefix(path, "/") { - path = fmt.Sprintf("/%s", path) + rollup_css_uri := "/css/bootstrap.rollup.css" + + if opts.Prefix != "" { + + u, err := url.JoinPath(opts.Prefix, rollup_css_uri) + + if err != nil { + return fmt.Errorf("Failed to append prefix to %s, %w", rollup_css_uri, err) + } + + rollup_css_uri = u } - mux.Handle(path, asset_handler) - return nil + mux.Handle(rollup_css_uri, rollup_css_handler) } - return fs.WalkDir(static.FS, ".", walk_func) + // END OF this should eventually be made a generic function in go-http-rollup + + return nil } -func appendPrefix(prefix string, path string) string { +func serveSubDir(mux *http.ServeMux, opts *BootstrapOptions, dirname string) error { - prefix = strings.TrimRight(prefix, "/") + sub_fs, err := fs.Sub(static.FS, dirname) - if prefix != "" { - path = strings.TrimLeft(path, "/") - path = filepath.Join(prefix, path) + if err != nil { + return fmt.Errorf("Failed to load %s FS, %w", dirname, err) + } + + sub_prefix := dirname + + if opts.Prefix != "" { + + prefix, err := url.JoinPath(opts.Prefix, sub_prefix) + + if err != nil { + return fmt.Errorf("Failed to append prefix to %s, %w", sub_prefix, err) + } + + sub_prefix = prefix + } + + err = aa_static.AppendStaticAssetHandlersWithPrefix(mux, sub_fs, sub_prefix) + + if err != nil { + return fmt.Errorf("Failed to append static asset handler for %s FS, %w", dirname, err) } - return path + return nil } diff --git a/vendor/github.com/aaronland/go-http-bootstrap/doc.go b/vendor/github.com/aaronland/go-http-bootstrap/doc.go index 37ee249..32cff1d 100644 --- a/vendor/github.com/aaronland/go-http-bootstrap/doc.go +++ b/vendor/github.com/aaronland/go-http-bootstrap/doc.go @@ -6,15 +6,15 @@ // Example // // package main -// +// // import ( // "github.com/aaronland/go-http-bootstrap" // "log" // "net/http" // ) -// +// // func Handler() http.Handler { -// +// // index := ` // // @@ -24,7 +24,7 @@ // // Bootstrap // -// +// // //
//

Card header

@@ -33,33 +33,33 @@ //
// // ` -// +// // fn := func(rsp http.ResponseWriter, req *http.Request) { -// +// // rsp.Write([]byte(index)) // } -// +// // return http.HandlerFunc(fn) // } -// +// // func main() { -// +// // mux := http.NewServeMux() -// +// // idx_handler := Handler() -// +// // bootstrap_opts := bootstrap.DefaultBootstrapOptions() // idx_handler = bootstrap.AppendResourcesHandler(idx_handler, bootstrap_opts) -// +// // mux.Handle("/", idx_handler) -// +// // bootstrap.AppendAssetHandlers(mux) -// +// // endpoint := "localhost:8080" // log.Printf("Listening for requests on %s\n", endpoint) -// +// // http.ListenAndServe(endpoint, mux) // } -// +// // All of the Bootstrap files in the [static/css](static/css) and [static/javascript](static/javascript) are registered with your `http.ServeMux` instance when you call `bootstrap.AppendAssetHandlers` but by default only the `css/bootstrap.min.css` is included in the list of CSS and Javascript resources to append to HTML content when you call the `bootstrap.DefaultBootstrapOptions()` method. If there are other Bootstrap-related files you need to access in your application you will need to add them to the `BootstrapOptions.CSS` and `Bootstrap.JS` properties manually. package bootstrap diff --git a/vendor/github.com/aaronland/go-http-rewrite/append.go b/vendor/github.com/aaronland/go-http-rewrite/append.go index 7ead5ba..6d84b61 100644 --- a/vendor/github.com/aaronland/go-http-rewrite/append.go +++ b/vendor/github.com/aaronland/go-http-rewrite/append.go @@ -17,6 +17,9 @@ type AppendResourcesOptions struct { Stylesheets []string // A dictionary of key and value pairs to append to an HTML document's element as `data-{KEY}="{VALUE}` attributes. DataAttributes map[string]string + // AppendJavaScriptAtEOF is a boolean flag to append JavaScript markup at the end of an HTML document + // rather than in the HTML element. Default is false + AppendJavaScriptAtEOF bool } // AppendResourcesHandler() creates a `RewriteHTMLFunc` callback function, configured by 'opts', and uses that @@ -30,20 +33,8 @@ func AppendResourcesHandler(previous_handler http.Handler, opts *AppendResources if n.Type == html.ElementNode && n.Data == "head" { - for _, js := range opts.JavaScript { - - script_type := html.Attribute{"", "type", "text/javascript"} - script_src := html.Attribute{"", "src", js} - - script := html.Node{ - Type: html.ElementNode, - DataAtom: atom.Script, - Data: "script", - Namespace: "", - Attr: []html.Attribute{script_type, script_src}, - } - - n.AppendChild(&script) + if !opts.AppendJavaScriptAtEOF { + appendJS(n, opts) } for _, css := range opts.Stylesheets { @@ -74,6 +65,14 @@ func AppendResourcesHandler(previous_handler http.Handler, opts *AppendResources data_attr := html.Attribute{data_ns, data_key, data_value} n.Attr = append(n.Attr, data_attr) } + + } + + if n.Type == html.ElementNode && n.Data == "html" { + + if opts.AppendJavaScriptAtEOF { + appendJS(n, opts) + } } for c := n.FirstChild; c != nil; c = c.NextSibling { @@ -83,3 +82,23 @@ func AppendResourcesHandler(previous_handler http.Handler, opts *AppendResources return RewriteHTMLHandler(previous_handler, cb) } + +func appendJS(n *html.Node, opts *AppendResourcesOptions) { + + for _, js := range opts.JavaScript { + + script_type := html.Attribute{"", "type", "text/javascript"} + script_src := html.Attribute{"", "src", js} + + script := html.Node{ + Type: html.ElementNode, + DataAtom: atom.Script, + Data: "script", + Namespace: "", + Attr: []html.Attribute{script_type, script_src}, + } + + n.AppendChild(&script) + } + +} diff --git a/vendor/github.com/aaronland/go-http-static/.gitignore b/vendor/github.com/aaronland/go-http-static/.gitignore new file mode 100644 index 0000000..6e7e38b --- /dev/null +++ b/vendor/github.com/aaronland/go-http-static/.gitignore @@ -0,0 +1,2 @@ +*~ +bin \ No newline at end of file diff --git a/vendor/github.com/aaronland/go-http-static/LICENSE b/vendor/github.com/aaronland/go-http-static/LICENSE new file mode 100644 index 0000000..fc15a4a --- /dev/null +++ b/vendor/github.com/aaronland/go-http-static/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2023, Aaron Straup Cope +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the {organization} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/aaronland/go-http-static/README.md b/vendor/github.com/aaronland/go-http-static/README.md new file mode 100644 index 0000000..0043b8b --- /dev/null +++ b/vendor/github.com/aaronland/go-http-static/README.md @@ -0,0 +1,11 @@ +# go-http-static + +Opinionated Go package for emebedding static assets and referencing resources in web applications. + +## Documentation + +Documentation is incomplete at this time. + +## See also + +* https://github.com/aaronland/go-http-rewrite \ No newline at end of file diff --git a/vendor/github.com/aaronland/go-http-static/prefix.go b/vendor/github.com/aaronland/go-http-static/prefix.go new file mode 100644 index 0000000..0f9d4e9 --- /dev/null +++ b/vendor/github.com/aaronland/go-http-static/prefix.go @@ -0,0 +1,18 @@ +package static + +import ( + "path/filepath" + "strings" +) + +func appendPrefix(prefix string, path string) string { + + prefix = strings.TrimRight(prefix, "/") + + if prefix != "" { + path = strings.TrimLeft(path, "/") + path = filepath.Join(prefix, path) + } + + return path +} diff --git a/vendor/github.com/aaronland/go-http-static/resources.go b/vendor/github.com/aaronland/go-http-static/resources.go new file mode 100644 index 0000000..2e204b7 --- /dev/null +++ b/vendor/github.com/aaronland/go-http-static/resources.go @@ -0,0 +1,54 @@ +package static + +import ( + "net/http" + + "github.com/aaronland/go-http-rewrite" +) + +// ResourcesOptions provides a list of JavaScript and CSS link to include with HTML output. +type ResourcesOptions struct { + JS []string + CSS []string + DataAttributes map[string]string + AppendJavaScriptAtEOF bool +} + +// Return a *ResourcesOptions struct with default paths and URIs. +func DefaultResourcesOptions() *ResourcesOptions { + + opts := &ResourcesOptions{ + CSS: []string{}, + JS: []string{}, + DataAttributes: make(map[string]string), + } + + return opts +} + +func AppendResourcesHandler(next http.Handler, opts *ResourcesOptions) http.Handler { + return AppendResourcesHandlerWithPrefix(next, opts, "") +} + +func AppendResourcesHandlerWithPrefix(next http.Handler, opts *ResourcesOptions, prefix string) http.Handler { + + js := make([]string, len(opts.JS)) + css := make([]string, len(opts.CSS)) + + for i, path := range opts.JS { + js[i] = appendPrefix(prefix, path) + } + + for i, path := range opts.CSS { + css[i] = appendPrefix(prefix, path) + } + + ext_opts := &rewrite.AppendResourcesOptions{ + JavaScript: js, + Stylesheets: css, + DataAttributes: opts.DataAttributes, + AppendJavaScriptAtEOF: opts.AppendJavaScriptAtEOF, + } + + return rewrite.AppendResourcesHandler(next, ext_opts) +} diff --git a/vendor/github.com/aaronland/go-http-static/static.go b/vendor/github.com/aaronland/go-http-static/static.go new file mode 100644 index 0000000..a890fa0 --- /dev/null +++ b/vendor/github.com/aaronland/go-http-static/static.go @@ -0,0 +1,81 @@ +package static + +import ( + "fmt" + "io/fs" + _ "log" + "net/http" + "strings" + + "github.com/aaronland/go-http-rewrite" +) + +func StaticAssetsHandler(static_fs fs.FS) (http.Handler, error) { + + http_fs := http.FS(static_fs) + return http.FileServer(http_fs), nil +} + +func StaticAssetsHandlerWithPrefix(static_fs fs.FS, prefix string) (http.Handler, error) { + + fs_handler, err := StaticAssetsHandler(static_fs) + + if err != nil { + return nil, err + } + + prefix = strings.TrimRight(prefix, "/") + + if prefix == "" { + return fs_handler, nil + } + + rewrite_func := func(req *http.Request) (*http.Request, error) { + req.URL.Path = strings.Replace(req.URL.Path, prefix, "", 1) + return req, nil + } + + rewrite_handler := rewrite.RewriteRequestHandler(fs_handler, rewrite_func) + return rewrite_handler, nil +} + +func AppendStaticAssetHandlers(mux *http.ServeMux, static_fs fs.FS) error { + return AppendStaticAssetHandlersWithPrefix(mux, static_fs, "") +} + +func AppendStaticAssetHandlersWithPrefix(mux *http.ServeMux, static_fs fs.FS, prefix string) error { + + asset_handler, err := StaticAssetsHandlerWithPrefix(static_fs, prefix) + + if err != nil { + return nil + } + + walk_func := func(path string, info fs.DirEntry, err error) error { + + // log.Println("WALK", path) + + if path == "." { + return nil + } + + if info.IsDir() { + return nil + } + + if prefix != "" { + path = appendPrefix(prefix, path) + } + + if !strings.HasPrefix(path, "/") { + path = fmt.Sprintf("/%s", path) + } + + // log.Printf("APPEND '%s'\n", path) + + mux.Handle(path, asset_handler) + return nil + } + + return fs.WalkDir(static_fs, ".", walk_func) +} diff --git a/vendor/github.com/aaronland/go-log/v2/.gitignore b/vendor/github.com/aaronland/go-log/v2/.gitignore new file mode 100644 index 0000000..e4e5f6c --- /dev/null +++ b/vendor/github.com/aaronland/go-log/v2/.gitignore @@ -0,0 +1 @@ +*~ \ No newline at end of file diff --git a/vendor/github.com/aaronland/go-log/v2/LICENSE b/vendor/github.com/aaronland/go-log/v2/LICENSE new file mode 100644 index 0000000..583915d --- /dev/null +++ b/vendor/github.com/aaronland/go-log/v2/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2022, Aaron Straup Cope +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the {organization} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/aaronland/go-log/v2/README.md b/vendor/github.com/aaronland/go-log/v2/README.md new file mode 100644 index 0000000..3ec4d61 --- /dev/null +++ b/vendor/github.com/aaronland/go-log/v2/README.md @@ -0,0 +1,52 @@ +# go-log + +Opinionated Go package for doing minimal structured logging and prefixing of log messages with Emoji for easier filtering. It's possible this package will become irrelevant if and when Go [slog](https://github.com/golang/go/issues/56345) package because part of "core". Until then it does what I need. + +## Documentation + +[![Go Reference](https://pkg.go.dev/badge/github.com/aaronland/go-log.svg)](https://pkg.go.dev/github.com/aaronland/go-log) + +## Example + +``` +import ( + "log" + + aa_log "github.com/aaronland/go-log/v2" +) + +func main(){ + + logger := log.Default() + + aa_log.SetMinLevelWithPrefix(aa_log.WARNING_PREFIX) + + // No output + aa_log.Debug(logger, "This is a test") + + aa_log.UnsetMinLevel() + + // prints "💬 Hello, world" + aa_log.Info(logger, "Hello, %w", "world") + + // prints "🪵 This is a second test" + aa_log.Debug(logger, "This is a second test") + + // prints "🧯 This is an error" + aa_log.Warning(logger, fmt.Errorf("This is an error")) + + // Emits errors using the default Go *log.Logger instance + // prints "{YYYY}/{MM}/{DD} {HH}:{MM}:{SS} 🧯 This is a second error" + aa_log.Warning(fmt.Errorf("This is a second error")) +} +``` + +## Prefixes + +| Log level | Prefix | +| --- | --- | +| debug | 🪵 | +| info | 💬 | +| warning | 🧯 | +| error | 🔥 | +| fatal | 💥 | diff --git a/vendor/github.com/aaronland/go-log/v2/log.go b/vendor/github.com/aaronland/go-log/v2/log.go new file mode 100644 index 0000000..00f44c7 --- /dev/null +++ b/vendor/github.com/aaronland/go-log/v2/log.go @@ -0,0 +1,195 @@ +package log + +import ( + "fmt" + "log" + "os" +) + +// DEBUG_LEVEL is the numeric level associated with "debug" messages. +const DEBUG_LEVEL int = 10 + +// INFO_LEVEL is the numeric level associated with "info" messages. +const INFO_LEVEL int = 20 + +// WARNING_LEVEL is the numeric level associated with "warning" messages. +const WARNING_LEVEL int = 30 + +// ERROR_LEVEL is the numeric level associated with "error" messages. +const ERROR_LEVEL int = 40 + +// FATAL_LEVEL is the numeric level associated with "fatal" messages. +const FATAL_LEVEL int = 50 + +// DEBUG_PREFIX is the string prefix to prepend "debug" messages with. +const DEBUG_PREFIX string = "🪵" // "🦜" + +// INFO_PREFIX is the string prefix to prepend "info" messages with. +const INFO_PREFIX string = "💬" + +// WARNING_PREFIX is the string prefix to prepend "warning" messages with. +const WARNING_PREFIX string = "🧯" + +// ERROR_PREFIX is the string prefix to prepend "error" messages with. +const ERROR_PREFIX string = "🔥" + +// FATAL_PREFIX is the string prefix to prepend "fatal" messages with. +const FATAL_PREFIX string = "💥" + +var minLevel int + +// UnsetMinLevel resets the minimum level log level allowing all messages to be emitted. +func UnsetMinLevel() { + minLevel = 0 +} + +// SetMinLevel assigns the minimum log level to 'l'. Log events with a lower level will not be emitted. +func SetMinLevel(l int) error { + + switch l { + case DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL, FATAL_LEVEL: + minLevel = l + default: + return fmt.Errorf("Invalid level") + } + + return nil +} + +// SetMinLevelStringWithPrefix assigns the minimum log level associated with 'prefix'. Log events with a lower level will not be emitted. +func SetMinLevelWithPrefix(prefix string) error { + + switch prefix { + case DEBUG_PREFIX: + return SetMinLevel(DEBUG_LEVEL) + case INFO_PREFIX: + return SetMinLevel(INFO_LEVEL) + case WARNING_PREFIX: + return SetMinLevel(WARNING_LEVEL) + case ERROR_PREFIX: + return SetMinLevel(ERROR_LEVEL) + case FATAL_PREFIX: + return SetMinLevel(FATAL_LEVEL) + default: + return fmt.Errorf("Invalid level") + } +} + +func emit(prefix string, args ...interface{}) { + + count_args := len(args) + + var logger *log.Logger + var msg string + var extras []interface{} + + // Nothing to do. Go home. + + if count_args == 0 { + return + } + + // Check to see whether first arg is a *log.Logger instance + // If not create a logger and check whether first argument + // is an error. + + if count_args >= 1 { + + switch args[0].(type) { + case *log.Logger: + logger = args[0].(*log.Logger) + default: + + // See the way we are calling log.New rather than log.Default? + // That's mostly so for the tests so that we can capture STDERR + // The value if log.Default is a global singleton in log/log.go + // which references an instance os.Stderr which doesn't seem to + // get updated when we reassign it in the tests. I suppose this + // might be the cause of "hilarity" in the future but it will + // do for now... + // https://cs.opensource.google/go/go/+/refs/tags/go1.20:src/log/log.go;l=89 + + logger = log.New(os.Stderr, "", log.LstdFlags) + + switch args[0].(type) { + case string: + msg = args[0].(string) + default: + msg = fmt.Sprintf("%v", args[0]) + } + } + } + + // Check to see whether second arg is a log formatting string + // or an error (or really anything other than a string) + + if count_args >= 2 { + + switch args[1].(type) { + case string: + msg = args[1].(string) + default: + msg = fmt.Sprintf("%v", args[1]) + } + } + + // Anything else + + if count_args >= 3 { + extras = args[2:] + } + + msg = fmt.Sprintf("%s %s", prefix, msg) + logger.Printf(msg, extras...) +} + +// Emit a "debug" log message. +func Debug(args ...interface{}) { + + if minLevel > DEBUG_LEVEL { + return + } + + emit(DEBUG_PREFIX, args...) +} + +// Emit a "info" log message. +func Info(args ...interface{}) { + + if minLevel > INFO_LEVEL { + return + } + + emit(INFO_PREFIX, args...) +} + +// Emit a "warning" log message. +func Warning(args ...interface{}) { + + if minLevel > WARNING_LEVEL { + return + } + + emit(WARNING_PREFIX, args...) +} + +// Emit an "error" log message. +func Error(args ...interface{}) { + + if minLevel > ERROR_LEVEL { + return + } + + emit(ERROR_PREFIX, args...) +} + +// Emit an "fatal" log message. +func Fatal(args ...interface{}) { + + if minLevel > FATAL_LEVEL { + return + } + + emit(FATAL_PREFIX, args...) + os.Exit(1) +} diff --git a/vendor/github.com/akrylysov/algnhsa/.travis.yml b/vendor/github.com/akrylysov/algnhsa/.travis.yml index e54eb1a..ad86a72 100644 --- a/vendor/github.com/akrylysov/algnhsa/.travis.yml +++ b/vendor/github.com/akrylysov/algnhsa/.travis.yml @@ -1,4 +1,4 @@ language: go go: - - "1.11.x" + - "1.18.x" - "1.x" diff --git a/vendor/github.com/akrylysov/algnhsa/CHANGELOG.md b/vendor/github.com/akrylysov/algnhsa/CHANGELOG.md index d7dd1e5..108dc95 100644 --- a/vendor/github.com/akrylysov/algnhsa/CHANGELOG.md +++ b/vendor/github.com/akrylysov/algnhsa/CHANGELOG.md @@ -1,8 +1,27 @@ # Changelog -## [0.12.1] - 2019-09-26 +## [1.0.0] - 2023-03-02 +### Fixed +- API Gateway V2: Fixed response header support. +- API Gateway V2: Fixed handling request cookies. +- API Gateway V2: Fixed multi-value query parameters. +- ALB: Fixed double escaping of query parameters. + +### Changed +- `RequestTypeAPIGateway` renamed to `RequestTypeAPIGatewayV1`. +- `ProxyRequestFromContext` renamed to `APIGatewayV1RequestFromContext`. +- `APIGatewayV2HTTPRequestFromContext` renamed to `APIGatewayV2RequestFromContext`. +- `TargetGroupRequestFromContext` renamed to `ALBRequestFromContext`. +- Improved unit tests. +- Go 1.18 is the minimum supported version now. + +## [0.13.0] - 2022-01-08 ### Added -- Fixed compatibility with Go versions older than 1.13. +- API Gateway V2 support (@a-h). + +## [0.12.1] - 2019-09-26 +### Fixed +- Compatibility with Go versions older than 1.13. ## [0.12.0] - 2019-09-26 ### Added @@ -16,7 +35,7 @@ ### Changed - Set RequestURI on request (@RossHammer). - Unescape Path (@RossHammer). -- Multi-value header support implemented using APIGatewayProxyResponse.MultiValueHeaders. +- Multi-value header support implemented using `APIGatewayProxyResponse.MultiValueHeaders`. ## [0.9] - 2018-12-10 ### Added diff --git a/vendor/github.com/akrylysov/algnhsa/README.md b/vendor/github.com/akrylysov/algnhsa/README.md index db5dc9d..7d345d5 100644 --- a/vendor/github.com/akrylysov/algnhsa/README.md +++ b/vendor/github.com/akrylysov/algnhsa/README.md @@ -15,10 +15,6 @@ import ( "github.com/akrylysov/algnhsa" ) -func indexHandler(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("index")) -} - func addHandler(w http.ResponseWriter, r *http.Request) { f, _ := strconv.Atoi(r.FormValue("first")) s, _ := strconv.Atoi(r.FormValue("second")) @@ -27,14 +23,13 @@ func addHandler(w http.ResponseWriter, r *http.Request) { } func contextHandler(w http.ResponseWriter, r *http.Request) { - proxyReq, ok := algnhsa.ProxyRequestFromContext(r.Context()) + lambdaEvent, ok := algnhsa.APIGatewayV2RequestFromContext(r.Context()) if ok { - fmt.Fprint(w, proxyReq.RequestContext.AccountID) + fmt.Fprint(w, lambdaEvent.RequestContext.AccountID) } } func main() { - http.HandleFunc("/", indexHandler) http.HandleFunc("/add", addHandler) http.HandleFunc("/context", contextHandler) algnhsa.ListenAndServe(http.DefaultServeMux, nil) @@ -56,26 +51,48 @@ import ( func main() { r := chi.NewRouter() r.Get("/", func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("index")) + w.Write([]byte("hi")) }) algnhsa.ListenAndServe(r, nil) } ``` -## Setting up API Gateway +## Deployment + +First, build your Go application for Linux and zip it: + +```bash +GOOS=linux GOARCH=amd64 go build -o handler +zip handler.zip handler +``` + +AWS provides plenty of ways to expose a Lambda function to the internet. + +### Lambda Function URL + +This is the easier way to deploy your Lambda function as an HTTP endpoint. +It only requires going to the "Function URL" section of the Lambda function configuration and clicking "Configure Function URL". + +### API Gateway + +#### HTTP API + +1. Create a new HTTP API. + +2. Configure a catch-all `$default` route. + +#### REST API 1. Create a new REST API. 2. In the "Resources" section create a new `ANY` method to handle requests to `/` (check "Use Lambda Proxy Integration"). - ![API Gateway index](https://akrylysov.github.io/algnhsa/apigateway-index.png) - 3. Add a catch-all `{proxy+}` resource to handle requests to every other path (check "Configure as proxy resource"). - ![API Gateway catch-all](https://akrylysov.github.io/algnhsa/apigateway-catchall.png) - -## Setting up ALB +### ALB 1. Create a new ALB and point it to your Lambda function. -2. In the target group settings enable "Multi value headers". +2. In the target group settings in the "Attributes" section enable "Multi value headers". + +[AWS Documentation](https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html) diff --git a/vendor/github.com/akrylysov/algnhsa/adapter.go b/vendor/github.com/akrylysov/algnhsa/adapter.go index ef0e4e5..f228d7e 100644 --- a/vendor/github.com/akrylysov/algnhsa/adapter.go +++ b/vendor/github.com/akrylysov/algnhsa/adapter.go @@ -3,6 +3,7 @@ package algnhsa import ( "context" "encoding/json" + "fmt" "net/http" "net/http/httptest" @@ -21,10 +22,16 @@ func (handler lambdaHandler) Invoke(ctx context.Context, payload []byte) ([]byte if err != nil { return nil, err } + if handler.opts.DebugLog { + fmt.Printf("Response: %+v", resp) + } return json.Marshal(resp) } func (handler lambdaHandler) handleEvent(ctx context.Context, payload []byte) (lambdaResponse, error) { + if handler.opts.DebugLog { + fmt.Printf("Request: %s", payload) + } eventReq, err := newLambdaRequest(ctx, payload, handler.opts) if err != nil { return lambdaResponse{}, err @@ -35,7 +42,7 @@ func (handler lambdaHandler) handleEvent(ctx context.Context, payload []byte) (l } w := httptest.NewRecorder() handler.httpHandler.ServeHTTP(w, r) - return newLambdaResponse(w, handler.opts.binaryContentTypeMap) + return newLambdaResponse(w, handler.opts.binaryContentTypeMap, eventReq.requestType) } // ListenAndServe starts the AWS Lambda runtime (aws-lambda-go lambda.Start) with a given handler. diff --git a/vendor/github.com/akrylysov/algnhsa/alb.go b/vendor/github.com/akrylysov/algnhsa/alb.go index eccb967..d71abb7 100644 --- a/vendor/github.com/akrylysov/algnhsa/alb.go +++ b/vendor/github.com/akrylysov/algnhsa/alb.go @@ -4,13 +4,21 @@ import ( "context" "encoding/json" "errors" + "net/http" + "net/url" "strings" "github.com/aws/aws-lambda-go/events" ) +/* +AWS Documentation: + +- https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html +*/ + var ( - errALBUnexpectedRequest = errors.New("expected ALBTargetGroupRequest") + errALBUnexpectedRequest = errors.New("expected ALBTargetGroupRequest event") errALBExpectedMultiValueHeaders = errors.New("expected multi value headers; enable Multi value headers in target group settings") ) @@ -36,18 +44,44 @@ func newALBRequest(ctx context.Context, payload []byte, opts *Options) (lambdaRe return lambdaRequest{}, errALBExpectedMultiValueHeaders } + for _, vals := range event.MultiValueQueryStringParameters { + for i, v := range vals { + unescaped, err := url.QueryUnescape(v) + if err != nil { + return lambdaRequest{}, err + } + vals[i] = unescaped + } + } + req := lambdaRequest{ HTTPMethod: event.HTTPMethod, Path: event.Path, - QueryStringParameters: event.QueryStringParameters, MultiValueQueryStringParameters: event.MultiValueQueryStringParameters, - Headers: event.Headers, MultiValueHeaders: event.MultiValueHeaders, Body: event.Body, IsBase64Encoded: event.IsBase64Encoded, SourceIP: getALBSourceIP(event), - Context: newTargetGroupRequestContext(ctx, event), + Context: context.WithValue(ctx, RequestTypeALB, event), + requestType: RequestTypeALB, } return req, nil } + +func newALBResponse(r *http.Response) (lambdaResponse, error) { + resp := lambdaResponse{ + MultiValueHeaders: r.Header, + } + return resp, nil +} + +// ALBRequestFromContext extracts the ALBTargetGroupRequest event from ctx. +func ALBRequestFromContext(ctx context.Context) (events.ALBTargetGroupRequest, bool) { + val := ctx.Value(RequestTypeALB) + if val == nil { + return events.ALBTargetGroupRequest{}, false + } + event, ok := val.(events.ALBTargetGroupRequest) + return event, ok +} diff --git a/vendor/github.com/akrylysov/algnhsa/apigw.go b/vendor/github.com/akrylysov/algnhsa/apigw.go deleted file mode 100644 index 8414aba..0000000 --- a/vendor/github.com/akrylysov/algnhsa/apigw.go +++ /dev/null @@ -1,43 +0,0 @@ -package algnhsa - -import ( - "context" - "encoding/json" - "errors" - "path" - - "github.com/aws/aws-lambda-go/events" -) - -var ( - errAPIGatewayUnexpectedRequest = errors.New("expected APIGatewayProxyRequest event") -) - -func newAPIGatewayRequest(ctx context.Context, payload []byte, opts *Options) (lambdaRequest, error) { - var event events.APIGatewayProxyRequest - if err := json.Unmarshal(payload, &event); err != nil { - return lambdaRequest{}, err - } - if event.RequestContext.AccountID == "" { - return lambdaRequest{}, errAPIGatewayUnexpectedRequest - } - - req := lambdaRequest{ - HTTPMethod: event.HTTPMethod, - Path: event.Path, - QueryStringParameters: event.QueryStringParameters, - MultiValueQueryStringParameters: event.MultiValueQueryStringParameters, - Headers: event.Headers, - MultiValueHeaders: event.MultiValueHeaders, - Body: event.Body, - IsBase64Encoded: event.IsBase64Encoded, - SourceIP: event.RequestContext.Identity.SourceIP, - Context: newProxyRequestContext(ctx, event), - } - - if opts.UseProxyPath { - req.Path = path.Join("/", event.PathParameters["proxy"]) - } - - return req, nil -} diff --git a/vendor/github.com/akrylysov/algnhsa/apigw_v1.go b/vendor/github.com/akrylysov/algnhsa/apigw_v1.go new file mode 100644 index 0000000..051836f --- /dev/null +++ b/vendor/github.com/akrylysov/algnhsa/apigw_v1.go @@ -0,0 +1,68 @@ +package algnhsa + +import ( + "context" + "encoding/json" + "errors" + "net/http" + "path" + + "github.com/aws/aws-lambda-go/events" +) + +/* +AWS Documentation: + +- https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html +*/ + +var ( + errAPIGatewayV1UnexpectedRequest = errors.New("expected APIGatewayProxyRequest event") +) + +func newAPIGatewayV1Request(ctx context.Context, payload []byte, opts *Options) (lambdaRequest, error) { + var event events.APIGatewayProxyRequest + if err := json.Unmarshal(payload, &event); err != nil { + return lambdaRequest{}, err + } + if event.RequestContext.AccountID == "" { + return lambdaRequest{}, errAPIGatewayV1UnexpectedRequest + } + + req := lambdaRequest{ + HTTPMethod: event.HTTPMethod, + Path: event.Path, + QueryStringParameters: event.QueryStringParameters, + MultiValueQueryStringParameters: event.MultiValueQueryStringParameters, + Headers: event.Headers, + MultiValueHeaders: event.MultiValueHeaders, + Body: event.Body, + IsBase64Encoded: event.IsBase64Encoded, + SourceIP: event.RequestContext.Identity.SourceIP, + Context: context.WithValue(ctx, RequestTypeAPIGatewayV1, event), + requestType: RequestTypeAPIGatewayV1, + } + + if opts.UseProxyPath { + req.Path = path.Join("/", event.PathParameters["proxy"]) + } + + return req, nil +} + +func newAPIGatewayV1Response(r *http.Response) (lambdaResponse, error) { + resp := lambdaResponse{ + MultiValueHeaders: r.Header, + } + return resp, nil +} + +// APIGatewayV1RequestFromContext extracts the APIGatewayProxyRequest event from ctx. +func APIGatewayV1RequestFromContext(ctx context.Context) (events.APIGatewayProxyRequest, bool) { + val := ctx.Value(RequestTypeAPIGatewayV1) + if val == nil { + return events.APIGatewayProxyRequest{}, false + } + event, ok := val.(events.APIGatewayProxyRequest) + return event, ok +} diff --git a/vendor/github.com/akrylysov/algnhsa/apigw_v2.go b/vendor/github.com/akrylysov/algnhsa/apigw_v2.go new file mode 100644 index 0000000..2da2b6c --- /dev/null +++ b/vendor/github.com/akrylysov/algnhsa/apigw_v2.go @@ -0,0 +1,90 @@ +package algnhsa + +import ( + "context" + "encoding/json" + "errors" + "net/http" + "path" + "strings" + + "github.com/aws/aws-lambda-go/events" +) + +/* +AWS Documentation: + +- https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html +- https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html +*/ + +var ( + errAPIGatewayV2UnexpectedRequest = errors.New("expected APIGatewayV2HTTPRequest event") +) + +func newAPIGatewayV2Request(ctx context.Context, payload []byte, opts *Options) (lambdaRequest, error) { + var event events.APIGatewayV2HTTPRequest + if err := json.Unmarshal(payload, &event); err != nil { + return lambdaRequest{}, err + } + if event.Version != "2.0" { + return lambdaRequest{}, errAPIGatewayV2UnexpectedRequest + } + + req := lambdaRequest{ + HTTPMethod: event.RequestContext.HTTP.Method, + Path: event.RawPath, + RawQueryString: event.RawQueryString, + Headers: event.Headers, + Body: event.Body, + IsBase64Encoded: event.IsBase64Encoded, + SourceIP: event.RequestContext.HTTP.SourceIP, + Context: context.WithValue(ctx, RequestTypeAPIGatewayV2, event), + requestType: RequestTypeAPIGatewayV2, + } + + // APIGatewayV2 doesn't support multi-value headers. + // For cookies there is a workaround - Cookie headers are assigned to the event Cookies slice. + // All other multi-value headers are joined into a single value with a comma. + // It would be unsafe to split such values on a comma - it's impossible to distinguish a multi-value header + // joined with a comma and a single-value header that contains a comma. + if len(event.Cookies) > 0 { + if req.MultiValueHeaders == nil { + req.MultiValueHeaders = make(map[string][]string) + } + req.MultiValueHeaders["Cookie"] = event.Cookies + } + + if opts.UseProxyPath { + req.Path = path.Join("/", event.PathParameters["proxy"]) + } + + return req, nil +} + +func newAPIGatewayV2Response(r *http.Response) (lambdaResponse, error) { + resp := lambdaResponse{ + Headers: make(map[string]string, len(r.Header)), + } + // APIGatewayV2 doesn't support multi-value headers. + for key, values := range r.Header { + // For cookies there is a workaround - Set-Cookie headers are assigned to the response Cookies slice. + if key == canonicalSetCookieHeaderKey { + resp.Cookies = values + continue + } + // All other multi-value headers are joined into a single value with a comma. + resp.Headers[key] = strings.Join(values, ",") + } + return resp, nil +} + +// APIGatewayV2RequestFromContext extracts the APIGatewayV2HTTPRequest event from ctx. +func APIGatewayV2RequestFromContext(ctx context.Context) (events.APIGatewayV2HTTPRequest, bool) { + val := ctx.Value(RequestTypeAPIGatewayV2) + if val == nil { + return events.APIGatewayV2HTTPRequest{}, false + } + event, ok := val.(events.APIGatewayV2HTTPRequest) + return event, ok +} diff --git a/vendor/github.com/akrylysov/algnhsa/context.go b/vendor/github.com/akrylysov/algnhsa/context.go deleted file mode 100644 index 0483180..0000000 --- a/vendor/github.com/akrylysov/algnhsa/context.go +++ /dev/null @@ -1,42 +0,0 @@ -package algnhsa - -import ( - "context" - - "github.com/aws/aws-lambda-go/events" -) - -type contextKey int - -const ( - proxyRequestContextKey contextKey = iota - albRequestContextKey -) - -func newProxyRequestContext(ctx context.Context, event events.APIGatewayProxyRequest) context.Context { - return context.WithValue(ctx, proxyRequestContextKey, event) -} - -// ProxyRequestFromContext extracts the APIGatewayProxyRequest event from ctx. -func ProxyRequestFromContext(ctx context.Context) (events.APIGatewayProxyRequest, bool) { - val := ctx.Value(proxyRequestContextKey) - if val == nil { - return events.APIGatewayProxyRequest{}, false - } - event, ok := val.(events.APIGatewayProxyRequest) - return event, ok -} - -func newTargetGroupRequestContext(ctx context.Context, event events.ALBTargetGroupRequest) context.Context { - return context.WithValue(ctx, albRequestContextKey, event) -} - -// TargetGroupRequestFromContext extracts the ALBTargetGroupRequest event from ctx. -func TargetGroupRequestFromContext(ctx context.Context) (events.ALBTargetGroupRequest, bool) { - val := ctx.Value(albRequestContextKey) - if val == nil { - return events.ALBTargetGroupRequest{}, false - } - event, ok := val.(events.ALBTargetGroupRequest) - return event, ok -} diff --git a/vendor/github.com/akrylysov/algnhsa/debug.go b/vendor/github.com/akrylysov/algnhsa/debug.go new file mode 100644 index 0000000..e28eb2a --- /dev/null +++ b/vendor/github.com/akrylysov/algnhsa/debug.go @@ -0,0 +1,103 @@ +package algnhsa + +import ( + "encoding/json" + "github.com/aws/aws-lambda-go/events" + "io" + "mime" + "net/http" +) + +const maxDumpFormParseMem = 32 << 20 // 32MB + +// RequestDebugDump is a dump of the HTTP request including the original Lambda event. +type RequestDebugDump struct { + Method string + URL struct { + Path string + RawPath string + } + RequestURI string + Host string + RemoteAddr string + Header map[string][]string + Form map[string][]string + Body string + APIGatewayV1Request *events.APIGatewayProxyRequest `json:",omitempty"` + APIGatewayV2Request *events.APIGatewayV2HTTPRequest `json:",omitempty"` + ALBRequest *events.ALBTargetGroupRequest `json:",omitempty"` +} + +func parseMediaType(r *http.Request) (string, error) { + ct := r.Header.Get("Content-Type") + if ct == "" { + return "", nil + } + mt, _, err := mime.ParseMediaType(ct) + return mt, err +} + +// NewRequestDebugDump creates a new RequestDebugDump from an HTTP request. +func NewRequestDebugDump(r *http.Request) (*RequestDebugDump, error) { + mt, err := parseMediaType(r) + if err != nil { + return nil, err + } + if mt == "multipart/form-data" { + if err := r.ParseMultipartForm(maxDumpFormParseMem); err != nil { + return nil, err + } + } else { + if err := r.ParseForm(); err != nil { + return nil, err + } + } + + body, err := io.ReadAll(r.Body) + if err != nil { + return nil, err + } + + dump := &RequestDebugDump{ + Method: r.Method, + URL: struct { + Path string + RawPath string + }{Path: r.URL.Path, RawPath: r.URL.RawPath}, + RequestURI: r.RequestURI, + Host: r.Host, + RemoteAddr: r.RemoteAddr, + Header: r.Header, + Form: r.Form, + Body: string(body), + } + + if event, ok := APIGatewayV1RequestFromContext(r.Context()); ok { + dump.APIGatewayV1Request = &event + } + if event, ok := APIGatewayV2RequestFromContext(r.Context()); ok { + dump.APIGatewayV2Request = &event + } + if event, ok := ALBRequestFromContext(r.Context()); ok { + dump.ALBRequest = &event + } + + return dump, nil +} + +// RequestDebugDumpHandler is an HTTP handler that returns JSON encoded RequestDebugDump. +func RequestDebugDumpHandler(w http.ResponseWriter, r *http.Request) { + dump, err := NewRequestDebugDump(r) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + _, _ = io.WriteString(w, err.Error()) + return + } + enc := json.NewEncoder(w) + if err := enc.Encode(dump); err != nil { + w.WriteHeader(http.StatusInternalServerError) + _, _ = io.WriteString(w, err.Error()) + return + } + return +} diff --git a/vendor/github.com/akrylysov/algnhsa/options.go b/vendor/github.com/akrylysov/algnhsa/options.go index 348547a..39a18e6 100644 --- a/vendor/github.com/akrylysov/algnhsa/options.go +++ b/vendor/github.com/akrylysov/algnhsa/options.go @@ -4,14 +4,15 @@ type RequestType int const ( RequestTypeAuto RequestType = iota - RequestTypeAPIGateway + RequestTypeAPIGatewayV1 + RequestTypeAPIGatewayV2 RequestTypeALB ) // Options holds the optional parameters. type Options struct { // RequestType sets the expected request type. - // By default algnhsa deduces the request type from the lambda function payload. + // By default, algnhsa deduces the request type from the lambda function payload. RequestType RequestType // BinaryContentTypes sets content types that should be treated as binary types. @@ -19,9 +20,12 @@ type Options struct { BinaryContentTypes []string binaryContentTypeMap map[string]bool - // Use API Gateway PathParameters["proxy"] when constructing the request url. + // Use API Gateway V1 PathParameters["proxy"] when constructing the request url. // Strips the base path mapping when using a custom domain with API Gateway. UseProxyPath bool + + // DebugLog enables printing request and response objects to stdout. + DebugLog bool } func (opts *Options) setBinaryContentTypeMap() { diff --git a/vendor/github.com/akrylysov/algnhsa/request.go b/vendor/github.com/akrylysov/algnhsa/request.go index f1d11e5..89e94dc 100644 --- a/vendor/github.com/akrylysov/algnhsa/request.go +++ b/vendor/github.com/akrylysov/algnhsa/request.go @@ -10,31 +10,45 @@ import ( "strings" ) +var errUnsupportedPayloadFormat = errors.New("unsupported payload format; supported formats: APIGatewayV2HTTPRequest, APIGatewayProxyRequest, ALBTargetGroupRequest") + type lambdaRequest struct { - HTTPMethod string `json:"httpMethod"` - Path string `json:"path"` - QueryStringParameters map[string]string `json:"queryStringParameters,omitempty"` - MultiValueQueryStringParameters map[string][]string `json:"multiValueQueryStringParameters,omitempty"` - Headers map[string]string `json:"headers,omitempty"` - MultiValueHeaders map[string][]string `json:"multiValueHeaders,omitempty"` - IsBase64Encoded bool `json:"isBase64Encoded"` - Body string `json:"body"` + HTTPMethod string + Path string + QueryStringParameters map[string]string + MultiValueQueryStringParameters map[string][]string + RawQueryString string + Headers map[string]string + MultiValueHeaders map[string][]string + IsBase64Encoded bool + Body string SourceIP string Context context.Context + requestType RequestType } func newLambdaRequest(ctx context.Context, payload []byte, opts *Options) (lambdaRequest, error) { switch opts.RequestType { - case RequestTypeAPIGateway: - return newAPIGatewayRequest(ctx, payload, opts) + case RequestTypeAPIGatewayV1: + return newAPIGatewayV1Request(ctx, payload, opts) + case RequestTypeAPIGatewayV2: + return newAPIGatewayV2Request(ctx, payload, opts) case RequestTypeALB: return newALBRequest(ctx, payload, opts) } // The request type wasn't specified. - // Try to decode the payload as APIGatewayProxyRequest, if it fails try ALBTargetGroupRequest. - req, err := newAPIGatewayRequest(ctx, payload, opts) - if err != nil && err != errAPIGatewayUnexpectedRequest { + // Try to decode the payload as APIGatewayV2HTTPRequest, fall back to APIGatewayProxyRequest, then ALBTargetGroupRequest. + req, err := newAPIGatewayV2Request(ctx, payload, opts) + if err != nil && err != errAPIGatewayV2UnexpectedRequest { + return lambdaRequest{}, err + } + if err == nil { + return req, nil + } + + req, err = newAPIGatewayV1Request(ctx, payload, opts) + if err != nil && err != errAPIGatewayV1UnexpectedRequest { return lambdaRequest{}, err } if err == nil { @@ -49,24 +63,27 @@ func newLambdaRequest(ctx context.Context, payload []byte, opts *Options) (lambd return req, nil } - return lambdaRequest{}, errors.New("neither APIGatewayProxyRequest nor ALBTargetGroupRequest received") + return lambdaRequest{}, errUnsupportedPayloadFormat } func newHTTPRequest(event lambdaRequest) (*http.Request, error) { // Build request URL. - params := url.Values{} - for k, v := range event.QueryStringParameters { - params.Set(k, v) - } - for k, vals := range event.MultiValueQueryStringParameters { - params[k] = vals + rawQuery := event.RawQueryString + if len(rawQuery) == 0 { + params := url.Values{} + for k, v := range event.QueryStringParameters { + params.Set(k, v) + } + for k, vals := range event.MultiValueQueryStringParameters { + params[k] = vals + } + rawQuery = params.Encode() } - // Set headers. // https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html - // If you specify values for both headers and multiValueHeaders, API Gateway merges them into a single list. + // If you specify values for both headers and multiValueHeaders, API Gateway V1 merges them into a single list. // If the same key-value pair is specified in both, only the values from multiValueHeaders will appear - // the merged list. + // in the merged list. headers := make(http.Header) for k, v := range event.Headers { headers.Set(k, v) @@ -75,21 +92,14 @@ func newHTTPRequest(event lambdaRequest) (*http.Request, error) { headers[http.CanonicalHeaderKey(k)] = vals } - u := url.URL{ - Host: headers.Get("host"), - RawPath: event.Path, - RawQuery: params.Encode(), - } - - // Unescape request path - p, err := url.PathUnescape(u.RawPath) + unescapedPath, err := url.PathUnescape(event.Path) if err != nil { return nil, err } - u.Path = p - - if u.Path == u.RawPath { - u.RawPath = "" + u := url.URL{ + Host: headers.Get("Host"), + Path: unescapedPath, + RawQuery: rawQuery, } // Handle base64 encoded body. @@ -99,7 +109,7 @@ func newHTTPRequest(event lambdaRequest) (*http.Request, error) { } // Create a new request. - r, err := http.NewRequest(event.HTTPMethod, u.String(), body) + r, err := http.NewRequestWithContext(event.Context, event.HTTPMethod, u.String(), body) if err != nil { return nil, err } @@ -112,5 +122,5 @@ func newHTTPRequest(event lambdaRequest) (*http.Request, error) { r.Header = headers - return r.WithContext(event.Context), nil + return r, nil } diff --git a/vendor/github.com/akrylysov/algnhsa/response.go b/vendor/github.com/akrylysov/algnhsa/response.go index c08c3c3..e7b8500 100644 --- a/vendor/github.com/akrylysov/algnhsa/response.go +++ b/vendor/github.com/akrylysov/algnhsa/response.go @@ -2,36 +2,52 @@ package algnhsa import ( "encoding/base64" + "net/http" "net/http/httptest" ) const acceptAllContentType = "*/*" +var canonicalSetCookieHeaderKey = http.CanonicalHeaderKey("Set-Cookie") + +// lambdaResponse is a combined lambda response. +// It contains common fields from APIGatewayProxyResponse, APIGatewayV2HTTPResponse and ALBTargetGroupResponse. type lambdaResponse struct { StatusCode int `json:"statusCode"` - Headers map[string]string `json:"headers"` - MultiValueHeaders map[string][]string `json:"multiValueHeaders"` + Headers map[string]string `json:"headers,omitempty"` + MultiValueHeaders map[string][]string `json:"multiValueHeaders,omitempty"` + Cookies []string `json:"cookies,omitempty"` Body string `json:"body"` IsBase64Encoded bool `json:"isBase64Encoded,omitempty"` } -func newLambdaResponse(w *httptest.ResponseRecorder, binaryContentTypes map[string]bool) (lambdaResponse, error) { - event := lambdaResponse{} - - // Set status code. - event.StatusCode = w.Code +func newLambdaResponse(w *httptest.ResponseRecorder, binaryContentTypes map[string]bool, requestType RequestType) (lambdaResponse, error) { + result := w.Result() + + var resp lambdaResponse + var err error + switch requestType { + case RequestTypeAPIGatewayV1: + resp, err = newAPIGatewayV1Response(result) + case RequestTypeALB: + resp, err = newALBResponse(result) + case RequestTypeAPIGatewayV2: + resp, err = newAPIGatewayV2Response(result) + } + if err != nil { + return resp, err + } - // Set headers. - event.MultiValueHeaders = w.Result().Header + resp.StatusCode = result.StatusCode // Set body. - contentType := w.Header().Get("Content-Type") + contentType := result.Header.Get("Content-Type") if binaryContentTypes[acceptAllContentType] || binaryContentTypes[contentType] { - event.Body = base64.StdEncoding.EncodeToString(w.Body.Bytes()) - event.IsBase64Encoded = true + resp.Body = base64.StdEncoding.EncodeToString(w.Body.Bytes()) + resp.IsBase64Encoded = true } else { - event.Body = w.Body.String() + resp.Body = w.Body.String() } - return event, nil + return resp, nil } diff --git a/vendor/github.com/aws/aws-lambda-go/events/README.md b/vendor/github.com/aws/aws-lambda-go/events/README.md index 9081a4b..234f227 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README.md @@ -1,39 +1,69 @@ # Overview -[![GoDoc](https://godoc.org/github.com/aws/aws-lambda-go/events?status.svg)](https://godoc.org/github.com/aws/aws-lambda-go/events) +[![Go Reference](https://pkg.go.dev/badge/github.com/aws/aws-lambda-go/events.svg)](https://pkg.go.dev/github.com/aws/aws-lambda-go/events) This package provides input types for Lambda functions that process AWS events. # Samples +[ALB Target Group Events](README_ALBTargetGroupEvents.md) + [API Gateway](README_ApiGatewayEvent.md) [API Gateway Custom Authorizer](README_ApiGatewayCustomAuthorizer.md) [AppSync](README_AppSync.md) +[AutoScaling](README_AutoScaling.md) + +[ClientVPN Connection Handler](README_ClientVPN.md) + [CloudFormation Events](../cfn/README.md) -[Code Commit Events](README_CodeCommit.md) +[CloudWatch Events](README_CloudWatch_Events.md) + +[CloudWatch Logs](README_CloudWatch_Logs.md) + +[Chime Bot Events](README_Chime_Bots.md) + +[CodeBuild Events](README_CodeBuild.md) + +[CodeCommit Events](README_CodeCommit.md) + +[CodeDeploy Events](README_CodeDeploy.md) [Cognito Events](README_Cognito.md) +[Cognito Custom Authentication](README_Cognito_UserPools_CustomAuthLambdaTriggers.md) + [Cognito PostConfirmation](README_Cognito_UserPools_PostConfirmation.md) +[Cognito PreAuthentication](README_Cognito_UserPools_PreAuthentication.md) + [Cognito PreSignup](README_Cognito_UserPools_PreSignup.md) [Cognito PreTokenGen](README_Cognito_UserPools_PreTokenGen.md) [Config Events](README_Config.md) +[Connect Events](README_Connect.md) + [DynamoDB Events](README_DynamoDB.md) [Kinesis Events](README_Kinesis.md) +[Kinesis Data Analytics Events](README_KinesisDataAnalytics.md) + [Kinesis Firehose Events](README_KinesisFirehose.md) +[Lambda Events](README_Lambda.md) + +[Lex Events](README_Lex.md) + [S3 Events](README_S3.md) +[S3 Batch Job Events](README_S3_Batch_Job.md) + [SES Events](README_SES.md) [SNS Events](README_SNS.md) diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_ALBTargetGroupEvents.md b/vendor/github.com/aws/aws-lambda-go/events/README_ALBTargetGroupEvents.md index cf370d0..e0a4821 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_ALBTargetGroupEvents.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_ALBTargetGroupEvents.md @@ -6,7 +6,7 @@ https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-funct # Sample Function -The following is a sample class and Lambda function that receives an ALB Target Group event as an input, writes some of the incoming data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives an ALB Target Group event as an input, writes some of the incoming data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go @@ -29,7 +29,7 @@ func handleRequest(ctx context.Context, request events.ALBTargetGroupRequest) (e fmt.Printf(" %s: %s\n", key, value) } - return events.ALBTargetGroupResponse{Body: request.Body, StatusCode: 200, StatusDescription: "200 OK", IsBase64Encoded: false}, nil + return events.ALBTargetGroupResponse{Body: request.Body, StatusCode: 200, StatusDescription: "200 OK", IsBase64Encoded: false, Headers: map[string]string{}}, nil } func main() { diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_ApiGatewayEvent.md b/vendor/github.com/aws/aws-lambda-go/events/README_ApiGatewayEvent.md index 65ceabc..1faaf59 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_ApiGatewayEvent.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_ApiGatewayEvent.md @@ -4,7 +4,7 @@ API Gateway events consist of a request that was routed to a Lambda function by # Sample Function -The following is a sample class and Lambda function that receives Amazon API Gateway event record data as an input, writes some of the record data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon API Gateway event record data as an input, writes some of the record data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_AppSync.md b/vendor/github.com/aws/aws-lambda-go/events/README_AppSync.md deleted file mode 100644 index c4a0e04..0000000 --- a/vendor/github.com/aws/aws-lambda-go/events/README_AppSync.md +++ /dev/null @@ -1,30 +0,0 @@ - -# Sample Function - -The following is a sample class and Lambda function that receives AWS AppSync event message data as input, writes some of the message data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) - -```go -package main - -import ( - "context" - "fmt" - - "github.com/aws/aws-lambda-go/events" - "github.com/aws/aws-lambda-go/lambda" -) - -func handler(ctx context.Context, event events.AppSyncResolverTemplate) error { - - fmt.Printf("Version: %s\n", event.Version) - fmt.Printf("Operation: %s\n", event.Operation) - fmt.Printf("Payload: %s\n", string(event.Payload)) - - return nil -} - -func main() { - lambda.Start(handler) -} - -``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_AutoScaling.md b/vendor/github.com/aws/aws-lambda-go/events/README_AutoScaling.md index dfc648b..2835ada 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_AutoScaling.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_AutoScaling.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives an Auto Scaling event as an input and logs the EC2 instance ID to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives an Auto Scaling event as an input and logs the EC2 instance ID to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go import ( diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Chime_Bots.md b/vendor/github.com/aws/aws-lambda-go/events/README_Chime_Bots.md new file mode 100644 index 0000000..d5d933d --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Chime_Bots.md @@ -0,0 +1,67 @@ +# Sample Function + +The following is a sample class and Lambda function that receives a Amazon Chime Bot event and handles the various event types accordingly. + +```go + +package main + +import ( + "fmt" + "context" + "net/http" + "bytes" + "encoding/json" + "errors" + "strconv" + + "github.com/aws/aws-lambda-go/events" +) + +func handler(_ context.Context, chimeBotEvent events.ChimeBotEvent) error { + switch chimeBotEvent.EventType { + case "Invite": + if err := message(chimeBotEvent.InboundHTTPSEndpoint.URL, "Thanks for inviting me to this room " + chimeBotEvent.Sender.SenderID); err != nil { + return fmt.Errorf("failed to send webhook message: %v", err) + } + return nil + case "Mention": + if err := message(chimeBotEvent.InboundHTTPSEndpoint.URL, "Thanks for mentioning me " + chimeBotEvent.Sender.SenderID); err != nil { + return fmt.Errorf("failed to send webhook message: %v", err) + } + return nil + case "Remove": + fmt.Printf("I have been removed from %q by %q", chimeBotEvent.Discussion.DiscussionType, chimeBotEvent.Sender.SenderID) + return nil + default: + return fmt.Errorf("event type %q is unsupported", chimeBotEvent.EventType) + } +} + +func message(url, content string) (error) { + input := &bytes.Buffer{} + if err := json.NewEncoder(input).Encode(webhookInput{Content:content}); err != nil { + return errors.New("failed to marshal request: " + err.Error()) + } + + resp, err := http.Post("POST", url, input) + if err != nil { + return errors.New("failed to execute post http request: " + err.Error()) + } + + if resp != nil && resp.Body != nil { + defer resp.Body.Close() + } + + if resp.StatusCode != http.StatusOK { + return errors.New("bad response: status code not is " + strconv.Itoa(http.StatusOK) + " not " + strconv.Itoa(resp.StatusCode)) + } + + return nil +} + +type webhookInput struct { + Content string `json:"Content"` +} + +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_ClientVPN.md b/vendor/github.com/aws/aws-lambda-go/events/README_ClientVPN.md new file mode 100644 index 0000000..ab8c0e3 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_ClientVPN.md @@ -0,0 +1,56 @@ +# Sample Function + +The following is a sample Lambda function that receives a Client VPN connection handler request as an input and then validates the IP address input and checks whether the connection source IP is on the allowed list defined as a map inside the function. If the source IP matches an allowed IP address it allows the access, otherwise an error message is presented to the user. Debug logs are generated to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) + +```go +import ( + "fmt" + "log" + "net" + + "encoding/json" + + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" +) + +var ( + AllowedIPs = map[string]bool{ + "10.11.12.13": true, + } +) + +func handler(request events.ClientVPNConnectionHandlerRequest) (events.ClientVPNConnectionHandlerResponse, error) { + requestJson, _ := json.MarshalIndent(request, "", " ") + log.Printf("REQUEST: %s", requestJson) + + sourceIP := request.PublicIP + if net.ParseIP(sourceIP) == nil { + return events.ClientVPNConnectionHandlerResponse{}, fmt.Errorf("Invalid parameter PublicIP passed in request: %q", sourceIP) + } + + log.Printf("SOURCE IP: %q", sourceIP) + + if allowed, ok := AllowedIPs[sourceIP]; ok && allowed { + log.Printf("Allowing access from: %q", sourceIP) + return events.ClientVPNConnectionHandlerResponse{ + Allow: true, + ErrorMsgOnFailedPostureCompliance: "", + PostureComplianceStatuses: []string{}, + SchemaVersion: "v1", + }, nil + } + + log.Printf("Blocking access from: %q", sourceIP) + return events.ClientVPNConnectionHandlerResponse{ + Allow: false, + ErrorMsgOnFailedPostureCompliance: "You're trying to connect from an IP address that is not allowed.", + PostureComplianceStatuses: []string{"BlockedSourceIP"}, + SchemaVersion: "v1", + }, nil +} + +func main() { + lambda.Start(handler) +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_CloudWatch_Events.md b/vendor/github.com/aws/aws-lambda-go/events/README_CloudWatch_Events.md new file mode 100644 index 0000000..b1d16dc --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_CloudWatch_Events.md @@ -0,0 +1,38 @@ + +# Sample Function + +The following is a Lambda function that receives Amazon CloudWatch event record data as input and writes event detail to Lambda's CloudWatch Logs. Note that by default anything written to Console will be logged as CloudWatch Logs events. + +```go +import ( + "context" + "fmt" + + "github.com/aws/aws-lambda-go/events" +) + +func handler(ctx context.Context, event events.CloudWatchEvent) { + fmt.Printf("Detail = %s\n", event.Detail) +} +``` + +## CloudWatch Scheduled Events + +If you have a constant JSON text in a CloudWatch Scheduled Event, it can be accessed either by explicitly defining a structure for the json payload you would expect: + +```go +type MyRequest struct { + Name string `json:"name"` +} + +func handler(ctx context.Context, req MyRequest) { +} +``` + +or by accepting raw json blob as is: + +```go +func handler(ctx context.Context, b json.RawMessage) { + // json.RawMessage is basically []byte which can be unmarshalled +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_CloudWatch_Logs.md b/vendor/github.com/aws/aws-lambda-go/events/README_CloudWatch_Logs.md new file mode 100644 index 0000000..75a219e --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_CloudWatch_Logs.md @@ -0,0 +1,20 @@ + +# Sample Function + +The following is a Lambda function that receives Amazon CloudWatch Logs event record data as input and writes message part to Lambda's CloudWatch Logs. Note that by default anything written to Console will be logged as CloudWatch Logs events. + +```go +import ( + "context" + "fmt" + + "github.com/aws/aws-lambda-go/events" +) + +func handler(ctx context.Context, logsEvent events.CloudwatchLogsEvent) { + data, _ := logsEvent.AWSLogs.Parse() + for _, logEvent := range data.LogEvents { + fmt.Printf("Message = %s\n", logEvent.Message) + } +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_CodeBuild.md b/vendor/github.com/aws/aws-lambda-go/events/README_CodeBuild.md new file mode 100644 index 0000000..729eaa4 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_CodeBuild.md @@ -0,0 +1,15 @@ +# Sample Function + +The following is a sample Lambda function that receives an Amazon CodeBuild event +and writes it to standard output. + +```go +import ( + "fmt" + "github.com/aws/aws-lambda-go/events" +) + +func handleRequest(evt events.CodeBuildEvent) { + fmt.Println(evt) +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_CodeDeploy.md b/vendor/github.com/aws/aws-lambda-go/events/README_CodeDeploy.md new file mode 100644 index 0000000..761c0b0 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_CodeDeploy.md @@ -0,0 +1,15 @@ +# Sample Function + +The following is a sample Lambda function that receives an Amazon CodeDeploy event +and writes it to standard output. + +```go +import ( + "fmt" + "github.com/aws/aws-lambda-go/events" +) + +func handleRequest(evt events.CodeDeployEvent) { + fmt.Println(evt) +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito.md b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito.md index a8ee586..9a7249e 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives Amazon Cognito Sync event record data as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives Amazon Cognito Sync event record data as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_CustomAuthLambdaTriggers.md b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_CustomAuthLambdaTriggers.md new file mode 100644 index 0000000..737339c --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_CustomAuthLambdaTriggers.md @@ -0,0 +1,69 @@ +# Sample Function + +The following is a sample Lambda functions that are used for custom authentication with Cognito User Pools. +These Lambda triggers issue and verify their own challenges as part of a user pool [custom authentication flow](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-custom-authentication-flow). + +Please see instructions for setting up the Cognito triggers at https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html + +Define Auth Challenge Lambda Trigger: +```go +package main + +import ( + "fmt" + + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-lambda-go/events" +) + +func handler(event *events.CognitoEventUserPoolsDefineAuthChallenge) (*events.CognitoEventUserPoolsDefineAuthChallenge, error) { + fmt.Printf("Define Auth Challenge: %+v\n", event) + return event, nil +} + +func main() { + lambda.Start(handler) +} +``` + +Create Auth Challenge Lambda Trigger: +```go +package main + +import ( + "fmt" + + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-lambda-go/events" +) + +func handler(event *events.CognitoEventUserPoolsCreateAuthChallenge) (*events.CognitoEventUserPoolsCreateAuthChallenge, error) { + fmt.Printf("Create Auth Challenge: %+v\n", event) + return event, nil +} + +func main() { + lambda.Start(handler) +} +``` + +Verify Auth Challenge Response Lambda Trigger: +```go +package main + +import ( + "fmt" + + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-lambda-go/events" +) + +func handler(event *events.CognitoEventUserPoolsVerifyAuthChallenge) (*events.CognitoEventUserPoolsVerifyAuthChallenge, error) { + fmt.Printf("Verify Auth Challenge: %+v\n", event) + return event, nil +} + +func main() { + lambda.Start(handler) +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PostConfirmation.md b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PostConfirmation.md index 3471837..0efab64 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PostConfirmation.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PostConfirmation.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives Amazon Cognito User Pools post-confirmation event as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives Amazon Cognito User Pools post-confirmation event as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) Please see instructions for setting up the Cognito triggers at https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html . diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreAuthentication.md b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreAuthentication.md new file mode 100644 index 0000000..0e74214 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreAuthentication.md @@ -0,0 +1,25 @@ +# Sample Function + +The following is a sample Lambda function that receives Amazon Cognito User Pools pre-authentication event as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) + +Please see instructions for setting up the Cognito triggers at https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html . + +```go +package main + +import ( + "fmt" + + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-lambda-go/events" +) + +func handler(event events.CognitoEventUserPoolsPreAuthentication) (events.CognitoEventUserPoolsPreAuthentication, error) { + fmt.Printf("PreAuthentication of user: %s\n", event.UserName) + return event, nil +} + +func main() { + lambda.Start(handler) +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreSignup.md b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreSignup.md index 9e782fc..0d48499 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreSignup.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreSignup.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives Amazon Cognito User Pools pre-signup event as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives Amazon Cognito User Pools pre-signup event as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) Please see instructions for setting up the Cognito triggers at https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html . @@ -8,19 +8,20 @@ Please see instructions for setting up the Cognito triggers at https://docs.aws. package main import ( - "fmt" + "fmt" - "github.com/aws/aws-lambda-go/lambda" - "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" ) +// handler is the lambda handler invoked by the `lambda.Start` function call func handler(event events.CognitoEventUserPoolsPreSignup) (events.CognitoEventUserPoolsPreSignup, error) { - fmt.Printf("PreSignup of user: %s\n", event.UserName) - event.Response.AutoConfirmUser = true - return event, nil + fmt.Printf("PreSignup of user: %s\n", event.UserName) + event.Response.AutoConfirmUser = true + return event, nil } func main() { - lambda.Start(handler) + lambda.Start(handler) } ``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreTokenGen.md b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreTokenGen.md index eddfcb4..f42cba0 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreTokenGen.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Cognito_UserPools_PreTokenGen.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives Amazon Cognito User Pools pre-token-gen event as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives Amazon Cognito User Pools pre-token-gen event as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) Please see instructions for setting up the Cognito triggers at https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html . @@ -16,7 +16,7 @@ import ( func handler(event events.CognitoEventUserPoolsPreTokenGen) (events.CognitoEventUserPoolsPreTokenGen, error) { fmt.Printf("PreTokenGen of user: %s\n", event.UserName) - event.Response.ClaimOverrideDetails.ClaimsToSupress = []string{"family_name"} + event.Response.ClaimsOverrideDetails.ClaimsToSuppress = []string{"family_name"} return event, nil } diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Config.md b/vendor/github.com/aws/aws-lambda-go/events/README_Config.md index e2d217a..e8d0833 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Config.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Config.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives Amazon Config event record data as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives Amazon Config event record data as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Connect.md b/vendor/github.com/aws/aws-lambda-go/events/README_Connect.md index e33b144..9e4c92b 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Connect.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Connect.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample Lambda function that receives an Amazon Connect event as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample Lambda function that receives an Amazon Connect event as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go package main diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Kinesis.md b/vendor/github.com/aws/aws-lambda-go/events/README_Kinesis.md index 4dd23b2..7133d4b 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Kinesis.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Kinesis.md @@ -1,6 +1,6 @@ # Sample Function -The following is a sample class and Lambda function that receives Amazon Kinesis event record data as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon Kinesis event record data as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_KinesisDataAnalytics.md b/vendor/github.com/aws/aws-lambda-go/events/README_KinesisDataAnalytics.md new file mode 100644 index 0000000..6225294 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_KinesisDataAnalytics.md @@ -0,0 +1,45 @@ +# Sample function + +The following is an example for an Application Destination Lambda function that receives Amazon Kinesis Data Analytics event records as an input. To send Kinesis Data Analytics output records the Lambda function must be compliant with the (required input and return data models)[https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output-lambda.html], so the handler returns a list of delivery statuses for each record. + +The following Lambda function receives Amazon Kinesis Data Analytics event record data as an input and writes some of the record data to CloudWatch Logs. For each entry it adds an element to the response slice, marking it delivered. When the logic considers the delivery to be failed the `events.KinesisAnalyticsOutputDeliveryFailed` value should be used for the response `Result` field. + + +```go +package main + +import ( + "context" + "encoding/json" + "fmt" + "log" + + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" +) + +func handler(ctx context.Context, kinesisAnalyticsEvent events.KinesisAnalyticsOutputDeliveryEvent) (events.KinesisAnalyticsOutputDeliveryResponse, error) { + var err error + + var responses events.KinesisAnalyticsOutputDeliveryResponse + responses.Records = make([]events.KinesisAnalyticsOutputDeliveryResponseRecord, len(kinesisAnalyticsEvent.Records)) + + for i, record := range kinesisAnalyticsEvent.Records { + responses.Records[i] = events.KinesisAnalyticsOutputDeliveryResponseRecord{ + RecordID: record.RecordID, + Result: events.KinesisAnalyticsOutputDeliveryOK, + } + + dataBytes := record.Data + dataText := string(dataBytes) + + fmt.Printf("%s Data = %s \n", record.RecordID, dataText) + } + return responses, err +} + +func main() { + lambda.Start(handler) +} + +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Lambda.md b/vendor/github.com/aws/aws-lambda-go/events/README_Lambda.md new file mode 100644 index 0000000..95aa75e --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Lambda.md @@ -0,0 +1,35 @@ +# Overview + +Lambda events consist of a request that was routed to a Lambda function by the Lambda Function URLs feature. When this happens, Lambda expects the result of the function to be the response that Lambda should respond with. + +# Sample Function + +The following is a sample class and Lambda function that receives Lambda Function URLs event record data as an input, writes some of the record data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) + +```go +package main + +import ( + "context" + "fmt" + + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" +) + +func handleRequest(ctx context.Context, request events.LambdaFunctionURLRequest) (events.LambdaFunctionURLResponse, error) { + fmt.Printf("Processing request data for request %s.\n", request.RequestContext.RequestID) + fmt.Printf("Body size = %d.\n", len(request.Body)) + + fmt.Println("Headers:") + for key, value := range request.Headers { + fmt.Printf(" %s: %s\n", key, value) + } + + return events.LambdaFunctionURLResponse{Body: request.Body, StatusCode: 200}, nil +} + +func main() { + lambda.Start(handleRequest) +} +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_Lex.md b/vendor/github.com/aws/aws-lambda-go/events/README_Lex.md index abcc07a..88d04e9 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_Lex.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_Lex.md @@ -1,7 +1,7 @@ # Sample Function -The following is a sample class and Lambda function that receives Amazon Lex event data as input, writes some of the record data to CloudWatch Logs, and responds back to Lex. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon Lex event data as input, writes some of the record data to CloudWatch Logs, and responds back to Lex. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go import ( diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_S3.md b/vendor/github.com/aws/aws-lambda-go/events/README_S3.md index a8f746f..ac36ab0 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_S3.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_S3.md @@ -1,20 +1,30 @@ # Sample Function -The following is a sample class and Lambda function that receives Amazon S3 event record data as an input and writes some of the record data to CloudWatch Logs. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon S3 event record data as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go +// main.go +package main + import ( - "fmt" - "context" - "github.com/aws/aws-lambda-go/events" + "fmt" + "context" + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-lambda-go/events" ) func handler(ctx context.Context, s3Event events.S3Event) { - for _, record := range s3Event.Records { - s3 := record.S3 - fmt.Printf("[%s - %s] Bucket = %s, Key = %s \n", record.EventSource, record.EventTime, s3.Bucket.Name, s3.Object.Key) - } + for _, record := range s3Event.Records { + s3 := record.S3 + fmt.Printf("[%s - %s] Bucket = %s, Key = %s \n", record.EventSource, record.EventTime, s3.Bucket.Name, s3.Object.Key) + } +} + + +func main() { + // Make the handler available for Remote Procedure Call by AWS Lambda + lambda.Start(handler) } ``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_S3_Batch_Job.md b/vendor/github.com/aws/aws-lambda-go/events/README_S3_Batch_Job.md new file mode 100644 index 0000000..19e4549 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/README_S3_Batch_Job.md @@ -0,0 +1,39 @@ +# Sample Function + +The following is a sample class and Lambda function that receives Amazon S3 event record data as an input and writes some of the record data to CloudWatch Logs. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) + +```go + +import ( + "fmt" + "context" + "github.com/aws/aws-lambda-go/events" +) + +func handler(ctx context.Context, e events.S3BatchJobEvent) (response events.S3BatchJobResponse, err error) { + fmt.Printf("InvocationSchemaVersion: %s\n", e.InvocationSchemaVersion) + fmt.Printf("InvocationID: %s\n", e.InvocationID) + fmt.Printf("Job.ID: %s\n", e.Job.ID) + + for _, task := range e.Tasks { + fmt.Printf("TaskID: %s\n", task.TaskID) + fmt.Printf("S3Key: %s\n", task.S3Key) + fmt.Printf("S3VersionID: %s\n", task.S3VersionID) + fmt.Printf("S3BucketARN: %s\n", task.S3BucketARN) + + } + + fmt.Printf("InvocationSchemaVersion: %s\n", response.InvocationSchemaVersion) + fmt.Printf("TreatMissingKeysAs: %s\n", response.TreatMissingKeysAs) + fmt.Printf("InvocationID: %s\n", response.InvocationID) + + for _, result := range response.Results { + fmt.Printf("TaskID: %s\n", result.TaskID) + fmt.Printf("ResultCode: %s\n", result.ResultCode) + fmt.Printf("ResultString: %s\n", result.ResultString) + } + + return +} + +``` diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_SES.md b/vendor/github.com/aws/aws-lambda-go/events/README_SES.md index ddfaed9..dd47118 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_SES.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_SES.md @@ -1,7 +1,7 @@ # Sample Function -The following is a sample class and Lambda function that receives Amazon SES event message data as input, writes some of the message data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon SES event message data as input, writes some of the message data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go package main diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_SNS.md b/vendor/github.com/aws/aws-lambda-go/events/README_SNS.md index f198793..924250c 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_SNS.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_SNS.md @@ -1,7 +1,7 @@ # Sample Function -The following is a sample class and Lambda function that receives Amazon SNS event record data as input, writes some of the record data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon SNS event record data as input, writes some of the record data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go import ( diff --git a/vendor/github.com/aws/aws-lambda-go/events/README_SQS.md b/vendor/github.com/aws/aws-lambda-go/events/README_SQS.md index e5340f3..d852b16 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/README_SQS.md +++ b/vendor/github.com/aws/aws-lambda-go/events/README_SQS.md @@ -1,7 +1,7 @@ # Sample Function -The following is a sample class and Lambda function that receives Amazon SQS event message data as input, writes some of the message data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.) +The following is a sample class and Lambda function that receives Amazon SQS event message data as input, writes some of the message data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that anything written to stdout or stderr will be logged as CloudWatch Logs events.) ```go package main diff --git a/vendor/github.com/aws/aws-lambda-go/events/activemq.go b/vendor/github.com/aws/aws-lambda-go/events/activemq.go new file mode 100644 index 0000000..fec67c4 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/activemq.go @@ -0,0 +1,31 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +type ActiveMQEvent struct { + EventSource string `json:"eventSource"` + EventSourceARN string `json:"eventSourceArn"` + Messages []ActiveMQMessage `json:"messages"` +} + +type ActiveMQMessage struct { + MessageID string `json:"messageID"` + MessageType string `json:"messageType"` + Timestamp int64 `json:"timestamp"` + DeliveryMode int `json:"deliveryMode"` + CorrelationID string `json:"correlationID"` + ReplyTo string `json:"replyTo"` + Destination ActiveMQDestination `json:"destination"` + Redelivered bool `json:"redelivered"` + Type string `json:"type"` + Expiration int64 `json:"expiration"` + Priority int `json:"priority"` + Data string `json:"data"` + BrokerInTime int64 `json:"brokerInTime"` + BrokerOutTime int64 `json:"brokerOutTime"` + Properties map[string]string `json:"properties"` +} + +type ActiveMQDestination struct { + PhysicalName string `json:"physicalName"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/alb.go b/vendor/github.com/aws/aws-lambda-go/events/alb.go index 5c1742d..ec5ee28 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/alb.go +++ b/vendor/github.com/aws/aws-lambda-go/events/alb.go @@ -20,7 +20,7 @@ type ALBTargetGroupRequestContext struct { // ELBContext contains the information to identify the ARN invoking the lambda type ELBContext struct { - TargetGroupArn string `json:"targetGroupArn"` + TargetGroupArn string `json:"targetGroupArn"` //nolint: stylecheck } // ALBTargetGroupResponse configures the response to be returned by the ALB Lambda target group for the request @@ -29,6 +29,6 @@ type ALBTargetGroupResponse struct { StatusDescription string `json:"statusDescription"` Headers map[string]string `json:"headers"` MultiValueHeaders map[string][]string `json:"multiValueHeaders"` - Body string `json:"body"` + Body string `json:"body,omitempty"` IsBase64Encoded bool `json:"isBase64Encoded"` } diff --git a/vendor/github.com/aws/aws-lambda-go/events/apigw.go b/vendor/github.com/aws/aws-lambda-go/events/apigw.go index 520a02c..04ac73f 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/apigw.go +++ b/vendor/github.com/aws/aws-lambda-go/events/apigw.go @@ -30,15 +30,105 @@ type APIGatewayProxyResponse struct { // APIGatewayProxyRequestContext contains the information to identify the AWS account and resources invoking the // Lambda function. It also includes Cognito identity information for the caller. type APIGatewayProxyRequestContext struct { - AccountID string `json:"accountId"` - ResourceID string `json:"resourceId"` - Stage string `json:"stage"` - RequestID string `json:"requestId"` - Identity APIGatewayRequestIdentity `json:"identity"` - ResourcePath string `json:"resourcePath"` - Authorizer map[string]interface{} `json:"authorizer"` - HTTPMethod string `json:"httpMethod"` - APIID string `json:"apiId"` // The API Gateway rest API Id + AccountID string `json:"accountId"` + ResourceID string `json:"resourceId"` + OperationName string `json:"operationName,omitempty"` + Stage string `json:"stage"` + DomainName string `json:"domainName"` + DomainPrefix string `json:"domainPrefix"` + RequestID string `json:"requestId"` + ExtendedRequestID string `json:"extendedRequestId"` + Protocol string `json:"protocol"` + Identity APIGatewayRequestIdentity `json:"identity"` + ResourcePath string `json:"resourcePath"` + Path string `json:"path"` + Authorizer map[string]interface{} `json:"authorizer"` + HTTPMethod string `json:"httpMethod"` + RequestTime string `json:"requestTime"` + RequestTimeEpoch int64 `json:"requestTimeEpoch"` + APIID string `json:"apiId"` // The API Gateway rest API Id +} + +// APIGatewayV2HTTPRequest contains data coming from the new HTTP API Gateway +type APIGatewayV2HTTPRequest struct { + Version string `json:"version"` + RouteKey string `json:"routeKey"` + RawPath string `json:"rawPath"` + RawQueryString string `json:"rawQueryString"` + Cookies []string `json:"cookies,omitempty"` + Headers map[string]string `json:"headers"` + QueryStringParameters map[string]string `json:"queryStringParameters,omitempty"` + PathParameters map[string]string `json:"pathParameters,omitempty"` + RequestContext APIGatewayV2HTTPRequestContext `json:"requestContext"` + StageVariables map[string]string `json:"stageVariables,omitempty"` + Body string `json:"body,omitempty"` + IsBase64Encoded bool `json:"isBase64Encoded"` +} + +// APIGatewayV2HTTPRequestContext contains the information to identify the AWS account and resources invoking the Lambda function. +type APIGatewayV2HTTPRequestContext struct { + RouteKey string `json:"routeKey"` + AccountID string `json:"accountId"` + Stage string `json:"stage"` + RequestID string `json:"requestId"` + Authorizer *APIGatewayV2HTTPRequestContextAuthorizerDescription `json:"authorizer,omitempty"` + APIID string `json:"apiId"` // The API Gateway HTTP API Id + DomainName string `json:"domainName"` + DomainPrefix string `json:"domainPrefix"` + Time string `json:"time"` + TimeEpoch int64 `json:"timeEpoch"` + HTTP APIGatewayV2HTTPRequestContextHTTPDescription `json:"http"` + Authentication APIGatewayV2HTTPRequestContextAuthentication `json:"authentication,omitempty"` +} + +// APIGatewayV2HTTPRequestContextAuthorizerDescription contains authorizer information for the request context. +type APIGatewayV2HTTPRequestContextAuthorizerDescription struct { + JWT *APIGatewayV2HTTPRequestContextAuthorizerJWTDescription `json:"jwt,omitempty"` + Lambda map[string]interface{} `json:"lambda,omitempty"` + IAM *APIGatewayV2HTTPRequestContextAuthorizerIAMDescription `json:"iam,omitempty"` +} + +// APIGatewayV2HTTPRequestContextAuthorizerJWTDescription contains JWT authorizer information for the request context. +type APIGatewayV2HTTPRequestContextAuthorizerJWTDescription struct { + Claims map[string]string `json:"claims"` + Scopes []string `json:"scopes,omitempty"` +} + +// APIGatewayV2HTTPRequestContextAuthorizerIAMDescription contains IAM information for the request context. +type APIGatewayV2HTTPRequestContextAuthorizerIAMDescription struct { + AccessKey string `json:"accessKey"` + AccountID string `json:"accountId"` + CallerID string `json:"callerId"` + CognitoIdentity APIGatewayV2HTTPRequestContextAuthorizerCognitoIdentity `json:"cognitoIdentity,omitempty"` + PrincipalOrgID string `json:"principalOrgId"` + UserARN string `json:"userArn"` + UserID string `json:"userId"` +} + +// APIGatewayV2HTTPRequestContextAuthorizerCognitoIdentity contains Cognito identity information for the request context. +type APIGatewayV2HTTPRequestContextAuthorizerCognitoIdentity struct { + AMR []string `json:"amr"` + IdentityID string `json:"identityId"` + IdentityPoolID string `json:"identityPoolId"` +} + +// APIGatewayV2HTTPRequestContextHTTPDescription contains HTTP information for the request context. +type APIGatewayV2HTTPRequestContextHTTPDescription struct { + Method string `json:"method"` + Path string `json:"path"` + Protocol string `json:"protocol"` + SourceIP string `json:"sourceIp"` + UserAgent string `json:"userAgent"` +} + +// APIGatewayV2HTTPResponse configures the response to be returned by API Gateway V2 for the request +type APIGatewayV2HTTPResponse struct { + StatusCode int `json:"statusCode"` + Headers map[string]string `json:"headers"` + MultiValueHeaders map[string][]string `json:"multiValueHeaders"` + Body string `json:"body"` + IsBase64Encoded bool `json:"isBase64Encoded,omitempty"` + Cookies []string `json:"cookies"` } // APIGatewayRequestIdentity contains identity information for the request caller. @@ -48,11 +138,12 @@ type APIGatewayRequestIdentity struct { CognitoIdentityID string `json:"cognitoIdentityId"` Caller string `json:"caller"` APIKey string `json:"apiKey"` + APIKeyID string `json:"apiKeyId"` AccessKey string `json:"accessKey"` SourceIP string `json:"sourceIp"` CognitoAuthenticationType string `json:"cognitoAuthenticationType"` CognitoAuthenticationProvider string `json:"cognitoAuthenticationProvider"` - UserArn string `json:"userArn"` + UserArn string `json:"userArn"` //nolint: stylecheck UserAgent string `json:"userAgent"` User string `json:"user"` } @@ -61,7 +152,7 @@ type APIGatewayRequestIdentity struct { type APIGatewayWebsocketProxyRequest struct { Resource string `json:"resource"` // The resource path defined in API Gateway Path string `json:"path"` // The url path for the caller - HTTPMethod string `json:"httpMethod"` + HTTPMethod string `json:"httpMethod,omitempty"` Headers map[string]string `json:"headers"` MultiValueHeaders map[string][]string `json:"multiValueHeaders"` QueryStringParameters map[string]string `json:"queryStringParameters"` @@ -101,10 +192,90 @@ type APIGatewayWebsocketProxyRequestContext struct { Status string `json:"status"` } -// APIGatewayCustomAuthorizerRequestTypeRequestIdentity contains identity information for the request caller. +// APIGatewayCustomAuthorizerRequestTypeRequestIdentity contains identity information for the request caller including certificate information if using mTLS. type APIGatewayCustomAuthorizerRequestTypeRequestIdentity struct { - APIKey string `json:"apiKey"` - SourceIP string `json:"sourceIp"` + APIKey string `json:"apiKey"` + SourceIP string `json:"sourceIp"` + ClientCert APIGatewayCustomAuthorizerRequestTypeRequestIdentityClientCert `json:"clientCert"` +} + +// APIGatewayCustomAuthorizerRequestTypeRequestIdentityClientCert contains certificate information for the request caller if using mTLS. +type APIGatewayCustomAuthorizerRequestTypeRequestIdentityClientCert struct { + ClientCertPem string `json:"clientCertPem"` + IssuerDN string `json:"issuerDN"` + SerialNumber string `json:"serialNumber"` + SubjectDN string `json:"subjectDN"` + Validity APIGatewayCustomAuthorizerRequestTypeRequestIdentityClientCertValidity `json:"validity"` +} + +// APIGatewayCustomAuthorizerRequestTypeRequestIdentityClientCertValidity contains certificate validity information for the request caller if using mTLS. +type APIGatewayCustomAuthorizerRequestTypeRequestIdentityClientCertValidity struct { + NotAfter string `json:"notAfter"` + NotBefore string `json:"notBefore"` +} + +// APIGatewayV2HTTPRequestContextAuthentication contains authentication context information for the request caller including client certificate information if using mTLS. +type APIGatewayV2HTTPRequestContextAuthentication struct { + ClientCert APIGatewayV2HTTPRequestContextAuthenticationClientCert `json:"clientCert"` +} + +// APIGatewayV2HTTPRequestContextAuthenticationClientCert contains client certificate information for the request caller if using mTLS. +type APIGatewayV2HTTPRequestContextAuthenticationClientCert struct { + ClientCertPem string `json:"clientCertPem"` + IssuerDN string `json:"issuerDN"` + SerialNumber string `json:"serialNumber"` + SubjectDN string `json:"subjectDN"` + Validity APIGatewayV2HTTPRequestContextAuthenticationClientCertValidity `json:"validity"` +} + +// APIGatewayV2HTTPRequestContextAuthenticationClientCertValidity contains client certificate validity information for the request caller if using mTLS. +type APIGatewayV2HTTPRequestContextAuthenticationClientCertValidity struct { + NotAfter string `json:"notAfter"` + NotBefore string `json:"notBefore"` +} + +type APIGatewayV2CustomAuthorizerV1RequestTypeRequestContext struct { + Path string `json:"path"` + AccountID string `json:"accountId"` + ResourceID string `json:"resourceId"` + Stage string `json:"stage"` + RequestID string `json:"requestId"` + Identity APIGatewayCustomAuthorizerRequestTypeRequestIdentity `json:"identity"` + ResourcePath string `json:"resourcePath"` + HTTPMethod string `json:"httpMethod"` + APIID string `json:"apiId"` +} + +type APIGatewayV2CustomAuthorizerV1Request struct { + Version string `json:"version"` + Type string `json:"type"` + MethodArn string `json:"methodArn"` //nolint: stylecheck + IdentitySource string `json:"identitySource"` + AuthorizationToken string `json:"authorizationToken"` + Resource string `json:"resource"` + Path string `json:"path"` + HTTPMethod string `json:"httpMethod"` + Headers map[string]string `json:"headers"` + QueryStringParameters map[string]string `json:"queryStringParameters"` + PathParameters map[string]string `json:"pathParameters"` + StageVariables map[string]string `json:"stageVariables"` + RequestContext APIGatewayV2CustomAuthorizerV1RequestTypeRequestContext `json:"requestContext"` +} + +type APIGatewayV2CustomAuthorizerV2Request struct { + Version string `json:"version"` + Type string `json:"type"` + RouteArn string `json:"routeArn"` //nolint: stylecheck + IdentitySource []string `json:"identitySource"` + RouteKey string `json:"routeKey"` + RawPath string `json:"rawPath"` + RawQueryString string `json:"rawQueryString"` + Cookies []string `json:"cookies"` + Headers map[string]string `json:"headers"` + QueryStringParameters map[string]string `json:"queryStringParameters"` + RequestContext APIGatewayV2HTTPRequestContext `json:"requestContext"` + PathParameters map[string]string `json:"pathParameters"` + StageVariables map[string]string `json:"stageVariables"` } // APIGatewayCustomAuthorizerContext represents the expected format of an API Gateway custom authorizer response. @@ -133,13 +304,13 @@ type APIGatewayCustomAuthorizerRequestTypeRequestContext struct { type APIGatewayCustomAuthorizerRequest struct { Type string `json:"type"` AuthorizationToken string `json:"authorizationToken"` - MethodArn string `json:"methodArn"` + MethodArn string `json:"methodArn"` //nolint: stylecheck } // APIGatewayCustomAuthorizerRequestTypeRequest contains data coming in to a custom API Gateway authorizer function. type APIGatewayCustomAuthorizerRequestTypeRequest struct { Type string `json:"type"` - MethodArn string `json:"methodArn"` + MethodArn string `json:"methodArn"` //nolint: stylecheck Resource string `json:"resource"` Path string `json:"path"` HTTPMethod string `json:"httpMethod"` @@ -160,14 +331,20 @@ type APIGatewayCustomAuthorizerResponse struct { UsageIdentifierKey string `json:"usageIdentifierKey,omitempty"` } -// APIGatewayCustomAuthorizerPolicy represents an IAM policy -type APIGatewayCustomAuthorizerPolicy struct { - Version string - Statement []IAMPolicyStatement +// APIGatewayV2CustomAuthorizerSimpleResponse represents the simple format of an API Gateway V2 authorization response. +type APIGatewayV2CustomAuthorizerSimpleResponse struct { + IsAuthorized bool `json:"isAuthorized"` + Context map[string]interface{} `json:"context,omitempty"` } -type IAMPolicyStatement struct { - Action []string - Effect string - Resource []string +// APIGatewayCustomAuthorizerPolicy represents an IAM policy. +// +// Note: This type exists for backwards compatibility. +// should reference IAMPolicyDocument directly instead. +type APIGatewayCustomAuthorizerPolicy IAMPolicyDocument + +type APIGatewayV2CustomAuthorizerIAMPolicyResponse struct { + PrincipalID string `json:"principalId"` + PolicyDocument APIGatewayCustomAuthorizerPolicy `json:"policyDocument"` + Context map[string]interface{} `json:"context,omitempty"` } diff --git a/vendor/github.com/aws/aws-lambda-go/events/appsync.go b/vendor/github.com/aws/aws-lambda-go/events/appsync.go index d6ba49e..37682b9 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/appsync.go +++ b/vendor/github.com/aws/aws-lambda-go/events/appsync.go @@ -2,19 +2,66 @@ package events import "encoding/json" -// AppSyncResolverTemplate represents the requests from AppSync to Lambda +// Deprecated: AppSyncResolverTemplate does not represent resolver events sent by AppSync. Instead directly model your input schema, or use map[string]string, json.RawMessage, interface{}, etc.. type AppSyncResolverTemplate struct { Version string `json:"version"` Operation AppSyncOperation `json:"operation"` Payload json.RawMessage `json:"payload"` } -// AppSyncOperation specifies the operation type supported by Lambda operations +// AppSyncIAMIdentity contains information about the caller authed via IAM. +type AppSyncIAMIdentity struct { + AccountID string `json:"accountId"` + CognitoIdentityAuthProvider string `json:"cognitoIdentityAuthProvider"` + CognitoIdentityAuthType string `json:"cognitoIdentityAuthType"` + CognitoIdentityPoolID string `json:"cognitoIdentityPoolId"` + CognitoIdentityID string `json:"cognitoIdentityId"` + SourceIP []string `json:"sourceIp"` + Username string `json:"username"` + UserARN string `json:"userArn"` +} + +// AppSyncCognitoIdentity contains information about the caller authed via Cognito. +type AppSyncCognitoIdentity struct { + Sub string `json:"sub"` + Issuer string `json:"issuer"` + Username string `json:"username"` + Claims map[string]interface{} `json:"claims"` + SourceIP []string `json:"sourceIp"` + DefaultAuthStrategy string `json:"defaultAuthStrategy"` +} + +// Deprecated: not used by any event schema type AppSyncOperation string const ( - // OperationInvoke lets AWS AppSync know to call your Lambda function for every GraphQL field resolver + // Deprecated: not used by any event schema OperationInvoke AppSyncOperation = "Invoke" - // OperationBatchInvoke instructs AWS AppSync to batch requests for the current GraphQL field + // Deprecated: not used by any event schema OperationBatchInvoke AppSyncOperation = "BatchInvoke" ) + +// AppSyncLambdaAuthorizerRequest contains an authorization request from AppSync. +type AppSyncLambdaAuthorizerRequest struct { + AuthorizationToken string `json:"authorizationToken"` + RequestContext AppSyncLambdaAuthorizerRequestContext `json:"requestContext"` +} + +// AppSyncLambdaAuthorizerRequestContext contains the parameters of the AppSync invocation which triggered +// this authorization request. +type AppSyncLambdaAuthorizerRequestContext struct { + APIID string `json:"apiId"` + AccountID string `json:"accountId"` + RequestID string `json:"requestId"` + QueryString string `json:"queryString"` + OperationName string `json:"operationName"` + Variables map[string]interface{} `json:"variables"` +} + +// AppSyncLambdaAuthorizerResponse represents the expected format of an authorization response to AppSync. +type AppSyncLambdaAuthorizerResponse struct { + IsAuthorized bool `json:"isAuthorized"` + ResolverContext map[string]interface{} `json:"resolverContext,omitempty"` + DeniedFields []string `json:"deniedFields,omitempty"` + TTLOverride *int `json:"ttlOverride,omitempty"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/attributevalue.go b/vendor/github.com/aws/aws-lambda-go/events/attributevalue.go index 530f54d..f582d30 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/attributevalue.go +++ b/vendor/github.com/aws/aws-lambda-go/events/attributevalue.go @@ -18,6 +18,10 @@ type DynamoDBAttributeValue struct { dataType DynamoDBDataType } +// This struct represents DynamoDBAttributeValue which doesn't +// implement fmt.Stringer interface and safely `fmt.Sprintf`able +type dynamoDbAttributeValue DynamoDBAttributeValue //nolint: stylecheck + // Binary provides access to an attribute of type Binary. // Method panics if the attribute is not of type Binary. func (av DynamoDBAttributeValue) Binary() []byte { @@ -64,6 +68,15 @@ func (av DynamoDBAttributeValue) Number() string { return av.value.(string) } +// Int64 provides access to an attribute of type Number. +// DynamoDB sends the values as strings. For convenience this method +// provides conversion to int. +// Method panics if the attribute is not of type Number. +func (av DynamoDBAttributeValue) Int64() (int64, error) { + number := av.Number() + return strconv.ParseInt(number, 10, 64) +} + // Integer provides access to an attribute of type Number. // DynamoDB sends the values as strings. For convenience this method // provides conversion to int. If the value cannot be represented by @@ -71,7 +84,12 @@ func (av DynamoDBAttributeValue) Number() string { // of an int64 of the appropriate sign. // Method panics if the attribute is not of type Number. func (av DynamoDBAttributeValue) Integer() (int64, error) { - s, err := strconv.ParseFloat(av.Number(), 64) + number := av.Number() + value, err := av.Int64() + if err == nil { + return value, nil + } + s, err := strconv.ParseFloat(number, 64) return int64(s), err } @@ -98,8 +116,13 @@ func (av DynamoDBAttributeValue) NumberSet() []string { // String provides access to an attribute of type String. // Method panics if the attribute is not of type String. func (av DynamoDBAttributeValue) String() string { - av.ensureType(DataTypeString) - return av.value.(string) + if av.dataType == DataTypeString { + return av.value.(string) + } + // If dataType is not DataTypeString during fmt.Sprintf("%#v", ...) + // compiler confuses with fmt.Stringer interface and panics + // instead of printing the struct. + return fmt.Sprintf("%v", dynamoDbAttributeValue(av)) } // StringSet provides access to an attribute of type String Set. @@ -167,6 +190,14 @@ func NewNumberAttribute(value string) DynamoDBAttributeValue { return av } +// NewNumberSetAttribute creates an DynamoDBAttributeValue containing a NumberSet +func NewNumberSetAttribute(value []string) DynamoDBAttributeValue { + var av DynamoDBAttributeValue + av.value = value + av.dataType = DataTypeNumberSet + return av +} + // NewNullAttribute creates an DynamoDBAttributeValue containing a Null func NewNullAttribute() DynamoDBAttributeValue { var av DynamoDBAttributeValue diff --git a/vendor/github.com/aws/aws-lambda-go/events/chime_bot.go b/vendor/github.com/aws/aws-lambda-go/events/chime_bot.go new file mode 100644 index 0000000..fa08f00 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/chime_bot.go @@ -0,0 +1,31 @@ +// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +import ( + "time" +) + +type ChimeBotEvent struct { + Sender ChimeBotEventSender `json:"Sender"` + Discussion ChimeBotEventDiscussion `json:"Discussion"` + EventType string `json:"EventType"` + InboundHTTPSEndpoint *ChimeBotEventInboundHTTPSEndpoint `json:"InboundHttpsEndpoint,omitempty"` + EventTimestamp time.Time `json:"EventTimestamp"` + Message string `json:"Message,omitempty"` +} + +type ChimeBotEventSender struct { + SenderID string `json:"SenderId"` + SenderIDType string `json:"SenderIdType"` +} + +type ChimeBotEventDiscussion struct { + DiscussionID string `json:"DiscussionId"` + DiscussionType string `json:"DiscussionType"` +} + +type ChimeBotEventInboundHTTPSEndpoint struct { + EndpointType string `json:"EndpointType"` + URL string `json:"Url"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/clientvpn.go b/vendor/github.com/aws/aws-lambda-go/events/clientvpn.go new file mode 100644 index 0000000..af763d0 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/clientvpn.go @@ -0,0 +1,20 @@ +package events + +type ClientVPNConnectionHandlerRequest struct { + ConnectionID string `json:"connection-id"` + EndpointID string `json:"endpoint-id"` + CommonName string `json:"common-name"` + Username string `json:"username"` + OSPlatform string `json:"platform"` + OSPlatformVersion string `json:"platform-version"` + PublicIP string `json:"public-ip"` + ClientOpenVPNVersion string `json:"client-openvpn-version"` + SchemaVersion string `json:"schema-version"` +} + +type ClientVPNConnectionHandlerResponse struct { + Allow bool `json:"allow"` + ErrorMsgOnFailedPostureCompliance string `json:"error-msg-on-failed-posture-compliance"` + PostureComplianceStatuses []string `json:"posture-compliance-statuses"` + SchemaVersion string `json:"schema-version"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/cloudwatch_logs.go b/vendor/github.com/aws/aws-lambda-go/events/cloudwatch_logs.go index 447cbd5..6b74b3b 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/cloudwatch_logs.go +++ b/vendor/github.com/aws/aws-lambda-go/events/cloudwatch_logs.go @@ -29,11 +29,11 @@ func (c CloudwatchLogsRawData) Parse() (d CloudwatchLogsData, err error) { if err != nil { return } + defer zr.Close() - buf := &bytes.Buffer{} - buf.ReadFrom(zr) + dec := json.NewDecoder(zr) + err = dec.Decode(&d) - err = json.Unmarshal(buf.Bytes(), &d) return } @@ -47,7 +47,7 @@ type CloudwatchLogsData struct { LogEvents []CloudwatchLogsLogEvent `json:"logEvents"` } -// LogEvent represents a log entry from cloudwatch logs +// CloudwatchLogsLogEvent represents a log entry from cloudwatch logs type CloudwatchLogsLogEvent struct { ID string `json:"id"` Timestamp int64 `json:"timestamp"` diff --git a/vendor/github.com/aws/aws-lambda-go/events/code_commit.go b/vendor/github.com/aws/aws-lambda-go/events/code_commit.go index e8672ba..8bb6d88 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/code_commit.go +++ b/vendor/github.com/aws/aws-lambda-go/events/code_commit.go @@ -43,7 +43,7 @@ func (t *CodeCommitEventTime) UnmarshalJSON(data []byte) error { return err } -// represents a CodeCommit record +// CodeCommitRecord represents a CodeCommit record type CodeCommitRecord struct { EventID string `json:"eventId"` EventVersion string `json:"eventVersion"` @@ -52,7 +52,7 @@ type CodeCommitRecord struct { EventPartNumber uint64 `json:"eventPartNumber"` CodeCommit CodeCommitCodeCommit `json:"codecommit"` EventName string `json:"eventName"` - EventTriggerConfigId string `json:"eventTriggerConfigId"` + EventTriggerConfigId string `json:"eventTriggerConfigId"` //nolint: stylecheck EventSourceARN string `json:"eventSourceARN"` UserIdentityARN string `json:"userIdentityARN"` EventSource string `json:"eventSource"` diff --git a/vendor/github.com/aws/aws-lambda-go/events/codebuild.go b/vendor/github.com/aws/aws-lambda-go/events/codebuild.go new file mode 100644 index 0000000..08cbb60 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/codebuild.go @@ -0,0 +1,220 @@ +package events + +import ( + "encoding/json" + "time" +) + +const ( + CodeBuildEventSource = "aws.codebuild" + CodeBuildStateChangeDetailType = "CodeBuild Build State Change" + CodeBuildPhaseChangeDetailType = "CodeBuild Build Phase Change" +) + +// CodeBuildPhaseStatus represents the status of code build phase (i.e. failed, in progress) +type CodeBuildPhaseStatus string + +const ( + CodeBuildPhaseStatusFailed CodeBuildPhaseStatus = "FAILED" + CodeBuildPhaseStatusFault CodeBuildPhaseStatus = "FAULT" + CodeBuildPhaseStatusInProgress CodeBuildPhaseStatus = "IN_PROGRESS" + CodeBuildPhaseStatusQueued CodeBuildPhaseStatus = "QUEUED" + CodeBuildPhaseStatusStopped CodeBuildPhaseStatus = "STOPPED" + CodeBuildPhaseStatusSucceeded CodeBuildPhaseStatus = "SUCCEEDED" + CodeBuildPhaseStatusTimedOut CodeBuildPhaseStatus = "TIMED_OUT" +) + +// CodeBuildPhaseType represents the type of the code build phase (i.e. submitted, install) +type CodeBuildPhaseType string + +const ( + CodeBuildPhaseTypeSubmitted CodeBuildPhaseType = "SUBMITTED" + CodeBuildPhaseTypeQueued CodeBuildPhaseType = "QUEUED" + CodeBuildPhaseTypeProvisioning CodeBuildPhaseType = "PROVISIONING" + CodeBuildPhaseTypeDownloadSource CodeBuildPhaseType = "DOWNLOAD_SOURCE" + CodeBuildPhaseTypeInstall CodeBuildPhaseType = "INSTALL" + CodeBuildPhaseTypePreBuild CodeBuildPhaseType = "PRE_BUILD" + CodeBuildPhaseTypeBuild CodeBuildPhaseType = "BUILD" + CodeBuildPhaseTypePostBuild CodeBuildPhaseType = "POST_BUILD" + CodeBuildPhaseTypeUploadArtifacts CodeBuildPhaseType = "UPLOAD_ARTIFACTS" + CodeBuildPhaseTypeFinalizing CodeBuildPhaseType = "FINALIZING" + CodeBuildPhaseTypeCompleted CodeBuildPhaseType = "COMPLETED" +) + +// CodeBuildEvent is documented at: +// https://docs.aws.amazon.com/codebuild/latest/userguide/sample-build-notifications.html#sample-build-notifications-ref +type CodeBuildEvent struct { + // AccountID is the id of the AWS account from which the event originated. + AccountID string `json:"account"` + + // Region is the AWS region from which the event originated. + Region string `json:"region"` + + // DetailType informs the schema of the Detail field. For build state-change + // events, the value will be CodeBuildStateChangeDetailType. For phase-change + // events, it will be CodeBuildPhaseChangeDetailType. + DetailType string `json:"detail-type"` + + // Source should be equal to CodeBuildEventSource. + Source string `json:"source"` + + // Version is the version of the event's schema. + Version string `json:"version"` + + // Time is the event's timestamp. + Time time.Time `json:"time"` + + // ID is the GUID of this event. + ID string `json:"id"` + + // Resources is a list of ARNs of CodeBuild builds that this event pertains to. + Resources []string `json:"resources"` + + // Detail contains information specific to a build state-change or + // build phase-change event. + Detail CodeBuildEventDetail `json:"detail"` +} + +// CodeBuildEventDetail represents the all details related to the code build event +type CodeBuildEventDetail struct { + BuildStatus CodeBuildPhaseStatus `json:"build-status"` + ProjectName string `json:"project-name"` + BuildID string `json:"build-id"` + AdditionalInformation CodeBuildEventAdditionalInformation `json:"additional-information"` + CurrentPhase CodeBuildPhaseType `json:"current-phase"` + CurrentPhaseContext string `json:"current-phase-context"` + Version string `json:"version"` + + CompletedPhaseStatus CodeBuildPhaseStatus `json:"completed-phase-status"` + CompletedPhase CodeBuildPhaseType `json:"completed-phase"` + CompletedPhaseContext string `json:"completed-phase-context"` + CompletedPhaseDuration DurationSeconds `json:"completed-phase-duration-seconds"` + CompletedPhaseStart CodeBuildTime `json:"completed-phase-start"` + CompletedPhaseEnd CodeBuildTime `json:"completed-phase-end"` +} + +// CodeBuildEventAdditionalInformation represents additional information to the code build event +type CodeBuildEventAdditionalInformation struct { + Artifact CodeBuildArtifact `json:"artifact"` + + Environment CodeBuildEnvironment `json:"environment"` + + Timeout DurationMinutes `json:"timeout-in-minutes"` + + BuildComplete bool `json:"build-complete"` + + BuildNumber CodeBuildNumber `json:"build-number,omitempty"` + + Initiator string `json:"initiator"` + + BuildStartTime CodeBuildTime `json:"build-start-time"` + + Source CodeBuildSource `json:"source"` + + SourceVersion string `json:"source-version"` + + Logs CodeBuildLogs `json:"logs"` + + Phases []CodeBuildPhase `json:"phases"` +} + +// CodeBuildArtifact represents the artifact provided to build +type CodeBuildArtifact struct { + MD5Sum string `json:"md5sum"` + SHA256Sum string `json:"sha256sum"` + Location string `json:"location"` +} + +// CodeBuildEnvironment represents the environment for a build +type CodeBuildEnvironment struct { + Image string `json:"image"` + PrivilegedMode bool `json:"privileged-mode"` + ComputeType string `json:"compute-type"` + Type string `json:"type"` + EnvironmentVariables []CodeBuildEnvironmentVariable `json:"environment-variables"` +} + +// CodeBuildEnvironmentVariable encapsulate environment variables for the code build +type CodeBuildEnvironmentVariable struct { + // Name is the name of the environment variable. + Name string `json:"name"` + + // Type is PLAINTEXT or PARAMETER_STORE. + Type string `json:"type"` + + // Value is the value of the environment variable. + Value string `json:"value"` +} + +// CodeBuildSource represent the code source will be build +type CodeBuildSource struct { + Location string `json:"location"` + Type string `json:"type"` +} + +// CodeBuildLogs gives the log details of a code build +type CodeBuildLogs struct { + GroupName string `json:"group-name"` + StreamName string `json:"stream-name"` + DeepLink string `json:"deep-link"` +} + +// CodeBuildPhase represents the phase of a build and its details +type CodeBuildPhase struct { + PhaseContext []interface{} `json:"phase-context,omitempty"` + + StartTime CodeBuildTime `json:"start-time"` + + EndTime CodeBuildTime `json:"end-time,omitempty"` + + Duration DurationSeconds `json:"duration-in-seconds,omitempty"` + + PhaseType CodeBuildPhaseType `json:"phase-type"` + + PhaseStatus CodeBuildPhaseStatus `json:"phase-status,omitempty"` +} + +// CodeBuildTime represents the time of the build +type CodeBuildTime time.Time + +const codeBuildTimeFormat = "Jan 2, 2006 3:04:05 PM" + +// MarshalJSON converts a given CodeBuildTime to json +func (t CodeBuildTime) MarshalJSON() ([]byte, error) { + return json.Marshal(time.Time(t).Format(codeBuildTimeFormat)) +} + +// UnmarshalJSON converts a given json to a CodeBuildTime +func (t *CodeBuildTime) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + + ts, err := time.Parse(codeBuildTimeFormat, s) + if err != nil { + return err + } + + *t = CodeBuildTime(ts) + return nil +} + +// CodeBuildNumber represents the number of the build +type CodeBuildNumber int32 + +// MarshalJSON converts a given CodeBuildNumber to json +func (n CodeBuildNumber) MarshalJSON() ([]byte, error) { + return json.Marshal(float32(n)) +} + +// UnmarshalJSON converts a given json to a CodeBuildNumber +func (n *CodeBuildNumber) UnmarshalJSON(data []byte) error { + var f float32 + if err := json.Unmarshal(data, &f); err != nil { + return err + } + + *n = CodeBuildNumber(int32(f)) + return nil +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/codedeploy.go b/vendor/github.com/aws/aws-lambda-go/events/codedeploy.go new file mode 100644 index 0000000..e54eede --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/codedeploy.go @@ -0,0 +1,80 @@ +package events + +import ( + "time" +) + +const ( + CodeDeployEventSource = "aws.codedeploy" + CodeDeployDeploymentEventDetailType = "CodeDeploy Deployment State-change Notification" + CodeDeployInstanceEventDetailType = "CodeDeploy Instance State-change Notification" +) + +type CodeDeployDeploymentState string + +const ( + CodeDeployDeploymentStateFailure CodeDeployDeploymentState = "FAILURE" + CodeDeployDeploymentStateReady CodeDeployDeploymentState = "READY" + CodeDeployDeploymentStateStart CodeDeployDeploymentState = "START" + CodeDeployDeploymentStateStop CodeDeployDeploymentState = "STOP" + CodeDeployDeploymentStateSuccess CodeDeployDeploymentState = "SUCCESS" +) + +// CodeDeployEvent is documented at: +// https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#acd_event_types +type CodeDeployEvent struct { + // AccountID is the id of the AWS account from which the event originated. + AccountID string `json:"account"` + + // Region is the AWS region from which the event originated. + Region string `json:"region"` + + // DetailType informs the schema of the Detail field. For deployment state-change + // events, the value should be equal to CodeDeployDeploymentEventDetailType. + // For instance state-change events, the value should be equal to + // CodeDeployInstanceEventDetailType. + DetailType string `json:"detail-type"` + + // Source should be equal to CodeDeployEventSource. + Source string `json:"source"` + + // Version is the version of the event's schema. + Version string `json:"version"` + + // Time is the event's timestamp. + Time time.Time `json:"time"` + + // ID is the GUID of this event. + ID string `json:"id"` + + // Resources is a list of ARNs of CodeDeploy applications and deployment + // groups that this event pertains to. + Resources []string `json:"resources"` + + // Detail contains information specific to a deployment event. + Detail CodeDeployEventDetail `json:"detail"` +} + +type CodeDeployEventDetail struct { + // InstanceGroupID is the ID of the instance group. + InstanceGroupID string `json:"instanceGroupId"` + + // InstanceID is the id of the instance. This field is non-empty only if + // the DetailType of the complete event is CodeDeployInstanceEventDetailType. + InstanceID string `json:"instanceId,omitempty"` + + // Region is the AWS region that the event originated from. + Region string `json:"region"` + + // Application is the name of the CodeDeploy application. + Application string `json:"application"` + + // DeploymentID is the id of the deployment. + DeploymentID string `json:"deploymentId"` + + // State is the new state of the deployment. + State CodeDeployDeploymentState `json:"state"` + + // DeploymentGroup is the name of the deployment group. + DeploymentGroup string `json:"deploymentGroup"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/codepipeline.go b/vendor/github.com/aws/aws-lambda-go/events/codepipeline.go new file mode 100644 index 0000000..4e15de5 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/codepipeline.go @@ -0,0 +1,7 @@ +package events + +// CodePipelineJob has been incorrectly assigned as CodePipelineEvent +// - https://github.com/aws/aws-lambda-go/issues/244 +// +// This maintains backwards compatability until a v2 release +type CodePipelineEvent = CodePipelineJobEvent diff --git a/vendor/github.com/aws/aws-lambda-go/events/codepipeline_cloudwatch.go b/vendor/github.com/aws/aws-lambda-go/events/codepipeline_cloudwatch.go new file mode 100644 index 0000000..591e39d --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/codepipeline_cloudwatch.go @@ -0,0 +1,107 @@ +package events + +import ( + "time" +) + +const ( + CodePipelineEventSource = "aws.codepipeline" + CodePipelineExecutionEventDetailType = "CodePipeline Pipeline Execution State Change" + CodePipelineActionEventDetailType = "CodePipeline Action Execution State Change" + CodePipelineStageEventDetailType = "CodePipeline Stage Execution State Change" +) + +type CodePipelineStageState string + +const ( + CodePipelineStageStateStarted CodePipelineStageState = "STARTED" + CodePipelineStageStateSucceeded CodePipelineStageState = "SUCCEEDED" + CodePipelineStageStateResumed CodePipelineStageState = "RESUMED" + CodePipelineStageStateFailed CodePipelineStageState = "FAILED" + CodePipelineStageStateCanceled CodePipelineStageState = "CANCELED" +) + +type CodePipelineState string + +const ( + CodePipelineStateStarted CodePipelineState = "STARTED" + CodePipelineStateSucceeded CodePipelineState = "SUCCEEDED" + CodePipelineStateResumed CodePipelineState = "RESUMED" + CodePipelineStateFailed CodePipelineState = "FAILED" + CodePipelineStateCanceled CodePipelineState = "CANCELED" + CodePipelineStateSuperseded CodePipelineState = "SUPERSEDED" +) + +type CodePipelineActionState string + +const ( + CodePipelineActionStateStarted CodePipelineActionState = "STARTED" + CodePipelineActionStateSucceeded CodePipelineActionState = "SUCCEEDED" + CodePipelineActionStateFailed CodePipelineActionState = "FAILED" + CodePipelineActionStateCanceled CodePipelineActionState = "CANCELED" +) + +// CodePipelineEvent is documented at: +// https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#codepipeline_event_type +type CodePipelineCloudWatchEvent struct { + // Version is the version of the event's schema. + Version string `json:"version"` + + // ID is the GUID of this event. + ID string `json:"id"` + + // DetailType informs the schema of the Detail field. For deployment state-change + // events, the value should be equal to CodePipelineDeploymentEventDetailType. + // For instance state-change events, the value should be equal to + // CodePipelineInstanceEventDetailType. + DetailType string `json:"detail-type"` + + // Source should be equal to CodePipelineEventSource. + Source string `json:"source"` + + // AccountID is the id of the AWS account from which the event originated. + AccountID string `json:"account"` + + // Time is the event's timestamp. + Time time.Time `json:"time"` + + // Region is the AWS region from which the event originated. + Region string `json:"region"` + + // Resources is a list of ARNs of CodePipeline applications and deployment + // groups that this event pertains to. + Resources []string `json:"resources"` + + // Detail contains information specific to a deployment event. + Detail CodePipelineEventDetail `json:"detail"` +} + +type CodePipelineEventDetail struct { + Pipeline string `json:"pipeline"` + + // From live testing this is always int64 not string as documented + Version int64 `json:"version"` + + ExecutionID string `json:"execution-id"` + + Stage string `json:"stage"` + + Action string `json:"action"` + + State CodePipelineState `json:"state"` + + Region string `json:"region"` + + Type CodePipelineEventDetailType `json:"type,omitempty"` +} + +type CodePipelineEventDetailType struct { + Owner string `json:"owner"` + + Category string `json:"category"` + + Provider string `json:"provider"` + + // From published EventBridge schema registry this is always int64 not string as documented + Version int64 `json:"version"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/codepipeline_job.go b/vendor/github.com/aws/aws-lambda-go/events/codepipeline_job.go index 68f9634..dd3b823 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/codepipeline_job.go +++ b/vendor/github.com/aws/aws-lambda-go/events/codepipeline_job.go @@ -2,8 +2,8 @@ package events -// CodePipelineEvent contains data from an event sent from AWS Codepipeline -type CodePipelineEvent struct { +// CodePipelineJobEvent contains data from an event sent from AWS CodePipeline +type CodePipelineJobEvent struct { CodePipelineJob CodePipelineJob `json:"CodePipeline.job"` } diff --git a/vendor/github.com/aws/aws-lambda-go/events/cognito.go b/vendor/github.com/aws/aws-lambda-go/events/cognito.go index a518abf..c24a3e3 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/cognito.go +++ b/vendor/github.com/aws/aws-lambda-go/events/cognito.go @@ -28,6 +28,14 @@ type CognitoEventUserPoolsPreSignup struct { Response CognitoEventUserPoolsPreSignupResponse `json:"response"` } +// CognitoEventUserPoolsPreAuthentication is sent by AWS Cognito User Pools when a user submits their information +// to be authenticated, allowing you to perform custom validations to accept or deny the sign in request. +type CognitoEventUserPoolsPreAuthentication struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsPreAuthenticationRequest `json:"request"` + Response CognitoEventUserPoolsPreAuthenticationResponse `json:"response"` +} + // CognitoEventUserPoolsPostConfirmation is sent by AWS Cognito User Pools after a user is confirmed, // allowing the Lambda to send custom messages or add custom logic. type CognitoEventUserPoolsPostConfirmation struct { @@ -37,13 +45,29 @@ type CognitoEventUserPoolsPostConfirmation struct { } // CognitoEventUserPoolsPreTokenGen is sent by AWS Cognito User Pools when a user attempts to retrieve -// credentials, allowing a Lambda to perform insert, supress or override claims +// credentials, allowing a Lambda to perform insert, suppress or override claims type CognitoEventUserPoolsPreTokenGen struct { CognitoEventUserPoolsHeader Request CognitoEventUserPoolsPreTokenGenRequest `json:"request"` Response CognitoEventUserPoolsPreTokenGenResponse `json:"response"` } +// CognitoEventUserPoolsPostAuthentication is sent by AWS Cognito User Pools after a user is authenticated, +// allowing the Lambda to add custom logic. +type CognitoEventUserPoolsPostAuthentication struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsPostAuthenticationRequest `json:"request"` + Response CognitoEventUserPoolsPostAuthenticationResponse `json:"response"` +} + +// CognitoEventUserPoolsMigrateUser is sent by AWS Cognito User Pools when a user does not exist in the +// user pool at the time of sign-in with a password, or in the forgot-password flow. +type CognitoEventUserPoolsMigrateUser struct { + CognitoEventUserPoolsHeader + CognitoEventUserPoolsMigrateUserRequest `json:"request"` + CognitoEventUserPoolsMigrateUserResponse `json:"response"` +} + // CognitoEventUserPoolsCallerContext contains information about the caller type CognitoEventUserPoolsCallerContext struct { AWSSDKVersion string `json:"awsSdkVersion"` @@ -64,6 +88,7 @@ type CognitoEventUserPoolsHeader struct { type CognitoEventUserPoolsPreSignupRequest struct { UserAttributes map[string]string `json:"userAttributes"` ValidationData map[string]string `json:"validationData"` + ClientMetadata map[string]string `json:"clientMetadata"` } // CognitoEventUserPoolsPreSignupResponse contains the response portion of a PreSignup event @@ -73,9 +98,20 @@ type CognitoEventUserPoolsPreSignupResponse struct { AutoVerifyPhone bool `json:"autoVerifyPhone"` } +// CognitoEventUserPoolsPreAuthenticationRequest contains the request portion of a PreAuthentication event +type CognitoEventUserPoolsPreAuthenticationRequest struct { + UserAttributes map[string]string `json:"userAttributes"` + ValidationData map[string]string `json:"validationData"` +} + +// CognitoEventUserPoolsPreAuthenticationResponse contains the response portion of a PreAuthentication event +type CognitoEventUserPoolsPreAuthenticationResponse struct { +} + // CognitoEventUserPoolsPostConfirmationRequest contains the request portion of a PostConfirmation event type CognitoEventUserPoolsPostConfirmationRequest struct { UserAttributes map[string]string `json:"userAttributes"` + ClientMetadata map[string]string `json:"clientMetadata"` } // CognitoEventUserPoolsPostConfirmationResponse contains the response portion of a PostConfirmation event @@ -86,6 +122,7 @@ type CognitoEventUserPoolsPostConfirmationResponse struct { type CognitoEventUserPoolsPreTokenGenRequest struct { UserAttributes map[string]string `json:"userAttributes"` GroupConfiguration GroupConfiguration `json:"groupConfiguration"` + ClientMetadata map[string]string `json:"clientMetadata"` } // CognitoEventUserPoolsPreTokenGenResponse containst the response portion of a PreTokenGen event @@ -93,7 +130,34 @@ type CognitoEventUserPoolsPreTokenGenResponse struct { ClaimsOverrideDetails ClaimsOverrideDetails `json:"claimsOverrideDetails"` } -// ClaimsOverrideDetails allows lambda to add, supress or override claims in the token +// CognitoEventUserPoolsPostAuthenticationRequest contains the request portion of a PostAuthentication event +type CognitoEventUserPoolsPostAuthenticationRequest struct { + NewDeviceUsed bool `json:"newDeviceUsed"` + UserAttributes map[string]string `json:"userAttributes"` + ClientMetadata map[string]string `json:"clientMetadata"` +} + +// CognitoEventUserPoolsPostAuthenticationResponse contains the response portion of a PostAuthentication event +type CognitoEventUserPoolsPostAuthenticationResponse struct { +} + +// CognitoEventUserPoolsMigrateUserRequest contains the request portion of a MigrateUser event +type CognitoEventUserPoolsMigrateUserRequest struct { + Password string `json:"password"` + ValidationData map[string]string `json:"validationData"` + ClientMetadata map[string]string `json:"clientMetadata"` +} + +// CognitoEventUserPoolsMigrateUserResponse contains the response portion of a MigrateUser event +type CognitoEventUserPoolsMigrateUserResponse struct { + UserAttributes map[string]string `json:"userAttributes"` + FinalUserStatus string `json:"finalUserStatus"` + MessageAction string `json:"messageAction"` + DesiredDeliveryMediums []string `json:"desiredDeliveryMediums"` + ForceAliasCreation bool `json:"forceAliasCreation"` +} + +// ClaimsOverrideDetails allows lambda to add, suppress or override claims in the token type ClaimsOverrideDetails struct { GroupOverrideDetails GroupConfiguration `json:"groupOverrideDetails"` ClaimsToAddOrOverride map[string]string `json:"claimsToAddOrOverride"` @@ -106,3 +170,99 @@ type GroupConfiguration struct { IAMRolesToOverride []string `json:"iamRolesToOverride"` PreferredRole *string `json:"preferredRole"` } + +// CognitoEventUserPoolsChallengeResult represents a challenge that is presented to the user in the authentication +// process that is underway, along with the corresponding result. +type CognitoEventUserPoolsChallengeResult struct { + ChallengeName string `json:"challengeName"` + ChallengeResult bool `json:"challengeResult"` + ChallengeMetadata string `json:"challengeMetadata"` +} + +// CognitoEventUserPoolsDefineAuthChallengeRequest defines auth challenge request parameters +type CognitoEventUserPoolsDefineAuthChallengeRequest struct { + UserAttributes map[string]string `json:"userAttributes"` + Session []*CognitoEventUserPoolsChallengeResult `json:"session"` + ClientMetadata map[string]string `json:"clientMetadata"` + UserNotFound bool `json:"userNotFound"` +} + +// CognitoEventUserPoolsDefineAuthChallengeResponse defines auth challenge response parameters +type CognitoEventUserPoolsDefineAuthChallengeResponse struct { + ChallengeName string `json:"challengeName"` + IssueTokens bool `json:"issueTokens"` + FailAuthentication bool `json:"failAuthentication"` +} + +// CognitoEventUserPoolsDefineAuthChallenge sent by AWS Cognito User Pools to initiate custom authentication flow +type CognitoEventUserPoolsDefineAuthChallenge struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsDefineAuthChallengeRequest `json:"request"` + Response CognitoEventUserPoolsDefineAuthChallengeResponse `json:"response"` +} + +// CognitoEventUserPoolsCreateAuthChallengeRequest defines create auth challenge request parameters +type CognitoEventUserPoolsCreateAuthChallengeRequest struct { + UserAttributes map[string]string `json:"userAttributes"` + ChallengeName string `json:"challengeName"` + Session []*CognitoEventUserPoolsChallengeResult `json:"session"` + ClientMetadata map[string]string `json:"clientMetadata"` +} + +// CognitoEventUserPoolsCreateAuthChallengeResponse defines create auth challenge response rarameters +type CognitoEventUserPoolsCreateAuthChallengeResponse struct { + PublicChallengeParameters map[string]string `json:"publicChallengeParameters"` + PrivateChallengeParameters map[string]string `json:"privateChallengeParameters"` + ChallengeMetadata string `json:"challengeMetadata"` +} + +// CognitoEventUserPoolsCreateAuthChallenge sent by AWS Cognito User Pools to create a challenge to present to the user +type CognitoEventUserPoolsCreateAuthChallenge struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsCreateAuthChallengeRequest `json:"request"` + Response CognitoEventUserPoolsCreateAuthChallengeResponse `json:"response"` +} + +// CognitoEventUserPoolsVerifyAuthChallengeRequest defines verify auth challenge request parameters +type CognitoEventUserPoolsVerifyAuthChallengeRequest struct { + UserAttributes map[string]string `json:"userAttributes"` + PrivateChallengeParameters map[string]string `json:"privateChallengeParameters"` + ChallengeAnswer interface{} `json:"challengeAnswer"` + ClientMetadata map[string]string `json:"clientMetadata"` +} + +// CognitoEventUserPoolsVerifyAuthChallengeResponse defines verify auth challenge response parameters +type CognitoEventUserPoolsVerifyAuthChallengeResponse struct { + AnswerCorrect bool `json:"answerCorrect"` +} + +// CognitoEventUserPoolsVerifyAuthChallenge sent by AWS Cognito User Pools to verify if the response from the end user +// for a custom Auth Challenge is valid or not +type CognitoEventUserPoolsVerifyAuthChallenge struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsVerifyAuthChallengeRequest `json:"request"` + Response CognitoEventUserPoolsVerifyAuthChallengeResponse `json:"response"` +} + +// CognitoEventUserPoolsCustomMessage is sent by AWS Cognito User Pools before a verification or MFA message is sent, +// allowing a user to customize the message dynamically. +type CognitoEventUserPoolsCustomMessage struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsCustomMessageRequest `json:"request"` + Response CognitoEventUserPoolsCustomMessageResponse `json:"response"` +} + +// CognitoEventUserPoolsCustomMessageRequest contains the request portion of a CustomMessage event +type CognitoEventUserPoolsCustomMessageRequest struct { + UserAttributes map[string]interface{} `json:"userAttributes"` + CodeParameter string `json:"codeParameter"` + UsernameParameter string `json:"usernameParameter"` + ClientMetadata map[string]string `json:"clientMetadata"` +} + +// CognitoEventUserPoolsCustomMessageResponse contains the response portion of a CustomMessage event +type CognitoEventUserPoolsCustomMessageResponse struct { + SMSMessage string `json:"smsMessage"` + EmailMessage string `json:"emailMessage"` + EmailSubject string `json:"emailSubject"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/config.go b/vendor/github.com/aws/aws-lambda-go/events/config.go index 951809c..816b684 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/config.go +++ b/vendor/github.com/aws/aws-lambda-go/events/config.go @@ -4,14 +4,21 @@ package events // ConfigEvent contains data from an event sent from AWS Config type ConfigEvent struct { - AccountID string `json:"accountId"` // The ID of the AWS account that owns the rule - ConfigRuleArn string `json:"configRuleArn"` // The ARN that AWS Config assigned to the rule - ConfigRuleID string `json:"configRuleId"` - ConfigRuleName string `json:"configRuleName"` // The name that you assigned to the rule that caused AWS Config to publish the event - EventLeftScope bool `json:"eventLeftScope"` // A boolean value that indicates whether the AWS resource to be evaluated has been removed from the rule's scope - ExecutionRoleArn string `json:"executionRoleArn"` - InvokingEvent string `json:"invokingEvent"` // If the event is published in response to a resource configuration change, this value contains a JSON configuration item - ResultToken string `json:"resultToken"` // A token that the function must pass to AWS Config with the PutEvaluations call - RuleParameters string `json:"ruleParameters"` // Key/value pairs that the function processes as part of its evaluation logic - Version string `json:"version"` + // The ID of the AWS account that owns the rule + AccountID string `json:"accountId"` + // The ARN that AWS Config assigned to the rule + ConfigRuleArn string `json:"configRuleArn"` //nolint:stylecheck + ConfigRuleID string `json:"configRuleId"` //nolint:stylecheck + // The name that you assigned to the rule that caused AWS Config to publish the event + ConfigRuleName string `json:"configRuleName"` + // A boolean value that indicates whether the AWS resource to be evaluated has been removed from the rule's scope + EventLeftScope bool `json:"eventLeftScope"` + ExecutionRoleArn string `json:"executionRoleArn"` //nolint:stylecheck + // If the event is published in response to a resource configuration change, this value contains a JSON configuration item + InvokingEvent string `json:"invokingEvent"` + // A token that the function must pass to AWS Config with the PutEvaluations call + ResultToken string `json:"resultToken"` + // Key/value pairs that the function processes as part of its evaluation logic + RuleParameters string `json:"ruleParameters"` + Version string `json:"version"` } diff --git a/vendor/github.com/aws/aws-lambda-go/events/duration.go b/vendor/github.com/aws/aws-lambda-go/events/duration.go new file mode 100644 index 0000000..7952265 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/duration.go @@ -0,0 +1,45 @@ +package events + +import ( + "encoding/json" + "math" + "time" +) + +type DurationSeconds time.Duration + +// UnmarshalJSON converts a given json to a DurationSeconds +func (duration *DurationSeconds) UnmarshalJSON(data []byte) error { + var seconds float64 + if err := json.Unmarshal(data, &seconds); err != nil { + return err + } + + *duration = DurationSeconds(time.Duration(seconds) * time.Second) + return nil +} + +// MarshalJSON converts a given DurationSeconds to json +func (duration DurationSeconds) MarshalJSON() ([]byte, error) { + seconds := time.Duration(duration).Seconds() + return json.Marshal(int64(math.Ceil(seconds))) +} + +type DurationMinutes time.Duration + +// UnmarshalJSON converts a given json to a DurationMinutes +func (duration *DurationMinutes) UnmarshalJSON(data []byte) error { + var minutes float64 + if err := json.Unmarshal(data, &minutes); err != nil { + return err + } + + *duration = DurationMinutes(time.Duration(minutes) * time.Minute) + return nil +} + +// MarshalJSON converts a given DurationMinutes to json +func (duration DurationMinutes) MarshalJSON() ([]byte, error) { + minutes := time.Duration(duration).Minutes() + return json.Marshal(int64(math.Ceil(minutes))) +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/dynamodb.go b/vendor/github.com/aws/aws-lambda-go/events/dynamodb.go index 09fcd34..d5eeeee 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/dynamodb.go +++ b/vendor/github.com/aws/aws-lambda-go/events/dynamodb.go @@ -8,7 +8,20 @@ type DynamoDBEvent struct { Records []DynamoDBEventRecord `json:"Records"` } -// DynamoDbEventRecord stores information about each record of a DynamoDb stream event +// DynamoDBTimeWindowEvent represents an Amazon Dynamodb event when using time windows +// ref. https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-windows +type DynamoDBTimeWindowEvent struct { + DynamoDBEvent + TimeWindowProperties +} + +// DynamoDBTimeWindowEventResponse is the outer structure to report batch item failures for DynamoDBTimeWindowEvent. +type DynamoDBTimeWindowEventResponse struct { + TimeWindowEventResponseProperties + BatchItemFailures []DynamoDBBatchItemFailure `json:"batchItemFailures"` +} + +// DynamoDBEventRecord stores information about each record of a DynamoDB stream event type DynamoDBEventRecord struct { // The region in which the GetRecords request was received. AWSRegion string `json:"awsRegion"` @@ -43,7 +56,7 @@ type DynamoDBEventRecord struct { EventVersion string `json:"eventVersion"` // The event source ARN of DynamoDB - EventSourceArn string `json:"eventSourceARN"` + EventSourceArn string `json:"eventSourceARN"` //nolint: stylecheck // Items that are deleted by the Time to Live process after expiration have // the following fields: @@ -63,7 +76,7 @@ type DynamoDBUserIdentity struct { PrincipalID string `json:"principalId"` } -// A description of a single data modification that was performed on an item +// DynamoDBStreamRecord represents a description of a single data modification that was performed on an item // in a DynamoDB table. type DynamoDBStreamRecord struct { diff --git a/vendor/github.com/aws/aws-lambda-go/events/ecr_scan.go b/vendor/github.com/aws/aws-lambda-go/events/ecr_scan.go new file mode 100644 index 0000000..d38ad8a --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/ecr_scan.go @@ -0,0 +1,30 @@ +package events + +type ECRScanEvent struct { + Version string `json:"version"` + ID string `json:"id"` + DetailType string `json:"detail-type"` + Source string `json:"source"` + Time string `json:"time"` + Region string `json:"region"` + Resources []string `json:"resources"` + Account string `json:"account"` + Detail ECRScanEventDetailType `json:"detail"` +} + +type ECRScanEventDetailType struct { + ScanStatus string `json:"scan-status"` + RepositoryName string `json:"repository-name"` + FindingSeverityCounts ECRScanEventFindingSeverityCounts `json:"finding-severity-counts"` + ImageDigest string `json:"image-digest"` + ImageTags []string `json:"image-tags"` +} + +type ECRScanEventFindingSeverityCounts struct { + Critical int64 `json:"CRITICAL"` + High int64 `json:"HIGH"` + Medium int64 `json:"MEDIUM"` + Low int64 `json:"LOW"` + Informational int64 `json:"INFORMATIONAL"` + Undefined int64 `json:"UNDEFINED"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/epoch_time.go b/vendor/github.com/aws/aws-lambda-go/events/epoch_time.go index b0e48a0..59e4e1d 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/epoch_time.go +++ b/vendor/github.com/aws/aws-lambda-go/events/epoch_time.go @@ -7,6 +7,11 @@ import ( "time" ) +// RFC3339EpochTime serializes a time.Time in JSON as an ISO 8601 string. +type RFC3339EpochTime struct { + time.Time +} + // SecondsEpochTime serializes a time.Time in JSON as a UNIX epoch time in seconds type SecondsEpochTime struct { time.Time @@ -57,3 +62,24 @@ func (e *MilliSecondsEpochTime) UnmarshalJSON(b []byte) error { *e = MilliSecondsEpochTime{time.Unix(epoch/1000, (epoch%1000)*1000000)} return nil } + +func (e RFC3339EpochTime) MarshalJSON() ([]byte, error) { + isoTimestampStr := e.Format(time.RFC3339) + return json.Marshal(isoTimestampStr) +} + +func (e *RFC3339EpochTime) UnmarshalJSON(b []byte) error { + var isoTimestampStr string + err := json.Unmarshal(b, &isoTimestampStr) + if err != nil { + return err + } + + parsed, err := time.Parse(time.RFC3339, isoTimestampStr) + if err != nil { + return err + } + + *e = RFC3339EpochTime{parsed} + return nil +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/firehose.go b/vendor/github.com/aws/aws-lambda-go/events/firehose.go index 293974e..85b8fd1 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/firehose.go +++ b/vendor/github.com/aws/aws-lambda-go/events/firehose.go @@ -4,16 +4,18 @@ package events // KinesisFirehoseEvent represents the input event from Amazon Kinesis Firehose. It is used as the input parameter. type KinesisFirehoseEvent struct { - InvocationID string `json:"invocationId"` - DeliveryStreamArn string `json:"deliveryStreamArn"` - Region string `json:"region"` - Records []KinesisFirehoseEventRecord `json:"records"` + InvocationID string `json:"invocationId"` + DeliveryStreamArn string `json:"deliveryStreamArn"` //nolint: stylecheck + SourceKinesisStreamArn string `json:"sourceKinesisStreamArn"` //nolint: stylecheck + Region string `json:"region"` + Records []KinesisFirehoseEventRecord `json:"records"` } type KinesisFirehoseEventRecord struct { - RecordID string `json:"recordId"` - ApproximateArrivalTimestamp MilliSecondsEpochTime `json:"approximateArrivalTimestamp"` - Data []byte `json:"data"` + RecordID string `json:"recordId"` + ApproximateArrivalTimestamp MilliSecondsEpochTime `json:"approximateArrivalTimestamp"` + Data []byte `json:"data"` + KinesisFirehoseRecordMetadata KinesisFirehoseRecordMetadata `json:"kinesisRecordMetadata"` } // Constants used for describing the transformation result @@ -28,7 +30,20 @@ type KinesisFirehoseResponse struct { } type KinesisFirehoseResponseRecord struct { - RecordID string `json:"recordId"` - Result string `json:"result"` // The status of the transformation. May be TransformedStateOk, TransformedStateDropped or TransformedStateProcessingFailed - Data []byte `json:"data"` + RecordID string `json:"recordId"` + Result string `json:"result"` // The status of the transformation. May be TransformedStateOk, TransformedStateDropped or TransformedStateProcessingFailed + Data []byte `json:"data"` + Metadata KinesisFirehoseResponseRecordMetadata `json:"metadata"` +} + +type KinesisFirehoseResponseRecordMetadata struct { + PartitionKeys map[string]string `json:"partitionKeys"` +} + +type KinesisFirehoseRecordMetadata struct { + ShardID string `json:"shardId"` + PartitionKey string `json:"partitionKey"` + SequenceNumber string `json:"sequenceNumber"` + SubsequenceNumber int64 `json:"subsequenceNumber"` + ApproximateArrivalTimestamp MilliSecondsEpochTime `json:"approximateArrivalTimestamp"` } diff --git a/vendor/github.com/aws/aws-lambda-go/events/iam.go b/vendor/github.com/aws/aws-lambda-go/events/iam.go new file mode 100644 index 0000000..090530d --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/iam.go @@ -0,0 +1,14 @@ +package events + +// IAMPolicyDocument represents an IAM policy document. +type IAMPolicyDocument struct { + Version string + Statement []IAMPolicyStatement +} + +// IAMPolicyStatement represents one statement from IAM policy with action, effect and resource. +type IAMPolicyStatement struct { + Action []string + Effect string + Resource []string +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/iot.go b/vendor/github.com/aws/aws-lambda-go/events/iot.go new file mode 100644 index 0000000..afff702 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/iot.go @@ -0,0 +1,46 @@ +package events + +// IoTCoreCustomAuthorizerRequest represents the request to an IoT Core custom authorizer. +// See https://docs.aws.amazon.com/iot/latest/developerguide/config-custom-auth.html +type IoTCoreCustomAuthorizerRequest struct { + Token string `json:"token"` + SignatureVerified bool `json:"signatureVerified"` + Protocols []string `json:"protocols"` + ProtocolData *IoTCoreProtocolData `json:"protocolData,omitempty"` + ConnectionMetadata *IoTCoreConnectionMetadata `json:"connectionMetadata,omitempty"` +} + +type IoTCoreProtocolData struct { + TLS *IoTCoreTLSContext `json:"tls,omitempty"` + HTTP *IoTCoreHTTPContext `json:"http,omitempty"` + MQTT *IoTCoreMQTTContext `json:"mqtt,omitempty"` +} + +type IoTCoreTLSContext struct { + ServerName string `json:"serverName"` +} + +type IoTCoreHTTPContext struct { + Headers map[string]string `json:"headers,omitempty"` + QueryString string `json:"queryString"` +} + +type IoTCoreMQTTContext struct { + ClientID string `json:"clientId"` + Password []byte `json:"password"` + Username string `json:"username"` +} + +type IoTCoreConnectionMetadata struct { + ID string `json:"id"` +} + +// IoTCoreCustomAuthorizerResponse represents the response from an IoT Core custom authorizer. +// See https://docs.aws.amazon.com/iot/latest/developerguide/config-custom-auth.html +type IoTCoreCustomAuthorizerResponse struct { + IsAuthenticated bool `json:"isAuthenticated"` + PrincipalID string `json:"principalId"` + DisconnectAfterInSeconds uint32 `json:"disconnectAfterInSeconds"` + RefreshAfterInSeconds uint32 `json:"refreshAfterInSeconds"` + PolicyDocuments []*IAMPolicyDocument `json:"policyDocuments"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/iot_1_click.go b/vendor/github.com/aws/aws-lambda-go/events/iot_1_click.go new file mode 100644 index 0000000..b2e0d84 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/iot_1_click.go @@ -0,0 +1,34 @@ +// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +// IoTOneClickEvent represents a click event published by clicking button type +// device. +type IoTOneClickEvent struct { + DeviceEvent IoTOneClickDeviceEvent `json:"deviceEvent"` + DeviceInfo IoTOneClickDeviceInfo `json:"deviceInfo"` + PlacementInfo IoTOneClickPlacementInfo `json:"placementInfo"` +} + +type IoTOneClickDeviceEvent struct { + ButtonClicked IoTOneClickButtonClicked `json:"buttonClicked"` +} + +type IoTOneClickButtonClicked struct { + ClickType string `json:"clickType"` + ReportedTime string `json:"reportedTime"` +} + +type IoTOneClickDeviceInfo struct { + Attributes map[string]string `json:"attributes"` + Type string `json:"type"` + DeviceID string `json:"deviceId"` + RemainingLife float64 `json:"remainingLife"` +} + +type IoTOneClickPlacementInfo struct { + ProjectName string `json:"projectName"` + PlacementName string `json:"placementName"` + Attributes map[string]string `json:"attributes"` + Devices map[string]string `json:"devices"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/iot_deprecated.go b/vendor/github.com/aws/aws-lambda-go/events/iot_deprecated.go new file mode 100644 index 0000000..9330c6b --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/iot_deprecated.go @@ -0,0 +1,30 @@ +package events + +// IoTCustomAuthorizerRequest contains data coming in to a custom IoT device gateway authorizer function. +// Deprecated: Use IoTCoreCustomAuthorizerRequest instead. IoTCustomAuthorizerRequest does not correctly model the request schema +type IoTCustomAuthorizerRequest struct { + HTTPContext *IoTHTTPContext `json:"httpContext,omitempty"` + MQTTContext *IoTMQTTContext `json:"mqttContext,omitempty"` + TLSContext *IoTTLSContext `json:"tlsContext,omitempty"` + AuthorizationToken string `json:"token"` + TokenSignature string `json:"tokenSignature"` +} + +// Deprecated: Use IoTCoreHTTPContext +type IoTHTTPContext IoTCoreHTTPContext + +// Deprecated: Use IoTCoreMQTTContext +type IoTMQTTContext IoTCoreMQTTContext + +// Deprecated: Use IotCoreTLSContext +type IoTTLSContext IoTCoreTLSContext + +// IoTCustomAuthorizerResponse represents the expected format of an IoT device gateway authorization response. +// Deprecated: Use IoTCoreCustomAuthorizerResponse. IoTCustomAuthorizerResponse does not correctly model the response schema. +type IoTCustomAuthorizerResponse struct { + IsAuthenticated bool `json:"isAuthenticated"` + PrincipalID string `json:"principalId"` + DisconnectAfterInSeconds int32 `json:"disconnectAfterInSeconds"` + RefreshAfterInSeconds int32 `json:"refreshAfterInSeconds"` + PolicyDocuments []string `json:"policyDocuments"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/kafka.go b/vendor/github.com/aws/aws-lambda-go/events/kafka.go new file mode 100644 index 0000000..12d1709 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/kafka.go @@ -0,0 +1,21 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +type KafkaEvent struct { + EventSource string `json:"eventSource"` + EventSourceARN string `json:"eventSourceArn"` + Records map[string][]KafkaRecord `json:"records"` + BootstrapServers string `json:"bootstrapServers"` +} + +type KafkaRecord struct { + Topic string `json:"topic"` + Partition int64 `json:"partition"` + Offset int64 `json:"offset"` + Timestamp MilliSecondsEpochTime `json:"timestamp"` + TimestampType string `json:"timestampType"` + Key string `json:"key,omitempty"` + Value string `json:"value,omitempty"` + Headers []map[string][]byte `json:"headers"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/kinesis.go b/vendor/github.com/aws/aws-lambda-go/events/kinesis.go index 2b65d76..41bae7a 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/kinesis.go +++ b/vendor/github.com/aws/aws-lambda-go/events/kinesis.go @@ -6,14 +6,27 @@ type KinesisEvent struct { Records []KinesisEventRecord `json:"Records"` } +// KinesisTimeWindowEvent represents an Amazon Dynamodb event when using time windows +// ref. https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-windows +type KinesisTimeWindowEvent struct { + KinesisEvent + TimeWindowProperties +} + +// KinesisTimeWindowEventResponse is the outer structure to report batch item failures for KinesisTimeWindowEvent. +type KinesisTimeWindowEventResponse struct { + TimeWindowEventResponseProperties + BatchItemFailures []KinesisBatchItemFailure `json:"batchItemFailures"` +} + type KinesisEventRecord struct { - AwsRegion string `json:"awsRegion"` + AwsRegion string `json:"awsRegion"` //nolint: stylecheck EventID string `json:"eventID"` EventName string `json:"eventName"` EventSource string `json:"eventSource"` - EventSourceArn string `json:"eventSourceARN"` + EventSourceArn string `json:"eventSourceARN"` //nolint: stylecheck EventVersion string `json:"eventVersion"` - InvokeIdentityArn string `json:"invokeIdentityArn"` + InvokeIdentityArn string `json:"invokeIdentityArn"` //nolint: stylecheck Kinesis KinesisRecord `json:"kinesis"` } diff --git a/vendor/github.com/aws/aws-lambda-go/events/kinesis_analytics.go b/vendor/github.com/aws/aws-lambda-go/events/kinesis_analytics.go new file mode 100644 index 0000000..d44a951 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/kinesis_analytics.go @@ -0,0 +1,28 @@ +// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +type KinesisAnalyticsOutputDeliveryEvent struct { + InvocationID string `json:"invocationId"` + ApplicationARN string `json:"applicationArn"` + Records []KinesisAnalyticsOutputDeliveryEventRecord `json:"records"` +} + +type KinesisAnalyticsOutputDeliveryEventRecord struct { + RecordID string `json:"recordId"` + Data []byte `json:"data"` +} + +type KinesisAnalyticsOutputDeliveryResponse struct { + Records []KinesisAnalyticsOutputDeliveryResponseRecord `json:"records"` +} + +const ( + KinesisAnalyticsOutputDeliveryOK = "Ok" + KinesisAnalyticsOutputDeliveryFailed = "DeliveryFailed" +) + +type KinesisAnalyticsOutputDeliveryResponseRecord struct { + RecordID string `json:"recordId"` + Result string `json:"result"` //possible values include Ok and DeliveryFailed +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/lambda_function_urls.go b/vendor/github.com/aws/aws-lambda-go/events/lambda_function_urls.go new file mode 100644 index 0000000..36be4fb --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/lambda_function_urls.go @@ -0,0 +1,61 @@ +// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +// LambdaFunctionURLRequest contains data coming from the HTTP request to a Lambda Function URL. +type LambdaFunctionURLRequest struct { + Version string `json:"version"` // Version is expected to be `"2.0"` + RawPath string `json:"rawPath"` + RawQueryString string `json:"rawQueryString"` + Cookies []string `json:"cookies,omitempty"` + Headers map[string]string `json:"headers"` + QueryStringParameters map[string]string `json:"queryStringParameters,omitempty"` + RequestContext LambdaFunctionURLRequestContext `json:"requestContext"` + Body string `json:"body,omitempty"` + IsBase64Encoded bool `json:"isBase64Encoded"` +} + +// LambdaFunctionURLRequestContext contains the information to identify the AWS account and resources invoking the Lambda function. +type LambdaFunctionURLRequestContext struct { + AccountID string `json:"accountId"` + RequestID string `json:"requestId"` + Authorizer *LambdaFunctionURLRequestContextAuthorizerDescription `json:"authorizer,omitempty"` + APIID string `json:"apiId"` // APIID is the Lambda URL ID + DomainName string `json:"domainName"` // DomainName is of the format `".lambda-url..on.aws"` + DomainPrefix string `json:"domainPrefix"` // DomainPrefix is the Lambda URL ID + Time string `json:"time"` + TimeEpoch int64 `json:"timeEpoch"` + HTTP LambdaFunctionURLRequestContextHTTPDescription `json:"http"` +} + +// LambdaFunctionURLRequestContextAuthorizerDescription contains authorizer information for the request context. +type LambdaFunctionURLRequestContextAuthorizerDescription struct { + IAM *LambdaFunctionURLRequestContextAuthorizerIAMDescription `json:"iam,omitempty"` +} + +// LambdaFunctionURLRequestContextAuthorizerIAMDescription contains IAM information for the request context. +type LambdaFunctionURLRequestContextAuthorizerIAMDescription struct { + AccessKey string `json:"accessKey"` + AccountID string `json:"accountId"` + CallerID string `json:"callerId"` + UserARN string `json:"userArn"` + UserID string `json:"userId"` +} + +// LambdaFunctionURLRequestContextHTTPDescription contains HTTP information for the request context. +type LambdaFunctionURLRequestContextHTTPDescription struct { + Method string `json:"method"` + Path string `json:"path"` + Protocol string `json:"protocol"` + SourceIP string `json:"sourceIp"` + UserAgent string `json:"userAgent"` +} + +// LambdaFunctionURLResponse configures the HTTP response to be returned by Lambda Function URL for the request. +type LambdaFunctionURLResponse struct { + StatusCode int `json:"statusCode"` + Headers map[string]string `json:"headers"` + Body string `json:"body"` + IsBase64Encoded bool `json:"isBase64Encoded"` + Cookies []string `json:"cookies"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/lex.go b/vendor/github.com/aws/aws-lambda-go/events/lex.go index 28590a8..c3ca21f 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/lex.go +++ b/vendor/github.com/aws/aws-lambda-go/events/lex.go @@ -1,16 +1,18 @@ package events type LexEvent struct { - MessageVersion string `json:"messageVersion,omitempty"` - InvocationSource string `json:"invocationSource,omitempty"` - UserID string `json:"userId,omitempty"` - InputTranscript string `json:"inputTranscript,omitempty"` - SessionAttributes map[string]string `json:"sessionAttributes,omitempty"` - RequestAttributes map[string]string `json:"requestAttributes,omitempty"` - Bot *LexBot `json:"bot,omitempty"` - OutputDialogMode string `json:"outputDialogMode,omitempty"` - CurrentIntent *LexCurrentIntent `json:"currentIntent,omitempty"` - DialogAction *LexDialogAction `json:"dialogAction,omitempty"` + MessageVersion string `json:"messageVersion,omitempty"` + InvocationSource string `json:"invocationSource,omitempty"` + UserID string `json:"userId,omitempty"` + InputTranscript string `json:"inputTranscript,omitempty"` + SessionAttributes SessionAttributes `json:"sessionAttributes,omitempty"` + RequestAttributes map[string]string `json:"requestAttributes,omitempty"` + Bot *LexBot `json:"bot,omitempty"` + OutputDialogMode string `json:"outputDialogMode,omitempty"` + CurrentIntent *LexCurrentIntent `json:"currentIntent,omitempty"` + AlternativeIntents []LexAlternativeIntents `json:"alternativeIntents,omitempty"` + // Deprecated: the DialogAction field is never populated by Lex events + DialogAction *LexDialogAction `json:"dialogAction,omitempty"` } type LexBot struct { @@ -20,10 +22,19 @@ type LexBot struct { } type LexCurrentIntent struct { - Name string `json:"name,omitempty"` - Slots Slots `json:"slots,omitempty"` - SlotDetails map[string]SlotDetail `json:"slotDetails,omitempty"` - ConfirmationStatus string `json:"confirmationStatus,omitempty"` + Name string `json:"name,omitempty"` + NLUIntentConfidenceScore float64 `json:"nluIntentConfidenceScore,omitempty"` + Slots Slots `json:"slots,omitempty"` + SlotDetails map[string]SlotDetail `json:"slotDetails,omitempty"` + ConfirmationStatus string `json:"confirmationStatus,omitempty"` +} + +type LexAlternativeIntents struct { + Name string `json:"name,omitempty"` + NLUIntentConfidenceScore float64 `json:"nluIntentConfidenceScore,omitempty"` + Slots Slots `json:"slots,omitempty"` + SlotDetails map[string]SlotDetail `json:"slotDetails,omitempty"` + ConfirmationStatus string `json:"confirmationStatus,omitempty"` } type SlotDetail struct { @@ -41,8 +52,15 @@ type LexDialogAction struct { ResponseCard *LexResponseCard `json:"responseCard,omitempty"` } +type SessionAttributes map[string]string + type Slots map[string]*string +type LexResponse struct { + SessionAttributes SessionAttributes `json:"sessionAttributes"` + DialogAction LexDialogAction `json:"dialogAction,omitempty"` +} + type LexResponseCard struct { Version int64 `json:"version,omitempty"` ContentType string `json:"contentType,omitempty"` @@ -60,5 +78,4 @@ type Attachment struct { func (h *LexEvent) Clear() { h.Bot = nil h.CurrentIntent = nil - h.DialogAction = nil } diff --git a/vendor/github.com/aws/aws-lambda-go/events/rabbitmq.go b/vendor/github.com/aws/aws-lambda-go/events/rabbitmq.go new file mode 100644 index 0000000..ce79f64 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/rabbitmq.go @@ -0,0 +1,31 @@ +package events + +type RabbitMQEvent struct { + EventSource string `json:"eventSource"` + EventSourceARN string `json:"eventSourceArn"` + MessagesByQueue map[string][]RabbitMQMessage `json:"rmqMessagesByQueue"` +} + +type RabbitMQMessage struct { + BasicProperties RabbitMQBasicProperties `json:"basicProperties"` + Data string `json:"data"` + Redelivered bool `json:"redelivered"` +} + +type RabbitMQBasicProperties struct { + ContentType string `json:"contentType"` + ContentEncoding *string `json:"contentEncoding"` + Headers map[string]interface{} `json:"headers"` // Application or header exchange table + DeliveryMode uint8 `json:"deliveryMode"` + Priority uint8 `json:"priority"` + CorrelationID *string `json:"correlationId"` + ReplyTo *string `json:"replyTo"` + Expiration string `json:"expiration"` + MessageID *string `json:"messageId"` + Timestamp string `json:"timestamp"` + Type *string `json:"type"` + UserID string `json:"userId"` + AppID *string `json:"appId"` + ClusterID *string `json:"clusterId"` + BodySize uint64 `json:"bodySize"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/s3.go b/vendor/github.com/aws/aws-lambda-go/events/s3.go index 5af3493..74c9daa 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/s3.go +++ b/vendor/github.com/aws/aws-lambda-go/events/s3.go @@ -3,13 +3,17 @@ package events import ( + "encoding/json" + "net/url" "time" ) +// S3Event which wrap an array of S3EventRecord type S3Event struct { Records []S3EventRecord `json:"Records"` } +// S3EventRecord which wrap record data type S3EventRecord struct { EventVersion string `json:"eventVersion"` EventSource string `json:"eventSource"` @@ -40,18 +44,32 @@ type S3Entity struct { type S3Bucket struct { Name string `json:"name"` OwnerIdentity S3UserIdentity `json:"ownerIdentity"` - Arn string `json:"arn"` + Arn string `json:"arn"` //nolint: stylecheck } type S3Object struct { Key string `json:"key"` - Size int64 `json:"size"` + Size int64 `json:"size,omitempty"` URLDecodedKey string `json:"urlDecodedKey"` VersionID string `json:"versionId"` ETag string `json:"eTag"` Sequencer string `json:"sequencer"` } +func (o *S3Object) UnmarshalJSON(data []byte) error { + type rawS3Object S3Object + if err := json.Unmarshal(data, (*rawS3Object)(o)); err != nil { + return err + } + key, err := url.QueryUnescape(o.Key) + if err != nil { + return err + } + o.URLDecodedKey = key + + return nil +} + type S3TestEvent struct { Service string `json:"Service"` Bucket string `json:"Bucket"` diff --git a/vendor/github.com/aws/aws-lambda-go/events/s3_batch_job.go b/vendor/github.com/aws/aws-lambda-go/events/s3_batch_job.go new file mode 100644 index 0000000..f2626ed --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/s3_batch_job.go @@ -0,0 +1,39 @@ +// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package events + +// S3BatchJobEvent encapsulates the detail of a s3 batch job +type S3BatchJobEvent struct { + InvocationSchemaVersion string `json:"invocationSchemaVersion"` + InvocationID string `json:"invocationId"` + Job S3BatchJob `json:"job"` + Tasks []S3BatchJobTask `json:"tasks"` +} + +// S3BatchJob whichs have the job id +type S3BatchJob struct { + ID string `json:"id"` +} + +// S3BatchJobTask represents one task in the s3 batch job and have all task details +type S3BatchJobTask struct { + TaskID string `json:"taskId"` + S3Key string `json:"s3Key"` + S3VersionID string `json:"s3VersionId"` + S3BucketARN string `json:"s3BucketArn"` +} + +// S3BatchJobResponse is the response of a iven s3 batch job with the results +type S3BatchJobResponse struct { + InvocationSchemaVersion string `json:"invocationSchemaVersion"` + TreatMissingKeysAs string `json:"treatMissingKeysAs"` + InvocationID string `json:"invocationId"` + Results []S3BatchJobResult `json:"results"` +} + +// S3BatchJobResult represents the result of a given task +type S3BatchJobResult struct { + TaskID string `json:"taskId"` + ResultCode string `json:"resultCode"` + ResultString string `json:"resultString"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/ses.go b/vendor/github.com/aws/aws-lambda-go/events/ses.go index b665ce1..ff89985 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/ses.go +++ b/vendor/github.com/aws/aws-lambda-go/events/ses.go @@ -34,7 +34,7 @@ type SimpleEmailReceipt struct { SpamVerdict SimpleEmailVerdict `json:"spamVerdict"` DKIMVerdict SimpleEmailVerdict `json:"dkimVerdict"` DMARCVerdict SimpleEmailVerdict `json:"dmarcVerdict"` - DMARCPolicy SimpleEmailVerdict `json:"dmarcPolicy"` + DMARCPolicy string `json:"dmarcPolicy"` SPFVerdict SimpleEmailVerdict `json:"spfVerdict"` VirusVerdict SimpleEmailVerdict `json:"virusVerdict"` Action SimpleEmailReceiptAction `json:"action"` @@ -55,10 +55,22 @@ type SimpleEmailCommonHeaders struct { Subject string `json:"subject"` } +// SimpleEmailReceiptAction is a logical union of fields present in all action +// Types. For example, the FunctionARN and InvocationType fields are only +// present for the Lambda Type, and the BucketName and ObjectKey fields are only +// present for the S3 Type. type SimpleEmailReceiptAction struct { - Type string `json:"type"` - InvocationType string `json:"invocationType"` - FunctionArn string `json:"functionArn"` + Type string `json:"type"` + TopicARN string `json:"topicArn,omitempty"` + BucketName string `json:"bucketName,omitempty"` + ObjectKey string `json:"objectKey,omitempty"` + SMTPReplyCode string `json:"smtpReplyCode,omitempty"` + StatusCode string `json:"statusCode,omitempty"` + Message string `json:"message,omitempty"` + Sender string `json:"sender,omitempty"` + InvocationType string `json:"invocationType,omitempty"` + FunctionARN string `json:"functionArn,omitempty"` + OrganizationARN string `json:"organizationArn,omitempty"` } type SimpleEmailVerdict struct { diff --git a/vendor/github.com/aws/aws-lambda-go/events/sns.go b/vendor/github.com/aws/aws-lambda-go/events/sns.go index 9b00bd2..6c75df7 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/sns.go +++ b/vendor/github.com/aws/aws-lambda-go/events/sns.go @@ -12,7 +12,7 @@ type SNSEvent struct { type SNSEventRecord struct { EventVersion string `json:"EventVersion"` - EventSubscriptionArn string `json:"EventSubscriptionArn"` + EventSubscriptionArn string `json:"EventSubscriptionArn"` //nolint: stylecheck EventSource string `json:"EventSource"` SNS SNSEntity `json:"Sns"` } @@ -21,7 +21,7 @@ type SNSEntity struct { Signature string `json:"Signature"` MessageID string `json:"MessageId"` Type string `json:"Type"` - TopicArn string `json:"TopicArn"` + TopicArn string `json:"TopicArn"` //nolint: stylecheck MessageAttributes map[string]interface{} `json:"MessageAttributes"` SignatureVersion string `json:"SignatureVersion"` Timestamp time.Time `json:"Timestamp"` @@ -30,3 +30,59 @@ type SNSEntity struct { UnsubscribeURL string `json:"UnsubscribeUrl"` Subject string `json:"Subject"` } + +type CloudWatchAlarmSNSPayload struct { + AlarmName string `json:"AlarmName"` + AlarmDescription string `json:"AlarmDescription"` + AWSAccountID string `json:"AWSAccountId"` + NewStateValue string `json:"NewStateValue"` + NewStateReason string `json:"NewStateReason"` + StateChangeTime string `json:"StateChangeTime"` + Region string `json:"Region"` + AlarmARN string `json:"AlarmArn"` + OldStateValue string `json:"OldStateValue"` + Trigger CloudWatchAlarmTrigger `json:"Trigger"` +} + +type CloudWatchAlarmTrigger struct { + Period int64 `json:"Period"` + EvaluationPeriods int64 `json:"EvaluationPeriods"` + ComparisonOperator string `json:"ComparisonOperator"` + Threshold float64 `json:"Threshold"` + TreatMissingData string `json:"TreatMissingData"` + EvaluateLowSampleCountPercentile string `json:"EvaluateLowSampleCountPercentile"` + Metrics []CloudWatchMetricDataQuery `json:"Metrics,omitempty"` + MetricName string `json:"MetricName,omitempty"` + Namespace string `json:"Namespace,omitempty"` + StatisticType string `json:"StatisticType,omitempty"` + Statistic string `json:"Statistic,omitempty"` + Unit string `json:"Unit,omitempty"` + Dimensions []CloudWatchDimension `json:"Dimensions,omitempty"` +} + +type CloudWatchMetricDataQuery struct { + Expression string `json:"Expression,omitempty"` + ID string `json:"Id"` + Label string `json:"Label,omitempty"` + MetricStat CloudWatchMetricStat `json:"MetricStat,omitempty"` + Period int64 `json:"Period,omitempty"` + ReturnData bool `json:"ReturnData,omitempty"` +} + +type CloudWatchMetricStat struct { + Metric CloudWatchMetric `json:"Metric"` + Period int64 `json:"Period"` + Stat string `json:"Stat"` + Unit string `json:"Unit,omitempty"` +} + +type CloudWatchMetric struct { + Dimensions []CloudWatchDimension `json:"Dimensions,omitempty"` + MetricName string `json:"MetricName,omitempty"` + Namespace string `json:"Namespace,omitempty"` +} + +type CloudWatchDimension struct { + Name string `json:"name"` + Value string `json:"value"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/sqs.go b/vendor/github.com/aws/aws-lambda-go/events/sqs.go index ea1bf7b..1071dfe 100644 --- a/vendor/github.com/aws/aws-lambda-go/events/sqs.go +++ b/vendor/github.com/aws/aws-lambda-go/events/sqs.go @@ -7,7 +7,7 @@ type SQSEvent struct { } type SQSMessage struct { - MessageId string `json:"messageId"` + MessageId string `json:"messageId"` //nolint: stylecheck ReceiptHandle string `json:"receiptHandle"` Body string `json:"body"` Md5OfBody string `json:"md5OfBody"` diff --git a/vendor/github.com/aws/aws-lambda-go/events/streams.go b/vendor/github.com/aws/aws-lambda-go/events/streams.go new file mode 100644 index 0000000..804b66b --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/streams.go @@ -0,0 +1,31 @@ +package events + +// KinesisEventResponse is the outer structure to report batch item failures for KinesisEvent. +type KinesisEventResponse struct { + BatchItemFailures []KinesisBatchItemFailure `json:"batchItemFailures"` +} + +// KinesisBatchItemFailure is the individual record which failed processing. +type KinesisBatchItemFailure struct { + ItemIdentifier string `json:"itemIdentifier"` +} + +// DynamoDBEventResponse is the outer structure to report batch item failures for DynamoDBEvent. +type DynamoDBEventResponse struct { + BatchItemFailures []DynamoDBBatchItemFailure `json:"batchItemFailures"` +} + +// DynamoDBBatchItemFailure is the individual record which failed processing. +type DynamoDBBatchItemFailure struct { + ItemIdentifier string `json:"itemIdentifier"` +} + +// SQSEventResponse is the outer structure to report batch item failures for SQSEvent. +type SQSEventResponse struct { + BatchItemFailures []SQSBatchItemFailure `json:"batchItemFailures"` +} + +// SQSBatchItemFailure is the individual record which failed processing. +type SQSBatchItemFailure struct { + ItemIdentifier string `json:"itemIdentifier"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/events/time_window.go b/vendor/github.com/aws/aws-lambda-go/events/time_window.go new file mode 100644 index 0000000..c98ea97 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/events/time_window.go @@ -0,0 +1,42 @@ +package events + +// Window is the object that captures the time window for the records in the event when using the tumbling windows feature +// Kinesis: https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-windows +// DDB: https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-windows +type Window struct { + Start RFC3339EpochTime `json:"start"` + End RFC3339EpochTime `json:"end"` +} + +// TimeWindowProperties is the object that captures properties that relate to the tumbling windows feature +// Kinesis: https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-windows +// DDB: https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-windows +type TimeWindowProperties struct { + // Time window for the records in the event. + Window Window `json:"window"` + + // State being built up to this invoke in the time window. + State map[string]string `json:"state"` + + // Shard id of the records + ShardID string `json:"shardId"` + + // The event source ARN of the service that generated the event (eg. DynamoDB or Kinesis) + EventSourceARN string `json:"eventSourceARN"` + + // Set to true for the last invoke of the time window. + // Subsequent invoke will start a new time window along with a fresh state. + IsFinalInvokeForWindow bool `json:"isFinalInvokeForWindow"` + + // Set to true if window is terminated prematurely. + // Subsequent invoke will continue the same window with a fresh state. + IsWindowTerminatedEarly bool `json:"isWindowTerminatedEarly"` +} + +// TimeWindowEventResponseProperties is the object that captures response properties that relate to the tumbling windows feature +// Kinesis: https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-windows +// DDB: https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-windows +type TimeWindowEventResponseProperties struct { + // State being built up to this invoke in the time window. + State map[string]string `json:"state"` +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/README.md b/vendor/github.com/aws/aws-lambda-go/lambda/README.md index 76f8679..dcaca6d 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambda/README.md +++ b/vendor/github.com/aws/aws-lambda-go/lambda/README.md @@ -1,3 +1,3 @@ # Overview -[![GoDoc](https://godoc.org/github.com/aws/aws-lambda-go/lambda?status.svg)](https://godoc.org/github.com/aws/aws-lambda-go/lambda) +[![Go Reference](https://pkg.go.dev/badge/github.com/aws/aws-lambda-go/lambda.svg)](https://pkg.go.dev/github.com/aws/aws-lambda-go/lambda) diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/entry.go b/vendor/github.com/aws/aws-lambda-go/lambda/entry.go index f55e61a..da82fab 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambda/entry.go +++ b/vendor/github.com/aws/aws-lambda-go/lambda/entry.go @@ -3,9 +3,8 @@ package lambda import ( + "context" "log" - "net" - "net/rpc" "os" ) @@ -15,30 +14,42 @@ import ( // // Rules: // -// * handler must be a function -// * handler may take between 0 and two arguments. -// * if there are two arguments, the first argument must satisfy the "context.Context" interface. -// * handler may return between 0 and two arguments. -// * if there are two return values, the second argument must be an error. -// * if there is one return value it must be an error. +// - handler must be a function +// - handler may take between 0 and two arguments. +// - if there are two arguments, the first argument must satisfy the "context.Context" interface. +// - handler may return between 0 and two values. +// - if there are two return values, the second return value must be an error. +// - if there is one return value it must be an error. // // Valid function signatures: // -// func () -// func () error -// func (TIn) error -// func () (TOut, error) -// func (TIn) (TOut, error) -// func (context.Context) error -// func (context.Context, TIn) error -// func (context.Context) (TOut, error) -// func (context.Context, TIn) (TOut, error) +// func () +// func (TIn) +// func () error +// func (TIn) error +// func () (TOut, error) +// func (TIn) (TOut, error) +// func (context.Context) +// func (context.Context) error +// func (context.Context) (TOut, error) +// func (context.Context, TIn) +// func (context.Context, TIn) error +// func (context.Context, TIn) (TOut, error) // // Where "TIn" and "TOut" are types compatible with the "encoding/json" standard library. // See https://golang.org/pkg/encoding/json/#Unmarshal for how deserialization behaves +// +// "TOut" may also implement the io.Reader interface. +// If "TOut" is both json serializable and implements io.Reader, then the json serialization is used. func Start(handler interface{}) { - wrappedHandler := NewHandler(handler) - StartHandler(wrappedHandler) + StartWithOptions(handler) +} + +// StartWithContext is the same as Start except sets the base context for the function. +// +// Deprecated: use lambda.StartWithOptions(handler, lambda.WithContext(ctx)) instead +func StartWithContext(ctx context.Context, handler interface{}) { + StartWithOptions(handler, WithContext(ctx)) } // StartHandler takes in a Handler wrapper interface which can be implemented either by a @@ -46,19 +57,57 @@ func Start(handler interface{}) { // // Handler implementation requires a single "Invoke()" function: // -// func Invoke(context.Context, []byte) ([]byte, error) +// func Invoke(context.Context, []byte) ([]byte, error) +// +// Deprecated: use lambda.Start(handler) instead func StartHandler(handler Handler) { - port := os.Getenv("_LAMBDA_SERVER_PORT") - lis, err := net.Listen("tcp", "localhost:"+port) - if err != nil { - log.Fatal(err) + StartWithOptions(handler) +} + +// StartWithOptions is the same as Start after the application of any handler options specified +func StartWithOptions(handler interface{}, options ...Option) { + start(newHandler(handler, options...)) +} + +type startFunction struct { + env string + f func(envValue string, handler Handler) error +} + +var ( + runtimeAPIStartFunction = &startFunction{ + env: "AWS_LAMBDA_RUNTIME_API", + f: startRuntimeAPILoop, } - function := new(Function) - function.handler = handler - err = rpc.Register(function) - if err != nil { - log.Fatal("failed to register handler function") + startFunctions = []*startFunction{runtimeAPIStartFunction} + + // This allows end to end testing of the Start functions, by tests overwriting this function to keep the program alive + logFatalf = log.Fatalf +) + +// StartHandlerWithContext is the same as StartHandler except sets the base context for the function. +// +// Handler implementation requires a single "Invoke()" function: +// +// func Invoke(context.Context, []byte) ([]byte, error) +// +// Deprecated: use lambda.StartWithOptions(handler, lambda.WithContext(ctx)) instead +func StartHandlerWithContext(ctx context.Context, handler Handler) { + StartWithOptions(handler, WithContext(ctx)) +} + +func start(handler *handlerOptions) { + var keys []string + for _, start := range startFunctions { + config := os.Getenv(start.env) + if config != "" { + // in normal operation, the start function never returns + // if it does, exit!, this triggers a restart of the lambda function + err := start.f(config, handler) + logFatalf("%v", err) + } + keys = append(keys, start.env) } - rpc.Accept(lis) - log.Fatal("accept should not have returned") + logFatalf("expected AWS Lambda environment variables %s are not defined", keys) + } diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/entry_generic.go b/vendor/github.com/aws/aws-lambda-go/lambda/entry_generic.go new file mode 100644 index 0000000..2970838 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/entry_generic.go @@ -0,0 +1,21 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved + +package lambda + +import ( + "context" +) + +// HandlerFunc represents a valid input with two arguments and two returns as described by Start +type HandlerFunc[TIn, TOut any] interface { + func(context.Context, TIn) (TOut, error) +} + +// StartHandlerFunc is the same as StartWithOptions except that it takes a generic input +// so that the function signature can be validated at compile time. +func StartHandlerFunc[TIn any, TOut any, H HandlerFunc[TIn, TOut]](handler H, options ...Option) { + start(newHandler(handler, options...)) +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/errors.go b/vendor/github.com/aws/aws-lambda-go/lambda/errors.go new file mode 100644 index 0000000..5d482d0 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/errors.go @@ -0,0 +1,46 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved + +package lambda + +import ( + "reflect" + + "github.com/aws/aws-lambda-go/lambda/messages" +) + +func getErrorType(err interface{}) string { + errorType := reflect.TypeOf(err) + if errorType.Kind() == reflect.Ptr { + return errorType.Elem().Name() + } + return errorType.Name() +} + +func lambdaErrorResponse(invokeError error) *messages.InvokeResponse_Error { + if ive, ok := invokeError.(messages.InvokeResponse_Error); ok { + return &ive + } + var errorName string + if errorType := reflect.TypeOf(invokeError); errorType.Kind() == reflect.Ptr { + errorName = errorType.Elem().Name() + } else { + errorName = errorType.Name() + } + return &messages.InvokeResponse_Error{ + Message: invokeError.Error(), + Type: errorName, + } +} + +func lambdaPanicResponse(err interface{}) *messages.InvokeResponse_Error { + if ive, ok := err.(messages.InvokeResponse_Error); ok { + return &ive + } + panicInfo := getPanicInfo(err) + return &messages.InvokeResponse_Error{ + Message: panicInfo.Message, + Type: getErrorType(err), + StackTrace: panicInfo.StackTrace, + ShouldExit: true, + } +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/extensions_api_client.go b/vendor/github.com/aws/aws-lambda-go/lambda/extensions_api_client.go new file mode 100644 index 0000000..c970389 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/extensions_api_client.go @@ -0,0 +1,90 @@ +package lambda + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "io/ioutil" //nolint: staticcheck + "net/http" +) + +const ( + headerExtensionName = "Lambda-Extension-Name" + headerExtensionIdentifier = "Lambda-Extension-Identifier" + extensionAPIVersion = "2020-01-01" +) + +type extensionAPIEventType string + +const ( + extensionInvokeEvent extensionAPIEventType = "INVOKE" //nolint:deadcode,unused,varcheck + extensionShutdownEvent extensionAPIEventType = "SHUTDOWN" //nolint:deadcode,unused,varcheck +) + +type extensionAPIClient struct { + baseURL string + httpClient *http.Client +} + +func newExtensionAPIClient(address string) *extensionAPIClient { + client := &http.Client{ + Timeout: 0, // connections to the extensions API are never expected to time out + } + endpoint := "http://" + address + "/" + extensionAPIVersion + "/extension/" + return &extensionAPIClient{ + baseURL: endpoint, + httpClient: client, + } +} + +func (c *extensionAPIClient) register(name string, events ...extensionAPIEventType) (string, error) { + url := c.baseURL + "register" + body, _ := json.Marshal(struct { + Events []extensionAPIEventType `json:"events"` + }{ + Events: events, + }) + + req, _ := http.NewRequest(http.MethodPost, url, bytes.NewReader(body)) + req.Header.Add(headerExtensionName, name) + res, err := c.httpClient.Do(req) + if err != nil { + return "", fmt.Errorf("failed to register extension: %v", err) + } + defer res.Body.Close() + _, _ = io.Copy(ioutil.Discard, res.Body) + + if res.StatusCode != http.StatusOK { + return "", fmt.Errorf("failed to register extension, got response status: %d %s", res.StatusCode, http.StatusText(res.StatusCode)) + } + + return res.Header.Get(headerExtensionIdentifier), nil +} + +type extensionEventResponse struct { + EventType extensionAPIEventType + // ... the rest not implemented +} + +func (c *extensionAPIClient) next(id string) (response extensionEventResponse, err error) { + url := c.baseURL + "event/next" + + req, _ := http.NewRequest(http.MethodGet, url, nil) + req.Header.Add(headerExtensionIdentifier, id) + res, err := c.httpClient.Do(req) + if err != nil { + err = fmt.Errorf("failed to get extension event: %v", err) + return + } + defer res.Body.Close() + _, _ = io.Copy(ioutil.Discard, res.Body) + + if res.StatusCode != http.StatusOK { + err = fmt.Errorf("failed to register extension, got response status: %d %s", res.StatusCode, http.StatusText(res.StatusCode)) + return + } + + err = json.NewDecoder(res.Body).Decode(&response) + return +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/function.go b/vendor/github.com/aws/aws-lambda-go/lambda/function.go deleted file mode 100644 index 6a2e337..0000000 --- a/vendor/github.com/aws/aws-lambda-go/lambda/function.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -package lambda - -import ( - "context" - "encoding/json" - "reflect" - "time" - - "github.com/aws/aws-lambda-go/lambda/messages" - "github.com/aws/aws-lambda-go/lambdacontext" -) - -type Function struct { - handler Handler -} - -func (fn *Function) Ping(req *messages.PingRequest, response *messages.PingResponse) error { - *response = messages.PingResponse{} - return nil -} - -func (fn *Function) Invoke(req *messages.InvokeRequest, response *messages.InvokeResponse) error { - defer func() { - if err := recover(); err != nil { - panicInfo := getPanicInfo(err) - response.Error = &messages.InvokeResponse_Error{ - Message: panicInfo.Message, - Type: getErrorType(err), - StackTrace: panicInfo.StackTrace, - ShouldExit: true, - } - } - }() - - deadline := time.Unix(req.Deadline.Seconds, req.Deadline.Nanos).UTC() - invokeContext, cancel := context.WithDeadline(context.Background(), deadline) - defer cancel() - - lc := &lambdacontext.LambdaContext{ - AwsRequestID: req.RequestId, - InvokedFunctionArn: req.InvokedFunctionArn, - Identity: lambdacontext.CognitoIdentity{ - CognitoIdentityID: req.CognitoIdentityId, - CognitoIdentityPoolID: req.CognitoIdentityPoolId, - }, - } - if len(req.ClientContext) > 0 { - if err := json.Unmarshal(req.ClientContext, &lc.ClientContext); err != nil { - response.Error = lambdaErrorResponse(err) - return nil - } - } - invokeContext = lambdacontext.NewContext(invokeContext, lc) - - invokeContext = context.WithValue(invokeContext, "x-amzn-trace-id", req.XAmznTraceId) - - payload, err := fn.handler.Invoke(invokeContext, req.Payload) - if err != nil { - response.Error = lambdaErrorResponse(err) - return nil - } - response.Payload = payload - return nil -} - -func getErrorType(err interface{}) string { - errorType := reflect.TypeOf(err) - if errorType.Kind() == reflect.Ptr { - return errorType.Elem().Name() - } - return errorType.Name() -} - -func lambdaErrorResponse(invokeError error) *messages.InvokeResponse_Error { - var errorName string - if errorType := reflect.TypeOf(invokeError); errorType.Kind() == reflect.Ptr { - errorName = errorType.Elem().Name() - } else { - errorName = errorType.Name() - } - return &messages.InvokeResponse_Error{ - Message: invokeError.Error(), - Type: errorName, - } -} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/handler.go b/vendor/github.com/aws/aws-lambda-go/lambda/handler.go index 96eeac2..e4cfaf7 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambda/handler.go +++ b/vendor/github.com/aws/aws-lambda-go/lambda/handler.go @@ -3,10 +3,15 @@ package lambda import ( + "bytes" "context" "encoding/json" + "errors" "fmt" + "io" + "io/ioutil" // nolint:staticcheck "reflect" + "strings" "github.com/aws/aws-lambda-go/lambda/handlertrace" ) @@ -15,79 +20,240 @@ type Handler interface { Invoke(ctx context.Context, payload []byte) ([]byte, error) } -// lambdaHandler is the generic function type -type lambdaHandler func(context.Context, []byte) (interface{}, error) +type handlerOptions struct { + handlerFunc + baseContext context.Context + jsonResponseEscapeHTML bool + jsonResponseIndentPrefix string + jsonResponseIndentValue string + enableSIGTERM bool + sigtermCallbacks []func() +} -// Invoke calls the handler, and serializes the response. -// If the underlying handler returned an error, or an error occurs during serialization, error is returned. -func (handler lambdaHandler) Invoke(ctx context.Context, payload []byte) ([]byte, error) { - response, err := handler(ctx, payload) - if err != nil { - return nil, err - } +type Option func(*handlerOptions) - responseBytes, err := json.Marshal(response) - if err != nil { - return nil, err - } +// WithContext is a HandlerOption that sets the base context for all invocations of the handler. +// +// Usage: +// +// lambda.StartWithOptions( +// func (ctx context.Context) (string, error) { +// return ctx.Value("foo"), nil +// }, +// lambda.WithContext(context.WithValue(context.Background(), "foo", "bar")) +// ) +func WithContext(ctx context.Context) Option { + return Option(func(h *handlerOptions) { + h.baseContext = ctx + }) +} - return responseBytes, nil +// WithSetEscapeHTML sets the SetEscapeHTML argument on the underlying json encoder +// +// Usage: +// +// lambda.StartWithOptions( +// func () (string, error) { +// return "hello!>", nil +// }, +// lambda.WithSetEscapeHTML(true), +// ) +func WithSetEscapeHTML(escapeHTML bool) Option { + return Option(func(h *handlerOptions) { + h.jsonResponseEscapeHTML = escapeHTML + }) } -func errorHandler(e error) lambdaHandler { - return func(ctx context.Context, event []byte) (interface{}, error) { - return nil, e - } +// WithSetIndent sets the SetIndent argument on the underling json encoder +// +// Usage: +// +// lambda.StartWithOptions( +// func (event any) (any, error) { +// return event, nil +// }, +// lambda.WithSetIndent(">"," "), +// ) +func WithSetIndent(prefix, indent string) Option { + return Option(func(h *handlerOptions) { + h.jsonResponseIndentPrefix = prefix + h.jsonResponseIndentValue = indent + }) } -func validateArguments(handler reflect.Type) (bool, error) { - handlerTakesContext := false - if handler.NumIn() > 2 { - return false, fmt.Errorf("handlers may not take more than two arguments, but handler takes %d", handler.NumIn()) - } else if handler.NumIn() > 0 { +// WithEnableSIGTERM enables SIGTERM behavior within the Lambda platform on container spindown. +// SIGKILL will occur ~500ms after SIGTERM. +// Optionally, an array of callback functions to run on SIGTERM may be provided. +// +// Usage: +// +// lambda.StartWithOptions( +// func (event any) (any, error) { +// return event, nil +// }, +// lambda.WithEnableSIGTERM(func() { +// log.Print("function container shutting down...") +// }) +// ) +func WithEnableSIGTERM(callbacks ...func()) Option { + return Option(func(h *handlerOptions) { + h.sigtermCallbacks = append(h.sigtermCallbacks, callbacks...) + h.enableSIGTERM = true + }) +} + +// handlerTakesContext returns whether the handler takes a context.Context as its first argument. +func handlerTakesContext(handler reflect.Type) (bool, error) { + switch handler.NumIn() { + case 0: + return false, nil + case 1: + contextType := reflect.TypeOf((*context.Context)(nil)).Elem() + argumentType := handler.In(0) + if argumentType.Kind() != reflect.Interface { + return false, nil + } + + // handlers like func(event any) are valid. + if argumentType.NumMethod() == 0 { + return false, nil + } + + if !contextType.Implements(argumentType) || !argumentType.Implements(contextType) { + return false, fmt.Errorf("handler takes an interface, but it is not context.Context: %q", argumentType.Name()) + } + return true, nil + case 2: contextType := reflect.TypeOf((*context.Context)(nil)).Elem() argumentType := handler.In(0) - handlerTakesContext = argumentType.Implements(contextType) - if handler.NumIn() > 1 && !handlerTakesContext { + if argumentType.Kind() != reflect.Interface || !contextType.Implements(argumentType) || !argumentType.Implements(contextType) { return false, fmt.Errorf("handler takes two arguments, but the first is not Context. got %s", argumentType.Kind()) } + return true, nil } - - return handlerTakesContext, nil + return false, fmt.Errorf("handlers may not take more than two arguments, but handler takes %d", handler.NumIn()) } func validateReturns(handler reflect.Type) error { errorType := reflect.TypeOf((*error)(nil)).Elem() - if handler.NumOut() > 2 { + + switch n := handler.NumOut(); { + case n > 2: return fmt.Errorf("handler may not return more than two values") - } else if handler.NumOut() > 1 { + case n > 1: if !handler.Out(1).Implements(errorType) { return fmt.Errorf("handler returns two values, but the second does not implement error") } - } else if handler.NumOut() == 1 { + case n == 1: if !handler.Out(0).Implements(errorType) { return fmt.Errorf("handler returns a single value, but it does not implement error") } } + return nil } // NewHandler creates a base lambda handler from the given handler function. The -// returned Handler performs JSON deserialization and deserialization, and -// delegates to the input handler function. The handler function parameter must -// satisfy the rules documented by Start. If handlerFunc is not a valid +// returned Handler performs JSON serialization and deserialization, and +// delegates to the input handler function. The handler function parameter must +// satisfy the rules documented by Start. If handlerFunc is not a valid // handler, the returned Handler simply reports the validation error. func NewHandler(handlerFunc interface{}) Handler { - if handlerFunc == nil { - return errorHandler(fmt.Errorf("handler is nil")) + return NewHandlerWithOptions(handlerFunc) +} + +// NewHandlerWithOptions creates a base lambda handler from the given handler function. The +// returned Handler performs JSON serialization and deserialization, and +// delegates to the input handler function. The handler function parameter must +// satisfy the rules documented by Start. If handlerFunc is not a valid +// handler, the returned Handler simply reports the validation error. +func NewHandlerWithOptions(handlerFunc interface{}, options ...Option) Handler { + return newHandler(handlerFunc, options...) +} + +func newHandler(handlerFunc interface{}, options ...Option) *handlerOptions { + if h, ok := handlerFunc.(*handlerOptions); ok { + return h + } + h := &handlerOptions{ + baseContext: context.Background(), + jsonResponseEscapeHTML: false, + jsonResponseIndentPrefix: "", + jsonResponseIndentValue: "", + } + for _, option := range options { + option(h) + } + if h.enableSIGTERM { + enableSIGTERM(h.sigtermCallbacks) + } + h.handlerFunc = reflectHandler(handlerFunc, h) + return h +} + +type handlerFunc func(context.Context, []byte) (io.Reader, error) + +// back-compat for the rpc mode +func (h handlerFunc) Invoke(ctx context.Context, payload []byte) ([]byte, error) { + response, err := h(ctx, payload) + if err != nil { + return nil, err + } + // if the response needs to be closed (ex: net.Conn, os.File), ensure it's closed before the next invoke to prevent a resource leak + if response, ok := response.(io.Closer); ok { + defer response.Close() + } + // optimization: if the response is a *bytes.Buffer, a copy can be eliminated + switch response := response.(type) { + case *jsonOutBuffer: + return response.Bytes(), nil + case *bytes.Buffer: + return response.Bytes(), nil + } + b, err := ioutil.ReadAll(response) + if err != nil { + return nil, err + } + return b, nil +} + +func errorHandler(err error) handlerFunc { + return func(_ context.Context, _ []byte) (io.Reader, error) { + return nil, err + } +} + +type jsonOutBuffer struct { + *bytes.Buffer +} + +func (j *jsonOutBuffer) ContentType() string { + return contentTypeJSON +} + +func reflectHandler(f interface{}, h *handlerOptions) handlerFunc { + if f == nil { + return errorHandler(errors.New("handler is nil")) } - handler := reflect.ValueOf(handlerFunc) - handlerType := reflect.TypeOf(handlerFunc) + + // back-compat: types with reciever `Invoke(context.Context, []byte) ([]byte, error)` need the return bytes wrapped + if handler, ok := f.(Handler); ok { + return func(ctx context.Context, payload []byte) (io.Reader, error) { + b, err := handler.Invoke(ctx, payload) + if err != nil { + return nil, err + } + return bytes.NewBuffer(b), nil + } + } + + handler := reflect.ValueOf(f) + handlerType := reflect.TypeOf(f) if handlerType.Kind() != reflect.Func { return errorHandler(fmt.Errorf("handler kind %s is not %s", handlerType.Kind(), reflect.Func)) } - takesContext, err := validateArguments(handlerType) + takesContext, err := handlerTakesContext(handlerType) if err != nil { return errorHandler(err) } @@ -96,7 +262,14 @@ func NewHandler(handlerFunc interface{}) Handler { return errorHandler(err) } - return lambdaHandler(func(ctx context.Context, payload []byte) (interface{}, error) { + out := &jsonOutBuffer{bytes.NewBuffer(nil)} + return func(ctx context.Context, payload []byte) (io.Reader, error) { + out.Reset() + in := bytes.NewBuffer(payload) + decoder := json.NewDecoder(in) + encoder := json.NewEncoder(out) + encoder.SetEscapeHTML(h.jsonResponseEscapeHTML) + encoder.SetIndent(h.jsonResponseIndentPrefix, h.jsonResponseIndentValue) trace := handlertrace.FromContext(ctx) @@ -108,8 +281,7 @@ func NewHandler(handlerFunc interface{}) Handler { if (handlerType.NumIn() == 1 && !takesContext) || handlerType.NumIn() == 2 { eventType := handlerType.In(handlerType.NumIn() - 1) event := reflect.New(eventType) - - if err := json.Unmarshal(payload, event.Interface()); err != nil { + if err := decoder.Decode(event.Interface()); err != nil { return nil, err } if nil != trace.RequestEvent { @@ -120,22 +292,42 @@ func NewHandler(handlerFunc interface{}) Handler { response := handler.Call(args) - // convert return values into (interface{}, error) - var err error + // return the error, if any if len(response) > 0 { - if errVal, ok := response[len(response)-1].Interface().(error); ok { - err = errVal + if errVal, ok := response[len(response)-1].Interface().(error); ok && errVal != nil { + return nil, errVal } } + // set the response value, if any var val interface{} if len(response) > 1 { val = response[0].Interface() - if nil != trace.ResponseEvent { trace.ResponseEvent(ctx, val) } } - return val, err - }) + // encode to JSON + if err := encoder.Encode(val); err != nil { + // if response is not JSON serializable, but the response type is a reader, return it as-is + if reader, ok := val.(io.Reader); ok { + return reader, nil + } + return nil, err + } + + // if response value is an io.Reader, return it as-is + if reader, ok := val.(io.Reader); ok { + // back-compat, don't return the reader if the value serialized to a non-empty json + if strings.HasPrefix(out.String(), "{}") { + return reader, nil + } + } + + // back-compat, strip the encoder's trailing newline unless WithSetIndent was used + if h.jsonResponseIndentValue == "" && h.jsonResponseIndentPrefix == "" { + out.Truncate(out.Len() - 1) + } + return out, nil + } } diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/invoke_loop.go b/vendor/github.com/aws/aws-lambda-go/lambda/invoke_loop.go new file mode 100644 index 0000000..9e2d659 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/invoke_loop.go @@ -0,0 +1,168 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved + +package lambda + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "log" + "os" + "strconv" + "time" + + "github.com/aws/aws-lambda-go/lambda/messages" + "github.com/aws/aws-lambda-go/lambdacontext" +) + +const ( + msPerS = int64(time.Second / time.Millisecond) + nsPerMS = int64(time.Millisecond / time.Nanosecond) +) + +// TODO: replace with time.UnixMillis after dropping version <1.17 from CI workflows +func unixMS(ms int64) time.Time { + return time.Unix(ms/msPerS, (ms%msPerS)*nsPerMS) +} + +// startRuntimeAPILoop will return an error if handling a particular invoke resulted in a non-recoverable error +func startRuntimeAPILoop(api string, handler Handler) error { + client := newRuntimeAPIClient(api) + h := newHandler(handler) + for { + invoke, err := client.next() + if err != nil { + return err + } + if err = handleInvoke(invoke, h); err != nil { + return err + } + } +} + +// handleInvoke returns an error if the function panics, or some other non-recoverable error occurred +func handleInvoke(invoke *invoke, handler *handlerOptions) error { + // set the deadline + deadline, err := parseDeadline(invoke) + if err != nil { + return reportFailure(invoke, lambdaErrorResponse(err)) + } + ctx, cancel := context.WithDeadline(handler.baseContext, deadline) + defer cancel() + + // set the invoke metadata values + lc := lambdacontext.LambdaContext{ + AwsRequestID: invoke.id, + InvokedFunctionArn: invoke.headers.Get(headerInvokedFunctionARN), + } + if err := parseClientContext(invoke, &lc.ClientContext); err != nil { + return reportFailure(invoke, lambdaErrorResponse(err)) + } + if err := parseCognitoIdentity(invoke, &lc.Identity); err != nil { + return reportFailure(invoke, lambdaErrorResponse(err)) + } + ctx = lambdacontext.NewContext(ctx, &lc) + + // set the trace id + traceID := invoke.headers.Get(headerTraceID) + os.Setenv("_X_AMZN_TRACE_ID", traceID) + // nolint:staticcheck + ctx = context.WithValue(ctx, "x-amzn-trace-id", traceID) + + // call the handler, marshal any returned error + response, invokeErr := callBytesHandlerFunc(ctx, invoke.payload, handler.handlerFunc) + if invokeErr != nil { + if err := reportFailure(invoke, invokeErr); err != nil { + return err + } + if invokeErr.ShouldExit { + return fmt.Errorf("calling the handler function resulted in a panic, the process should exit") + } + return nil + } + // if the response needs to be closed (ex: net.Conn, os.File), ensure it's closed before the next invoke to prevent a resource leak + if response, ok := response.(io.Closer); ok { + defer response.Close() + } + + // if the response defines a content-type, plumb it through + contentType := contentTypeBytes + type ContentType interface{ ContentType() string } + if response, ok := response.(ContentType); ok { + contentType = response.ContentType() + } + + if err := invoke.success(response, contentType); err != nil { + return fmt.Errorf("unexpected error occurred when sending the function functionResponse to the API: %v", err) + } + + return nil +} + +func reportFailure(invoke *invoke, invokeErr *messages.InvokeResponse_Error) error { + errorPayload := safeMarshal(invokeErr) + log.Printf("%s", errorPayload) + if err := invoke.failure(bytes.NewReader(errorPayload), contentTypeJSON); err != nil { + return fmt.Errorf("unexpected error occurred when sending the function error to the API: %v", err) + } + return nil +} + +func callBytesHandlerFunc(ctx context.Context, payload []byte, handler handlerFunc) (response io.Reader, invokeErr *messages.InvokeResponse_Error) { + defer func() { + if err := recover(); err != nil { + invokeErr = lambdaPanicResponse(err) + } + }() + response, err := handler(ctx, payload) + if err != nil { + return nil, lambdaErrorResponse(err) + } + return response, nil +} + +func parseDeadline(invoke *invoke) (time.Time, error) { + deadlineEpochMS, err := strconv.ParseInt(invoke.headers.Get(headerDeadlineMS), 10, 64) + if err != nil { + return time.Time{}, fmt.Errorf("failed to parse deadline: %v", err) + } + return unixMS(deadlineEpochMS), nil +} + +func parseCognitoIdentity(invoke *invoke, out *lambdacontext.CognitoIdentity) error { + cognitoIdentityJSON := invoke.headers.Get(headerCognitoIdentity) + if cognitoIdentityJSON != "" { + if err := json.Unmarshal([]byte(cognitoIdentityJSON), out); err != nil { + return fmt.Errorf("failed to unmarshal cognito identity json: %v", err) + } + } + return nil +} + +func parseClientContext(invoke *invoke, out *lambdacontext.ClientContext) error { + clientContextJSON := invoke.headers.Get(headerClientContext) + if clientContextJSON != "" { + if err := json.Unmarshal([]byte(clientContextJSON), out); err != nil { + return fmt.Errorf("failed to unmarshal client context json: %v", err) + } + } + return nil +} + +func safeMarshal(v interface{}) []byte { + payload, err := json.Marshal(v) + if err != nil { + v := &messages.InvokeResponse_Error{ + Type: "Runtime.SerializationError", + Message: err.Error(), + } + payload, err := json.Marshal(v) + if err != nil { + panic(err) // never reach + } + return payload + } + return payload +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/messages/README.md b/vendor/github.com/aws/aws-lambda-go/lambda/messages/README.md index 8bf6ef4..04eddfa 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambda/messages/README.md +++ b/vendor/github.com/aws/aws-lambda-go/lambda/messages/README.md @@ -1,3 +1,3 @@ # Overview -[![GoDoc](https://godoc.org/github.com/aws/aws-lambda-go/lambda/messages?status.svg)](https://godoc.org/github.com/aws/aws-lambda-go/lambda/messages) +[![Go Reference](https://pkg.go.dev/badge/github.com/aws/aws-lambda-go/lambda/messages.svg)](https://pkg.go.dev/github.com/aws/aws-lambda-go/lambda/messages) diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/messages/messages.go b/vendor/github.com/aws/aws-lambda-go/lambda/messages/messages.go index d2ac65b..ea63001 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambda/messages/messages.go +++ b/vendor/github.com/aws/aws-lambda-go/lambda/messages/messages.go @@ -2,25 +2,29 @@ package messages +import "fmt" + type PingRequest struct { } type PingResponse struct { } +//nolint:stylecheck type InvokeRequest_Timestamp struct { Seconds int64 Nanos int64 } +//nolint:stylecheck type InvokeRequest struct { Payload []byte - RequestId string + RequestId string //nolint:stylecheck XAmznTraceId string Deadline InvokeRequest_Timestamp InvokedFunctionArn string - CognitoIdentityId string - CognitoIdentityPoolId string + CognitoIdentityId string //nolint:stylecheck + CognitoIdentityPoolId string //nolint:stylecheck ClientContext []byte } @@ -29,13 +33,19 @@ type InvokeResponse struct { Error *InvokeResponse_Error } +//nolint:stylecheck type InvokeResponse_Error struct { - Message string - Type string - StackTrace []*InvokeResponse_Error_StackFrame - ShouldExit bool + Message string `json:"errorMessage"` + Type string `json:"errorType"` + StackTrace []*InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` + ShouldExit bool `json:"-"` +} + +func (e InvokeResponse_Error) Error() string { + return fmt.Sprintf("%#v", e) } +//nolint:stylecheck type InvokeResponse_Error_StackFrame struct { Path string `json:"path"` Line int32 `json:"line"` diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/rpc_function.go b/vendor/github.com/aws/aws-lambda-go/lambda/rpc_function.go new file mode 100644 index 0000000..0c8e798 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/rpc_function.go @@ -0,0 +1,114 @@ +// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +//go:build !lambda.norpc +// +build !lambda.norpc + +package lambda + +import ( + "context" + "encoding/json" + "errors" + "log" + "net" + "net/rpc" + "os" + "time" + + "github.com/aws/aws-lambda-go/lambda/messages" + "github.com/aws/aws-lambda-go/lambdacontext" +) + +func init() { + // Register `startFunctionRPC` to be run if the _LAMBDA_SERVER_PORT environment variable is set. + // This happens when the runtime for the function is configured as `go1.x`. + // The value of the environment variable will be passed as the first argument to `startFunctionRPC`. + // This allows users to save a little bit of coldstart time in the download, by the dependencies brought in for RPC support. + // The tradeoff is dropping compatibility with the RPC mode of the go1.x runtime. + // To drop the rpc dependencies, compile with `-tags lambda.norpc` + startFunctions = append([]*startFunction{{ + env: "_LAMBDA_SERVER_PORT", + f: startFunctionRPC, + }}, startFunctions...) +} + +func startFunctionRPC(port string, handler Handler) error { + lis, err := net.Listen("tcp", "localhost:"+port) + if err != nil { + log.Fatal(err) + } + err = rpc.Register(NewFunction(handler)) + if err != nil { + log.Fatal("failed to register handler function") + } + rpc.Accept(lis) + return errors.New("accept should not have returned") +} + +// Function struct which wrap the Handler +// +// Deprecated: The Function type is public for the go1.x runtime internal use of the net/rpc package +type Function struct { + handler *handlerOptions +} + +// NewFunction which creates a Function with a given Handler +// +// Deprecated: The Function type is public for the go1.x runtime internal use of the net/rpc package +func NewFunction(handler Handler) *Function { + return &Function{newHandler(handler)} +} + +// Ping method which given a PingRequest and a PingResponse parses the PingResponse +func (fn *Function) Ping(req *messages.PingRequest, response *messages.PingResponse) error { + *response = messages.PingResponse{} + return nil +} + +// Invoke method try to perform a command given an InvokeRequest and an InvokeResponse +func (fn *Function) Invoke(req *messages.InvokeRequest, response *messages.InvokeResponse) error { + defer func() { + if err := recover(); err != nil { + response.Error = lambdaPanicResponse(err) + } + }() + + deadline := time.Unix(req.Deadline.Seconds, req.Deadline.Nanos).UTC() + invokeContext, cancel := context.WithDeadline(fn.baseContext(), deadline) + defer cancel() + + lc := &lambdacontext.LambdaContext{ + AwsRequestID: req.RequestId, + InvokedFunctionArn: req.InvokedFunctionArn, + Identity: lambdacontext.CognitoIdentity{ + CognitoIdentityID: req.CognitoIdentityId, + CognitoIdentityPoolID: req.CognitoIdentityPoolId, + }, + } + if len(req.ClientContext) > 0 { + if err := json.Unmarshal(req.ClientContext, &lc.ClientContext); err != nil { + response.Error = lambdaErrorResponse(err) + return nil + } + } + invokeContext = lambdacontext.NewContext(invokeContext, lc) + + // nolint:staticcheck + invokeContext = context.WithValue(invokeContext, "x-amzn-trace-id", req.XAmznTraceId) + os.Setenv("_X_AMZN_TRACE_ID", req.XAmznTraceId) + + payload, err := fn.handler.Invoke(invokeContext, req.Payload) + if err != nil { + response.Error = lambdaErrorResponse(err) + return nil + } + response.Payload = payload + return nil +} + +func (fn *Function) baseContext() context.Context { + if fn.handler.baseContext != nil { + return fn.handler.baseContext + } + return context.Background() +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/runtime_api_client.go b/vendor/github.com/aws/aws-lambda-go/lambda/runtime_api_client.go new file mode 100644 index 0000000..a83c3ce --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/runtime_api_client.go @@ -0,0 +1,136 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved +// +// Runtime API documentation: https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html + +package lambda + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" //nolint: staticcheck + "log" + "net/http" + "runtime" +) + +const ( + headerAWSRequestID = "Lambda-Runtime-Aws-Request-Id" + headerDeadlineMS = "Lambda-Runtime-Deadline-Ms" + headerTraceID = "Lambda-Runtime-Trace-Id" + headerCognitoIdentity = "Lambda-Runtime-Cognito-Identity" + headerClientContext = "Lambda-Runtime-Client-Context" + headerInvokedFunctionARN = "Lambda-Runtime-Invoked-Function-Arn" + contentTypeJSON = "application/json" + contentTypeBytes = "application/octet-stream" + apiVersion = "2018-06-01" +) + +type runtimeAPIClient struct { + baseURL string + userAgent string + httpClient *http.Client + buffer *bytes.Buffer +} + +func newRuntimeAPIClient(address string) *runtimeAPIClient { + client := &http.Client{ + Timeout: 0, // connections to the runtime API are never expected to time out + } + endpoint := "http://" + address + "/" + apiVersion + "/runtime/invocation/" + userAgent := "aws-lambda-go/" + runtime.Version() + return &runtimeAPIClient{endpoint, userAgent, client, bytes.NewBuffer(nil)} +} + +type invoke struct { + id string + payload []byte + headers http.Header + client *runtimeAPIClient +} + +// success sends the response payload for an in-progress invocation. +// Notes: +// - An invoke is not complete until next() is called again! +func (i *invoke) success(body io.Reader, contentType string) error { + url := i.client.baseURL + i.id + "/response" + return i.client.post(url, body, contentType) +} + +// failure sends the payload to the Runtime API. This marks the function's invoke as a failure. +// Notes: +// - The execution of the function process continues, and is billed, until next() is called again! +// - A Lambda Function continues to be re-used for future invokes even after a failure. +// If the error is fatal (panic, unrecoverable state), exit the process immediately after calling failure() +func (i *invoke) failure(body io.Reader, contentType string) error { + url := i.client.baseURL + i.id + "/error" + return i.client.post(url, body, contentType) +} + +// next connects to the Runtime API and waits for a new invoke Request to be available. +// Note: After a call to Done() or Error() has been made, a call to next() will complete the in-flight invoke. +func (c *runtimeAPIClient) next() (*invoke, error) { + url := c.baseURL + "next" + req, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + return nil, fmt.Errorf("failed to construct GET request to %s: %v", url, err) + } + req.Header.Set("User-Agent", c.userAgent) + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get the next invoke: %v", err) + } + defer func() { + if err := resp.Body.Close(); err != nil { + log.Printf("runtime API client failed to close %s response body: %v", url, err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to GET %s: got unexpected status code: %d", url, resp.StatusCode) + } + + c.buffer.Reset() + _, err = c.buffer.ReadFrom(resp.Body) + if err != nil { + return nil, fmt.Errorf("failed to read the invoke payload: %v", err) + } + + return &invoke{ + id: resp.Header.Get(headerAWSRequestID), + payload: c.buffer.Bytes(), + headers: resp.Header, + client: c, + }, nil +} + +func (c *runtimeAPIClient) post(url string, body io.Reader, contentType string) error { + req, err := http.NewRequest(http.MethodPost, url, body) + if err != nil { + return fmt.Errorf("failed to construct POST request to %s: %v", url, err) + } + req.Header.Set("User-Agent", c.userAgent) + req.Header.Set("Content-Type", contentType) + + resp, err := c.httpClient.Do(req) + if err != nil { + return fmt.Errorf("failed to POST to %s: %v", url, err) + } + defer func() { + if err := resp.Body.Close(); err != nil { + log.Printf("runtime API client failed to close %s response body: %v", url, err) + } + }() + + if resp.StatusCode != http.StatusAccepted { + return fmt.Errorf("failed to POST to %s: got unexpected status code: %d", url, resp.StatusCode) + } + + _, err = io.Copy(ioutil.Discard, resp.Body) + if err != nil { + return fmt.Errorf("something went wrong reading the POST response from %s: %v", url, err) + } + + return nil +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambda/sigterm.go b/vendor/github.com/aws/aws-lambda-go/lambda/sigterm.go new file mode 100644 index 0000000..b742e91 --- /dev/null +++ b/vendor/github.com/aws/aws-lambda-go/lambda/sigterm.go @@ -0,0 +1,53 @@ +// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +package lambda + +import ( + "log" + "os" + "os/signal" + "syscall" +) + +// enableSIGTERM configures an optional list of sigtermHandlers to run on process shutdown. +// This non-default behavior is enabled within Lambda using the extensions API. +func enableSIGTERM(sigtermHandlers []func()) { + // for fun, we'll also optionally register SIGTERM handlers + if len(sigtermHandlers) > 0 { + signaled := make(chan os.Signal, 1) + signal.Notify(signaled, syscall.SIGTERM) + go func() { + <-signaled + for _, f := range sigtermHandlers { + f() + } + }() + } + + // detect if we're actually running within Lambda + endpoint := os.Getenv("AWS_LAMBDA_RUNTIME_API") + if endpoint == "" { + log.Print("WARNING! AWS_LAMBDA_RUNTIME_API environment variable not found. Skipping attempt to register internal extension...") + return + } + + // Now to do the AWS Lambda specific stuff. + // The default Lambda behavior is for functions to get SIGKILL at the end of lifetime, or after a timeout. + // Any use of the Lambda extension register API enables SIGTERM to be sent to the function process before the SIGKILL. + // We'll register an extension that does not listen for any lifecycle events named "GoLangEnableSIGTERM". + // The API will respond with an ID we need to pass in future requests. + client := newExtensionAPIClient(endpoint) + id, err := client.register("GoLangEnableSIGTERM") + if err != nil { + log.Printf("WARNING! Failed to register internal extension! SIGTERM events may not be enabled! err: %v", err) + return + } + + // We didn't actually register for any events, but we need to call /next anyways to let the API know we're done initalizing. + // Because we didn't register for any events, /next will never return, so we'll do this in a go routine that is doomed to stay blocked. + go func() { + _, err := client.next(id) + log.Printf("WARNING! Reached expected unreachable code! Extension /next call expected to block forever! err: %v", err) + }() + +} diff --git a/vendor/github.com/aws/aws-lambda-go/lambdacontext/README.md b/vendor/github.com/aws/aws-lambda-go/lambdacontext/README.md index 44d648a..e8c2299 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambdacontext/README.md +++ b/vendor/github.com/aws/aws-lambda-go/lambdacontext/README.md @@ -1,3 +1,3 @@ # Overview -[![GoDoc](https://godoc.org/github.com/aws/aws-lambda-go/lambdacontext?status.svg)](https://godoc.org/github.com/aws/aws-lambda-go/lambdacontext) +[![Go Reference](https://pkg.go.dev/badge/github.com/aws/aws-lambda-go/lambdacontext.svg)](https://pkg.go.dev/github.com/aws/aws-lambda-go/lambdacontext) diff --git a/vendor/github.com/aws/aws-lambda-go/lambdacontext/context.go b/vendor/github.com/aws/aws-lambda-go/lambdacontext/context.go index 3593c44..bd2e166 100644 --- a/vendor/github.com/aws/aws-lambda-go/lambdacontext/context.go +++ b/vendor/github.com/aws/aws-lambda-go/lambdacontext/context.go @@ -2,7 +2,7 @@ // // Helpers for accessing context information from an Invoke request. Context information // is stored in a https://golang.org/pkg/context/#Context. The functions FromContext and NewContext -// are used to retrieving and inserting an isntance of LambdaContext. +// are used to retrieving and inserting an instance of LambdaContext. package lambdacontext @@ -62,8 +62,8 @@ type CognitoIdentity struct { // LambdaContext is the set of metadata that is passed for every Invoke. type LambdaContext struct { - AwsRequestID string - InvokedFunctionArn string + AwsRequestID string //nolint: stylecheck + InvokedFunctionArn string //nolint: stylecheck Identity CognitoIdentity ClientContext ClientContext } diff --git a/vendor/github.com/sfomuseum/go-http-rollup/.gitignore b/vendor/github.com/sfomuseum/go-http-rollup/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/vendor/github.com/sfomuseum/go-http-rollup/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/vendor/github.com/sfomuseum/go-http-rollup/LICENSE b/vendor/github.com/sfomuseum/go-http-rollup/LICENSE new file mode 100644 index 0000000..d33c796 --- /dev/null +++ b/vendor/github.com/sfomuseum/go-http-rollup/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2023, City and County of San Francisco, acting by and through its +Airport Commission ("City"). All rights reserved. + +The City and County of San Francisco, acting by and through its Airport +Commission, created and operates the SFO Museum. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of the City nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/github.com/sfomuseum/go-http-rollup/README.md b/vendor/github.com/sfomuseum/go-http-rollup/README.md new file mode 100644 index 0000000..7acd7e2 --- /dev/null +++ b/vendor/github.com/sfomuseum/go-http-rollup/README.md @@ -0,0 +1,11 @@ +# go-http-rollup + +Go middleware package for "rolling up" (bundling and minifying) JavaScript and CSS assets. + +## Documentation + +Documentation is incomplete at this time. + +## See also + +* https://github.com/tdewolff/minify \ No newline at end of file diff --git a/vendor/github.com/sfomuseum/go-http-rollup/css.go b/vendor/github.com/sfomuseum/go-http-rollup/css.go new file mode 100644 index 0000000..1c21d83 --- /dev/null +++ b/vendor/github.com/sfomuseum/go-http-rollup/css.go @@ -0,0 +1,64 @@ +package rollup + +import ( + "net/http" + "path/filepath" + "io/fs" + "log" + + aa_log "github.com/aaronland/go-log/v2" + "github.com/tdewolff/minify/v2" + "github.com/tdewolff/minify/v2/css" +) + +type RollupCSSHandlerOptions struct { + FS fs.FS + Paths map[string][]string + Logger *log.Logger +} + +func RollupCSSHandler(opts *RollupCSSHandlerOptions) (http.Handler, error) { + + m := minify.New() + m.AddFunc("text/css", css.Minify) + + fn := func(rsp http.ResponseWriter, req *http.Request) { + + path := req.URL.Path + fname := filepath.Base(path) + + js_paths, exists := opts.Paths[fname] + + if !exists { + http.Error(rsp, "Not found", http.StatusNotFound) + return + } + + rsp.Header().Set("Content-type", "text/css") + + for _, path := range js_paths { + + r, err := opts.FS.Open(path) + + if err != nil { + aa_log.Error(opts.Logger, "Failed to open %s for reading, %v", path, err) + http.Error(rsp, err.Error(), http.StatusInternalServerError) + return + } + + defer r.Close() + + err = m.Minify("text/css", rsp, r) + + if err != nil { + aa_log.Error(opts.Logger, "Failed to minify %s, %v", path, err) + http.Error(rsp, err.Error(), http.StatusInternalServerError) + return + } + } + + return + } + + return http.HandlerFunc(fn), nil +} diff --git a/vendor/github.com/sfomuseum/go-http-rollup/js.go b/vendor/github.com/sfomuseum/go-http-rollup/js.go new file mode 100644 index 0000000..e30f498 --- /dev/null +++ b/vendor/github.com/sfomuseum/go-http-rollup/js.go @@ -0,0 +1,74 @@ +package rollup + +import ( + "fmt" + "net/http" + "path/filepath" + "regexp" + "io/fs" + "log" + + aa_log "github.com/aaronland/go-log/v2" + "github.com/tdewolff/minify/v2" + "github.com/tdewolff/minify/v2/js" +) + +type RollupJSHandlerOptions struct { + FS fs.FS + Paths map[string][]string + Logger *log.Logger +} + +func RollupJSHandler(opts *RollupJSHandlerOptions) (http.Handler, error) { + + js_regexp, err := regexp.Compile("^(application|text)/(x-)?(java|ecma)script$") + + if err != nil { + return nil, fmt.Errorf("Failed to compile JS pattern, %w", err) + } + + m := minify.New() + m.AddFuncRegexp(js_regexp, js.Minify) + + fn := func(rsp http.ResponseWriter, req *http.Request) { + + path := req.URL.Path + fname := filepath.Base(path) + + js_paths, exists := opts.Paths[fname] + + if !exists { + http.Error(rsp, "Not found", http.StatusNotFound) + return + } + + rsp.Header().Set("Content-type", "text/javascript") + + for _, path := range js_paths { + + r, err := opts.FS.Open(path) + + if err != nil { + aa_log.Error(opts.Logger, "Failed to open %s for reading, %v", path, err) + http.Error(rsp, err.Error(), http.StatusInternalServerError) + return + } + + defer r.Close() + + err = m.Minify("text/javascript", rsp, r) + + if err != nil { + aa_log.Error(opts.Logger, "Failed to minify %s, %v", path, err) + http.Error(rsp, err.Error(), http.StatusInternalServerError) + return + } + + rsp.Write([]byte(`;`)) + } + + return + } + + return http.HandlerFunc(fn), nil +} diff --git a/vendor/github.com/sfomuseum/go-template/funcs/add.go b/vendor/github.com/sfomuseum/go-template/funcs/add.go new file mode 100644 index 0000000..2a65b8f --- /dev/null +++ b/vendor/github.com/sfomuseum/go-template/funcs/add.go @@ -0,0 +1,6 @@ +package funcs + +// Add returns the value of 'i' plus 'offset'. +func Add(i int, offset int) int { + return i + offset +} diff --git a/vendor/github.com/sfomuseum/go-template/funcs/join.go b/vendor/github.com/sfomuseum/go-template/funcs/join.go new file mode 100644 index 0000000..8e7df14 --- /dev/null +++ b/vendor/github.com/sfomuseum/go-template/funcs/join.go @@ -0,0 +1,23 @@ +package funcs + +import ( + "log" + "net/url" +) + +// JoinPath returns the value of 'prefix' prepended to 'path'. +func JoinPath(prefix string, path string) string { + + if prefix == "" { + return path + } + + p, err := url.JoinPath(prefix, path) + + if err != nil { + log.Printf("Failed to join path, %v", err) + return "#" + } + + return p +} diff --git a/vendor/github.com/sfomuseum/go-template/html/html.go b/vendor/github.com/sfomuseum/go-template/html/html.go index bcd2d6a..e8582ca 100644 --- a/vendor/github.com/sfomuseum/go-template/html/html.go +++ b/vendor/github.com/sfomuseum/go-template/html/html.go @@ -35,5 +35,7 @@ func TemplatesFuncMap() template.FuncMap { return template.FuncMap{ // For example: {{ if (IsAvailable "Account" .) }} "IsAvailable": funcs.IsAvailable, + "Add": funcs.Add, + "JoinPath": funcs.JoinPath, } } diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go index 822ed42..7a96eae 100644 --- a/vendor/golang.org/x/net/html/doc.go +++ b/vendor/golang.org/x/net/html/doc.go @@ -92,6 +92,21 @@ example, to process each anchor node in depth-first order: The relevant specifications include: https://html.spec.whatwg.org/multipage/syntax.html and https://html.spec.whatwg.org/multipage/syntax.html#tokenization + +# Security Considerations + +Care should be taken when parsing and interpreting HTML, whether full documents +or fragments, within the framework of the HTML specification, especially with +regard to untrusted inputs. + +This package provides both a tokenizer and a parser. Only the parser constructs +a DOM according to the HTML specification, resolving malformed and misplaced +tags where appropriate. The tokenizer simply tokenizes the HTML presented to it, +and as such does not resolve issues that may exist in the processed HTML, +producing a literal interpretation of the input. + +If your use case requires semantically well-formed HTML, as defined by the +WHATWG specifiction, the parser should be used rather than the tokenizer. */ package html // import "golang.org/x/net/html" diff --git a/vendor/golang.org/x/net/html/escape.go b/vendor/golang.org/x/net/html/escape.go index d856139..04c6bec 100644 --- a/vendor/golang.org/x/net/html/escape.go +++ b/vendor/golang.org/x/net/html/escape.go @@ -193,6 +193,87 @@ func lower(b []byte) []byte { return b } +// escapeComment is like func escape but escapes its input bytes less often. +// Per https://github.com/golang/go/issues/58246 some HTML comments are (1) +// meaningful and (2) contain angle brackets that we'd like to avoid escaping +// unless we have to. +// +// "We have to" includes the '&' byte, since that introduces other escapes. +// +// It also includes those bytes (not including EOF) that would otherwise end +// the comment. Per the summary table at the bottom of comment_test.go, this is +// the '>' byte that, per above, we'd like to avoid escaping unless we have to. +// +// Studying the summary table (and T actions in its '>' column) closely, we +// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the +// start of the comment data. State 52 is after a '!'. The other three states +// are after a '-'. +// +// Our algorithm is thus to escape every '&' and to escape '>' if and only if: +// - The '>' is after a '!' or '-' (in the unescaped data) or +// - The '>' is at the start of the comment data (after the opening ""); err != nil { diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go index 50f7c6a..5c2a1f4 100644 --- a/vendor/golang.org/x/net/html/token.go +++ b/vendor/golang.org/x/net/html/token.go @@ -110,7 +110,7 @@ func (t Token) String() string { case SelfClosingTagToken: return "<" + t.tagString() + "/>" case CommentToken: - return "" + return "" case DoctypeToken: return "" } @@ -598,10 +598,10 @@ scriptDataDoubleEscapeEnd: // readComment reads the next comment token starting with "