+ {{ partial "layouts/date.html" . }} +
+ {{ end }} + {{ end }} + {{ $t := debug.Timer "single.categories" }} + {{ $categories := .GetTerms "categories" }} + {{ with $categories }} +diff --git a/.circleci/config.yml b/.circleci/config.yml index 849d08ad4..06e643bdd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,7 @@ parameters: defaults: &defaults resource_class: large docker: - - image: bepsays/ci-hugoreleaser:1.22300.20400 + - image: bepsays/ci-hugoreleaser:1.22400.20000 environment: &buildenv GOMODCACHE: /root/project/gomodcache version: 2 @@ -58,7 +58,7 @@ jobs: environment: <<: [*buildenv] docker: - - image: bepsays/ci-hugoreleaser-linux-arm64:1.22300.20400 + - image: bepsays/ci-hugoreleaser-linux-arm64:1.22400.20000 steps: - *restore-cache - &attach-workspace diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 95a4ad0b6..c4f3c34c3 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -46,3 +46,4 @@ jobs: platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + build-args: HUGO_BUILD_TAGS=extended,withdeploy \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fb9d71f06..c49c12371 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,7 @@ jobs: test: strategy: matrix: - go-version: [1.22.x, 1.23.x] + go-version: [1.23.x, 1.24.x] os: [ubuntu-latest, windows-latest] # macos disabled for now because of disk space issues. runs-on: ${{ matrix.os }} steps: diff --git a/.gitignore b/.gitignore index a1fa54656..ddad69611 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ imports.* dist/ public/ +.DS_Store \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1b5666963..ddd3efcf2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ ->**Note:** We would apprecitate if you hold on with any big refactorings (like renaming deprecated Go packages), mainly because of potential for extra merge work for future coming in in the near future. +>**Note:** We would appreciate if you hold on with any big refactoring (like renaming deprecated Go packages), mainly because of potential for extra merge work for future coming in in the near future. # Contributing to Hugo @@ -93,6 +93,7 @@ Most title/subjects should have a lower-cased prefix with a colon and one whites * If this commit touches many packages without a common functional topic, prefix with `all:` (e.g. `all: Reformat Go code`) * If this is a documentation update, prefix with `docs:`. * If nothing of the above applies, just leave the prefix out. +* Note that the above excludes nouns seen in other repositories, e.g. "chore:". Also, if your commit references one or more GitHub issues, always end your commit message body with *See #1234* or *Fixes #1234*. Replace *1234* with the GitHub issue ID. The last example will close the issue when the commit is merged into *master*. diff --git a/Dockerfile b/Dockerfile index 6d1bf78c4..a0e34353f 100755 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,8 @@ # Twitter: https://twitter.com/gohugoio # Website: https://gohugo.io/ -ARG GO_VERSION="1.23.2" -ARG ALPINE_VERSION="3.20" +ARG GO_VERSION="1.24" +ARG ALPINE_VERSION="3.22" ARG DART_SASS_VERSION="1.79.3" FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.5.0 AS xx @@ -19,7 +19,7 @@ RUN apk add clang lld COPY --from=xx / / ARG TARGETPLATFORM -RUN xx-apk add musl-dev gcc g++ +RUN xx-apk add musl-dev gcc g++ # Optionally set HUGO_BUILD_TAGS to "none" or "withdeploy" when building like so: # docker build --build-arg HUGO_BUILD_TAGS=withdeploy . @@ -72,7 +72,7 @@ RUN mkdir -p /var/hugo/bin /cache && \ adduser -Sg hugo -u 1000 -h /var/hugo hugo && \ chown -R hugo: /var/hugo /cache && \ # For the Hugo's Git integration to work. - runuser -u hugo -- git config --global --add safe.directory /project && \ + runuser -u hugo -- git config --global --add safe.directory /project && \ # See https://github.com/gohugoio/hugo/issues/9810 runuser -u hugo -- git config --global core.quotepath false diff --git a/README.md b/README.md index 7dfbca7c1..9befa9c9d 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ A fast and flexible static site generator built with love by [bep], [spf13], and [](https://goreportcard.com/report/github.com/gohugoio/hugo) [Website] | [Installation] | [Documentation] | [Support] | [Contributing] | Mastodon + ## Overview Hugo is a [static site generator] written in [Go], optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less. @@ -64,13 +65,30 @@ See the [features] section of the documentation for a comprehensive summary of H
+## Editions + +Hugo is available in three editions: standard, extended, and extended/deploy. While the standard edition provides core functionality, the extended and extended/deploy editions offer advanced features. + +Feature|extended edition|extended/deploy edition +:--|:-:|:-: +Encode to the WebP format when [processing images]. You can decode WebP images with any edition.|:heavy_check_mark:|:heavy_check_mark: +[Transpile Sass to CSS] using the embedded LibSass transpiler. You can use the [Dart Sass] transpiler with any edition.|:heavy_check_mark:|:heavy_check_mark: +Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See [details].|:x:|:heavy_check_mark: + +[dart sass]: https://gohugo.io/functions/css/sass/#dart-sass +[processing images]: https://gohugo.io/content-management/image-processing/ +[transpile sass to css]: https://gohugo.io/functions/css/sass/ +[details]: https://gohugo.io/hosting-and-deployment/hugo-deploy/ + +Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition. + ## Installation Install Hugo from a [prebuilt binary], package manager, or package repository. Please see the installation instructions for your operating system: @@ -82,15 +100,11 @@ Install Hugo from a [prebuilt binary], package manager, or package repository. P ## Build from source -Hugo is available in two editions: standard and extended. With the extended edition you can: - -- Encode to the WebP format when processing images. You can decode WebP images with either edition. -- Transpile Sass to CSS using the embedded LibSass transpiler. The extended edition is not required to use the Dart Sass transpiler. - Prerequisites to build Hugo from source: -- Standard edition: Go 1.20 or later -- Extended edition: Go 1.20 or later, and GCC +- Standard edition: Go 1.23.0 or later +- Extended edition: Go 1.23.0 or later, and GCC +- Extended/deploy edition: Go 1.23.0 or later, and GCC Build the standard edition: @@ -103,6 +117,13 @@ Build the extended edition: ```text CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest ``` + +Build the extended/deploy edition: + +```text +CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest +``` + ## Star History [](https://star-history.com/#gohugoio/hugo&Timeline) @@ -150,100 +171,112 @@ Hugo stands on the shoulders of great open source libraries. Run `hugo env --log ```text github.com/BurntSushi/locker="v0.0.0-20171006230638-a6e239ea1c69" -github.com/alecthomas/chroma/v2="v2.14.0" +github.com/PuerkitoBio/goquery="v1.10.1" +github.com/alecthomas/chroma/v2="v2.15.0" +github.com/andybalholm/cascadia="v1.3.3" github.com/armon/go-radix="v1.0.1-0.20221118154546-54df44f2176c" github.com/bep/clocks="v0.5.0" github.com/bep/debounce="v1.2.0" github.com/bep/gitmap="v1.6.0" github.com/bep/goat="v0.5.0" -github.com/bep/godartsass/v2="v2.3.0" +github.com/bep/godartsass/v2="v2.3.2" github.com/bep/golibsass="v1.2.0" github.com/bep/gowebp="v0.3.0" -github.com/bep/imagemeta="v0.8.3" +github.com/bep/imagemeta="v0.8.4" github.com/bep/lazycache="v0.7.0" github.com/bep/logg="v0.4.0" github.com/bep/mclib="v1.20400.20402" github.com/bep/overlayfs="v0.9.2" -github.com/bep/simplecobra="v0.4.0" +github.com/bep/simplecobra="v0.5.0" github.com/bep/tmc="v0.5.1" github.com/cespare/xxhash/v2="v2.3.0" github.com/clbanning/mxj/v2="v2.7.0" -github.com/cli/safeexec="v1.0.1" github.com/cpuguy83/go-md2man/v2="v2.0.4" github.com/disintegration/gift="v1.2.1" -github.com/dlclark/regexp2="v1.11.0" -github.com/evanw/esbuild="v0.24.0" +github.com/dlclark/regexp2="v1.11.5" +github.com/dop251/goja="v0.0.0-20250125213203-5ef83b82af17" +github.com/evanw/esbuild="v0.24.2" github.com/fatih/color="v1.18.0" github.com/frankban/quicktest="v1.14.6" github.com/fsnotify/fsnotify="v1.8.0" -github.com/getkin/kin-openapi="v0.123.0" +github.com/getkin/kin-openapi="v0.129.0" github.com/ghodss/yaml="v1.0.0" -github.com/go-openapi/jsonpointer="v0.20.2" -github.com/go-openapi/swag="v0.22.8" +github.com/go-openapi/jsonpointer="v0.21.0" +github.com/go-openapi/swag="v0.23.0" +github.com/go-sourcemap/sourcemap="v2.1.4+incompatible" github.com/gobuffalo/flect="v1.0.3" github.com/gobwas/glob="v0.2.3" github.com/gohugoio/go-i18n/v2="v2.1.3-0.20230805085216-e63c13218d0e" -github.com/gohugoio/hashstructure="v0.1.0" +github.com/gohugoio/hashstructure="v0.5.0" github.com/gohugoio/httpcache="v0.7.0" github.com/gohugoio/hugo-goldmark-extensions/extras="v0.2.0" github.com/gohugoio/hugo-goldmark-extensions/passthrough="v0.3.0" github.com/gohugoio/locales="v0.14.0" github.com/gohugoio/localescompressed="v1.0.1" +github.com/golang/freetype="v0.0.0-20170609003504-e2365dfdc4a0" github.com/google/go-cmp="v0.6.0" +github.com/google/pprof="v0.0.0-20250208200701-d0013a598941" github.com/gorilla/websocket="v1.5.3" -github.com/hairyhenderson/go-codeowners="v0.6.1" +github.com/hairyhenderson/go-codeowners="v0.7.0" github.com/hashicorp/golang-lru/v2="v2.0.7" -github.com/invopop/yaml="v0.2.0" github.com/jdkato/prose="v1.2.1" github.com/josharian/intern="v1.0.0" github.com/kr/pretty="v0.3.1" github.com/kr/text="v0.2.0" github.com/kyokomi/emoji/v2="v2.2.13" +github.com/lucasb-eyer/go-colorful="v1.2.0" github.com/mailru/easyjson="v0.7.7" github.com/makeworld-the-better-one/dither/v2="v2.4.0" github.com/marekm4/color-extractor="v1.2.1" github.com/mattn/go-colorable="v0.1.13" github.com/mattn/go-isatty="v0.0.20" github.com/mattn/go-runewidth="v0.0.9" +github.com/mazznoer/csscolorparser="v0.1.5" github.com/mitchellh/mapstructure="v1.5.1-0.20231216201459-8508981c8b6c" github.com/mohae/deepcopy="v0.0.0-20170929034955-c48cc78d4826" github.com/muesli/smartcrop="v0.3.0" github.com/niklasfasching/go-org="v1.7.0" +github.com/oasdiff/yaml3="v0.0.0-20241210130736-a94c01f36349" +github.com/oasdiff/yaml="v0.0.0-20241210131133-6b86fb107d80" github.com/olekukonko/tablewriter="v0.0.5" github.com/pbnjay/memory="v0.0.0-20210728143218-7b4eea64cf58" github.com/pelletier/go-toml/v2="v2.2.3" github.com/perimeterx/marshmallow="v1.1.5" github.com/pkg/browser="v0.0.0-20240102092130-5ac0b6a4141c" github.com/pkg/errors="v0.9.1" +github.com/rivo/uniseg="v0.4.7" github.com/rogpeppe/go-internal="v1.13.1" github.com/russross/blackfriday/v2="v2.1.0" -github.com/sass/dart-sass/compiler="1.81.0" -github.com/sass/dart-sass/implementation="1.81.0" -github.com/sass/dart-sass/protocol="3.1.0" +github.com/sass/libsass="3.6.6" github.com/spf13/afero="v1.11.0" -github.com/spf13/cast="v1.7.0" +github.com/spf13/cast="v1.7.1" github.com/spf13/cobra="v1.8.1" github.com/spf13/fsync="v0.10.1" -github.com/spf13/pflag="v1.0.5" -github.com/tdewolff/minify/v2="v2.21.1" -github.com/tdewolff/parse/v2="v2.7.18" -github.com/tetratelabs/wazero="v1.8.1" +github.com/spf13/pflag="v1.0.6" +github.com/tdewolff/minify/v2="v2.20.37" +github.com/tdewolff/parse/v2="v2.7.15" +github.com/tetratelabs/wazero="v1.8.2" +github.com/webmproject/libwebp="v1.3.2" github.com/yuin/goldmark-emoji="v1.0.4" github.com/yuin/goldmark="v1.7.8" go.uber.org/automaxprocs="v1.5.3" -golang.org/x/crypto="v0.29.0" -golang.org/x/exp="v0.0.0-20221031165847-c99f073a8326" -golang.org/x/image="v0.22.0" -golang.org/x/mod="v0.22.0" -golang.org/x/net="v0.31.0" -golang.org/x/sync="v0.9.0" -golang.org/x/sys="v0.27.0" -golang.org/x/text="v0.20.0" -golang.org/x/tools="v0.27.0" -google.golang.org/protobuf="v1.35.1" +golang.org/x/crypto="v0.33.0" +golang.org/x/exp="v0.0.0-20250210185358-939b2ce775ac" +golang.org/x/image="v0.24.0" +golang.org/x/mod="v0.23.0" +golang.org/x/net="v0.35.0" +golang.org/x/sync="v0.11.0" +golang.org/x/sys="v0.30.0" +golang.org/x/text="v0.22.0" +golang.org/x/tools="v0.30.0" +golang.org/x/xerrors="v0.0.0-20240903120638-7835f813f4da" +gonum.org/v1/plot="v0.15.0" +google.golang.org/protobuf="v1.36.5" gopkg.in/yaml.v2="v2.4.0" gopkg.in/yaml.v3="v3.0.1" -howett.net/plist="v1.0.0" +oss.terrastruct.com/d2="v0.6.9" +oss.terrastruct.com/util-go="v0.0.0-20241005222610-44c011a04896" +rsc.io/qr="v0.2.0" software.sslmate.com/src/go-pkcs12="v0.2.0" ``` diff --git a/cache/dynacache/dynacache.go b/cache/dynacache/dynacache.go index a906a0dd3..25d0f9b29 100644 --- a/cache/dynacache/dynacache.go +++ b/cache/dynacache/dynacache.go @@ -176,11 +176,12 @@ func (c *Cache) ClearMatching(predicatePartition func(k string, p PartitionManag } // ClearOnRebuild prepares the cache for a new rebuild taking the given changeset into account. -func (c *Cache) ClearOnRebuild(changeset ...identity.Identity) { +// predicate is optional and will clear any entry for which it returns true. +func (c *Cache) ClearOnRebuild(predicate func(k, v any) bool, changeset ...identity.Identity) { g := rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { - partition.clearOnRebuild(changeset...) + partition.clearOnRebuild(predicate, changeset...) return nil }, }) @@ -479,7 +480,12 @@ func (p *Partition[K, V]) clearMatching(predicate func(k, v any) bool) { }) } -func (p *Partition[K, V]) clearOnRebuild(changeset ...identity.Identity) { +func (p *Partition[K, V]) clearOnRebuild(predicate func(k, v any) bool, changeset ...identity.Identity) { + if predicate == nil { + predicate = func(k, v any) bool { + return false + } + } opts := p.getOptions() if opts.ClearWhen == ClearNever { return @@ -525,7 +531,7 @@ func (p *Partition[K, V]) clearOnRebuild(changeset ...identity.Identity) { // Second pass needs to be done in a separate loop to catch any // elements marked as stale in the other partitions. p.c.DeleteFunc(func(key K, v V) bool { - if shouldDelete(key, v) { + if predicate(key, v) || shouldDelete(key, v) { p.trace.Log( logg.StringFunc( func() string { @@ -601,7 +607,7 @@ type PartitionManager interface { adjustMaxSize(addend int) int getMaxSize() int getOptions() OptionsPartition - clearOnRebuild(changeset ...identity.Identity) + clearOnRebuild(predicate func(k, v any) bool, changeset ...identity.Identity) clearMatching(predicate func(k, v any) bool) clearStale() } diff --git a/cache/dynacache/dynacache_test.go b/cache/dynacache/dynacache_test.go index 87239479b..78b2fc82e 100644 --- a/cache/dynacache/dynacache_test.go +++ b/cache/dynacache/dynacache_test.go @@ -147,13 +147,13 @@ func TestClear(t *testing.T) { c.Assert(cache.Keys(predicateAll), qt.HasLen, 4) - cache.ClearOnRebuild() + cache.ClearOnRebuild(nil) // Stale items are always cleared. c.Assert(cache.Keys(predicateAll), qt.HasLen, 2) cache = newTestCache(t) - cache.ClearOnRebuild(identity.StringIdentity("changed")) + cache.ClearOnRebuild(nil, identity.StringIdentity("changed")) c.Assert(cache.Keys(nil), qt.HasLen, 1) @@ -191,16 +191,16 @@ func TestPanicInCreate(t *testing.T) { return err } - for i := 0; i < 3; i++ { - for j := 0; j < 3; j++ { + for i := range 3 { + for range 3 { c.Assert(willPanic(i), qt.PanicMatches, fmt.Sprintf("panic-%d", i)) c.Assert(willErr(i), qt.ErrorMatches, fmt.Sprintf("error-%d", i)) } } // Test the same keys again without the panic. - for i := 0; i < 3; i++ { - for j := 0; j < 3; j++ { + for i := range 3 { + for range 3 { v, err := p1.GetOrCreate(fmt.Sprintf("panic-%d", i), func(key string) (testItem, error) { return testItem{ name: key, diff --git a/cache/filecache/filecache_pruner_test.go b/cache/filecache/filecache_pruner_test.go index f0cecfe9f..b49ba7645 100644 --- a/cache/filecache/filecache_pruner_test.go +++ b/cache/filecache/filecache_pruner_test.go @@ -59,7 +59,7 @@ dir = ":resourceDir/_gen" caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache := caches[name] - for i := 0; i < 10; i++ { + for i := range 10 { id := fmt.Sprintf("i%d", i) cache.GetOrCreateBytes(id, func() ([]byte, error) { return []byte("abc"), nil @@ -74,7 +74,7 @@ dir = ":resourceDir/_gen" c.Assert(err, qt.IsNil) c.Assert(count, qt.Equals, 5, msg) - for i := 0; i < 10; i++ { + for i := range 10 { id := fmt.Sprintf("i%d", i) v := cache.GetString(id) if i < 5 { @@ -97,7 +97,7 @@ dir = ":resourceDir/_gen" c.Assert(count, qt.Equals, 4) // Now only the i5 should be left. - for i := 0; i < 10; i++ { + for i := range 10 { id := fmt.Sprintf("i%d", i) v := cache.GetString(id) if i != 5 { diff --git a/cache/filecache/filecache_test.go b/cache/filecache/filecache_test.go index 59fb09276..a30aaa50b 100644 --- a/cache/filecache/filecache_test.go +++ b/cache/filecache/filecache_test.go @@ -105,7 +105,7 @@ dir = ":cacheDir/c" } for _, ca := range []*filecache.Cache{caches.ImageCache(), caches.AssetsCache(), caches.GetJSONCache(), caches.GetCSVCache()} { - for i := 0; i < 2; i++ { + for range 2 { info, r, err := ca.GetOrCreate("a", rf("abc")) c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) @@ -193,11 +193,11 @@ dir = "/cache/c" var wg sync.WaitGroup - for i := 0; i < 50; i++ { + for i := range 50 { wg.Add(1) go func(i int) { defer wg.Done() - for j := 0; j < 20; j++ { + for range 20 { ca := caches.Get(cacheName) c.Assert(ca, qt.Not(qt.IsNil)) filename, data := filenameData(i) diff --git a/cache/httpcache/httpcache.go b/cache/httpcache/httpcache.go index 98f7fedd4..bd6d4bf7d 100644 --- a/cache/httpcache/httpcache.go +++ b/cache/httpcache/httpcache.go @@ -42,7 +42,7 @@ var DefaultConfig = Config{ // Config holds the configuration for the HTTP cache. type Config struct { - // Configures the HTTP cache behaviour (RFC 9111). + // Configures the HTTP cache behavior (RFC 9111). // When this is not enabled for a resource, Hugo will go straight to the file cache. Cache Cache @@ -52,7 +52,7 @@ type Config struct { } type Cache struct { - // Enable HTTP cache behaviour (RFC 9111) for these rsources. + // Enable HTTP cache behavior (RFC 9111) for these resources. For GlobMatcher } @@ -122,6 +122,10 @@ type GlobMatcher struct { Includes []string } +func (gm GlobMatcher) IsZero() bool { + return len(gm.Includes) == 0 && len(gm.Excludes) == 0 +} + type ConfigCompiled struct { For predicate.P[string] PollConfigs []PollConfigCompiled @@ -155,6 +159,9 @@ func (p PollConfigCompiled) IsZero() bool { } func (gm *GlobMatcher) CompilePredicate() (func(string) bool, error) { + if gm.IsZero() { + panic("no includes or excludes") + } var p predicate.P[string] for _, include := range gm.Includes { g, err := glob.Compile(include, '/') @@ -181,7 +188,7 @@ func (gm *GlobMatcher) CompilePredicate() (func(string) bool, error) { return p, nil } -func DecodeConfig(bcfg config.BaseConfig, m map[string]any) (Config, error) { +func DecodeConfig(_ config.BaseConfig, m map[string]any) (Config, error) { if len(m) == 0 { return DefaultConfig, nil } @@ -203,5 +210,20 @@ func DecodeConfig(bcfg config.BaseConfig, m map[string]any) (Config, error) { return c, err } + if c.Cache.For.IsZero() { + c.Cache.For = DefaultConfig.Cache.For + } + + for pci := range c.Polls { + if c.Polls[pci].For.IsZero() { + c.Polls[pci].For = DefaultConfig.Cache.For + c.Polls[pci].Disable = true + } + } + + if len(c.Polls) == 0 { + c.Polls = DefaultConfig.Polls + } + return c, nil } diff --git a/cache/httpcache/httpcache_integration_test.go b/cache/httpcache/httpcache_integration_test.go index d3337c023..4d6a5f718 100644 --- a/cache/httpcache/httpcache_integration_test.go +++ b/cache/httpcache/httpcache_integration_test.go @@ -22,6 +22,8 @@ import ( ) func TestConfigCustom(t *testing.T) { + t.Parallel() + files := ` -- hugo.toml -- [httpcache] @@ -51,6 +53,8 @@ includes = ["**gohugo.io**"] } func TestConfigDefault(t *testing.T) { + t.Parallel() + files := ` -- hugo.toml -- ` @@ -62,3 +66,30 @@ func TestConfigDefault(t *testing.T) { b.Assert(compiled.For("https://gohugo.io/foo.jpg"), qt.IsFalse) b.Assert(compiled.PollConfigFor("https://gohugo.io/foo.jpg").Config.Disable, qt.IsTrue) } + +func TestConfigPollsOnly(t *testing.T) { + t.Parallel() + files := ` +-- hugo.toml -- +[httpcache] +[[httpcache.polls]] +low = "5s" +high = "32s" +[httpcache.polls.for] +includes = ["**gohugo.io**"] + + +` + + b := hugolib.Test(t, files) + + compiled := b.H.Configs.Base.C.HTTPCache + + b.Assert(compiled.For("https://gohugo.io/posts.json"), qt.IsFalse) + b.Assert(compiled.For("https://gohugo.io/foo.jpg"), qt.IsFalse) + + pc := compiled.PollConfigFor("https://gohugo.io/foo.jpg") + b.Assert(pc.Config.Low, qt.Equals, 5*time.Second) + b.Assert(pc.Config.High, qt.Equals, 32*time.Second) + b.Assert(compiled.PollConfigFor("https://example.com/foo.jpg").IsZero(), qt.IsTrue) +} diff --git a/cache/httpcache/httpcache_test.go b/cache/httpcache/httpcache_test.go index e3659f97b..60c07d056 100644 --- a/cache/httpcache/httpcache_test.go +++ b/cache/httpcache/httpcache_test.go @@ -17,6 +17,7 @@ import ( "testing" qt "github.com/frankban/quicktest" + "github.com/gohugoio/hugo/config" ) func TestGlobMatcher(t *testing.T) { @@ -40,3 +41,33 @@ func TestGlobMatcher(t *testing.T) { c.Assert(p("foo/bar/foo.css"), qt.IsFalse) c.Assert(p("foo/bar/foo.xml"), qt.IsTrue) } + +func TestDefaultConfig(t *testing.T) { + c := qt.New(t) + + _, err := DefaultConfig.Compile() + c.Assert(err, qt.IsNil) +} + +func TestDecodeConfigInjectsDefaultAndCompiles(t *testing.T) { + c := qt.New(t) + + cfg, err := DecodeConfig(config.BaseConfig{}, map[string]interface{}{}) + c.Assert(err, qt.IsNil) + c.Assert(cfg, qt.DeepEquals, DefaultConfig) + + _, err = cfg.Compile() + c.Assert(err, qt.IsNil) + + cfg, err = DecodeConfig(config.BaseConfig{}, map[string]any{ + "cache": map[string]any{ + "polls": []map[string]any{ + {"disable": true}, + }, + }, + }) + c.Assert(err, qt.IsNil) + + _, err = cfg.Compile() + c.Assert(err, qt.IsNil) +} diff --git a/codegen/methods.go b/codegen/methods.go index 299063bb5..08ac97b00 100644 --- a/codegen/methods.go +++ b/codegen/methods.go @@ -26,6 +26,7 @@ import ( "path/filepath" "reflect" "regexp" + "slices" "sort" "strings" "sync" @@ -102,7 +103,7 @@ func (c *Inspector) MethodsFromTypes(include []reflect.Type, exclude []reflect.T } for _, t := range include { - for i := 0; i < t.NumMethod(); i++ { + for i := range t.NumMethod() { m := t.Method(i) if excludes[m.Name] || seen[m.Name] { @@ -122,7 +123,7 @@ func (c *Inspector) MethodsFromTypes(include []reflect.Type, exclude []reflect.T method := Method{Owner: t, OwnerName: ownerName, Name: m.Name} - for i := 0; i < numIn; i++ { + for i := range numIn { in := m.Type.In(i) name, pkg := nameAndPackage(in) @@ -137,7 +138,7 @@ func (c *Inspector) MethodsFromTypes(include []reflect.Type, exclude []reflect.T numOut := m.Type.NumOut() if numOut > 0 { - for i := 0; i < numOut; i++ { + for i := range numOut { out := m.Type.Out(i) name, pkg := nameAndPackage(out) @@ -304,7 +305,7 @@ func (m Method) inOutStr() string { } args := make([]string, len(m.In)) - for i := 0; i < len(args); i++ { + for i := range args { args[i] = fmt.Sprintf("arg%d", i) } return "(" + strings.Join(args, ", ") + ")" @@ -316,7 +317,7 @@ func (m Method) inStr() string { } args := make([]string, len(m.In)) - for i := 0; i < len(args); i++ { + for i := range args { args[i] = fmt.Sprintf("arg%d %s", i, m.In[i]) } return "(" + strings.Join(args, ", ") + ")" @@ -339,7 +340,7 @@ func (m Method) outStrNamed() string { } outs := make([]string, len(m.Out)) - for i := 0; i < len(outs); i++ { + for i := range outs { outs[i] = fmt.Sprintf("o%d %s", i, m.Out[i]) } @@ -435,7 +436,7 @@ func (m Methods) ToMarshalJSON(receiver, pkgPath string, excludes ...string) (st // Exclude self for i, pkgImp := range pkgImports { if pkgImp == pkgPath { - pkgImports = append(pkgImports[:i], pkgImports[i+1:]...) + pkgImports = slices.Delete(pkgImports, i, i+1) } } } diff --git a/commands/commandeer.go b/commands/commandeer.go index 3f9f02d23..bf9655637 100644 --- a/commands/commandeer.go +++ b/commands/commandeer.go @@ -101,8 +101,8 @@ type configKey struct { // This is the root command. type rootCommand struct { - Printf func(format string, v ...interface{}) - Println func(a ...interface{}) + Printf func(format string, v ...any) + Println func(a ...any) StdOut io.Writer StdErr io.Writer @@ -431,12 +431,12 @@ func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error { // Used by mkcert (server). log.SetOutput(r.StdOut) - r.Printf = func(format string, v ...interface{}) { + r.Printf = func(format string, v ...any) { if !r.quiet { fmt.Fprintf(r.StdOut, format, v...) } } - r.Println = func(a ...interface{}) { + r.Println = func(a ...any) { if !r.quiet { fmt.Fprintln(r.StdOut, a...) } @@ -447,6 +447,8 @@ func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error { if err != nil { return err } + // Set up the global logger early to allow info deprecations during config load. + loggers.SetGlobalLogger(r.logger) r.changesFromBuild = make(chan []identity.Identity, 10) @@ -538,6 +540,7 @@ Complete documentation is available at https://gohugo.io/.` cmd.PersistentFlags().StringP("themesDir", "", "", "filesystem path to themes directory") _ = cmd.MarkFlagDirname("themesDir") cmd.PersistentFlags().StringP("ignoreVendorPaths", "", "", "ignores any _vendor for module paths matching the given Glob pattern") + cmd.PersistentFlags().BoolP("noBuildLock", "", false, "don't create .hugo_build.lock file") _ = cmd.RegisterFlagCompletionFunc("ignoreVendorPaths", cobra.NoFileCompletions) cmd.PersistentFlags().String("clock", "", "set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00") _ = cmd.RegisterFlagCompletionFunc("clock", cobra.NoFileCompletions) @@ -593,7 +596,6 @@ func applyLocalFlagsBuild(cmd *cobra.Command, r *rootCommand) { cmd.Flags().BoolVar(&r.forceSyncStatic, "forceSyncStatic", false, "copy all files when static is changed.") cmd.Flags().BoolP("noTimes", "", false, "don't sync modification time of files") cmd.Flags().BoolP("noChmod", "", false, "don't sync permission mode of files") - cmd.Flags().BoolP("noBuildLock", "", false, "don't create .hugo_build.lock file") cmd.Flags().BoolP("printI18nWarnings", "", false, "print missing translations") cmd.Flags().BoolP("printPathWarnings", "", false, "print warnings on duplicate target paths etc.") cmd.Flags().BoolP("printUnusedTemplates", "", false, "print warnings on unused templates.") diff --git a/commands/config.go b/commands/config.go index b250fc329..7d166b9b8 100644 --- a/commands/config.go +++ b/commands/config.go @@ -43,8 +43,9 @@ func newConfigCommand() *configCommand { type configCommand struct { r *rootCommand - format string - lang string + format string + lang string + printZero bool commands []simplecobra.Commander } @@ -78,7 +79,7 @@ func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, arg dec.SetIndent("", " ") dec.SetEscapeHTML(false) - if err := dec.Encode(parser.ReplacingJSONMarshaller{Value: config, KeysToLower: true, OmitEmpty: true}); err != nil { + if err := dec.Encode(parser.ReplacingJSONMarshaller{Value: config, KeysToLower: true, OmitEmpty: !c.printZero}); err != nil { return err } @@ -89,7 +90,7 @@ func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, arg os.Stdout.Write(buf.Bytes()) default: // Decode the JSON to a map[string]interface{} and then unmarshal it again to the correct format. - var m map[string]interface{} + var m map[string]any if err := json.Unmarshal(buf.Bytes(), &m); err != nil { return err } @@ -115,6 +116,7 @@ func (c *configCommand) Init(cd *simplecobra.Commandeer) error { cmd.Flags().StringVar(&c.format, "format", "toml", "preferred file format (toml, yaml or json)") _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().StringVar(&c.lang, "lang", "", "the language to display config for. Defaults to the first language defined.") + cmd.Flags().BoolVar(&c.printZero, "printZero", false, `include config options with zero values (e.g. false, 0, "") in the output`) _ = cmd.RegisterFlagCompletionFunc("lang", cobra.NoFileCompletions) applyLocalFlagsBuildConfig(cmd, c.r) diff --git a/commands/deploy.go b/commands/deploy.go index eb419daba..3e9d3df20 100644 --- a/commands/deploy.go +++ b/commands/deploy.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build withdeploy -// +build withdeploy package commands diff --git a/commands/deploy_off.go b/commands/deploy_off.go index 32a08da2e..8f5eaa2de 100644 --- a/commands/deploy_off.go +++ b/commands/deploy_off.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !withdeploy -// +build !withdeploy // Copyright 2024 The Hugo Authors. All rights reserved. // diff --git a/commands/gen.go b/commands/gen.go index 83b4d637c..1c5361840 100644 --- a/commands/gen.go +++ b/commands/gen.go @@ -21,6 +21,7 @@ import ( "os" "path" "path/filepath" + "slices" "strings" "github.com/alecthomas/chroma/v2" @@ -49,6 +50,7 @@ func newGenCommand() *genCommand { highlightStyle string lineNumbersInlineStyle string lineNumbersTableStyle string + omitEmpty bool ) newChromaStyles := func() simplecobra.Commander { @@ -60,6 +62,10 @@ func newGenCommand() *genCommand { See https://xyproto.github.io/splash/docs/all.html for a preview of the available styles`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { + style = strings.ToLower(style) + if !slices.Contains(styles.Names(), style) { + return fmt.Errorf("invalid style: %s", style) + } builder := styles.Get(style).Builder() if highlightStyle != "" { builder.Add(chroma.LineHighlight, highlightStyle) @@ -74,8 +80,17 @@ See https://xyproto.github.io/splash/docs/all.html for a preview of the availabl if err != nil { return err } - formatter := html.New(html.WithAllClasses(true)) - formatter.WriteCSS(os.Stdout, style) + + var formatter *html.Formatter + if omitEmpty { + formatter = html.New(html.WithClasses(true)) + } else { + formatter = html.New(html.WithAllClasses(true)) + } + + w := os.Stdout + fmt.Fprintf(w, "/* Generated using: hugo %s */\n\n", strings.Join(os.Args[1:], " ")) + formatter.WriteCSS(w, style) return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { @@ -88,6 +103,8 @@ See https://xyproto.github.io/splash/docs/all.html for a preview of the availabl _ = cmd.RegisterFlagCompletionFunc("lineNumbersInlineStyle", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&lineNumbersTableStyle, "lineNumbersTableStyle", "", `foreground and background colors for table line numbers, e.g. --lineNumbersTableStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("lineNumbersTableStyle", cobra.NoFileCompletions) + cmd.PersistentFlags().BoolVar(&omitEmpty, "omitEmpty", false, `omit empty CSS rules`) + _ = cmd.RegisterFlagCompletionFunc("omitEmpty", cobra.NoFileCompletions) }, } } @@ -142,7 +159,7 @@ url: %s return &simpleCommand{ name: "doc", - short: "Generate Markdown documentation for the Hugo CLI.", + short: "Generate Markdown documentation for the Hugo CLI", long: `Generate Markdown documentation for the Hugo CLI. This command is, mostly, used to create up-to-date documentation of Hugo's command-line interface for https://gohugo.io/. @@ -167,13 +184,13 @@ url: %s prepender := func(filename string) string { name := filepath.Base(filename) base := strings.TrimSuffix(name, path.Ext(name)) - url := "/commands/" + strings.ToLower(base) + "/" + url := "/docs/reference/commands/" + strings.ToLower(base) + "/" return fmt.Sprintf(gendocFrontmatterTemplate, strings.Replace(base, "_", " ", -1), base, url) } linkHandler := func(name string) string { base := strings.TrimSuffix(name, path.Ext(name)) - return "/commands/" + strings.ToLower(base) + "/" + return "/docs/reference/commands/" + strings.ToLower(base) + "/" } r.Println("Generating Hugo command-line documentation in", gendocdir, "...") doc.GenMarkdownTreeCustom(cd.CobraCommand.Root(), gendocdir, prepender, linkHandler) @@ -194,7 +211,7 @@ url: %s newDocsHelper := func() simplecobra.Commander { return &simpleCommand{ name: "docshelper", - short: "Generate some data files for the Hugo docs.", + short: "Generate some data files for the Hugo docs", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Println("Generate docs data to", docsHelperTarget) @@ -215,7 +232,7 @@ url: %s } // Decode the JSON to a map[string]interface{} and then unmarshal it again to the correct format. - var m map[string]interface{} + var m map[string]any if err := json.Unmarshal(buf.Bytes(), &m); err != nil { return err } diff --git a/commands/hugobuilder.go b/commands/hugobuilder.go index dcc5c099b..3b57ac5e9 100644 --- a/commands/hugobuilder.go +++ b/commands/hugobuilder.go @@ -62,7 +62,7 @@ type hugoBuilder struct { // Currently only set when in "fast render mode". changeDetector *fileChangeDetector - visitedURLs *types.EvictingStringQueue + visitedURLs *types.EvictingQueue[string] fullRebuildSem *semaphore.Weighted debounce func(f func()) @@ -663,7 +663,20 @@ func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher, var n int for _, ev := range evs { keep := true - if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Write) { + // Write and rename operations are often followed by CHMOD. + // There may be valid use cases for rebuilding the site on CHMOD, + // but that will require more complex logic than this simple conditional. + // On OS X this seems to be related to Spotlight, see: + // https://github.com/go-fsnotify/fsnotify/issues/15 + // A workaround is to put your site(s) on the Spotlight exception list, + // but that may be a little mysterious for most end users. + // So, for now, we skip reload on CHMOD. + // We do have to check for WRITE though. On slower laptops a Chmod + // could be aggregated with other important events, and we still want + // to rebuild on those + if ev.Op == fsnotify.Chmod { + keep = false + } else if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Write) { if _, err := os.Stat(ev.Name); err != nil { keep = false } @@ -805,21 +818,6 @@ func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher, continue } - // Write and rename operations are often followed by CHMOD. - // There may be valid use cases for rebuilding the site on CHMOD, - // but that will require more complex logic than this simple conditional. - // On OS X this seems to be related to Spotlight, see: - // https://github.com/go-fsnotify/fsnotify/issues/15 - // A workaround is to put your site(s) on the Spotlight exception list, - // but that may be a little mysterious for most end users. - // So, for now, we skip reload on CHMOD. - // We do have to check for WRITE though. On slower laptops a Chmod - // could be aggregated with other important events, and we still want - // to rebuild on those - if ev.Op&(fsnotify.Chmod|fsnotify.Write|fsnotify.Create) == fsnotify.Chmod { - continue - } - walkAdder := func(path string, f hugofs.FileMetaInfo) error { if f.IsDir() { c.r.logger.Println("adding created directory to watchlist", path) @@ -974,6 +972,9 @@ func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher, lrl.Logf("force refresh") livereload.ForceRefresh() } + } else { + lrl.Logf("force refresh") + livereload.ForceRefresh() } if len(cssChanges) > 0 { @@ -1103,7 +1104,7 @@ func (c *hugoBuilder) rebuildSites(events []fsnotify.Event) (err error) { if err != nil { return } - err = h.Build(hugolib.BuildCfg{NoBuildLock: true, RecentlyVisited: c.visitedURLs, ErrRecovery: c.errState.wasErr()}, events...) + err = h.Build(hugolib.BuildCfg{NoBuildLock: true, RecentlyTouched: c.visitedURLs, ErrRecovery: c.errState.wasErr()}, events...) return } @@ -1119,7 +1120,7 @@ func (c *hugoBuilder) rebuildSitesForChanges(ids []identity.Identity) (err error } whatChanged := &hugolib.WhatChanged{} whatChanged.Add(ids...) - err = h.Build(hugolib.BuildCfg{NoBuildLock: true, WhatChanged: whatChanged, RecentlyVisited: c.visitedURLs, ErrRecovery: c.errState.wasErr()}) + err = h.Build(hugolib.BuildCfg{NoBuildLock: true, WhatChanged: whatChanged, RecentlyTouched: c.visitedURLs, ErrRecovery: c.errState.wasErr()}) return } diff --git a/commands/mod.go b/commands/mod.go index dda7840cc..58155f9be 100644 --- a/commands/mod.go +++ b/commands/mod.go @@ -44,16 +44,16 @@ func newModCommands() *modCommands { npmCommand := &simpleCommand{ name: "npm", - short: "Various npm helpers.", + short: "Various npm helpers", long: `Various npm (Node package manager) helpers.`, commands: []simplecobra.Commander{ &simpleCommand{ name: "pack", - short: "Experimental: Prepares and writes a composite package.json file for your project.", + short: "Experimental: Prepares and writes a composite package.json file for your project", long: `Prepares and writes a composite package.json file for your project. On first run it creates a "package.hugo.json" in the project root if not already there. This file will be used as a template file -with the base dependency set. +with the base dependency set. This set will be merged with all "package.hugo.json" files found in the dependency tree, picking the version closest to the project. @@ -80,12 +80,12 @@ so this may/will change in future versions of Hugo. commands: []simplecobra.Commander{ &simpleCommand{ name: "init", - short: "Initialize this project as a Hugo Module.", + short: "Initialize this project as a Hugo Module", long: `Initialize this project as a Hugo Module. It will try to guess the module path, but you may help by passing it as an argument, e.g: - + hugo mod init github.com/gohugoio/testshortcodes - + Note that Hugo Modules supports multi-module projects, so you can initialize a Hugo Module inside a subfolder on GitHub, as one example. `, @@ -111,7 +111,7 @@ so this may/will change in future versions of Hugo. }, &simpleCommand{ name: "verify", - short: "Verify dependencies.", + short: "Verify dependencies", long: `Verify checks that the dependencies of the current module, which are stored in a local downloaded source cache, have not been modified since being downloaded.`, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions @@ -129,7 +129,7 @@ so this may/will change in future versions of Hugo. }, &simpleCommand{ name: "graph", - short: "Print a module dependency graph.", + short: "Print a module dependency graph", long: `Print a module dependency graph with information about module status (disabled, vendored). Note that for vendored modules, that is the version listed and not the one from go.mod. `, @@ -149,7 +149,7 @@ Note that for vendored modules, that is the version listed and not the one from }, &simpleCommand{ name: "clean", - short: "Delete the Hugo Module cache for the current project.", + short: "Delete the Hugo Module cache for the current project", long: `Delete the Hugo Module cache for the current project.`, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions @@ -175,7 +175,7 @@ Note that for vendored modules, that is the version listed and not the one from }, &simpleCommand{ name: "tidy", - short: "Remove unused entries in go.mod and go.sum.", + short: "Remove unused entries in go.mod and go.sum", withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) @@ -190,7 +190,7 @@ Note that for vendored modules, that is the version listed and not the one from }, &simpleCommand{ name: "vendor", - short: "Vendor all module dependencies into the _vendor directory.", + short: "Vendor all module dependencies into the _vendor directory", long: `Vendor all module dependencies into the _vendor directory. If a module is vendored, that is where Hugo will look for it's dependencies. `, @@ -209,16 +209,16 @@ Note that for vendored modules, that is the version listed and not the one from &simpleCommand{ name: "get", - short: "Resolves dependencies in your current Hugo Project.", + short: "Resolves dependencies in your current Hugo project", long: ` -Resolves dependencies in your current Hugo Project. +Resolves dependencies in your current Hugo project. Some examples: Install the latest version possible for a given module: hugo mod get github.com/gohugoio/testshortcodes - + Install a specific version: hugo mod get github.com/gohugoio/testshortcodes@v0.3.0 diff --git a/commands/new.go b/commands/new.go index 901ea02d6..81e1c65a4 100644 --- a/commands/new.go +++ b/commands/new.go @@ -76,10 +76,8 @@ Ensure you run this within the root directory of your site.`, &simpleCommand{ name: "site", use: "site [path]", - short: "Create a new site (skeleton)", - long: `Create a new site in the provided directory. -The new site will have the correct structure, but no content or theme yet. -Use ` + "`hugo new [contentPath]`" + ` to create new content.`, + short: "Create a new site", + long: `Create a new site at the specified path.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("path needs to be provided") @@ -124,11 +122,9 @@ Use ` + "`hugo new [contentPath]`" + ` to create new content.`, &simpleCommand{ name: "theme", use: "theme [name]", - short: "Create a new theme (skeleton)", - long: `Create a new theme (skeleton) called [name] in ./themes. -New theme is a skeleton. Please add content to the touched files. Add your -name to the copyright line in the license and adjust the theme.toml file -according to your needs.`, + short: "Create a new theme", + long: `Create a new theme with the specified name in the ./themes directory. +This generates a functional theme including template examples and sample content.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("theme name needs to be provided") @@ -144,7 +140,7 @@ according to your needs.`, createpath := paths.AbsPathify(conf.configs.Base.WorkingDir, filepath.Join(conf.configs.Base.ThemesDir, args[0])) r.Println("Creating new theme in", createpath) - err = skeletons.CreateTheme(createpath, sourceFs) + err = skeletons.CreateTheme(createpath, sourceFs, format) if err != nil { return err } @@ -152,7 +148,14 @@ according to your needs.`, return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { - cmd.ValidArgsFunction = cobra.NoFileCompletions + cmd.ValidArgsFunction = func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if len(args) != 0 { + return []string{}, cobra.ShellCompDirectiveNoFileComp + } + return []string{}, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveFilterDirs + } + cmd.Flags().StringVar(&format, "format", "toml", "preferred file format (toml, yaml or json)") + _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) }, }, }, diff --git a/commands/release.go b/commands/release.go index b05226d35..059f04eb8 100644 --- a/commands/release.go +++ b/commands/release.go @@ -32,7 +32,7 @@ func newReleaseCommand() simplecobra.Commander { return &simpleCommand{ name: "release", - short: "Release a new version of Hugo.", + short: "Release a new version of Hugo", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { rel, err := releaser.New(skipPush, try, step) if err != nil { diff --git a/commands/server.go b/commands/server.go index c4a8ddd29..c8895b9a1 100644 --- a/commands/server.go +++ b/commands/server.go @@ -23,6 +23,7 @@ import ( "errors" "fmt" "io" + "maps" "net" "net/http" _ "net/http/pprof" @@ -48,6 +49,7 @@ import ( "github.com/fsnotify/fsnotify" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hugo" + "github.com/gohugoio/hugo/tpl/tplimpl" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/urls" @@ -57,7 +59,6 @@ import ( "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/livereload" - "github.com/gohugoio/hugo/tpl" "github.com/gohugoio/hugo/transform" "github.com/gohugoio/hugo/transform/livereloadinject" "github.com/spf13/afero" @@ -84,10 +85,14 @@ const ( configChangeGoWork = "go work file" ) +const ( + hugoHeaderRedirect = "X-Hugo-Redirect" +) + func newHugoBuilder(r *rootCommand, s *serverCommand, onConfigLoaded ...func(reloaded bool) error) *hugoBuilder { - var visitedURLs *types.EvictingStringQueue + var visitedURLs *types.EvictingQueue[string] if s != nil && !s.disableFastRender { - visitedURLs = types.NewEvictingStringQueue(20) + visitedURLs = types.NewEvictingQueue[string](20) } return &hugoBuilder{ r: r, @@ -115,7 +120,7 @@ func newServerCommand() *serverCommand { commands: []simplecobra.Commander{ &simpleCommand{ name: "trust", - short: "Install the local CA in the system trust store.", + short: "Install the local CA in the system trust store", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { action := "-install" if uninstall { @@ -191,9 +196,7 @@ func (f *fileChangeDetector) PrepareNew() { } f.prev = make(map[string]uint64) - for k, v := range f.current { - f.prev[k] = v - } + maps.Copy(f.prev, f.current) f.current = make(map[string]uint64) } @@ -307,64 +310,65 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, net.Listener, string w.Header().Set(header.Key, header.Value) } - if redirect := serverConfig.MatchRedirect(requestURI); !redirect.IsZero() { - // fullName := filepath.Join(dir, filepath.FromSlash(path.Clean("/"+name))) - doRedirect := true - // This matches Netlify's behavior and is needed for SPA behavior. - // See https://docs.netlify.com/routing/redirects/rewrites-proxies/ - if !redirect.Force { - path := filepath.Clean(strings.TrimPrefix(requestURI, baseURL.Path())) - if root != "" { - path = filepath.Join(root, path) - } - var fs afero.Fs - f.c.withConf(func(conf *commonConfig) { - fs = conf.fs.PublishDirServer - }) - - fi, err := fs.Stat(path) - - if err == nil { - if fi.IsDir() { - // There will be overlapping directories, so we - // need to check for a file. - _, err = fs.Stat(filepath.Join(path, "index.html")) - doRedirect = err != nil - } else { - doRedirect = false + if canRedirect(requestURI, r) { + if redirect := serverConfig.MatchRedirect(requestURI, r.Header); !redirect.IsZero() { + doRedirect := true + // This matches Netlify's behavior and is needed for SPA behavior. + // See https://docs.netlify.com/routing/redirects/rewrites-proxies/ + if !redirect.Force { + path := filepath.Clean(strings.TrimPrefix(requestURI, baseURL.Path())) + if root != "" { + path = filepath.Join(root, path) } - } - } + var fs afero.Fs + f.c.withConf(func(conf *commonConfig) { + fs = conf.fs.PublishDirServer + }) + + fi, err := fs.Stat(path) - if doRedirect { - switch redirect.Status { - case 404: - w.WriteHeader(404) - file, err := fs.Open(strings.TrimPrefix(redirect.To, baseURL.Path())) if err == nil { - defer file.Close() - io.Copy(w, file) - } else { - fmt.Fprintln(w, "
Jquery is working
'); -// diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/menutoggle.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/menutoggle.js deleted file mode 100644 index 40bda0ce9..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/menutoggle.js +++ /dev/null @@ -1,31 +0,0 @@ -// Grab any element that has the 'js-toggle' class and add an event listener for the toggleClass function -var toggleBtns = document.getElementsByClassName('js-toggle') - for (var i = 0; i < toggleBtns.length; i++) { - toggleBtns[i].addEventListener('click', toggleClass, false) - } - -function toggleClass() { - // Define the data target via the dataset "target" (e.g. data-target=".docsmenu") - var content = this.dataset.target.split(' ') - // Find any menu items that are open - var mobileCurrentlyOpen = document.querySelector('.mobilemenu:not(.dn)') - var desktopCurrentlyOpen = document.querySelector('.desktopmenu:not(.dn)') - var desktopActive = document.querySelector('.desktopmenu:not(.dn)') - - // Loop through the targets' divs - for (var i = 0; i < content.length; i++) { - var matches = document.querySelectorAll(content[i]); - //for each, if the div has the 'dn' class (which is "display:none;"), remove it, otherwise, add that class - [].forEach.call(matches, function(dom) { - dom.classList.contains('dn') ? - dom.classList.remove('dn') : - dom.classList.add('dn'); - return false; - }); - // close the currently open menu items - if (mobileCurrentlyOpen) mobileCurrentlyOpen.classList.add('dn') - if (desktopCurrentlyOpen) desktopCurrentlyOpen.classList.add('dn') - if (desktopActive) desktopActive.classList.remove('db') - - } - } diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/nojs.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/nojs.js deleted file mode 100644 index 50b5126a9..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/nojs.js +++ /dev/null @@ -1 +0,0 @@ -document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, 'js'); diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/scrolldir.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/scrolldir.js deleted file mode 100644 index 0b69978cd..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/scrolldir.js +++ /dev/null @@ -1 +0,0 @@ -var scrollDir = require('scrolldir/dist/scrolldir.auto.min.js'); diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/smoothscroll.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/smoothscroll.js deleted file mode 100644 index 4bb2d99b8..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/smoothscroll.js +++ /dev/null @@ -1,80 +0,0 @@ -// query selector targets Hugo TOC -(function() { - - 'use strict'; - - // Feature Test - if ('querySelector' in document && 'addEventListener' in window && Array.prototype.forEach) { - - // Function to animate the scroll - var smoothScroll = function(anchor, duration) { - - // Calculate how far and how fast to scroll - var startLocation = window.pageYOffset; - var endLocation = anchor.offsetTop; - var distance = endLocation - startLocation; - var increments = distance / (duration / 16); - var stopAnimation; - - // Scroll the page by an increment, and check if it's time to stop - var animateScroll = function() { - window.scrollBy(0, increments); - stopAnimation(); - }; - - // If scrolling down - if (increments >= 0) { - // Stop animation when you reach the anchor OR the bottom of the page - stopAnimation = function() { - var travelled = window.pageYOffset; - if ((travelled >= (endLocation - increments)) || ((window.innerHeight + travelled) >= document.body.offsetHeight)) { - clearInterval(runAnimation); - } - }; - } - // If scrolling up - else { - // Stop animation when you reach the anchor OR the top of the page - stopAnimation = function() { - var travelled = window.pageYOffset; - if (travelled <= (endLocation || 0)) { - clearInterval(runAnimation); - } - }; - } - - // Loop the animation function - var runAnimation = setInterval(animateScroll, 16); - - }; - - // Define smooth scroll links - var scrollToggle = document.querySelectorAll('#TableOfContents ul li a'); - - // For each smooth scroll link - [].forEach.call(scrollToggle, function(toggle) { - - // When the smooth scroll link is clicked - toggle.addEventListener('click', function(e) { - - // Prevent the default link behavior - e.preventDefault(); - - // Get anchor link and calculate distance from the top - var dataID = toggle.getAttribute('href'); - var dataTarget = document.querySelector(dataID); - var dataSpeed = toggle.getAttribute('data-speed'); - - // If the anchor exists - if (dataTarget) { - // Scroll to the anchor - smoothScroll(dataTarget, dataSpeed || 500); - } - - }, false); - - }); - - } - -})(); diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/tabs.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/tabs.js deleted file mode 100644 index a689d474e..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/tabs.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Scripts which manages Code Toggle tabs. - */ -var i; -// store tabs variable -var allTabs = document.querySelectorAll("[data-toggle-tab]"); -var allPanes = document.querySelectorAll("[data-pane]"); - -function toggleTabs(event) { - - if(event.target){ - event.preventDefault(); - var clickedTab = event.currentTarget; - var targetKey = clickedTab.getAttribute("data-toggle-tab") - }else { - var targetKey = event - } - // We store the config language selected in users' localStorage - if(window.localStorage){ - window.localStorage.setItem("configLangPref", targetKey) - } - var selectedTabs = document.querySelectorAll("[data-toggle-tab='" + targetKey + "']"); - var selectedPanes = document.querySelectorAll("[data-pane='" + targetKey + "']"); - - for (var i = 0; i < allTabs.length; i++) { - allTabs[i].classList.remove("active"); - allPanes[i].classList.remove("active"); - } - - for (var i = 0; i < selectedTabs.length; i++) { - selectedTabs[i].classList.add("active"); - selectedPanes[i].classList.add("active"); - } - -} - -for (i = 0; i < allTabs.length; i++) { - allTabs[i].addEventListener("click", toggleTabs) -} -// Upon page load, if user has a preferred language in its localStorage, tabs are set to it. -if(window.localStorage.getItem('configLangPref')) { - toggleTabs(window.localStorage.getItem('configLangPref')) -} diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css deleted file mode 100644 index b9518491c..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css +++ /dev/null @@ -1,5344 +0,0 @@ -/* muli-200normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: - local('Muli Extra Light '), - local('Muli-Extra Light'), - url(/fonts/muli-latin-200.woff2) format('woff2'), - url(/fonts/muli-latin-200.woff) format('woff'); /* Modern Browsers */ -} -/* muli-200italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 200; - src: - local('Muli Extra Light italic'), - local('Muli-Extra Lightitalic'), - url(/fonts/muli-latin-200italic.woff2) format('woff2'), - url(/fonts/muli-latin-200italic.woff) format('woff'); /* Modern Browsers */ -} -/* muli-300normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: - local('Muli Light '), - local('Muli-Light'), - url(/fonts/muli-latin-300.woff2) format('woff2'), - url(/fonts/muli-latin-300.woff) format('woff'); /* Modern Browsers */ -} -/* muli-300italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: - local('Muli Light italic'), - local('Muli-Lightitalic'), - url(/fonts/muli-latin-300italic.woff2) format('woff2'), - url(/fonts/muli-latin-300italic.woff) format('woff'); /* Modern Browsers */ -} -/* muli-400normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: - local('Muli Regular '), - local('Muli-Regular'), - url(/fonts/muli-latin-400.woff2) format('woff2'), - url(/fonts/muli-latin-400.woff) format('woff'); /* Modern Browsers */ -} -/* muli-400italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: - local('Muli Regular italic'), - local('Muli-Regularitalic'), - url(/fonts/muli-latin-400italic.woff2) format('woff2'), - url(/fonts/muli-latin-400italic.woff) format('woff'); /* Modern Browsers */ -} -/* muli-600normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: - local('Muli SemiBold '), - local('Muli-SemiBold'), - url(/fonts/muli-latin-600.woff2) format('woff2'), - url(/fonts/muli-latin-600.woff) format('woff'); /* Modern Browsers */ -} -/* muli-600italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: - local('Muli SemiBold italic'), - local('Muli-SemiBolditalic'), - url(/fonts/muli-latin-600italic.woff2) format('woff2'), - url(/fonts/muli-latin-600italic.woff) format('woff'); /* Modern Browsers */ -} -/* muli-700normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: - local('Muli Bold '), - local('Muli-Bold'), - url(/fonts/muli-latin-700.woff2) format('woff2'), - url(/fonts/muli-latin-700.woff) format('woff'); /* Modern Browsers */ -} -/* muli-700italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: - local('Muli Bold italic'), - local('Muli-Bolditalic'), - url(/fonts/muli-latin-700italic.woff2) format('woff2'), - url(/fonts/muli-latin-700italic.woff) format('woff'); /* Modern Browsers */ -} -/* muli-800normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: - local('Muli ExtraBold '), - local('Muli-ExtraBold'), - url(/fonts/muli-latin-800.woff2) format('woff2'), - url(/fonts/muli-latin-800.woff) format('woff'); /* Modern Browsers */ -} -/* muli-800italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 800; - src: - local('Muli ExtraBold italic'), - local('Muli-ExtraBolditalic'), - url(/fonts/muli-latin-800italic.woff2) format('woff2'), - url(/fonts/muli-latin-800italic.woff) format('woff'); /* Modern Browsers */ -} -/* muli-900normal - latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: - local('Muli Black '), - local('Muli-Black'), - url(/fonts/muli-latin-900.woff2) format('woff2'), - url(/fonts/muli-latin-900.woff) format('woff'); /* Modern Browsers */ -} -/* muli-900italic - latin */ -@font-face { - font-family: 'Muli'; - font-style: italic; - font-display: swap; - font-weight: 900; - src: - local('Muli Black italic'), - local('Muli-Blackitalic'), - url(/fonts/muli-latin-900italic.woff2) format('woff2'), - url(/fonts/muli-latin-900italic.woff) format('woff'); /* Modern Browsers */ -} - - -/*Base Styles*/ -/*! TACHYONS v4.7.0 | http://tachyons.io */ -/* - * NOTE: The Tachyons folder is for backup/reference only. This file references the module - * ________ ______ - * ___ __/_____ _________ /______ ______________________ - * __ / _ __ `/ ___/_ __ \_ / / / __ \_ __ \_ ___/ - * _ / / /_/ // /__ _ / / / /_/ // /_/ / / / /(__ ) - * /_/ \__,_/ \___/ /_/ /_/_\__, / \____//_/ /_//____/ - * /____/ - * - * TABLE OF CONTENTS - * - * 1. External Library Includes - * - Normalize.css | http://normalize.css.github.io - * 2. Tachyons Modules - * 3. Variables - * - Media Queries - * - Colors - * 4. Debugging - * - Debug all - * - Debug children - * - */ -/* External Library Includes */ -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - -webkit-box-sizing: content-box; - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; /* 2 */ -} -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sub { - bottom: -0.25em; -} -sup { - top: -0.5em; -} -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { /* 1 */ - overflow: visible; -} -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { /* 1 */ - text-transform: none; -} -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - -webkit-box-sizing: border-box; - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type="checkbox"], -[type="radio"] { - -webkit-box-sizing: border-box; - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} -/* Modules */ -/* - - BOX SIZING - -*/ -html, -body, -div, -article, -aside, -section, -main, -nav, -footer, -header, -form, -fieldset, -legend, -pre, -code, -a, -h1,h2,h3,h4,h5,h6, -p, -ul, -ol, -li, -dl, -dt, -dd, -blockquote, -figcaption, -figure, -textarea, -table, -td, -th, -tr, -input[type="email"], -input[type="number"], -input[type="password"], -input[type="tel"], -input[type="text"], -input[type="url"], -.border-box { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -/*@import 'tachyons/src/_aspect-ratios';*/ -/* - - IMAGES - Docs: http://tachyons.io/docs/elements/images/ - -*/ -/* Responsive images! */ -img { max-width: 100%; } -/* - - BACKGROUND SIZE - Docs: http://tachyons.io/docs/themes/background-size/ - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* - Often used in combination with background image set as an inline style - on an html element. -*/ -.cover { background-size: cover!important; } -.contain { background-size: contain!important; } -@media screen and (min-width: 30em) { - .cover-ns { background-size: cover!important; } - .contain-ns { background-size: contain!important; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .cover-m { background-size: cover!important; } - .contain-m { background-size: contain!important; } -} -@media screen and (min-width: 60em) { - .cover-l { background-size: cover!important; } - .contain-l { background-size: contain!important; } -} -/* - - BACKGROUND POSITION - - Base: - bg = background - - Modifiers: - -center = center center - -top = top center - -right = center right - -bottom = bottom center - -left = center left - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - - */ -.bg-center { - background-repeat: no-repeat; - background-position: center center; -} -.bg-top { - background-repeat: no-repeat; - background-position: top center; -} -.bg-right { - background-repeat: no-repeat; - background-position: center right; -} -.bg-bottom { - background-repeat: no-repeat; - background-position: bottom center; -} -.bg-left { - background-repeat: no-repeat; - background-position: center left; -} -@media screen and (min-width: 30em) { - .bg-center-ns { - background-repeat: no-repeat; - background-position: center center; - } - - .bg-top-ns { - background-repeat: no-repeat; - background-position: top center; - } - - .bg-right-ns { - background-repeat: no-repeat; - background-position: center right; - } - - .bg-bottom-ns { - background-repeat: no-repeat; - background-position: bottom center; - } - - .bg-left-ns { - background-repeat: no-repeat; - background-position: center left; - } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .bg-center-m { - background-repeat: no-repeat; - background-position: center center; - } - - .bg-top-m { - background-repeat: no-repeat; - background-position: top center; - } - - .bg-right-m { - background-repeat: no-repeat; - background-position: center right; - } - - .bg-bottom-m { - background-repeat: no-repeat; - background-position: bottom center; - } - - .bg-left-m { - background-repeat: no-repeat; - background-position: center left; - } -} -@media screen and (min-width: 60em) { - .bg-center-l { - background-repeat: no-repeat; - background-position: center center; - } - - .bg-top-l { - background-repeat: no-repeat; - background-position: top center; - } - - .bg-right-l { - background-repeat: no-repeat; - background-position: center right; - } - - .bg-bottom-l { - background-repeat: no-repeat; - background-position: bottom center; - } - - .bg-left-l { - background-repeat: no-repeat; - background-position: center left; - } -} -/*@import 'tachyons/src/_outlines';*/ -/* - - BORDERS - Docs: http://tachyons.io/docs/themes/borders/ - - Base: - b = border - - Modifiers: - a = all - t = top - r = right - b = bottom - l = left - n = none - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.ba { border-style: solid; border-width: 1px; } -.bt { border-top-style: solid; border-top-width: 1px; } -.br { border-right-style: solid; border-right-width: 1px; } -.bb { border-bottom-style: solid; border-bottom-width: 1px; } -.bl { border-left-style: solid; border-left-width: 1px; } -.bn { border-style: none; border-width: 0; } -@media screen and (min-width: 30em) { - .ba-ns { border-style: solid; border-width: 1px; } - .bt-ns { border-top-style: solid; border-top-width: 1px; } - .br-ns { border-right-style: solid; border-right-width: 1px; } - .bb-ns { border-bottom-style: solid; border-bottom-width: 1px; } - .bl-ns { border-left-style: solid; border-left-width: 1px; } - .bn-ns { border-style: none; border-width: 0; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .ba-m { border-style: solid; border-width: 1px; } - .bt-m { border-top-style: solid; border-top-width: 1px; } - .br-m { border-right-style: solid; border-right-width: 1px; } - .bb-m { border-bottom-style: solid; border-bottom-width: 1px; } - .bl-m { border-left-style: solid; border-left-width: 1px; } - .bn-m { border-style: none; border-width: 0; } -} -@media screen and (min-width: 60em) { - .ba-l { border-style: solid; border-width: 1px; } - .bt-l { border-top-style: solid; border-top-width: 1px; } - .br-l { border-right-style: solid; border-right-width: 1px; } - .bb-l { border-bottom-style: solid; border-bottom-width: 1px; } - .bl-l { border-left-style: solid; border-left-width: 1px; } - .bn-l { border-style: none; border-width: 0; } -} -/* - - BORDER COLORS - Docs: http://tachyons.io/docs/themes/borders/ - - Border colors can be used to extend the base - border classes ba,bt,bb,br,bl found in the _borders.css file. - - The base border class by default will set the color of the border - to that of the current text color. These classes are for the cases - where you desire for the text and border colors to be different. - - Base: - b = border - - Modifiers: - --color-name = each color variable name is also a border color name - -*/ -.b--black { border-color: #000; } -.b--near-black { border-color: #111; } -.b--dark-gray { border-color: #333; } -.b--mid-gray { border-color: #555; } -.b--gray { border-color: #777; } -.b--silver { border-color: #999; } -.b--light-silver { border-color: #aaa; } -.b--moon-gray { border-color: #ccc; } -.b--light-gray { border-color: #eee; } -.b--near-white { border-color: #f4f4f4; } -.b--white { border-color: #fff; } -.b--white-90 { border-color: rgba(255, 255, 255, .9); } -.b--white-80 { border-color: rgba(255, 255, 255, .8); } -.b--white-70 { border-color: rgba(255, 255, 255, .7); } -.b--white-60 { border-color: rgba(255, 255, 255, .6); } -.b--white-50 { border-color: rgba(255, 255, 255, .5); } -.b--white-40 { border-color: rgba(255, 255, 255, .4); } -.b--white-30 { border-color: rgba(255, 255, 255, .3); } -.b--white-20 { border-color: rgba(255, 255, 255, .2); } -.b--white-10 { border-color: rgba(255, 255, 255, .1); } -.b--white-05 { border-color: rgba(255, 255, 255, .05); } -.b--white-025 { border-color: rgba(255, 255, 255, .025); } -.b--white-0125 { border-color: rgba(255, 255, 255, .0125); } -.b--black-90 { border-color: rgba(0, 0, 0, .9); } -.b--black-80 { border-color: rgba(0, 0, 0, .8); } -.b--black-70 { border-color: rgba(0, 0, 0, .7); } -.b--black-60 { border-color: rgba(0, 0, 0, .6); } -.b--black-50 { border-color: rgba(0, 0, 0, .5); } -.b--black-40 { border-color: rgba(0, 0, 0, .4); } -.b--black-30 { border-color: rgba(0, 0, 0, .3); } -.b--black-20 { border-color: rgba(0, 0, 0, .2); } -.b--black-10 { border-color: rgba(0, 0, 0, .1); } -.b--black-05 { border-color: rgba(0, 0, 0, .05); } -.b--black-025 { border-color: rgba(0, 0, 0, .025); } -.b--black-0125 { border-color: rgba(0, 0, 0, .0125); } -.b--dark-red { border-color: #e7040f; } -.b--red { border-color: #ff4136; } -.b--light-red { border-color: #ff725c; } -.b--orange { border-color: #ff6300; } -.b--gold { border-color: #ffb700; } -.b--yellow { border-color: #ffd700; } -.b--light-yellow { border-color: #fbf1a9; } -.b--purple { border-color: #5e2ca5; } -.b--light-purple { border-color: #a463f2; } -.b--dark-pink { border-color: #d5008f; } -.b--hot-pink { border-color: #ff41b4; } -.b--pink { border-color: #ff80cc; } -.b--light-pink { border-color: #ffa3d7; } -.b--dark-green { border-color: #137752; } -.b--green { border-color: #19a974; } -.b--light-green { border-color: #9eebcf; } -.b--navy { border-color: #001b44; } -.b--dark-blue { border-color: #00449e; } -.b--blue { border-color: #0594CB; } -.b--light-blue { border-color: #96ccff; } -.b--lightest-blue { border-color: #cdecff; } -.b--washed-blue { border-color: #f6fffe; } -.b--washed-green { border-color: #e8fdf5; } -.b--washed-yellow { border-color: #fffceb; } -.b--washed-red { border-color: #ffdfdf; } -.b--transparent { border-color: transparent; } -.b--inherit { border-color: inherit; } -/* - - BORDER RADIUS - Docs: http://tachyons.io/docs/themes/border-radius/ - - Base: - br = border-radius - - Modifiers: - 0 = 0/none - 1 = 1st step in scale - 2 = 2nd step in scale - 3 = 3rd step in scale - 4 = 4th step in scale - - Literal values: - -100 = 100% - -pill = 9999px - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.br0 { border-radius: 0; } -.br1 { border-radius: .125rem; } -.br2 { border-radius: .25rem; } -.br3 { border-radius: .5rem; } -.br4 { border-radius: 1rem; } -.br-100 { border-radius: 100%; } -.br-pill { border-radius: 9999px; } -.br--bottom { - border-top-left-radius: 0; - border-top-right-radius: 0; - } -.br--top { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } -.br--right { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } -.br--left { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } -@media screen and (min-width: 30em) { - .br0-ns { border-radius: 0; } - .br1-ns { border-radius: .125rem; } - .br2-ns { border-radius: .25rem; } - .br3-ns { border-radius: .5rem; } - .br4-ns { border-radius: 1rem; } - .br-100-ns { border-radius: 100%; } - .br-pill-ns { border-radius: 9999px; } - .br--bottom-ns { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - .br--top-ns { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } - .br--right-ns { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .br--left-ns { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .br0-m { border-radius: 0; } - .br1-m { border-radius: .125rem; } - .br2-m { border-radius: .25rem; } - .br3-m { border-radius: .5rem; } - .br4-m { border-radius: 1rem; } - .br-100-m { border-radius: 100%; } - .br-pill-m { border-radius: 9999px; } - .br--bottom-m { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - .br--top-m { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } - .br--right-m { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .br--left-m { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } -} -@media screen and (min-width: 60em) { - .br0-l { border-radius: 0; } - .br1-l { border-radius: .125rem; } - .br2-l { border-radius: .25rem; } - .br3-l { border-radius: .5rem; } - .br4-l { border-radius: 1rem; } - .br-100-l { border-radius: 100%; } - .br-pill-l { border-radius: 9999px; } - .br--bottom-l { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - .br--top-l { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } - .br--right-l { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .br--left-l { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } -} -/* - - BORDER STYLES - Docs: http://tachyons.io/docs/themes/borders/ - - Depends on base border module in _borders.css - - Base: - b = border-style - - Modifiers: - --none = none - --dotted = dotted - --dashed = dashed - --solid = solid - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - - */ -.b--dotted { border-style: dotted; } -.b--dashed { border-style: dashed; } -.b--solid { border-style: solid; } -.b--none { border-style: none; } -@media screen and (min-width: 30em) { - .b--dotted-ns { border-style: dotted; } - .b--dashed-ns { border-style: dashed; } - .b--solid-ns { border-style: solid; } - .b--none-ns { border-style: none; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .b--dotted-m { border-style: dotted; } - .b--dashed-m { border-style: dashed; } - .b--solid-m { border-style: solid; } - .b--none-m { border-style: none; } -} -@media screen and (min-width: 60em) { - .b--dotted-l { border-style: dotted; } - .b--dashed-l { border-style: dashed; } - .b--solid-l { border-style: solid; } - .b--none-l { border-style: none; } -} -/* - - BORDER WIDTHS - Docs: http://tachyons.io/docs/themes/borders/ - - Base: - bw = border-width - - Modifiers: - 0 = 0 width border - 1 = 1st step in border-width scale - 2 = 2nd step in border-width scale - 3 = 3rd step in border-width scale - 4 = 4th step in border-width scale - 5 = 5th step in border-width scale - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.bw0 { border-width: 0; } -.bw1 { border-width: .125rem; } -.bw2 { border-width: .25rem; } -.bw3 { border-width: .5rem; } -.bw4 { border-width: 1rem; } -.bw5 { border-width: 2rem; } -/* Resets */ -.bt-0 { border-top-width: 0; } -.br-0 { border-right-width: 0; } -.bb-0 { border-bottom-width: 0; } -.bl-0 { border-left-width: 0; } -@media screen and (min-width: 30em) { - .bw0-ns { border-width: 0; } - .bw1-ns { border-width: .125rem; } - .bw2-ns { border-width: .25rem; } - .bw3-ns { border-width: .5rem; } - .bw4-ns { border-width: 1rem; } - .bw5-ns { border-width: 2rem; } - .bt-0-ns { border-top-width: 0; } - .br-0-ns { border-right-width: 0; } - .bb-0-ns { border-bottom-width: 0; } - .bl-0-ns { border-left-width: 0; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .bw0-m { border-width: 0; } - .bw1-m { border-width: .125rem; } - .bw2-m { border-width: .25rem; } - .bw3-m { border-width: .5rem; } - .bw4-m { border-width: 1rem; } - .bw5-m { border-width: 2rem; } - .bt-0-m { border-top-width: 0; } - .br-0-m { border-right-width: 0; } - .bb-0-m { border-bottom-width: 0; } - .bl-0-m { border-left-width: 0; } -} -@media screen and (min-width: 60em) { - .bw0-l { border-width: 0; } - .bw1-l { border-width: .125rem; } - .bw2-l { border-width: .25rem; } - .bw3-l { border-width: .5rem; } - .bw4-l { border-width: 1rem; } - .bw5-l { border-width: 2rem; } - .bt-0-l { border-top-width: 0; } - .br-0-l { border-right-width: 0; } - .bb-0-l { border-bottom-width: 0; } - .bl-0-l { border-left-width: 0; } -} -/* - - BOX-SHADOW - Docs: http://tachyons.io/docs/themes/box-shadow/ - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - - */ -.shadow-1 { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } -.shadow-2 { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } -.shadow-3 { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } -.shadow-4 { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } -.shadow-5 { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } -@media screen and (min-width: 30em) { - .shadow-1-ns { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } - .shadow-2-ns { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } - .shadow-3-ns { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } - .shadow-4-ns { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } - .shadow-5-ns { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .shadow-1-m { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } - .shadow-2-m { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } - .shadow-3-m { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } - .shadow-4-m { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } - .shadow-5-m { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } -} -@media screen and (min-width: 60em) { - .shadow-1-l { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } - .shadow-2-l { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } - .shadow-3-l { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } - .shadow-4-l { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } - .shadow-5-l { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } -} -/*@import 'tachyons/src/_code';*/ -/* - - COORDINATES - Docs: http://tachyons.io/docs/layout/position/ - - Use in combination with the position module. - - Base: - top - bottom - right - left - - Modifiers: - -0 = literal value 0 - -1 = literal value 1 - -2 = literal value 2 - --1 = literal value -1 - --2 = literal value -2 - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.top-0 { top: 0; } -.right-0 { right: 0; } -.bottom-0 { bottom: 0; } -.left-0 { left: 0; } -.top-1 { top: 1rem; } -.right-1 { right: 1rem; } -.bottom-1 { bottom: 1rem; } -.left-1 { left: 1rem; } -.top-2 { top: 2rem; } -.right-2 { right: 2rem; } -.bottom-2 { bottom: 2rem; } -.left-2 { left: 2rem; } -.top--1 { top: -1rem; } -.right--1 { right: -1rem; } -.bottom--1 { bottom: -1rem; } -.left--1 { left: -1rem; } -.top--2 { top: -2rem; } -.right--2 { right: -2rem; } -.bottom--2 { bottom: -2rem; } -.left--2 { left: -2rem; } -.absolute--fill { - top: 0; - right: 0; - bottom: 0; - left: 0; -} -@media screen and (min-width: 30em) { - .top-0-ns { top: 0; } - .left-0-ns { left: 0; } - .right-0-ns { right: 0; } - .bottom-0-ns { bottom: 0; } - .top-1-ns { top: 1rem; } - .left-1-ns { left: 1rem; } - .right-1-ns { right: 1rem; } - .bottom-1-ns { bottom: 1rem; } - .top-2-ns { top: 2rem; } - .left-2-ns { left: 2rem; } - .right-2-ns { right: 2rem; } - .bottom-2-ns { bottom: 2rem; } - .top--1-ns { top: -1rem; } - .right--1-ns { right: -1rem; } - .bottom--1-ns { bottom: -1rem; } - .left--1-ns { left: -1rem; } - .top--2-ns { top: -2rem; } - .right--2-ns { right: -2rem; } - .bottom--2-ns { bottom: -2rem; } - .left--2-ns { left: -2rem; } - .absolute--fill-ns { - top: 0; - right: 0; - bottom: 0; - left: 0; - } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .top-0-m { top: 0; } - .left-0-m { left: 0; } - .right-0-m { right: 0; } - .bottom-0-m { bottom: 0; } - .top-1-m { top: 1rem; } - .left-1-m { left: 1rem; } - .right-1-m { right: 1rem; } - .bottom-1-m { bottom: 1rem; } - .top-2-m { top: 2rem; } - .left-2-m { left: 2rem; } - .right-2-m { right: 2rem; } - .bottom-2-m { bottom: 2rem; } - .top--1-m { top: -1rem; } - .right--1-m { right: -1rem; } - .bottom--1-m { bottom: -1rem; } - .left--1-m { left: -1rem; } - .top--2-m { top: -2rem; } - .right--2-m { right: -2rem; } - .bottom--2-m { bottom: -2rem; } - .left--2-m { left: -2rem; } - .absolute--fill-m { - top: 0; - right: 0; - bottom: 0; - left: 0; - } -} -@media screen and (min-width: 60em) { - .top-0-l { top: 0; } - .left-0-l { left: 0; } - .right-0-l { right: 0; } - .bottom-0-l { bottom: 0; } - .top-1-l { top: 1rem; } - .left-1-l { left: 1rem; } - .right-1-l { right: 1rem; } - .bottom-1-l { bottom: 1rem; } - .top-2-l { top: 2rem; } - .left-2-l { left: 2rem; } - .right-2-l { right: 2rem; } - .bottom-2-l { bottom: 2rem; } - .top--1-l { top: -1rem; } - .right--1-l { right: -1rem; } - .bottom--1-l { bottom: -1rem; } - .left--1-l { left: -1rem; } - .top--2-l { top: -2rem; } - .right--2-l { right: -2rem; } - .bottom--2-l { bottom: -2rem; } - .left--2-l { left: -2rem; } - .absolute--fill-l { - top: 0; - right: 0; - bottom: 0; - left: 0; - } -} -/* - - CLEARFIX - http://tachyons.io/docs/layout/clearfix/ - -*/ -/* Nicolas Gallaghers Clearfix solution - Ref: http://nicolasgallagher.com/micro-clearfix-hack/ */ -.cf:before, -.cf:after { content: " "; display: table; } -.cf:after { clear: both; } -.cf { *zoom: 1; } -.cl { clear: left; } -.cr { clear: right; } -.cb { clear: both; } -.cn { clear: none; } -@media screen and (min-width: 30em) { - .cl-ns { clear: left; } - .cr-ns { clear: right; } - .cb-ns { clear: both; } - .cn-ns { clear: none; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .cl-m { clear: left; } - .cr-m { clear: right; } - .cb-m { clear: both; } - .cn-m { clear: none; } -} -@media screen and (min-width: 60em) { - .cl-l { clear: left; } - .cr-l { clear: right; } - .cb-l { clear: both; } - .cn-l { clear: none; } -} -/* - - DISPLAY - Docs: http://tachyons.io/docs/layout/display - - Base: - d = display - - Modifiers: - n = none - b = block - ib = inline-block - it = inline-table - t = table - tc = table-cell - t-row = table-row - t-columm = table-column - t-column-group = table-column-group - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.dn { display: none; } -.di { display: inline; } -.db { display: block; } -.dib { display: inline-block; } -.dit { display: inline-table; } -.dt { display: table; } -.dtc { display: table-cell; } -.dt-row { display: table-row; } -.dt-row-group { display: table-row-group; } -.dt-column { display: table-column; } -.dt-column-group { display: table-column-group; } -/* - This will set table to full width and then - all cells will be equal width -*/ -.dt--fixed { - table-layout: fixed; - width: 100%; -} -@media screen and (min-width: 30em) { - .dn-ns { display: none; } - .di-ns { display: inline; } - .db-ns { display: block; } - .dib-ns { display: inline-block; } - .dit-ns { display: inline-table; } - .dt-ns { display: table; } - .dtc-ns { display: table-cell; } - .dt-row-ns { display: table-row; } - .dt-row-group-ns { display: table-row-group; } - .dt-column-ns { display: table-column; } - .dt-column-group-ns { display: table-column-group; } - - .dt--fixed-ns { - table-layout: fixed; - width: 100%; - } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .dn-m { display: none; } - .di-m { display: inline; } - .db-m { display: block; } - .dib-m { display: inline-block; } - .dit-m { display: inline-table; } - .dt-m { display: table; } - .dtc-m { display: table-cell; } - .dt-row-m { display: table-row; } - .dt-row-group-m { display: table-row-group; } - .dt-column-m { display: table-column; } - .dt-column-group-m { display: table-column-group; } - - .dt--fixed-m { - table-layout: fixed; - width: 100%; - } -} -@media screen and (min-width: 60em) { - .dn-l { display: none; } - .di-l { display: inline; } - .db-l { display: block; } - .dib-l { display: inline-block; } - .dit-l { display: inline-table; } - .dt-l { display: table; } - .dtc-l { display: table-cell; } - .dt-row-l { display: table-row; } - .dt-row-group-l { display: table-row-group; } - .dt-column-l { display: table-column; } - .dt-column-group-l { display: table-column-group; } - - .dt--fixed-l { - table-layout: fixed; - width: 100%; - } -} -/* - - FLEXBOX - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.flex { display: -webkit-box; display: -ms-flexbox; display: flex; } -.inline-flex { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } -/* 1. Fix for Chrome 44 bug. - * https://code.google.com/p/chromium/issues/detail?id=506893 */ -.flex-auto { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - min-width: 0; /* 1 */ - min-height: 0; /* 1 */ -} -.flex-none { -webkit-box-flex: 0; -ms-flex: none; flex: none; } -.flex-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } -.flex-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } -.flex-wrap { -ms-flex-wrap: wrap; flex-wrap: wrap; } -.flex-nowrap { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } -.flex-wrap-reverse { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } -.flex-column-reverse { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } -.flex-row-reverse { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } -.items-start { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } -.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; } -.items-baseline { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } -.items-stretch { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } -.self-start { -ms-flex-item-align: start; align-self: flex-start; } -.self-end { -ms-flex-item-align: end; align-self: flex-end; } -.self-center { -ms-flex-item-align: center; align-self: center; } -.self-baseline { -ms-flex-item-align: baseline; align-self: baseline; } -.self-stretch { -ms-flex-item-align: stretch; align-self: stretch; } -.justify-start { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } -.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; } -.justify-around { -ms-flex-pack: distribute; justify-content: space-around; } -.content-start { -ms-flex-line-pack: start; align-content: flex-start; } -.content-end { -ms-flex-line-pack: end; align-content: flex-end; } -.content-center { -ms-flex-line-pack: center; align-content: center; } -.content-between { -ms-flex-line-pack: justify; align-content: space-between; } -.content-around { -ms-flex-line-pack: distribute; align-content: space-around; } -.content-stretch { -ms-flex-line-pack: stretch; align-content: stretch; } -.order-0 { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } -.order-1 { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } -.order-2 { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } -.order-3 { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } -.order-4 { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } -.order-5 { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } -.order-6 { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } -.order-7 { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } -.order-8 { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } -.order-last { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } -.flex-grow-0 { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } -.flex-grow-1 { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } -.flex-shrink-0 { -ms-flex-negative: 0; flex-shrink: 0; } -.flex-shrink-1 { -ms-flex-negative: 1; flex-shrink: 1; } -@media screen and (min-width: 30em) { - .flex-ns { display: -webkit-box; display: -ms-flexbox; display: flex; } - .inline-flex-ns { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } - .flex-auto-ns { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - min-width: 0; /* 1 */ - min-height: 0; /* 1 */ - } - .flex-none-ns { -webkit-box-flex: 0; -ms-flex: none; flex: none; } - .flex-column-ns { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } - .flex-row-ns { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } - .flex-wrap-ns { -ms-flex-wrap: wrap; flex-wrap: wrap; } - .flex-nowrap-ns { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } - .flex-wrap-reverse-ns { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } - .flex-column-reverse-ns { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } - .flex-row-reverse-ns { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } - .items-start-ns { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } - .items-end-ns { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } - .items-center-ns { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } - .items-baseline-ns { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } - .items-stretch-ns { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } - - .self-start-ns { -ms-flex-item-align: start; align-self: flex-start; } - .self-end-ns { -ms-flex-item-align: end; align-self: flex-end; } - .self-center-ns { -ms-flex-item-align: center; align-self: center; } - .self-baseline-ns { -ms-flex-item-align: baseline; align-self: baseline; } - .self-stretch-ns { -ms-flex-item-align: stretch; align-self: stretch; } - - .justify-start-ns { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } - .justify-end-ns { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } - .justify-center-ns { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } - .justify-between-ns { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } - .justify-around-ns { -ms-flex-pack: distribute; justify-content: space-around; } - - .content-start-ns { -ms-flex-line-pack: start; align-content: flex-start; } - .content-end-ns { -ms-flex-line-pack: end; align-content: flex-end; } - .content-center-ns { -ms-flex-line-pack: center; align-content: center; } - .content-between-ns { -ms-flex-line-pack: justify; align-content: space-between; } - .content-around-ns { -ms-flex-line-pack: distribute; align-content: space-around; } - .content-stretch-ns { -ms-flex-line-pack: stretch; align-content: stretch; } - - .order-0-ns { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } - .order-1-ns { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } - .order-2-ns { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } - .order-3-ns { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } - .order-4-ns { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } - .order-5-ns { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } - .order-6-ns { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } - .order-7-ns { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } - .order-8-ns { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } - .order-last-ns { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } - - .flex-grow-0-ns { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } - .flex-grow-1-ns { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } - - .flex-shrink-0-ns { -ms-flex-negative: 0; flex-shrink: 0; } - .flex-shrink-1-ns { -ms-flex-negative: 1; flex-shrink: 1; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .flex-m { display: -webkit-box; display: -ms-flexbox; display: flex; } - .inline-flex-m { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } - .flex-auto-m { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - min-width: 0; /* 1 */ - min-height: 0; /* 1 */ - } - .flex-none-m { -webkit-box-flex: 0; -ms-flex: none; flex: none; } - .flex-column-m { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } - .flex-row-m { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } - .flex-wrap-m { -ms-flex-wrap: wrap; flex-wrap: wrap; } - .flex-nowrap-m { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } - .flex-wrap-reverse-m { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } - .flex-column-reverse-m { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } - .flex-row-reverse-m { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } - .items-start-m { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } - .items-end-m { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } - .items-center-m { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } - .items-baseline-m { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } - .items-stretch-m { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } - - .self-start-m { -ms-flex-item-align: start; align-self: flex-start; } - .self-end-m { -ms-flex-item-align: end; align-self: flex-end; } - .self-center-m { -ms-flex-item-align: center; align-self: center; } - .self-baseline-m { -ms-flex-item-align: baseline; align-self: baseline; } - .self-stretch-m { -ms-flex-item-align: stretch; align-self: stretch; } - - .justify-start-m { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } - .justify-end-m { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } - .justify-center-m { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } - .justify-between-m { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } - .justify-around-m { -ms-flex-pack: distribute; justify-content: space-around; } - - .content-start-m { -ms-flex-line-pack: start; align-content: flex-start; } - .content-end-m { -ms-flex-line-pack: end; align-content: flex-end; } - .content-center-m { -ms-flex-line-pack: center; align-content: center; } - .content-between-m { -ms-flex-line-pack: justify; align-content: space-between; } - .content-around-m { -ms-flex-line-pack: distribute; align-content: space-around; } - .content-stretch-m { -ms-flex-line-pack: stretch; align-content: stretch; } - - .order-0-m { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } - .order-1-m { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } - .order-2-m { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } - .order-3-m { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } - .order-4-m { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } - .order-5-m { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } - .order-6-m { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } - .order-7-m { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } - .order-8-m { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } - .order-last-m { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } - - .flex-grow-0-m { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } - .flex-grow-1-m { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } - - .flex-shrink-0-m { -ms-flex-negative: 0; flex-shrink: 0; } - .flex-shrink-1-m { -ms-flex-negative: 1; flex-shrink: 1; } -} -@media screen and (min-width: 60em) { - .flex-l { display: -webkit-box; display: -ms-flexbox; display: flex; } - .inline-flex-l { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } - .flex-auto-l { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - min-width: 0; /* 1 */ - min-height: 0; /* 1 */ - } - .flex-none-l { -webkit-box-flex: 0; -ms-flex: none; flex: none; } - .flex-column-l { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } - .flex-row-l { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } - .flex-wrap-l { -ms-flex-wrap: wrap; flex-wrap: wrap; } - .flex-nowrap-l { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } - .flex-wrap-reverse-l { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } - .flex-column-reverse-l { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } - .flex-row-reverse-l { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } - - .items-start-l { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } - .items-end-l { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } - .items-center-l { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } - .items-baseline-l { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } - .items-stretch-l { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } - - .self-start-l { -ms-flex-item-align: start; align-self: flex-start; } - .self-end-l { -ms-flex-item-align: end; align-self: flex-end; } - .self-center-l { -ms-flex-item-align: center; align-self: center; } - .self-baseline-l { -ms-flex-item-align: baseline; align-self: baseline; } - .self-stretch-l { -ms-flex-item-align: stretch; align-self: stretch; } - - .justify-start-l { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } - .justify-end-l { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } - .justify-center-l { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } - .justify-between-l { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } - .justify-around-l { -ms-flex-pack: distribute; justify-content: space-around; } - - .content-start-l { -ms-flex-line-pack: start; align-content: flex-start; } - .content-end-l { -ms-flex-line-pack: end; align-content: flex-end; } - .content-center-l { -ms-flex-line-pack: center; align-content: center; } - .content-between-l { -ms-flex-line-pack: justify; align-content: space-between; } - .content-around-l { -ms-flex-line-pack: distribute; align-content: space-around; } - .content-stretch-l { -ms-flex-line-pack: stretch; align-content: stretch; } - - .order-0-l { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } - .order-1-l { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } - .order-2-l { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } - .order-3-l { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } - .order-4-l { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } - .order-5-l { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } - .order-6-l { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } - .order-7-l { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } - .order-8-l { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } - .order-last-l { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } - - .flex-grow-0-l { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } - .flex-grow-1-l { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } - - .flex-shrink-0-l { -ms-flex-negative: 0; flex-shrink: 0; } - .flex-shrink-1-l { -ms-flex-negative: 1; flex-shrink: 1; } -} -/* - - FLOATS - http://tachyons.io/docs/layout/floats/ - - 1. Floated elements are automatically rendered as block level elements. - Setting floats to display inline will fix the double margin bug in - ie6. You know... just in case. - - 2. Don't forget to clearfix your floats with .cf - - Base: - f = float - - Modifiers: - l = left - r = right - n = none - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.fl { float: left; _display: inline; } -.fr { float: right; _display: inline; } -.fn { float: none; } -@media screen and (min-width: 30em) { - .fl-ns { float: left; _display: inline; } - .fr-ns { float: right; _display: inline; } - .fn-ns { float: none; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .fl-m { float: left; _display: inline; } - .fr-m { float: right; _display: inline; } - .fn-m { float: none; } -} -@media screen and (min-width: 60em) { - .fl-l { float: left; _display: inline; } - .fr-l { float: right; _display: inline; } - .fn-l { float: none; } -} -/*@import 'tachyons/src/_font-family';*/ -/* - - FONT STYLE - Docs: http://tachyons.io/docs/typography/font-style/ - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.i { font-style: italic; } -.fs-normal { font-style: normal; } -@media screen and (min-width: 30em) { - .i-ns { font-style: italic; } - .fs-normal-ns { font-style: normal; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .i-m { font-style: italic; } - .fs-normal-m { font-style: normal; } -} -@media screen and (min-width: 60em) { - .i-l { font-style: italic; } - .fs-normal-l { font-style: normal; } -} -/* - - FONT WEIGHT - Docs: http://tachyons.io/docs/typography/font-weight/ - - Base - fw = font-weight - - Modifiers: - 1 = literal value 100 - 2 = literal value 200 - 3 = literal value 300 - 4 = literal value 400 - 5 = literal value 500 - 6 = literal value 600 - 7 = literal value 700 - 8 = literal value 800 - 9 = literal value 900 - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.normal { font-weight: normal; } -.b { font-weight: bold; } -.fw1 { font-weight: 100; } -.fw2 { font-weight: 200; } -.fw3 { font-weight: 300; } -.fw4 { font-weight: 400; } -.fw5 { font-weight: 500; } -.fw6 { font-weight: 600; } -.fw7 { font-weight: 700; } -.fw8 { font-weight: 800; } -.fw9 { font-weight: 900; } -@media screen and (min-width: 30em) { - .normal-ns { font-weight: normal; } - .b-ns { font-weight: bold; } - .fw1-ns { font-weight: 100; } - .fw2-ns { font-weight: 200; } - .fw3-ns { font-weight: 300; } - .fw4-ns { font-weight: 400; } - .fw5-ns { font-weight: 500; } - .fw6-ns { font-weight: 600; } - .fw7-ns { font-weight: 700; } - .fw8-ns { font-weight: 800; } - .fw9-ns { font-weight: 900; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .normal-m { font-weight: normal; } - .b-m { font-weight: bold; } - .fw1-m { font-weight: 100; } - .fw2-m { font-weight: 200; } - .fw3-m { font-weight: 300; } - .fw4-m { font-weight: 400; } - .fw5-m { font-weight: 500; } - .fw6-m { font-weight: 600; } - .fw7-m { font-weight: 700; } - .fw8-m { font-weight: 800; } - .fw9-m { font-weight: 900; } -} -@media screen and (min-width: 60em) { - .normal-l { font-weight: normal; } - .b-l { font-weight: bold; } - .fw1-l { font-weight: 100; } - .fw2-l { font-weight: 200; } - .fw3-l { font-weight: 300; } - .fw4-l { font-weight: 400; } - .fw5-l { font-weight: 500; } - .fw6-l { font-weight: 600; } - .fw7-l { font-weight: 700; } - .fw8-l { font-weight: 800; } - .fw9-l { font-weight: 900; } -} -/* - - FORMS - -*/ -.input-reset { - -webkit-appearance: none; - -moz-appearance: none; -} -.button-reset::-moz-focus-inner, -.input-reset::-moz-focus-inner { - border: 0; - padding: 0; -} -/* - - HEIGHTS - Docs: http://tachyons.io/docs/layout/heights/ - - Base: - h = height - min-h = min-height - min-vh = min-height vertical screen height - vh = vertical screen height - - Modifiers - 1 = 1st step in height scale - 2 = 2nd step in height scale - 3 = 3rd step in height scale - 4 = 4th step in height scale - 5 = 5th step in height scale - - -25 = literal value 25% - -50 = literal value 50% - -75 = literal value 75% - -100 = literal value 100% - - -auto = string value of auto - -inherit = string value of inherit - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* Height Scale */ -.h1 { height: 1rem; } -.h2 { height: 2rem; } -.h3 { height: 4rem; } -.h4 { height: 8rem; } -.h5 { height: 16rem; } -/* Height Percentages - Based off of height of parent */ -.h-25 { height: 25%; } -.h-50 { height: 50%; } -.h-75 { height: 75%; } -.h-100 { height: 100%; } -.min-h-100 { min-height: 100%; } -/* Screen Height Percentage */ -.vh-25 { height: 25vh; } -.vh-50 { height: 50vh; } -.vh-75 { height: 75vh; } -.vh-100 { height: 100vh; } -.min-vh-100 { min-height: 100vh; } -/* String Properties */ -.h-auto { height: auto; } -.h-inherit { height: inherit; } -@media screen and (min-width: 30em) { - .h1-ns { height: 1rem; } - .h2-ns { height: 2rem; } - .h3-ns { height: 4rem; } - .h4-ns { height: 8rem; } - .h5-ns { height: 16rem; } - .h-25-ns { height: 25%; } - .h-50-ns { height: 50%; } - .h-75-ns { height: 75%; } - .h-100-ns { height: 100%; } - .min-h-100-ns { min-height: 100%; } - .vh-25-ns { height: 25vh; } - .vh-50-ns { height: 50vh; } - .vh-75-ns { height: 75vh; } - .vh-100-ns { height: 100vh; } - .min-vh-100-ns { min-height: 100vh; } - .h-auto-ns { height: auto; } - .h-inherit-ns { height: inherit; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .h1-m { height: 1rem; } - .h2-m { height: 2rem; } - .h3-m { height: 4rem; } - .h4-m { height: 8rem; } - .h5-m { height: 16rem; } - .h-25-m { height: 25%; } - .h-50-m { height: 50%; } - .h-75-m { height: 75%; } - .h-100-m { height: 100%; } - .min-h-100-m { min-height: 100%; } - .vh-25-m { height: 25vh; } - .vh-50-m { height: 50vh; } - .vh-75-m { height: 75vh; } - .vh-100-m { height: 100vh; } - .min-vh-100-m { min-height: 100vh; } - .h-auto-m { height: auto; } - .h-inherit-m { height: inherit; } -} -@media screen and (min-width: 60em) { - .h1-l { height: 1rem; } - .h2-l { height: 2rem; } - .h3-l { height: 4rem; } - .h4-l { height: 8rem; } - .h5-l { height: 16rem; } - .h-25-l { height: 25%; } - .h-50-l { height: 50%; } - .h-75-l { height: 75%; } - .h-100-l { height: 100%; } - .min-h-100-l { min-height: 100%; } - .vh-25-l { height: 25vh; } - .vh-50-l { height: 50vh; } - .vh-75-l { height: 75vh; } - .vh-100-l { height: 100vh; } - .min-vh-100-l { min-height: 100vh; } - .h-auto-l { height: auto; } - .h-inherit-l { height: inherit; } -} -/* - - LETTER SPACING - Docs: http://tachyons.io/docs/typography/tracking/ - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.tracked { letter-spacing: .1em; } -.tracked-tight { letter-spacing: -.05em; } -.tracked-mega { letter-spacing: .25em; } -@media screen and (min-width: 30em) { - .tracked-ns { letter-spacing: .1em; } - .tracked-tight-ns { letter-spacing: -.05em; } - .tracked-mega-ns { letter-spacing: .25em; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .tracked-m { letter-spacing: .1em; } - .tracked-tight-m { letter-spacing: -.05em; } - .tracked-mega-m { letter-spacing: .25em; } -} -@media screen and (min-width: 60em) { - .tracked-l { letter-spacing: .1em; } - .tracked-tight-l { letter-spacing: -.05em; } - .tracked-mega-l { letter-spacing: .25em; } -} -/* - - LINE HEIGHT / LEADING - Docs: http://tachyons.io/docs/typography/line-height - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.lh-solid { line-height: 1; } -.lh-title { line-height: 1.25; } -.lh-copy { line-height: 1.5; } -@media screen and (min-width: 30em) { - .lh-solid-ns { line-height: 1; } - .lh-title-ns { line-height: 1.25; } - .lh-copy-ns { line-height: 1.5; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .lh-solid-m { line-height: 1; } - .lh-title-m { line-height: 1.25; } - .lh-copy-m { line-height: 1.5; } -} -@media screen and (min-width: 60em) { - .lh-solid-l { line-height: 1; } - .lh-title-l { line-height: 1.25; } - .lh-copy-l { line-height: 1.5; } -} -/* - - LINKS - Docs: http://tachyons.io/docs/elements/links/ - -*/ -.link { - text-decoration: none; - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; -} -.link:link, -.link:visited { - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; -} -.link:hover { - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; -} -.link:active { - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; -} -.link:focus { - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; - outline: 1px dotted currentColor; -} -/* - - LISTS - http://tachyons.io/docs/elements/lists/ - -*/ -.list { list-style-type: none; } -/* - - MAX WIDTHS - Docs: http://tachyons.io/docs/layout/max-widths/ - - Base: - mw = max-width - - Modifiers - 1 = 1st step in width scale - 2 = 2nd step in width scale - 3 = 3rd step in width scale - 4 = 4th step in width scale - 5 = 5th step in width scale - 6 = 6st step in width scale - 7 = 7nd step in width scale - 8 = 8rd step in width scale - 9 = 9th step in width scale - - -100 = literal value 100% - - -none = string value none - - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* Max Width Percentages */ -.mw-100 { max-width: 100%; } -/* Max Width Scale */ -.mw1 { max-width: 1rem; } -.mw2 { max-width: 2rem; } -.mw3 { max-width: 4rem; } -.mw4 { max-width: 8rem; } -.mw5 { max-width: 16rem; } -.mw6 { max-width: 32rem; } -.mw7 { max-width: 48rem; } -.mw8 { max-width: 64rem; } -.mw9 { max-width: 96rem; } -/* Max Width String Properties */ -.mw-none { max-width: none; } -@media screen and (min-width: 30em) { - .mw-100-ns { max-width: 100%; } - - .mw1-ns { max-width: 1rem; } - .mw2-ns { max-width: 2rem; } - .mw3-ns { max-width: 4rem; } - .mw4-ns { max-width: 8rem; } - .mw5-ns { max-width: 16rem; } - .mw6-ns { max-width: 32rem; } - .mw7-ns { max-width: 48rem; } - .mw8-ns { max-width: 64rem; } - .mw9-ns { max-width: 96rem; } - - .mw-none-ns { max-width: none; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .mw-100-m { max-width: 100%; } - - .mw1-m { max-width: 1rem; } - .mw2-m { max-width: 2rem; } - .mw3-m { max-width: 4rem; } - .mw4-m { max-width: 8rem; } - .mw5-m { max-width: 16rem; } - .mw6-m { max-width: 32rem; } - .mw7-m { max-width: 48rem; } - .mw8-m { max-width: 64rem; } - .mw9-m { max-width: 96rem; } - - .mw-none-m { max-width: none; } -} -@media screen and (min-width: 60em) { - .mw-100-l { max-width: 100%; } - - .mw1-l { max-width: 1rem; } - .mw2-l { max-width: 2rem; } - .mw3-l { max-width: 4rem; } - .mw4-l { max-width: 8rem; } - .mw5-l { max-width: 16rem; } - .mw6-l { max-width: 32rem; } - .mw7-l { max-width: 48rem; } - .mw8-l { max-width: 64rem; } - .mw9-l { max-width: 96rem; } - - .mw-none-l { max-width: none; } -} -/* - - WIDTHS - Docs: http://tachyons.io/docs/layout/widths/ - - Base: - w = width - - Modifiers - 1 = 1st step in width scale - 2 = 2nd step in width scale - 3 = 3rd step in width scale - 4 = 4th step in width scale - 5 = 5th step in width scale - - -10 = literal value 10% - -20 = literal value 20% - -25 = literal value 25% - -30 = literal value 30% - -33 = literal value 33% - -34 = literal value 34% - -40 = literal value 40% - -50 = literal value 50% - -60 = literal value 60% - -70 = literal value 70% - -75 = literal value 75% - -80 = literal value 80% - -90 = literal value 90% - -100 = literal value 100% - - -third = 100% / 3 (Not supported in opera mini or IE8) - -two-thirds = 100% / 1.5 (Not supported in opera mini or IE8) - -auto = string value auto - - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* Width Scale */ -.w1 { width: 1rem; } -.w2 { width: 2rem; } -.w3 { width: 4rem; } -.w4 { width: 8rem; } -.w5 { width: 16rem; } -.w-10 { width: 10%; } -.w-20 { width: 20%; } -.w-25 { width: 25%; } -.w-30 { width: 30%; } -.w-33 { width: 33%; } -.w-34 { width: 34%; } -.w-40 { width: 40%; } -.w-50 { width: 50%; } -.w-60 { width: 60%; } -.w-70 { width: 70%; } -.w-75 { width: 75%; } -.w-80 { width: 80%; } -.w-90 { width: 90%; } -.w-100 { width: 100%; } -.w-third { width: 33.33333%; } -.w-two-thirds { width: 66.66667%; } -.w-auto { width: auto; } -@media screen and (min-width: 30em) { - .w1-ns { width: 1rem; } - .w2-ns { width: 2rem; } - .w3-ns { width: 4rem; } - .w4-ns { width: 8rem; } - .w5-ns { width: 16rem; } - .w-10-ns { width: 10%; } - .w-20-ns { width: 20%; } - .w-25-ns { width: 25%; } - .w-30-ns { width: 30%; } - .w-33-ns { width: 33%; } - .w-34-ns { width: 34%; } - .w-40-ns { width: 40%; } - .w-50-ns { width: 50%; } - .w-60-ns { width: 60%; } - .w-70-ns { width: 70%; } - .w-75-ns { width: 75%; } - .w-80-ns { width: 80%; } - .w-90-ns { width: 90%; } - .w-100-ns { width: 100%; } - .w-third-ns { width: 33.33333%; } - .w-two-thirds-ns { width: 66.66667%; } - .w-auto-ns { width: auto; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .w1-m { width: 1rem; } - .w2-m { width: 2rem; } - .w3-m { width: 4rem; } - .w4-m { width: 8rem; } - .w5-m { width: 16rem; } - .w-10-m { width: 10%; } - .w-20-m { width: 20%; } - .w-25-m { width: 25%; } - .w-30-m { width: 30%; } - .w-33-m { width: 33%; } - .w-34-m { width: 34%; } - .w-40-m { width: 40%; } - .w-50-m { width: 50%; } - .w-60-m { width: 60%; } - .w-70-m { width: 70%; } - .w-75-m { width: 75%; } - .w-80-m { width: 80%; } - .w-90-m { width: 90%; } - .w-100-m { width: 100%; } - .w-third-m { width: 33.33333%; } - .w-two-thirds-m { width: 66.66667%; } - .w-auto-m { width: auto; } -} -@media screen and (min-width: 60em) { - .w1-l { width: 1rem; } - .w2-l { width: 2rem; } - .w3-l { width: 4rem; } - .w4-l { width: 8rem; } - .w5-l { width: 16rem; } - .w-10-l { width: 10%; } - .w-20-l { width: 20%; } - .w-25-l { width: 25%; } - .w-30-l { width: 30%; } - .w-33-l { width: 33%; } - .w-34-l { width: 34%; } - .w-40-l { width: 40%; } - .w-50-l { width: 50%; } - .w-60-l { width: 60%; } - .w-70-l { width: 70%; } - .w-75-l { width: 75%; } - .w-80-l { width: 80%; } - .w-90-l { width: 90%; } - .w-100-l { width: 100%; } - .w-third-l { width: 33.33333%; } - .w-two-thirds-l { width: 66.66667%; } - .w-auto-l { width: auto; } -} -/* - - OVERFLOW - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - - */ -.overflow-visible { overflow: visible; } -.overflow-hidden { overflow: hidden; } -.overflow-scroll { overflow: scroll; } -.overflow-auto { overflow: auto; } -.overflow-x-visible { overflow-x: visible; } -.overflow-x-hidden { overflow-x: hidden; } -.overflow-x-scroll { overflow-x: scroll; } -.overflow-x-auto { overflow-x: auto; } -.overflow-y-visible { overflow-y: visible; } -.overflow-y-hidden { overflow-y: hidden; } -.overflow-y-scroll { overflow-y: scroll; } -.overflow-y-auto { overflow-y: auto; } -@media screen and (min-width: 30em) { - .overflow-visible-ns { overflow: visible; } - .overflow-hidden-ns { overflow: hidden; } - .overflow-scroll-ns { overflow: scroll; } - .overflow-auto-ns { overflow: auto; } - .overflow-x-visible-ns { overflow-x: visible; } - .overflow-x-hidden-ns { overflow-x: hidden; } - .overflow-x-scroll-ns { overflow-x: scroll; } - .overflow-x-auto-ns { overflow-x: auto; } - - .overflow-y-visible-ns { overflow-y: visible; } - .overflow-y-hidden-ns { overflow-y: hidden; } - .overflow-y-scroll-ns { overflow-y: scroll; } - .overflow-y-auto-ns { overflow-y: auto; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .overflow-visible-m { overflow: visible; } - .overflow-hidden-m { overflow: hidden; } - .overflow-scroll-m { overflow: scroll; } - .overflow-auto-m { overflow: auto; } - - .overflow-x-visible-m { overflow-x: visible; } - .overflow-x-hidden-m { overflow-x: hidden; } - .overflow-x-scroll-m { overflow-x: scroll; } - .overflow-x-auto-m { overflow-x: auto; } - - .overflow-y-visible-m { overflow-y: visible; } - .overflow-y-hidden-m { overflow-y: hidden; } - .overflow-y-scroll-m { overflow-y: scroll; } - .overflow-y-auto-m { overflow-y: auto; } -} -@media screen and (min-width: 60em) { - .overflow-visible-l { overflow: visible; } - .overflow-hidden-l { overflow: hidden; } - .overflow-scroll-l { overflow: scroll; } - .overflow-auto-l { overflow: auto; } - - .overflow-x-visible-l { overflow-x: visible; } - .overflow-x-hidden-l { overflow-x: hidden; } - .overflow-x-scroll-l { overflow-x: scroll; } - .overflow-x-auto-l { overflow-x: auto; } - - .overflow-y-visible-l { overflow-y: visible; } - .overflow-y-hidden-l { overflow-y: hidden; } - .overflow-y-scroll-l { overflow-y: scroll; } - .overflow-y-auto-l { overflow-y: auto; } -} -/* - - POSITIONING - Docs: http://tachyons.io/docs/layout/position/ - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.static { position: static; } -.relative { position: relative; } -.absolute { position: absolute; } -.fixed { position: fixed; } -@media screen and (min-width: 30em) { - .static-ns { position: static; } - .relative-ns { position: relative; } - .absolute-ns { position: absolute; } - .fixed-ns { position: fixed; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .static-m { position: static; } - .relative-m { position: relative; } - .absolute-m { position: absolute; } - .fixed-m { position: fixed; } -} -@media screen and (min-width: 60em) { - .static-l { position: static; } - .relative-l { position: relative; } - .absolute-l { position: absolute; } - .fixed-l { position: fixed; } -} -/* - - OPACITY - Docs: http://tachyons.io/docs/themes/opacity/ - -*/ -.o-100 { opacity: 1; } -.o-90 { opacity: .9; } -.o-80 { opacity: .8; } -.o-70 { opacity: .7; } -.o-60 { opacity: .6; } -.o-50 { opacity: .5; } -.o-40 { opacity: .4; } -.o-30 { opacity: .3; } -.o-20 { opacity: .2; } -.o-10 { opacity: .1; } -.o-05 { opacity: .05; } -.o-025 { opacity: .025; } -.o-0 { opacity: 0; } -/*@import 'tachyons/src/_rotations';*/ -/* - - SKINS - Docs: http://tachyons.io/docs/themes/skins/ - - Classes for setting foreground and background colors on elements. - If you haven't declared a border color, but set border on an element, it will - be set to the current text color. - -*/ -/* Text colors */ -.black-90 { color: rgba(0, 0, 0, .9); } -.black-80 { color: rgba(0, 0, 0, .8); } -.black-70 { color: rgba(0, 0, 0, .7); } -.black-60 { color: rgba(0, 0, 0, .6); } -.black-50 { color: rgba(0, 0, 0, .5); } -.black-40 { color: rgba(0, 0, 0, .4); } -.black-30 { color: rgba(0, 0, 0, .3); } -.black-20 { color: rgba(0, 0, 0, .2); } -.black-10 { color: rgba(0, 0, 0, .1); } -.black-05 { color: rgba(0, 0, 0, .05); } -.white-90 { color: rgba(255, 255, 255, .9); } -.white-80 { color: rgba(255, 255, 255, .8); } -.white-70 { color: rgba(255, 255, 255, .7); } -.white-60 { color: rgba(255, 255, 255, .6); } -.white-50 { color: rgba(255, 255, 255, .5); } -.white-40 { color: rgba(255, 255, 255, .4); } -.white-30 { color: rgba(255, 255, 255, .3); } -.white-20 { color: rgba(255, 255, 255, .2); } -.white-10 { color: rgba(255, 255, 255, .1); } -.black { color: #000; } -.near-black { color: #111; } -.dark-gray { color: #333; } -.mid-gray { color: #555; } -.gray { color: #777; } -.silver { color: #999; } -.light-silver { color: #aaa; } -.moon-gray { color: #ccc; } -.light-gray { color: #eee; } -.near-white { color: #f4f4f4; } -.white { color: #fff; } -.dark-red { color: #e7040f; } -.red { color: #ff4136; } -.light-red { color: #ff725c; } -.orange { color: #ff6300; } -.gold { color: #ffb700; } -.yellow { color: #ffd700; } -.light-yellow { color: #fbf1a9; } -.purple { color: #5e2ca5; } -.light-purple { color: #a463f2; } -.dark-pink { color: #d5008f; } -.hot-pink { color: #ff41b4; } -.pink { color: #ff80cc; } -.light-pink { color: #ffa3d7; } -.dark-green { color: #137752; } -.green { color: #19a974; } -.light-green { color: #9eebcf; } -.navy { color: #001b44; } -.dark-blue { color: #00449e; } -.blue { color: #0594CB; } -.light-blue { color: #96ccff; } -.lightest-blue { color: #cdecff; } -.washed-blue { color: #f6fffe; } -.washed-green { color: #e8fdf5; } -.washed-yellow { color: #fffceb; } -.washed-red { color: #ffdfdf; } -.color-inherit { color: inherit; } -.bg-black-90 { background-color: rgba(0, 0, 0, .9); } -.bg-black-80 { background-color: rgba(0, 0, 0, .8); } -.bg-black-70 { background-color: rgba(0, 0, 0, .7); } -.bg-black-60 { background-color: rgba(0, 0, 0, .6); } -.bg-black-50 { background-color: rgba(0, 0, 0, .5); } -.bg-black-40 { background-color: rgba(0, 0, 0, .4); } -.bg-black-30 { background-color: rgba(0, 0, 0, .3); } -.bg-black-20 { background-color: rgba(0, 0, 0, .2); } -.bg-black-10 { background-color: rgba(0, 0, 0, .1); } -.bg-black-05 { background-color: rgba(0, 0, 0, .05); } -.bg-white-90 { background-color: rgba(255, 255, 255, .9); } -.bg-white-80 { background-color: rgba(255, 255, 255, .8); } -.bg-white-70 { background-color: rgba(255, 255, 255, .7); } -.bg-white-60 { background-color: rgba(255, 255, 255, .6); } -.bg-white-50 { background-color: rgba(255, 255, 255, .5); } -.bg-white-40 { background-color: rgba(255, 255, 255, .4); } -.bg-white-30 { background-color: rgba(255, 255, 255, .3); } -.bg-white-20 { background-color: rgba(255, 255, 255, .2); } -.bg-white-10 { background-color: rgba(255, 255, 255, .1); } -/* Background colors */ -.bg-black { background-color: #000; } -.bg-near-black { background-color: #111; } -.bg-dark-gray { background-color: #333; } -.bg-mid-gray { background-color: #555; } -.bg-gray { background-color: #777; } -.bg-silver { background-color: #999; } -.bg-light-silver { background-color: #aaa; } -.bg-moon-gray { background-color: #ccc; } -.bg-light-gray { background-color: #eee; } -.bg-near-white { background-color: #f4f4f4; } -.bg-white { background-color: #fff; } -.bg-transparent { background-color: transparent; } -.bg-dark-red { background-color: #e7040f; } -.bg-red { background-color: #ff4136; } -.bg-light-red { background-color: #ff725c; } -.bg-orange { background-color: #ff6300; } -.bg-gold { background-color: #ffb700; } -.bg-yellow { background-color: #ffd700; } -.bg-light-yellow { background-color: #fbf1a9; } -.bg-purple { background-color: #5e2ca5; } -.bg-light-purple { background-color: #a463f2; } -.bg-dark-pink { background-color: #d5008f; } -.bg-hot-pink { background-color: #ff41b4; } -.bg-pink { background-color: #ff80cc; } -.bg-light-pink { background-color: #ffa3d7; } -.bg-dark-green { background-color: #137752; } -.bg-green { background-color: #19a974; } -.bg-light-green { background-color: #9eebcf; } -.bg-navy { background-color: #001b44; } -.bg-dark-blue { background-color: #00449e; } -.bg-blue { background-color: #0594CB; } -.bg-light-blue { background-color: #96ccff; } -.bg-lightest-blue { background-color: #cdecff; } -.bg-washed-blue { background-color: #f6fffe; } -.bg-washed-green { background-color: #e8fdf5; } -.bg-washed-yellow { background-color: #fffceb; } -.bg-washed-red { background-color: #ffdfdf; } -.bg-inherit { background-color: inherit; } -/* - - SKINS:PSEUDO - - Customize the color of an element when - it is focused or hovered over. - - */ -.hover-black:hover, -.hover-black:focus { color: #000; } -.hover-near-black:hover, -.hover-near-black:focus { color: #111; } -.hover-dark-gray:hover, -.hover-dark-gray:focus { color: #333; } -.hover-mid-gray:hover, -.hover-mid-gray:focus { color: #555; } -.hover-gray:hover, -.hover-gray:focus { color: #777; } -.hover-silver:hover, -.hover-silver:focus { color: #999; } -.hover-light-silver:hover, -.hover-light-silver:focus { color: #aaa; } -.hover-moon-gray:hover, -.hover-moon-gray:focus { color: #ccc; } -.hover-light-gray:hover, -.hover-light-gray:focus { color: #eee; } -.hover-near-white:hover, -.hover-near-white:focus { color: #f4f4f4; } -.hover-white:hover, -.hover-white:focus { color: #fff; } -.hover-black-90:hover, -.hover-black-90:focus { color: rgba(0, 0, 0, .9); } -.hover-black-80:hover, -.hover-black-80:focus { color: rgba(0, 0, 0, .8); } -.hover-black-70:hover, -.hover-black-70:focus { color: rgba(0, 0, 0, .7); } -.hover-black-60:hover, -.hover-black-60:focus { color: rgba(0, 0, 0, .6); } -.hover-black-50:hover, -.hover-black-50:focus { color: rgba(0, 0, 0, .5); } -.hover-black-40:hover, -.hover-black-40:focus { color: rgba(0, 0, 0, .4); } -.hover-black-30:hover, -.hover-black-30:focus { color: rgba(0, 0, 0, .3); } -.hover-black-20:hover, -.hover-black-20:focus { color: rgba(0, 0, 0, .2); } -.hover-black-10:hover, -.hover-black-10:focus { color: rgba(0, 0, 0, .1); } -.hover-white-90:hover, -.hover-white-90:focus { color: rgba(255, 255, 255, .9); } -.hover-white-80:hover, -.hover-white-80:focus { color: rgba(255, 255, 255, .8); } -.hover-white-70:hover, -.hover-white-70:focus { color: rgba(255, 255, 255, .7); } -.hover-white-60:hover, -.hover-white-60:focus { color: rgba(255, 255, 255, .6); } -.hover-white-50:hover, -.hover-white-50:focus { color: rgba(255, 255, 255, .5); } -.hover-white-40:hover, -.hover-white-40:focus { color: rgba(255, 255, 255, .4); } -.hover-white-30:hover, -.hover-white-30:focus { color: rgba(255, 255, 255, .3); } -.hover-white-20:hover, -.hover-white-20:focus { color: rgba(255, 255, 255, .2); } -.hover-white-10:hover, -.hover-white-10:focus { color: rgba(255, 255, 255, .1); } -.hover-inherit:hover, -.hover-inherit:focus { color: inherit; } -.hover-bg-black:hover, -.hover-bg-black:focus { background-color: #000; } -.hover-bg-near-black:hover, -.hover-bg-near-black:focus { background-color: #111; } -.hover-bg-dark-gray:hover, -.hover-bg-dark-gray:focus { background-color: #333; } -.hover-bg-mid-gray:hover, -.hover-bg-mid-gray:focus { background-color: #555; } -.hover-bg-gray:hover, -.hover-bg-gray:focus { background-color: #777; } -.hover-bg-silver:hover, -.hover-bg-silver:focus { background-color: #999; } -.hover-bg-light-silver:hover, -.hover-bg-light-silver:focus { background-color: #aaa; } -.hover-bg-moon-gray:hover, -.hover-bg-moon-gray:focus { background-color: #ccc; } -.hover-bg-light-gray:hover, -.hover-bg-light-gray:focus { background-color: #eee; } -.hover-bg-near-white:hover, -.hover-bg-near-white:focus { background-color: #f4f4f4; } -.hover-bg-white:hover, -.hover-bg-white:focus { background-color: #fff; } -.hover-bg-transparent:hover, -.hover-bg-transparent:focus { background-color: transparent; } -.hover-bg-black-90:hover, -.hover-bg-black-90:focus { background-color: rgba(0, 0, 0, .9); } -.hover-bg-black-80:hover, -.hover-bg-black-80:focus { background-color: rgba(0, 0, 0, .8); } -.hover-bg-black-70:hover, -.hover-bg-black-70:focus { background-color: rgba(0, 0, 0, .7); } -.hover-bg-black-60:hover, -.hover-bg-black-60:focus { background-color: rgba(0, 0, 0, .6); } -.hover-bg-black-50:hover, -.hover-bg-black-50:focus { background-color: rgba(0, 0, 0, .5); } -.hover-bg-black-40:hover, -.hover-bg-black-40:focus { background-color: rgba(0, 0, 0, .4); } -.hover-bg-black-30:hover, -.hover-bg-black-30:focus { background-color: rgba(0, 0, 0, .3); } -.hover-bg-black-20:hover, -.hover-bg-black-20:focus { background-color: rgba(0, 0, 0, .2); } -.hover-bg-black-10:hover, -.hover-bg-black-10:focus { background-color: rgba(0, 0, 0, .1); } -.hover-bg-white-90:hover, -.hover-bg-white-90:focus { background-color: rgba(255, 255, 255, .9); } -.hover-bg-white-80:hover, -.hover-bg-white-80:focus { background-color: rgba(255, 255, 255, .8); } -.hover-bg-white-70:hover, -.hover-bg-white-70:focus { background-color: rgba(255, 255, 255, .7); } -.hover-bg-white-60:hover, -.hover-bg-white-60:focus { background-color: rgba(255, 255, 255, .6); } -.hover-bg-white-50:hover, -.hover-bg-white-50:focus { background-color: rgba(255, 255, 255, .5); } -.hover-bg-white-40:hover, -.hover-bg-white-40:focus { background-color: rgba(255, 255, 255, .4); } -.hover-bg-white-30:hover, -.hover-bg-white-30:focus { background-color: rgba(255, 255, 255, .3); } -.hover-bg-white-20:hover, -.hover-bg-white-20:focus { background-color: rgba(255, 255, 255, .2); } -.hover-bg-white-10:hover, -.hover-bg-white-10:focus { background-color: rgba(255, 255, 255, .1); } -.hover-dark-red:hover, -.hover-dark-red:focus { color: #e7040f; } -.hover-red:hover, -.hover-red:focus { color: #ff4136; } -.hover-light-red:hover, -.hover-light-red:focus { color: #ff725c; } -.hover-orange:hover, -.hover-orange:focus { color: #ff6300; } -.hover-gold:hover, -.hover-gold:focus { color: #ffb700; } -.hover-yellow:hover, -.hover-yellow:focus { color: #ffd700; } -.hover-light-yellow:hover, -.hover-light-yellow:focus { color: #fbf1a9; } -.hover-purple:hover, -.hover-purple:focus { color: #5e2ca5; } -.hover-light-purple:hover, -.hover-light-purple:focus { color: #a463f2; } -.hover-dark-pink:hover, -.hover-dark-pink:focus { color: #d5008f; } -.hover-hot-pink:hover, -.hover-hot-pink:focus { color: #ff41b4; } -.hover-pink:hover, -.hover-pink:focus { color: #ff80cc; } -.hover-light-pink:hover, -.hover-light-pink:focus { color: #ffa3d7; } -.hover-dark-green:hover, -.hover-dark-green:focus { color: #137752; } -.hover-green:hover, -.hover-green:focus { color: #19a974; } -.hover-light-green:hover, -.hover-light-green:focus { color: #9eebcf; } -.hover-navy:hover, -.hover-navy:focus { color: #001b44; } -.hover-dark-blue:hover, -.hover-dark-blue:focus { color: #00449e; } -.hover-blue:hover, -.hover-blue:focus { color: #0594CB; } -.hover-light-blue:hover, -.hover-light-blue:focus { color: #96ccff; } -.hover-lightest-blue:hover, -.hover-lightest-blue:focus { color: #cdecff; } -.hover-washed-blue:hover, -.hover-washed-blue:focus { color: #f6fffe; } -.hover-washed-green:hover, -.hover-washed-green:focus { color: #e8fdf5; } -.hover-washed-yellow:hover, -.hover-washed-yellow:focus { color: #fffceb; } -.hover-washed-red:hover, -.hover-washed-red:focus { color: #ffdfdf; } -.hover-bg-dark-red:hover, -.hover-bg-dark-red:focus { background-color: #e7040f; } -.hover-bg-red:hover, -.hover-bg-red:focus { background-color: #ff4136; } -.hover-bg-light-red:hover, -.hover-bg-light-red:focus { background-color: #ff725c; } -.hover-bg-orange:hover, -.hover-bg-orange:focus { background-color: #ff6300; } -.hover-bg-gold:hover, -.hover-bg-gold:focus { background-color: #ffb700; } -.hover-bg-yellow:hover, -.hover-bg-yellow:focus { background-color: #ffd700; } -.hover-bg-light-yellow:hover, -.hover-bg-light-yellow:focus { background-color: #fbf1a9; } -.hover-bg-purple:hover, -.hover-bg-purple:focus { background-color: #5e2ca5; } -.hover-bg-light-purple:hover, -.hover-bg-light-purple:focus { background-color: #a463f2; } -.hover-bg-dark-pink:hover, -.hover-bg-dark-pink:focus { background-color: #d5008f; } -.hover-bg-hot-pink:hover, -.hover-bg-hot-pink:focus { background-color: #ff41b4; } -.hover-bg-pink:hover, -.hover-bg-pink:focus { background-color: #ff80cc; } -.hover-bg-light-pink:hover, -.hover-bg-light-pink:focus { background-color: #ffa3d7; } -.hover-bg-dark-green:hover, -.hover-bg-dark-green:focus { background-color: #137752; } -.hover-bg-green:hover, -.hover-bg-green:focus { background-color: #19a974; } -.hover-bg-light-green:hover, -.hover-bg-light-green:focus { background-color: #9eebcf; } -.hover-bg-navy:hover, -.hover-bg-navy:focus { background-color: #001b44; } -.hover-bg-dark-blue:hover, -.hover-bg-dark-blue:focus { background-color: #00449e; } -.hover-bg-blue:hover, -.hover-bg-blue:focus { background-color: #0594CB; } -.hover-bg-light-blue:hover, -.hover-bg-light-blue:focus { background-color: #96ccff; } -.hover-bg-lightest-blue:hover, -.hover-bg-lightest-blue:focus { background-color: #cdecff; } -.hover-bg-washed-blue:hover, -.hover-bg-washed-blue:focus { background-color: #f6fffe; } -.hover-bg-washed-green:hover, -.hover-bg-washed-green:focus { background-color: #e8fdf5; } -.hover-bg-washed-yellow:hover, -.hover-bg-washed-yellow:focus { background-color: #fffceb; } -.hover-bg-washed-red:hover, -.hover-bg-washed-red:focus { background-color: #ffdfdf; } -.hover-bg-inherit:hover, -.hover-bg-inherit:focus { background-color: inherit; } -/* Variables */ -/* - SPACING - Docs: http://tachyons.io/docs/layout/spacing/ - - An eight step powers of two scale ranging from 0 to 16rem. - - Base: - p = padding - m = margin - - Modifiers: - a = all - h = horizontal - v = vertical - t = top - r = right - b = bottom - l = left - - 0 = none - 1 = 1st step in spacing scale - 2 = 2nd step in spacing scale - 3 = 3rd step in spacing scale - 4 = 4th step in spacing scale - 5 = 5th step in spacing scale - 6 = 6th step in spacing scale - 7 = 7th step in spacing scale - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.pa0 { padding: 0; } -.pa1 { padding: .25rem; } -.pa2 { padding: .5rem; } -.pa3 { padding: 1rem; } -.pa4 { padding: 2rem; } -.pa5 { padding: 4rem; } -.pa6 { padding: 8rem; } -.pa7 { padding: 16rem; } -.pl0 { padding-left: 0; } -.pl1 { padding-left: .25rem; } -.pl2 { padding-left: .5rem; } -.pl3 { padding-left: 1rem; } -.pl4 { padding-left: 2rem; } -.pl5 { padding-left: 4rem; } -.pl6 { padding-left: 8rem; } -.pl7 { padding-left: 16rem; } -.pr0 { padding-right: 0; } -.pr1 { padding-right: .25rem; } -.pr2 { padding-right: .5rem; } -.pr3 { padding-right: 1rem; } -.pr4 { padding-right: 2rem; } -.pr5 { padding-right: 4rem; } -.pr6 { padding-right: 8rem; } -.pr7 { padding-right: 16rem; } -.pb0 { padding-bottom: 0; } -.pb1 { padding-bottom: .25rem; } -.pb2 { padding-bottom: .5rem; } -.pb3 { padding-bottom: 1rem; } -.pb4 { padding-bottom: 2rem; } -.pb5 { padding-bottom: 4rem; } -.pb6 { padding-bottom: 8rem; } -.pb7 { padding-bottom: 16rem; } -.pt0 { padding-top: 0; } -.pt1 { padding-top: .25rem; } -.pt2 { padding-top: .5rem; } -.pt3 { padding-top: 1rem; } -.pt4 { padding-top: 2rem; } -.pt5 { padding-top: 4rem; } -.pt6 { padding-top: 8rem; } -.pt7 { padding-top: 16rem; } -.pv0 { - padding-top: 0; - padding-bottom: 0; -} -.pv1 { - padding-top: .25rem; - padding-bottom: .25rem; -} -.pv2 { - padding-top: .5rem; - padding-bottom: .5rem; -} -.pv3 { - padding-top: 1rem; - padding-bottom: 1rem; -} -.pv4 { - padding-top: 2rem; - padding-bottom: 2rem; -} -.pv5 { - padding-top: 4rem; - padding-bottom: 4rem; -} -.pv6 { - padding-top: 8rem; - padding-bottom: 8rem; -} -.pv7 { - padding-top: 16rem; - padding-bottom: 16rem; -} -.ph0 { - padding-left: 0; - padding-right: 0; -} -.ph1 { - padding-left: .25rem; - padding-right: .25rem; -} -.ph2 { - padding-left: .5rem; - padding-right: .5rem; -} -.ph3 { - padding-left: 1rem; - padding-right: 1rem; -} -.ph4 { - padding-left: 2rem; - padding-right: 2rem; -} -.ph5 { - padding-left: 4rem; - padding-right: 4rem; -} -.ph6 { - padding-left: 8rem; - padding-right: 8rem; -} -.ph7 { - padding-left: 16rem; - padding-right: 16rem; -} -.ma0 { margin: 0; } -.ma1 { margin: .25rem; } -.ma2 { margin: .5rem; } -.ma3 { margin: 1rem; } -.ma4 { margin: 2rem; } -.ma5 { margin: 4rem; } -.ma6 { margin: 8rem; } -.ma7 { margin: 16rem; } -.ml0 { margin-left: 0; } -.ml1 { margin-left: .25rem; } -.ml2 { margin-left: .5rem; } -.ml3 { margin-left: 1rem; } -.ml4 { margin-left: 2rem; } -.ml5 { margin-left: 4rem; } -.ml6 { margin-left: 8rem; } -.ml7 { margin-left: 16rem; } -.mr0 { margin-right: 0; } -.mr1 { margin-right: .25rem; } -.mr2 { margin-right: .5rem; } -.mr3 { margin-right: 1rem; } -.mr4 { margin-right: 2rem; } -.mr5 { margin-right: 4rem; } -.mr6 { margin-right: 8rem; } -.mr7 { margin-right: 16rem; } -.mb0 { margin-bottom: 0; } -.mb1 { margin-bottom: .25rem; } -.mb2 { margin-bottom: .5rem; } -.mb3 { margin-bottom: 1rem; } -.mb4 { margin-bottom: 2rem; } -.mb5 { margin-bottom: 4rem; } -.mb6 { margin-bottom: 8rem; } -.mb7 { margin-bottom: 16rem; } -.mt0 { margin-top: 0; } -.mt1 { margin-top: .25rem; } -.mt2 { margin-top: .5rem; } -.mt3 { margin-top: 1rem; } -.mt4 { margin-top: 2rem; } -.mt5 { margin-top: 4rem; } -.mt6 { margin-top: 8rem; } -.mt7 { margin-top: 16rem; } -.mv0 { - margin-top: 0; - margin-bottom: 0; -} -.mv1 { - margin-top: .25rem; - margin-bottom: .25rem; -} -.mv2 { - margin-top: .5rem; - margin-bottom: .5rem; -} -.mv3 { - margin-top: 1rem; - margin-bottom: 1rem; -} -.mv4 { - margin-top: 2rem; - margin-bottom: 2rem; -} -.mv5 { - margin-top: 4rem; - margin-bottom: 4rem; -} -.mv6 { - margin-top: 8rem; - margin-bottom: 8rem; -} -.mv7 { - margin-top: 16rem; - margin-bottom: 16rem; -} -.mh0 { - margin-left: 0; - margin-right: 0; -} -.mh1 { - margin-left: .25rem; - margin-right: .25rem; -} -.mh2 { - margin-left: .5rem; - margin-right: .5rem; -} -.mh3 { - margin-left: 1rem; - margin-right: 1rem; -} -.mh4 { - margin-left: 2rem; - margin-right: 2rem; -} -.mh5 { - margin-left: 4rem; - margin-right: 4rem; -} -.mh6 { - margin-left: 8rem; - margin-right: 8rem; -} -.mh7 { - margin-left: 16rem; - margin-right: 16rem; -} -@media screen and (min-width: 30em) { - .pa0-ns { padding: 0; } - .pa1-ns { padding: .25rem; } - .pa2-ns { padding: .5rem; } - .pa3-ns { padding: 1rem; } - .pa4-ns { padding: 2rem; } - .pa5-ns { padding: 4rem; } - .pa6-ns { padding: 8rem; } - .pa7-ns { padding: 16rem; } - - .pl0-ns { padding-left: 0; } - .pl1-ns { padding-left: .25rem; } - .pl2-ns { padding-left: .5rem; } - .pl3-ns { padding-left: 1rem; } - .pl4-ns { padding-left: 2rem; } - .pl5-ns { padding-left: 4rem; } - .pl6-ns { padding-left: 8rem; } - .pl7-ns { padding-left: 16rem; } - - .pr0-ns { padding-right: 0; } - .pr1-ns { padding-right: .25rem; } - .pr2-ns { padding-right: .5rem; } - .pr3-ns { padding-right: 1rem; } - .pr4-ns { padding-right: 2rem; } - .pr5-ns { padding-right: 4rem; } - .pr6-ns { padding-right: 8rem; } - .pr7-ns { padding-right: 16rem; } - - .pb0-ns { padding-bottom: 0; } - .pb1-ns { padding-bottom: .25rem; } - .pb2-ns { padding-bottom: .5rem; } - .pb3-ns { padding-bottom: 1rem; } - .pb4-ns { padding-bottom: 2rem; } - .pb5-ns { padding-bottom: 4rem; } - .pb6-ns { padding-bottom: 8rem; } - .pb7-ns { padding-bottom: 16rem; } - - .pt0-ns { padding-top: 0; } - .pt1-ns { padding-top: .25rem; } - .pt2-ns { padding-top: .5rem; } - .pt3-ns { padding-top: 1rem; } - .pt4-ns { padding-top: 2rem; } - .pt5-ns { padding-top: 4rem; } - .pt6-ns { padding-top: 8rem; } - .pt7-ns { padding-top: 16rem; } - - .pv0-ns { - padding-top: 0; - padding-bottom: 0; - } - .pv1-ns { - padding-top: .25rem; - padding-bottom: .25rem; - } - .pv2-ns { - padding-top: .5rem; - padding-bottom: .5rem; - } - .pv3-ns { - padding-top: 1rem; - padding-bottom: 1rem; - } - .pv4-ns { - padding-top: 2rem; - padding-bottom: 2rem; - } - .pv5-ns { - padding-top: 4rem; - padding-bottom: 4rem; - } - .pv6-ns { - padding-top: 8rem; - padding-bottom: 8rem; - } - .pv7-ns { - padding-top: 16rem; - padding-bottom: 16rem; - } - .ph0-ns { - padding-left: 0; - padding-right: 0; - } - .ph1-ns { - padding-left: .25rem; - padding-right: .25rem; - } - .ph2-ns { - padding-left: .5rem; - padding-right: .5rem; - } - .ph3-ns { - padding-left: 1rem; - padding-right: 1rem; - } - .ph4-ns { - padding-left: 2rem; - padding-right: 2rem; - } - .ph5-ns { - padding-left: 4rem; - padding-right: 4rem; - } - .ph6-ns { - padding-left: 8rem; - padding-right: 8rem; - } - .ph7-ns { - padding-left: 16rem; - padding-right: 16rem; - } - - .ma0-ns { margin: 0; } - .ma1-ns { margin: .25rem; } - .ma2-ns { margin: .5rem; } - .ma3-ns { margin: 1rem; } - .ma4-ns { margin: 2rem; } - .ma5-ns { margin: 4rem; } - .ma6-ns { margin: 8rem; } - .ma7-ns { margin: 16rem; } - - .ml0-ns { margin-left: 0; } - .ml1-ns { margin-left: .25rem; } - .ml2-ns { margin-left: .5rem; } - .ml3-ns { margin-left: 1rem; } - .ml4-ns { margin-left: 2rem; } - .ml5-ns { margin-left: 4rem; } - .ml6-ns { margin-left: 8rem; } - .ml7-ns { margin-left: 16rem; } - - .mr0-ns { margin-right: 0; } - .mr1-ns { margin-right: .25rem; } - .mr2-ns { margin-right: .5rem; } - .mr3-ns { margin-right: 1rem; } - .mr4-ns { margin-right: 2rem; } - .mr5-ns { margin-right: 4rem; } - .mr6-ns { margin-right: 8rem; } - .mr7-ns { margin-right: 16rem; } - - .mb0-ns { margin-bottom: 0; } - .mb1-ns { margin-bottom: .25rem; } - .mb2-ns { margin-bottom: .5rem; } - .mb3-ns { margin-bottom: 1rem; } - .mb4-ns { margin-bottom: 2rem; } - .mb5-ns { margin-bottom: 4rem; } - .mb6-ns { margin-bottom: 8rem; } - .mb7-ns { margin-bottom: 16rem; } - - .mt0-ns { margin-top: 0; } - .mt1-ns { margin-top: .25rem; } - .mt2-ns { margin-top: .5rem; } - .mt3-ns { margin-top: 1rem; } - .mt4-ns { margin-top: 2rem; } - .mt5-ns { margin-top: 4rem; } - .mt6-ns { margin-top: 8rem; } - .mt7-ns { margin-top: 16rem; } - - .mv0-ns { - margin-top: 0; - margin-bottom: 0; - } - .mv1-ns { - margin-top: .25rem; - margin-bottom: .25rem; - } - .mv2-ns { - margin-top: .5rem; - margin-bottom: .5rem; - } - .mv3-ns { - margin-top: 1rem; - margin-bottom: 1rem; - } - .mv4-ns { - margin-top: 2rem; - margin-bottom: 2rem; - } - .mv5-ns { - margin-top: 4rem; - margin-bottom: 4rem; - } - .mv6-ns { - margin-top: 8rem; - margin-bottom: 8rem; - } - .mv7-ns { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .mh0-ns { - margin-left: 0; - margin-right: 0; - } - .mh1-ns { - margin-left: .25rem; - margin-right: .25rem; - } - .mh2-ns { - margin-left: .5rem; - margin-right: .5rem; - } - .mh3-ns { - margin-left: 1rem; - margin-right: 1rem; - } - .mh4-ns { - margin-left: 2rem; - margin-right: 2rem; - } - .mh5-ns { - margin-left: 4rem; - margin-right: 4rem; - } - .mh6-ns { - margin-left: 8rem; - margin-right: 8rem; - } - .mh7-ns { - margin-left: 16rem; - margin-right: 16rem; - } - -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .pa0-m { padding: 0; } - .pa1-m { padding: .25rem; } - .pa2-m { padding: .5rem; } - .pa3-m { padding: 1rem; } - .pa4-m { padding: 2rem; } - .pa5-m { padding: 4rem; } - .pa6-m { padding: 8rem; } - .pa7-m { padding: 16rem; } - - .pl0-m { padding-left: 0; } - .pl1-m { padding-left: .25rem; } - .pl2-m { padding-left: .5rem; } - .pl3-m { padding-left: 1rem; } - .pl4-m { padding-left: 2rem; } - .pl5-m { padding-left: 4rem; } - .pl6-m { padding-left: 8rem; } - .pl7-m { padding-left: 16rem; } - - .pr0-m { padding-right: 0; } - .pr1-m { padding-right: .25rem; } - .pr2-m { padding-right: .5rem; } - .pr3-m { padding-right: 1rem; } - .pr4-m { padding-right: 2rem; } - .pr5-m { padding-right: 4rem; } - .pr6-m { padding-right: 8rem; } - .pr7-m { padding-right: 16rem; } - - .pb0-m { padding-bottom: 0; } - .pb1-m { padding-bottom: .25rem; } - .pb2-m { padding-bottom: .5rem; } - .pb3-m { padding-bottom: 1rem; } - .pb4-m { padding-bottom: 2rem; } - .pb5-m { padding-bottom: 4rem; } - .pb6-m { padding-bottom: 8rem; } - .pb7-m { padding-bottom: 16rem; } - - .pt0-m { padding-top: 0; } - .pt1-m { padding-top: .25rem; } - .pt2-m { padding-top: .5rem; } - .pt3-m { padding-top: 1rem; } - .pt4-m { padding-top: 2rem; } - .pt5-m { padding-top: 4rem; } - .pt6-m { padding-top: 8rem; } - .pt7-m { padding-top: 16rem; } - - .pv0-m { - padding-top: 0; - padding-bottom: 0; - } - .pv1-m { - padding-top: .25rem; - padding-bottom: .25rem; - } - .pv2-m { - padding-top: .5rem; - padding-bottom: .5rem; - } - .pv3-m { - padding-top: 1rem; - padding-bottom: 1rem; - } - .pv4-m { - padding-top: 2rem; - padding-bottom: 2rem; - } - .pv5-m { - padding-top: 4rem; - padding-bottom: 4rem; - } - .pv6-m { - padding-top: 8rem; - padding-bottom: 8rem; - } - .pv7-m { - padding-top: 16rem; - padding-bottom: 16rem; - } - - .ph0-m { - padding-left: 0; - padding-right: 0; - } - .ph1-m { - padding-left: .25rem; - padding-right: .25rem; - } - .ph2-m { - padding-left: .5rem; - padding-right: .5rem; - } - .ph3-m { - padding-left: 1rem; - padding-right: 1rem; - } - .ph4-m { - padding-left: 2rem; - padding-right: 2rem; - } - .ph5-m { - padding-left: 4rem; - padding-right: 4rem; - } - .ph6-m { - padding-left: 8rem; - padding-right: 8rem; - } - .ph7-m { - padding-left: 16rem; - padding-right: 16rem; - } - - .ma0-m { margin: 0; } - .ma1-m { margin: .25rem; } - .ma2-m { margin: .5rem; } - .ma3-m { margin: 1rem; } - .ma4-m { margin: 2rem; } - .ma5-m { margin: 4rem; } - .ma6-m { margin: 8rem; } - .ma7-m { margin: 16rem; } - - .ml0-m { margin-left: 0; } - .ml1-m { margin-left: .25rem; } - .ml2-m { margin-left: .5rem; } - .ml3-m { margin-left: 1rem; } - .ml4-m { margin-left: 2rem; } - .ml5-m { margin-left: 4rem; } - .ml6-m { margin-left: 8rem; } - .ml7-m { margin-left: 16rem; } - - .mr0-m { margin-right: 0; } - .mr1-m { margin-right: .25rem; } - .mr2-m { margin-right: .5rem; } - .mr3-m { margin-right: 1rem; } - .mr4-m { margin-right: 2rem; } - .mr5-m { margin-right: 4rem; } - .mr6-m { margin-right: 8rem; } - .mr7-m { margin-right: 16rem; } - - .mb0-m { margin-bottom: 0; } - .mb1-m { margin-bottom: .25rem; } - .mb2-m { margin-bottom: .5rem; } - .mb3-m { margin-bottom: 1rem; } - .mb4-m { margin-bottom: 2rem; } - .mb5-m { margin-bottom: 4rem; } - .mb6-m { margin-bottom: 8rem; } - .mb7-m { margin-bottom: 16rem; } - - .mt0-m { margin-top: 0; } - .mt1-m { margin-top: .25rem; } - .mt2-m { margin-top: .5rem; } - .mt3-m { margin-top: 1rem; } - .mt4-m { margin-top: 2rem; } - .mt5-m { margin-top: 4rem; } - .mt6-m { margin-top: 8rem; } - .mt7-m { margin-top: 16rem; } - - .mv0-m { - margin-top: 0; - margin-bottom: 0; - } - .mv1-m { - margin-top: .25rem; - margin-bottom: .25rem; - } - .mv2-m { - margin-top: .5rem; - margin-bottom: .5rem; - } - .mv3-m { - margin-top: 1rem; - margin-bottom: 1rem; - } - .mv4-m { - margin-top: 2rem; - margin-bottom: 2rem; - } - .mv5-m { - margin-top: 4rem; - margin-bottom: 4rem; - } - .mv6-m { - margin-top: 8rem; - margin-bottom: 8rem; - } - .mv7-m { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .mh0-m { - margin-left: 0; - margin-right: 0; - } - .mh1-m { - margin-left: .25rem; - margin-right: .25rem; - } - .mh2-m { - margin-left: .5rem; - margin-right: .5rem; - } - .mh3-m { - margin-left: 1rem; - margin-right: 1rem; - } - .mh4-m { - margin-left: 2rem; - margin-right: 2rem; - } - .mh5-m { - margin-left: 4rem; - margin-right: 4rem; - } - .mh6-m { - margin-left: 8rem; - margin-right: 8rem; - } - .mh7-m { - margin-left: 16rem; - margin-right: 16rem; - } - -} -@media screen and (min-width: 60em) { - .pa0-l { padding: 0; } - .pa1-l { padding: .25rem; } - .pa2-l { padding: .5rem; } - .pa3-l { padding: 1rem; } - .pa4-l { padding: 2rem; } - .pa5-l { padding: 4rem; } - .pa6-l { padding: 8rem; } - .pa7-l { padding: 16rem; } - - .pl0-l { padding-left: 0; } - .pl1-l { padding-left: .25rem; } - .pl2-l { padding-left: .5rem; } - .pl3-l { padding-left: 1rem; } - .pl4-l { padding-left: 2rem; } - .pl5-l { padding-left: 4rem; } - .pl6-l { padding-left: 8rem; } - .pl7-l { padding-left: 16rem; } - - .pr0-l { padding-right: 0; } - .pr1-l { padding-right: .25rem; } - .pr2-l { padding-right: .5rem; } - .pr3-l { padding-right: 1rem; } - .pr4-l { padding-right: 2rem; } - .pr5-l { padding-right: 4rem; } - .pr6-l { padding-right: 8rem; } - .pr7-l { padding-right: 16rem; } - - .pb0-l { padding-bottom: 0; } - .pb1-l { padding-bottom: .25rem; } - .pb2-l { padding-bottom: .5rem; } - .pb3-l { padding-bottom: 1rem; } - .pb4-l { padding-bottom: 2rem; } - .pb5-l { padding-bottom: 4rem; } - .pb6-l { padding-bottom: 8rem; } - .pb7-l { padding-bottom: 16rem; } - - .pt0-l { padding-top: 0; } - .pt1-l { padding-top: .25rem; } - .pt2-l { padding-top: .5rem; } - .pt3-l { padding-top: 1rem; } - .pt4-l { padding-top: 2rem; } - .pt5-l { padding-top: 4rem; } - .pt6-l { padding-top: 8rem; } - .pt7-l { padding-top: 16rem; } - - .pv0-l { - padding-top: 0; - padding-bottom: 0; - } - .pv1-l { - padding-top: .25rem; - padding-bottom: .25rem; - } - .pv2-l { - padding-top: .5rem; - padding-bottom: .5rem; - } - .pv3-l { - padding-top: 1rem; - padding-bottom: 1rem; - } - .pv4-l { - padding-top: 2rem; - padding-bottom: 2rem; - } - .pv5-l { - padding-top: 4rem; - padding-bottom: 4rem; - } - .pv6-l { - padding-top: 8rem; - padding-bottom: 8rem; - } - .pv7-l { - padding-top: 16rem; - padding-bottom: 16rem; - } - - .ph0-l { - padding-left: 0; - padding-right: 0; - } - .ph1-l { - padding-left: .25rem; - padding-right: .25rem; - } - .ph2-l { - padding-left: .5rem; - padding-right: .5rem; - } - .ph3-l { - padding-left: 1rem; - padding-right: 1rem; - } - .ph4-l { - padding-left: 2rem; - padding-right: 2rem; - } - .ph5-l { - padding-left: 4rem; - padding-right: 4rem; - } - .ph6-l { - padding-left: 8rem; - padding-right: 8rem; - } - .ph7-l { - padding-left: 16rem; - padding-right: 16rem; - } - - .ma0-l { margin: 0; } - .ma1-l { margin: .25rem; } - .ma2-l { margin: .5rem; } - .ma3-l { margin: 1rem; } - .ma4-l { margin: 2rem; } - .ma5-l { margin: 4rem; } - .ma6-l { margin: 8rem; } - .ma7-l { margin: 16rem; } - - .ml0-l { margin-left: 0; } - .ml1-l { margin-left: .25rem; } - .ml2-l { margin-left: .5rem; } - .ml3-l { margin-left: 1rem; } - .ml4-l { margin-left: 2rem; } - .ml5-l { margin-left: 4rem; } - .ml6-l { margin-left: 8rem; } - .ml7-l { margin-left: 16rem; } - - .mr0-l { margin-right: 0; } - .mr1-l { margin-right: .25rem; } - .mr2-l { margin-right: .5rem; } - .mr3-l { margin-right: 1rem; } - .mr4-l { margin-right: 2rem; } - .mr5-l { margin-right: 4rem; } - .mr6-l { margin-right: 8rem; } - .mr7-l { margin-right: 16rem; } - - .mb0-l { margin-bottom: 0; } - .mb1-l { margin-bottom: .25rem; } - .mb2-l { margin-bottom: .5rem; } - .mb3-l { margin-bottom: 1rem; } - .mb4-l { margin-bottom: 2rem; } - .mb5-l { margin-bottom: 4rem; } - .mb6-l { margin-bottom: 8rem; } - .mb7-l { margin-bottom: 16rem; } - - .mt0-l { margin-top: 0; } - .mt1-l { margin-top: .25rem; } - .mt2-l { margin-top: .5rem; } - .mt3-l { margin-top: 1rem; } - .mt4-l { margin-top: 2rem; } - .mt5-l { margin-top: 4rem; } - .mt6-l { margin-top: 8rem; } - .mt7-l { margin-top: 16rem; } - - .mv0-l { - margin-top: 0; - margin-bottom: 0; - } - .mv1-l { - margin-top: .25rem; - margin-bottom: .25rem; - } - .mv2-l { - margin-top: .5rem; - margin-bottom: .5rem; - } - .mv3-l { - margin-top: 1rem; - margin-bottom: 1rem; - } - .mv4-l { - margin-top: 2rem; - margin-bottom: 2rem; - } - .mv5-l { - margin-top: 4rem; - margin-bottom: 4rem; - } - .mv6-l { - margin-top: 8rem; - margin-bottom: 8rem; - } - .mv7-l { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .mh0-l { - margin-left: 0; - margin-right: 0; - } - .mh1-l { - margin-left: .25rem; - margin-right: .25rem; - } - .mh2-l { - margin-left: .5rem; - margin-right: .5rem; - } - .mh3-l { - margin-left: 1rem; - margin-right: 1rem; - } - .mh4-l { - margin-left: 2rem; - margin-right: 2rem; - } - .mh5-l { - margin-left: 4rem; - margin-right: 4rem; - } - .mh6-l { - margin-left: 8rem; - margin-right: 8rem; - } - .mh7-l { - margin-left: 16rem; - margin-right: 16rem; - } -} -/* - NEGATIVE MARGINS - - Base: - n = negative - - Modifiers: - a = all - t = top - r = right - b = bottom - l = left - - 1 = 1st step in spacing scale - 2 = 2nd step in spacing scale - 3 = 3rd step in spacing scale - 4 = 4th step in spacing scale - 5 = 5th step in spacing scale - 6 = 6th step in spacing scale - 7 = 7th step in spacing scale - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.na1 { margin: -0.25rem; } -.na2 { margin: -0.5rem; } -.na3 { margin: -1rem; } -.na4 { margin: -2rem; } -.na5 { margin: -4rem; } -.na6 { margin: -8rem; } -.na7 { margin: -16rem; } -.nl1 { margin-left: -0.25rem; } -.nl2 { margin-left: -0.5rem; } -.nl3 { margin-left: -1rem; } -.nl4 { margin-left: -2rem; } -.nl5 { margin-left: -4rem; } -.nl6 { margin-left: -8rem; } -.nl7 { margin-left: -16rem; } -.nr1 { margin-right: -0.25rem; } -.nr2 { margin-right: -0.5rem; } -.nr3 { margin-right: -1rem; } -.nr4 { margin-right: -2rem; } -.nr5 { margin-right: -4rem; } -.nr6 { margin-right: -8rem; } -.nr7 { margin-right: -16rem; } -.nb1 { margin-bottom: -0.25rem; } -.nb2 { margin-bottom: -0.5rem; } -.nb3 { margin-bottom: -1rem; } -.nb4 { margin-bottom: -2rem; } -.nb5 { margin-bottom: -4rem; } -.nb6 { margin-bottom: -8rem; } -.nb7 { margin-bottom: -16rem; } -.nt1 { margin-top: -0.25rem; } -.nt2 { margin-top: -0.5rem; } -.nt3 { margin-top: -1rem; } -.nt4 { margin-top: -2rem; } -.nt5 { margin-top: -4rem; } -.nt6 { margin-top: -8rem; } -.nt7 { margin-top: -16rem; } -@media screen and (min-width: 30em) { - - .na1-ns { margin: -0.25rem; } - .na2-ns { margin: -0.5rem; } - .na3-ns { margin: -1rem; } - .na4-ns { margin: -2rem; } - .na5-ns { margin: -4rem; } - .na6-ns { margin: -8rem; } - .na7-ns { margin: -16rem; } - - .nl1-ns { margin-left: -0.25rem; } - .nl2-ns { margin-left: -0.5rem; } - .nl3-ns { margin-left: -1rem; } - .nl4-ns { margin-left: -2rem; } - .nl5-ns { margin-left: -4rem; } - .nl6-ns { margin-left: -8rem; } - .nl7-ns { margin-left: -16rem; } - - .nr1-ns { margin-right: -0.25rem; } - .nr2-ns { margin-right: -0.5rem; } - .nr3-ns { margin-right: -1rem; } - .nr4-ns { margin-right: -2rem; } - .nr5-ns { margin-right: -4rem; } - .nr6-ns { margin-right: -8rem; } - .nr7-ns { margin-right: -16rem; } - - .nb1-ns { margin-bottom: -0.25rem; } - .nb2-ns { margin-bottom: -0.5rem; } - .nb3-ns { margin-bottom: -1rem; } - .nb4-ns { margin-bottom: -2rem; } - .nb5-ns { margin-bottom: -4rem; } - .nb6-ns { margin-bottom: -8rem; } - .nb7-ns { margin-bottom: -16rem; } - - .nt1-ns { margin-top: -0.25rem; } - .nt2-ns { margin-top: -0.5rem; } - .nt3-ns { margin-top: -1rem; } - .nt4-ns { margin-top: -2rem; } - .nt5-ns { margin-top: -4rem; } - .nt6-ns { margin-top: -8rem; } - .nt7-ns { margin-top: -16rem; } - -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .na1-m { margin: -0.25rem; } - .na2-m { margin: -0.5rem; } - .na3-m { margin: -1rem; } - .na4-m { margin: -2rem; } - .na5-m { margin: -4rem; } - .na6-m { margin: -8rem; } - .na7-m { margin: -16rem; } - - .nl1-m { margin-left: -0.25rem; } - .nl2-m { margin-left: -0.5rem; } - .nl3-m { margin-left: -1rem; } - .nl4-m { margin-left: -2rem; } - .nl5-m { margin-left: -4rem; } - .nl6-m { margin-left: -8rem; } - .nl7-m { margin-left: -16rem; } - - .nr1-m { margin-right: -0.25rem; } - .nr2-m { margin-right: -0.5rem; } - .nr3-m { margin-right: -1rem; } - .nr4-m { margin-right: -2rem; } - .nr5-m { margin-right: -4rem; } - .nr6-m { margin-right: -8rem; } - .nr7-m { margin-right: -16rem; } - - .nb1-m { margin-bottom: -0.25rem; } - .nb2-m { margin-bottom: -0.5rem; } - .nb3-m { margin-bottom: -1rem; } - .nb4-m { margin-bottom: -2rem; } - .nb5-m { margin-bottom: -4rem; } - .nb6-m { margin-bottom: -8rem; } - .nb7-m { margin-bottom: -16rem; } - - .nt1-m { margin-top: -0.25rem; } - .nt2-m { margin-top: -0.5rem; } - .nt3-m { margin-top: -1rem; } - .nt4-m { margin-top: -2rem; } - .nt5-m { margin-top: -4rem; } - .nt6-m { margin-top: -8rem; } - .nt7-m { margin-top: -16rem; } - -} -@media screen and (min-width: 60em) { - .na1-l { margin: -0.25rem; } - .na2-l { margin: -0.5rem; } - .na3-l { margin: -1rem; } - .na4-l { margin: -2rem; } - .na5-l { margin: -4rem; } - .na6-l { margin: -8rem; } - .na7-l { margin: -16rem; } - - .nl1-l { margin-left: -0.25rem; } - .nl2-l { margin-left: -0.5rem; } - .nl3-l { margin-left: -1rem; } - .nl4-l { margin-left: -2rem; } - .nl5-l { margin-left: -4rem; } - .nl6-l { margin-left: -8rem; } - .nl7-l { margin-left: -16rem; } - - .nr1-l { margin-right: -0.25rem; } - .nr2-l { margin-right: -0.5rem; } - .nr3-l { margin-right: -1rem; } - .nr4-l { margin-right: -2rem; } - .nr5-l { margin-right: -4rem; } - .nr6-l { margin-right: -8rem; } - .nr7-l { margin-right: -16rem; } - - .nb1-l { margin-bottom: -0.25rem; } - .nb2-l { margin-bottom: -0.5rem; } - .nb3-l { margin-bottom: -1rem; } - .nb4-l { margin-bottom: -2rem; } - .nb5-l { margin-bottom: -4rem; } - .nb6-l { margin-bottom: -8rem; } - .nb7-l { margin-bottom: -16rem; } - - .nt1-l { margin-top: -0.25rem; } - .nt2-l { margin-top: -0.5rem; } - .nt3-l { margin-top: -1rem; } - .nt4-l { margin-top: -2rem; } - .nt5-l { margin-top: -4rem; } - .nt6-l { margin-top: -8rem; } - .nt7-l { margin-top: -16rem; } -} -/* - - TABLES - Docs: http://tachyons.io/docs/elements/tables/ - -*/ -.collapse { - border-collapse: collapse; - border-spacing: 0; -} -.striped--light-silver:nth-child(odd) { - background-color: #aaa; -} -.striped--moon-gray:nth-child(odd) { - background-color: #ccc; -} -.striped--light-gray:nth-child(odd) { - background-color: #eee; -} -.striped--near-white:nth-child(odd) { - background-color: #f4f4f4; -} -.stripe-light:nth-child(odd) { - background-color: rgba(255, 255, 255, .1); -} -.stripe-dark:nth-child(odd) { - background-color: rgba(0, 0, 0, .1); -} -/* - - TEXT DECORATION - Docs: http://tachyons.io/docs/typography/text-decoration/ - - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.strike { text-decoration: line-through; } -.underline { text-decoration: underline; } -.no-underline { text-decoration: none; } -@media screen and (min-width: 30em) { - .strike-ns { text-decoration: line-through; } - .underline-ns { text-decoration: underline; } - .no-underline-ns { text-decoration: none; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .strike-m { text-decoration: line-through; } - .underline-m { text-decoration: underline; } - .no-underline-m { text-decoration: none; } -} -@media screen and (min-width: 60em) { - .strike-l { text-decoration: line-through; } - .underline-l { text-decoration: underline; } - .no-underline-l { text-decoration: none; } -} -/* - - TEXT ALIGN - Docs: http://tachyons.io/docs/typography/text-align/ - - Base - t = text-align - - Modifiers - l = left - r = right - c = center - j = justify - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.tl { text-align: left; } -.tr { text-align: right; } -.tc { text-align: center; } -.tj { text-align: justify; } -@media screen and (min-width: 30em) { - .tl-ns { text-align: left; } - .tr-ns { text-align: right; } - .tc-ns { text-align: center; } - .tj-ns { text-align: justify; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .tl-m { text-align: left; } - .tr-m { text-align: right; } - .tc-m { text-align: center; } - .tj-m { text-align: justify; } -} -@media screen and (min-width: 60em) { - .tl-l { text-align: left; } - .tr-l { text-align: right; } - .tc-l { text-align: center; } - .tj-l { text-align: justify; } -} -/* - - TEXT TRANSFORM - Docs: http://tachyons.io/docs/typography/text-transform/ - - Base: - tt = text-transform - - Modifiers - c = capitalize - l = lowercase - u = uppercase - n = none - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.ttc { text-transform: capitalize; } -.ttl { text-transform: lowercase; } -.ttu { text-transform: uppercase; } -.ttn { text-transform: none; } -@media screen and (min-width: 30em) { - .ttc-ns { text-transform: capitalize; } - .ttl-ns { text-transform: lowercase; } - .ttu-ns { text-transform: uppercase; } - .ttn-ns { text-transform: none; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .ttc-m { text-transform: capitalize; } - .ttl-m { text-transform: lowercase; } - .ttu-m { text-transform: uppercase; } - .ttn-m { text-transform: none; } -} -@media screen and (min-width: 60em) { - .ttc-l { text-transform: capitalize; } - .ttl-l { text-transform: lowercase; } - .ttu-l { text-transform: uppercase; } - .ttn-l { text-transform: none; } -} -/* - - TYPE SCALE - Docs: http://tachyons.io/docs/typography/scale/ - - Base: - f = font-size - - Modifiers - 1 = 1st step in size scale - 2 = 2nd step in size scale - 3 = 3rd step in size scale - 4 = 4th step in size scale - 5 = 5th step in size scale - 6 = 6th step in size scale - 7 = 7th step in size scale - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large -*/ -/* - * For Hero/Marketing Titles - * - * These generally are too large for mobile - * so be careful using them on smaller screens. - * */ -.f-6, -.f-headline { - font-size: 6rem; -} -.f-5, -.f-subheadline { - font-size: 5rem; -} -/* Type Scale */ -.f1 { font-size: 3rem; } -.f2 { font-size: 2.25rem; } -.f3 { font-size: 1.5rem; } -.f4 { font-size: 1.25rem; } -.f5 { font-size: 1rem; } -.f6 { font-size: .875rem; } -.f7 { font-size: .75rem; } -/* Small and hard to read for many people so use with extreme caution */ -@media screen and (min-width: 30em){ - .f-6-ns, - .f-headline-ns { font-size: 6rem; } - .f-5-ns, - .f-subheadline-ns { font-size: 5rem; } - .f1-ns { font-size: 3rem; } - .f2-ns { font-size: 2.25rem; } - .f3-ns { font-size: 1.5rem; } - .f4-ns { font-size: 1.25rem; } - .f5-ns { font-size: 1rem; } - .f6-ns { font-size: .875rem; } - .f7-ns { font-size: .75rem; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .f-6-m, - .f-headline-m { font-size: 6rem; } - .f-5-m, - .f-subheadline-m { font-size: 5rem; } - .f1-m { font-size: 3rem; } - .f2-m { font-size: 2.25rem; } - .f3-m { font-size: 1.5rem; } - .f4-m { font-size: 1.25rem; } - .f5-m { font-size: 1rem; } - .f6-m { font-size: .875rem; } - .f7-m { font-size: .75rem; } -} -@media screen and (min-width: 60em) { - .f-6-l, - .f-headline-l { - font-size: 6rem; - } - .f-5-l, - .f-subheadline-l { - font-size: 5rem; - } - .f1-l { font-size: 3rem; } - .f2-l { font-size: 2.25rem; } - .f3-l { font-size: 1.5rem; } - .f4-l { font-size: 1.25rem; } - .f5-l { font-size: 1rem; } - .f6-l { font-size: .875rem; } - .f7-l { font-size: .75rem; } -} -/* - - TYPOGRAPHY - http://tachyons.io/docs/typography/measure/ - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* Measure is limited to ~66 characters */ -.measure { - max-width: 30em; -} -/* Measure is limited to ~80 characters */ -.measure-wide { - max-width: 34em; -} -/* Measure is limited to ~45 characters */ -.measure-narrow { - max-width: 20em; -} -/* Book paragraph style - paragraphs are indented with no vertical spacing. */ -.indent { - text-indent: 1em; - margin-top: 0; - margin-bottom: 0; -} -.small-caps { - -webkit-font-feature-settings: "c2sc"; - font-feature-settings: "c2sc"; - font-variant: small-caps; -} -/* Combine this class with a width to truncate text (or just leave as is to truncate at width of containing element. */ -.truncate { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -@media screen and (min-width: 30em) { - .measure-ns { - max-width: 30em; - } - .measure-wide-ns { - max-width: 34em; - } - .measure-narrow-ns { - max-width: 20em; - } - .indent-ns { - text-indent: 1em; - margin-top: 0; - margin-bottom: 0; - } - .small-caps-ns { - -webkit-font-feature-settings: "c2sc"; - font-feature-settings: "c2sc"; - font-variant: small-caps; - } - .truncate-ns { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .measure-m { - max-width: 30em; - } - .measure-wide-m { - max-width: 34em; - } - .measure-narrow-m { - max-width: 20em; - } - .indent-m { - text-indent: 1em; - margin-top: 0; - margin-bottom: 0; - } - .small-caps-m { - -webkit-font-feature-settings: "c2sc"; - font-feature-settings: "c2sc"; - font-variant: small-caps; - } - .truncate-m { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} -@media screen and (min-width: 60em) { - .measure-l { - max-width: 30em; - } - .measure-wide-l { - max-width: 34em; - } - .measure-narrow-l { - max-width: 20em; - } - .indent-l { - text-indent: 1em; - margin-top: 0; - margin-bottom: 0; - } - .small-caps-l { - -webkit-font-feature-settings: "c2sc"; - font-feature-settings: "c2sc"; - font-variant: small-caps; - } - .truncate-l { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} -/* - - UTILITIES - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* Equivalent to .overflow-y-scroll */ -.overflow-container { - overflow-y: scroll; -} -.center { - margin-right: auto; - margin-left: auto; -} -.mr-auto { margin-right: auto; } -.ml-auto { margin-left: auto; } -@media screen and (min-width: 30em){ - .center-ns { - margin-right: auto; - margin-left: auto; - } - .mr-auto-ns { margin-right: auto; } - .ml-auto-ns { margin-left: auto; } -} -@media screen and (min-width: 30em) and (max-width: 60em){ - .center-m { - margin-right: auto; - margin-left: auto; - } - .mr-auto-m { margin-right: auto; } - .ml-auto-m { margin-left: auto; } -} -@media screen and (min-width: 60em){ - .center-l { - margin-right: auto; - margin-left: auto; - } - .mr-auto-l { margin-right: auto; } - .ml-auto-l { margin-left: auto; } -} -/* - - VISIBILITY - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -/* - Text that is hidden but accessible - Ref: http://snook.ca/archives/html_and_css/hiding-content-for-accessibility -*/ -.clip { - position: fixed !important; - _position: absolute !important; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ - clip: rect(1px, 1px, 1px, 1px); -} -@media screen and (min-width: 30em) { - .clip-ns { - position: fixed !important; - _position: absolute !important; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ - clip: rect(1px, 1px, 1px, 1px); - } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .clip-m { - position: fixed !important; - _position: absolute !important; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ - clip: rect(1px, 1px, 1px, 1px); - } -} -@media screen and (min-width: 60em) { - .clip-l { - position: fixed !important; - _position: absolute !important; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ - clip: rect(1px, 1px, 1px, 1px); - } -} -/* - - WHITE SPACE - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.ws-normal { white-space: normal; } -.nowrap { white-space: nowrap; } -.pre { white-space: pre; } -@media screen and (min-width: 30em) { - .ws-normal-ns { white-space: normal; } - .nowrap-ns { white-space: nowrap; } - .pre-ns { white-space: pre; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .ws-normal-m { white-space: normal; } - .nowrap-m { white-space: nowrap; } - .pre-m { white-space: pre; } -} -@media screen and (min-width: 60em) { - .ws-normal-l { white-space: normal; } - .nowrap-l { white-space: nowrap; } - .pre-l { white-space: pre; } -} -/* - - VERTICAL ALIGN - - Media Query Extensions: - -ns = not-small - -m = medium - -l = large - -*/ -.v-base { vertical-align: baseline; } -.v-mid { vertical-align: middle; } -.v-top { vertical-align: top; } -.v-btm { vertical-align: bottom; } -@media screen and (min-width: 30em) { - .v-base-ns { vertical-align: baseline; } - .v-mid-ns { vertical-align: middle; } - .v-top-ns { vertical-align: top; } - .v-btm-ns { vertical-align: bottom; } -} -@media screen and (min-width: 30em) and (max-width: 60em) { - .v-base-m { vertical-align: baseline; } - .v-mid-m { vertical-align: middle; } - .v-top-m { vertical-align: top; } - .v-btm-m { vertical-align: bottom; } -} -@media screen and (min-width: 60em) { - .v-base-l { vertical-align: baseline; } - .v-mid-l { vertical-align: middle; } - .v-top-l { vertical-align: top; } - .v-btm-l { vertical-align: bottom; } -} -/* - - HOVER EFFECTS - Docs: http://tachyons.io/docs/themes/hovers/ - - - Dim - - Glow - - Hide Child - - Underline text - - Grow - - Pointer - - Shadow - -*/ -/* - - Dim element on hover by adding the dim class. - -*/ -.dim { - opacity: 1; - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -.dim:hover, -.dim:focus { - opacity: .5; - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -.dim:active { - opacity: .8; -webkit-transition: opacity .15s ease-out; transition: opacity .15s ease-out; -} -/* - - Animate opacity to 100% on hover by adding the glow class. - -*/ -.glow { - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -.glow:hover, -.glow:focus { - opacity: 1; - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -/* - - Hide child & reveal on hover: - - Put the hide-child class on a parent element and any nested element with the - child class will be hidden and displayed on hover or focus. - - -*/ -.hide-child .child { - opacity: 0; - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -.hide-child:hover .child, -.hide-child:focus .child, -.hide-child:active .child { - opacity: 1; - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -.underline-hover:hover, -.underline-hover:focus { - text-decoration: underline; -} -/* Can combine this with overflow-hidden to make background images grow on hover - * even if you are using background-size: cover */ -.grow { - -moz-osx-font-smoothing: grayscale; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition: -webkit-transform 0.25s ease-out; - transition: -webkit-transform 0.25s ease-out; - transition: transform 0.25s ease-out; - transition: transform 0.25s ease-out, -webkit-transform 0.25s ease-out; -} -.grow:hover, -.grow:focus { - -webkit-transform: scale(1.05); - transform: scale(1.05); -} -.grow:active { - -webkit-transform: scale(.90); - transform: scale(.90); -} -.grow-large { - -moz-osx-font-smoothing: grayscale; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition: -webkit-transform .25s ease-in-out; - transition: -webkit-transform .25s ease-in-out; - transition: transform .25s ease-in-out; - transition: transform .25s ease-in-out, -webkit-transform .25s ease-in-out; -} -.grow-large:hover, -.grow-large:focus { - -webkit-transform: scale(1.2); - transform: scale(1.2); -} -.grow-large:active { - -webkit-transform: scale(.95); - transform: scale(.95); -} -/* Add pointer on hover */ -.pointer:hover { - cursor: pointer; -} -/* - Add shadow on hover. - - Performant box-shadow animation pattern from - http://tobiasahlin.com/blog/how-to-animate-box-shadow/ -*/ -.shadow-hover { - cursor: pointer; - position: relative; - -webkit-transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); - transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); -} -.shadow-hover::after { - content: ''; - -webkit-box-shadow: 0px 0px 16px 2px rgba(0, 0, 0, .2); - box-shadow: 0px 0px 16px 2px rgba(0, 0, 0, .2); - border-radius: inherit; - opacity: 0; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: -1; - -webkit-transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); - transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); -} -.shadow-hover:hover::after, -.shadow-hover:focus::after { - opacity: 1; -} -/* Combine with classes in skins and skins-pseudo for - * many different transition possibilities. */ -.bg-animate, -.bg-animate:hover, -.bg-animate:focus { - -webkit-transition: background-color .15s ease-in-out; - transition: background-color .15s ease-in-out; -} -/* - - Z-INDEX - - Base - z = z-index - - Modifiers - -0 = literal value 0 - -1 = literal value 1 - -2 = literal value 2 - -3 = literal value 3 - -4 = literal value 4 - -5 = literal value 5 - -999 = literal value 999 - -9999 = literal value 9999 - - -max = largest accepted z-index value as integer - - -inherit = string value inherit - -initial = string value initial - -unset = string value unset - - MDN: https://developer.mozilla.org/en/docs/Web/CSS/z-index - Spec: http://www.w3.org/TR/CSS2/zindex.html - Articles: - https://philipwalton.com/articles/what-no-one-told-you-about-z-index/ - - Tips on extending: - There might be a time worth using negative z-index values. - Or if you are using tachyons with another project, you might need to - adjust these values to suit your needs. - -*/ -.z-0 { z-index: 0; } -.z-1 { z-index: 1; } -.z-2 { z-index: 2; } -.z-3 { z-index: 3; } -.z-4 { z-index: 4; } -.z-5 { z-index: 5; } -.z-999 { z-index: 999; } -.z-9999 { z-index: 9999; } -.z-max { - z-index: 2147483647; -} -.z-inherit { z-index: inherit; } -.z-initial { z-index: auto; z-index: initial; } -.z-unset { z-index: unset; } -/* - - NESTED - Tachyons module for styling nested elements - that are generated by a cms. - -*/ -.nested-copy-line-height p, -.nested-copy-line-height ul, -.nested-copy-line-height ol { - line-height: 1.5; -} -.nested-headline-line-height h1, -.nested-headline-line-height h2, -.nested-headline-line-height h3, -.nested-headline-line-height h4, -.nested-headline-line-height h5, -.nested-headline-line-height h6 { - line-height: 1.25; -} -.nested-list-reset ul, -.nested-list-reset ol { - padding-left: 0; - margin-left: 0; - list-style-type: none; -} -.nested-copy-indent p+p { - text-indent: 1em; - margin-top: 0; - margin-bottom: 0; -} -.nested-copy-separator p+p { - margin-top: 1.5em; -} -.nested-img img { - width: 100%; - max-width: 100%; - display: block; -} -.nested-links a { - color: #0594CB; - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; -} -.nested-links a:hover, -.nested-links a:focus { - color: #96ccff; - -webkit-transition: color .15s ease-in; - transition: color .15s ease-in; -} -/*@import 'tachyons/src/_styles';*/ -/* Variables */ -/* Importing here will allow you to override any variables in the modules */ -/* - - Tachyons - COLOR VARIABLES - - Grayscale - - Solids - - Transparencies - Colors - -*/ -/* - - CUSTOM MEDIA QUERIES - - Media query values can be changed to fit your own content. - There are no magic bullets when it comes to media query width values. - They should be declared in em units - and they should be set to meet - the needs of your content. You can also add additional media queries, - or remove some of the existing ones. - - These media queries can be referenced like so: - - @media (--breakpoint-not-small) { - .medium-and-larger-specific-style { - background-color: red; - } - } - - @media (--breakpoint-medium) { - .medium-screen-specific-style { - background-color: red; - } - } - - @media (--breakpoint-large) { - .large-and-larger-screen-specific-style { - background-color: red; - } - } - -*/ -/* Media Queries */ -/* Debugging */ -/*@import 'tachyons/src/_debug-children'; -@import 'tachyons/src/_debug-grid';*/ -/* Uncomment out the line below to help debug layout issues */ -/* @import 'tachyons/src/_debug'; */ -/* purgecss start ignore */ -.header-link:after { - position: relative; - left: 0.5em; - opacity: 0; - font-size: 0.8em; - -moz-transition: opacity 0.2s ease-in-out 0.1s; - -ms-transition: opacity 0.2s ease-in-out 0.1s; -} -h2:hover .header-link, -h3:hover .header-link, -h4:hover .header-link, -h5:hover .header-link, -h6:hover .header-link { - opacity: 1; -} -.animated { - -webkit-animation-duration: .5s; - animation-duration: .5s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; -} -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} -.animated-delay-1 { - -webkit-animation-delay: 0.5s; - animation-delay: 0.5s; -} -.note, -.warning { - - border-left-width: 4px; - border-left-style: solid; - position: relative; - border-color: #0594CB; - - display: block; -} -.note #exclamation-icon, -.warning #exclamation-icon { - - fill: #0594CB; - position: absolute; - top: 35%; - left: -12px; - /*background-color: white;*/ -} -.admonition-content { - display: block; - margin: 0px; - padding: .125em 1em; - /*margin-left: 1em;*/ - margin-top: 2em; - margin-bottom: 2em; - overflow-x: auto; - /*font-size: .9375em;*/ - background-color: rgba(0, 0, 0, .05); - } -.hide-child-menu .child-menu { - display: none; - } -.hide-child-menu:hover .child-menu, - .hide-child-menu:focus .child-menu, - .hide-child-menu:active .child-menu { - display: block; - } -/*documentation-copy headings exaggerate spacing and size to chunk content */ -.documentation-copy h2 { - margin-top: 3em - } -.documentation-copy h2.minor { - font-size: inherit; - margin-top: inherit; - border-bottom: none; -} -.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:visible!important} -.searchbox .algolia-autocomplete{display:block;width:100%;height:100%} -.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative} -.searchbox__input{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:background .4s ease,-webkit-box-shadow .4s ease;transition:background .4s ease,-webkit-box-shadow .4s ease;transition:box-shadow .4s ease,background .4s ease;transition:box-shadow .4s ease,background .4s ease,-webkit-box-shadow .4s ease;border:0;border-radius:16px;-webkit-box-shadow:inset 0 0 0 1px #ccc;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none} -.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none} -.searchbox__input:hover{-webkit-box-shadow:inset 0 0 0 1px #b3b3b3;box-shadow:inset 0 0 0 1px #b3b3b3} -.searchbox__input:active,.searchbox__input:focus{outline:0;-webkit-box-shadow:inset 0 0 0 1px #aaa;box-shadow:inset 0 0 0 1px #aaa;background:#fff} -.searchbox__input::-webkit-input-placeholder{color:#aaa} -.searchbox__input:-ms-input-placeholder{color:#aaa} -.searchbox__input::-ms-input-placeholder{color:#aaa} -.searchbox__input::placeholder{color:#aaa} -.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69, 142, 225, 0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0} -.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""} -.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer} -.searchbox__submit:focus{outline:0} -.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96} -.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0, 0, 0, .5)} -.searchbox__reset.hide{display:none} -.searchbox__reset:focus{outline:0} -.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px} -.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:sbx-reset-in;animation-name:sbx-reset-in;-webkit-animation-duration:.15s;animation-duration:.15s} -@-webkit-keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}} -@keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}} -.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important} -.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px} -.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important} -.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px} -.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;-webkit-box-shadow:0 1px 0 0 rgba(0, 0, 0, .2),0 2px 3px 0 rgba(0, 0, 0, .1);box-shadow:0 1px 0 0 rgba(0, 0, 0, .2),0 2px 3px 0 rgba(0, 0, 0, .1)} -.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);border-radius:2px} -.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px} -.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none} -.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer} -.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69, 142, 225, .05)} -.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px} -.algolia-autocomplete .ds-dropdown-menu *{-webkit-box-sizing:border-box;box-sizing:border-box} -.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden} -.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143, 187, 237, .1);padding:.1em .05em} -.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;-webkit-box-shadow:inset 0 -2px 0 0 rgba(69, 142, 225, .8);box-shadow:inset 0 -2px 0 0 rgba(69, 142, 225, .8);color:inherit} -.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer} -.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px} -.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d} -.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0} -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word} -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0} -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none} -.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700} -.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d} -.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em} -.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none} -.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace} -.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none} -.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block} -@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}} -@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}} -.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8} -.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;-webkit-box-shadow:none;box-shadow:none} -.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0} -.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block} -/* These styles enhance the home page carousel, located here: themes/gohugoioTheme/layouts/partials/home-page-sections/showcase.html */ -.overflow-x-scroll{ - -webkit-overflow-scrolling: touch; -} -.row { - -webkit-transition: 450ms -webkit-transform; - transition: 450ms -webkit-transform; - transition: 450ms transform; - transition: 450ms transform, 450ms -webkit-transform; - font-size: 0; -} -.tile { - -webkit-transition: 450ms all; - transition: 450ms all; -} -.details { - background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .9)), to(rgba(0, 0, 0, 0))); - background: linear-gradient(to top, rgba(0, 0, 0, .9) 0%, rgba(0, 0, 0, 0) 100%); - -webkit-transition: 450ms opacity; - transition: 450ms opacity; -} -.tile:hover .details { - opacity: 1; -} -.row:hover .tile { - opacity: 0.3; -} -.row:hover .tile:hover { - opacity: 1; -} -.chroma .lntable pre { - padding: 0; - margin: 0; - border: 0; -} -.chroma .lntable pre code { - padding: 0; - margin: 0; -} -code { - padding: 0.2em; - margin: 0; - font-size: 85%; - background-color: rgba(27, 31, 35, .05); - border-radius: 3px; -} -pre code { - display: block; - padding: 1.5em 1.5em; - font-size: .875rem; - line-height: 2; - overflow-x: auto; -} -pre { - background-color: #fff; - color: #333; - white-space: pre; - -webkit-hyphens: none; - -ms-hyphens: none; - hyphens: none; - position: relative; - border-width: 1px; - border-color: #ccc; - border-style: solid; -} -/* The Pygments highlighter comes with its own styles. */ -.highlight pre { - background-color: inherit; - color: inherit; - padding: 0.5em; - font-size: .875rem; -} -/*We are adding the copy button content here so we can change it with javascript. See the "Clipboard scripts"*/ -.copy:after { - content: "Copy" -} -.copied:after { - content: "Copied" -} -@media screen and (min-width: 60em) { - .full-width - { - /*width: 100vw; - position: relative; - left: 50%; - right: 50%; - margin-left: -50vw; - margin-right: -50vw;*/ - /*width: 60vw;*/ - /*position: relative; - left: 50%; - right: 50%;*/ - /*margin-left: -30vw;*/ - margin-right: -30vw; - max-width: 100vw; - } -} -.code-block .line-numbers-rows { - background: #2f3a46; - border: none; - bottom: -50px; - color: #98a4b3; - left: -178px; - padding: 50px 0; - top: -50px; - width: 138px -} -.code-block .line-numbers-rows>span:before { - color: inherit; - padding-right: 30px -} -.tab-button{ - margin-bottom:1px; - position: relative; - z-index: 1; - color:#333; - border-color:#ccc; - outline: none; - background-color:white; -} -.tab-pane code{ - background:#f1f2f2; - border-radius:0; -} -.tab-pane .chroma{ - background:none; - padding:0; -} -.tab-button.active{ - border-bottom-color:#f1f2f2; - background-color: #f1f2f2; -} -.tab-content .tab-pane{ - display: none; -} -.tab-content .tab-pane.active{ - display: block; -} -/* Treatment of copy buttons inside a tab module */ -.tab-content .copy, .tab-content .copied{ - display: none; -} -.tab-content .tab-pane.active + .copy, .tab-content .tab-pane.active + .copied{ - display: block; -} -.primary-color {color: #0594CB} -.bg-primary-color {background-color: #0594CB} -.hover-bg-primary-color:hover {background-color: #0594CB} -.primary-color-dark {color: #0A1922} -.bg-primary-color-dark {background-color: #0A1922} -.hover-bg-primary-color-dark:hover {background-color: #0A1922} -.primary-color-light {color: #f9f9f9} -.bg-primary-color-light {background-color: #f9f9f9} -.hover-bg-primary-color-light:hover {background-color: #f9f9f9} -.accent-color {color: #EBB951} -.bg-accent-color {background-color: #EBB951} -.hover-bg-accent-color:hover {background-color: #EBB951} -.accent-color-light {color: #FF4088} -.hover-accent-color-light:hover {color: #FF4088} -.bg-accent-color-light {background-color: #FF4088} -.hover-bg-accent-color-light:hover {background-color: #FF4088} -.accent-color-dark {color: #33ba91} -.bg-accent-color-dark {background-color: #33ba91} -.hover-bg-accent-color-dark:hover {background-color: #33ba91} -.text-color-primary {color: #373737} -.text-on-primary-color {color: #fff} -.text-color-secondary {color: #ccc} -.text-color-disabled {color: #F7f7f7} -.divider-color {color: #f6f6f6} -.warn-color {color: red} -.nested-links a { - color: #0594CB; - text-decoration: none; - -} -.column-count-2 {-webkit-column-count: 1;column-count: 1} -.column-gap-1 {-webkit-column-gap: 0;column-gap: 0} -.break-inside-avoid {-webkit-column-break-inside: auto;break-inside: auto} -@media screen and (min-width: 60em) { - .column-count-3-l {-webkit-column-count: 3;column-count: 3} - .column-count-2-l {-webkit-column-count: 2;column-count: 2} - .column-gap-1-l {-webkit-column-gap: 1;column-gap: 1} - .break-inside-avoid-l {-webkit-column-break-inside: avoid;break-inside: avoid} -} -.prose ul, .prose ol { - margin-bottom: 2em; -} -.prose ul li, .prose ol li { - margin-bottom: .5em; -} -.prose li:hover { - background-color: #eee -} -.prose ::selection { - background: #0594CB; /* WebKit/Blink Browsers */ - color: white; -} -.prose-glossary h3 { - margin-top: 0; - font-size: 1.125rem; -} -.prose-glossary h3:first-of-type { - margin-top: 3em; -} -.prose-glossary h3 ~ p { - margin: 0.5em 0 2em 0; -} -body { - -line-height: 1.45; - -} -p {margin-bottom: 1.3em;} -h1, h2, h3, h4 { -margin: 1.414em 0 0.5em; - -line-height: 1.2; -} -h1 { -margin-top: 0; -font-size: 2.441em; -} -h2 {font-size: 1.953em;} -h3 {font-size: 1.563em;} -h4 {font-size: 1.25em;} -small, .font_small {font-size: 0.8em;} -.prose table { - width: 100%; - margin-bottom: 3em; - border-collapse: collapse; - border-spacing: 0; - font-size: 1em; - border: 1px solid #eee - -} -.prose table th { - background-color: #0594CB; - border-bottom: 1px solid #0594CB; - color: white; - font-weight: 400; - text-align: left; - padding: .375em .5em; -} -.prose table td, .prose table tc { - padding: .75em .5em; - text-align: left; - border-right: 1px solid #eee; -} -.prose table tr:nth-child(even) { - background-color: #eee; -} -dl dt { - font-weight: bold; - font-size: 1.125rem; -} -dd { - margin: .5em 0 2em 0; - padding: 0; -} -.f2-fluid { - font-size: 2.25rem; -} -@media screen and (min-width: 60em) { - .f2-fluid { - font-size: 1.25rem; - font-size: calc(0.70833rem + 0.83333vw); - } -} -/* From https://www.cssfontstack.com */ -code, .code, pre code, .highlight pre { - font-family: 'inconsolata',Menlo,Monaco,'Courier New',monospace; -} -.sans-serif { - font-family: 'Muli', Avenir, 'Helvetica Neue', Helvetica, Roboto, Noto, 'Segoe UI', Arial, sans-serif; -} -.serif { - font-family: Palatino,"Palatino Linotype","Palatino LT STD","Book Antiqua",Georgia,serif; -} -/* Monospaced Typefaces (for code) */ -.courier { - font-family: 'Courier Next', - courier, - monospace; -} -/* Sans-Serif Typefaces */ -.helvetica { - font-family: 'helvetica neue', helvetica, - sans-serif; -} -.avenir { - font-family: 'avenir next', avenir, - sans-serif; -} -/* Serif Typefaces */ -.athelas { - font-family: athelas, - georgia, - serif; -} -.georgia { - font-family: georgia, - serif; -} -.times { - font-family: times, - serif; -} -.bodoni { - font-family: "Bodoni MT", - serif; -} -.calisto { - font-family: "Calisto MT", - serif; -} -.garamond { - font-family: garamond, - serif; -} -.baskerville { - font-family: baskerville, - serif; -} -/* pagination.html: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/template_embedded.go#L117 */ -.pagination { - margin: 3rem 0; -} -.pagination li { - display: inline-block; - margin-right: .375rem; - font-size: .875rem; - margin-bottom: 2.5em; -} -.pagination li a { - padding: .5rem .625rem; - background-color: white; - color: #333; - border: 1px solid #ddd; - border-radius: 3px; - text-decoration: none; -} -.pagination li.disabled { - display: none; -} -.pagination li.active a:link, -.pagination li.active a:active, -.pagination li.active a:visited { - background-color: #ddd; -} -/* Hides non-meaningful TOC items*/ -#TableOfContents ul li ul li ul li{ - display: none; - } -#TableOfContents ul li { - color: black; - display: block; - margin-bottom: .375em; - line-height: 1.375; -} -#TableOfContents ul li a{ - width: 100%; - padding: .25em .375em; - margin-left: -.375em; - -} -#TableOfContents ul li a:hover { - background-color: #999; - color: white; - -} -.no-js .needs-js { - opacity: 0 -} -.js .needs-js { - opacity: 1; - -webkit-transition: opacity .15s ease-in; - transition: opacity .15s ease-in; -} -.facebook, -.twitter, -.instagram, -.youtube { - fill: #bababa; -} -.facebook:hover { - fill: #3b5998; -} -.twitter { - fill: #55acee; -} -.twitter:hover { - fill: #bababa; -} -.instagram:hover { - fill: #e95950; -} -.youtube:hover { - fill: #bb0000; -} -.mstdn { - display: inline-block; - background-color: #282c37; - color: #d9e1e8; - text-decoration: none; - padding: 4px 10px 4px 30px; - border-radius: 4px; - font-size: 16px; - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2261.076954mm%22%20height%3D%2265.47831mm%22%20viewBox%3D%220%200%20216.4144%20232.00976%22%3E%3Cpath%20d%3D%22M211.80734%20139.0875c-3.18125%2016.36625-28.4925%2034.2775-57.5625%2037.74875-15.15875%201.80875-30.08375%203.47125-45.99875%202.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125%200%202.53375.15625%204.94625.46875%207.2025%203.38375%2025.68625%2025.47%2027.225%2046.39125%2027.9425%2021.11625.7225%2039.91875-5.20625%2039.91875-5.20625l.8675%2019.09s-14.77%207.93125-41.08125%209.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234%20213.82%201.40609%20165.31125.20859%20116.09125c-.365-14.61375-.14-28.39375-.14-39.91875%200-50.33%2032.97625-65.0825%2032.97625-65.0825C49.67234%203.45375%2078.20359.2425%20107.86484%200h.72875c29.66125.2425%2058.21125%203.45375%2074.8375%2011.09%200%200%2032.975%2014.7525%2032.975%2065.0825%200%200%20.41375%2037.13375-4.59875%2062.915%22%20fill%3D%22%233088d4%22%2F%3E%3Cpath%20d%3D%22M177.50984%2080.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025%200-17.4175%207.5075-17.4175%2022.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375%200-15.74%206.32875-15.74%2018.7975v59.15H38.90484V80.077c0-12.455%203.17125-22.3525%209.54125-29.675%206.56875-7.3225%2015.17125-11.07625%2025.85-11.07625%2012.355%200%2021.71125%204.74875%2027.8975%2014.2475l6.01375%2010.08125%206.015-10.08125c6.185-9.49875%2015.54125-14.2475%2027.8975-14.2475%2010.6775%200%2019.28%203.75375%2025.85%2011.07625%206.36875%207.3225%209.54%2017.22%209.54%2029.675%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E"); - background-size: 16px; - background-repeat: no-repeat; - background-position: top 50% left 8px; - -webkit-transition: all 0.5s; - transition: all 0.5s; -} -.mstdn:hover { - background-color: #484c56; -} -.mstdn > span { - color: #9baec8; - font-size: 12px; - padding-left: 3px; -} -.mstdn > span:before { - content: "@"; -} -@media (min-width: 75em) { - - [data-scrolldir="down"] .sticky { - position: fixed; - top:100px; - right:0; - } - - [data-scrolldir="up"] .sticky { - position: fixed; - top:100px; - right:0; - } -} -#right-sidebar { - scrollbar-width: none; /* hide scrollbar: Firefox */ - -ms-overflow-style: none; /* hide scrollbar: Internet Explorer 10+ */ - height: calc(100vh - 9rem); - overflow-y: auto; -} -#right-sidebar::-webkit-scrollbar { /* hide scrollbar: WebKit */ - width: 0; - height: 0; -} -.fill-current { fill: currentColor; } -/* Background */ -.chroma { background-color: #ffffff } -/* Error */ -.chroma .err { color: #a61717; background-color: #e3d2d2 } -/* LineTableTD */ -.chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } -/* LineTable */ -.chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } -/* LineHighlight */ -.chroma .hl { display: block; width: 100%;background-color: #ffffcc } -/* LineNumbersTable */ -.chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } -/* LineNumbers */ -.chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } -/* Keyword */ -.chroma .k { font-weight: bold } -/* KeywordConstant */ -.chroma .kc { font-weight: bold } -/* KeywordDeclaration */ -.chroma .kd { font-weight: bold } -/* KeywordNamespace */ -.chroma .kn { font-weight: bold } -/* KeywordPseudo */ -.chroma .kp { font-weight: bold } -/* KeywordReserved */ -.chroma .kr { font-weight: bold } -/* KeywordType */ -.chroma .kt { color: #445588; font-weight: bold } -/* NameAttribute */ -.chroma .na { color: #008080 } -/* NameBuiltin */ -.chroma .nb { color: #999999 } -/* NameClass */ -.chroma .nc { color: #445588; font-weight: bold } -/* NameConstant */ -.chroma .no { color: #008080 } -/* NameEntity */ -.chroma .ni { color: #800080 } -/* NameException */ -.chroma .ne { color: #990000; font-weight: bold } -/* NameFunction */ -.chroma .nf { color: #990000; font-weight: bold } -/* NameNamespace */ -.chroma .nn { color: #555555 } -/* NameTag */ -.chroma .nt { color: #000080 } -/* NameVariable */ -.chroma .nv { color: #008080 } -/* LiteralString */ -.chroma .s { color: #bb8844 } -/* LiteralStringAffix */ -.chroma .sa { color: #bb8844 } -/* LiteralStringBacktick */ -.chroma .sb { color: #bb8844 } -/* LiteralStringChar */ -.chroma .sc { color: #bb8844 } -/* LiteralStringDelimiter */ -.chroma .dl { color: #bb8844 } -/* LiteralStringDoc */ -.chroma .sd { color: #bb8844 } -/* LiteralStringDouble */ -.chroma .s2 { color: #bb8844 } -/* LiteralStringEscape */ -.chroma .se { color: #bb8844 } -/* LiteralStringHeredoc */ -.chroma .sh { color: #bb8844 } -/* LiteralStringInterpol */ -.chroma .si { color: #bb8844 } -/* LiteralStringOther */ -.chroma .sx { color: #bb8844 } -/* LiteralStringRegex */ -.chroma .sr { color: #808000 } -/* LiteralStringSingle */ -.chroma .s1 { color: #bb8844 } -/* LiteralStringSymbol */ -.chroma .ss { color: #bb8844 } -/* LiteralNumber */ -.chroma .m { color: #009999 } -/* LiteralNumberBin */ -.chroma .mb { color: #009999 } -/* LiteralNumberFloat */ -.chroma .mf { color: #009999 } -/* LiteralNumberHex */ -.chroma .mh { color: #009999 } -/* LiteralNumberInteger */ -.chroma .mi { color: #009999 } -/* LiteralNumberIntegerLong */ -.chroma .il { color: #009999 } -/* LiteralNumberOct */ -.chroma .mo { color: #009999 } -/* Operator */ -.chroma .o { font-weight: bold } -/* OperatorWord */ -.chroma .ow { font-weight: bold } -/* Comment */ -.chroma .c { color: #999988; font-style: italic } -/* CommentHashbang */ -.chroma .ch { color: #999988; font-style: italic } -/* CommentMultiline */ -.chroma .cm { color: #999988; font-style: italic } -/* CommentSingle */ -.chroma .c1 { color: #999988; font-style: italic } -/* CommentSpecial */ -.chroma .cs { color: #999999; font-weight: bold; font-style: italic } -/* CommentPreproc */ -.chroma .cp { color: #999999; font-weight: bold } -/* CommentPreprocFile */ -.chroma .cpf { color: #999999; font-weight: bold } -/* GenericDeleted */ -.chroma .gd { color: #000000; background-color: #ffdddd } -/* GenericEmph */ -.chroma .ge { font-style: italic } -/* GenericError */ -.chroma .gr { color: #aa0000 } -/* GenericHeading */ -.chroma .gh { color: #999999 } -/* GenericInserted */ -.chroma .gi { color: #000000; background-color: #ddffdd } -/* GenericOutput */ -.chroma .go { color: #888888 } -/* GenericPrompt */ -.chroma .gp { color: #555555 } -/* GenericStrong */ -.chroma .gs { font-weight: bold } -/* GenericSubheading */ -.chroma .gu { color: #aaaaaa } -/* GenericTraceback */ -.chroma .gt { color: #aa0000 } -/* TextWhitespace */ -.chroma .w { color: #bbbbbb } -@media print { - #page-footer, - body > footer, - body > nav { - display: none; - } -} -/* -Make h6 elements behave like dt elements. Initially implemented to support -linkable glossary entries. - -Yes, it's a hack. That's why it's in the shame file. -*/ -h6 { - margin-top: 0; - margin-bottom: 0; - font-size: 1.125rem; -} -h6:first-of-type { - margin-top: 3em; -} -h6 ~ p { - margin: 0.5em 0 2em 0; -} -.nested-blockquote blockquote { - border-left: 4px solid #0594CB; - padding-left: 1em; -} -.mw-90 { - max-width:90%; -} -/* purgecss end ignore */ - diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js deleted file mode 100644 index a3e1801f8..000000000 --- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js +++ /dev/null @@ -1,17 +0,0 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){!function(e,n){var r=function(t,e,n){"use strict";var r,i;if(function(){var e,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};for(e in i=t.lazySizesConfig||t.lazysizesConfig||{},n)e in i||(i[e]=n[e])}(),!e||!e.getElementsByClassName)return{init:function(){},cfg:i,noSupport:!0};var o=e.documentElement,s=t.HTMLPictureElement,a=t.addEventListener.bind(t),u=t.setTimeout,c=t.requestAnimationFrame||u,l=t.requestIdleCallback,h=/^picture$/i,f=["load","error","lazyincluded","_lazyloaded"],d={},p=Array.prototype.forEach,g=function(t,e){return d[e]||(d[e]=new RegExp("(\\s|^)"+e+"(\\s|$)")),d[e].test(t.getAttribute("class")||"")&&d[e]},m=function(t,e){g(t,e)||t.setAttribute("class",(t.getAttribute("class")||"").trim()+" "+e)},y=function(t,e){var n;(n=g(t,e))&&t.setAttribute("class",(t.getAttribute("class")||"").replace(n," "))},v=function(t,e,n){var r=n?"addEventListener":"removeEventListener";n&&v(t,e),f.forEach((function(n){t[r](n,e)}))},b=function(t,n,i,o,s){var a=e.createEvent("Event");return i||(i={}),i.instance=r,a.initEvent(n,!o,!s),a.detail=i,t.dispatchEvent(a),a},w=function(e,n){var r;!s&&(r=t.picturefill||i.pf)?(n&&n.src&&!e.getAttribute("srcset")&&e.setAttribute("srcset",n.src),r({reevaluate:!0,elements:[e]})):n&&n.src&&(e.src=n.src)},_=function(t,e){return(getComputedStyle(t,null)||{})[e]},x=function(t,e,n){for(n=n||t.offsetWidth;n2&&D>2&&!e.hidden?(W=p,X=0):W=D>1&&X>1&&Q<6?d:0),f!==c&&($=innerWidth+c*g,M=innerHeight+c,l=-1*c,f=c),s=m[n].getBoundingClientRect(),(B=s.bottom)>=l&&(H=s.top)<=M&&(z=s.right)>=l*g&&(F=s.left)<=$&&(B||z||F||H)&&(i.loadHidden||Z(m[n]))&&(R&&Q<3&&!h&&(D<3||X<4)||Y(m[n],c))){if(at(m[n]),u=!0,Q>9)break}else!u&&R&&!a&&Q<4&&X<4&&D>2&&(L[0]||i.preloadAfterLoad)&&(L[0]||!h&&(B||z||F||H||"auto"!=m[n].getAttribute(i.sizesAttr)))&&(a=L[0]||m[n]);a&&!u&&at(a)}},et=function(t){var e,r=0,o=i.throttleDelay,s=i.ricTimeout,a=function(){e=!1,r=n.now(),t()},c=l&&s>49?function(){l(a,{timeout:s}),s!==i.ricTimeout&&(s=i.ricTimeout)}:C((function(){u(a)}),!0);return function(t){var i;(t=!0===t)&&(s=33),e||(e=!0,(i=o-(n.now()-r))<0&&(i=0),t||i<9?c():u(c,i))}}(tt),nt=function(t){var e=t.target;e._lazyCache?delete e._lazyCache:(G(t),m(e,i.loadedClass),y(e,i.loadingClass),v(e,it),b(e,"lazyloaded"))},rt=C(nt),it=function(t){rt({target:t.target})},ot=function(t){var e,n=t.getAttribute(i.srcsetAttr);(e=i.customMedia[t.getAttribute("data-media")||t.getAttribute("media")])&&t.setAttribute("media",e),n&&t.setAttribute("srcset",n)},st=C((function(t,e,n,r,o){var s,a,c,l,f,d;(f=b(t,"lazybeforeunveil",e)).defaultPrevented||(r&&(n?m(t,i.autosizesClass):t.setAttribute("sizes",r)),a=t.getAttribute(i.srcsetAttr),s=t.getAttribute(i.srcAttr),o&&(l=(c=t.parentNode)&&h.test(c.nodeName||"")),d=e.firesLoad||"src"in t&&(a||s||l),f={target:t},m(t,i.loadingClass),d&&(clearTimeout(P),P=u(G,2500),v(t,it,!0)),l&&p.call(c.getElementsByTagName("source"),ot),a?t.setAttribute("srcset",a):s&&!l&&(K.test(t.nodeName)?function(t,e){var n=t.getAttribute("data-load-mode")||i.iframeLoadMode;0==n?t.contentWindow.location.replace(e):1==n&&(t.src=e)}(t,s):t.src=s),o&&(a||l)&&w(t,{src:s})),t._lazyRace&&delete t._lazyRace,y(t,i.lazyClass),S((function(){var e=t.complete&&t.naturalWidth>1;d&&!e||(e&&m(t,i.fastLoadedClass),nt(f),t._lazyCache=!0,u((function(){"_lazyCache"in t&&delete t._lazyCache}),9)),"lazy"==t.loading&&Q--}),!0)})),at=function(t){if(!t._lazyRace){var e,n=V.test(t.nodeName),r=n&&(t.getAttribute(i.sizesAttr)||t.getAttribute("sizes")),o="auto"==r;(!o&&R||!n||!t.getAttribute("src")&&!t.srcset||t.complete||g(t,i.errorClass)||!g(t,i.lazyClass))&&(e=b(t,"lazyunveilread").detail,o&&T.updateElem(t,!0,t.offsetWidth),t._lazyRace=!0,Q++,st(t,e,o,r,n))}},ut=A((function(){i.loadMode=3,et()})),ct=function(){3==i.loadMode&&(i.loadMode=2),ut()},lt=function(){R||(n.now()-q<999?u(lt,999):(R=!0,i.loadMode=3,et(),a("scroll",ct,!0)))},{_:function(){q=n.now(),r.elements=e.getElementsByClassName(i.lazyClass),L=e.getElementsByClassName(i.lazyClass+" "+i.preloadClass),a("scroll",et,!0),a("resize",et,!0),a("pageshow",(function(t){if(t.persisted){var n=e.querySelectorAll("."+i.loadingClass);n.length&&n.forEach&&c((function(){n.forEach((function(t){t.complete&&at(t)}))}))}})),t.MutationObserver?new MutationObserver(et).observe(o,{childList:!0,subtree:!0,attributes:!0}):(o.addEventListener("DOMNodeInserted",et,!0),o.addEventListener("DOMAttrModified",et,!0),setInterval(et,999)),a("hashchange",et,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach((function(t){e.addEventListener(t,et,!0)})),/d$|^c/.test(e.readyState)?lt():(a("load",lt),e.addEventListener("DOMContentLoaded",et),u(lt,2e4)),r.elements.length?(tt(),S._lsFlush()):et()},checkElems:et,unveil:at,_aLSL:ct}),T=(N=C((function(t,e,n,r){var i,o,s;if(t._lazysizesWidth=r,r+="px",t.setAttribute("sizes",r),h.test(e.nodeName||""))for(o=0,s=(i=e.getElementsByTagName("source")).length;o
- {{ . | $.RenderString | safeHTML }}
-
- {{ delimit . ", "}}
- Related content:0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,a.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return l("action",t)}},{key:"defaultTarget",value:function(t){var e=l("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return l("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}(s.default);function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=c},function(t,e,n){"use strict";var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/math.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/math.html
deleted file mode 100644
index defcaa055..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/math.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs-mobile.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs-mobile.html
deleted file mode 100644
index a8fc27e21..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs-mobile.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{{ $currentPage := . }}
-{{ $menu := .Site.Menus.docs.ByWeight }}
-
-
-
-
- {{ range . }}
- LastMod
- Link
- GitHub
-
-
- {{ end }}
-
-{{ .Lastmod.Format "2006-01-02" }}
-
- {{ .Title }}
-
-
-
- {{ with .GitInfo }}{{ .Subject }}{{ else }}Source{{ end }}
-
-
-
- {{ range $menu }}{{ $post := printf "%s" .Post }}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs.html
deleted file mode 100644
index 61aa11dde..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{{ $currentPage := . }}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-global-mobile.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-global-mobile.html
deleted file mode 100644
index 6ad98923e..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-global-mobile.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{{ $currentPage := . }}
-{{ $menu := .Site.Menus.global }}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links.html
deleted file mode 100644
index af3790b16..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{{ $currentPage := . }}
-{{ $.Scratch.Add "listlinkClasses" "f6 link primary-color-dark hover-white db brand-font ma0 w-100 pv3 ph4" }}
-
-
-
-
- {{ range .Site.Menus.main }}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-mobile.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-mobile.html
deleted file mode 100644
index b04866e52..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-mobile.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
- {{ else }}
-
- {{ .Name }}
-
- {{end}}
-
-
-
-
-
- {{ with $.context.Data.Singular }}{{ . | humanize }}: {{ end }}{{ .context.Title }}
-
- {{ $heading }}
-
- {{- range . }}
-
-{{- end }}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/right-sidebar.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/right-sidebar.html
deleted file mode 100644
index ecdbeb33f..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/right-sidebar.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-footer.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-footer.html
deleted file mode 100644
index 09c013361..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-footer.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-manifest.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-manifest.html
deleted file mode 100644
index 54472ba16..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-manifest.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html
deleted file mode 100644
index f387d66f3..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{{ $currentPage := . }}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-scripts.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-scripts.html
deleted file mode 100644
index 7dec9de18..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-scripts.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-{{ $scripts := resources.Get "output/js/app.js" }}
-{{ $isDev := eq hugo.Environment "development" }}
-{{ if not $isDev }}
-{{ $scripts = $scripts | fingerprint }}
-{{ end }}
-{{ with $scripts }}
- {{ if $isDev }}
-
- {{ else }}
-
- {{ end }}
- {{ $.Scratch.Set "scripts" . }}
-{{end}}
-
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-search.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-search.html
deleted file mode 100644
index 8c97ac454..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-search.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html
deleted file mode 100644
index 243b22ccb..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html
+++ /dev/null
@@ -1,15 +0,0 @@
-gohugoio
-Star
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/summary.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/summary.html
deleted file mode 100644
index 0f140cf70..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/summary.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
- {{ with .Params.tags }}
-
-
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/chroma-lexers.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/chroma-lexers.html
deleted file mode 100644
index 2e10c3dee..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/chroma-lexers.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
- {{ range $ind, $art := $.Site.Data.articles.article }}
- Title
- Author
- Date
-
-
- {{ end }}
-
-{{$art.title | markdownify }}
- {{ $art.author | markdownify }}
- {{ $art.date }}
-
- {{ range .Site.Data.docs.chroma.lexers }}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/code-toggle.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/code-toggle.html
deleted file mode 100644
index d1131132d..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/code-toggle.html
+++ /dev/null
@@ -1,101 +0,0 @@
-{{- /*
- Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
-
- @param {string} [config] The section of site.Data.docs.config to render.
- @param {bool} [copy=false] If true, display a copy to clipboard button.
- @param {string} [file] The file name to display above the rendered code.
- @param {bool} [fm=false] If true, render the code as front matter.
- @param {bool} [skipHeader=false] If false, omit top level key(s) when rendering a section of site.Data.docs.config.
-
- @returns {template.HTML}
-*/}}
-
-{{- /* Initialize. */}}
-{{- $config := "" }}
-{{- $dataKey := "" }}
-{{- $copy := false }}
-{{- $file := "" }}
-{{- $fm := false }}
-{{- $skipHeader := false }}
-
-{{- /* Get parameters. */}}
-{{- $config = .Get "config" }}
-{{- $dataKey = .Get "dataKey" }}
-{{- $file = .Get "file" }}
-{{- if in (slice "false" false 0) (.Get "copy") }}
- {{- $copy = false }}
-{{- else if in (slice "true" true 1) (.Get "copy") }}
- {{- $copy = true }}
-{{- end }}
-{{- if in (slice "false" false 0) (.Get "fm") }}
- {{- $fm = false }}
-{{- else if in (slice "true" true 1) (.Get "fm") }}
- {{- $fm = true }}
-{{- end }}
-{{- if in (slice "false" false 0) (.Get "skipHeader") }}
- {{- $skipHeader = false }}
-{{- else if in (slice "true" true 1) (.Get "skipHeader") }}
- {{- $skipHeader = true }}
-{{- end }}
-
-{{- /* Define constants. */}}
-{{- $delimiters := dict "toml" "+++" "yaml" "---" }}
-{{- $langs := slice "yaml" "toml" "json" }}
-{{- $placeHolder := "#-hugo-placeholder-#" }}
-
-{{- /* Render. */}}
-{{- $code := "" }}
-{{- if $config }}
- {{- $file = $file | default "hugo" }}
- {{- $sections := (split $config ".") }}
- {{- $configSection := index $.Site.Data.docs.config $sections }}
- {{- $code = dict $sections $configSection }}
- {{- if $skipHeader }}
- {{- $code = $configSection }}
- {{- end }}
-{{- else if $dataKey }}
- {{- $file = $file | default $dataKey }}
- {{- $sections := (split $dataKey ".") }}
- {{- $code = index $.Site.Data.docs $sections }}
-{{- else }}
- {{- $code = $.Inner }}
-{{- end }}
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/datatable.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/datatable.html
deleted file mode 100644
index 12054f89d..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/datatable.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{{ $package := (index .Params 0) }}
-{{ $listname := (index .Params 1) }}
-{{ $list := (index (index .Site.Data.docs $package) $listname) }}
-{{ $fields := after 2 .Params }}
-
-
-
- {{ range $fields }}
-
- {{ range $list }}
- {{ . }}
- {{ end }}
-
- {{ range $k, $v := . }}
- {{ $.Scratch.Set $k $v }}
- {{ end }}
- {{ range $k, $v := $fields }}
-
- {{ end }}
-
- {{ $tdContent := $.Scratch.Get . }}
- {{ if eq $k 3 }}
- {{ printf "%v" $tdContent |
- strings.ReplaceRE `\[` "
- {{ end }}
-
" |
- safeHTML }}
- {{ else }}
- {{ $tdContent }}
- {{ end}}
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/deprecated-in.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/deprecated-in.html
deleted file mode 100644
index 7219d7f54..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/deprecated-in.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{{ $_hugo_config := `{ "version": 1 }` }}
-
-{{ with .Get 0 }}
- {{ $version := printf "v%v" (strings.TrimLeft "vV" .) }}
- {{ $href := printf "https://github.com/gohugoio/hugo/releases/tag/%s" $version }}
-
-{{ else }}
- {{ errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }}
-{{ end }}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/funcsig.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/funcsig.html
deleted file mode 100644
index 4e96504ab..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/funcsig.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
- {{ range $fields }}
- {{ $s := . }}
- {{ if eq $s "_key" }}
- {{ $s = "Type" }}
- {{ end }}
-
- {{ range $k1, $v1 := $list }}
- {{ $s }}
- {{ end }}
-
- {{ range $k2, $v2 := . }}
- {{ $.Scratch.Set $k2 $v2 }}
- {{ end }}
- {{ range $fields }}
- {{ $s := "" }}
- {{ if eq . "_key" }}
- {{ $s = $k1 }}
- {{ else }}
- {{ $s = $.Scratch.Get . }}
- {{ end }}
-
- {{ end }}
-{{ $s }}
- {{ end }}
- Syntax
-
- {{- .Inner -}}
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/gomodules-info.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/gomodules-info.html
deleted file mode 100644
index d544cd471..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/gomodules-info.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{{ $text := `
-Most of the commands for **Hugo Modules** require a newer version (>= 1.18) of Go installed (see https://golang.org/dl/) and the relevant VCS client (e.g. Git, see https://git-scm.com/downloads/ ).
-If you have an "older" site running on Netlify, you may have to set GO_VERSION to 1.19 or newer in your Environment settings.
-
-For more information about Go Modules, see:
-
-* https://go.dev/wiki/Modules
-* https://blog.golang.org/using-go-modules
-` }}
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/imgproc.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/imgproc.html
deleted file mode 100644
index c09133ba8..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/imgproc.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{{- /*
-Renders the given image using the given process specification.
-
-@param {string} (positional parameter 0) The path to the image, relative to the current page. The image must be a page resource.
-@param {string}} (positional parameter 1) The image processing specification.
-
-@returns template.HTML
-
-@example {{< imgproc "sunset.jpg" "resize 300x" />}}
-*/}}
-
-{{- with $.Get 0 }}
- {{- with $i := $.Page.Resources.Get . }}
- {{- with $spec := $.Get 1 }}
- {{- with $i.Process . }}
-
-
- {{- range $page := .ByTitle }}
- {{- if or
- (and (eq $filterType "include") (in $filteredPages $page))
- (and (eq $filterType "exclude") (not (in $filteredPages $page)))
- (eq $filterType "none")
- }}
- {{- $linkTitle := .LinkTitle }}
- {{- with $titlePrefix }}
- {{- $linkTitle = printf "%s%s" . $linkTitle }}
- {{- end }}
- {{- $idAttribute := "" }}
- {{- if not $omitElementIDs }}
- {{- $id := path.Join .File.Dir .File.ContentBaseName | replaceRE `[\|/]` ":" | lower }}
- {{- $idAttribute = printf " id=%q" $id }}
- {{- end }}
-
- {{- else }}
- {{- warnf "The %q shortcode found no pages in the %q section. See %s" $.Name $sectionPath $.Position }}
- {{- end }}
- {{- else }}
- {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name $sectionPath $.Position }}
- {{- end }}
-{{- else }}
- {{- errorf "The %q shortcode requires a 'path' parameter indicating the path to the section. See %s" $.Name $.Position }}
-{{- end }}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/module-mounts-note.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/module-mounts-note.html
deleted file mode 100644
index c1c67991e..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/module-mounts-note.html
+++ /dev/null
@@ -1 +0,0 @@
-Also see [Module Mounts Config](/hugo-modules/configuration/#module-configuration-mounts) for an alternative way to configure this directory.
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html
deleted file mode 100644
index 606d2219c..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{{- /*
-Renders a "new in" button indicating the version in which a feature was added.
-
-When comparing the current version to the specified version, the "new in"
-button will be hidden if any of the following conditions is true:
-
-- The major version difference exceeds the majorVersionDiffThreshold
-- The minor version difference exceeds the minorVersionDiffThreshold
-
-@param {string} version The semantic version string, with or without a leading v.
-@returns {template.HTML}
-
-@example {{< new-in 0.100.0 >}}
-*/}}
-
-{{- /* Set defaults. */}}
-{{- $majorVersionDiffThreshold := 0 }}
-{{- $minorVersionDiffThreshold := 30 }}
-{{- $displayExpirationWarning := true }}
-
-{{- /* Render. */}}
-{{- with $version := .Get 0 | strings.TrimPrefix "v" }}
- {{- $majorVersionDiff := sub (index (split hugo.Version ".") 0 | int) (index (split $version ".") 0 | int) }}
- {{- $minorVersionDiff := sub (index (split hugo.Version ".") 1 | int) (index (split $version ".") 1 | int) }}
- {{- if or (gt $majorVersionDiff $majorVersionDiffThreshold) (gt $minorVersionDiff $minorVersionDiffThreshold) }}
- {{- if $displayExpirationWarning }}
- {{- warnf "This call to the %q shortcode should be removed: %s. The button is now hidden because the specified version (%s) is older than the display threshold." $.Name $.Position $version }}
- {{- end }}
- {{- else }}
- New in v{{ $version }}
- {{- end }}
-{{- else }}
- {{- errorf "The %q shortcode requires a positional parameter (version). See %s" .Name .Position }}
-{{- end -}}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/note.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/note.html
deleted file mode 100644
index 99818114e..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/note.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{{ $_hugo_config := `{ "version": 1 }` }}
-
-
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/quick-reference.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/quick-reference.html
deleted file mode 100644
index fc53c93bd..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/quick-reference.html
+++ /dev/null
@@ -1,39 +0,0 @@
-{{/*
-Renders the child sections of the given top-level section, listing each child's immediate descendants.
-
-@param {string} section The top-level section to render.
-@returns template.HTML
-
-@example {{% quick-reference section="functions" %}}
-*/}}
-
-{{ $section := "" }}
-{{ with .Get "section" }}
- {{ $section = . }}
-{{ else }}
- {{ errorf "The %q shortcodes requires a 'section' parameter. See %s" .Name .Position }}
-{{ end }}
-
-{{/* Do not change the markdown indentation, and do not remove blank lines. */}}
-{{ with site.GetPage $section }}
- {{ range .Sections }}
-
-## {{ .LinkTitle }}
-{{ .RawContent }}
-
- {{ range .Pages }}
- {{ $aliases := "" }}
- {{ if eq .Section "functions" }}
- {{ with .Params.action.aliases }}
- {{ $aliases = delimit . " or " }}
- {{ end }}
- {{ end }}
-
-[{{ .LinkTitle }}]({{ .RelPermalink }}) {{ with $aliases }}({{ . }}){{ end }}
-: {{ .Description }}
-
- {{ end }}
- {{ end }}
-{{ else }}
- {{ errorf "The %q shortcodes was unable to find the %q section. See %s" .Name $section .Position }}
-{{ end }}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/readfile.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/readfile.html
deleted file mode 100644
index de8083443..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/readfile.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{{- $highlight := or (.Get "highlight") "" }}
-
-{{- $markdown := false }}
-{{- if in (slice "false" false 0) (.Get "markdown") }}
- {{- $markdown = false }}
-{{- else if in (slice "true" true 1) (.Get "markdown") }}
- {{- $markdown = true }}
-{{- end }}
-
-{{- with .Get "file" }}
- {{- if os.FileExists . }}
- {{- with os.ReadFile . }}
- {{- $content := trim . "\n\r" }}
- {{- if $markdown }}
- {{- $content | markdownify }}
- {{- else if $highlight }}
- {{- highlight $content $highlight }}
- {{- else }}
- {{- $content | safeHTML }}
- {{- end }}
- {{- else }}
- {{- errorf "The %q shortcode was unable to read %q. See %s" $.Name . $.Position }}
- {{- end }}
- {{- else }}
- {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
- {{- end }}
-{{- else }}
- {{- errorf "The %q shortcode requires a 'file' parameter. See %s" $.Name $.Position }}
-{{- end }}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/todo.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/todo.html
deleted file mode 100644
index 50a099267..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/todo.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ if .Inner }}{{ end }}
\ No newline at end of file
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/showcase/list.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/showcase/list.html
deleted file mode 100644
index bff52ad8d..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/showcase/list.html
+++ /dev/null
@@ -1,46 +0,0 @@
-{{ define "main" }}
-
- {{ .Title }}
-
-
- {{end}}
-
- {{- .Title -}}
-
-
- {{ partial "page-edit.html" . }}
-
- {{ end }}
-
{{.Title}}
- {{ with .Params.siteURL }}
- {{ . | replaceRE "^https?://(www\\.)?([^/]+).*" "$2"}} {{ partial "svg/link-ext.svg" (dict "size" "10") }}
- {{ end }}
- {{ with .Params.siteSource }}
- source {{ partial "svg/link-ext.svg" (dict "size" "10") }}
- {{ end }}
- {{ $bio := (.Resources.ByType "page").GetMatch "bio*" }}
- {{ with $bio }}
-
-
-{{end}}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/template-func/page.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/template-func/page.html
deleted file mode 100644
index 8b5f0da85..000000000
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/template-func/page.html
+++ /dev/null
@@ -1,55 +0,0 @@
-{{ $pkg := .Params.package}}
-{{ $funcs := index site.Data.docs.tpl.funcs $pkg }}
-
-{{ range $k, $v := $funcs }}
- {{ if $v.Description }}
- {{ $func := printf "%s.%s" $pkg $k }}
- {{ $id := $func | anchorize | safeURL }}
-
-
-
-
- {{ $func }}
-
- {{ with $v.Description }}
-
- Syntax
-
-
- Examples
-
- {{ end }}
- {{ range $v.Examples }}
- {{ $input := index . 0 }}
- {{ $result := index . 1 }}
- {{ $example := printf "%s ---> %s" $input $result }}
-
- {{ highlight $example "go-html-template" "" }}
- {{ end }}
- {{ with $v.Aliases }}
-
- Aliases
-
- {{ i18n "translations" }}
@@ -327,7 +125,7 @@ To create a list of links to translated content, use a template similar to the f
{{ end }}
{{ end }}
-{{< /code >}}
+```
The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template. It will not print anything if there are no translations for a given page.
@@ -337,20 +135,18 @@ The above also uses the [`i18n` function][i18func] described in the next section
`.AllTranslations` on a `Page` can be used to list all translations, including the page itself. On the home page it can be used to build a language navigator:
-{{< code file=layouts/partials/allLanguages.html >}}
+```go-html-template {file="layouts/partials/allLanguages.html"}
{{ range $.Site.Home.AllTranslations }}
-{{< /code >}}
+```
## Translation of strings
See the [`lang.Translate`] template function.
-[`lang.Translate`]: /functions/lang/translate
-
## Localization
The following localization examples assume your site's primary language is English, with translations to French and German.
@@ -378,7 +174,7 @@ weight = 3
With this front matter:
-{{< code-toggle >}}
+{{< code-toggle file=hugo >}}
date = 2021-11-03T12:34:56+01:00
{{< /code-toggle >}}
@@ -532,8 +328,6 @@ pageRef = '/services'
weight = 20
{{< /code-toggle >}}
-[configuration directory]: /getting-started/configuration/#configuration-directory
-
### Use translation tables
When rendering the text that appears in menu each entry, the [example menu template] does this:
@@ -571,20 +365,14 @@ products = 'Produkte'
services = 'Leistungen'
{{< / code-toggle >}}
-[example menu template]: /templates/menu/#example
-[automatically]: /content-management/menus/#define-automatically
-[in front matter]: /content-management/menus/#define-in-front-matter
-[in site configuration]: /content-management/menus/#define-in-site-configuration
-
## Missing translations
If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown.
While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
-{{% note %}}
-Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments.
-{{% /note %}}
+> [!note]
+> Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments.
For merging of content from other languages (i.e. missing content translations), see [lang.Merge].
@@ -599,8 +387,8 @@ i18n|MISSING_TRANSLATION|en|wordCount
To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria:
-* Come from the built-in `.Permalink` or `.RelPermalink`
-* Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
+- Come from the built-in `.Permalink` or `.RelPermalink`
+- Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
If there is more than one language defined, the `LanguagePrefix` method will return `/en` (or whatever the current language is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites).
@@ -620,19 +408,22 @@ hugo new content content/en/post/test.md
hugo new content content/de/post/test.md
```
-[`abslangurl`]: /functions/urls/abslangurl/
-[config]: /getting-started/configuration/
-[go-i18n-source]: https://github.com/nicksnyder/go-i18n
-[go-i18n]: https://github.com/nicksnyder/go-i18n
-[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
+[`absLangURL`]: /functions/urls/abslangurl/
+[`lang.Translate`]: /functions/lang/translate
+[`relLangURL`]: /functions/urls/rellangurl/
+[`slug`]: /content-management/urls/#slug
+[`time.Format`]: /functions/time/format/
+[`url`]: /content-management/urls/#url
+[automatically]: /content-management/menus/#define-automatically
+[config]: /configuration/
+[configuration directory]: /configuration/introduction/#configuration-directory
+[example menu template]: /templates/menu/#example
[i18func]: /functions/lang/translate/
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/#define-in-site-configuration
[lang.FormatAccounting]: /functions/lang/formataccounting/
[lang.FormatCurrency]: /functions/lang/formatcurrency/
[lang.FormatNumber]: /functions/lang/formatnumber/
[lang.FormatNumberCustom]: /functions/lang/formatnumbercustom/
[lang.FormatPercent]: /functions/lang/formatpercent/
[lang.Merge]: /functions/lang/merge/
-[menus]: /content-management/menus/
-[OS environment]: /getting-started/configuration/#configure-with-environment-variables
-[`rellangurl`]: /functions/urls/rellangurl/
-[`time.Format`]: /functions/time/format/
diff --git a/docs/content/en/content-management/organization/1-featured-content-bundles.png b/docs/content/en/content-management/organization/1-featured-content-bundles.png
deleted file mode 100644
index 501e671e2..000000000
Binary files a/docs/content/en/content-management/organization/1-featured-content-bundles.png and /dev/null differ
diff --git a/docs/content/en/content-management/organization/index.md b/docs/content/en/content-management/organization/index.md
index 99a3224bf..a7682bfad 100644
--- a/docs/content/en/content-management/organization/index.md
+++ b/docs/content/en/content-management/organization/index.md
@@ -2,14 +2,8 @@
title: Content organization
linkTitle: Organization
description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site.
-categories: [content management,fundamentals]
-keywords: [sections,content,organization,bundle,resources]
-menu:
- docs:
- parent: content-management
- weight: 20
-weight: 20
-toc: true
+categories: []
+keywords: []
aliases: [/content/sections/]
---
@@ -71,11 +65,10 @@ The following demonstrates the relationships between your content organization a
### Index pages: `_index.md`
-`_index.md` has a special role in Hugo. It allows you to add front matter and content to `home`, `section`, `taxonomy`, and `term` pages.
+`_index.md` has a special role in Hugo. It allows you to add front matter and content to `home`, `section`, `taxonomy`, and `term` pages.
-{{% note %}}
-**Tip:** You can get a reference to the content and metadata in `_index.md` using the [`.Site.GetPage` function](/methods/page/getpage).
-{{% /note %}}
+> [!note]
+> Access the content and metadata within an `_index.md` file by invoking the `GetPage` method on a `Site` or `Page` object.
You can create one `_index.md` for your home page and one in each of your content sections, taxonomies, and terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
@@ -143,20 +136,16 @@ The `slug` is the last segment of the URL path, defined by the file name and opt
### `path`
-A content's `path` is determined by the section's path to the file. The file `path`
+A content's `path` is determined by the section's path to the file. The file `path`:
-* is based on the path to the content's location AND
-* does not include the slug
+- Is based on the path to the content's location AND
+- Does not include the slug
### `url`
The `url` is the entire URL path, defined by the file path and optionally overridden by a `url` value in front matter. See [URL Management](/content-management/urls/#slug) for details.
-[config]: /getting-started/configuration/
-[formats]: /content-management/formats/
-[front matter]: /content-management/front-matter/
-[getpage]: /methods/page/getpage/
+[config]: /configuration/
[pretty]: /content-management/urls/#appearance
[sections]: /content-management/sections/
[single template]: /templates/types/#single
-[urls]: /content-management/urls/
diff --git a/docs/content/en/content-management/page-bundles.md b/docs/content/en/content-management/page-bundles.md
index b83bb0ba5..f6a5cf771 100644
--- a/docs/content/en/content-management/page-bundles.md
+++ b/docs/content/en/content-management/page-bundles.md
@@ -1,14 +1,8 @@
---
title: Page bundles
description: Use page bundles to logically associate one or more resources with content.
-categories: [content management]
-keywords: [page,bundle,leaf,branch]
-menu :
- docs:
- parent: content-management
- weight: 30
-weight: 30
-toc: true
+categories: []
+keywords: []
---
## Introduction
@@ -30,16 +24,13 @@ The "about" page is a page bundle. It logically associates a resource with conte
Page bundles are either _leaf bundles_ or _branch bundles_.
leaf bundle
-: A _leaf bundle_ is a directory that contains an index.md file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
+: A _leaf bundle_ is a directory that contains an `index.md` file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
branch bundle
-: A _branch bundle_ is a directory that contains an _index.md file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page.
+: A _branch bundle_ is a directory that contains an `_index.md` file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top-level directories with or without `_index.md` files are also branch bundles. This includes the home page.
-{{% note %}}
-In the definitions above and the examples below, the extension of the index file depends on the [content format]. For example, use index.md for Markdown content, index.html for HTML content, index.adoc for AsciiDoc content, etc.
-
-[content format]: /getting-started/glossary/#content-format
-{{% /note %}}
+> [!note]
+> In the definitions above and the examples below, the extension of the index file depends on the [content format](g). For example, use `index.md` for Markdown content, `index.html` for HTML content, `index.adoc` for AsciiDoc content, etc.
## Comparison
@@ -47,25 +38,19 @@ Page bundle characteristics vary by bundle type.
| | Leaf bundle | Branch bundle |
|---------------------|---------------------------------------------------------|---------------------------------------------------------|
-| Index file | index.md | _index.md |
-| Example | content/about/index.md | content/posts/_index.md |
-| [Page kinds] | `page` | `home`, `section`, `taxonomy`, or `term` |
-| Template types | [single] | [home], [section], [taxonomy], or [term] |
+| Index file | `index.md` | `_index.md` |
+| Example | `content/about/index.md` | `content/posts/_index.md ` |
+| [Page kinds](g) | `page` | `home`, `section`, `taxonomy`, or `term` |
+| Template types | [single] | [home], [section], [taxonomy], or [term] |
| Descendant pages | None | Zero or more |
| Resource location | Adjacent to the index file or in a nested subdirectory | Same as a leaf bundles, but excludes descendant bundles |
-| [Resource types] | `page`, `image`, `video`, etc. | all but `page` |
+| [Resource types](g) | `page`, `image`, `video`, etc. | all but `page` |
-[single]: /templates/types/#single
-[home]: /templates/types/#home
-[section]: /templates/types/#section
-[taxonomy]: /templates/types/#taxonomy
-[term]: /templates/types/#term
-
-Files with [resource type] `page` include content written in Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode. In a leaf bundle, excluding the index file, these files are only accessible as page resources. In a branch bundle, these files are only accessible as content pages.
+Files with [resource type](g) `page` include content written in Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode. In a leaf bundle, excluding the index file, these files are only accessible as page resources. In a branch bundle, these files are only accessible as content pages.
## Leaf bundles
-A _leaf bundle_ is a directory that contains an index.md file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
+A _leaf bundle_ is a directory that contains an `index.md` file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
```text
content/
@@ -94,15 +79,15 @@ about
: This leaf bundle does not contain any page resources.
my-post
-: This leaf bundle contains an index file, two resources of [resource type] `page`, and two resources of resource type `image`.
+: This leaf bundle contains an index file, two resources of [resource type](g) `page`, and two resources of resource type `image`.
-- content-1, content-2
+ - content-1, content-2
- These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages.
+ These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages.
-- image-1, image-2
+ - image-1, image-2
- These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object
+ These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object
my-other-post
: This leaf bundle does not contain any page resources.
@@ -110,13 +95,12 @@ my-other-post
another-leaf-bundle
: This leaf bundle does not contain any page resources.
-{{% note %}}
-Create leaf bundles at any depth within the content directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
-{{% /note %}}
+> [!note]
+> Create leaf bundles at any depth within the `content` directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
## Branch bundles
-A _branch bundle_ is a directory that contains an _index.md file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page.
+A _branch bundle_ is a directory that contains an `_index.md` file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top-level directories with or without `_index.md` files are also branch bundles. This includes the home page.
```text
content/
@@ -139,23 +123,23 @@ home page
: This branch bundle contains an index file, two descendant branch bundles, and no resources.
branch-bundle-1
-: This branch bundle contains an index file, two resources of [resource type] `page`, and two resources of resource type `image`.
+: This branch bundle contains an index file, two resources of [resource type](g) `page`, and two resources of resource type `image`.
branch-bundle-2
: This branch bundle contains an index file and a leaf bundle.
-{{% note %}}
-Create branch bundles at any depth within the content directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
-{{% /note %}}
-
+> [!note]
+> Create branch bundles at any depth within the `content` directory. Branch bundles may have descendants.
## Headless bundles
Use [build options] in front matter to create an unpublished leaf or branch bundle whose content and resources you can include in other pages.
[`Resources`]: /methods/page/resources/
-[build options]: content-management/build-options/
-[page kinds]: /getting-started/glossary/#page-kind
+[build options]: /content-management/build-options/
+[home]: /templates/types/#home
[page resources]: /content-management/page-resources/
-[resource type]: /getting-started/glossary/#resource-type
-[resource types]: /getting-started/glossary/#resource-type
+[section]: /templates/types/#section
+[single]: /templates/types/#single
+[taxonomy]: /templates/types/#taxonomy
+[term]: /templates/types/#term
diff --git a/docs/content/en/content-management/page-resources.md b/docs/content/en/content-management/page-resources.md
index 4f902a67f..204ca5301 100644
--- a/docs/content/en/content-management/page-resources.md
+++ b/docs/content/en/content-management/page-resources.md
@@ -1,18 +1,12 @@
---
title: Page resources
description: Use page resources to logically associate assets with a page.
-categories: [content management]
-keywords: [bundle,content,resources]
-menu:
- docs:
- parent: content-management
- weight: 80
-weight: 80
-toc: true
+categories: []
+keywords: []
---
Page resources are only accessible from [page bundles](/content-management/page-bundles), those directories with `index.md` or
-`_index.md` files at their root. Page resources are only available to the
+`_index.md` files at their root. Page resources are only available to the
page with which they are bundled.
In this example, `first-post` is a page bundle with access to 10 page resources including audio, data, documents, images, and video. Although `second-post` is also a page bundle, it has no page resources and is unable to directly access the page resources associated with `first-post`.
@@ -46,13 +40,7 @@ Use any of these methods on a `Page` object to capture page resources:
- [`Resources.GetMatch`]
- [`Resources.Match`]
- Once you have captured a resource, use any of the applicable [`Resource`] methods to return a value or perform an action.
-
-[`Resource`]: /methods/resource
-[`Resources.ByType`]: /methods/page/resources#bytype
-[`Resources.GetMatch`]: /methods/page/resources#getmatch
-[`Resources.Get`]: /methods/page/resources#get
-[`Resources.Match`]: /methods/page/resources#match
+ Once you have captured a resource, use any of the applicable [`Resource`] methods to return a value or perform an action.
The following examples assume this content structure:
@@ -120,16 +108,14 @@ List the titles in the data file, and throw an error if the file does not exist.
The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm).
-{{% note %}}
-Resources of type `page` get `Title` etc. from their own front matter.
-{{% /note %}}
+> [!note]
+> Resources of type `page` get `Title` etc. from their own front matter.
name
: (`string`) Sets the value returned in `Name`.
-{{% note %}}
-The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources.
-{{% /note %}}
+> [!note]
+> The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources.
title
: (`string`) Sets the value returned in `Title`
@@ -173,9 +159,8 @@ From the example above:
- All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`.
- Every docx in the bundle will receive the `word` icon.
-{{% note %}}
-The order matters; only the first set values of the `title`, `name` and `params` keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule.
-{{% /note %}}
+> [!note]
+> The order matters; only the first set values of the `title`, `name` and `params` keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule.
### The `:counter` placeholder in `name` and `title`
@@ -206,15 +191,12 @@ the `Name` and `Title` will be assigned to the resource files as follows:
## Multilingual
-{{< new-in 0.123.0 >}}
+{{< new-in 0.123.0 />}}
By default, with a multilingual single-host site, Hugo does not duplicate shared page resources when building the site.
-{{% note %}}
-This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle.
-
-[content formats]: /content-management/formats/
-{{% /note %}}
+> [!note]
+> This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle.
Consider this site configuration:
@@ -289,18 +271,12 @@ public/
This approach reduces build times, storage requirements, bandwidth consumption, and deployment times, ultimately reducing cost.
-{{% note %}}
-To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method.
-
-By default, with multilingual single-host sites, Hugo enables its [embedded link render hook] and [embedded image render hook] to resolve Markdown link and image destinations.
-
-You may override the embedded render hooks as needed, provided they capture the resource as described above.
-
-[embedded link render hook]: /render-hooks/links/#default
-[embedded image render hook]: /render-hooks/images/#default
-[`Resources.Get`]: /methods/page/resources/#get
-[`RelPermalink`]: /methods/resource/relpermalink/
-{{% /note %}}
+> [!note]
+> To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method.
+>
+> By default, with multilingual single-host sites, Hugo enables its [embedded link render hook] and [embedded image render hook] to resolve Markdown link and image destinations.
+>
+> You may override the embedded render hooks as needed, provided they capture the resource as described above.
Although duplicating shared page resources is inefficient, you can enable this feature in your site configuration if desired:
@@ -308,3 +284,14 @@ Although duplicating shared page resources is inefficient, you can enable this f
[markup.goldmark]
duplicateResourceFiles = true
{{< /code-toggle >}}
+
+[`RelPermalink`]: /methods/resource/relpermalink/
+[`Resource`]: /methods/resource
+[`Resources.ByType`]: /methods/page/resources#bytype
+[`Resources.Get`]: /methods/page/resources#get
+[`Resources.Get`]: /methods/page/resources/#get
+[`Resources.GetMatch`]: /methods/page/resources#getmatch
+[`Resources.Match`]: /methods/page/resources#match
+[content formats]: /content-management/formats/
+[embedded image render hook]: /render-hooks/images/#default
+[embedded link render hook]: /render-hooks/links/#default
diff --git a/docs/content/en/content-management/related-content.md b/docs/content/en/content-management/related-content.md
new file mode 100644
index 000000000..d7b18dab0
--- /dev/null
+++ b/docs/content/en/content-management/related-content.md
@@ -0,0 +1,102 @@
+---
+title: Related content
+description: List related content in "See Also" sections.
+categories: []
+keywords: []
+aliases: [/content/related/,/related/,/content-management/related/]
+---
+
+Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [related content configuration](/configuration/related-content/).
+
+## List related content
+
+To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your template:
+
+```go-html-template {file="layouts/partials/related.html" copy=true}
+{{ with site.RegularPages.Related . | first 5 }}
+
+ {{ range . }}
+
+{{ end }}
+```
+
+The `Related` method takes one argument which may be a `Page` or an options map. The options map has these options:
+
+indices
+: (`slice`) The indices to search within.
+
+document
+: (`page`) The page for which to find related content. Required when specifying an options map.
+
+namedSlices
+: (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function.
+
+fragments
+: (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment](g) identifiers of the documents.
+
+A fictional example using all of the above options:
+
+```go-html-template
+{{ $page := . }}
+{{ $opts := dict
+ "indices" (slice "tags" "keywords")
+ "document" $page
+ "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
+ "fragments" (slice "heading-1" "heading-2")
+}}
+```
+
+> [!note]
+> We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
+
+## Index content headings
+
+Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration:
+
+{{< code-toggle file=hugo >}}
+[related]
+threshold = 20
+includeNewer = true
+toLower = false
+[[related.indices]]
+name = "fragmentrefs"
+type = "fragments"
+applyFilter = true
+weight = 80
+{{< /code-toggle >}}
+
+- The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level.
+- If `applyFilter` is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing:
+
+```go-html-template
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+ See Also
+
+ {{ range $i, $p := . }}
+
+{{ end }}
+```
+
+## Configuration
+
+See [configure related content](/configuration/related-content/).
+
+[`keyVals`]: /functions/collections/keyvals/
diff --git a/docs/content/en/content-management/related.md b/docs/content/en/content-management/related.md
deleted file mode 100644
index 0a97bd7cb..000000000
--- a/docs/content/en/content-management/related.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-title: Related content
-description: List related content in "See Also" sections.
-categories: [content management]
-keywords: [content]
-menu:
- docs:
- parent: content-management
- weight: 110
-weight: 110
-toc: true
-aliases: [/content/related/,/related/]
----
-
-Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [Related Content configuration](#configure-related-content).
-
-## List related content
-
-To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your template:
-
-{{< code file=layouts/partials/related.html >}}
-{{ $related := .Site.RegularPages.Related . | first 5 }}
-{{ with $related }}
-
+ {{ range . }}
+ {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
+
+ {{ end }}
+ See Also
-
- {{ range . }}
-
-{{ end }}
-{{< /code >}}
-
-The `Related` method takes one argument which may be a `Page` or a options map. The options map have these options:
-
-indices
-: (`slice`) The indices to search within.
-
-document
-: (`page`) The page for which to find related content. Required when specifying an options map.
-
-namedSlices
-: (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function.
-
-fragments
-: (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment] identifiers of the documents.
-
-[fragment]: /getting-started/glossary/#fragment
-[`keyVals`]: /functions/collections/keyvals/
-
-A fictional example using all of the above options:
-
-```go-html-template
-{{ $page := . }}
-{{ $opts := dict
- "indices" (slice "tags" "keywords")
- "document" $page
- "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
- "fragments" (slice "heading-1" "heading-2")
-}}
-```
-
-{{% note %}}
-We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
-{{% /note %}}
-
-## Index content headings in related content
-
-{{< new-in 0.111.0 >}}
-
-Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration:
-
-{{< code-toggle file=hugo >}}
-[related]
-threshold = 20
-includeNewer = true
-toLower = false
-[[related.indices]]
-name = "fragmentrefs"
-type = "fragments"
-applyFilter = true
-weight = 80
-{{< /code-toggle >}}
-
-* The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level.
-* If `applyFilter`is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing:
-
-```go-html-template
-{{ $related := .Site.RegularPages.Related . | first 5 }}
-{{ with $related }}
- See Also
-
- {{ range $i, $p := . }}
-
-{{ end }}
-```
-
-## Configure related content
-
-Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed.
-
-### Default configuration
-
-Without any `related` configuration set on the project, Hugo's Related Content methods will use the following.
-
-{{< code-toggle config=related />}}
-
-Custom configuration should be set using the same syntax.
-
-{{% note %}}
-If you add a `related` configuration section, you need to add a complete configuration. It is not possible to just set, say, `includeNewer` and use the rest from the Hugo defaults.
-{{% /note %}}
-
-### Top level configuration options
-
-threshold
-: (`int`) A value between 0-100. Lower value will give more, but maybe not so relevant, matches.
-
-includeNewer
-: (`bool`) Set to `true` to include **pages newer than the current page** in the related content listing. This will mean that the output for older posts may change as new related content gets added.
-
-toLower
-: (`bool`) Set to `true` to lower case keywords in both the indexes and the queries. This may give more accurate results at a slight performance penalty. Note that this can also be set per index.
-
-### Configuration options per index
-
-name
-: (`string`) The index name. This value maps directly to a page parameter. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects.
-
-type {{< new-in 0.111.0 >}}
-: (`string`) One of `basic`(default) or `fragments`.
-
-applyFilter {{< new-in 0.111.0 >}}
-: (`string`) Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type.
-
-weight
-: (`int`) An integer weight that indicates _how important_ this parameter is relative to the other parameters. It can be `0`, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best.
-
-cardinalityThreshold {{< new-in 0.111.0 >}}
-: (`int`) If between 1 and 100, this is a percentage. All keywords that are used in more than this percentage of documents are removed. For example, setting this to `60` will remove all keywords that are used in more than 60% of the documents in the index. If `0`, no keyword is removed from the index. Default is `0`.
-
-pattern
-: (`string`) This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
-
-toLower
-: (`bool`) See above.
-
-## Performance considerations
-
-**Fast is Hugo's middle name** and we would not have released this feature had it not been blistering fast.
-
-This feature has been in the back log and requested by many for a long time. The development got this recent kick start from this Twitter thread:
-
-{{< tweet user="scott_lowe" id="898398437527363585" >}}
-
-Scott S. Lowe removed the "Related Content" section built using the `intersect` template function on tags, and the build time dropped from 30 seconds to less than 2 seconds on his 1700 content page sized blog.
-
-He should now be able to add an improved version of that "Related Content" section without giving up the fast live-reloads. But it's worth noting that:
-
-* If you don't use any of the `Related` methods, you will not use the Relate Content feature, and performance will be the same as before.
-* Calling `.RegularPages.Related` etc. will create one inverted index, also sometimes named posting list, that will be reused for any lookups in that same page collection. Doing that in addition to, as an example, calling `.Pages.Related` will work as expected, but will create one additional inverted index. This should still be very fast, but worth having in mind, especially for bigger sites.
-
-{{% note %}}
-We currently do not index **Page content**. We thought we would release something that will make most people happy before we start solving [Sherlock's last case](https://github.com/joearms/sherlock).
-{{% /note %}}
diff --git a/docs/content/en/content-management/sections.md b/docs/content/en/content-management/sections.md
index 03655c90a..f7a2296f5 100644
--- a/docs/content/en/content-management/sections.md
+++ b/docs/content/en/content-management/sections.md
@@ -2,26 +2,14 @@
title: Sections
description: Organize content into sections.
-categories: [content management]
-keywords: [lists,sections,content types,organization]
-menu:
- docs:
- parent: content-management
- weight: 120
-weight: 120
-toc: true
+categories: []
+keywords: []
aliases: [/content/sections/]
---
## Overview
-A section is a top-level content directory, or any content directory with an _index.md file. A content directory with an _index.md file is also known as a [branch bundle](/getting-started/glossary/#branch-bundle). Section templates receive one or more page [collections](/getting-started/glossary/#collection) in [context](/getting-started/glossary/#context).
-
-{{% note %}}
-Although top-level directories without _index.md files are sections, we recommend creating _index.md files in _all_ sections.
-{{% /note %}}
-
-A typical site consists of one or more sections. For example:
+{{% glossary-term "section" %}}
```text
content/
@@ -74,14 +62,8 @@ Have list pages|:heavy_check_mark:|:x:
With the file structure from the [example above](#overview):
1. The list page for the articles section includes all articles, regardless of directory structure; none of the subdirectories are sections.
-
1. The articles/2022 and articles/2023 directories do not have list pages; they are not sections.
-
1. The list page for the products section, by default, includes product-1 and product-2, but not their descendant pages. To include descendant pages, use the `RegularPagesRecursive` method instead of the `Pages` method in the list template.
-
-[`Pages`]: /methods/page/pages/
-[`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/
-
1. All directories in the products section have list pages; each directory is a section.
## Template selection
@@ -92,21 +74,18 @@ With the file structure from the [example above](#overview):
Content directory|Section template
:--|:--
-content/products|layouts/products/list.html
-content/products/product-1|layouts/products/list.html
-content/products/product-1/benefits|layouts/products/list.html
+`content/products`|`layouts/products/list.html`
+`content/products/product-1`|`layouts/products/list.html`
+`content/products/product-1/benefits`|`layouts/products/list.html`
Content directory|Single template
:--|:--
-content/products|layouts/products/single.html
-content/products/product-1|layouts/products/single.html
-content/products/product-1/benefits|layouts/products/single.html
+`content/products`|`layouts/products/single.html`
+`content/products/product-1`|`layouts/products/single.html`
+`content/products/product-1/benefits`|`layouts/products/single.html`
If you need to use a different template for a subsection, specify `type` and/or `layout` in front matter.
-[lookup rules]: /templates/lookup-order/#lookup-rules
-[lookup order]: /templates/lookup-order/
-
## Ancestors and descendants
A section has one or more ancestors (including the home page), and zero or more descendants. With the file structure from the [example above](#overview):
@@ -119,7 +98,7 @@ The content file (benefit-1.md) has four ancestors: benefits, product-1, product
For example, use the `.Ancestors` method to render breadcrumb navigation.
-{{< code file=layouts/partials/breadcrumb.html >}}
+```go-html-template {file="layouts/partials/breadcrumb.html"}
-{{< /code >}}
+```
With this CSS:
@@ -156,9 +135,5 @@ Hugo renders this, where each breadcrumb is a link to the corresponding page:
Home » Products » Product 1 » Benefits » Benefit 1
```
-[archetype]: /content-management/archetypes/
-[content type]: /content-management/types/
-[directory structure]: /getting-started/directory-structure/
-[section templates]: /templates/types/#section
-[leaf bundles]: /content-management/page-bundles/#leaf-bundles
-[branch bundles]: /content-management/page-bundles/#branch-bundles
+[lookup order]: /templates/lookup-order/
+[lookup rules]: /templates/lookup-order/#lookup-rules
diff --git a/docs/content/en/content-management/shortcodes.md b/docs/content/en/content-management/shortcodes.md
index 47e4f94ed..2de387f39 100644
--- a/docs/content/en/content-management/shortcodes.md
+++ b/docs/content/en/content-management/shortcodes.md
@@ -1,110 +1,88 @@
---
title: Shortcodes
-description: Shortcodes are simple snippets inside your content files calling built-in or custom templates.
-categories: [content management]
-keywords: [markdown,content,shortcodes]
-menu:
- docs:
- parent: content-management
- weight: 100
-weight: 100
-toc: true
+description: Use embedded, custom, or inline shortcodes to insert elements such as videos, images, and social media embeds into your content.
+categories: []
+keywords: []
aliases: [/extras/shortcodes/]
-testparam: "Hugo Rocks!"
---
-## What a shortcode is
+## Introduction
-Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video `
- {{ range . }}
- {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
-
- {{ end }}
-
The product of {{ $v1 }} and {{ $v2 }} is {{ mul $v1 $v2 }}.
``` -While HTML templates are the most common, you can create templates for any [output format] including CSV, JSON, RSS, and plain text. - -[output format]: /templates/output-formats/ +While HTML templates are the most common, you can create templates for any [output format](g) including CSV, JSON, RSS, and plain text. ## Context -The most important concept to understand before creating a template is _context_, the data passed into each template. The data may be a simple value, or more commonly [objects] and associated [methods]. - -[objects]: /getting-started/glossary/#object -[methods]: /getting-started/glossary/#method +The most important concept to understand before creating a template is _context_, the data passed into each template. The data may be a simple value, or more commonly [objects](g) and associated [methods](g). For example, a template for a single page receives a `Page` object, and the `Page` object provides methods to return values or perform actions. @@ -55,21 +38,15 @@ For example, a template for a single page receives a `Page` object, and the `Pag Within a template, the dot (`.`) represents the current context. -{{< code file=layouts/_default/single.html >}} +```go-html-template {file="layouts/_default/single.html"}{{ . }}
{{ end }} -{{< /code >}} +``` -In the example above, the context changes as we `range` through the [slice] of values. In the first iteration the context is "foo", and in the second iteration the context is "bar". Inside of the `with` block the context is "baz". Hugo renders the above to: - -[slice]: /getting-started/glossary/#slice +In the example above, the context changes as we `range` through the [slice](g) of values. In the first iteration the context is "foo", and in the second iteration the context is "bar". Inside of the `with` block the context is "baz". Hugo renders the above to: ```html{{ $.Title }} - {{ . }}
{{ end }} -{{< /code >}} +``` Hugo renders this to: @@ -108,27 +83,21 @@ Hugo renders this to:My Page Title - foo
``` -{{% note %}} -Make sure that you thoroughly understand the concept of _context_ before you continue reading. The most common templating errors made by new users relate to context. -{{% /note %}} +> [!note] +> Make sure that you thoroughly understand the concept of _context_ before you continue reading. The most common templating errors made by new users relate to context. ## Actions In the examples above the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template. -A template action may contain literal values ([boolean], [string], [integer], and [float]), variables, functions, and methods. +A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), variables, functions, and methods. -[boolean]: /getting-started/glossary/#boolean -[string]: /getting-started/glossary/#string -[integer]: /getting-started/glossary/#integer -[float]: /getting-started/glossary/#float - -{{< code file=layouts/_default/single.html >}} +```go-html-template {file="layouts/_default/single.html"} {{ $convertToLower := true }} {{ if $convertToLower }}