diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..13eee3f --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,62 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: [master, main] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install Node dependencies + run: npm ci + + - name: Build Tailwind CSS + run: npm run build:css + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Build Jekyll + run: bundle exec jekyll build + env: + JEKYLL_ENV: production + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + diff --git a/.github/workflows/html-proofer.yml b/.github/workflows/html-proofer.yml index f4dc7f9..8d1f23c 100644 --- a/.github/workflows/html-proofer.yml +++ b/.github/workflows/html-proofer.yml @@ -8,15 +8,27 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install Node dependencies + run: npm ci + + - name: Build Tailwind CSS + run: npm run build:css - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - bundler-cache: true # Runs bundle install and caches gems + bundler-cache: true - name: Build Jekyll site run: bundle exec jekyll build - name: Run HTMLProofer - run: bundle exec htmlproofer --allow-hash-href=true ./_site + run: bundle exec htmlproofer --allow-hash-href=true --ignore-urls "/hachyderm.io/,/play.google.com/,/f-droid.org/" ./_site diff --git a/.gitignore b/.gitignore index 78bd972..527204e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,19 @@ +# Jekyll .sass-cache -_site \ No newline at end of file +_site +.jekyll-cache +.jekyll-metadata + +# Node +node_modules +package-lock.json + +# OS +.DS_Store +Thumbs.db + +# Editor +*.swp +*.swo +.idea +.vscode diff --git a/404.html b/404.html index 39e6ae6..4a0a42c 100644 --- a/404.html +++ b/404.html @@ -1,14 +1,21 @@ --- -title: -description: -permalink: /404.html +layout: default +title: Page Not Found sitemap: false +permalink: /404.html --- - -
-
- 404 screen -
-

Page not faund

-
Go Back
+
+
+
+ Oops! +
+

+ Page nto found! +

+

The page you're looking for doesn't exist or has been moved.

+ +
diff --git a/Gemfile b/Gemfile index 5968c52..8151e8b 100644 --- a/Gemfile +++ b/Gemfile @@ -1,18 +1,16 @@ source 'https://rubygems.org' -gem 'jekyll', '4.3.1' -gem 'html-proofer' -gem 'csv' -gem 'logger' -gem 'base64' -gem 'bigdecimal' +gem 'jekyll', '~> 4.3' +gem 'webrick', '~> 1.8' group :jekyll_plugins do - gem 'jekyll-archives' - gem 'jekyll-feed' - gem 'jekyll-paginate' - gem 'jekyll-seo-tag' - gem 'jekyll-sitemap' + gem 'jekyll-archives', '~> 2.2' + gem 'jekyll-feed', '~> 0.17' + gem 'jekyll-paginate', '~> 1.1' + gem 'jekyll-seo-tag', '~> 2.8' + gem 'jekyll-sitemap', '~> 1.4' end -gem "webrick", "~> 1.8" +group :development do + gem 'html-proofer', '~> 5.0' +end diff --git a/_config.yml b/_config.yml index e48f867..4fd2766 100644 --- a/_config.yml +++ b/_config.yml @@ -2,20 +2,19 @@ # Site title: AnySoftKeyboard -url: "" +url: "https://anysoftkeyboard.github.io" baseurl: "" # Values for the jekyll-seo-tag gem (https://github.com/jekyll/jekyll-seo-tag) logo: /siteicon.png description: Official website of AnySoftKeyboard, the open source Android keyboard. author: - name: - email: - twitter: https://twitter.com/anysoftkeyboard + name: Menny Even-Danan social: - name: Mastodon - links: https://hachyderm.io/@anysoftkeyboard - - + name: AnySoftKeyboard + links: + - https://hachyderm.io/@anysoftkeyboard + - https://github.com/AnySoftKeyboard/AnySoftKeyboard # ----- # Build @@ -24,39 +23,27 @@ timezone: Etc/UTC collections: staff_members: - _hide_content: true + output: false paginate: 10 paginate_path: "/blog/:num/" permalink: pretty defaults: - - - scope: + - scope: path: "" type: "posts" values: layout: "post" - _options: - content: - width: 1500 - height: 2500 - - - scope: + - scope: path: "" type: "staff_members" - values: - _options: - image_path: - width: 600 - height: 600 - - - scope: + values: {} + - scope: path: "" values: layout: "page" - - - scope: + - scope: path: "index.html" values: layout: "default" @@ -76,20 +63,9 @@ exclude: - Gemfile - Gemfile.lock - README.md - - LICENCE - -social_icons: - - Facebook - - Google Plus - - Instagram - - LinkedIn - - Pinterest - - Tumblr - - Twitter - - YouTube - - RSS - -_comments: - highlight: Emphasis the text - color: The background colour used in the plan name and call to action. - new_window: Open link in new window + - LICENSE + - node_modules + - vendor + - package.json + - package-lock.json + - css/input.css diff --git a/_data/site.yml b/_data/site.yml new file mode 100644 index 0000000..99c355f --- /dev/null +++ b/_data/site.yml @@ -0,0 +1,118 @@ +# Site-wide content configuration +# Centralized text and settings + +hero: + title: "The only Android keyboard" + title_emphasis: "you'll ever need" + subtitle: "Free as in speech" + subtitle_emphasis: "and" + subtitle_2: "Free as in beer." + cta_text: "Download Now" + cta_link: "/download/" + image: "/images/phone_graphic.png" + image_alt: "AnySoftKeyboard running on Android" + +features: + title: "Features" + title_suffix: "of AnySoftKeyboard" + image: "/images/features_graphic.png" + image_alt: "AnySoftKeyboard features overview" + items: + - "Supports lots of languages via external packages" + - "Physical keyboards are supported as well" + - "Themes (skin) support" + - "Incognito Mode - will not track your typing" + - "Word suggestions, and Next-Word suggestions" + - "Automatic correction can be customized, or turned off entirely" + - "Gesture typing" + - "Dark mode, automatic (based on system) and manual" + - "Power saving mode, disables various features to save battery" + - "Per-app tint, the keyboard changes color depending on the app" + - "Voice input" + - "Compact modes: Split and Compact to left/right" + - "Special keyboard for text fields which require only numbers, dates, email or URI addresses" + - "Plenty of emojis" + - "...and many more!" + +community: + title: "Help" + title_suffix: "from the community" + image: "/images/help_community.png" + image_alt: "Community support illustration" + description: "The official discussions and support community" + links: + - name: "GitHub Discussions" + url: "https://github.com/AnySoftKeyboard/AnySoftKeyboard/discussions" + icon: "github" + - name: "Mastodon" + url: "https://hachyderm.io/@anysoftkeyboard" + icon: "mastodon" + - name: "Wiki" + url: "https://github.com/AnySoftKeyboard/AnySoftKeyboard/wiki" + icon: "book" + cta: + text: "Report Issues" + url: "https://github.com/AnySoftKeyboard/AnySoftKeyboard/issues" + icon: "github" + +languages_section: + title: "Numerous" + title_emphasis: "languages" + title_suffix: "available" + image: "/images/languages_graphic.png" + image_alt: "Multiple language support" + description: "There are many languages with multiple dictionaries, auto-correction and keyboards that are supported." + link_text: "View all languages" + link_url: "/languages/" + +testimonial: + quote: "AnySoftKeyboard is the keyboard we have been waiting for; lightweight, fast, accurate and private!" + author: "The Open Source Community" + image: "/images/avatar.png" + image_alt: "Open source community" + +donate: + title: "Support" + title_emphasis: "the development" + subtitle: "Help us keep AnySoftKeyboard free and open source" + buttons: + - text: "Donate via PayPal" + url: "https://www.paypal.me/menny" + icon: "paypal" + - text: "GitHub Sponsors" + url: "https://github.com/sponsors/menny" + icon: "github" + +download: + title: "Download AnySoftKeyboard" + subtitle: "Available on Google Play Store and F-Droid" + stores: + - name: "Google Play" + url: "https://play.google.com/store/apps/details?id=com.menny.android.anysoftkeyboard" + image: "/images/en-play-badge.png" + image_alt: "Get it on Google Play" + - name: "F-Droid" + url: "https://f-droid.org/repository/browse/?fdid=com.menny.android.anysoftkeyboard" + image: "/images/f-droid.png" + image_alt: "Get it on F-Droid" + beta: + title: "Try Beta Versions" + channels: + - name: "Beta Channel" + description: "Sign up for early access" + url: "https://play.google.com/apps/testing/com.menny.android.anysoftkeyboard" + - name: "Alpha Channel" + description: "For the adventurous! Join the" + url: "https://groups.google.com/g/anysoftkeyboard-alpha-testers" + link_text: "Alpha Testers Google Group" + +social: + github: "https://github.com/AnySoftKeyboard/AnySoftKeyboard" + mastodon: "https://hachyderm.io/@anysoftkeyboard" + +copyright: + year_start: 2018 + holder: "Menny Even-Danan" + license: "Apache License, Version 2.0" + license_url: "http://www.apache.org/licenses/LICENSE-2.0" + diff --git a/_includes/list-posts.html b/_includes/list-posts.html deleted file mode 100644 index 0dd91fa..0000000 --- a/_includes/list-posts.html +++ /dev/null @@ -1,10 +0,0 @@ -{% for post in include.posts %} -
  • -

    {{ post.title }}

    - {% include post-title.html post=post %} -
    - {{ post.excerpt }} - -
    -
  • -{% endfor %} diff --git a/_includes/navigation.html b/_includes/navigation.html deleted file mode 100644 index b2e5cb9..0000000 --- a/_includes/navigation.html +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/_includes/post-title.html b/_includes/post-title.html deleted file mode 100644 index e1129f4..0000000 --- a/_includes/post-title.html +++ /dev/null @@ -1,8 +0,0 @@ -

    - {% for category in include.post.categories %} - - {{ category | capitalize }} - - {% endfor %} - -

    diff --git a/_includes/relative-src.html b/_includes/relative-src.html deleted file mode 100644 index fb32308..0000000 --- a/_includes/relative-src.html +++ /dev/null @@ -1 +0,0 @@ -{% assign prefix = include.src | slice: 0, 2 %}{% assign protocol = include.src | slice: 0, 4 %}{% unless protocol == 'http' or prefix == "//" %}{{ site.baseurl }}{% endunless %}{{ include.src }} diff --git a/_includes/social-icon.html b/_includes/social-icon.html deleted file mode 100644 index e718ada..0000000 --- a/_includes/social-icon.html +++ /dev/null @@ -1,24 +0,0 @@ -{% case include.icon %} - {% when "Facebook" %} - - {% when "Google Plus" %} - - {% when "Instagram" %} - - {% when "LinkedIn" %} - - {% when "Pinterest" %} - - {% when "Tumblr" %} - - {% when "Twitter" %} - - {% when "YouTube" %} - - {% when "RSS" %} - - {% when "Mastodon" %} - - {% when "GitHub" %} - -{% endcase %} diff --git a/_layouts/archive.html b/_layouts/archive.html index 4e8073c..da5b2cf 100644 --- a/_layouts/archive.html +++ b/_layouts/archive.html @@ -1,23 +1,32 @@ --- -layout: page +layout: default --- +
    +
    +

    {{ page.title }}

    +
    +
    -
    - {% assign blog = site.pages | where: "path", "blog/index.html" | first %} - - {% if blog.title %} -

    {{ blog.title }}

    - {% endif %} - - {% if blog.description %} -

    {{ blog.description }}

    - {% endif %} - - - - -
    +
    +
    + {% if page.posts.size > 0 %} +
      + {% for post in page.posts %} +
    • +

      + {{ post.title }} +

      +

      + +

      + {% if post.excerpt %} +

      {{ post.excerpt | strip_html | truncate: 200 }}

      + {% endif %} +
    • + {% endfor %} +
    + {% else %} +

    No posts in this archive.

    + {% endif %} +
    +
    diff --git a/_layouts/default.html b/_layouts/default.html index 769e769..0a9e8f6 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,49 +1,79 @@ - - + - - - - - {% seo %} - {% feed_meta %} - - - - - - - -
    -
    -
    ASK Logo
    - {% include navigation.html %} -
    -
    - {{ content }} - - - + + + + + + + {% seo %} + {% feed_meta %} + + + + + + + + + + + +
    + {{ content }} +
    + + + diff --git a/_layouts/page.html b/_layouts/page.html index 1a1c737..aaf323c 100644 --- a/_layouts/page.html +++ b/_layouts/page.html @@ -1,18 +1,17 @@ --- layout: default --- -
    -
    -
    - {% if page.heading %} -

    {{ page.heading }}

    - {% elsif page.title and page.layout != 'archive' %} -

    {{ page.title }}

    - {% endif %} - {% if page.description %} -

    {{ page.description }}

    - {% endif %} - {{ content }} -
    -
    -
    +
    +
    +

    {{ page.title }}

    + {% if page.subtitle %} +

    {{ page.subtitle }}

    + {% endif %} +
    +
    + +
    +
    + {{ content }} +
    +
    diff --git a/_layouts/post.html b/_layouts/post.html index a06f393..2ffaea6 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,26 +1,33 @@ --- -layout: page +layout: default --- -
    - {% include post-title.html post=page %} +
    +
    +

    {{ page.title }}

    +

    + + {% if page.author %} • {{ page.author }}{% endif %} +

    +
    +
    -
    - {{ content }} - -
    - {% assign author_id = page.author_staff_member | prepend: "/staff_members/" | append: "/" %} - {% assign author = site.staff_members | where: "url", author_id | first %} -
    {{ author.name }}
    -

    {{ author.blurb }}

    -
    - -
    - {% if page.previous.url %} - - {% endif %} - {% if page.next.url %} - - {% endif %} -
    -
    -
    +
    +
    + {{ content }} + + {% if page.author %} + {% assign author = site.staff_members | where: "name", page.author | first %} + + {% endif %} +
    +
    diff --git a/_sass/blog.scss b/_sass/blog.scss deleted file mode 100644 index cbae2ba..0000000 --- a/_sass/blog.scss +++ /dev/null @@ -1,125 +0,0 @@ -.blog-posts { - list-style: none; - padding: 0; - - li { - margin: 100px 0; - } -} - -.blog-post { - .author { - padding: 30px 0 0 0; - border: 1px solid #eee; - margin: 30px 0; - font-size: .8em; - - .square-image { - width: 125px; - height: 125px; - margin-top: 0; - } - .blurb { - text-align: center; - } - } - - h3 { - margin: 0; - a { - color: #000; - text-decoration: none; - font-weight: normal; - font-size: 1.3em; - } - } - - h2 { - text-align: left; - } - - .blog-navigation { - font-size: 14px; - display: block; - width: auto; - overflow: hidden; - a { - display: block; - width: 50%; - float: left; - margin: 1em 0; - } - - .next { - text-align: right; - } - } - - .post-details { - border-bottom: 1px solid #eee; - font-size: .9em; - - .blog-filter { - display: inline-block; - text-align: left; - - a { - position: relative; - top: -5px; - } - } - - a { - text-decoration: none; - } - - .post-date { - float: right; - } - - &:after { - content: ""; - display: table; - clear: both; - } - } - - .post-content { - .button { - margin: 30px 0 0 0; - } - } -} - -.pagination { - text-align: center; -} - -.blog-filter { - text-align: center; - a { - background: #eee; - padding: 3px 5px; - font-size: .8em; - border-radius: 5px; - color: #888; - transition: .2s ease-in-out; - - &:hover { - color: #555; - text-decoration: none; - } - } -} - -.blog-filter.cross a { - padding-right: 8px; - - &:after { - content: "x"; - font-size: .5em; - position: relative; - bottom: 4px; - right: -3px; - } -} diff --git a/_sass/contact.scss b/_sass/contact.scss deleted file mode 100644 index c380079..0000000 --- a/_sass/contact.scss +++ /dev/null @@ -1,32 +0,0 @@ -.map { - width: 100%; - margin: 100px 0; - height: 400px; -} - -.contact-box { - @extend %flexbox; - @include flex-flow(wrap); - max-width: 750px; - margin: 0 auto; - - form { - width: 100% - } - - p { - margin: 0; - } - - .contact-form, .contact-details { - @media #{$desktop} { - -webkit-flex: 1; - flex: 1; - } - margin: 0 30px; - } - - .contact-details { - font-size: .9em; - } -} diff --git a/_sass/elements.scss b/_sass/elements.scss deleted file mode 100644 index 5b6c794..0000000 --- a/_sass/elements.scss +++ /dev/null @@ -1,64 +0,0 @@ -html { - background: #2b2b40; -} - -html, body { - margin: 0; - padding: 0; -} - -body { - font-family: "Overpass", "Helvetica Neue", "Helvetica", "Arial"; -} - -a { - color: #663399; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -img { - width: 100%; -} - -h1 strong, h2 strong { - font-weight: 700; -} - -h1 { - font-weight: 300; - font-size: 2.3em; - margin: 0; -} - -h2 { - font-weight: 300; - font-size: 2.2em; - margin: 0 0 30px 0; -} - -h3 { - margin: 20px 0 10px 0; -} - - -p, address { - font-size: 1em; - color: #666; - margin-bottom: 20px; - font-weight: 300; - line-height: 1.4em; -} - -li { - font-size: 1em; - color: #666; - margin-bottom: 5px; -} - -pre { - overflow: auto; -} \ No newline at end of file diff --git a/_sass/footer.scss b/_sass/footer.scss deleted file mode 100644 index 6939152..0000000 --- a/_sass/footer.scss +++ /dev/null @@ -1,125 +0,0 @@ -.footer-links { - width: 100%; - margin: 10px; - padding: 0; - - @media #{$tablet} { - -webkit-flex: 1 0 180px; - flex: 1 0 180px; - } - - li { - list-style: none; - margin: 15px auto; - - @media #{$tablet} { - max-width: 150px; - } - a { - - &:hover { - text-decoration: none; - } - svg { - fill: #999; - margin-right: 10px; - transition: fill 0.2s ease; - vertical-align: middle; - position: relative; - top: -2px; - width: 22px; - height: 22px; - } - - &:hover svg { - fill: #fff; - } - - &.twitter-icon:hover svg { - fill: #55acee; - } - - &.mastodon-icon:hover svg { - fill: #55acee; - } - - &.google-plus-icon:hover svg { - fill: #db4437; - } - - &.youtube-icon:hover svg { - fill: #cd201f; - } - - &.instagram-icon:hover svg { - fill: #f167f5; - } - - &.linkedin-icon:hover svg { - fill: #0077b5; - } - - &.pinterest-icon:hover svg { - fill: #bd081c; - } - - &.rss-icon:hover svg { - fill: #f26522; - } - } - } -} - -footer { - padding: 50px 0 50px 0; - font-size: 1.1em; - position: relative; - background: #2b2b40; - color: #fff; - - .copyright { - font-size: .8em; - margin: 0 auto; - - @media #{$tablet} { - text-align: center; - } - - } - - &, - a { - color: #999; - } - - h2 { - font-size: 1.4em; - margin: 30px 0; - color: #ccc; - } - - .footer-columns { - @extend %flexbox; - @include flex-flow(wrap); - margin: -10px -10px 10px -10px; - } - - a { - text-decoration: none; - - &:hover { - color: #fff; - } - } - - .legal-line { - width: 100%; - padding: 30px 0; - margin: 0; - background-color: #222527; - - a { - font-weight: 600; - } - } -} diff --git a/_sass/forms.scss b/_sass/forms.scss deleted file mode 100644 index 0011e06..0000000 --- a/_sass/forms.scss +++ /dev/null @@ -1,67 +0,0 @@ -.button a, input[type=submit] { - color: #fff; - text-decoration: none; - padding: 10px 30px; - background: $brand-color; - border-radius: 3px; - border: 1px solid rgba(255,255,255,.5); - transition: .2s ease-in-out; -} - -.button a:hover, input[type=submit]:hover { - border: 1px solid #fff; - background: $secondary-brand-color; - cursor: pointer; -} - -.button.alt a { - background: rgba(255,255,255,0.15); - border-radius: 3px; - border: 1px solid rgba(255, 255, 255, 0.3); - padding: 16px 50px; -} - -.button.alt a:hover { - background: #fff; - color: $brand-color; -} - -textarea, input, button, select { font-family: inherit; font-size: inherit; } - -input[type=submit] { - margin: 20px 0 0 0; -} - -label, input, textarea { - display: block; - width: 100%; - box-sizing: border-box; -} - -textarea { - resize: vertical; - height: 150px; -} - -label { - margin: 20px 0 5px 0; -} - -input, textarea { - padding: 10px; - font-size: 1em; -} - -input, textarea { - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; - border: 1px solid #DDDDDD; -} - -input[type=text]:focus, input[type=email]:focus, input[type=password]:focus, textarea:focus { - box-shadow: 0 0 5px rgba(81, 203, 238, 1); - border: 1px solid rgba(81, 203, 238, 1); -} diff --git a/_sass/landing-page.scss b/_sass/landing-page.scss deleted file mode 100644 index 4223f4e..0000000 --- a/_sass/landing-page.scss +++ /dev/null @@ -1,62 +0,0 @@ -.bottom-cta { - background: linear-gradient(to bottom, $brand-color 0%, $middle-gradient-color 100%); - color: #fff; - text-align: center; - margin: 0; - padding: 100px 0; - - h2 { - margin-bottom: 50px; - } -} - -.testimonial { - background: #f5f5f5; - margin: 0; - padding: 100px 0; - - .testimonial-block { - max-width: 750px; - width: 98%; - margin: 0 auto; - - @media #{$tablet} { - @include flexbox; - - blockquote { - -webkit-flex: 1; - flex: 1; - } - } - } -} - -.hero { - color: #ffffff; - text-align: center; - background: linear-gradient(to bottom, $middle-gradient-color 0%, $secondary-brand-color 100%) no-repeat #a05fb7; - padding-top: 50px; - - p { - color: #fff; - } -} - - -@media #{$desktop} { - .flex { - @include flexbox; - align-items: center; - flex-direction: row; - - .text, .image { - -webkit-flex: 1; - flex: 1; - padding: 0 20px; - } - } - - .content section:nth-child(even) .flex { - flex-direction: row-reverse; - } -} diff --git a/_sass/layout.scss b/_sass/layout.scss deleted file mode 100644 index f513727..0000000 --- a/_sass/layout.scss +++ /dev/null @@ -1,223 +0,0 @@ -.container, .text-container { - margin: 0 auto; - position: relative; - padding: 0 20px; -} - -.text-container { - max-width: 750px; -} - -.container { - max-width: 1140px; - - &.max-container { - max-width: 100%; - padding: 0; - } -} - -header { - color: #fff; - padding: 20px 0; - background: $brand-color; /* Old browsers */ - background: linear-gradient(to bottom, $brand-color 0%, $middle-gradient-color 100%) no-repeat $brand-color; - - a { - color: #fff; - text-decoration: none; - z-index: 1; - position: relative; - - &:hover { - text-decoration: none; - } - } - - .company-name { - font-size: 1.7em; - line-height: 0; - - a { - display: inline-block; - } - - img { - display: block; - width: auto; - } - } -} - -.content { - background: #fff; - padding: 1px 0 0 0; - position: relative; -} - -.screenshot { - max-width: 100%; - height: auto; - display: block; - box-shadow: 0 5px 10px 0 rgba(14,30,37,.12); - border-radius: 2px; - margin-left: auto; - margin-right: auto; - background: #DDD url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2244%22%20height%3D%2212%22%20viewBox%3D%220%200%2044%2012%22%3E%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%224%22%20fill%3D%22%23eee%22%20%2F%3E%3Ccircle%20cx%3D%2222%22%20cy%3D%226%22%20r%3D%224%22%20fill%3D%22%23eee%22%20%2F%3E%3Ccircle%20cx%3D%2238%22%20cy%3D%226%22%20r%3D%224%22%20fill%3D%22%23eee%22%20%2F%3E%3C%2Fsvg%3E') 4px 4px no-repeat; - padding: 20px 0 0 0; - position: relative; -} - -section { - padding: 100px 0; -} - -section + section { - padding-top: 0; -} - -.subtext { - margin-top: 10px; - text-align: center; -} - - -.cta { - margin: 60px 0; -} - -.page h2 { - text-align: center; -} - -blockquote { - padding: 18px 25px; - margin: 0; - quotes: "\201C""\201D""\2018""\2019"; - font-style: italic; - - .author { - display: block; - font-weight: bold; - margin: 10px 0 0 0; - font-size: .85em; - font-style: normal; - } - - p { - display: inline; - } -} - -blockquote:before { - color: #ccc; - content: open-quote; - font-size: 4em; - line-height: 0.1em; - margin-right: 0.25em; - vertical-align: -0.4em; -} - -.square-image { - width: 150px; - height: 150px; - overflow: hidden; - margin: 25px auto 0 auto; - position: relative; - border-radius: 200px; - - img { - position: absolute; - left: -1000%; - right: -1000%; - top: -1000%; - bottom: -1000%; - margin: auto; - } -} - -.page { - margin-bottom: 0; - padding-bottom: 80px; -} - -.center-text { - text-align: center; -} - -.editor-link { - display: none; - margin-top: 0; - .btn { - border: 0; - border-radius: 2px; - width: 100%; - max-width: 500px; - box-sizing: border-box; - font-size: 2rem; - text-decoration: none; - padding: 10px 15px; - margin: 0; - font-size: 18px; - cursor: pointer; - background-color: #f7e064; - color: #333; - box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.2); - - &:hover { - background-color: #f4d525; - color: #333; - } - } - -} - -.not-full { - width: auto !important; - margin: 15px; - display: inline-block; -} - -.not-full-icon { - display: inline-block; - width: auto !important; - margin-top: -5px; - margin-left: 10%; - float: right; -} - -.languages-list { - margin-bottom: 40px; -} - -.no-link-found { - filter: gray; - -webkit-filter: grayscale(100%); - filter: grayscale(100%); - -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); - -o-filter: grayscale(100%); -} - -.card { - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); - transition: all 0.3s cubic-bezier(.25,.8,.25,1); -} - -.card:hover { - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); - -ms-transform: translate(2px, -2px); /* IE 9 */ - -webkit-transform: translate(2px, -2px); /* Safari */ - transform: translate(2px, -2px); - transition: all 0.3s cubic-bezier(.25,.8,.25,1); -} - -#error { - text-decoration: underline; - text-decoration-style: dotted; - text-decoration-color: red; -} - -.mt-3 { - margin-top: 3rem; -} \ No newline at end of file diff --git a/_sass/mixins/columns.scss b/_sass/mixins/columns.scss deleted file mode 100644 index 010eae9..0000000 --- a/_sass/mixins/columns.scss +++ /dev/null @@ -1,5 +0,0 @@ -@mixin columns($value) { - columns: $value; - -webkit-columns: $value; - -moz-columns: $value; -} diff --git a/_sass/mixins/flexbox.scss b/_sass/mixins/flexbox.scss deleted file mode 100644 index 92a03fd..0000000 --- a/_sass/mixins/flexbox.scss +++ /dev/null @@ -1,394 +0,0 @@ -// Flexbox Mixins -// http://philipwalton.github.io/solved-by-flexbox/ -// https://github.com/philipwalton/solved-by-flexbox -// -// Copyright (c) 2013 Brian Franco -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// This is a set of mixins for those who want to mess around with flexbox -// using the native support of current browsers. For full support table -// check: http://caniuse.com/flexbox -// -// Basically this will use: -// -// * Fallback, old syntax (IE10, mobile webkit browsers - no wrapping) -// * Final standards syntax (FF, Safari, Chrome, IE11, Opera) -// -// This was inspired by: -// -// * http://dev.opera.com/articles/view/advanced-cross-browser-flexbox/ -// -// With help from: -// -// * http://w3.org/tr/css3-flexbox/ -// * http://the-echoplex.net/flexyboxes/ -// * http://msdn.microsoft.com/en-us/library/ie/hh772069(v=vs.85).aspx -// * http://css-tricks.com/using-flexbox/ -// * http://dev.opera.com/articles/view/advanced-cross-browser-flexbox/ -// * https://developer.mozilla.org/en-us/docs/web/guide/css/flexible_boxes - -//---------------------------------------------------------------------- - -// Flexbox Containers -// -// The 'flex' value causes an element to generate a block-level flex -// container box. -// -// The 'inline-flex' value causes an element to generate a inline-level -// flex container box. -// -// display: flex | inline-flex -// -// http://w3.org/tr/css3-flexbox/#flex-containers -// -// (Placeholder selectors for each type, for those who rather @extend) - -@mixin flexbox { - display: -webkit-box; - display: -webkit-flex; - display: -moz-flex; - display: -ms-flexbox; - display: flex; -} - -%flexbox { @include flexbox; } - -//---------------------------------- - -@mixin inline-flex { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -moz-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - -%inline-flex { @include inline-flex; } - -//---------------------------------------------------------------------- - -// Flexbox Direction -// -// The 'flex-direction' property specifies how flex items are placed in -// the flex container, by setting the direction of the flex container's -// main axis. This determines the direction that flex items are laid out in. -// -// Values: row | row-reverse | column | column-reverse -// Default: row -// -// http://w3.org/tr/css3-flexbox/#flex-direction-property - -@mixin flex-direction($value: row) { - @if $value == row-reverse { - -webkit-box-direction: reverse; - -webkit-box-orient: horizontal; - } @else if $value == column { - -webkit-box-direction: normal; - -webkit-box-orient: vertical; - } @else if $value == column-reverse { - -webkit-box-direction: reverse; - -webkit-box-orient: vertical; - } @else { - -webkit-box-direction: normal; - -webkit-box-orient: horizontal; - } - -webkit-flex-direction: $value; - -moz-flex-direction: $value; - -ms-flex-direction: $value; - flex-direction: $value; -} - // Shorter version: - @mixin flex-dir($args...) { @include flex-direction($args...); } - -//---------------------------------------------------------------------- - -// Flexbox Wrap -// -// The 'flex-wrap' property controls whether the flex container is single-line -// or multi-line, and the direction of the cross-axis, which determines -// the direction new lines are stacked in. -// -// Values: nowrap | wrap | wrap-reverse -// Default: nowrap -// -// http://w3.org/tr/css3-flexbox/#flex-wrap-property - -@mixin flex-wrap($value: nowrap) { - // No Webkit Box fallback. - -webkit-flex-wrap: $value; - -moz-flex-wrap: $value; - @if $value == nowrap { - -ms-flex-wrap: none; - } @else { - -ms-flex-wrap: $value; - } - flex-wrap: $value; -} - -//---------------------------------------------------------------------- - -// Flexbox Flow (shorthand) -// -// The 'flex-flow' property is a shorthand for setting the 'flex-direction' -// and 'flex-wrap' properties, which together define the flex container's -// main and cross axes. -// -// Values: | -// Default: row nowrap -// -// http://w3.org/tr/css3-flexbox/#flex-flow-property - -@mixin flex-flow($values: (row nowrap)) { - // No Webkit Box fallback. - -webkit-flex-flow: $values; - -moz-flex-flow: $values; - -ms-flex-flow: $values; - flex-flow: $values; -} - -//---------------------------------------------------------------------- - -// Flexbox Order -// -// The 'order' property controls the order in which flex items appear within -// their flex container, by assigning them to ordinal groups. -// -// Default: 0 -// -// http://w3.org/tr/css3-flexbox/#order-property - -@mixin order($int: 0) { - -webkit-box-ordinal-group: $int + 1; - -webkit-order: $int; - -moz-order: $int; - -ms-flex-order: $int; - order: $int; -} - -//---------------------------------------------------------------------- - -// Flexbox Grow -// -// The 'flex-grow' property sets the flex grow factor. Negative numbers -// are invalid. -// -// Default: 0 -// -// http://w3.org/tr/css3-flexbox/#flex-grow-property - -@mixin flex-grow($int: 0) { - -webkit-box-flex: $int; - -webkit-flex-grow: $int; - -moz-flex-grow: $int; - -ms-flex-positive: $int; - flex-grow: $int; -} - -//---------------------------------------------------------------------- - -// Flexbox Shrink -// -// The 'flex-shrink' property sets the flex shrink factor. Negative numbers -// are invalid. -// -// Default: 1 -// -// http://w3.org/tr/css3-flexbox/#flex-shrink-property - -@mixin flex-shrink($int: 1) { - -webkit-flex-shrink: $int; - -moz-flex-shrink: $int; - -ms-flex-negative: $int; - flex-shrink: $int; -} - -//---------------------------------------------------------------------- - -// Flexbox Basis -// -// The 'flex-basis' property sets the flex basis. Negative lengths are invalid. -// -// Values: Like "width" -// Default: auto -// -// http://www.w3.org/TR/css3-flexbox/#flex-basis-property - -@mixin flex-basis($value: auto) { - -webkit-flex-basis: $value; - -moz-flex-basis: $value; - -ms-flex-preferred-size: $value; - flex-basis: $value; -} - -//---------------------------------------------------------------------- - -// Flexbox "Flex" (shorthand) -// -// The 'flex' property specifies the components of a flexible length: the -// flex grow factor and flex shrink factor, and the flex basis. When an -// element is a flex item, 'flex' is consulted instead of the main size -// property to determine the main size of the element. If an element is -// not a flex item, 'flex' has no effect. -// -// Values: none | || -// Default: See individual properties (1 1 0). -// -// http://w3.org/tr/css3-flexbox/#flex-property - -@mixin flex($fg: 1, $fs: null, $fb: null) { - - // Set a variable to be used by box-flex properties - $fg-boxflex: $fg; - - // Box-Flex only supports a flex-grow value so let's grab the - // first item in the list and just return that. - @if type-of($fg) == 'list' { - $fg-boxflex: nth($fg, 1); - } - - -webkit-box-flex: $fg-boxflex; - -webkit-flex: $fg $fs $fb; - -moz-box-flex: $fg-boxflex; - -moz-flex: $fg $fs $fb; - -ms-flex: $fg $fs $fb; - flex: $fg $fs $fb; -} - -//---------------------------------------------------------------------- - -// Flexbox Justify Content -// -// The 'justify-content' property aligns flex items along the main axis -// of the current line of the flex container. This is done after any flexible -// lengths and any auto margins have been resolved. Typically it helps distribute -// extra free space leftover when either all the flex items on a line are -// inflexible, or are flexible but have reached their maximum size. It also -// exerts some control over the alignment of items when they overflow the line. -// -// Note: 'space-*' values not supported in older syntaxes. -// -// Values: flex-start | flex-end | center | space-between | space-around -// Default: flex-start -// -// http://w3.org/tr/css3-flexbox/#justify-content-property - -@mixin justify-content($value: flex-start) { - @if $value == flex-start { - -webkit-box-pack: start; - -ms-flex-pack: start; - } @else if $value == flex-end { - -webkit-box-pack: end; - -ms-flex-pack: end; - } @else if $value == space-between { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - } @else if $value == space-around { - -ms-flex-pack: distribute; - } @else { - -webkit-box-pack: $value; - -ms-flex-pack: $value; - } - -webkit-justify-content: $value; - -moz-justify-content: $value; - justify-content: $value; -} - // Shorter version: - @mixin flex-just($args...) { @include justify-content($args...); } - -//---------------------------------------------------------------------- - -// Flexbox Align Items -// -// Flex items can be aligned in the cross axis of the current line of the -// flex container, similar to 'justify-content' but in the perpendicular -// direction. 'align-items' sets the default alignment for all of the flex -// container's items, including anonymous flex items. 'align-self' allows -// this default alignment to be overridden for individual flex items. (For -// anonymous flex items, 'align-self' always matches the value of 'align-items' -// on their associated flex container.) -// -// Values: flex-start | flex-end | center | baseline | stretch -// Default: stretch -// -// http://w3.org/tr/css3-flexbox/#align-items-property - -@mixin align-items($value: stretch) { - @if $value == flex-start { - -webkit-box-align: start; - -ms-flex-align: start; - } @else if $value == flex-end { - -webkit-box-align: end; - -ms-flex-align: end; - } @else { - -webkit-box-align: $value; - -ms-flex-align: $value; - } - -webkit-align-items: $value; - -moz-align-items: $value; - align-items: $value; -} - -//---------------------------------- - -// Flexbox Align Self -// -// Values: auto | flex-start | flex-end | center | baseline | stretch -// Default: auto - -@mixin align-self($value: auto) { - // No Webkit Box Fallback. - -webkit-align-self: $value; - -moz-align-self: $value; - @if $value == flex-start { - -ms-flex-item-align: start; - } @else if $value == flex-end { - -ms-flex-item-align: end; - } @else { - -ms-flex-item-align: $value; - } - align-self: $value; -} - -//---------------------------------------------------------------------- - -// Flexbox Align Content -// -// The 'align-content' property aligns a flex container's lines within the -// flex container when there is extra space in the cross-axis, similar to -// how 'justify-content' aligns individual items within the main-axis. Note, -// this property has no effect when the flexbox has only a single line. -// -// Values: flex-start | flex-end | center | space-between | space-around | stretch -// Default: stretch -// -// http://w3.org/tr/css3-flexbox/#align-content-property - -@mixin align-content($value: stretch) { - // No Webkit Box Fallback. - -webkit-align-content: $value; - -moz-align-content: $value; - @if $value == flex-start { - -ms-flex-line-pack: start; - } @else if $value == flex-end { - -ms-flex-line-pack: end; - } @else { - -ms-flex-line-pack: $value; - } - align-content: $value; -} diff --git a/_sass/navigation.scss b/_sass/navigation.scss deleted file mode 100644 index b2a4b62..0000000 --- a/_sass/navigation.scss +++ /dev/null @@ -1,86 +0,0 @@ -.nav-open nav { - border-bottom: 1px dotted rgba(255, 255, 255, .2); - padding: 10px 0; - a { - display: block; - } - - @media #{$mid-point} { - border: 0; - padding: 0 20px; - - a { - display: inline; - } - } -} - -nav { - text-transform: uppercase; - font-size: .8em; - width: 100%; - - @media #{$mid-point} { - text-align: right; - position: absolute; - top: 13px; - right: 0; - padding: 0 20px; - } - - - a { - margin: 0 3px; - padding: 20px 10px; - border-bottom: 1px solid rgba(255,255,255,0); - color: rgba(255,255,255,.8); - transition: .2s ease-in-out; - display: none; - - @media #{$mid-point} { - display: inline; - padding: 10px; - } - - - &.nav-toggle { - display: inline; - position: absolute; - right: 10px; - top: -22px; - font-size: 1.9em; - border: 0; - - @media #{$mid-point} { - display: none; - } - - &:hover { - border: 0; - } - } - } - - a:hover { - - border-bottom: 1px solid rgba(255,255,255,.3); - color: #fff; - } - - @media #{$mid-point} { - a.highlight { - border: 1px #ccc solid; - border-radius: 5px; - - &:hover { - background: #fff; - color: $brand-color; - } - } - } - - a.active { - color: #fff; - } - -} diff --git a/_sass/staff.scss b/_sass/staff.scss deleted file mode 100644 index 78cc262..0000000 --- a/_sass/staff.scss +++ /dev/null @@ -1,38 +0,0 @@ -.staff { - padding: 0; - list-style: none; - @extend %flexbox; - @include flex-flow(wrap); - text-align: center; - li { - padding: 30px 20px; - box-sizing: border-box; - width: 100%; - - @media #{$tablet} { - @include flex(1, 1, 45%); - } - - @media #{$desktop} { - @include flex(1, 1, 29%); - } - - } - - .square-image { - width: 200px; - height: 200px; - img { - border-radius: 200px; - } - } - - .name { - font-size: 1.3em; - margin-top: 20px; - } - - .position { - color: #666; - } -} diff --git a/_sass/variables.scss b/_sass/variables.scss deleted file mode 100644 index 4cd0e40..0000000 --- a/_sass/variables.scss +++ /dev/null @@ -1,8 +0,0 @@ -$brand-color: #663399; -$secondary-brand-color: #663399; -$middle-gradient-color: mix($brand-color, $secondary-brand-color, 95%); - -// Breakpoints -$tablet: "(min-width: 450px)"; -$mid-point: "(min-width: 620px)"; -$desktop: "(min-width: 768px)"; diff --git a/about.html b/about.html index 994d26b..a222e38 100644 --- a/about.html +++ b/about.html @@ -1,33 +1,53 @@ --- -title: Our team -description: ASK consists of a community that dedicate their time to the project development. +layout: default +title: About AnySoftKeyboard +description: Meet the team behind AnySoftKeyboard. Open source keyboard for Android. --- +
    +
    +

    Our Team

    +

    The people behind AnySoftKeyboard

    +
    +
    -
      - {% for person in site.staff_members %} -
    • -
      {{ person.name }}
      - -
      {{ person.position }}
      -
    • - {% endfor %} -
    +
    +
    +
      + {% for member in site.staff_members %} + {% unless member.name == "_defaults" %} +
    • +
      + {{ member.name }} +
      +

      + {% if member.link %} + {{ member.name }} + {% else %} + {{ member.name }} + {% endif %} +

      +

      {{ member.position }}

      +
    • + {% endunless %} + {% endfor %} +
    -
    -

    License

    -
    -Copyright 2018 Menny Even-Danan
    +    
    +

    License

    +

    AnySoftKeyboard is licensed under the Apache License, Version 2.0

    +
    Copyright 2018 Menny Even-Danan
     
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
     
    -http://www.apache.org/licenses/LICENSE-2.0
    +    http://www.apache.org/licenses/LICENSE-2.0
     
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
    -limitations under the License.
    -
    -
    +limitations under the License.
    +
    +
    +
    diff --git a/blog/index.html b/blog/index.html index 99e7df1..cac3ac0 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,25 +1,47 @@ --- +layout: default title: Blog -description: Keep up with the latest news from AnySoftKeyboard +description: News and updates from the AnySoftKeyboard team --- +
    +
    +

    Blog

    +

    News and updates from the team

    +
    +
    -
    -
      - {% include list-posts.html posts=paginator.posts %} -
    +
    +
    + {% if site.posts.size > 0 %} +
      + {% for post in site.posts %} +
    • +

      + {{ post.title }} +

      +

      + + {% if post.author %} • {{ post.author }}{% endif %} +

      + {% if post.excerpt %} +

      {{ post.excerpt | strip_html | truncate: 200 }}

      + {% endif %} +
    • + {% endfor %} +
    + {% else %} +

    No posts yet. Check back soon!

    + {% endif %} - {% if paginator.total_pages > 1 %} - - - {% endif %} -
    + {% if paginator.total_pages > 1 %} + + {% endif %} +
    +
    diff --git a/css/all.css b/css/all.css deleted file mode 100644 index f0009cb..0000000 --- a/css/all.css +++ /dev/null @@ -1,3953 +0,0 @@ -/*! - * Font Awesome Free 5.4.1 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */ -.fa, -.fas, -.far, -.fal, -.fab { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; } - -.fa-lg { - font-size: 1.33333em; - line-height: 0.75em; - vertical-align: -.0667em; } - -.fa-xs { - font-size: .75em; } - -.fa-sm { - font-size: .875em; } - -.fa-1x { - font-size: 1em; } - -.fa-2x { - font-size: 2em; } - -.fa-3x { - font-size: 3em; } - -.fa-4x { - font-size: 4em; } - -.fa-5x { - font-size: 5em; } - -.fa-6x { - font-size: 6em; } - -.fa-7x { - font-size: 7em; } - -.fa-8x { - font-size: 8em; } - -.fa-9x { - font-size: 9em; } - -.fa-10x { - font-size: 10em; } - -.fa-fw { - text-align: center; - width: 1.25em; } - -.fa-ul { - list-style-type: none; - margin-left: 2.5em; - padding-left: 0; } - .fa-ul > li { - position: relative; } - -.fa-li { - left: -2em; - position: absolute; - text-align: center; - width: 2em; - line-height: inherit; } - -.fa-border { - border: solid 0.08em #eee; - border-radius: .1em; - padding: .2em .25em .15em; } - -.fa-pull-left { - float: left; } - -.fa-pull-right { - float: right; } - -.fa.fa-pull-left, -.fas.fa-pull-left, -.far.fa-pull-left, -.fal.fa-pull-left, -.fab.fa-pull-left { - margin-right: .3em; } - -.fa.fa-pull-right, -.fas.fa-pull-right, -.far.fa-pull-right, -.fal.fa-pull-right, -.fab.fa-pull-right { - margin-left: .3em; } - -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; } - -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); } - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - -.fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); } - -.fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - transform: rotate(180deg); } - -.fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - transform: rotate(270deg); } - -.fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); } - -.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - transform: scale(1, -1); } - -.fa-flip-horizontal.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); } - -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - -webkit-filter: none; - filter: none; } - -.fa-stack { - display: inline-block; - height: 2em; - line-height: 2em; - position: relative; - vertical-align: middle; - width: 2em; } - -.fa-stack-1x, -.fa-stack-2x { - left: 0; - position: absolute; - text-align: center; - width: 100%; } - -.fa-stack-1x { - line-height: inherit; } - -.fa-stack-2x { - font-size: 2em; } - -.fa-inverse { - color: #fff; } - -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen -readers do not read off random characters that represent icons */ -.fa-500px:before { - content: "\f26e"; } - -.fa-accessible-icon:before { - content: "\f368"; } - -.fa-accusoft:before { - content: "\f369"; } - -.fa-acquisitions-incorporated:before { - content: "\f6af"; } - -.fa-ad:before { - content: "\f641"; } - -.fa-address-book:before { - content: "\f2b9"; } - -.fa-address-card:before { - content: "\f2bb"; } - -.fa-adjust:before { - content: "\f042"; } - -.fa-adn:before { - content: "\f170"; } - -.fa-adversal:before { - content: "\f36a"; } - -.fa-affiliatetheme:before { - content: "\f36b"; } - -.fa-air-freshener:before { - content: "\f5d0"; } - -.fa-algolia:before { - content: "\f36c"; } - -.fa-align-center:before { - content: "\f037"; } - -.fa-align-justify:before { - content: "\f039"; } - -.fa-align-left:before { - content: "\f036"; } - -.fa-align-right:before { - content: "\f038"; } - -.fa-alipay:before { - content: "\f642"; } - -.fa-allergies:before { - content: "\f461"; } - -.fa-amazon:before { - content: "\f270"; } - -.fa-amazon-pay:before { - content: "\f42c"; } - -.fa-ambulance:before { - content: "\f0f9"; } - -.fa-american-sign-language-interpreting:before { - content: "\f2a3"; } - -.fa-amilia:before { - content: "\f36d"; } - -.fa-anchor:before { - content: "\f13d"; } - -.fa-android:before { - content: "\f17b"; } - -.fa-angellist:before { - content: "\f209"; } - -.fa-angle-double-down:before { - content: "\f103"; } - -.fa-angle-double-left:before { - content: "\f100"; } - -.fa-angle-double-right:before { - content: "\f101"; } - -.fa-angle-double-up:before { - content: "\f102"; } - -.fa-angle-down:before { - content: "\f107"; } - -.fa-angle-left:before { - content: "\f104"; } - -.fa-angle-right:before { - content: "\f105"; } - -.fa-angle-up:before { - content: "\f106"; } - -.fa-angry:before { - content: "\f556"; } - -.fa-angrycreative:before { - content: "\f36e"; } - -.fa-angular:before { - content: "\f420"; } - -.fa-ankh:before { - content: "\f644"; } - -.fa-app-store:before { - content: "\f36f"; } - -.fa-app-store-ios:before { - content: "\f370"; } - -.fa-apper:before { - content: "\f371"; } - -.fa-apple:before { - content: "\f179"; } - -.fa-apple-alt:before { - content: "\f5d1"; } - -.fa-apple-pay:before { - content: "\f415"; } - -.fa-archive:before { - content: "\f187"; } - -.fa-archway:before { - content: "\f557"; } - -.fa-arrow-alt-circle-down:before { - content: "\f358"; } - -.fa-arrow-alt-circle-left:before { - content: "\f359"; } - -.fa-arrow-alt-circle-right:before { - content: "\f35a"; } - -.fa-arrow-alt-circle-up:before { - content: "\f35b"; } - -.fa-arrow-circle-down:before { - content: "\f0ab"; } - -.fa-arrow-circle-left:before { - content: "\f0a8"; } - -.fa-arrow-circle-right:before { - content: "\f0a9"; } - -.fa-arrow-circle-up:before { - content: "\f0aa"; } - -.fa-arrow-down:before { - content: "\f063"; } - -.fa-arrow-left:before { - content: "\f060"; } - -.fa-arrow-right:before { - content: "\f061"; } - -.fa-arrow-up:before { - content: "\f062"; } - -.fa-arrows-alt:before { - content: "\f0b2"; } - -.fa-arrows-alt-h:before { - content: "\f337"; } - -.fa-arrows-alt-v:before { - content: "\f338"; } - -.fa-assistive-listening-systems:before { - content: "\f2a2"; } - -.fa-asterisk:before { - content: "\f069"; } - -.fa-asymmetrik:before { - content: "\f372"; } - -.fa-at:before { - content: "\f1fa"; } - -.fa-atlas:before { - content: "\f558"; } - -.fa-atom:before { - content: "\f5d2"; } - -.fa-audible:before { - content: "\f373"; } - -.fa-audio-description:before { - content: "\f29e"; } - -.fa-autoprefixer:before { - content: "\f41c"; } - -.fa-avianex:before { - content: "\f374"; } - -.fa-aviato:before { - content: "\f421"; } - -.fa-award:before { - content: "\f559"; } - -.fa-aws:before { - content: "\f375"; } - -.fa-backspace:before { - content: "\f55a"; } - -.fa-backward:before { - content: "\f04a"; } - -.fa-balance-scale:before { - content: "\f24e"; } - -.fa-ban:before { - content: "\f05e"; } - -.fa-band-aid:before { - content: "\f462"; } - -.fa-bandcamp:before { - content: "\f2d5"; } - -.fa-barcode:before { - content: "\f02a"; } - -.fa-bars:before { - content: "\f0c9"; } - -.fa-baseball-ball:before { - content: "\f433"; } - -.fa-basketball-ball:before { - content: "\f434"; } - -.fa-bath:before { - content: "\f2cd"; } - -.fa-battery-empty:before { - content: "\f244"; } - -.fa-battery-full:before { - content: "\f240"; } - -.fa-battery-half:before { - content: "\f242"; } - -.fa-battery-quarter:before { - content: "\f243"; } - -.fa-battery-three-quarters:before { - content: "\f241"; } - -.fa-bed:before { - content: "\f236"; } - -.fa-beer:before { - content: "\f0fc"; } - -.fa-behance:before { - content: "\f1b4"; } - -.fa-behance-square:before { - content: "\f1b5"; } - -.fa-bell:before { - content: "\f0f3"; } - -.fa-bell-slash:before { - content: "\f1f6"; } - -.fa-bezier-curve:before { - content: "\f55b"; } - -.fa-bible:before { - content: "\f647"; } - -.fa-bicycle:before { - content: "\f206"; } - -.fa-bimobject:before { - content: "\f378"; } - -.fa-binoculars:before { - content: "\f1e5"; } - -.fa-birthday-cake:before { - content: "\f1fd"; } - -.fa-bitbucket:before { - content: "\f171"; } - -.fa-bitcoin:before { - content: "\f379"; } - -.fa-bity:before { - content: "\f37a"; } - -.fa-black-tie:before { - content: "\f27e"; } - -.fa-blackberry:before { - content: "\f37b"; } - -.fa-blender:before { - content: "\f517"; } - -.fa-blender-phone:before { - content: "\f6b6"; } - -.fa-blind:before { - content: "\f29d"; } - -.fa-blogger:before { - content: "\f37c"; } - -.fa-blogger-b:before { - content: "\f37d"; } - -.fa-bluetooth:before { - content: "\f293"; } - -.fa-bluetooth-b:before { - content: "\f294"; } - -.fa-bold:before { - content: "\f032"; } - -.fa-bolt:before { - content: "\f0e7"; } - -.fa-bomb:before { - content: "\f1e2"; } - -.fa-bone:before { - content: "\f5d7"; } - -.fa-bong:before { - content: "\f55c"; } - -.fa-book:before { - content: "\f02d"; } - -.fa-book-dead:before { - content: "\f6b7"; } - -.fa-book-open:before { - content: "\f518"; } - -.fa-book-reader:before { - content: "\f5da"; } - -.fa-bookmark:before { - content: "\f02e"; } - -.fa-bowling-ball:before { - content: "\f436"; } - -.fa-box:before { - content: "\f466"; } - -.fa-box-open:before { - content: "\f49e"; } - -.fa-boxes:before { - content: "\f468"; } - -.fa-braille:before { - content: "\f2a1"; } - -.fa-brain:before { - content: "\f5dc"; } - -.fa-briefcase:before { - content: "\f0b1"; } - -.fa-briefcase-medical:before { - content: "\f469"; } - -.fa-broadcast-tower:before { - content: "\f519"; } - -.fa-broom:before { - content: "\f51a"; } - -.fa-brush:before { - content: "\f55d"; } - -.fa-btc:before { - content: "\f15a"; } - -.fa-bug:before { - content: "\f188"; } - -.fa-building:before { - content: "\f1ad"; } - -.fa-bullhorn:before { - content: "\f0a1"; } - -.fa-bullseye:before { - content: "\f140"; } - -.fa-burn:before { - content: "\f46a"; } - -.fa-buromobelexperte:before { - content: "\f37f"; } - -.fa-bus:before { - content: "\f207"; } - -.fa-bus-alt:before { - content: "\f55e"; } - -.fa-business-time:before { - content: "\f64a"; } - -.fa-buysellads:before { - content: "\f20d"; } - -.fa-calculator:before { - content: "\f1ec"; } - -.fa-calendar:before { - content: "\f133"; } - -.fa-calendar-alt:before { - content: "\f073"; } - -.fa-calendar-check:before { - content: "\f274"; } - -.fa-calendar-minus:before { - content: "\f272"; } - -.fa-calendar-plus:before { - content: "\f271"; } - -.fa-calendar-times:before { - content: "\f273"; } - -.fa-camera:before { - content: "\f030"; } - -.fa-camera-retro:before { - content: "\f083"; } - -.fa-campground:before { - content: "\f6bb"; } - -.fa-cannabis:before { - content: "\f55f"; } - -.fa-capsules:before { - content: "\f46b"; } - -.fa-car:before { - content: "\f1b9"; } - -.fa-car-alt:before { - content: "\f5de"; } - -.fa-car-battery:before { - content: "\f5df"; } - -.fa-car-crash:before { - content: "\f5e1"; } - -.fa-car-side:before { - content: "\f5e4"; } - -.fa-caret-down:before { - content: "\f0d7"; } - -.fa-caret-left:before { - content: "\f0d9"; } - -.fa-caret-right:before { - content: "\f0da"; } - -.fa-caret-square-down:before { - content: "\f150"; } - -.fa-caret-square-left:before { - content: "\f191"; } - -.fa-caret-square-right:before { - content: "\f152"; } - -.fa-caret-square-up:before { - content: "\f151"; } - -.fa-caret-up:before { - content: "\f0d8"; } - -.fa-cart-arrow-down:before { - content: "\f218"; } - -.fa-cart-plus:before { - content: "\f217"; } - -.fa-cat:before { - content: "\f6be"; } - -.fa-cc-amazon-pay:before { - content: "\f42d"; } - -.fa-cc-amex:before { - content: "\f1f3"; } - -.fa-cc-apple-pay:before { - content: "\f416"; } - -.fa-cc-diners-club:before { - content: "\f24c"; } - -.fa-cc-discover:before { - content: "\f1f2"; } - -.fa-cc-jcb:before { - content: "\f24b"; } - -.fa-cc-mastercard:before { - content: "\f1f1"; } - -.fa-cc-paypal:before { - content: "\f1f4"; } - -.fa-cc-stripe:before { - content: "\f1f5"; } - -.fa-cc-visa:before { - content: "\f1f0"; } - -.fa-centercode:before { - content: "\f380"; } - -.fa-certificate:before { - content: "\f0a3"; } - -.fa-chair:before { - content: "\f6c0"; } - -.fa-chalkboard:before { - content: "\f51b"; } - -.fa-chalkboard-teacher:before { - content: "\f51c"; } - -.fa-charging-station:before { - content: "\f5e7"; } - -.fa-chart-area:before { - content: "\f1fe"; } - -.fa-chart-bar:before { - content: "\f080"; } - -.fa-chart-line:before { - content: "\f201"; } - -.fa-chart-pie:before { - content: "\f200"; } - -.fa-check:before { - content: "\f00c"; } - -.fa-check-circle:before { - content: "\f058"; } - -.fa-check-double:before { - content: "\f560"; } - -.fa-check-square:before { - content: "\f14a"; } - -.fa-chess:before { - content: "\f439"; } - -.fa-chess-bishop:before { - content: "\f43a"; } - -.fa-chess-board:before { - content: "\f43c"; } - -.fa-chess-king:before { - content: "\f43f"; } - -.fa-chess-knight:before { - content: "\f441"; } - -.fa-chess-pawn:before { - content: "\f443"; } - -.fa-chess-queen:before { - content: "\f445"; } - -.fa-chess-rook:before { - content: "\f447"; } - -.fa-chevron-circle-down:before { - content: "\f13a"; } - -.fa-chevron-circle-left:before { - content: "\f137"; } - -.fa-chevron-circle-right:before { - content: "\f138"; } - -.fa-chevron-circle-up:before { - content: "\f139"; } - -.fa-chevron-down:before { - content: "\f078"; } - -.fa-chevron-left:before { - content: "\f053"; } - -.fa-chevron-right:before { - content: "\f054"; } - -.fa-chevron-up:before { - content: "\f077"; } - -.fa-child:before { - content: "\f1ae"; } - -.fa-chrome:before { - content: "\f268"; } - -.fa-church:before { - content: "\f51d"; } - -.fa-circle:before { - content: "\f111"; } - -.fa-circle-notch:before { - content: "\f1ce"; } - -.fa-city:before { - content: "\f64f"; } - -.fa-clipboard:before { - content: "\f328"; } - -.fa-clipboard-check:before { - content: "\f46c"; } - -.fa-clipboard-list:before { - content: "\f46d"; } - -.fa-clock:before { - content: "\f017"; } - -.fa-clone:before { - content: "\f24d"; } - -.fa-closed-captioning:before { - content: "\f20a"; } - -.fa-cloud:before { - content: "\f0c2"; } - -.fa-cloud-download-alt:before { - content: "\f381"; } - -.fa-cloud-moon:before { - content: "\f6c3"; } - -.fa-cloud-sun:before { - content: "\f6c4"; } - -.fa-cloud-upload-alt:before { - content: "\f382"; } - -.fa-cloudscale:before { - content: "\f383"; } - -.fa-cloudsmith:before { - content: "\f384"; } - -.fa-cloudversify:before { - content: "\f385"; } - -.fa-cocktail:before { - content: "\f561"; } - -.fa-code:before { - content: "\f121"; } - -.fa-code-branch:before { - content: "\f126"; } - -.fa-codepen:before { - content: "\f1cb"; } - -.fa-codiepie:before { - content: "\f284"; } - -.fa-coffee:before { - content: "\f0f4"; } - -.fa-cog:before { - content: "\f013"; } - -.fa-cogs:before { - content: "\f085"; } - -.fa-coins:before { - content: "\f51e"; } - -.fa-columns:before { - content: "\f0db"; } - -.fa-comment:before { - content: "\f075"; } - -.fa-comment-alt:before { - content: "\f27a"; } - -.fa-comment-dollar:before { - content: "\f651"; } - -.fa-comment-dots:before { - content: "\f4ad"; } - -.fa-comment-slash:before { - content: "\f4b3"; } - -.fa-comments:before { - content: "\f086"; } - -.fa-comments-dollar:before { - content: "\f653"; } - -.fa-compact-disc:before { - content: "\f51f"; } - -.fa-compass:before { - content: "\f14e"; } - -.fa-compress:before { - content: "\f066"; } - -.fa-concierge-bell:before { - content: "\f562"; } - -.fa-connectdevelop:before { - content: "\f20e"; } - -.fa-contao:before { - content: "\f26d"; } - -.fa-cookie:before { - content: "\f563"; } - -.fa-cookie-bite:before { - content: "\f564"; } - -.fa-copy:before { - content: "\f0c5"; } - -.fa-copyright:before { - content: "\f1f9"; } - -.fa-couch:before { - content: "\f4b8"; } - -.fa-cpanel:before { - content: "\f388"; } - -.fa-creative-commons:before { - content: "\f25e"; } - -.fa-creative-commons-by:before { - content: "\f4e7"; } - -.fa-creative-commons-nc:before { - content: "\f4e8"; } - -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; } - -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; } - -.fa-creative-commons-nd:before { - content: "\f4eb"; } - -.fa-creative-commons-pd:before { - content: "\f4ec"; } - -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; } - -.fa-creative-commons-remix:before { - content: "\f4ee"; } - -.fa-creative-commons-sa:before { - content: "\f4ef"; } - -.fa-creative-commons-sampling:before { - content: "\f4f0"; } - -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; } - -.fa-creative-commons-share:before { - content: "\f4f2"; } - -.fa-creative-commons-zero:before { - content: "\f4f3"; } - -.fa-credit-card:before { - content: "\f09d"; } - -.fa-critical-role:before { - content: "\f6c9"; } - -.fa-crop:before { - content: "\f125"; } - -.fa-crop-alt:before { - content: "\f565"; } - -.fa-cross:before { - content: "\f654"; } - -.fa-crosshairs:before { - content: "\f05b"; } - -.fa-crow:before { - content: "\f520"; } - -.fa-crown:before { - content: "\f521"; } - -.fa-css3:before { - content: "\f13c"; } - -.fa-css3-alt:before { - content: "\f38b"; } - -.fa-cube:before { - content: "\f1b2"; } - -.fa-cubes:before { - content: "\f1b3"; } - -.fa-cut:before { - content: "\f0c4"; } - -.fa-cuttlefish:before { - content: "\f38c"; } - -.fa-d-and-d:before { - content: "\f38d"; } - -.fa-dashcube:before { - content: "\f210"; } - -.fa-database:before { - content: "\f1c0"; } - -.fa-deaf:before { - content: "\f2a4"; } - -.fa-delicious:before { - content: "\f1a5"; } - -.fa-deploydog:before { - content: "\f38e"; } - -.fa-deskpro:before { - content: "\f38f"; } - -.fa-desktop:before { - content: "\f108"; } - -.fa-dev:before { - content: "\f6cc"; } - -.fa-deviantart:before { - content: "\f1bd"; } - -.fa-dharmachakra:before { - content: "\f655"; } - -.fa-diagnoses:before { - content: "\f470"; } - -.fa-dice:before { - content: "\f522"; } - -.fa-dice-d20:before { - content: "\f6cf"; } - -.fa-dice-d6:before { - content: "\f6d1"; } - -.fa-dice-five:before { - content: "\f523"; } - -.fa-dice-four:before { - content: "\f524"; } - -.fa-dice-one:before { - content: "\f525"; } - -.fa-dice-six:before { - content: "\f526"; } - -.fa-dice-three:before { - content: "\f527"; } - -.fa-dice-two:before { - content: "\f528"; } - -.fa-digg:before { - content: "\f1a6"; } - -.fa-digital-ocean:before { - content: "\f391"; } - -.fa-digital-tachograph:before { - content: "\f566"; } - -.fa-directions:before { - content: "\f5eb"; } - -.fa-discord:before { - content: "\f392"; } - -.fa-discourse:before { - content: "\f393"; } - -.fa-divide:before { - content: "\f529"; } - -.fa-dizzy:before { - content: "\f567"; } - -.fa-dna:before { - content: "\f471"; } - -.fa-dochub:before { - content: "\f394"; } - -.fa-docker:before { - content: "\f395"; } - -.fa-dog:before { - content: "\f6d3"; } - -.fa-dollar-sign:before { - content: "\f155"; } - -.fa-dolly:before { - content: "\f472"; } - -.fa-dolly-flatbed:before { - content: "\f474"; } - -.fa-donate:before { - content: "\f4b9"; } - -.fa-door-closed:before { - content: "\f52a"; } - -.fa-door-open:before { - content: "\f52b"; } - -.fa-dot-circle:before { - content: "\f192"; } - -.fa-dove:before { - content: "\f4ba"; } - -.fa-download:before { - content: "\f019"; } - -.fa-draft2digital:before { - content: "\f396"; } - -.fa-drafting-compass:before { - content: "\f568"; } - -.fa-dragon:before { - content: "\f6d5"; } - -.fa-draw-polygon:before { - content: "\f5ee"; } - -.fa-dribbble:before { - content: "\f17d"; } - -.fa-dribbble-square:before { - content: "\f397"; } - -.fa-dropbox:before { - content: "\f16b"; } - -.fa-drum:before { - content: "\f569"; } - -.fa-drum-steelpan:before { - content: "\f56a"; } - -.fa-drumstick-bite:before { - content: "\f6d7"; } - -.fa-drupal:before { - content: "\f1a9"; } - -.fa-dumbbell:before { - content: "\f44b"; } - -.fa-dungeon:before { - content: "\f6d9"; } - -.fa-dyalog:before { - content: "\f399"; } - -.fa-earlybirds:before { - content: "\f39a"; } - -.fa-ebay:before { - content: "\f4f4"; } - -.fa-edge:before { - content: "\f282"; } - -.fa-edit:before { - content: "\f044"; } - -.fa-eject:before { - content: "\f052"; } - -.fa-elementor:before { - content: "\f430"; } - -.fa-ellipsis-h:before { - content: "\f141"; } - -.fa-ellipsis-v:before { - content: "\f142"; } - -.fa-ello:before { - content: "\f5f1"; } - -.fa-ember:before { - content: "\f423"; } - -.fa-empire:before { - content: "\f1d1"; } - -.fa-envelope:before { - content: "\f0e0"; } - -.fa-envelope-open:before { - content: "\f2b6"; } - -.fa-envelope-open-text:before { - content: "\f658"; } - -.fa-envelope-square:before { - content: "\f199"; } - -.fa-envira:before { - content: "\f299"; } - -.fa-equals:before { - content: "\f52c"; } - -.fa-eraser:before { - content: "\f12d"; } - -.fa-erlang:before { - content: "\f39d"; } - -.fa-ethereum:before { - content: "\f42e"; } - -.fa-etsy:before { - content: "\f2d7"; } - -.fa-euro-sign:before { - content: "\f153"; } - -.fa-exchange-alt:before { - content: "\f362"; } - -.fa-exclamation:before { - content: "\f12a"; } - -.fa-exclamation-circle:before { - content: "\f06a"; } - -.fa-exclamation-triangle:before { - content: "\f071"; } - -.fa-expand:before { - content: "\f065"; } - -.fa-expand-arrows-alt:before { - content: "\f31e"; } - -.fa-expeditedssl:before { - content: "\f23e"; } - -.fa-external-link-alt:before { - content: "\f35d"; } - -.fa-external-link-square-alt:before { - content: "\f360"; } - -.fa-eye:before { - content: "\f06e"; } - -.fa-eye-dropper:before { - content: "\f1fb"; } - -.fa-eye-slash:before { - content: "\f070"; } - -.fa-facebook:before { - content: "\f09a"; } - -.fa-facebook-f:before { - content: "\f39e"; } - -.fa-facebook-messenger:before { - content: "\f39f"; } - -.fa-facebook-square:before { - content: "\f082"; } - -.fa-fantasy-flight-games:before { - content: "\f6dc"; } - -.fa-fast-backward:before { - content: "\f049"; } - -.fa-fast-forward:before { - content: "\f050"; } - -.fa-fax:before { - content: "\f1ac"; } - -.fa-feather:before { - content: "\f52d"; } - -.fa-feather-alt:before { - content: "\f56b"; } - -.fa-female:before { - content: "\f182"; } - -.fa-fighter-jet:before { - content: "\f0fb"; } - -.fa-file:before { - content: "\f15b"; } - -.fa-file-alt:before { - content: "\f15c"; } - -.fa-file-archive:before { - content: "\f1c6"; } - -.fa-file-audio:before { - content: "\f1c7"; } - -.fa-file-code:before { - content: "\f1c9"; } - -.fa-file-contract:before { - content: "\f56c"; } - -.fa-file-csv:before { - content: "\f6dd"; } - -.fa-file-download:before { - content: "\f56d"; } - -.fa-file-excel:before { - content: "\f1c3"; } - -.fa-file-export:before { - content: "\f56e"; } - -.fa-file-image:before { - content: "\f1c5"; } - -.fa-file-import:before { - content: "\f56f"; } - -.fa-file-invoice:before { - content: "\f570"; } - -.fa-file-invoice-dollar:before { - content: "\f571"; } - -.fa-file-medical:before { - content: "\f477"; } - -.fa-file-medical-alt:before { - content: "\f478"; } - -.fa-file-pdf:before { - content: "\f1c1"; } - -.fa-file-powerpoint:before { - content: "\f1c4"; } - -.fa-file-prescription:before { - content: "\f572"; } - -.fa-file-signature:before { - content: "\f573"; } - -.fa-file-upload:before { - content: "\f574"; } - -.fa-file-video:before { - content: "\f1c8"; } - -.fa-file-word:before { - content: "\f1c2"; } - -.fa-fill:before { - content: "\f575"; } - -.fa-fill-drip:before { - content: "\f576"; } - -.fa-film:before { - content: "\f008"; } - -.fa-filter:before { - content: "\f0b0"; } - -.fa-fingerprint:before { - content: "\f577"; } - -.fa-fire:before { - content: "\f06d"; } - -.fa-fire-extinguisher:before { - content: "\f134"; } - -.fa-firefox:before { - content: "\f269"; } - -.fa-first-aid:before { - content: "\f479"; } - -.fa-first-order:before { - content: "\f2b0"; } - -.fa-first-order-alt:before { - content: "\f50a"; } - -.fa-firstdraft:before { - content: "\f3a1"; } - -.fa-fish:before { - content: "\f578"; } - -.fa-fist-raised:before { - content: "\f6de"; } - -.fa-flag:before { - content: "\f024"; } - -.fa-flag-checkered:before { - content: "\f11e"; } - -.fa-flask:before { - content: "\f0c3"; } - -.fa-flickr:before { - content: "\f16e"; } - -.fa-flipboard:before { - content: "\f44d"; } - -.fa-flushed:before { - content: "\f579"; } - -.fa-fly:before { - content: "\f417"; } - -.fa-folder:before { - content: "\f07b"; } - -.fa-folder-minus:before { - content: "\f65d"; } - -.fa-folder-open:before { - content: "\f07c"; } - -.fa-folder-plus:before { - content: "\f65e"; } - -.fa-font:before { - content: "\f031"; } - -.fa-font-awesome:before { - content: "\f2b4"; } - -.fa-font-awesome-alt:before { - content: "\f35c"; } - -.fa-font-awesome-flag:before { - content: "\f425"; } - -.fa-font-awesome-logo-full:before { - content: "\f4e6"; } - -.fa-fonticons:before { - content: "\f280"; } - -.fa-fonticons-fi:before { - content: "\f3a2"; } - -.fa-football-ball:before { - content: "\f44e"; } - -.fa-fort-awesome:before { - content: "\f286"; } - -.fa-fort-awesome-alt:before { - content: "\f3a3"; } - -.fa-forumbee:before { - content: "\f211"; } - -.fa-forward:before { - content: "\f04e"; } - -.fa-foursquare:before { - content: "\f180"; } - -.fa-free-code-camp:before { - content: "\f2c5"; } - -.fa-freebsd:before { - content: "\f3a4"; } - -.fa-frog:before { - content: "\f52e"; } - -.fa-frown:before { - content: "\f119"; } - -.fa-frown-open:before { - content: "\f57a"; } - -.fa-fulcrum:before { - content: "\f50b"; } - -.fa-funnel-dollar:before { - content: "\f662"; } - -.fa-futbol:before { - content: "\f1e3"; } - -.fa-galactic-republic:before { - content: "\f50c"; } - -.fa-galactic-senate:before { - content: "\f50d"; } - -.fa-gamepad:before { - content: "\f11b"; } - -.fa-gas-pump:before { - content: "\f52f"; } - -.fa-gavel:before { - content: "\f0e3"; } - -.fa-gem:before { - content: "\f3a5"; } - -.fa-genderless:before { - content: "\f22d"; } - -.fa-get-pocket:before { - content: "\f265"; } - -.fa-gg:before { - content: "\f260"; } - -.fa-gg-circle:before { - content: "\f261"; } - -.fa-ghost:before { - content: "\f6e2"; } - -.fa-gift:before { - content: "\f06b"; } - -.fa-git:before { - content: "\f1d3"; } - -.fa-git-square:before { - content: "\f1d2"; } - -.fa-github:before { - content: "\f09b"; } - -.fa-github-alt:before { - content: "\f113"; } - -.fa-github-square:before { - content: "\f092"; } - -.fa-gitkraken:before { - content: "\f3a6"; } - -.fa-gitlab:before { - content: "\f296"; } - -.fa-gitter:before { - content: "\f426"; } - -.fa-glass-martini:before { - content: "\f000"; } - -.fa-glass-martini-alt:before { - content: "\f57b"; } - -.fa-glasses:before { - content: "\f530"; } - -.fa-glide:before { - content: "\f2a5"; } - -.fa-glide-g:before { - content: "\f2a6"; } - -.fa-globe:before { - content: "\f0ac"; } - -.fa-globe-africa:before { - content: "\f57c"; } - -.fa-globe-americas:before { - content: "\f57d"; } - -.fa-globe-asia:before { - content: "\f57e"; } - -.fa-gofore:before { - content: "\f3a7"; } - -.fa-golf-ball:before { - content: "\f450"; } - -.fa-goodreads:before { - content: "\f3a8"; } - -.fa-goodreads-g:before { - content: "\f3a9"; } - -.fa-google:before { - content: "\f1a0"; } - -.fa-google-drive:before { - content: "\f3aa"; } - -.fa-google-play:before { - content: "\f3ab"; } - -.fa-google-plus:before { - content: "\f2b3"; } - -.fa-google-plus-g:before { - content: "\f0d5"; } - -.fa-google-plus-square:before { - content: "\f0d4"; } - -.fa-google-wallet:before { - content: "\f1ee"; } - -.fa-gopuram:before { - content: "\f664"; } - -.fa-graduation-cap:before { - content: "\f19d"; } - -.fa-gratipay:before { - content: "\f184"; } - -.fa-grav:before { - content: "\f2d6"; } - -.fa-greater-than:before { - content: "\f531"; } - -.fa-greater-than-equal:before { - content: "\f532"; } - -.fa-grimace:before { - content: "\f57f"; } - -.fa-grin:before { - content: "\f580"; } - -.fa-grin-alt:before { - content: "\f581"; } - -.fa-grin-beam:before { - content: "\f582"; } - -.fa-grin-beam-sweat:before { - content: "\f583"; } - -.fa-grin-hearts:before { - content: "\f584"; } - -.fa-grin-squint:before { - content: "\f585"; } - -.fa-grin-squint-tears:before { - content: "\f586"; } - -.fa-grin-stars:before { - content: "\f587"; } - -.fa-grin-tears:before { - content: "\f588"; } - -.fa-grin-tongue:before { - content: "\f589"; } - -.fa-grin-tongue-squint:before { - content: "\f58a"; } - -.fa-grin-tongue-wink:before { - content: "\f58b"; } - -.fa-grin-wink:before { - content: "\f58c"; } - -.fa-grip-horizontal:before { - content: "\f58d"; } - -.fa-grip-vertical:before { - content: "\f58e"; } - -.fa-gripfire:before { - content: "\f3ac"; } - -.fa-grunt:before { - content: "\f3ad"; } - -.fa-gulp:before { - content: "\f3ae"; } - -.fa-h-square:before { - content: "\f0fd"; } - -.fa-hacker-news:before { - content: "\f1d4"; } - -.fa-hacker-news-square:before { - content: "\f3af"; } - -.fa-hackerrank:before { - content: "\f5f7"; } - -.fa-hammer:before { - content: "\f6e3"; } - -.fa-hamsa:before { - content: "\f665"; } - -.fa-hand-holding:before { - content: "\f4bd"; } - -.fa-hand-holding-heart:before { - content: "\f4be"; } - -.fa-hand-holding-usd:before { - content: "\f4c0"; } - -.fa-hand-lizard:before { - content: "\f258"; } - -.fa-hand-paper:before { - content: "\f256"; } - -.fa-hand-peace:before { - content: "\f25b"; } - -.fa-hand-point-down:before { - content: "\f0a7"; } - -.fa-hand-point-left:before { - content: "\f0a5"; } - -.fa-hand-point-right:before { - content: "\f0a4"; } - -.fa-hand-point-up:before { - content: "\f0a6"; } - -.fa-hand-pointer:before { - content: "\f25a"; } - -.fa-hand-rock:before { - content: "\f255"; } - -.fa-hand-scissors:before { - content: "\f257"; } - -.fa-hand-spock:before { - content: "\f259"; } - -.fa-hands:before { - content: "\f4c2"; } - -.fa-hands-helping:before { - content: "\f4c4"; } - -.fa-handshake:before { - content: "\f2b5"; } - -.fa-hanukiah:before { - content: "\f6e6"; } - -.fa-hashtag:before { - content: "\f292"; } - -.fa-hat-wizard:before { - content: "\f6e8"; } - -.fa-haykal:before { - content: "\f666"; } - -.fa-hdd:before { - content: "\f0a0"; } - -.fa-heading:before { - content: "\f1dc"; } - -.fa-headphones:before { - content: "\f025"; } - -.fa-headphones-alt:before { - content: "\f58f"; } - -.fa-headset:before { - content: "\f590"; } - -.fa-heart:before { - content: "\f004"; } - -.fa-heartbeat:before { - content: "\f21e"; } - -.fa-helicopter:before { - content: "\f533"; } - -.fa-highlighter:before { - content: "\f591"; } - -.fa-hiking:before { - content: "\f6ec"; } - -.fa-hippo:before { - content: "\f6ed"; } - -.fa-hips:before { - content: "\f452"; } - -.fa-hire-a-helper:before { - content: "\f3b0"; } - -.fa-history:before { - content: "\f1da"; } - -.fa-hockey-puck:before { - content: "\f453"; } - -.fa-home:before { - content: "\f015"; } - -.fa-hooli:before { - content: "\f427"; } - -.fa-hornbill:before { - content: "\f592"; } - -.fa-horse:before { - content: "\f6f0"; } - -.fa-hospital:before { - content: "\f0f8"; } - -.fa-hospital-alt:before { - content: "\f47d"; } - -.fa-hospital-symbol:before { - content: "\f47e"; } - -.fa-hot-tub:before { - content: "\f593"; } - -.fa-hotel:before { - content: "\f594"; } - -.fa-hotjar:before { - content: "\f3b1"; } - -.fa-hourglass:before { - content: "\f254"; } - -.fa-hourglass-end:before { - content: "\f253"; } - -.fa-hourglass-half:before { - content: "\f252"; } - -.fa-hourglass-start:before { - content: "\f251"; } - -.fa-house-damage:before { - content: "\f6f1"; } - -.fa-houzz:before { - content: "\f27c"; } - -.fa-hryvnia:before { - content: "\f6f2"; } - -.fa-html5:before { - content: "\f13b"; } - -.fa-hubspot:before { - content: "\f3b2"; } - -.fa-i-cursor:before { - content: "\f246"; } - -.fa-id-badge:before { - content: "\f2c1"; } - -.fa-id-card:before { - content: "\f2c2"; } - -.fa-id-card-alt:before { - content: "\f47f"; } - -.fa-image:before { - content: "\f03e"; } - -.fa-images:before { - content: "\f302"; } - -.fa-imdb:before { - content: "\f2d8"; } - -.fa-inbox:before { - content: "\f01c"; } - -.fa-indent:before { - content: "\f03c"; } - -.fa-industry:before { - content: "\f275"; } - -.fa-infinity:before { - content: "\f534"; } - -.fa-info:before { - content: "\f129"; } - -.fa-info-circle:before { - content: "\f05a"; } - -.fa-instagram:before { - content: "\f16d"; } - -.fa-internet-explorer:before { - content: "\f26b"; } - -.fa-ioxhost:before { - content: "\f208"; } - -.fa-italic:before { - content: "\f033"; } - -.fa-itunes:before { - content: "\f3b4"; } - -.fa-itunes-note:before { - content: "\f3b5"; } - -.fa-java:before { - content: "\f4e4"; } - -.fa-jedi:before { - content: "\f669"; } - -.fa-jedi-order:before { - content: "\f50e"; } - -.fa-jenkins:before { - content: "\f3b6"; } - -.fa-joget:before { - content: "\f3b7"; } - -.fa-joint:before { - content: "\f595"; } - -.fa-joomla:before { - content: "\f1aa"; } - -.fa-journal-whills:before { - content: "\f66a"; } - -.fa-js:before { - content: "\f3b8"; } - -.fa-js-square:before { - content: "\f3b9"; } - -.fa-jsfiddle:before { - content: "\f1cc"; } - -.fa-kaaba:before { - content: "\f66b"; } - -.fa-kaggle:before { - content: "\f5fa"; } - -.fa-key:before { - content: "\f084"; } - -.fa-keybase:before { - content: "\f4f5"; } - -.fa-keyboard:before { - content: "\f11c"; } - -.fa-keycdn:before { - content: "\f3ba"; } - -.fa-khanda:before { - content: "\f66d"; } - -.fa-kickstarter:before { - content: "\f3bb"; } - -.fa-kickstarter-k:before { - content: "\f3bc"; } - -.fa-kiss:before { - content: "\f596"; } - -.fa-kiss-beam:before { - content: "\f597"; } - -.fa-kiss-wink-heart:before { - content: "\f598"; } - -.fa-kiwi-bird:before { - content: "\f535"; } - -.fa-korvue:before { - content: "\f42f"; } - -.fa-landmark:before { - content: "\f66f"; } - -.fa-language:before { - content: "\f1ab"; } - -.fa-laptop:before { - content: "\f109"; } - -.fa-laptop-code:before { - content: "\f5fc"; } - -.fa-laravel:before { - content: "\f3bd"; } - -.fa-lastfm:before { - content: "\f202"; } - -.fa-lastfm-square:before { - content: "\f203"; } - -.fa-laugh:before { - content: "\f599"; } - -.fa-laugh-beam:before { - content: "\f59a"; } - -.fa-laugh-squint:before { - content: "\f59b"; } - -.fa-laugh-wink:before { - content: "\f59c"; } - -.fa-layer-group:before { - content: "\f5fd"; } - -.fa-leaf:before { - content: "\f06c"; } - -.fa-leanpub:before { - content: "\f212"; } - -.fa-lemon:before { - content: "\f094"; } - -.fa-less:before { - content: "\f41d"; } - -.fa-less-than:before { - content: "\f536"; } - -.fa-less-than-equal:before { - content: "\f537"; } - -.fa-level-down-alt:before { - content: "\f3be"; } - -.fa-level-up-alt:before { - content: "\f3bf"; } - -.fa-life-ring:before { - content: "\f1cd"; } - -.fa-lightbulb:before { - content: "\f0eb"; } - -.fa-line:before { - content: "\f3c0"; } - -.fa-link:before { - content: "\f0c1"; } - -.fa-linkedin:before { - content: "\f08c"; } - -.fa-linkedin-in:before { - content: "\f0e1"; } - -.fa-linode:before { - content: "\f2b8"; } - -.fa-linux:before { - content: "\f17c"; } - -.fa-lira-sign:before { - content: "\f195"; } - -.fa-list:before { - content: "\f03a"; } - -.fa-list-alt:before { - content: "\f022"; } - -.fa-list-ol:before { - content: "\f0cb"; } - -.fa-list-ul:before { - content: "\f0ca"; } - -.fa-location-arrow:before { - content: "\f124"; } - -.fa-lock:before { - content: "\f023"; } - -.fa-lock-open:before { - content: "\f3c1"; } - -.fa-long-arrow-alt-down:before { - content: "\f309"; } - -.fa-long-arrow-alt-left:before { - content: "\f30a"; } - -.fa-long-arrow-alt-right:before { - content: "\f30b"; } - -.fa-long-arrow-alt-up:before { - content: "\f30c"; } - -.fa-low-vision:before { - content: "\f2a8"; } - -.fa-luggage-cart:before { - content: "\f59d"; } - -.fa-lyft:before { - content: "\f3c3"; } - -.fa-magento:before { - content: "\f3c4"; } - -.fa-magic:before { - content: "\f0d0"; } - -.fa-magnet:before { - content: "\f076"; } - -.fa-mail-bulk:before { - content: "\f674"; } - -.fa-mailchimp:before { - content: "\f59e"; } - -.fa-male:before { - content: "\f183"; } - -.fa-mandalorian:before { - content: "\f50f"; } - -.fa-map:before { - content: "\f279"; } - -.fa-map-marked:before { - content: "\f59f"; } - -.fa-map-marked-alt:before { - content: "\f5a0"; } - -.fa-map-marker:before { - content: "\f041"; } - -.fa-map-marker-alt:before { - content: "\f3c5"; } - -.fa-map-pin:before { - content: "\f276"; } - -.fa-map-signs:before { - content: "\f277"; } - -.fa-markdown:before { - content: "\f60f"; } - -.fa-marker:before { - content: "\f5a1"; } - -.fa-mars:before { - content: "\f222"; } - -.fa-mars-double:before { - content: "\f227"; } - -.fa-mars-stroke:before { - content: "\f229"; } - -.fa-mars-stroke-h:before { - content: "\f22b"; } - -.fa-mars-stroke-v:before { - content: "\f22a"; } - -.fa-mask:before { - content: "\f6fa"; } - -.fa-mastodon:before { - content: "\f4f6"; } - -.fa-maxcdn:before { - content: "\f136"; } - -.fa-medal:before { - content: "\f5a2"; } - -.fa-medapps:before { - content: "\f3c6"; } - -.fa-medium:before { - content: "\f23a"; } - -.fa-medium-m:before { - content: "\f3c7"; } - -.fa-medkit:before { - content: "\f0fa"; } - -.fa-medrt:before { - content: "\f3c8"; } - -.fa-meetup:before { - content: "\f2e0"; } - -.fa-megaport:before { - content: "\f5a3"; } - -.fa-meh:before { - content: "\f11a"; } - -.fa-meh-blank:before { - content: "\f5a4"; } - -.fa-meh-rolling-eyes:before { - content: "\f5a5"; } - -.fa-memory:before { - content: "\f538"; } - -.fa-menorah:before { - content: "\f676"; } - -.fa-mercury:before { - content: "\f223"; } - -.fa-microchip:before { - content: "\f2db"; } - -.fa-microphone:before { - content: "\f130"; } - -.fa-microphone-alt:before { - content: "\f3c9"; } - -.fa-microphone-alt-slash:before { - content: "\f539"; } - -.fa-microphone-slash:before { - content: "\f131"; } - -.fa-microscope:before { - content: "\f610"; } - -.fa-microsoft:before { - content: "\f3ca"; } - -.fa-minus:before { - content: "\f068"; } - -.fa-minus-circle:before { - content: "\f056"; } - -.fa-minus-square:before { - content: "\f146"; } - -.fa-mix:before { - content: "\f3cb"; } - -.fa-mixcloud:before { - content: "\f289"; } - -.fa-mizuni:before { - content: "\f3cc"; } - -.fa-mobile:before { - content: "\f10b"; } - -.fa-mobile-alt:before { - content: "\f3cd"; } - -.fa-modx:before { - content: "\f285"; } - -.fa-monero:before { - content: "\f3d0"; } - -.fa-money-bill:before { - content: "\f0d6"; } - -.fa-money-bill-alt:before { - content: "\f3d1"; } - -.fa-money-bill-wave:before { - content: "\f53a"; } - -.fa-money-bill-wave-alt:before { - content: "\f53b"; } - -.fa-money-check:before { - content: "\f53c"; } - -.fa-money-check-alt:before { - content: "\f53d"; } - -.fa-monument:before { - content: "\f5a6"; } - -.fa-moon:before { - content: "\f186"; } - -.fa-mortar-pestle:before { - content: "\f5a7"; } - -.fa-mosque:before { - content: "\f678"; } - -.fa-motorcycle:before { - content: "\f21c"; } - -.fa-mountain:before { - content: "\f6fc"; } - -.fa-mouse-pointer:before { - content: "\f245"; } - -.fa-music:before { - content: "\f001"; } - -.fa-napster:before { - content: "\f3d2"; } - -.fa-neos:before { - content: "\f612"; } - -.fa-network-wired:before { - content: "\f6ff"; } - -.fa-neuter:before { - content: "\f22c"; } - -.fa-newspaper:before { - content: "\f1ea"; } - -.fa-nimblr:before { - content: "\f5a8"; } - -.fa-nintendo-switch:before { - content: "\f418"; } - -.fa-node:before { - content: "\f419"; } - -.fa-node-js:before { - content: "\f3d3"; } - -.fa-not-equal:before { - content: "\f53e"; } - -.fa-notes-medical:before { - content: "\f481"; } - -.fa-npm:before { - content: "\f3d4"; } - -.fa-ns8:before { - content: "\f3d5"; } - -.fa-nutritionix:before { - content: "\f3d6"; } - -.fa-object-group:before { - content: "\f247"; } - -.fa-object-ungroup:before { - content: "\f248"; } - -.fa-odnoklassniki:before { - content: "\f263"; } - -.fa-odnoklassniki-square:before { - content: "\f264"; } - -.fa-oil-can:before { - content: "\f613"; } - -.fa-old-republic:before { - content: "\f510"; } - -.fa-om:before { - content: "\f679"; } - -.fa-opencart:before { - content: "\f23d"; } - -.fa-openid:before { - content: "\f19b"; } - -.fa-opera:before { - content: "\f26a"; } - -.fa-optin-monster:before { - content: "\f23c"; } - -.fa-osi:before { - content: "\f41a"; } - -.fa-otter:before { - content: "\f700"; } - -.fa-outdent:before { - content: "\f03b"; } - -.fa-page4:before { - content: "\f3d7"; } - -.fa-pagelines:before { - content: "\f18c"; } - -.fa-paint-brush:before { - content: "\f1fc"; } - -.fa-paint-roller:before { - content: "\f5aa"; } - -.fa-palette:before { - content: "\f53f"; } - -.fa-palfed:before { - content: "\f3d8"; } - -.fa-pallet:before { - content: "\f482"; } - -.fa-paper-plane:before { - content: "\f1d8"; } - -.fa-paperclip:before { - content: "\f0c6"; } - -.fa-parachute-box:before { - content: "\f4cd"; } - -.fa-paragraph:before { - content: "\f1dd"; } - -.fa-parking:before { - content: "\f540"; } - -.fa-passport:before { - content: "\f5ab"; } - -.fa-pastafarianism:before { - content: "\f67b"; } - -.fa-paste:before { - content: "\f0ea"; } - -.fa-patreon:before { - content: "\f3d9"; } - -.fa-pause:before { - content: "\f04c"; } - -.fa-pause-circle:before { - content: "\f28b"; } - -.fa-paw:before { - content: "\f1b0"; } - -.fa-paypal:before { - content: "\f1ed"; } - -.fa-peace:before { - content: "\f67c"; } - -.fa-pen:before { - content: "\f304"; } - -.fa-pen-alt:before { - content: "\f305"; } - -.fa-pen-fancy:before { - content: "\f5ac"; } - -.fa-pen-nib:before { - content: "\f5ad"; } - -.fa-pen-square:before { - content: "\f14b"; } - -.fa-pencil-alt:before { - content: "\f303"; } - -.fa-pencil-ruler:before { - content: "\f5ae"; } - -.fa-penny-arcade:before { - content: "\f704"; } - -.fa-people-carry:before { - content: "\f4ce"; } - -.fa-percent:before { - content: "\f295"; } - -.fa-percentage:before { - content: "\f541"; } - -.fa-periscope:before { - content: "\f3da"; } - -.fa-phabricator:before { - content: "\f3db"; } - -.fa-phoenix-framework:before { - content: "\f3dc"; } - -.fa-phoenix-squadron:before { - content: "\f511"; } - -.fa-phone:before { - content: "\f095"; } - -.fa-phone-slash:before { - content: "\f3dd"; } - -.fa-phone-square:before { - content: "\f098"; } - -.fa-phone-volume:before { - content: "\f2a0"; } - -.fa-php:before { - content: "\f457"; } - -.fa-pied-piper:before { - content: "\f2ae"; } - -.fa-pied-piper-alt:before { - content: "\f1a8"; } - -.fa-pied-piper-hat:before { - content: "\f4e5"; } - -.fa-pied-piper-pp:before { - content: "\f1a7"; } - -.fa-piggy-bank:before { - content: "\f4d3"; } - -.fa-pills:before { - content: "\f484"; } - -.fa-pinterest:before { - content: "\f0d2"; } - -.fa-pinterest-p:before { - content: "\f231"; } - -.fa-pinterest-square:before { - content: "\f0d3"; } - -.fa-place-of-worship:before { - content: "\f67f"; } - -.fa-plane:before { - content: "\f072"; } - -.fa-plane-arrival:before { - content: "\f5af"; } - -.fa-plane-departure:before { - content: "\f5b0"; } - -.fa-play:before { - content: "\f04b"; } - -.fa-play-circle:before { - content: "\f144"; } - -.fa-playstation:before { - content: "\f3df"; } - -.fa-plug:before { - content: "\f1e6"; } - -.fa-plus:before { - content: "\f067"; } - -.fa-plus-circle:before { - content: "\f055"; } - -.fa-plus-square:before { - content: "\f0fe"; } - -.fa-podcast:before { - content: "\f2ce"; } - -.fa-poll:before { - content: "\f681"; } - -.fa-poll-h:before { - content: "\f682"; } - -.fa-poo:before { - content: "\f2fe"; } - -.fa-poop:before { - content: "\f619"; } - -.fa-portrait:before { - content: "\f3e0"; } - -.fa-pound-sign:before { - content: "\f154"; } - -.fa-power-off:before { - content: "\f011"; } - -.fa-pray:before { - content: "\f683"; } - -.fa-praying-hands:before { - content: "\f684"; } - -.fa-prescription:before { - content: "\f5b1"; } - -.fa-prescription-bottle:before { - content: "\f485"; } - -.fa-prescription-bottle-alt:before { - content: "\f486"; } - -.fa-print:before { - content: "\f02f"; } - -.fa-procedures:before { - content: "\f487"; } - -.fa-product-hunt:before { - content: "\f288"; } - -.fa-project-diagram:before { - content: "\f542"; } - -.fa-pushed:before { - content: "\f3e1"; } - -.fa-puzzle-piece:before { - content: "\f12e"; } - -.fa-python:before { - content: "\f3e2"; } - -.fa-qq:before { - content: "\f1d6"; } - -.fa-qrcode:before { - content: "\f029"; } - -.fa-question:before { - content: "\f128"; } - -.fa-question-circle:before { - content: "\f059"; } - -.fa-quidditch:before { - content: "\f458"; } - -.fa-quinscape:before { - content: "\f459"; } - -.fa-quora:before { - content: "\f2c4"; } - -.fa-quote-left:before { - content: "\f10d"; } - -.fa-quote-right:before { - content: "\f10e"; } - -.fa-quran:before { - content: "\f687"; } - -.fa-r-project:before { - content: "\f4f7"; } - -.fa-random:before { - content: "\f074"; } - -.fa-ravelry:before { - content: "\f2d9"; } - -.fa-react:before { - content: "\f41b"; } - -.fa-readme:before { - content: "\f4d5"; } - -.fa-rebel:before { - content: "\f1d0"; } - -.fa-receipt:before { - content: "\f543"; } - -.fa-recycle:before { - content: "\f1b8"; } - -.fa-red-river:before { - content: "\f3e3"; } - -.fa-reddit:before { - content: "\f1a1"; } - -.fa-reddit-alien:before { - content: "\f281"; } - -.fa-reddit-square:before { - content: "\f1a2"; } - -.fa-redo:before { - content: "\f01e"; } - -.fa-redo-alt:before { - content: "\f2f9"; } - -.fa-registered:before { - content: "\f25d"; } - -.fa-rendact:before { - content: "\f3e4"; } - -.fa-renren:before { - content: "\f18b"; } - -.fa-reply:before { - content: "\f3e5"; } - -.fa-reply-all:before { - content: "\f122"; } - -.fa-replyd:before { - content: "\f3e6"; } - -.fa-researchgate:before { - content: "\f4f8"; } - -.fa-resolving:before { - content: "\f3e7"; } - -.fa-retweet:before { - content: "\f079"; } - -.fa-rev:before { - content: "\f5b2"; } - -.fa-ribbon:before { - content: "\f4d6"; } - -.fa-ring:before { - content: "\f70b"; } - -.fa-road:before { - content: "\f018"; } - -.fa-robot:before { - content: "\f544"; } - -.fa-rocket:before { - content: "\f135"; } - -.fa-rocketchat:before { - content: "\f3e8"; } - -.fa-rockrms:before { - content: "\f3e9"; } - -.fa-route:before { - content: "\f4d7"; } - -.fa-rss:before { - content: "\f09e"; } - -.fa-rss-square:before { - content: "\f143"; } - -.fa-ruble-sign:before { - content: "\f158"; } - -.fa-ruler:before { - content: "\f545"; } - -.fa-ruler-combined:before { - content: "\f546"; } - -.fa-ruler-horizontal:before { - content: "\f547"; } - -.fa-ruler-vertical:before { - content: "\f548"; } - -.fa-running:before { - content: "\f70c"; } - -.fa-rupee-sign:before { - content: "\f156"; } - -.fa-sad-cry:before { - content: "\f5b3"; } - -.fa-sad-tear:before { - content: "\f5b4"; } - -.fa-safari:before { - content: "\f267"; } - -.fa-sass:before { - content: "\f41e"; } - -.fa-save:before { - content: "\f0c7"; } - -.fa-schlix:before { - content: "\f3ea"; } - -.fa-school:before { - content: "\f549"; } - -.fa-screwdriver:before { - content: "\f54a"; } - -.fa-scribd:before { - content: "\f28a"; } - -.fa-scroll:before { - content: "\f70e"; } - -.fa-search:before { - content: "\f002"; } - -.fa-search-dollar:before { - content: "\f688"; } - -.fa-search-location:before { - content: "\f689"; } - -.fa-search-minus:before { - content: "\f010"; } - -.fa-search-plus:before { - content: "\f00e"; } - -.fa-searchengin:before { - content: "\f3eb"; } - -.fa-seedling:before { - content: "\f4d8"; } - -.fa-sellcast:before { - content: "\f2da"; } - -.fa-sellsy:before { - content: "\f213"; } - -.fa-server:before { - content: "\f233"; } - -.fa-servicestack:before { - content: "\f3ec"; } - -.fa-shapes:before { - content: "\f61f"; } - -.fa-share:before { - content: "\f064"; } - -.fa-share-alt:before { - content: "\f1e0"; } - -.fa-share-alt-square:before { - content: "\f1e1"; } - -.fa-share-square:before { - content: "\f14d"; } - -.fa-shekel-sign:before { - content: "\f20b"; } - -.fa-shield-alt:before { - content: "\f3ed"; } - -.fa-ship:before { - content: "\f21a"; } - -.fa-shipping-fast:before { - content: "\f48b"; } - -.fa-shirtsinbulk:before { - content: "\f214"; } - -.fa-shoe-prints:before { - content: "\f54b"; } - -.fa-shopping-bag:before { - content: "\f290"; } - -.fa-shopping-basket:before { - content: "\f291"; } - -.fa-shopping-cart:before { - content: "\f07a"; } - -.fa-shopware:before { - content: "\f5b5"; } - -.fa-shower:before { - content: "\f2cc"; } - -.fa-shuttle-van:before { - content: "\f5b6"; } - -.fa-sign:before { - content: "\f4d9"; } - -.fa-sign-in-alt:before { - content: "\f2f6"; } - -.fa-sign-language:before { - content: "\f2a7"; } - -.fa-sign-out-alt:before { - content: "\f2f5"; } - -.fa-signal:before { - content: "\f012"; } - -.fa-signature:before { - content: "\f5b7"; } - -.fa-simplybuilt:before { - content: "\f215"; } - -.fa-sistrix:before { - content: "\f3ee"; } - -.fa-sitemap:before { - content: "\f0e8"; } - -.fa-sith:before { - content: "\f512"; } - -.fa-skull:before { - content: "\f54c"; } - -.fa-skull-crossbones:before { - content: "\f714"; } - -.fa-skyatlas:before { - content: "\f216"; } - -.fa-skype:before { - content: "\f17e"; } - -.fa-slack:before { - content: "\f198"; } - -.fa-slack-hash:before { - content: "\f3ef"; } - -.fa-slash:before { - content: "\f715"; } - -.fa-sliders-h:before { - content: "\f1de"; } - -.fa-slideshare:before { - content: "\f1e7"; } - -.fa-smile:before { - content: "\f118"; } - -.fa-smile-beam:before { - content: "\f5b8"; } - -.fa-smile-wink:before { - content: "\f4da"; } - -.fa-smoking:before { - content: "\f48d"; } - -.fa-smoking-ban:before { - content: "\f54d"; } - -.fa-snapchat:before { - content: "\f2ab"; } - -.fa-snapchat-ghost:before { - content: "\f2ac"; } - -.fa-snapchat-square:before { - content: "\f2ad"; } - -.fa-snowflake:before { - content: "\f2dc"; } - -.fa-socks:before { - content: "\f696"; } - -.fa-solar-panel:before { - content: "\f5ba"; } - -.fa-sort:before { - content: "\f0dc"; } - -.fa-sort-alpha-down:before { - content: "\f15d"; } - -.fa-sort-alpha-up:before { - content: "\f15e"; } - -.fa-sort-amount-down:before { - content: "\f160"; } - -.fa-sort-amount-up:before { - content: "\f161"; } - -.fa-sort-down:before { - content: "\f0dd"; } - -.fa-sort-numeric-down:before { - content: "\f162"; } - -.fa-sort-numeric-up:before { - content: "\f163"; } - -.fa-sort-up:before { - content: "\f0de"; } - -.fa-soundcloud:before { - content: "\f1be"; } - -.fa-spa:before { - content: "\f5bb"; } - -.fa-space-shuttle:before { - content: "\f197"; } - -.fa-speakap:before { - content: "\f3f3"; } - -.fa-spider:before { - content: "\f717"; } - -.fa-spinner:before { - content: "\f110"; } - -.fa-splotch:before { - content: "\f5bc"; } - -.fa-spotify:before { - content: "\f1bc"; } - -.fa-spray-can:before { - content: "\f5bd"; } - -.fa-square:before { - content: "\f0c8"; } - -.fa-square-full:before { - content: "\f45c"; } - -.fa-square-root-alt:before { - content: "\f698"; } - -.fa-squarespace:before { - content: "\f5be"; } - -.fa-stack-exchange:before { - content: "\f18d"; } - -.fa-stack-overflow:before { - content: "\f16c"; } - -.fa-stamp:before { - content: "\f5bf"; } - -.fa-star:before { - content: "\f005"; } - -.fa-star-and-crescent:before { - content: "\f699"; } - -.fa-star-half:before { - content: "\f089"; } - -.fa-star-half-alt:before { - content: "\f5c0"; } - -.fa-star-of-david:before { - content: "\f69a"; } - -.fa-star-of-life:before { - content: "\f621"; } - -.fa-staylinked:before { - content: "\f3f5"; } - -.fa-steam:before { - content: "\f1b6"; } - -.fa-steam-square:before { - content: "\f1b7"; } - -.fa-steam-symbol:before { - content: "\f3f6"; } - -.fa-step-backward:before { - content: "\f048"; } - -.fa-step-forward:before { - content: "\f051"; } - -.fa-stethoscope:before { - content: "\f0f1"; } - -.fa-sticker-mule:before { - content: "\f3f7"; } - -.fa-sticky-note:before { - content: "\f249"; } - -.fa-stop:before { - content: "\f04d"; } - -.fa-stop-circle:before { - content: "\f28d"; } - -.fa-stopwatch:before { - content: "\f2f2"; } - -.fa-store:before { - content: "\f54e"; } - -.fa-store-alt:before { - content: "\f54f"; } - -.fa-strava:before { - content: "\f428"; } - -.fa-stream:before { - content: "\f550"; } - -.fa-street-view:before { - content: "\f21d"; } - -.fa-strikethrough:before { - content: "\f0cc"; } - -.fa-stripe:before { - content: "\f429"; } - -.fa-stripe-s:before { - content: "\f42a"; } - -.fa-stroopwafel:before { - content: "\f551"; } - -.fa-studiovinari:before { - content: "\f3f8"; } - -.fa-stumbleupon:before { - content: "\f1a4"; } - -.fa-stumbleupon-circle:before { - content: "\f1a3"; } - -.fa-subscript:before { - content: "\f12c"; } - -.fa-subway:before { - content: "\f239"; } - -.fa-suitcase:before { - content: "\f0f2"; } - -.fa-suitcase-rolling:before { - content: "\f5c1"; } - -.fa-sun:before { - content: "\f185"; } - -.fa-superpowers:before { - content: "\f2dd"; } - -.fa-superscript:before { - content: "\f12b"; } - -.fa-supple:before { - content: "\f3f9"; } - -.fa-surprise:before { - content: "\f5c2"; } - -.fa-swatchbook:before { - content: "\f5c3"; } - -.fa-swimmer:before { - content: "\f5c4"; } - -.fa-swimming-pool:before { - content: "\f5c5"; } - -.fa-synagogue:before { - content: "\f69b"; } - -.fa-sync:before { - content: "\f021"; } - -.fa-sync-alt:before { - content: "\f2f1"; } - -.fa-syringe:before { - content: "\f48e"; } - -.fa-table:before { - content: "\f0ce"; } - -.fa-table-tennis:before { - content: "\f45d"; } - -.fa-tablet:before { - content: "\f10a"; } - -.fa-tablet-alt:before { - content: "\f3fa"; } - -.fa-tablets:before { - content: "\f490"; } - -.fa-tachometer-alt:before { - content: "\f3fd"; } - -.fa-tag:before { - content: "\f02b"; } - -.fa-tags:before { - content: "\f02c"; } - -.fa-tape:before { - content: "\f4db"; } - -.fa-tasks:before { - content: "\f0ae"; } - -.fa-taxi:before { - content: "\f1ba"; } - -.fa-teamspeak:before { - content: "\f4f9"; } - -.fa-teeth:before { - content: "\f62e"; } - -.fa-teeth-open:before { - content: "\f62f"; } - -.fa-telegram:before { - content: "\f2c6"; } - -.fa-telegram-plane:before { - content: "\f3fe"; } - -.fa-tencent-weibo:before { - content: "\f1d5"; } - -.fa-terminal:before { - content: "\f120"; } - -.fa-text-height:before { - content: "\f034"; } - -.fa-text-width:before { - content: "\f035"; } - -.fa-th:before { - content: "\f00a"; } - -.fa-th-large:before { - content: "\f009"; } - -.fa-th-list:before { - content: "\f00b"; } - -.fa-the-red-yeti:before { - content: "\f69d"; } - -.fa-theater-masks:before { - content: "\f630"; } - -.fa-themeco:before { - content: "\f5c6"; } - -.fa-themeisle:before { - content: "\f2b2"; } - -.fa-thermometer:before { - content: "\f491"; } - -.fa-thermometer-empty:before { - content: "\f2cb"; } - -.fa-thermometer-full:before { - content: "\f2c7"; } - -.fa-thermometer-half:before { - content: "\f2c9"; } - -.fa-thermometer-quarter:before { - content: "\f2ca"; } - -.fa-thermometer-three-quarters:before { - content: "\f2c8"; } - -.fa-thumbs-down:before { - content: "\f165"; } - -.fa-thumbs-up:before { - content: "\f164"; } - -.fa-thumbtack:before { - content: "\f08d"; } - -.fa-ticket-alt:before { - content: "\f3ff"; } - -.fa-times:before { - content: "\f00d"; } - -.fa-times-circle:before { - content: "\f057"; } - -.fa-tint:before { - content: "\f043"; } - -.fa-tint-slash:before { - content: "\f5c7"; } - -.fa-tired:before { - content: "\f5c8"; } - -.fa-toggle-off:before { - content: "\f204"; } - -.fa-toggle-on:before { - content: "\f205"; } - -.fa-toilet-paper:before { - content: "\f71e"; } - -.fa-toolbox:before { - content: "\f552"; } - -.fa-tooth:before { - content: "\f5c9"; } - -.fa-torah:before { - content: "\f6a0"; } - -.fa-torii-gate:before { - content: "\f6a1"; } - -.fa-tractor:before { - content: "\f722"; } - -.fa-trade-federation:before { - content: "\f513"; } - -.fa-trademark:before { - content: "\f25c"; } - -.fa-traffic-light:before { - content: "\f637"; } - -.fa-train:before { - content: "\f238"; } - -.fa-transgender:before { - content: "\f224"; } - -.fa-transgender-alt:before { - content: "\f225"; } - -.fa-trash:before { - content: "\f1f8"; } - -.fa-trash-alt:before { - content: "\f2ed"; } - -.fa-tree:before { - content: "\f1bb"; } - -.fa-trello:before { - content: "\f181"; } - -.fa-tripadvisor:before { - content: "\f262"; } - -.fa-trophy:before { - content: "\f091"; } - -.fa-truck:before { - content: "\f0d1"; } - -.fa-truck-loading:before { - content: "\f4de"; } - -.fa-truck-monster:before { - content: "\f63b"; } - -.fa-truck-moving:before { - content: "\f4df"; } - -.fa-truck-pickup:before { - content: "\f63c"; } - -.fa-tshirt:before { - content: "\f553"; } - -.fa-tty:before { - content: "\f1e4"; } - -.fa-tumblr:before { - content: "\f173"; } - -.fa-tumblr-square:before { - content: "\f174"; } - -.fa-tv:before { - content: "\f26c"; } - -.fa-twitch:before { - content: "\f1e8"; } - -.fa-twitter:before { - content: "\f099"; } - -.fa-twitter-square:before { - content: "\f081"; } - -.fa-mastodon:before { - content: "\f4f6"; } - -.fa-typo3:before { - content: "\f42b"; } - -.fa-uber:before { - content: "\f402"; } - -.fa-uikit:before { - content: "\f403"; } - -.fa-umbrella:before { - content: "\f0e9"; } - -.fa-umbrella-beach:before { - content: "\f5ca"; } - -.fa-underline:before { - content: "\f0cd"; } - -.fa-undo:before { - content: "\f0e2"; } - -.fa-undo-alt:before { - content: "\f2ea"; } - -.fa-uniregistry:before { - content: "\f404"; } - -.fa-universal-access:before { - content: "\f29a"; } - -.fa-university:before { - content: "\f19c"; } - -.fa-unlink:before { - content: "\f127"; } - -.fa-unlock:before { - content: "\f09c"; } - -.fa-unlock-alt:before { - content: "\f13e"; } - -.fa-untappd:before { - content: "\f405"; } - -.fa-upload:before { - content: "\f093"; } - -.fa-usb:before { - content: "\f287"; } - -.fa-user:before { - content: "\f007"; } - -.fa-user-alt:before { - content: "\f406"; } - -.fa-user-alt-slash:before { - content: "\f4fa"; } - -.fa-user-astronaut:before { - content: "\f4fb"; } - -.fa-user-check:before { - content: "\f4fc"; } - -.fa-user-circle:before { - content: "\f2bd"; } - -.fa-user-clock:before { - content: "\f4fd"; } - -.fa-user-cog:before { - content: "\f4fe"; } - -.fa-user-edit:before { - content: "\f4ff"; } - -.fa-user-friends:before { - content: "\f500"; } - -.fa-user-graduate:before { - content: "\f501"; } - -.fa-user-injured:before { - content: "\f728"; } - -.fa-user-lock:before { - content: "\f502"; } - -.fa-user-md:before { - content: "\f0f0"; } - -.fa-user-minus:before { - content: "\f503"; } - -.fa-user-ninja:before { - content: "\f504"; } - -.fa-user-plus:before { - content: "\f234"; } - -.fa-user-secret:before { - content: "\f21b"; } - -.fa-user-shield:before { - content: "\f505"; } - -.fa-user-slash:before { - content: "\f506"; } - -.fa-user-tag:before { - content: "\f507"; } - -.fa-user-tie:before { - content: "\f508"; } - -.fa-user-times:before { - content: "\f235"; } - -.fa-users:before { - content: "\f0c0"; } - -.fa-users-cog:before { - content: "\f509"; } - -.fa-ussunnah:before { - content: "\f407"; } - -.fa-utensil-spoon:before { - content: "\f2e5"; } - -.fa-utensils:before { - content: "\f2e7"; } - -.fa-vaadin:before { - content: "\f408"; } - -.fa-vector-square:before { - content: "\f5cb"; } - -.fa-venus:before { - content: "\f221"; } - -.fa-venus-double:before { - content: "\f226"; } - -.fa-venus-mars:before { - content: "\f228"; } - -.fa-viacoin:before { - content: "\f237"; } - -.fa-viadeo:before { - content: "\f2a9"; } - -.fa-viadeo-square:before { - content: "\f2aa"; } - -.fa-vial:before { - content: "\f492"; } - -.fa-vials:before { - content: "\f493"; } - -.fa-viber:before { - content: "\f409"; } - -.fa-video:before { - content: "\f03d"; } - -.fa-video-slash:before { - content: "\f4e2"; } - -.fa-vihara:before { - content: "\f6a7"; } - -.fa-vimeo:before { - content: "\f40a"; } - -.fa-vimeo-square:before { - content: "\f194"; } - -.fa-vimeo-v:before { - content: "\f27d"; } - -.fa-vine:before { - content: "\f1ca"; } - -.fa-vk:before { - content: "\f189"; } - -.fa-vnv:before { - content: "\f40b"; } - -.fa-volleyball-ball:before { - content: "\f45f"; } - -.fa-volume-down:before { - content: "\f027"; } - -.fa-volume-mute:before { - content: "\f6a9"; } - -.fa-volume-off:before { - content: "\f026"; } - -.fa-volume-up:before { - content: "\f028"; } - -.fa-vuejs:before { - content: "\f41f"; } - -.fa-walking:before { - content: "\f554"; } - -.fa-wallet:before { - content: "\f555"; } - -.fa-warehouse:before { - content: "\f494"; } - -.fa-weebly:before { - content: "\f5cc"; } - -.fa-weibo:before { - content: "\f18a"; } - -.fa-weight:before { - content: "\f496"; } - -.fa-weight-hanging:before { - content: "\f5cd"; } - -.fa-weixin:before { - content: "\f1d7"; } - -.fa-whatsapp:before { - content: "\f232"; } - -.fa-whatsapp-square:before { - content: "\f40c"; } - -.fa-wheelchair:before { - content: "\f193"; } - -.fa-whmcs:before { - content: "\f40d"; } - -.fa-wifi:before { - content: "\f1eb"; } - -.fa-wikipedia-w:before { - content: "\f266"; } - -.fa-wind:before { - content: "\f72e"; } - -.fa-window-close:before { - content: "\f410"; } - -.fa-window-maximize:before { - content: "\f2d0"; } - -.fa-window-minimize:before { - content: "\f2d1"; } - -.fa-window-restore:before { - content: "\f2d2"; } - -.fa-windows:before { - content: "\f17a"; } - -.fa-wine-bottle:before { - content: "\f72f"; } - -.fa-wine-glass:before { - content: "\f4e3"; } - -.fa-wine-glass-alt:before { - content: "\f5ce"; } - -.fa-wix:before { - content: "\f5cf"; } - -.fa-wizards-of-the-coast:before { - content: "\f730"; } - -.fa-wolf-pack-battalion:before { - content: "\f514"; } - -.fa-won-sign:before { - content: "\f159"; } - -.fa-wordpress:before { - content: "\f19a"; } - -.fa-wordpress-simple:before { - content: "\f411"; } - -.fa-wpbeginner:before { - content: "\f297"; } - -.fa-wpexplorer:before { - content: "\f2de"; } - -.fa-wpforms:before { - content: "\f298"; } - -.fa-wrench:before { - content: "\f0ad"; } - -.fa-x-ray:before { - content: "\f497"; } - -.fa-xbox:before { - content: "\f412"; } - -.fa-xing:before { - content: "\f168"; } - -.fa-xing-square:before { - content: "\f169"; } - -.fa-y-combinator:before { - content: "\f23b"; } - -.fa-yahoo:before { - content: "\f19e"; } - -.fa-yandex:before { - content: "\f413"; } - -.fa-yandex-international:before { - content: "\f414"; } - -.fa-yelp:before { - content: "\f1e9"; } - -.fa-yen-sign:before { - content: "\f157"; } - -.fa-yin-yang:before { - content: "\f6ad"; } - -.fa-yoast:before { - content: "\f2b1"; } - -.fa-youtube:before { - content: "\f167"; } - -.fa-youtube-square:before { - content: "\f431"; } - -.fa-zhihu:before { - content: "\f63f"; } - -.sr-only { - border: 0; - clip: rect(0, 0, 0, 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; } - -.sr-only-focusable:active, .sr-only-focusable:focus { - clip: auto; - height: auto; - margin: 0; - overflow: visible; - position: static; - width: auto; } -@font-face { - font-family: 'Font Awesome 5 Brands'; - font-style: normal; - font-weight: normal; - src: url("../fonts/fa-brands-400.eot"); - src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); } - -.fab { - font-family: 'Font Awesome 5 Brands'; } -@font-face { - font-family: 'Font Awesome 5 Free'; - font-style: normal; - font-weight: 400; - src: url("../fonts/fa-regular-400.eot"); - src: url("../fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.woff") format("woff"), url("../fonts/fa-regular-400.ttf") format("truetype"), url("../fonts/fa-regular-400.svg#fontawesome") format("svg"); } - -.far { - font-family: 'Font Awesome 5 Free'; - font-weight: 400; } -@font-face { - font-family: 'Font Awesome 5 Free'; - font-style: normal; - font-weight: 900; - src: url("../fonts/fa-solid-900.eot"); - src: url("../fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.woff") format("woff"), url("../fonts/fa-solid-900.ttf") format("truetype"), url("../fonts/fa-solid-900.svg#fontawesome") format("svg"); } - -.fa, -.fas { - font-family: 'Font Awesome 5 Free'; - font-weight: 900; } diff --git a/css/input.css b/css/input.css new file mode 100644 index 0000000..a62daf8 --- /dev/null +++ b/css/input.css @@ -0,0 +1,235 @@ +@import "tailwindcss"; + +/* Theme customization */ +@theme { + /* Colors */ + --color-primary-50: oklch(0.97 0.02 295); + --color-primary-100: oklch(0.94 0.04 295); + --color-primary-200: oklch(0.88 0.08 295); + --color-primary-300: oklch(0.78 0.14 295); + --color-primary-400: oklch(0.68 0.18 295); + --color-primary-500: oklch(0.58 0.22 295); + --color-primary-600: oklch(0.52 0.24 295); + --color-primary-700: oklch(0.48 0.22 295); + --color-primary-800: oklch(0.40 0.18 295); + --color-primary-900: oklch(0.32 0.14 295); + --color-primary-950: oklch(0.22 0.10 295); + + /* Typography */ + --font-sans: 'Overpass', system-ui, -apple-system, sans-serif; +} + +/* Font Faces */ +@font-face { + font-family: 'Overpass'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('../fonts/overpass-v2-latin-regular.woff2') format('woff2'); +} + +@font-face { + font-family: 'Overpass'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url('../fonts/overpass-v2-latin-italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Overpass'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('../fonts/overpass-v2-latin-700.woff2') format('woff2'); +} + +@font-face { + font-family: 'Overpass'; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url('../fonts/overpass-v2-latin-800.woff2') format('woff2'); +} + +/* View Transitions API */ +@view-transition { + navigation: auto; +} + +::view-transition-old(root), +::view-transition-new(root) { + animation-duration: 300ms; +} + +/* Utility classes */ +@utility skip-link { + position: absolute; + top: -100%; + left: 1rem; + background-color: var(--color-primary-800); + color: white; + padding: 0.5rem 1rem; + border-radius: 0.5rem; + z-index: 50; + transition: top 0.2s; + &:focus { + top: 1rem; + } +} + +@utility btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + font-weight: 600; + border-radius: 0.5rem; + transition: all 0.2s; + text-decoration: none; +} + +@utility btn-primary { + background-color: var(--color-primary-800); + color: white; + &:hover { + background-color: var(--color-primary-900); + transform: translateY(-2px); + box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1); + } +} + +@utility btn-outline { + border: 2px solid rgb(255 255 255 / 0.4); + color: white; + &:hover { + background-color: white; + color: var(--color-primary-800); + } +} + +@utility btn-lg { + padding: 1rem 2rem; + font-size: 1.125rem; +} + +@utility section-gradient { + background: linear-gradient(135deg, var(--color-primary-800) 0%, var(--color-primary-600) 50%, var(--color-primary-500) 100%); +} + +@utility nav-link { + color: rgb(255 255 255 / 0.9); + padding: 0.5rem 1rem; + border-radius: 0.5rem; + font-size: 0.875rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.025em; + transition: all 0.15s; + position: relative; + text-decoration: none; + &::after { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 2px; + background: currentColor; + transition: all 0.15s; + transform: translateX(-50%); + } + &:hover { + background-color: rgb(255 255 255 / 0.1); + color: white; + &::after { + width: 60%; + } + } + &[aria-current="page"] { + background-color: rgb(255 255 255 / 0.1); + color: white; + &::after { + width: 60%; + } + } +} + +@utility feature-item { + position: relative; + padding-left: 1.5rem; + &::before { + content: '✓'; + position: absolute; + left: 0; + color: #22c55e; + font-weight: 700; + } +} + +@utility language-card { + display: flex; + align-items: center; + gap: 1rem; + padding: 1rem; + background-color: rgb(250 245 255); + border-radius: 0.5rem; + transition: all 0.2s; + &:hover { + background-color: white; + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); + } +} + +@utility staff-card { + text-align: center; + padding: 2rem; + background-color: rgb(250 245 255); + border-radius: 1rem; + transition: all 0.3s; + &:hover { + background-color: white; + box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1); + transform: translateY(-4px); + } +} + +@utility footer-link { + color: rgb(255 255 255 / 0.7); + transition: color 0.15s; + display: inline-flex; + align-items: center; + gap: 0.5rem; + text-decoration: none; + &:hover { + color: white; + } +} + +@utility blog-post { + padding: 2rem; + background-color: rgb(250 245 255); + border-radius: 1rem; +} + +@utility pattern-dots { + background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); +} + +/* Reduced motion */ +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* Print styles */ +@media print { + .site-header, .site-footer, .skip-link { + display: none !important; + } +} diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..e247400 --- /dev/null +++ b/css/main.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:"Overpass",system-ui,-apple-system,sans-serif;--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-indigo-950:oklch(25.7% .09 281.288);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-xl:36rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--radius-lg:.5rem;--radius-2xl:1rem;--drop-shadow-2xl:0 25px 25px #00000026;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-500:oklch(58% .22 295);--color-primary-600:oklch(52% .24 295);--color-primary-700:oklch(48% .22 295);--color-primary-800:oklch(40% .18 295);--color-primary-900:oklch(32% .14 295)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.skip-link{background-color:var(--color-primary-800);color:#fff;z-index:50;border-radius:.5rem;padding:.5rem 1rem;transition:top .2s;position:absolute;top:-100%;left:1rem}.skip-link:focus{top:1rem}.nav-link{color:#ffffffe6;text-transform:uppercase;letter-spacing:.025em;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:all .15s;position:relative}.nav-link:after{content:"";background:currentColor;width:0;height:2px;transition:all .15s;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.nav-link:hover{color:#fff;background-color:#ffffff1a}.nav-link:hover:after{width:60%}.nav-link[aria-current=page]{color:#fff;background-color:#ffffff1a}.nav-link[aria-current=page]:after{width:60%}.feature-item{padding-left:1.5rem;position:relative}.feature-item:before{content:"✓";color:#22c55e;font-weight:700;position:absolute;left:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-4{top:calc(var(--spacing)*-4)}.left-1\/2{left:50%}.z-5{z-index:5}.z-10{z-index:10}.order-first{order:-9999}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-16{margin-top:calc(var(--spacing)*16)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.btn{border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.language-card{background-color:#faf5ff;border-radius:.5rem;align-items:center;gap:1rem;padding:1rem;transition:all .2s;display:flex}.language-card:hover{background-color:#fff;box-shadow:0 4px 6px -1px #0000001a}.footer-link{color:#ffffffb3;align-items:center;gap:.5rem;text-decoration:none;transition:color .15s;display:inline-flex}.footer-link:hover{color:#fff}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-11{height:calc(var(--spacing)*11)}.h-16{height:calc(var(--spacing)*16)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-11{width:calc(var(--spacing)*11)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-auto{width:auto}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.staff-card{text-align:center;background-color:#faf5ff;border-radius:1rem;padding:2rem;transition:all .3s}.staff-card:hover{background-color:#fff;transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000001a}.btn-primary{background-color:var(--color-primary-800);color:#fff}.btn-primary:hover{background-color:var(--color-primary-900);transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-8{gap:calc(var(--spacing)*8)}.gap-12{gap:calc(var(--spacing)*12)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.blog-post{background-color:#faf5ff;border-radius:1rem;padding:2rem}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-primary-700{border-color:var(--color-primary-700)}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.btn-outline{color:#fff;border:2px solid #fff6}.btn-outline:hover{color:var(--color-primary-800);background-color:#fff}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-white{background-color:var(--color-white)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.pattern-dots{background-image:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.from-indigo-950{--tw-gradient-from:var(--color-indigo-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-slate-950{--tw-gradient-to:var(--color-slate-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.btn-lg{padding:1rem 2rem;font-size:1.125rem}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-24{padding-block:calc(var(--spacing)*24)}.pt-6{padding-top:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.font-serif{font-family:var(--font-serif)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-primary-700{color:var(--color-primary-700)}.text-primary-800{color:var(--color-primary-800)}.text-purple-200{color:var(--color-purple-200)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-white{color:var(--color-white)}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.italic{font-style:italic}.not-italic{font-style:normal}.underline{text-decoration-line:underline}.decoration-red-500{-webkit-text-decoration-color:var(--color-red-500);-webkit-text-decoration-color:var(--color-red-500);text-decoration-color:var(--color-red-500)}.decoration-wavy{text-decoration-style:wavy}.opacity-30{opacity:.3}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-white{--tw-ring-color:var(--color-white)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.section-gradient{background:linear-gradient(135deg,var(--color-primary-800)0%,var(--color-primary-600)50%,var(--color-primary-500)100%)}.peer-checked\:block:is(:where(.peer):checked~*){display:block}.peer-checked\:hidden:is(:where(.peer):checked~*){display:none}.peer-checked\:translate-x-0:is(:where(.peer):checked~*){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-primary-700:hover{background-color:var(--color-primary-700)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:text-primary-600:hover{color:var(--color-primary-600)}.hover\:text-primary-700:hover{color:var(--color-primary-700)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:48rem){.md\:order-last{order:9999}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:py-16{padding-block:calc(var(--spacing)*16)}.md\:py-24{padding-block:calc(var(--spacing)*24)}.md\:py-32{padding-block:calc(var(--spacing)*32)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:inset-auto{inset:auto}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:justify-end{justify-content:flex-end}.lg\:bg-transparent{background-color:#0000}.lg\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}}@font-face{font-family:Overpass;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/overpass-v2-latin-regular.woff2)format("woff2")}@font-face{font-family:Overpass;font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/overpass-v2-latin-italic.woff2)format("woff2")}@font-face{font-family:Overpass;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/overpass-v2-latin-700.woff2)format("woff2")}@font-face{font-family:Overpass;font-style:normal;font-weight:800;font-display:swap;src:url(../fonts/overpass-v2-latin-800.woff2)format("woff2")}@view-transition{navigation:auto}::view-transition-old(root){animation-duration:.3s}::view-transition-new(root){animation-duration:.3s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.site-header,.site-footer,.skip-link{display:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false} \ No newline at end of file diff --git a/css/screen.scss b/css/screen.scss deleted file mode 100644 index 0316572..0000000 --- a/css/screen.scss +++ /dev/null @@ -1,25 +0,0 @@ ---- ---- -@import "mixins/flexbox"; -@import "mixins/columns"; -@import "variables"; -@import "elements"; -@import "landing-page"; -@import "layout"; -@import "staff"; -@import "contact"; -@import "blog"; -@import "forms"; -@import "navigation"; -@import "footer"; - -.flag-container { - margin-right: 8px; -} - -.language-flag { - height: 32px; - width: auto; - vertical-align: middle; - border: 1px solid black; -} diff --git a/download.html b/download.html index 66e78f5..c51078b 100644 --- a/download.html +++ b/download.html @@ -1,14 +1,41 @@ --- -title: -description: +layout: default +title: Download AnySoftKeyboard +description: Get AnySoftKeyboard from Google Play or F-Droid. Free and open source Android keyboard. --- -

    You can download AnySoftKeyboard from Play Store or F-Droid.

    -
    - Play Store - F-Droid -
    -
    -

    Feeling adventurous? Sign up for the Beta channel here (Served via Google Play Store).

    -

    Feeling very adventurous? opt-in to the Alpha channel by also joining the Testers Google group.

    -
    +{% assign content = site.data.site.download %} +
    +
    +

    {{ content.title }}

    +

    {{ content.subtitle }}

    +
    +
    + +
    +
    +
    + {% for store in content.stores %} + + {{ store.image_alt }} + + {% endfor %} +
    + +
    +

    {{ content.beta.title }}

    +
      + {% for channel in content.beta.channels %} +
    • + {{ channel.name }}: {{ channel.description }} + {% if channel.link_text %} + {{ channel.link_text }} + {% else %} + Sign up here + {% endif %} +
    • + {% endfor %} +
    +
    +
    +
    diff --git a/fonts/fa-brands-400.eot b/fonts/fa-brands-400.eot deleted file mode 100644 index c3bbd1c..0000000 Binary files a/fonts/fa-brands-400.eot and /dev/null differ diff --git a/fonts/fa-brands-400.svg b/fonts/fa-brands-400.svg deleted file mode 100644 index ae0b39e..0000000 --- a/fonts/fa-brands-400.svg +++ /dev/null @@ -1,1175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/fa-brands-400.ttf b/fonts/fa-brands-400.ttf deleted file mode 100644 index 867f408..0000000 Binary files a/fonts/fa-brands-400.ttf and /dev/null differ diff --git a/fonts/fa-brands-400.woff b/fonts/fa-brands-400.woff deleted file mode 100644 index 87d28af..0000000 Binary files a/fonts/fa-brands-400.woff and /dev/null differ diff --git a/fonts/fa-regular-400.eot b/fonts/fa-regular-400.eot deleted file mode 100644 index fba135e..0000000 Binary files a/fonts/fa-regular-400.eot and /dev/null differ diff --git a/fonts/fa-regular-400.svg b/fonts/fa-regular-400.svg deleted file mode 100644 index 0085843..0000000 --- a/fonts/fa-regular-400.svg +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/fa-regular-400.ttf b/fonts/fa-regular-400.ttf deleted file mode 100644 index cc5e311..0000000 Binary files a/fonts/fa-regular-400.ttf and /dev/null differ diff --git a/fonts/fa-regular-400.woff b/fonts/fa-regular-400.woff deleted file mode 100644 index 0c01e47..0000000 Binary files a/fonts/fa-regular-400.woff and /dev/null differ diff --git a/fonts/fa-solid-900.eot b/fonts/fa-solid-900.eot deleted file mode 100644 index ccdfcf1..0000000 Binary files a/fonts/fa-solid-900.eot and /dev/null differ diff --git a/fonts/fa-solid-900.svg b/fonts/fa-solid-900.svg deleted file mode 100644 index 7caded3..0000000 --- a/fonts/fa-solid-900.svg +++ /dev/null @@ -1,2564 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/fa-solid-900.ttf b/fonts/fa-solid-900.ttf deleted file mode 100644 index 4c04632..0000000 Binary files a/fonts/fa-solid-900.ttf and /dev/null differ diff --git a/fonts/fa-solid-900.woff b/fonts/fa-solid-900.woff deleted file mode 100644 index a38172b..0000000 Binary files a/fonts/fa-solid-900.woff and /dev/null differ diff --git a/fonts/overpass-v2-latin-700.eot b/fonts/overpass-v2-latin-700.eot deleted file mode 100644 index 8b04e1b..0000000 Binary files a/fonts/overpass-v2-latin-700.eot and /dev/null differ diff --git a/fonts/overpass-v2-latin-700.svg b/fonts/overpass-v2-latin-700.svg deleted file mode 100644 index 73eadfe..0000000 --- a/fonts/overpass-v2-latin-700.svg +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/overpass-v2-latin-700.ttf b/fonts/overpass-v2-latin-700.ttf deleted file mode 100644 index 9887be1..0000000 Binary files a/fonts/overpass-v2-latin-700.ttf and /dev/null differ diff --git a/fonts/overpass-v2-latin-700.woff b/fonts/overpass-v2-latin-700.woff deleted file mode 100644 index 04b3e8a..0000000 Binary files a/fonts/overpass-v2-latin-700.woff and /dev/null differ diff --git a/fonts/overpass-v2-latin-800.eot b/fonts/overpass-v2-latin-800.eot deleted file mode 100644 index 2b7259b..0000000 Binary files a/fonts/overpass-v2-latin-800.eot and /dev/null differ diff --git a/fonts/overpass-v2-latin-800.svg b/fonts/overpass-v2-latin-800.svg deleted file mode 100644 index 5c494e5..0000000 --- a/fonts/overpass-v2-latin-800.svg +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/overpass-v2-latin-800.ttf b/fonts/overpass-v2-latin-800.ttf deleted file mode 100644 index 6f62602..0000000 Binary files a/fonts/overpass-v2-latin-800.ttf and /dev/null differ diff --git a/fonts/overpass-v2-latin-800.woff b/fonts/overpass-v2-latin-800.woff deleted file mode 100644 index ca24bda..0000000 Binary files a/fonts/overpass-v2-latin-800.woff and /dev/null differ diff --git a/fonts/overpass-v2-latin-italic.eot b/fonts/overpass-v2-latin-italic.eot deleted file mode 100644 index 4fd47ed..0000000 Binary files a/fonts/overpass-v2-latin-italic.eot and /dev/null differ diff --git a/fonts/overpass-v2-latin-italic.svg b/fonts/overpass-v2-latin-italic.svg deleted file mode 100644 index 06cbb76..0000000 --- a/fonts/overpass-v2-latin-italic.svg +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/overpass-v2-latin-italic.ttf b/fonts/overpass-v2-latin-italic.ttf deleted file mode 100644 index fe3f033..0000000 Binary files a/fonts/overpass-v2-latin-italic.ttf and /dev/null differ diff --git a/fonts/overpass-v2-latin-italic.woff b/fonts/overpass-v2-latin-italic.woff deleted file mode 100644 index da7d3fd..0000000 Binary files a/fonts/overpass-v2-latin-italic.woff and /dev/null differ diff --git a/fonts/overpass-v2-latin-regular.eot b/fonts/overpass-v2-latin-regular.eot deleted file mode 100644 index 34ad89b..0000000 Binary files a/fonts/overpass-v2-latin-regular.eot and /dev/null differ diff --git a/fonts/overpass-v2-latin-regular.svg b/fonts/overpass-v2-latin-regular.svg deleted file mode 100644 index 3537c06..0000000 --- a/fonts/overpass-v2-latin-regular.svg +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fonts/overpass-v2-latin-regular.ttf b/fonts/overpass-v2-latin-regular.ttf deleted file mode 100644 index ac8f42d..0000000 Binary files a/fonts/overpass-v2-latin-regular.ttf and /dev/null differ diff --git a/fonts/overpass-v2-latin-regular.woff b/fonts/overpass-v2-latin-regular.woff deleted file mode 100644 index 03acacd..0000000 Binary files a/fonts/overpass-v2-latin-regular.woff and /dev/null differ diff --git a/fonts/overpass.css b/fonts/overpass.css index 0a35bd2..510df3a 100644 --- a/fonts/overpass.css +++ b/fonts/overpass.css @@ -1,55 +1,32 @@ -/* overpass-regular - latin */ +/* Overpass font - woff2 only (modern browsers) */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 400; - src: url('overpass-v2-latin-regular.eot'); /* IE9 Compat Modes */ - src: local('Overpass Regular'), local('Overpass-Regular'), - url('overpass-v2-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('overpass-v2-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ - url('overpass-v2-latin-regular.woff') format('woff'), /* Modern Browsers */ - url('overpass-v2-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('overpass-v2-latin-regular.svg#Overpass') format('svg'); /* Legacy iOS */ + font-display: swap; + src: url('overpass-v2-latin-regular.woff2') format('woff2'); } -/* overpass-italic - latin */ @font-face { font-family: 'Overpass'; font-style: italic; font-weight: 400; - src: url('overpass-v2-latin-italic.eot'); /* IE9 Compat Modes */ - src: local('Overpass Italic'), local('Overpass-Italic'), - url('overpass-v2-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('overpass-v2-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */ - url('overpass-v2-latin-italic.woff') format('woff'), /* Modern Browsers */ - url('overpass-v2-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */ - url('overpass-v2-latin-italic.svg#Overpass') format('svg'); /* Legacy iOS */ + font-display: swap; + src: url('overpass-v2-latin-italic.woff2') format('woff2'); } -/* overpass-700 - latin */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 700; - src: url('overpass-v2-latin-700.eot'); /* IE9 Compat Modes */ - src: local('Overpass Bold'), local('Overpass-Bold'), - url('overpass-v2-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('overpass-v2-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ - url('overpass-v2-latin-700.woff') format('woff'), /* Modern Browsers */ - url('overpass-v2-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ - url('overpass-v2-latin-700.svg#Overpass') format('svg'); /* Legacy iOS */ + font-display: swap; + src: url('overpass-v2-latin-700.woff2') format('woff2'); } -/* overpass-800 - latin */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 800; - src: url('overpass-v2-latin-800.eot'); /* IE9 Compat Modes */ - src: local('Overpass ExtraBold'), local('Overpass-ExtraBold'), - url('overpass-v2-latin-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('overpass-v2-latin-800.woff2') format('woff2'), /* Super Modern Browsers */ - url('overpass-v2-latin-800.woff') format('woff'), /* Modern Browsers */ - url('overpass-v2-latin-800.ttf') format('truetype'), /* Safari, Android, iOS */ - url('overpass-v2-latin-800.svg#Overpass') format('svg'); /* Legacy iOS */ + font-display: swap; + src: url('overpass-v2-latin-800.woff2') format('woff2'); } diff --git a/index.html b/index.html index 6d91c0a..54827f2 100644 --- a/index.html +++ b/index.html @@ -1,91 +1,123 @@ --- -title: AnySoftKeyboard +layout: default +title: AnySoftKeyboard - The Open Source Keyboard for Android +description: Free, open source Android keyboard with multi-language support, themes, and privacy features. --- -
    -
    -

    The only Android keyboard you'll ever need

    -

    Free as in speech and Free as in beer.

    - -
    - Pixel 3 screenshot -
    -
    +{% assign content = site.data.site %} + + +
    +
    +

    + {{ content.hero.title }} {{ content.hero.title_emphasis }} +

    +

    + {{ content.hero.subtitle }} {{ content.hero.subtitle_emphasis }} {{ content.hero.subtitle_2 }} +

    + + {{ content.hero.cta_text }} + +
    + {{ content.hero.image_alt }} +
    +
    -
    -
    -
    -
    -

    Features of AnySoftKeyboard

    -
      -
    • Supports lots of languages via external packages
    • -
    • Physical keyboards are supported as well
    • -
    • Themes (skin) support
    • -
    • Incognito Mode - will not track your typing
    • -
    • Word suggestions, and Next-Word suggestions
    • -
    • Automatic correction can be customized, or turned off entirely. External packages include word lists that can be freely mixed. You can use a French layout and get suggestions for German and Russian!
    • -
    • Gesture typing
    • -
    • Dark mode, automatic (based on system) and manual
    • -
    • Power saving mode, disables various features to save battery
    • -
    • Per-app tint, the keyboard changes color depending on the app
    • -
    • Voice input
    • -
    • Compact modes: Split and Compact to left/right
    • -
    • Special keyboard for text fields which require only numbers, dates, email or URI addresses.
    • -
    • Plenty of emojis
    • -

      ..and many more!

      -
    -
    -
    - Features -
    -
    -
    + +
    +
    +
    +
    +

    + {{ content.features.title }} {{ content.features.title_suffix }} +

    +
      + {% for feature in content.features.items %} +
    • {{ feature }}
    • + {% endfor %} +
    +
    +
    + {{ content.features.image_alt }} +
    +
    +
    +
    -
    -
    -
    -

    Help from the community

    - The official discussions and support community is on GitHub. You can also find us on Mastodon.
    - Read our wiki for more information about usage and code.

    - -
    -
    - Community -
    -
    -
    + +
    +
    +
    +
    + {{ content.community.image_alt }} +
    +
    +

    + {{ content.community.title }} {{ content.community.title_suffix }} +

    +

    {{ content.community.description }}

    +
      + {% for link in content.community.links %} +
    • + {{ link.name }} +
    • + {% endfor %} +
    + + {{ content.community.cta.text }} + +
    +
    +
    +
    -
    -
    -
    -

    Numerous languages available

    -

    There are many languages with multiple dictionaries, auto-correction and keyboards that are supported.

    -
    -
    - Languages -
    -
    -
    + +
    +
    +
    +
    +

    + {{ content.languages_section.title }} {{ content.languages_section.title_emphasis }} {{ content.languages_section.title_suffix }} +

    +

    {{ content.languages_section.description }}

    + + {{ content.languages_section.link_text }} + +
    +
    + {{ content.languages_section.image_alt }} +
    +
    +
    +
    -
    -
    -
    -
    John Doe
    -
    -

    AnySoftKeyboard is the keyboard we have been waiting for; lightweight, fast, accurate and private!

    -

    John Doe - User

    -
    -
    -
    -
    + +
    +
    +
    + {{ content.testimonial.image_alt }} +
    +
    + " + {{ content.testimonial.quote }} +
    + — {{ content.testimonial.author }} +
    +
    -
    -

    Donate to help develop this application

    - - -
    -
    + +
    +
    +

    + {{ content.donate.title }} {{ content.donate.title_emphasis }} +

    +

    {{ content.donate.subtitle }}

    +
    + {% for button in content.donate.buttons %} + + {{ button.text }} + + {% endfor %} +
    +
    +
    diff --git a/languages.html b/languages.html index 0882dda..b0ad2a2 100644 --- a/languages.html +++ b/languages.html @@ -1,38 +1,51 @@ --- -title: Languages -description: Below you'll find a list of language packs and where you can download them +layout: default +title: Language Packs +description: Download language packs for AnySoftKeyboard. Support for 50+ languages with dictionaries and keyboards. --- +
    +
    +

    Available Language Packs

    +

    Download additional languages with keyboards and dictionaries

    +
    +
    -
    - {% for language in site.data.languages.languages %} -
    -

    {{ language.name }} flag {{ language.name }} - - {% if language.github == nil or language.github == "" %} - - {% else %} - {{ language.name }} on github - {% endif %} - - {% if language.f-droid == nil or language.f-droid == "" %} - F-Droid icon - {% else %} - {{ language.name }} on f-droid - {% endif %} - - {% if language.play == nil or language.play == "" %} - - {% else %} - {{ language.name }} on Google Play Store - {% endif %} -

    -
    - {% endfor %} - - {% assign total = 0 %} - {% for language in site.data.languages.languages %} - {% assign total = total | plus: 1 %} - {% endfor %} +
    +
    +

    + + {{ site.data.languages.languages | size }} language packs available + +

    -

    Number of languages available: {{ total }}

    +
    + {% for language in site.data.languages.languages %} +
    + {{ language.name }} flag + {{ language.name }} +
    + {% if language.github and language.github != "" %} + + GitHub + + {% endif %} + {% if language.f-droid and language.f-droid != "" %} + + F-Droid + + {% else %} + Not on F-Droid + {% endif %} + {% if language.play and language.play != "" and language.play != "#" %} + + Google Play + + {% else %} + Not on Google Play + {% endif %} +
    +
    + {% endfor %} +
    +
    diff --git a/package.json b/package.json new file mode 100644 index 0000000..75056cf --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "name": "anysoftkeyboard-website", + "version": "1.0.0", + "description": "AnySoftKeyboard official website", + "scripts": { + "build:css": "npx @tailwindcss/cli -i ./css/input.css -o ./css/main.css --minify", + "watch:css": "npx @tailwindcss/cli -i ./css/input.css -o ./css/main.css --watch" + }, + "devDependencies": { + "@tailwindcss/cli": "^4.1.0" + } +} diff --git a/pre-release-info.html b/pre-release-info.html deleted file mode 100644 index 51e7cf6..0000000 --- a/pre-release-info.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: AnySoftKeyboard Pre-Release Channels -description: ---- - -

    Pre-Releases

    -

    AnySoftKeyboard has a stable release every few months. The stable release comes after a long period of development and testing and usually is very stable. -This stability comes as a result of good amount of unit-tests and manual testing done by volunteering users. We rely heavily on these volunteers to ensure any new feature is bug free and existing functionaity is intact.

    -

    If you wish to help and test a pre-release version of AnySoftKeyboard, you have a few options: -

      -
    • Alpha-Channel: This channel will be deployed with every code change. This means you'll might get a new release every day.
    • -
    • Beta-Channel: This channel will be deployed every Wednesday morning. Usually, this is much more stable than the alpha channel.
    • -
    -

    - -

    Subscription - via Google Play Store

    -

    -

    diff --git a/privacy-policy.html b/privacy-policy.html deleted file mode 100644 index df7325b..0000000 --- a/privacy-policy.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: AnySoftKeyboard Privacy Policy -description: ---- - -

    General information

    -

    Menny Even-Danan, the copyright holder of AnySoftKeyboard, provides this Privacy Policy ( "Privacy Policy") to help you understand how we collect, use and disclose information, including personal information that you may provide to us or that we may obtain as AnySoftKeyboard is used. We may update this Privacy Policy from time to time, so please check back with us periodically.
    -"Personal Information" includes information that alone or when in combination with other information may be used to readily identify, contact, or locate you or a specific individual.

    -

    Collected information and usage

    -

    By using AnySoftKeyboard, you consent to the collection and use of your Personal Information by AnySoftKeyboard consistent with applicable data protection law and this Privacy Policy. We ARE NOT sharing Personal Information (e.g., name, address, telephone number, email address, location, device ID, contacts and personal device’s user-dictionary), and we ARE NOT transferring this Personal Information from your device, or AnySoftKeyboard's storage, to any third party or external device. AnySoftKeyboard collects and uses information from you in several ways:

    -
      -
    • Typing behavior is tracked and used to learn new words you use that are not in AnySoftKeyboard pre-built words dictionary. This Personal Information is stored on the device and is not transferred by AnySoftKeyboard to any other device or third party.
    • -
    • Typing behavior is also tracked and used to predict which words you commonly use after a other words (bi-grams).
    • -
    • Your contacts list is read to help AnySoftKeyboard predict typing and correct typing. You may disabled this feature in the Setup process of AnySoftKeyboard or in the setting pages.
    • -
    -

    When AnySoftKeyboard may share collected information

    -

    Never.

    -

    Changes to this privacy policy by AnySoftKeyboard

    -

    If in the future we change our Privacy Policy, we will post the new Privacy Policy on this Website and Application (as as app update). We reserve the right to change this Privacy Policy in the future. Your continued use of AnySoftKeyboard following a change in the Privacy Policy represents consent to the new Privacy Policy to the fullest extent permitted by law. We encourage you to periodically review this Privacy Policy.

    -

    Contacting AnySoftKeyboard

    -

    If you have any questions, comments, or concerns about this Privacy Policy, please email us at playstore.US@evendanan.net or visit the bug reporting page.

    -

    More information about Android Permissions used in AnySoftKeyboard can be read here.

    -

    Updated: February, 2nd, 2017

    - diff --git a/privacy-policy.md b/privacy-policy.md new file mode 100644 index 0000000..dace2c2 --- /dev/null +++ b/privacy-policy.md @@ -0,0 +1,48 @@ +--- +layout: page +title: Privacy Policy +description: Learn how AnySoftKeyboard handles your data and protects your privacy +permalink: /privacy-policy/ +--- + +## General Information + +Menny Even-Danan, the copyright holder of AnySoftKeyboard, provides this Privacy Policy to help you understand how we collect, use and disclose information, including personal information that you may provide to us or that we may obtain as AnySoftKeyboard is used. We may update this Privacy Policy from time to time, so please check back with us periodically. + +**"Personal Information"** includes information that alone or when in combination with other information may be used to readily identify, contact, or locate you or a specific individual. + +## Collected Information and Usage + +By using AnySoftKeyboard, you consent to the collection and use of your Personal Information by AnySoftKeyboard consistent with applicable data protection law and this Privacy Policy. + +
    +

    We DO NOT share Personal Information (e.g., name, address, telephone number, email address, location, device ID, contacts and personal device's user-dictionary), and we DO NOT transfer this Personal Information from your device, or AnySoftKeyboard's storage, to any third party or external device.

    +
    + +AnySoftKeyboard collects and uses information from you in several ways: + +- **Word Learning:** Typing behavior is tracked and used to learn new words you use that are not in AnySoftKeyboard pre-built words dictionary. This Personal Information is stored on the device and is not transferred by AnySoftKeyboard to any other device or third party. +- **Predictions:** Typing behavior is also tracked and used to predict which words you commonly use after other words (bi-grams). +- **Contacts:** Your contacts list is read to help AnySoftKeyboard predict typing and correct typing. You may disable this feature in the Setup process of AnySoftKeyboard or in the settings. + +## When AnySoftKeyboard May Share Collected Information + +**Never.** + +## Changes to This Privacy Policy + +If in the future we change our Privacy Policy, we will post the new Privacy Policy on this Website and Application (as an app update). We reserve the right to change this Privacy Policy in the future. Your continued use of AnySoftKeyboard following a change in the Privacy Policy represents consent to the new Privacy Policy to the fullest extent permitted by law. We encourage you to periodically review this Privacy Policy. + +## Contact Us + +If you have any questions, comments, or concerns about this Privacy Policy, please: + +- Email us at [playstore.US@evendanan.net](mailto:playstore.US@evendanan.net) +- Visit the [bug reporting page](https://github.com/AnySoftKeyboard/AnySoftKeyboard/issues) + +More information about Android Permissions used in AnySoftKeyboard can be read [here](https://github.com/AnySoftKeyboard/AnySoftKeyboard/wiki/Why-Does-AnySoftKeyboard-Requires-Extra-Permissions). + +--- + +*Last updated: February 2nd, 2017* + diff --git a/robots.txt b/robots.txt index 4137002..40c715c 100644 --- a/robots.txt +++ b/robots.txt @@ -1,6 +1,4 @@ ---- -layout: null -sitemap: false ---- User-agent: * -Sitemap: {{ site.url }}/sitemap.xml +Allow: / + +Sitemap: https://anysoftkeyboard.github.io/sitemap.xml