diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..325bfc0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,51 @@ +# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files. + +# Ignore git directory. +/.git/ +/.gitignore + +# Ignore bundler config. +/.bundle + +# Ignore all environment files. +/.env* + +# Ignore all default key files. +/config/master.key +/config/credentials/*.key + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# Ignore pidfiles, but keep the directory. +/tmp/pids/* +!/tmp/pids/.keep + +# Ignore storage (uploaded files in development and any SQLite databases). +/storage/* +!/storage/.keep +/tmp/storage/* +!/tmp/storage/.keep + +# Ignore assets. +/node_modules/ +/app/assets/builds/* +!/app/assets/builds/.keep +/public/assets + +# Ignore CI service files. +/.github + +# Ignore Kamal files. +/config/deploy*.yml +/.kamal + +# Ignore development files +/.devcontainer + +# Ignore Docker-related files +/.dockerignore +/Dockerfile* diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8dc4323 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# See https://git-scm.com/docs/gitattributes for more about git attribute files. + +# Mark the database schema as having been generated. +db/schema.rb linguist-generated + +# Mark any vendored files as having been vendored. +vendor/* linguist-vendored +config/credentials/*.yml.enc diff=rails_credentials +config/credentials.yml.enc diff=rails_credentials diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..f0527e6 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: +- package-ecosystem: bundler + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..dab7654 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +name: CI + +on: + pull_request: + push: + branches: [ main ] + +jobs: + scan_ruby: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: .ruby-version + bundler-cache: true + + - name: Scan for common Rails security vulnerabilities using static analysis + run: bin/brakeman --no-pager + + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: .ruby-version + bundler-cache: true + + - name: Lint code for consistent style + run: bin/rubocop -f github + + test: + runs-on: ubuntu-latest + + # services: + # redis: + # image: redis + # ports: + # - 6379:6379 + # options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 + steps: + - name: Install packages + run: sudo apt-get update && sudo apt-get install --no-install-recommends -y build-essential git libyaml-dev node-gyp pkg-config python-is-python3 google-chrome-stable + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: .ruby-version + bundler-cache: true + + - name: Run tests + env: + RAILS_ENV: test + # REDIS_URL: redis://localhost:6379/0 + run: bin/rails db:test:prepare test test:system + + - name: Keep screenshots from failed system tests + uses: actions/upload-artifact@v4 + if: failure() + with: + name: screenshots + path: ${{ github.workspace }}/tmp/screenshots + if-no-files-found: ignore diff --git a/.gitignore b/.gitignore index 4fc9c5e..a21a562 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,20 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. +# See https://help.github.com/articles/ignoring-files for more about ignoring files. # -# If you find yourself ignoring temporary files generated by your text editor -# or operating system, you probably want to add a global ignore instead: -# git config --global core.excludesfile '~/.gitignore_global' +# Temporary files generated by your text editor or operating system +# belong in git's global ignore instead: +# `$XDG_CONFIG_HOME/git/ignore` or `~/.config/git/ignore` # Ignore bundler config. /.bundle -# Ignore the default SQLite database. -/db/*.sqlite3 -/db/*.sqlite3-journal +# Ignore all environment files. +/.env* # Ignore all logfiles and tempfiles. -/log/*.log -/tmp +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep /public/assets/ /public/system/ # old Paperclip path @@ -27,11 +28,22 @@ /public/packs-test/ /public/packs/ -/storage +# Ignore pidfiles, but keep the directory. +/tmp/pids/* +!/tmp/pids/ +!/tmp/pids/.keep +# Ignore storage (uploaded files in development and any SQLite databases). +/storage/* +!/storage/.keep +/tmp/storage/* +!/tmp/storage/ +!/tmp/storage/.keep *.pdf /debshots2.sublime-workspace +/public/assets + /node_modules/ /vendor/bundle/ruby/ /vendor/ruby/ @@ -39,9 +51,16 @@ /.vscode *.sql +# Ignore master key for decrypting credentials and more. +/config/master.key # Automatically generated yardoc doc/*.html .yardoc/ doc/js/*.js .byebug_history debshots-workspace.code-workspace + +/app/assets/builds/* +!/app/assets/builds/.keep + +/node_modules diff --git a/.kamal/hooks/docker-setup.sample b/.kamal/hooks/docker-setup.sample new file mode 100755 index 0000000..2fb07d7 --- /dev/null +++ b/.kamal/hooks/docker-setup.sample @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Docker set up on $KAMAL_HOSTS..." diff --git a/.kamal/hooks/post-app-boot.sample b/.kamal/hooks/post-app-boot.sample new file mode 100755 index 0000000..70f9c4b --- /dev/null +++ b/.kamal/hooks/post-app-boot.sample @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Booted app version $KAMAL_VERSION on $KAMAL_HOSTS..." diff --git a/.kamal/hooks/post-deploy.sample b/.kamal/hooks/post-deploy.sample new file mode 100755 index 0000000..75efafc --- /dev/null +++ b/.kamal/hooks/post-deploy.sample @@ -0,0 +1,14 @@ +#!/bin/sh + +# A sample post-deploy hook +# +# These environment variables are available: +# KAMAL_RECORDED_AT +# KAMAL_PERFORMER +# KAMAL_VERSION +# KAMAL_HOSTS +# KAMAL_ROLE (if set) +# KAMAL_DESTINATION (if set) +# KAMAL_RUNTIME + +echo "$KAMAL_PERFORMER deployed $KAMAL_VERSION to $KAMAL_DESTINATION in $KAMAL_RUNTIME seconds" diff --git a/.kamal/hooks/post-proxy-reboot.sample b/.kamal/hooks/post-proxy-reboot.sample new file mode 100755 index 0000000..1435a67 --- /dev/null +++ b/.kamal/hooks/post-proxy-reboot.sample @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Rebooted kamal-proxy on $KAMAL_HOSTS" diff --git a/.kamal/hooks/pre-app-boot.sample b/.kamal/hooks/pre-app-boot.sample new file mode 100755 index 0000000..45f7355 --- /dev/null +++ b/.kamal/hooks/pre-app-boot.sample @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Booting app version $KAMAL_VERSION on $KAMAL_HOSTS..." diff --git a/.kamal/hooks/pre-build.sample b/.kamal/hooks/pre-build.sample new file mode 100755 index 0000000..f87d811 --- /dev/null +++ b/.kamal/hooks/pre-build.sample @@ -0,0 +1,51 @@ +#!/bin/sh + +# A sample pre-build hook +# +# Checks: +# 1. We have a clean checkout +# 2. A remote is configured +# 3. The branch has been pushed to the remote +# 4. The version we are deploying matches the remote +# +# These environment variables are available: +# KAMAL_RECORDED_AT +# KAMAL_PERFORMER +# KAMAL_VERSION +# KAMAL_HOSTS +# KAMAL_ROLE (if set) +# KAMAL_DESTINATION (if set) + +if [ -n "$(git status --porcelain)" ]; then + echo "Git checkout is not clean, aborting..." >&2 + git status --porcelain >&2 + exit 1 +fi + +first_remote=$(git remote) + +if [ -z "$first_remote" ]; then + echo "No git remote set, aborting..." >&2 + exit 1 +fi + +current_branch=$(git branch --show-current) + +if [ -z "$current_branch" ]; then + echo "Not on a git branch, aborting..." >&2 + exit 1 +fi + +remote_head=$(git ls-remote $first_remote --tags $current_branch | cut -f1) + +if [ -z "$remote_head" ]; then + echo "Branch not pushed to remote, aborting..." >&2 + exit 1 +fi + +if [ "$KAMAL_VERSION" != "$remote_head" ]; then + echo "Version ($KAMAL_VERSION) does not match remote HEAD ($remote_head), aborting..." >&2 + exit 1 +fi + +exit 0 diff --git a/.kamal/hooks/pre-connect.sample b/.kamal/hooks/pre-connect.sample new file mode 100755 index 0000000..18e61d7 --- /dev/null +++ b/.kamal/hooks/pre-connect.sample @@ -0,0 +1,47 @@ +#!/usr/bin/env ruby + +# A sample pre-connect check +# +# Warms DNS before connecting to hosts in parallel +# +# These environment variables are available: +# KAMAL_RECORDED_AT +# KAMAL_PERFORMER +# KAMAL_VERSION +# KAMAL_HOSTS +# KAMAL_ROLE (if set) +# KAMAL_DESTINATION (if set) +# KAMAL_RUNTIME + +hosts = ENV["KAMAL_HOSTS"].split(",") +results = nil +max = 3 + +elapsed = Benchmark.realtime do + results = hosts.map do |host| + Thread.new do + tries = 1 + + begin + Socket.getaddrinfo(host, 0, Socket::AF_UNSPEC, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) + rescue SocketError + if tries < max + puts "Retrying DNS warmup: #{host}" + tries += 1 + sleep rand + retry + else + puts "DNS warmup failed: #{host}" + host + end + end + + tries + end + end.map(&:value) +end + +retries = results.sum - hosts.size +nopes = results.count { |r| r == max } + +puts "Prewarmed %d DNS lookups in %.2f sec: %d retries, %d failures" % [ hosts.size, elapsed, retries, nopes ] diff --git a/.kamal/hooks/pre-deploy.sample b/.kamal/hooks/pre-deploy.sample new file mode 100755 index 0000000..1b280c7 --- /dev/null +++ b/.kamal/hooks/pre-deploy.sample @@ -0,0 +1,109 @@ +#!/usr/bin/env ruby + +# A sample pre-deploy hook +# +# Checks the Github status of the build, waiting for a pending build to complete for up to 720 seconds. +# +# Fails unless the combined status is "success" +# +# These environment variables are available: +# KAMAL_RECORDED_AT +# KAMAL_PERFORMER +# KAMAL_VERSION +# KAMAL_HOSTS +# KAMAL_COMMAND +# KAMAL_SUBCOMMAND +# KAMAL_ROLE (if set) +# KAMAL_DESTINATION (if set) + +# Only check the build status for production deployments +if ENV["KAMAL_COMMAND"] == "rollback" || ENV["KAMAL_DESTINATION"] != "production" + exit 0 +end + +require "bundler/inline" + +# true = install gems so this is fast on repeat invocations +gemfile(true, quiet: true) do + source "https://rubygems.org" + + gem "octokit" + gem "faraday-retry" +end + +MAX_ATTEMPTS = 72 +ATTEMPTS_GAP = 10 + +def exit_with_error(message) + $stderr.puts message + exit 1 +end + +class GithubStatusChecks + attr_reader :remote_url, :git_sha, :github_client, :combined_status + + def initialize + @remote_url = `git config --get remote.origin.url`.strip.delete_prefix("https://github.com/") + @git_sha = `git rev-parse HEAD`.strip + @github_client = Octokit::Client.new(access_token: ENV["GITHUB_TOKEN"]) + refresh! + end + + def refresh! + @combined_status = github_client.combined_status(remote_url, git_sha) + end + + def state + combined_status[:state] + end + + def first_status_url + first_status = combined_status[:statuses].find { |status| status[:state] == state } + first_status && first_status[:target_url] + end + + def complete_count + combined_status[:statuses].count { |status| status[:state] != "pending"} + end + + def total_count + combined_status[:statuses].count + end + + def current_status + if total_count > 0 + "Completed #{complete_count}/#{total_count} checks, see #{first_status_url} ..." + else + "Build not started..." + end + end +end + + +$stdout.sync = true + +puts "Checking build status..." +attempts = 0 +checks = GithubStatusChecks.new + +begin + loop do + case checks.state + when "success" + puts "Checks passed, see #{checks.first_status_url}" + exit 0 + when "failure" + exit_with_error "Checks failed, see #{checks.first_status_url}" + when "pending" + attempts += 1 + end + + exit_with_error "Checks are still pending, gave up after #{MAX_ATTEMPTS * ATTEMPTS_GAP} seconds" if attempts == MAX_ATTEMPTS + + puts checks.current_status + sleep(ATTEMPTS_GAP) + checks.refresh! + end +rescue Octokit::NotFound + exit_with_error "Build status could not be found" +end diff --git a/.kamal/hooks/pre-proxy-reboot.sample b/.kamal/hooks/pre-proxy-reboot.sample new file mode 100755 index 0000000..061f805 --- /dev/null +++ b/.kamal/hooks/pre-proxy-reboot.sample @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Rebooting kamal-proxy on $KAMAL_HOSTS..." diff --git a/.kamal/secrets b/.kamal/secrets new file mode 100644 index 0000000..9a771a3 --- /dev/null +++ b/.kamal/secrets @@ -0,0 +1,17 @@ +# Secrets defined here are available for reference under registry/password, env/secret, builder/secrets, +# and accessories/*/env/secret in config/deploy.yml. All secrets should be pulled from either +# password manager, ENV, or a file. DO NOT ENTER RAW CREDENTIALS HERE! This file needs to be safe for git. + +# Example of extracting secrets from 1password (or another compatible pw manager) +# SECRETS=$(kamal secrets fetch --adapter 1password --account your-account --from Vault/Item KAMAL_REGISTRY_PASSWORD RAILS_MASTER_KEY) +# KAMAL_REGISTRY_PASSWORD=$(kamal secrets extract KAMAL_REGISTRY_PASSWORD ${SECRETS}) +# RAILS_MASTER_KEY=$(kamal secrets extract RAILS_MASTER_KEY ${SECRETS}) + +# Use a GITHUB_TOKEN if private repositories are needed for the image +# GITHUB_TOKEN=$(gh config get -h github.com oauth_token) + +# Grab the registry password from ENV +KAMAL_REGISTRY_PASSWORD=$KAMAL_REGISTRY_PASSWORD + +# Improve security by using a password manager. Never check config/master.key into git! +RAILS_MASTER_KEY=$(cat config/master.key) diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..504ae56 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +23.7.0 diff --git a/.solargraph.yml b/.solargraph.yml deleted file mode 100644 index de93f6a..0000000 --- a/.solargraph.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -include: -- "**/*.rb" -exclude: -- spec/**/* -- test/**/* -- vendor/**/* -- ".bundle/**/*" -require: [] -domains: [] -reporters: -- rubocop -- require_not_found -require_paths: [] -plugins: [] -max_files: 5000 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4d93ada --- /dev/null +++ b/Dockerfile @@ -0,0 +1,86 @@ +# syntax=docker/dockerfile:1 +# check=error=true + +# This Dockerfile is designed for production, not development. Use with Kamal or build'n'run by hand: +# docker build -t example . +# docker run -d -p 80:80 -e RAILS_MASTER_KEY= --name example example + +# For a containerized dev environment, see Dev Containers: https://guides.rubyonrails.org/getting_started_with_devcontainer.html + +# Make sure RUBY_VERSION matches the Ruby version in .ruby-version +ARG RUBY_VERSION=3.2.4 +FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base + +# Rails app lives here +WORKDIR /rails + +# Install base packages +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y curl libjemalloc2 libvips sqlite3 && \ + rm -rf /var/lib/apt/lists /var/cache/apt/archives + +# Set production environment +ENV RAILS_ENV="production" \ + BUNDLE_DEPLOYMENT="1" \ + BUNDLE_PATH="/usr/local/bundle" \ + BUNDLE_WITHOUT="development" + +# Throw-away build stage to reduce size of final image +FROM base AS build + +# Install packages needed to build gems and node modules +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y build-essential git libyaml-dev node-gyp pkg-config python-is-python3 && \ + rm -rf /var/lib/apt/lists /var/cache/apt/archives + +# Install JavaScript dependencies +ARG NODE_VERSION=23.7.0 +ARG YARN_VERSION=1.22.22 +ENV PATH=/usr/local/node/bin:$PATH +RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \ + /tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \ + npm install -g yarn@$YARN_VERSION && \ + rm -rf /tmp/node-build-master + +# Install application gems +COPY Gemfile Gemfile.lock ./ +RUN bundle install && \ + rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \ + bundle exec bootsnap precompile --gemfile + +# Install node modules +COPY package.json yarn.lock ./ +RUN yarn install --immutable + +# Copy application code +COPY . . + +# Precompile bootsnap code for faster boot times +RUN bundle exec bootsnap precompile app/ lib/ + +# Precompiling assets for production without requiring secret RAILS_MASTER_KEY +RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile + + +RUN rm -rf node_modules + + +# Final stage for app image +FROM base + +# Copy built artifacts: gems, application +COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}" +COPY --from=build /rails /rails + +# Run and own only the runtime files as a non-root user for security +RUN groupadd --system --gid 1000 rails && \ + useradd rails --uid 1000 --gid 1000 --create-home --shell /bin/bash && \ + chown -R rails:rails db log storage tmp +USER 1000:1000 + +# Entrypoint prepares the database. +ENTRYPOINT ["/rails/bin/docker-entrypoint"] + +# Start server via Thruster by default, this can be overwritten at runtime +EXPOSE 80 +CMD ["./bin/thrust", "./bin/rails", "server"] diff --git a/Gemfile b/Gemfile index 6a446b3..be73b9a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,75 +1,76 @@ -source 'https://rubygems.org' +source "https://rubygems.org" -ruby '3.2.4' +# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" +gem "rails", "~> 8.0.2" +# The modern asset pipeline for Rails [https://github.com/rails/propshaft] +gem "propshaft" +# Use sqlite3 as the database for Active Record +gem "sqlite3", ">= 2.1" +# Use the Puma web server [https://github.com/puma/puma] +gem "puma", ">= 5.0" +# Bundle and transpile JavaScript [https://github.com/rails/jsbundling-rails] +gem "jsbundling-rails" +# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] +# gem "turbo-rails" +# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] +# gem "stimulus-rails" +# Bundle and process CSS [https://github.com/rails/cssbundling-rails] +gem "cssbundling-rails" +# Build JSON APIs with ease [https://github.com/rails/jbuilder] +gem "jbuilder" -# https://github.com/ruby/net-protocol/issues/10 -gem 'net-http' - -# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -# gem 'rails', '~> 6.0' -gem 'rails', '~> 7.2' - -gem 'bootsnap' -# gem 'webpacker' +# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] +# gem "bcrypt", "~> 3.1.7" # File handling gem 'shrine', '~> 3.0' +# Use the database-backed adapters for Rails.cache, Active Job, and Action Cable +gem "solid_cache" +gem "solid_queue" +gem "solid_cable" + # To create variants (different sizes) of screenshot images gem 'fastimage' gem 'image_processing' gem 'mini_magick' -# Use Puma as the app server -gem 'puma', '~> 6.6.0' +# Reduces boot times through caching; required in config/boot.rb +gem "bootsnap", require: false -# Use SCSS for stylesheets -# gem 'sass-rails', '~> 6.0.0' -# gem 'dartsass-rails' -# TODO: ruby sass is decprecated +# Deploy this application anywhere as a Docker container [https://kamal-deploy.org] +gem "kamal", require: false -# Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 4.2.1' +# Add HTTP asset caching/compression and X-Sendfile acceleration to Puma [https://github.com/basecamp/thruster/] +gem "thruster", require: false -# See https://github.com/rails/execjs#readme for more supported runtimes -# gem 'therubyracer', platforms: :ruby +# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images] +# gem "image_processing", "~> 1.2" -# Use jquery as the JavaScript library -gem 'jquery-rails' +group :development, :test do + # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem + gem "debug", platforms: %i[ mri windows ], require: "debug/prelude" -# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks -gem 'turbolinks', '~> 5' + # Static analysis for security vulnerabilities [https://brakemanscanner.org/] + gem "brakeman", require: false -# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder -gem 'jbuilder', '~> 2.13.0' - -# Use Redis adapter to run Action Cable in production -# gem 'redis', '~> 3.0' -# Use ActiveModel has_secure_password -# gem 'bcrypt', '~> 3.1.7' - -# Use Capistrano for deployment -# gem 'capistrano-rails', group: :development - -gem 'rails-healthcheck' + # Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/] + gem "rubocop-rails-omakase", require: false +end group :development do + # Use console on exceptions pages [https://github.com/rails/web-console] # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. - # gem 'web-console' + gem "web-console" gem 'listen', '~> 3.5' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring - gem 'better_errors' - gem 'binding_of_caller' - gem 'spring' - gem 'spring-watcher-listen', '~> 2.0.0' + #gem 'better_errors' + #gem 'binding_of_caller' + #gem 'spring' + #gem 'spring-watcher-listen', '~> 2.0.0' gem 'rails-erd' - # Chrome Rails debugging app – broken with Rails 6.1 – leads to "stack level too deep" - # gem 'meta_request' - - # VS Code code-intelligence - # gem 'solargraph' gem 'ruby-lsp' gem 'rufo' end @@ -93,8 +94,6 @@ group :development, :test do gem 'minitest-rails' gem 'minitest-reporters' - gem 'debug' - # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platform: :mri @@ -102,19 +101,15 @@ group :development, :test do end group :test do - gem 'capybara' - gem 'selenium-webdriver' + # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] + gem "capybara" + gem "selenium-webdriver" end # TODO… https://github.com/galetahub/simple-captcha # Captcha for anonymous reports # gem "galetahub-simple_captcha", :require => "simple_captcha" -# Zurb Foundation -# https://github.com/zurb/foundation-rails -gem 'autoprefixer-rails' -gem 'foundation-rails', '~> 6.9.0.0' - # Pagination gem 'will_paginate' @@ -139,7 +134,7 @@ gem 'font-awesome-rails' # gem "recaptcha", require: "recaptcha/rails" -gem 'sprockets-rails' +#gem 'sprockets-rails' # gem "activemodel-serializers-xml" @@ -163,3 +158,7 @@ gem 'cancancan' gem 'gravtastic' gem 'bzip2-ffi' + +#gem "dartsass-rails", "~> 0.5.1" + +gem 'rails-healthcheck' diff --git a/Gemfile.lock b/Gemfile.lock index f3babcb..bc779ca 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,66 +1,65 @@ GEM remote: https://rubygems.org/ specs: - actioncable (7.2.2.1) - actionpack (= 7.2.2.1) - activesupport (= 7.2.2.1) + actioncable (8.0.2) + actionpack (= 8.0.2) + activesupport (= 8.0.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.2.2.1) - actionpack (= 7.2.2.1) - activejob (= 7.2.2.1) - activerecord (= 7.2.2.1) - activestorage (= 7.2.2.1) - activesupport (= 7.2.2.1) + actionmailbox (8.0.2) + actionpack (= 8.0.2) + activejob (= 8.0.2) + activerecord (= 8.0.2) + activestorage (= 8.0.2) + activesupport (= 8.0.2) mail (>= 2.8.0) - actionmailer (7.2.2.1) - actionpack (= 7.2.2.1) - actionview (= 7.2.2.1) - activejob (= 7.2.2.1) - activesupport (= 7.2.2.1) + actionmailer (8.0.2) + actionpack (= 8.0.2) + actionview (= 8.0.2) + activejob (= 8.0.2) + activesupport (= 8.0.2) mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.2.2.1) - actionview (= 7.2.2.1) - activesupport (= 7.2.2.1) + actionpack (8.0.2) + actionview (= 8.0.2) + activesupport (= 8.0.2) nokogiri (>= 1.8.5) - racc - rack (>= 2.2.4, < 3.2) + rack (>= 2.2.4) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) useragent (~> 0.16) - actiontext (7.2.2.1) - actionpack (= 7.2.2.1) - activerecord (= 7.2.2.1) - activestorage (= 7.2.2.1) - activesupport (= 7.2.2.1) + actiontext (8.0.2) + actionpack (= 8.0.2) + activerecord (= 8.0.2) + activestorage (= 8.0.2) + activesupport (= 8.0.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.2.2.1) - activesupport (= 7.2.2.1) + actionview (8.0.2) + activesupport (= 8.0.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.2.2.1) - activesupport (= 7.2.2.1) + activejob (8.0.2) + activesupport (= 8.0.2) globalid (>= 0.3.6) - activemodel (7.2.2.1) - activesupport (= 7.2.2.1) - activerecord (7.2.2.1) - activemodel (= 7.2.2.1) - activesupport (= 7.2.2.1) + activemodel (8.0.2) + activesupport (= 8.0.2) + activerecord (8.0.2) + activemodel (= 8.0.2) + activesupport (= 8.0.2) timeout (>= 0.4.0) - activestorage (7.2.2.1) - actionpack (= 7.2.2.1) - activejob (= 7.2.2.1) - activerecord (= 7.2.2.1) - activesupport (= 7.2.2.1) + activestorage (8.0.2) + actionpack (= 8.0.2) + activejob (= 8.0.2) + activerecord (= 8.0.2) + activesupport (= 8.0.2) marcel (~> 1.0) - activesupport (7.2.2.1) + activesupport (8.0.2) base64 benchmark (>= 0.3) bigdecimal @@ -72,30 +71,24 @@ GEM minitest (>= 5.1) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) aes_key_wrap (1.1.0) ansi (1.5.0) + ast (2.4.2) attr_required (1.0.2) - autoprefixer-rails (10.4.19.0) - execjs (~> 2) - babel-source (5.8.35) - babel-transpiler (0.7.0) - babel-source (>= 4.0, < 6) - execjs (~> 2.0) base64 (0.2.0) bcrypt (3.1.20) + bcrypt_pbkdf (1.1.1) benchmark (0.4.0) - better_errors (2.10.1) - erubi (>= 1.0.0) - rack (>= 0.9.0) - rouge (>= 1.0.0) bigdecimal (3.1.9) bindata (2.5.0) - binding_of_caller (1.0.1) - debug_inspector (>= 1.2.0) + bindex (0.8.1) bootsnap (1.18.4) msgpack (~> 1.2) + brakeman (7.0.0) + racc builder (3.3.0) byebug (11.1.3) bzip2-ffi (1.1.1) @@ -116,24 +109,28 @@ GEM connection_pool (2.5.0) content_disposition (1.0.0) crass (1.0.6) + cssbundling-rails (1.4.3) + railties (>= 6.0.0) date (3.4.1) debug (1.10.0) irb (~> 1.10) reline (>= 0.3.8) - debug_inspector (1.2.0) devise (4.9.4) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) responders warden (~> 1.2.3) + dotenv (3.1.7) down (5.4.2) addressable (~> 2.8) drb (2.2.1) + ed25519 (1.3.0) email_validator (2.2.4) activemodel erubi (1.13.1) - execjs (2.10.0) + et-orbi (1.2.11) + tzinfo factory_bot (6.5.1) activesupport (>= 6.1.0) factory_bot_rails (6.4.4) @@ -152,10 +149,9 @@ GEM font-awesome-rails (4.7.0.9) railties (>= 3.2, < 9.0) formatador (1.1.0) - foundation-rails (6.9.0.0) - railties (>= 3.1.0) - sassc - sprockets-es6 + fugit (1.11.1) + et-orbi (~> 1, >= 1.2.11) + raabro (~> 1.4) globalid (1.2.1) activesupport (>= 6.1) gravtastic (3.2.6) @@ -191,10 +187,8 @@ GEM jbuilder (2.13.0) actionview (>= 5.0.0) activesupport (>= 5.0.0) - jquery-rails (4.6.0) - rails-dom-testing (>= 1, < 3) - railties (>= 4.2.0) - thor (>= 0.14, < 2.0) + jsbundling-rails (1.3.1) + railties (>= 6.0.0) json (2.10.2) json-jwt (1.16.7) activesupport (>= 4.2) @@ -203,7 +197,19 @@ GEM bindata faraday (~> 2.0) faraday-follow_redirects + kamal (2.5.3) + activesupport (>= 7.0) + base64 (~> 0.2) + bcrypt_pbkdf (~> 1.0) + concurrent-ruby (~> 1.2) + dotenv (~> 3.1) + ed25519 (~> 1.2) + net-ssh (~> 7.3) + sshkit (>= 1.23.0, < 2.0) + thor (~> 1.3) + zeitwerk (>= 2.6.18, < 3.0) language_server-protocol (3.17.0.4) + lint_roller (1.1.0) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) @@ -225,9 +231,9 @@ GEM logger mini_mime (1.1.5) minitest (5.25.5) - minitest-rails (7.2.0) + minitest-rails (8.0.0) minitest (~> 5.20) - railties (>= 7.2.0, < 8.0.0) + railties (>= 8.0.0, < 8.1.0) minitest-reporters (1.7.1) ansi builder @@ -244,10 +250,15 @@ GEM net-protocol net-protocol (0.2.2) timeout + net-scp (4.1.0) + net-ssh (>= 2.6.5, < 8.0.0) + net-sftp (4.0.0) + net-ssh (>= 5.0.0, < 8.0.0) net-smtp (0.5.1) net-protocol + net-ssh (7.3.0) nio4r (2.7.4) - nokogiri (1.18.3-x86_64-linux-gnu) + nokogiri (1.18.4-x86_64-linux-gnu) racc (~> 1.4) notiffany (0.1.3) nenv (~> 0.1) @@ -277,6 +288,10 @@ GEM webfinger (~> 2.0) orm_adapter (0.5.0) ostruct (0.6.1) + parallel (1.26.3) + parser (3.3.7.1) + ast (~> 2.4.1) + racc pg (1.5.9) pg_search (2.3.7) activerecord (>= 6.1) @@ -285,6 +300,11 @@ GEM prettyprint prettyprint (0.2.0) prism (1.3.0) + propshaft (1.1.0) + actionpack (>= 7.0.0) + activesupport (>= 7.0.0) + rack + railties (>= 7.0.0) pry (0.15.2) coderay (~> 1.1) method_source (~> 1.0) @@ -294,6 +314,7 @@ GEM public_suffix (6.0.1) puma (6.6.0) nio4r (~> 2.0) + raabro (1.4.0) racc (1.8.1) rack (3.1.12) rack-oauth2 (2.2.1) @@ -314,20 +335,20 @@ GEM rack (>= 1.3) rackup (2.2.1) rack (>= 3) - rails (7.2.2.1) - actioncable (= 7.2.2.1) - actionmailbox (= 7.2.2.1) - actionmailer (= 7.2.2.1) - actionpack (= 7.2.2.1) - actiontext (= 7.2.2.1) - actionview (= 7.2.2.1) - activejob (= 7.2.2.1) - activemodel (= 7.2.2.1) - activerecord (= 7.2.2.1) - activestorage (= 7.2.2.1) - activesupport (= 7.2.2.1) + rails (8.0.2) + actioncable (= 8.0.2) + actionmailbox (= 8.0.2) + actionmailer (= 8.0.2) + actionpack (= 8.0.2) + actiontext (= 8.0.2) + actionview (= 8.0.2) + activejob (= 8.0.2) + activemodel (= 8.0.2) + activerecord (= 8.0.2) + activestorage (= 8.0.2) + activesupport (= 8.0.2) bundler (>= 1.15.0) - railties (= 7.2.2.1) + railties (= 8.0.2) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest @@ -343,14 +364,15 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.2.2.1) - actionpack (= 7.2.2.1) - activesupport (= 7.2.2.1) + railties (8.0.2) + actionpack (= 8.0.2) + activesupport (= 8.0.2) irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) zeitwerk (~> 2.6) + rainbow (3.1.1) rake (13.2.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) @@ -366,7 +388,33 @@ GEM actionpack (>= 5.2) railties (>= 5.2) rexml (3.4.1) - rouge (4.5.1) + rubocop (1.74.0) + json (~> 2.3) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.38.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.38.1) + parser (>= 3.3.1.0) + rubocop-performance (1.24.0) + lint_roller (~> 1.1) + rubocop (>= 1.72.1, < 2.0) + rubocop-ast (>= 1.38.0, < 2.0) + rubocop-rails (2.30.3) + activesupport (>= 4.2.0) + lint_roller (~> 1.1) + rack (>= 1.1) + rubocop (>= 1.72.1, < 2.0) + rubocop-ast (>= 1.38.0, < 2.0) + rubocop-rails-omakase (1.1.0) + rubocop (>= 1.72) + rubocop-performance (>= 1.24) + rubocop-rails (>= 2.30) ruby-graphviz (1.2.5) rexml ruby-lsp (0.23.11) @@ -380,8 +428,6 @@ GEM logger rubyzip (2.4.1) rufo (0.18.1) - sassc (2.4.0) - ffi (~> 1.9) sdoc (2.6.1) rdoc (>= 5.0) securerandom (0.4.1) @@ -402,22 +448,31 @@ GEM actionpack (>= 3.1) railties (>= 3.1) slim (>= 3.0, < 6.0, != 5.0.0) - sorbet-runtime (0.5.11930) - spring (2.1.1) - spring-watcher-listen (2.0.1) - listen (>= 2.7, < 4.0) - spring (>= 1.2, < 3.0) - sprockets (4.2.1) - concurrent-ruby (~> 1.0) - rack (>= 2.2.4, < 4) - sprockets-es6 (0.9.2) - babel-source (>= 5.8.11) - babel-transpiler - sprockets (>= 3.0.0) - sprockets-rails (3.5.2) - actionpack (>= 6.1) - activesupport (>= 6.1) - sprockets (>= 3.0.0) + solid_cable (3.0.7) + actioncable (>= 7.2) + activejob (>= 7.2) + activerecord (>= 7.2) + railties (>= 7.2) + solid_cache (1.0.7) + activejob (>= 7.2) + activerecord (>= 7.2) + railties (>= 7.2) + solid_queue (1.1.3) + activejob (>= 7.1) + activerecord (>= 7.1) + concurrent-ruby (>= 1.3.1) + fugit (~> 1.11.0) + railties (>= 7.1) + thor (~> 1.3.1) + sorbet-runtime (0.5.11934) + sqlite3 (2.6.0-x86_64-linux-gnu) + sshkit (1.24.0) + base64 + logger + net-scp (>= 1.1.2) + net-sftp (>= 2.1.2) + net-ssh (>= 2.8.0) + ostruct stringio (3.1.5) swd (2.0.3) activesupport (>= 3) @@ -426,15 +481,14 @@ GEM faraday-follow_redirects temple (0.10.3) thor (1.3.2) + thruster (0.1.12-x86_64-linux) tilt (2.6.0) timeout (0.4.3) - turbolinks (5.2.1) - turbolinks-source (~> 5.2) - turbolinks-source (5.2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - uglifier (4.2.1) - execjs (>= 0.3.0, < 3) + unicode-display_width (3.1.4) + unicode-emoji (~> 4.0, >= 4.0.4) + unicode-emoji (4.0.4) uri (1.0.3) useragent (0.16.11) validate_url (1.0.15) @@ -442,6 +496,11 @@ GEM public_suffix warden (1.2.9) rack (>= 2.0.9) + web-console (4.2.1) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) webfinger (2.1.3) activesupport faraday (~> 2.0) @@ -459,59 +518,57 @@ GEM zeitwerk (2.7.2) PLATFORMS - x86_64-linux + x86_64-linux-gnu DEPENDENCIES - autoprefixer-rails - better_errors - binding_of_caller bootsnap + brakeman byebug bzip2-ffi cancancan capybara + cssbundling-rails debug devise factory_bot_rails fastimage font-awesome-rails - foundation-rails (~> 6.9.0.0) gravtastic guard-minitest guard-rails image_processing - jbuilder (~> 2.13.0) - jquery-rails + jbuilder + jsbundling-rails + kamal listen (~> 3.5) mini_magick minitest-rails minitest-reporters - net-http omniauth omniauth-rails_csrf_protection omniauth_openid_connect pg pg_search - puma (~> 6.6.0) - rails (~> 7.2) + propshaft + puma (>= 5.0) + rails (~> 8.0.2) rails-erd rails-healthcheck + rubocop-rails-omakase ruby-lsp rufo sdoc selenium-webdriver shrine (~> 3.0) slim-rails - spring - spring-watcher-listen (~> 2.0.0) - sprockets-rails - turbolinks (~> 5) - uglifier (>= 4.2.1) + solid_cable + solid_cache + solid_queue + sqlite3 (>= 2.1) + thruster + web-console will_paginate will_paginate-foundation -RUBY VERSION - ruby 3.2.4p170 - BUNDLED WITH 2.5.14 diff --git a/Procfile.dev b/Procfile.dev new file mode 100644 index 0000000..3d2a66e --- /dev/null +++ b/Procfile.dev @@ -0,0 +1,3 @@ +web: env RUBY_DEBUG_OPEN=true bin/rails server +js: yarn build --watch +css: bun run build:css --watch diff --git a/Rakefile b/Rakefile index b2b4e1d..9a5ea73 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,6 @@ # Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. -require File.expand_path('../config/application', __FILE__) +require_relative "config/application" -Debshots::Application.load_tasks +Rails.application.load_tasks diff --git a/add_admin.rake b/add_admin.rake new file mode 100644 index 0000000..5e27580 --- /dev/null +++ b/add_admin.rake @@ -0,0 +1,31 @@ +namespace :debshots do + desc "Remove duplicate images" + + task :remove_duplicate_images => :environment do + Rails.logger = Logger.new(STDOUT) + Rails.logger.level = Logger::INFO + #Rails.logger.level = Logger::DEBUG + + Rails.logger.info "Removing packages with 'nil' screenshots" + + Screenshot.where(image_fingerprint: nil).each do |ss| + Rails.logger.info "Destroying screenshot #{ss.id} of package #{ss.package.name} that has nil data" + ss.destroy + end + + Rails.logger.info "Removing packages with duplicate screenshot checksums" + + loop do + destroyed = 0 + Screenshot.select(:package_id, :image_fingerprint).group(:package_id, :image_fingerprint, :created_at).having("count(*) > 1").each do |ss| + # Look again for screenshots of this fingerprint. + # This extra step may seem stupid but the above query lead to package_id=NULL results sometimes. + del = Screenshot.find_by(image_fingerprint: ss.image_fingerprint) + Rails.logger.info "Destroying duplicate screenshot #{del.id} of package #{del.package.name}" + del.destroy + destroyed += 1 + end + break if destroyed == 0 + end + end +end diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/builds/application.css b/app/assets/builds/application.css index 8b13789..853d0b6 100644 --- a/app/assets/builds/application.css +++ b/app/assets/builds/application.css @@ -1 +1,8669 @@ +@charset "UTF-8"; +/** + * Foundation for Sites + * Version 6.9.0 + * https://get.foundation + * Licensed under MIT Open Source + */ +@media print, screen and (min-width: 40em) { + .reveal.large, .reveal.small, .reveal.tiny, .reveal { + right: auto; + left: auto; + margin: 0 auto; + } +} +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; +} + +abbr[title] { + border-bottom: 0; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +img { + border-style: none; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0; +} + +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details { + display: block; +} + +summary { + display: list-item; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +[data-whatintent=mouse] *, [data-whatintent=mouse] *:focus, +[data-whatintent=touch] *, +[data-whatintent=touch] *:focus, +[data-whatinput=mouse] *, +[data-whatinput=mouse] *:focus, +[data-whatinput=touch] *, +[data-whatinput=touch] *:focus { + outline: none; +} + +[draggable=false] { + -webkit-touch-callout: none; + -webkit-user-select: none; +} + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; +} + +html { + box-sizing: border-box; + font-size: 100%; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +body { + margin: 0; + padding: 0; + background: #fefefe; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img { + display: inline-block; + vertical-align: middle; + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; +} + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; +} + +select { + box-sizing: border-box; + width: 100%; + border-radius: 0; +} + +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; +} + +button { + padding: 0; + appearance: none; + border: 0; + border-radius: 0; + background: transparent; + line-height: 1; + cursor: auto; +} +[data-whatinput=mouse] button { + outline: 0; +} + +pre { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; +} + +.is-visible { + display: block !important; +} + +.is-hidden { + display: none !important; +} + +[type=text], [type=password], [type=date], [type=datetime], [type=datetime-local], [type=month], [type=week], [type=email], [type=number], [type=search], [type=tel], [type=time], [type=url], [type=color], +textarea { + appearance: none; + display: block; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + margin: 0 0 1rem; + padding: 0.5rem; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +} +[type=text]:focus, [type=password]:focus, [type=date]:focus, [type=datetime]:focus, [type=datetime-local]:focus, [type=month]:focus, [type=week]:focus, [type=email]:focus, [type=number]:focus, [type=search]:focus, [type=tel]:focus, [type=time]:focus, [type=url]:focus, [type=color]:focus, +textarea:focus { + outline: none; + border: 1px solid #8a8a8a; + background-color: #fefefe; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +} + +textarea { + max-width: 100%; +} +textarea[rows] { + height: auto; +} + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; +} + +[type=submit], +[type=button] { + appearance: none; + border-radius: 0; +} + +input[type=search] { + box-sizing: border-box; +} + +::placeholder { + color: #cacaca; +} + +[type=file], +[type=checkbox], +[type=radio] { + margin: 0 0 1rem; +} + +[type=checkbox] + label, +[type=radio] + label { + display: inline-block; + vertical-align: baseline; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; +} +[type=checkbox] + label[for], +[type=radio] + label[for] { + cursor: pointer; +} + +label > [type=checkbox], +label > [type=radio] { + margin-right: 0.5rem; +} + +[type=file] { + width: 100%; +} + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; +} +label.middle { + margin: 0 0 1rem; + line-height: 1.5; + padding: 0.5625rem 0; +} + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; +} + +.input-group { + display: flex; + width: 100%; + margin-bottom: 1rem; + align-items: stretch; +} +.input-group > :first-child, .input-group > :first-child.input-group-button > * { + border-radius: 0 0 0 0; +} +.input-group > :last-child, .input-group > :last-child.input-group-button > * { + border-radius: 0 0 0 0; +} + +.input-group-button a, +.input-group-button input, +.input-group-button button, +.input-group-button label, .input-group-button, .input-group-field, .input-group-label { + margin: 0; + white-space: nowrap; +} + +.input-group-label { + padding: 0 1rem; + border: 1px solid #cacaca; + background: #e6e6e6; + color: #0a0a0a; + text-align: center; + white-space: nowrap; + display: flex; + flex: 0 0 auto; + align-items: center; +} +.input-group-label:first-child { + border-right: 0; +} +.input-group-label:last-child { + border-left: 0; +} + +.input-group-field { + border-radius: 0; + flex: 1 1 0px; + min-width: 0; +} + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + display: flex; + flex: 0 0 auto; +} +.input-group-button a, +.input-group-button input, +.input-group-button button, +.input-group-button label { + align-self: stretch; + height: auto; + padding-top: 0; + padding-bottom: 0; + font-size: 1rem; +} + +fieldset { + margin: 0; + padding: 0; + border: 0; +} + +legend { + max-width: 100%; + margin-bottom: 0.5rem; +} + +.fieldset { + margin: 1.125rem 0; + padding: 1.25rem; + border: 1px solid #cacaca; +} +.fieldset legend { + margin: 0; + margin-left: -0.1875rem; + padding: 0 0.1875rem; +} + +select { + height: 2.4375rem; + margin: 0 0 1rem; + padding: 0.5rem; + appearance: none; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + background-origin: content-box; + background-position: right -1rem center; + background-repeat: no-repeat; + background-size: 9px 6px; + padding-right: 1.5rem; + background-image: url('data:image/svg+xml;utf8,'); +} +@media screen and (min-width: 0\0 ) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); + } +} +select:focus { + outline: none; + border: 1px solid #8a8a8a; + background-color: #fefefe; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +} +select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; +} +select::-ms-expand { + display: none; +} +select[multiple] { + height: auto; + background-image: none; +} +select:not([multiple]) { + padding-top: 0; + padding-bottom: 0; +} + +.is-invalid-input:not(:focus) { + border-color: #cc4b37; + background-color: rgb(249, 236.1, 234.1); +} +.is-invalid-input:not(:focus)::placeholder { + color: #cc4b37; +} + +.is-invalid-label { + color: #cc4b37; +} + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #cc4b37; +} +.form-error.is-visible { + display: block; +} + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; +} + +p { + margin-bottom: 1rem; + font-size: inherit; + line-height: 1.6; + text-rendering: optimizeLegibility; +} + +em, +i { + font-style: italic; + line-height: inherit; +} + +strong, +b { + font-weight: bold; + line-height: inherit; +} + +small { + font-size: 80%; + line-height: inherit; +} + +h1, .h1, +h2, .h2, +h3, .h3, +h4, .h4, +h5, .h5, +h6, .h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-style: normal; + font-weight: normal; + color: inherit; + text-rendering: optimizeLegibility; +} +h1 small, .h1 small, +h2 small, .h2 small, +h3 small, .h3 small, +h4 small, .h4 small, +h5 small, .h5 small, +h6 small, .h6 small { + line-height: 0; + color: #cacaca; +} + +h1, .h1 { + font-size: 1.5rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h2, .h2 { + font-size: 1.25rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h3, .h3 { + font-size: 1.1875rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h4, .h4 { + font-size: 1.125rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h5, .h5 { + font-size: 1.0625rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h6, .h6 { + font-size: 1rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +@media print, screen and (min-width: 40em) { + h1, .h1 { + font-size: 3rem; + } + h2, .h2 { + font-size: 2.5rem; + } + h3, .h3 { + font-size: 1.9375rem; + } + h4, .h4 { + font-size: 1.5625rem; + } + h5, .h5 { + font-size: 1.25rem; + } + h6, .h6 { + font-size: 1rem; + } +} +a { + line-height: inherit; + color: #1779ba; + text-decoration: none; + cursor: pointer; +} +a:hover, a:focus { + color: rgb(19.78, 104.06, 159.96); +} +a img { + border: 0; +} + +hr { + clear: both; + max-width: 75rem; + height: 0; + margin: 1.25rem auto; + border-top: 0; + border-right: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; +} + +ul, +ol, +dl { + margin-bottom: 1rem; + list-style-position: outside; + line-height: 1.6; +} + +li { + font-size: inherit; +} + +ul { + margin-left: 1.25rem; + list-style-type: disc; +} + +ol { + margin-left: 1.25rem; +} + +ul ul, ul ol, ol ul, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; +} + +dl { + margin-bottom: 1rem; +} +dl dt { + margin-bottom: 0.3rem; + font-weight: bold; +} + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; +} +blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; +} + +abbr, abbr[title] { + border-bottom: 1px dotted #0a0a0a; + cursor: help; + text-decoration: none; +} + +figure { + margin: 0; +} + +kbd { + margin: 0; + padding: 0.125rem 0.25rem 0; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + color: #0a0a0a; +} + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; +} + +.lead { + font-size: 125%; + line-height: 1.6; +} + +.stat { + font-size: 2.5rem; + line-height: 1; +} +p + .stat { + margin-top: -1rem; +} + +ul.no-bullet, ol.no-bullet { + margin-left: 0; + list-style: none; +} + +.cite-block, cite { + display: block; + color: #8a8a8a; + font-size: 0.8125rem; +} +.cite-block:before, cite:before { + content: "— "; +} + +.code-inline, code { + border: 1px solid #cacaca; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + display: inline; + max-width: 100%; + word-wrap: break-word; + padding: 0.125rem 0.3125rem 0.0625rem; +} + +.code-block { + border: 1px solid #cacaca; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + display: block; + overflow: auto; + white-space: pre; + padding: 1rem; + margin-bottom: 1.5rem; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +.text-justify { + text-align: justify; +} + +@media print, screen and (min-width: 40em) { + .medium-text-left { + text-align: left; + } + .medium-text-right { + text-align: right; + } + .medium-text-center { + text-align: center; + } + .medium-text-justify { + text-align: justify; + } +} +@media print, screen and (min-width: 64em) { + .large-text-left { + text-align: left; + } + .large-text-right { + text-align: right; + } + .large-text-center { + text-align: center; + } + .large-text-justify { + text-align: justify; + } +} +.show-for-print { + display: none !important; +} + +@media print { + * { + background: transparent !important; + color: black !important; + print-color-adjust: economy; + box-shadow: none !important; + text-shadow: none !important; + } + .show-for-print { + display: block !important; + } + .hide-for-print { + display: none !important; + } + table.show-for-print { + display: table !important; + } + thead.show-for-print { + display: table-header-group !important; + } + tbody.show-for-print { + display: table-row-group !important; + } + tr.show-for-print { + display: table-row !important; + } + td.show-for-print { + display: table-cell !important; + } + th.show-for-print { + display: table-cell !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .print-break-inside { + page-break-inside: auto; + } +} +.grid-container { + max-width: 75rem; + margin-left: auto; + margin-right: auto; + padding-right: 0.625rem; + padding-left: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-container { + padding-right: 0.9375rem; + padding-left: 0.9375rem; + } +} +.grid-container.fluid { + max-width: 100%; + margin-left: auto; + margin-right: auto; + padding-right: 0.625rem; + padding-left: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-container.fluid { + padding-right: 0.9375rem; + padding-left: 0.9375rem; + } +} +.grid-container.full { + max-width: 100%; + margin-left: auto; + margin-right: auto; + padding-right: 0; + padding-left: 0; +} + +.grid-x { + display: flex; + flex-flow: row wrap; +} + +.cell { + flex: 0 0 auto; + min-height: 0; + min-width: 0; + width: 100%; +} +.cell.auto { + flex: 1 1 0; +} +.cell.shrink { + flex: 0 0 auto; +} + +.grid-x > .auto { + width: auto; +} +.grid-x > .shrink { + width: auto; +} + +.grid-x > .small-shrink, .grid-x > .small-full, .grid-x > .small-1, .grid-x > .small-2, .grid-x > .small-3, .grid-x > .small-4, .grid-x > .small-5, .grid-x > .small-6, .grid-x > .small-7, .grid-x > .small-8, .grid-x > .small-9, .grid-x > .small-10, .grid-x > .small-11, .grid-x > .small-12 { + flex-basis: auto; +} + +@media print, screen and (min-width: 40em) { + .grid-x > .medium-shrink, .grid-x > .medium-full, .grid-x > .medium-1, .grid-x > .medium-2, .grid-x > .medium-3, .grid-x > .medium-4, .grid-x > .medium-5, .grid-x > .medium-6, .grid-x > .medium-7, .grid-x > .medium-8, .grid-x > .medium-9, .grid-x > .medium-10, .grid-x > .medium-11, .grid-x > .medium-12 { + flex-basis: auto; + } +} +@media print, screen and (min-width: 64em) { + .grid-x > .large-shrink, .grid-x > .large-full, .grid-x > .large-1, .grid-x > .large-2, .grid-x > .large-3, .grid-x > .large-4, .grid-x > .large-5, .grid-x > .large-6, .grid-x > .large-7, .grid-x > .large-8, .grid-x > .large-9, .grid-x > .large-10, .grid-x > .large-11, .grid-x > .large-12 { + flex-basis: auto; + } +} +.grid-x > .small-12, .grid-x > .small-11, .grid-x > .small-10, .grid-x > .small-9, .grid-x > .small-8, .grid-x > .small-7, .grid-x > .small-6, .grid-x > .small-5, .grid-x > .small-4, .grid-x > .small-3, .grid-x > .small-2, .grid-x > .small-1 { + flex: 0 0 auto; +} + +.grid-x > .small-1 { + width: 8.3333333333%; +} + +.grid-x > .small-2 { + width: 16.6666666667%; +} + +.grid-x > .small-3 { + width: 25%; +} + +.grid-x > .small-4 { + width: 33.3333333333%; +} + +.grid-x > .small-5 { + width: 41.6666666667%; +} + +.grid-x > .small-6 { + width: 50%; +} + +.grid-x > .small-7 { + width: 58.3333333333%; +} + +.grid-x > .small-8 { + width: 66.6666666667%; +} + +.grid-x > .small-9 { + width: 75%; +} + +.grid-x > .small-10 { + width: 83.3333333333%; +} + +.grid-x > .small-11 { + width: 91.6666666667%; +} + +.grid-x > .small-12 { + width: 100%; +} + +@media print, screen and (min-width: 40em) { + .grid-x > .medium-auto { + flex: 1 1 0; + width: auto; + } + .grid-x > .medium-12, .grid-x > .medium-11, .grid-x > .medium-10, .grid-x > .medium-9, .grid-x > .medium-8, .grid-x > .medium-7, .grid-x > .medium-6, .grid-x > .medium-5, .grid-x > .medium-4, .grid-x > .medium-3, .grid-x > .medium-2, .grid-x > .medium-1, .grid-x > .medium-shrink { + flex: 0 0 auto; + } + .grid-x > .medium-shrink { + width: auto; + } + .grid-x > .medium-1 { + width: 8.3333333333%; + } + .grid-x > .medium-2 { + width: 16.6666666667%; + } + .grid-x > .medium-3 { + width: 25%; + } + .grid-x > .medium-4 { + width: 33.3333333333%; + } + .grid-x > .medium-5 { + width: 41.6666666667%; + } + .grid-x > .medium-6 { + width: 50%; + } + .grid-x > .medium-7 { + width: 58.3333333333%; + } + .grid-x > .medium-8 { + width: 66.6666666667%; + } + .grid-x > .medium-9 { + width: 75%; + } + .grid-x > .medium-10 { + width: 83.3333333333%; + } + .grid-x > .medium-11 { + width: 91.6666666667%; + } + .grid-x > .medium-12 { + width: 100%; + } +} +@media print, screen and (min-width: 64em) { + .grid-x > .large-auto { + flex: 1 1 0; + width: auto; + } + .grid-x > .large-12, .grid-x > .large-11, .grid-x > .large-10, .grid-x > .large-9, .grid-x > .large-8, .grid-x > .large-7, .grid-x > .large-6, .grid-x > .large-5, .grid-x > .large-4, .grid-x > .large-3, .grid-x > .large-2, .grid-x > .large-1, .grid-x > .large-shrink { + flex: 0 0 auto; + } + .grid-x > .large-shrink { + width: auto; + } + .grid-x > .large-1 { + width: 8.3333333333%; + } + .grid-x > .large-2 { + width: 16.6666666667%; + } + .grid-x > .large-3 { + width: 25%; + } + .grid-x > .large-4 { + width: 33.3333333333%; + } + .grid-x > .large-5 { + width: 41.6666666667%; + } + .grid-x > .large-6 { + width: 50%; + } + .grid-x > .large-7 { + width: 58.3333333333%; + } + .grid-x > .large-8 { + width: 66.6666666667%; + } + .grid-x > .large-9 { + width: 75%; + } + .grid-x > .large-10 { + width: 83.3333333333%; + } + .grid-x > .large-11 { + width: 91.6666666667%; + } + .grid-x > .large-12 { + width: 100%; + } +} +.grid-margin-x:not(.grid-x) > .cell { + width: auto; +} + +.grid-margin-y:not(.grid-y) > .cell { + height: auto; +} + +.grid-margin-x { + margin-left: -0.625rem; + margin-right: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-margin-x { + margin-left: -0.9375rem; + margin-right: -0.9375rem; + } +} +.grid-margin-x > .cell { + width: calc(100% - 1.25rem); + margin-left: 0.625rem; + margin-right: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-margin-x > .cell { + width: calc(100% - 1.875rem); + margin-left: 0.9375rem; + margin-right: 0.9375rem; + } +} +.grid-margin-x > .auto { + width: auto; +} +.grid-margin-x > .shrink { + width: auto; +} +.grid-margin-x > .small-1 { + width: calc(8.3333333333% - 1.25rem); +} +.grid-margin-x > .small-2 { + width: calc(16.6666666667% - 1.25rem); +} +.grid-margin-x > .small-3 { + width: calc(25% - 1.25rem); +} +.grid-margin-x > .small-4 { + width: calc(33.3333333333% - 1.25rem); +} +.grid-margin-x > .small-5 { + width: calc(41.6666666667% - 1.25rem); +} +.grid-margin-x > .small-6 { + width: calc(50% - 1.25rem); +} +.grid-margin-x > .small-7 { + width: calc(58.3333333333% - 1.25rem); +} +.grid-margin-x > .small-8 { + width: calc(66.6666666667% - 1.25rem); +} +.grid-margin-x > .small-9 { + width: calc(75% - 1.25rem); +} +.grid-margin-x > .small-10 { + width: calc(83.3333333333% - 1.25rem); +} +.grid-margin-x > .small-11 { + width: calc(91.6666666667% - 1.25rem); +} +.grid-margin-x > .small-12 { + width: calc(100% - 1.25rem); +} +@media print, screen and (min-width: 40em) { + .grid-margin-x > .auto { + width: auto; + } + .grid-margin-x > .shrink { + width: auto; + } + .grid-margin-x > .small-1 { + width: calc(8.3333333333% - 1.875rem); + } + .grid-margin-x > .small-2 { + width: calc(16.6666666667% - 1.875rem); + } + .grid-margin-x > .small-3 { + width: calc(25% - 1.875rem); + } + .grid-margin-x > .small-4 { + width: calc(33.3333333333% - 1.875rem); + } + .grid-margin-x > .small-5 { + width: calc(41.6666666667% - 1.875rem); + } + .grid-margin-x > .small-6 { + width: calc(50% - 1.875rem); + } + .grid-margin-x > .small-7 { + width: calc(58.3333333333% - 1.875rem); + } + .grid-margin-x > .small-8 { + width: calc(66.6666666667% - 1.875rem); + } + .grid-margin-x > .small-9 { + width: calc(75% - 1.875rem); + } + .grid-margin-x > .small-10 { + width: calc(83.3333333333% - 1.875rem); + } + .grid-margin-x > .small-11 { + width: calc(91.6666666667% - 1.875rem); + } + .grid-margin-x > .small-12 { + width: calc(100% - 1.875rem); + } + .grid-margin-x > .medium-auto { + width: auto; + } + .grid-margin-x > .medium-shrink { + width: auto; + } + .grid-margin-x > .medium-1 { + width: calc(8.3333333333% - 1.875rem); + } + .grid-margin-x > .medium-2 { + width: calc(16.6666666667% - 1.875rem); + } + .grid-margin-x > .medium-3 { + width: calc(25% - 1.875rem); + } + .grid-margin-x > .medium-4 { + width: calc(33.3333333333% - 1.875rem); + } + .grid-margin-x > .medium-5 { + width: calc(41.6666666667% - 1.875rem); + } + .grid-margin-x > .medium-6 { + width: calc(50% - 1.875rem); + } + .grid-margin-x > .medium-7 { + width: calc(58.3333333333% - 1.875rem); + } + .grid-margin-x > .medium-8 { + width: calc(66.6666666667% - 1.875rem); + } + .grid-margin-x > .medium-9 { + width: calc(75% - 1.875rem); + } + .grid-margin-x > .medium-10 { + width: calc(83.3333333333% - 1.875rem); + } + .grid-margin-x > .medium-11 { + width: calc(91.6666666667% - 1.875rem); + } + .grid-margin-x > .medium-12 { + width: calc(100% - 1.875rem); + } +} +@media print, screen and (min-width: 64em) { + .grid-margin-x > .large-auto { + width: auto; + } + .grid-margin-x > .large-shrink { + width: auto; + } + .grid-margin-x > .large-1 { + width: calc(8.3333333333% - 1.875rem); + } + .grid-margin-x > .large-2 { + width: calc(16.6666666667% - 1.875rem); + } + .grid-margin-x > .large-3 { + width: calc(25% - 1.875rem); + } + .grid-margin-x > .large-4 { + width: calc(33.3333333333% - 1.875rem); + } + .grid-margin-x > .large-5 { + width: calc(41.6666666667% - 1.875rem); + } + .grid-margin-x > .large-6 { + width: calc(50% - 1.875rem); + } + .grid-margin-x > .large-7 { + width: calc(58.3333333333% - 1.875rem); + } + .grid-margin-x > .large-8 { + width: calc(66.6666666667% - 1.875rem); + } + .grid-margin-x > .large-9 { + width: calc(75% - 1.875rem); + } + .grid-margin-x > .large-10 { + width: calc(83.3333333333% - 1.875rem); + } + .grid-margin-x > .large-11 { + width: calc(91.6666666667% - 1.875rem); + } + .grid-margin-x > .large-12 { + width: calc(100% - 1.875rem); + } +} + +.grid-padding-x .grid-padding-x { + margin-right: -0.625rem; + margin-left: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-padding-x .grid-padding-x { + margin-right: -0.9375rem; + margin-left: -0.9375rem; + } +} +.grid-container:not(.full) > .grid-padding-x { + margin-right: -0.625rem; + margin-left: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-container:not(.full) > .grid-padding-x { + margin-right: -0.9375rem; + margin-left: -0.9375rem; + } +} +.grid-padding-x > .cell { + padding-right: 0.625rem; + padding-left: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-padding-x > .cell { + padding-right: 0.9375rem; + padding-left: 0.9375rem; + } +} + +.small-up-1 > .cell { + width: 100%; +} + +.small-up-2 > .cell { + width: 50%; +} + +.small-up-3 > .cell { + width: 33.3333333333%; +} + +.small-up-4 > .cell { + width: 25%; +} + +.small-up-5 > .cell { + width: 20%; +} + +.small-up-6 > .cell { + width: 16.6666666667%; +} + +.small-up-7 > .cell { + width: 14.2857142857%; +} + +.small-up-8 > .cell { + width: 12.5%; +} + +@media print, screen and (min-width: 40em) { + .medium-up-1 > .cell { + width: 100%; + } + .medium-up-2 > .cell { + width: 50%; + } + .medium-up-3 > .cell { + width: 33.3333333333%; + } + .medium-up-4 > .cell { + width: 25%; + } + .medium-up-5 > .cell { + width: 20%; + } + .medium-up-6 > .cell { + width: 16.6666666667%; + } + .medium-up-7 > .cell { + width: 14.2857142857%; + } + .medium-up-8 > .cell { + width: 12.5%; + } +} +@media print, screen and (min-width: 64em) { + .large-up-1 > .cell { + width: 100%; + } + .large-up-2 > .cell { + width: 50%; + } + .large-up-3 > .cell { + width: 33.3333333333%; + } + .large-up-4 > .cell { + width: 25%; + } + .large-up-5 > .cell { + width: 20%; + } + .large-up-6 > .cell { + width: 16.6666666667%; + } + .large-up-7 > .cell { + width: 14.2857142857%; + } + .large-up-8 > .cell { + width: 12.5%; + } +} +.grid-margin-x.small-up-1 > .cell { + width: calc(100% - 1.25rem); +} + +.grid-margin-x.small-up-2 > .cell { + width: calc(50% - 1.25rem); +} + +.grid-margin-x.small-up-3 > .cell { + width: calc(33.3333333333% - 1.25rem); +} + +.grid-margin-x.small-up-4 > .cell { + width: calc(25% - 1.25rem); +} + +.grid-margin-x.small-up-5 > .cell { + width: calc(20% - 1.25rem); +} + +.grid-margin-x.small-up-6 > .cell { + width: calc(16.6666666667% - 1.25rem); +} + +.grid-margin-x.small-up-7 > .cell { + width: calc(14.2857142857% - 1.25rem); +} + +.grid-margin-x.small-up-8 > .cell { + width: calc(12.5% - 1.25rem); +} + +@media print, screen and (min-width: 40em) { + .grid-margin-x.small-up-1 > .cell { + width: calc(100% - 1.875rem); + } + .grid-margin-x.small-up-2 > .cell { + width: calc(50% - 1.875rem); + } + .grid-margin-x.small-up-3 > .cell { + width: calc(33.3333333333% - 1.875rem); + } + .grid-margin-x.small-up-4 > .cell { + width: calc(25% - 1.875rem); + } + .grid-margin-x.small-up-5 > .cell { + width: calc(20% - 1.875rem); + } + .grid-margin-x.small-up-6 > .cell { + width: calc(16.6666666667% - 1.875rem); + } + .grid-margin-x.small-up-7 > .cell { + width: calc(14.2857142857% - 1.875rem); + } + .grid-margin-x.small-up-8 > .cell { + width: calc(12.5% - 1.875rem); + } + .grid-margin-x.medium-up-1 > .cell { + width: calc(100% - 1.875rem); + } + .grid-margin-x.medium-up-2 > .cell { + width: calc(50% - 1.875rem); + } + .grid-margin-x.medium-up-3 > .cell { + width: calc(33.3333333333% - 1.875rem); + } + .grid-margin-x.medium-up-4 > .cell { + width: calc(25% - 1.875rem); + } + .grid-margin-x.medium-up-5 > .cell { + width: calc(20% - 1.875rem); + } + .grid-margin-x.medium-up-6 > .cell { + width: calc(16.6666666667% - 1.875rem); + } + .grid-margin-x.medium-up-7 > .cell { + width: calc(14.2857142857% - 1.875rem); + } + .grid-margin-x.medium-up-8 > .cell { + width: calc(12.5% - 1.875rem); + } +} +@media print, screen and (min-width: 64em) { + .grid-margin-x.large-up-1 > .cell { + width: calc(100% - 1.875rem); + } + .grid-margin-x.large-up-2 > .cell { + width: calc(50% - 1.875rem); + } + .grid-margin-x.large-up-3 > .cell { + width: calc(33.3333333333% - 1.875rem); + } + .grid-margin-x.large-up-4 > .cell { + width: calc(25% - 1.875rem); + } + .grid-margin-x.large-up-5 > .cell { + width: calc(20% - 1.875rem); + } + .grid-margin-x.large-up-6 > .cell { + width: calc(16.6666666667% - 1.875rem); + } + .grid-margin-x.large-up-7 > .cell { + width: calc(14.2857142857% - 1.875rem); + } + .grid-margin-x.large-up-8 > .cell { + width: calc(12.5% - 1.875rem); + } +} +.small-margin-collapse { + margin-right: 0; + margin-left: 0; +} +.small-margin-collapse > .cell { + margin-right: 0; + margin-left: 0; +} +.small-margin-collapse > .small-1 { + width: 8.3333333333%; +} +.small-margin-collapse > .small-2 { + width: 16.6666666667%; +} +.small-margin-collapse > .small-3 { + width: 25%; +} +.small-margin-collapse > .small-4 { + width: 33.3333333333%; +} +.small-margin-collapse > .small-5 { + width: 41.6666666667%; +} +.small-margin-collapse > .small-6 { + width: 50%; +} +.small-margin-collapse > .small-7 { + width: 58.3333333333%; +} +.small-margin-collapse > .small-8 { + width: 66.6666666667%; +} +.small-margin-collapse > .small-9 { + width: 75%; +} +.small-margin-collapse > .small-10 { + width: 83.3333333333%; +} +.small-margin-collapse > .small-11 { + width: 91.6666666667%; +} +.small-margin-collapse > .small-12 { + width: 100%; +} +@media print, screen and (min-width: 40em) { + .small-margin-collapse > .medium-1 { + width: 8.3333333333%; + } + .small-margin-collapse > .medium-2 { + width: 16.6666666667%; + } + .small-margin-collapse > .medium-3 { + width: 25%; + } + .small-margin-collapse > .medium-4 { + width: 33.3333333333%; + } + .small-margin-collapse > .medium-5 { + width: 41.6666666667%; + } + .small-margin-collapse > .medium-6 { + width: 50%; + } + .small-margin-collapse > .medium-7 { + width: 58.3333333333%; + } + .small-margin-collapse > .medium-8 { + width: 66.6666666667%; + } + .small-margin-collapse > .medium-9 { + width: 75%; + } + .small-margin-collapse > .medium-10 { + width: 83.3333333333%; + } + .small-margin-collapse > .medium-11 { + width: 91.6666666667%; + } + .small-margin-collapse > .medium-12 { + width: 100%; + } +} +@media print, screen and (min-width: 64em) { + .small-margin-collapse > .large-1 { + width: 8.3333333333%; + } + .small-margin-collapse > .large-2 { + width: 16.6666666667%; + } + .small-margin-collapse > .large-3 { + width: 25%; + } + .small-margin-collapse > .large-4 { + width: 33.3333333333%; + } + .small-margin-collapse > .large-5 { + width: 41.6666666667%; + } + .small-margin-collapse > .large-6 { + width: 50%; + } + .small-margin-collapse > .large-7 { + width: 58.3333333333%; + } + .small-margin-collapse > .large-8 { + width: 66.6666666667%; + } + .small-margin-collapse > .large-9 { + width: 75%; + } + .small-margin-collapse > .large-10 { + width: 83.3333333333%; + } + .small-margin-collapse > .large-11 { + width: 91.6666666667%; + } + .small-margin-collapse > .large-12 { + width: 100%; + } +} + +.small-padding-collapse { + margin-right: 0; + margin-left: 0; +} +.small-padding-collapse > .cell { + padding-right: 0; + padding-left: 0; +} + +@media print, screen and (min-width: 40em) { + .medium-margin-collapse { + margin-right: 0; + margin-left: 0; + } + .medium-margin-collapse > .cell { + margin-right: 0; + margin-left: 0; + } +} +@media print, screen and (min-width: 40em) { + .medium-margin-collapse > .small-1 { + width: 8.3333333333%; + } + .medium-margin-collapse > .small-2 { + width: 16.6666666667%; + } + .medium-margin-collapse > .small-3 { + width: 25%; + } + .medium-margin-collapse > .small-4 { + width: 33.3333333333%; + } + .medium-margin-collapse > .small-5 { + width: 41.6666666667%; + } + .medium-margin-collapse > .small-6 { + width: 50%; + } + .medium-margin-collapse > .small-7 { + width: 58.3333333333%; + } + .medium-margin-collapse > .small-8 { + width: 66.6666666667%; + } + .medium-margin-collapse > .small-9 { + width: 75%; + } + .medium-margin-collapse > .small-10 { + width: 83.3333333333%; + } + .medium-margin-collapse > .small-11 { + width: 91.6666666667%; + } + .medium-margin-collapse > .small-12 { + width: 100%; + } +} +@media print, screen and (min-width: 40em) { + .medium-margin-collapse > .medium-1 { + width: 8.3333333333%; + } + .medium-margin-collapse > .medium-2 { + width: 16.6666666667%; + } + .medium-margin-collapse > .medium-3 { + width: 25%; + } + .medium-margin-collapse > .medium-4 { + width: 33.3333333333%; + } + .medium-margin-collapse > .medium-5 { + width: 41.6666666667%; + } + .medium-margin-collapse > .medium-6 { + width: 50%; + } + .medium-margin-collapse > .medium-7 { + width: 58.3333333333%; + } + .medium-margin-collapse > .medium-8 { + width: 66.6666666667%; + } + .medium-margin-collapse > .medium-9 { + width: 75%; + } + .medium-margin-collapse > .medium-10 { + width: 83.3333333333%; + } + .medium-margin-collapse > .medium-11 { + width: 91.6666666667%; + } + .medium-margin-collapse > .medium-12 { + width: 100%; + } +} +@media print, screen and (min-width: 64em) { + .medium-margin-collapse > .large-1 { + width: 8.3333333333%; + } + .medium-margin-collapse > .large-2 { + width: 16.6666666667%; + } + .medium-margin-collapse > .large-3 { + width: 25%; + } + .medium-margin-collapse > .large-4 { + width: 33.3333333333%; + } + .medium-margin-collapse > .large-5 { + width: 41.6666666667%; + } + .medium-margin-collapse > .large-6 { + width: 50%; + } + .medium-margin-collapse > .large-7 { + width: 58.3333333333%; + } + .medium-margin-collapse > .large-8 { + width: 66.6666666667%; + } + .medium-margin-collapse > .large-9 { + width: 75%; + } + .medium-margin-collapse > .large-10 { + width: 83.3333333333%; + } + .medium-margin-collapse > .large-11 { + width: 91.6666666667%; + } + .medium-margin-collapse > .large-12 { + width: 100%; + } +} + +@media print, screen and (min-width: 40em) { + .medium-padding-collapse { + margin-right: 0; + margin-left: 0; + } + .medium-padding-collapse > .cell { + padding-right: 0; + padding-left: 0; + } +} + +@media print, screen and (min-width: 64em) { + .large-margin-collapse { + margin-right: 0; + margin-left: 0; + } + .large-margin-collapse > .cell { + margin-right: 0; + margin-left: 0; + } +} +@media print, screen and (min-width: 64em) { + .large-margin-collapse > .small-1 { + width: 8.3333333333%; + } + .large-margin-collapse > .small-2 { + width: 16.6666666667%; + } + .large-margin-collapse > .small-3 { + width: 25%; + } + .large-margin-collapse > .small-4 { + width: 33.3333333333%; + } + .large-margin-collapse > .small-5 { + width: 41.6666666667%; + } + .large-margin-collapse > .small-6 { + width: 50%; + } + .large-margin-collapse > .small-7 { + width: 58.3333333333%; + } + .large-margin-collapse > .small-8 { + width: 66.6666666667%; + } + .large-margin-collapse > .small-9 { + width: 75%; + } + .large-margin-collapse > .small-10 { + width: 83.3333333333%; + } + .large-margin-collapse > .small-11 { + width: 91.6666666667%; + } + .large-margin-collapse > .small-12 { + width: 100%; + } +} +@media print, screen and (min-width: 64em) { + .large-margin-collapse > .medium-1 { + width: 8.3333333333%; + } + .large-margin-collapse > .medium-2 { + width: 16.6666666667%; + } + .large-margin-collapse > .medium-3 { + width: 25%; + } + .large-margin-collapse > .medium-4 { + width: 33.3333333333%; + } + .large-margin-collapse > .medium-5 { + width: 41.6666666667%; + } + .large-margin-collapse > .medium-6 { + width: 50%; + } + .large-margin-collapse > .medium-7 { + width: 58.3333333333%; + } + .large-margin-collapse > .medium-8 { + width: 66.6666666667%; + } + .large-margin-collapse > .medium-9 { + width: 75%; + } + .large-margin-collapse > .medium-10 { + width: 83.3333333333%; + } + .large-margin-collapse > .medium-11 { + width: 91.6666666667%; + } + .large-margin-collapse > .medium-12 { + width: 100%; + } +} +@media print, screen and (min-width: 64em) { + .large-margin-collapse > .large-1 { + width: 8.3333333333%; + } + .large-margin-collapse > .large-2 { + width: 16.6666666667%; + } + .large-margin-collapse > .large-3 { + width: 25%; + } + .large-margin-collapse > .large-4 { + width: 33.3333333333%; + } + .large-margin-collapse > .large-5 { + width: 41.6666666667%; + } + .large-margin-collapse > .large-6 { + width: 50%; + } + .large-margin-collapse > .large-7 { + width: 58.3333333333%; + } + .large-margin-collapse > .large-8 { + width: 66.6666666667%; + } + .large-margin-collapse > .large-9 { + width: 75%; + } + .large-margin-collapse > .large-10 { + width: 83.3333333333%; + } + .large-margin-collapse > .large-11 { + width: 91.6666666667%; + } + .large-margin-collapse > .large-12 { + width: 100%; + } +} + +@media print, screen and (min-width: 64em) { + .large-padding-collapse { + margin-right: 0; + margin-left: 0; + } + .large-padding-collapse > .cell { + padding-right: 0; + padding-left: 0; + } +} + +.small-offset-0 { + margin-left: 0%; +} + +.grid-margin-x > .small-offset-0 { + margin-left: calc(0% + 1.25rem / 2); +} + +.small-offset-1 { + margin-left: 8.3333333333%; +} + +.grid-margin-x > .small-offset-1 { + margin-left: calc(8.3333333333% + 1.25rem / 2); +} + +.small-offset-2 { + margin-left: 16.6666666667%; +} + +.grid-margin-x > .small-offset-2 { + margin-left: calc(16.6666666667% + 1.25rem / 2); +} + +.small-offset-3 { + margin-left: 25%; +} + +.grid-margin-x > .small-offset-3 { + margin-left: calc(25% + 1.25rem / 2); +} + +.small-offset-4 { + margin-left: 33.3333333333%; +} + +.grid-margin-x > .small-offset-4 { + margin-left: calc(33.3333333333% + 1.25rem / 2); +} + +.small-offset-5 { + margin-left: 41.6666666667%; +} + +.grid-margin-x > .small-offset-5 { + margin-left: calc(41.6666666667% + 1.25rem / 2); +} + +.small-offset-6 { + margin-left: 50%; +} + +.grid-margin-x > .small-offset-6 { + margin-left: calc(50% + 1.25rem / 2); +} + +.small-offset-7 { + margin-left: 58.3333333333%; +} + +.grid-margin-x > .small-offset-7 { + margin-left: calc(58.3333333333% + 1.25rem / 2); +} + +.small-offset-8 { + margin-left: 66.6666666667%; +} + +.grid-margin-x > .small-offset-8 { + margin-left: calc(66.6666666667% + 1.25rem / 2); +} + +.small-offset-9 { + margin-left: 75%; +} + +.grid-margin-x > .small-offset-9 { + margin-left: calc(75% + 1.25rem / 2); +} + +.small-offset-10 { + margin-left: 83.3333333333%; +} + +.grid-margin-x > .small-offset-10 { + margin-left: calc(83.3333333333% + 1.25rem / 2); +} + +.small-offset-11 { + margin-left: 91.6666666667%; +} + +.grid-margin-x > .small-offset-11 { + margin-left: calc(91.6666666667% + 1.25rem / 2); +} + +@media print, screen and (min-width: 40em) { + .medium-offset-0 { + margin-left: 0%; + } + .grid-margin-x > .medium-offset-0 { + margin-left: calc(0% + 1.875rem / 2); + } + .medium-offset-1 { + margin-left: 8.3333333333%; + } + .grid-margin-x > .medium-offset-1 { + margin-left: calc(8.3333333333% + 1.875rem / 2); + } + .medium-offset-2 { + margin-left: 16.6666666667%; + } + .grid-margin-x > .medium-offset-2 { + margin-left: calc(16.6666666667% + 1.875rem / 2); + } + .medium-offset-3 { + margin-left: 25%; + } + .grid-margin-x > .medium-offset-3 { + margin-left: calc(25% + 1.875rem / 2); + } + .medium-offset-4 { + margin-left: 33.3333333333%; + } + .grid-margin-x > .medium-offset-4 { + margin-left: calc(33.3333333333% + 1.875rem / 2); + } + .medium-offset-5 { + margin-left: 41.6666666667%; + } + .grid-margin-x > .medium-offset-5 { + margin-left: calc(41.6666666667% + 1.875rem / 2); + } + .medium-offset-6 { + margin-left: 50%; + } + .grid-margin-x > .medium-offset-6 { + margin-left: calc(50% + 1.875rem / 2); + } + .medium-offset-7 { + margin-left: 58.3333333333%; + } + .grid-margin-x > .medium-offset-7 { + margin-left: calc(58.3333333333% + 1.875rem / 2); + } + .medium-offset-8 { + margin-left: 66.6666666667%; + } + .grid-margin-x > .medium-offset-8 { + margin-left: calc(66.6666666667% + 1.875rem / 2); + } + .medium-offset-9 { + margin-left: 75%; + } + .grid-margin-x > .medium-offset-9 { + margin-left: calc(75% + 1.875rem / 2); + } + .medium-offset-10 { + margin-left: 83.3333333333%; + } + .grid-margin-x > .medium-offset-10 { + margin-left: calc(83.3333333333% + 1.875rem / 2); + } + .medium-offset-11 { + margin-left: 91.6666666667%; + } + .grid-margin-x > .medium-offset-11 { + margin-left: calc(91.6666666667% + 1.875rem / 2); + } +} +@media print, screen and (min-width: 64em) { + .large-offset-0 { + margin-left: 0%; + } + .grid-margin-x > .large-offset-0 { + margin-left: calc(0% + 1.875rem / 2); + } + .large-offset-1 { + margin-left: 8.3333333333%; + } + .grid-margin-x > .large-offset-1 { + margin-left: calc(8.3333333333% + 1.875rem / 2); + } + .large-offset-2 { + margin-left: 16.6666666667%; + } + .grid-margin-x > .large-offset-2 { + margin-left: calc(16.6666666667% + 1.875rem / 2); + } + .large-offset-3 { + margin-left: 25%; + } + .grid-margin-x > .large-offset-3 { + margin-left: calc(25% + 1.875rem / 2); + } + .large-offset-4 { + margin-left: 33.3333333333%; + } + .grid-margin-x > .large-offset-4 { + margin-left: calc(33.3333333333% + 1.875rem / 2); + } + .large-offset-5 { + margin-left: 41.6666666667%; + } + .grid-margin-x > .large-offset-5 { + margin-left: calc(41.6666666667% + 1.875rem / 2); + } + .large-offset-6 { + margin-left: 50%; + } + .grid-margin-x > .large-offset-6 { + margin-left: calc(50% + 1.875rem / 2); + } + .large-offset-7 { + margin-left: 58.3333333333%; + } + .grid-margin-x > .large-offset-7 { + margin-left: calc(58.3333333333% + 1.875rem / 2); + } + .large-offset-8 { + margin-left: 66.6666666667%; + } + .grid-margin-x > .large-offset-8 { + margin-left: calc(66.6666666667% + 1.875rem / 2); + } + .large-offset-9 { + margin-left: 75%; + } + .grid-margin-x > .large-offset-9 { + margin-left: calc(75% + 1.875rem / 2); + } + .large-offset-10 { + margin-left: 83.3333333333%; + } + .grid-margin-x > .large-offset-10 { + margin-left: calc(83.3333333333% + 1.875rem / 2); + } + .large-offset-11 { + margin-left: 91.6666666667%; + } + .grid-margin-x > .large-offset-11 { + margin-left: calc(91.6666666667% + 1.875rem / 2); + } +} +.grid-y { + display: flex; + flex-flow: column nowrap; +} +.grid-y > .cell { + height: auto; + max-height: none; +} +.grid-y > .auto { + height: auto; +} +.grid-y > .shrink { + height: auto; +} +.grid-y > .small-shrink, .grid-y > .small-full, .grid-y > .small-1, .grid-y > .small-2, .grid-y > .small-3, .grid-y > .small-4, .grid-y > .small-5, .grid-y > .small-6, .grid-y > .small-7, .grid-y > .small-8, .grid-y > .small-9, .grid-y > .small-10, .grid-y > .small-11, .grid-y > .small-12 { + flex-basis: auto; +} +@media print, screen and (min-width: 40em) { + .grid-y > .medium-shrink, .grid-y > .medium-full, .grid-y > .medium-1, .grid-y > .medium-2, .grid-y > .medium-3, .grid-y > .medium-4, .grid-y > .medium-5, .grid-y > .medium-6, .grid-y > .medium-7, .grid-y > .medium-8, .grid-y > .medium-9, .grid-y > .medium-10, .grid-y > .medium-11, .grid-y > .medium-12 { + flex-basis: auto; + } +} +@media print, screen and (min-width: 64em) { + .grid-y > .large-shrink, .grid-y > .large-full, .grid-y > .large-1, .grid-y > .large-2, .grid-y > .large-3, .grid-y > .large-4, .grid-y > .large-5, .grid-y > .large-6, .grid-y > .large-7, .grid-y > .large-8, .grid-y > .large-9, .grid-y > .large-10, .grid-y > .large-11, .grid-y > .large-12 { + flex-basis: auto; + } +} +.grid-y > .small-12, .grid-y > .small-11, .grid-y > .small-10, .grid-y > .small-9, .grid-y > .small-8, .grid-y > .small-7, .grid-y > .small-6, .grid-y > .small-5, .grid-y > .small-4, .grid-y > .small-3, .grid-y > .small-2, .grid-y > .small-1 { + flex: 0 0 auto; +} +.grid-y > .small-1 { + height: 8.3333333333%; +} +.grid-y > .small-2 { + height: 16.6666666667%; +} +.grid-y > .small-3 { + height: 25%; +} +.grid-y > .small-4 { + height: 33.3333333333%; +} +.grid-y > .small-5 { + height: 41.6666666667%; +} +.grid-y > .small-6 { + height: 50%; +} +.grid-y > .small-7 { + height: 58.3333333333%; +} +.grid-y > .small-8 { + height: 66.6666666667%; +} +.grid-y > .small-9 { + height: 75%; +} +.grid-y > .small-10 { + height: 83.3333333333%; +} +.grid-y > .small-11 { + height: 91.6666666667%; +} +.grid-y > .small-12 { + height: 100%; +} +@media print, screen and (min-width: 40em) { + .grid-y > .medium-auto { + flex: 1 1 0; + height: auto; + } + .grid-y > .medium-12, .grid-y > .medium-11, .grid-y > .medium-10, .grid-y > .medium-9, .grid-y > .medium-8, .grid-y > .medium-7, .grid-y > .medium-6, .grid-y > .medium-5, .grid-y > .medium-4, .grid-y > .medium-3, .grid-y > .medium-2, .grid-y > .medium-1, .grid-y > .medium-shrink { + flex: 0 0 auto; + } + .grid-y > .medium-shrink { + height: auto; + } + .grid-y > .medium-1 { + height: 8.3333333333%; + } + .grid-y > .medium-2 { + height: 16.6666666667%; + } + .grid-y > .medium-3 { + height: 25%; + } + .grid-y > .medium-4 { + height: 33.3333333333%; + } + .grid-y > .medium-5 { + height: 41.6666666667%; + } + .grid-y > .medium-6 { + height: 50%; + } + .grid-y > .medium-7 { + height: 58.3333333333%; + } + .grid-y > .medium-8 { + height: 66.6666666667%; + } + .grid-y > .medium-9 { + height: 75%; + } + .grid-y > .medium-10 { + height: 83.3333333333%; + } + .grid-y > .medium-11 { + height: 91.6666666667%; + } + .grid-y > .medium-12 { + height: 100%; + } +} +@media print, screen and (min-width: 64em) { + .grid-y > .large-auto { + flex: 1 1 0; + height: auto; + } + .grid-y > .large-12, .grid-y > .large-11, .grid-y > .large-10, .grid-y > .large-9, .grid-y > .large-8, .grid-y > .large-7, .grid-y > .large-6, .grid-y > .large-5, .grid-y > .large-4, .grid-y > .large-3, .grid-y > .large-2, .grid-y > .large-1, .grid-y > .large-shrink { + flex: 0 0 auto; + } + .grid-y > .large-shrink { + height: auto; + } + .grid-y > .large-1 { + height: 8.3333333333%; + } + .grid-y > .large-2 { + height: 16.6666666667%; + } + .grid-y > .large-3 { + height: 25%; + } + .grid-y > .large-4 { + height: 33.3333333333%; + } + .grid-y > .large-5 { + height: 41.6666666667%; + } + .grid-y > .large-6 { + height: 50%; + } + .grid-y > .large-7 { + height: 58.3333333333%; + } + .grid-y > .large-8 { + height: 66.6666666667%; + } + .grid-y > .large-9 { + height: 75%; + } + .grid-y > .large-10 { + height: 83.3333333333%; + } + .grid-y > .large-11 { + height: 91.6666666667%; + } + .grid-y > .large-12 { + height: 100%; + } +} + +.grid-padding-y .grid-padding-y { + margin-top: -0.625rem; + margin-bottom: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-padding-y .grid-padding-y { + margin-top: -0.9375rem; + margin-bottom: -0.9375rem; + } +} +.grid-padding-y > .cell { + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-padding-y > .cell { + padding-top: 0.9375rem; + padding-bottom: 0.9375rem; + } +} + +.grid-margin-y { + margin-top: -0.625rem; + margin-bottom: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-margin-y { + margin-top: -0.9375rem; + margin-bottom: -0.9375rem; + } +} +.grid-margin-y > .cell { + height: calc(100% - 1.25rem); + margin-top: 0.625rem; + margin-bottom: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-margin-y > .cell { + height: calc(100% - 1.875rem); + margin-top: 0.9375rem; + margin-bottom: 0.9375rem; + } +} +.grid-margin-y > .auto { + height: auto; +} +.grid-margin-y > .shrink { + height: auto; +} +.grid-margin-y > .small-1 { + height: calc(8.3333333333% - 1.25rem); +} +.grid-margin-y > .small-2 { + height: calc(16.6666666667% - 1.25rem); +} +.grid-margin-y > .small-3 { + height: calc(25% - 1.25rem); +} +.grid-margin-y > .small-4 { + height: calc(33.3333333333% - 1.25rem); +} +.grid-margin-y > .small-5 { + height: calc(41.6666666667% - 1.25rem); +} +.grid-margin-y > .small-6 { + height: calc(50% - 1.25rem); +} +.grid-margin-y > .small-7 { + height: calc(58.3333333333% - 1.25rem); +} +.grid-margin-y > .small-8 { + height: calc(66.6666666667% - 1.25rem); +} +.grid-margin-y > .small-9 { + height: calc(75% - 1.25rem); +} +.grid-margin-y > .small-10 { + height: calc(83.3333333333% - 1.25rem); +} +.grid-margin-y > .small-11 { + height: calc(91.6666666667% - 1.25rem); +} +.grid-margin-y > .small-12 { + height: calc(100% - 1.25rem); +} +@media print, screen and (min-width: 40em) { + .grid-margin-y > .auto { + height: auto; + } + .grid-margin-y > .shrink { + height: auto; + } + .grid-margin-y > .small-1 { + height: calc(8.3333333333% - 1.875rem); + } + .grid-margin-y > .small-2 { + height: calc(16.6666666667% - 1.875rem); + } + .grid-margin-y > .small-3 { + height: calc(25% - 1.875rem); + } + .grid-margin-y > .small-4 { + height: calc(33.3333333333% - 1.875rem); + } + .grid-margin-y > .small-5 { + height: calc(41.6666666667% - 1.875rem); + } + .grid-margin-y > .small-6 { + height: calc(50% - 1.875rem); + } + .grid-margin-y > .small-7 { + height: calc(58.3333333333% - 1.875rem); + } + .grid-margin-y > .small-8 { + height: calc(66.6666666667% - 1.875rem); + } + .grid-margin-y > .small-9 { + height: calc(75% - 1.875rem); + } + .grid-margin-y > .small-10 { + height: calc(83.3333333333% - 1.875rem); + } + .grid-margin-y > .small-11 { + height: calc(91.6666666667% - 1.875rem); + } + .grid-margin-y > .small-12 { + height: calc(100% - 1.875rem); + } + .grid-margin-y > .medium-auto { + height: auto; + } + .grid-margin-y > .medium-shrink { + height: auto; + } + .grid-margin-y > .medium-1 { + height: calc(8.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-2 { + height: calc(16.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-3 { + height: calc(25% - 1.875rem); + } + .grid-margin-y > .medium-4 { + height: calc(33.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-5 { + height: calc(41.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-6 { + height: calc(50% - 1.875rem); + } + .grid-margin-y > .medium-7 { + height: calc(58.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-8 { + height: calc(66.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-9 { + height: calc(75% - 1.875rem); + } + .grid-margin-y > .medium-10 { + height: calc(83.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-11 { + height: calc(91.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-12 { + height: calc(100% - 1.875rem); + } +} +@media print, screen and (min-width: 64em) { + .grid-margin-y > .large-auto { + height: auto; + } + .grid-margin-y > .large-shrink { + height: auto; + } + .grid-margin-y > .large-1 { + height: calc(8.3333333333% - 1.875rem); + } + .grid-margin-y > .large-2 { + height: calc(16.6666666667% - 1.875rem); + } + .grid-margin-y > .large-3 { + height: calc(25% - 1.875rem); + } + .grid-margin-y > .large-4 { + height: calc(33.3333333333% - 1.875rem); + } + .grid-margin-y > .large-5 { + height: calc(41.6666666667% - 1.875rem); + } + .grid-margin-y > .large-6 { + height: calc(50% - 1.875rem); + } + .grid-margin-y > .large-7 { + height: calc(58.3333333333% - 1.875rem); + } + .grid-margin-y > .large-8 { + height: calc(66.6666666667% - 1.875rem); + } + .grid-margin-y > .large-9 { + height: calc(75% - 1.875rem); + } + .grid-margin-y > .large-10 { + height: calc(83.3333333333% - 1.875rem); + } + .grid-margin-y > .large-11 { + height: calc(91.6666666667% - 1.875rem); + } + .grid-margin-y > .large-12 { + height: calc(100% - 1.875rem); + } +} + +.grid-frame { + overflow: hidden; + position: relative; + flex-wrap: nowrap; + align-items: stretch; + width: 100vw; +} + +.cell .grid-frame { + width: 100%; +} + +.cell-block { + overflow-x: auto; + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +.cell-block-y { + overflow-y: auto; + max-height: 100%; + min-height: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +.cell-block-container { + display: flex; + flex-direction: column; + max-height: 100%; +} +.cell-block-container > .grid-x { + max-height: 100%; + flex-wrap: nowrap; +} + +@media print, screen and (min-width: 40em) { + .medium-grid-frame { + overflow: hidden; + position: relative; + flex-wrap: nowrap; + align-items: stretch; + width: 100vw; + } + .cell .medium-grid-frame { + width: 100%; + } + .medium-cell-block { + overflow-x: auto; + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } + .medium-cell-block-container { + display: flex; + flex-direction: column; + max-height: 100%; + } + .medium-cell-block-container > .grid-x { + max-height: 100%; + flex-wrap: nowrap; + } + .medium-cell-block-y { + overflow-y: auto; + max-height: 100%; + min-height: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } +} +@media print, screen and (min-width: 64em) { + .large-grid-frame { + overflow: hidden; + position: relative; + flex-wrap: nowrap; + align-items: stretch; + width: 100vw; + } + .cell .large-grid-frame { + width: 100%; + } + .large-cell-block { + overflow-x: auto; + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } + .large-cell-block-container { + display: flex; + flex-direction: column; + max-height: 100%; + } + .large-cell-block-container > .grid-x { + max-height: 100%; + flex-wrap: nowrap; + } + .large-cell-block-y { + overflow-y: auto; + max-height: 100%; + min-height: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } +} +.grid-y.grid-frame { + overflow: hidden; + position: relative; + flex-wrap: nowrap; + align-items: stretch; + height: 100vh; + width: auto; +} +@media print, screen and (min-width: 40em) { + .grid-y.medium-grid-frame { + overflow: hidden; + position: relative; + flex-wrap: nowrap; + align-items: stretch; + height: 100vh; + width: auto; + } +} +@media print, screen and (min-width: 64em) { + .grid-y.large-grid-frame { + overflow: hidden; + position: relative; + flex-wrap: nowrap; + align-items: stretch; + height: 100vh; + width: auto; + } +} + +.cell .grid-y.grid-frame { + height: 100%; +} +@media print, screen and (min-width: 40em) { + .cell .grid-y.medium-grid-frame { + height: 100%; + } +} +@media print, screen and (min-width: 64em) { + .cell .grid-y.large-grid-frame { + height: 100%; + } +} + +.grid-margin-y { + margin-top: -0.625rem; + margin-bottom: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-margin-y { + margin-top: -0.9375rem; + margin-bottom: -0.9375rem; + } +} +.grid-margin-y > .cell { + height: calc(100% - 1.25rem); + margin-top: 0.625rem; + margin-bottom: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .grid-margin-y > .cell { + height: calc(100% - 1.875rem); + margin-top: 0.9375rem; + margin-bottom: 0.9375rem; + } +} +.grid-margin-y > .auto { + height: auto; +} +.grid-margin-y > .shrink { + height: auto; +} +.grid-margin-y > .small-1 { + height: calc(8.3333333333% - 1.25rem); +} +.grid-margin-y > .small-2 { + height: calc(16.6666666667% - 1.25rem); +} +.grid-margin-y > .small-3 { + height: calc(25% - 1.25rem); +} +.grid-margin-y > .small-4 { + height: calc(33.3333333333% - 1.25rem); +} +.grid-margin-y > .small-5 { + height: calc(41.6666666667% - 1.25rem); +} +.grid-margin-y > .small-6 { + height: calc(50% - 1.25rem); +} +.grid-margin-y > .small-7 { + height: calc(58.3333333333% - 1.25rem); +} +.grid-margin-y > .small-8 { + height: calc(66.6666666667% - 1.25rem); +} +.grid-margin-y > .small-9 { + height: calc(75% - 1.25rem); +} +.grid-margin-y > .small-10 { + height: calc(83.3333333333% - 1.25rem); +} +.grid-margin-y > .small-11 { + height: calc(91.6666666667% - 1.25rem); +} +.grid-margin-y > .small-12 { + height: calc(100% - 1.25rem); +} +@media print, screen and (min-width: 40em) { + .grid-margin-y > .auto { + height: auto; + } + .grid-margin-y > .shrink { + height: auto; + } + .grid-margin-y > .small-1 { + height: calc(8.3333333333% - 1.875rem); + } + .grid-margin-y > .small-2 { + height: calc(16.6666666667% - 1.875rem); + } + .grid-margin-y > .small-3 { + height: calc(25% - 1.875rem); + } + .grid-margin-y > .small-4 { + height: calc(33.3333333333% - 1.875rem); + } + .grid-margin-y > .small-5 { + height: calc(41.6666666667% - 1.875rem); + } + .grid-margin-y > .small-6 { + height: calc(50% - 1.875rem); + } + .grid-margin-y > .small-7 { + height: calc(58.3333333333% - 1.875rem); + } + .grid-margin-y > .small-8 { + height: calc(66.6666666667% - 1.875rem); + } + .grid-margin-y > .small-9 { + height: calc(75% - 1.875rem); + } + .grid-margin-y > .small-10 { + height: calc(83.3333333333% - 1.875rem); + } + .grid-margin-y > .small-11 { + height: calc(91.6666666667% - 1.875rem); + } + .grid-margin-y > .small-12 { + height: calc(100% - 1.875rem); + } + .grid-margin-y > .medium-auto { + height: auto; + } + .grid-margin-y > .medium-shrink { + height: auto; + } + .grid-margin-y > .medium-1 { + height: calc(8.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-2 { + height: calc(16.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-3 { + height: calc(25% - 1.875rem); + } + .grid-margin-y > .medium-4 { + height: calc(33.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-5 { + height: calc(41.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-6 { + height: calc(50% - 1.875rem); + } + .grid-margin-y > .medium-7 { + height: calc(58.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-8 { + height: calc(66.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-9 { + height: calc(75% - 1.875rem); + } + .grid-margin-y > .medium-10 { + height: calc(83.3333333333% - 1.875rem); + } + .grid-margin-y > .medium-11 { + height: calc(91.6666666667% - 1.875rem); + } + .grid-margin-y > .medium-12 { + height: calc(100% - 1.875rem); + } +} +@media print, screen and (min-width: 64em) { + .grid-margin-y > .large-auto { + height: auto; + } + .grid-margin-y > .large-shrink { + height: auto; + } + .grid-margin-y > .large-1 { + height: calc(8.3333333333% - 1.875rem); + } + .grid-margin-y > .large-2 { + height: calc(16.6666666667% - 1.875rem); + } + .grid-margin-y > .large-3 { + height: calc(25% - 1.875rem); + } + .grid-margin-y > .large-4 { + height: calc(33.3333333333% - 1.875rem); + } + .grid-margin-y > .large-5 { + height: calc(41.6666666667% - 1.875rem); + } + .grid-margin-y > .large-6 { + height: calc(50% - 1.875rem); + } + .grid-margin-y > .large-7 { + height: calc(58.3333333333% - 1.875rem); + } + .grid-margin-y > .large-8 { + height: calc(66.6666666667% - 1.875rem); + } + .grid-margin-y > .large-9 { + height: calc(75% - 1.875rem); + } + .grid-margin-y > .large-10 { + height: calc(83.3333333333% - 1.875rem); + } + .grid-margin-y > .large-11 { + height: calc(91.6666666667% - 1.875rem); + } + .grid-margin-y > .large-12 { + height: calc(100% - 1.875rem); + } +} + +.grid-frame.grid-margin-y { + height: calc(100vh + 1.25rem); +} +@media print, screen and (min-width: 40em) { + .grid-frame.grid-margin-y { + height: calc(100vh + 1.875rem); + } +} +@media print, screen and (min-width: 64em) { + .grid-frame.grid-margin-y { + height: calc(100vh + 1.875rem); + } +} + +@media print, screen and (min-width: 40em) { + .grid-margin-y.medium-grid-frame { + height: calc(100vh + 1.875rem); + } +} +@media print, screen and (min-width: 64em) { + .grid-margin-y.large-grid-frame { + height: calc(100vh + 1.875rem); + } +} +.button { + display: inline-block; + vertical-align: middle; + margin: 0 0 1rem 0; + border: 1px solid transparent; + border-radius: 0; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + font-family: inherit; + font-size: 0.9rem; + -webkit-appearance: none; + line-height: 1; + text-align: center; + cursor: pointer; + padding: 0.85em 1em; +} +[data-whatinput=mouse] .button { + outline: 0; +} +.button.tiny { + font-size: 0.6rem; +} +.button.small { + font-size: 0.75rem; +} +.button.large { + font-size: 1.25rem; +} +.button.expanded { + display: block; + width: 100%; + margin-right: 0; + margin-left: 0; +} +.button, .button.disabled, .button[disabled], .button.disabled:hover, .button[disabled]:hover, .button.disabled:focus, .button[disabled]:focus { + background-color: #1779ba; + color: #fefefe; +} +.button:hover, .button:focus { + background-color: rgb(19.55, 102.85, 158.1); + color: #fefefe; +} +.button.primary, .button.primary.disabled, .button.primary[disabled], .button.primary.disabled:hover, .button.primary[disabled]:hover, .button.primary.disabled:focus, .button.primary[disabled]:focus { + background-color: #1779ba; + color: #fefefe; +} +.button.primary:hover, .button.primary:focus { + background-color: rgb(18.4, 96.8, 148.8); + color: #fefefe; +} +.button.secondary, .button.secondary.disabled, .button.secondary[disabled], .button.secondary.disabled:hover, .button.secondary[disabled]:hover, .button.secondary.disabled:focus, .button.secondary[disabled]:focus { + background-color: #767676; + color: #fefefe; +} +.button.secondary:hover, .button.secondary:focus { + background-color: rgb(94.4, 94.4, 94.4); + color: #fefefe; +} +.button.success, .button.success.disabled, .button.success[disabled], .button.success.disabled:hover, .button.success[disabled]:hover, .button.success.disabled:focus, .button.success[disabled]:focus { + background-color: #3adb76; + color: #0a0a0a; +} +.button.success:hover, .button.success:focus { + background-color: rgb(34.2386266094, 187.3613733906, 91.3030042918); + color: #0a0a0a; +} +.button.warning, .button.warning.disabled, .button.warning[disabled], .button.warning.disabled:hover, .button.warning[disabled]:hover, .button.warning.disabled:focus, .button.warning[disabled]:focus { + background-color: #ffae00; + color: #0a0a0a; +} +.button.warning:hover, .button.warning:focus { + background-color: rgb(204, 139.2, 0); + color: #0a0a0a; +} +.button.alert, .button.alert.disabled, .button.alert[disabled], .button.alert.disabled:hover, .button.alert[disabled]:hover, .button.alert.disabled:focus, .button.alert[disabled]:focus { + background-color: #cc4b37; + color: #fefefe; +} +.button.alert:hover, .button.alert:focus { + background-color: rgb(165.0996015936, 58.6103585657, 42.1003984064); + color: #fefefe; +} +.button.hollow, .button.hollow:hover, .button.hollow:focus, .button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus { + background-color: transparent; +} +.button.hollow, .button.hollow.disabled, .button.hollow[disabled], .button.hollow.disabled:hover, .button.hollow[disabled]:hover, .button.hollow.disabled:focus, .button.hollow[disabled]:focus { + border: 1px solid #1779ba; + color: #1779ba; +} +.button.hollow:hover, .button.hollow:focus { + border-color: rgb(11.5, 60.5, 93); + color: rgb(11.5, 60.5, 93); +} +.button.hollow.primary, .button.hollow.primary.disabled, .button.hollow.primary[disabled], .button.hollow.primary.disabled:hover, .button.hollow.primary[disabled]:hover, .button.hollow.primary.disabled:focus, .button.hollow.primary[disabled]:focus { + border: 1px solid #1779ba; + color: #1779ba; +} +.button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: rgb(11.5, 60.5, 93); + color: rgb(11.5, 60.5, 93); +} +.button.hollow.secondary, .button.hollow.secondary.disabled, .button.hollow.secondary[disabled], .button.hollow.secondary.disabled:hover, .button.hollow.secondary[disabled]:hover, .button.hollow.secondary.disabled:focus, .button.hollow.secondary[disabled]:focus { + border: 1px solid #767676; + color: #767676; +} +.button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3b3b3b; + color: #3b3b3b; +} +.button.hollow.success, .button.hollow.success.disabled, .button.hollow.success[disabled], .button.hollow.success.disabled:hover, .button.hollow.success[disabled]:hover, .button.hollow.success.disabled:focus, .button.hollow.success[disabled]:focus { + border: 1px solid #3adb76; + color: #3adb76; +} +.button.hollow.success:hover, .button.hollow.success:focus { + border-color: rgb(21.3991416309, 117.1008583691, 57.0643776824); + color: rgb(21.3991416309, 117.1008583691, 57.0643776824); +} +.button.hollow.warning, .button.hollow.warning.disabled, .button.hollow.warning[disabled], .button.hollow.warning.disabled:hover, .button.hollow.warning[disabled]:hover, .button.hollow.warning.disabled:focus, .button.hollow.warning[disabled]:focus { + border: 1px solid #ffae00; + color: #ffae00; +} +.button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: rgb(127.5, 87, 0); + color: rgb(127.5, 87, 0); +} +.button.hollow.alert, .button.hollow.alert.disabled, .button.hollow.alert[disabled], .button.hollow.alert.disabled:hover, .button.hollow.alert[disabled]:hover, .button.hollow.alert.disabled:focus, .button.hollow.alert[disabled]:focus { + border: 1px solid #cc4b37; + color: #cc4b37; +} +.button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: rgb(103.187250996, 36.6314741036, 26.312749004); + color: rgb(103.187250996, 36.6314741036, 26.312749004); +} +.button.clear, .button.clear:hover, .button.clear:focus, .button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus { + border-color: transparent; + background-color: transparent; +} +.button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear.disabled:hover, .button.clear[disabled]:hover, .button.clear.disabled:focus, .button.clear[disabled]:focus { + color: #1779ba; +} +.button.clear:hover, .button.clear:focus { + color: rgb(11.5, 60.5, 93); +} +.button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary.disabled:hover, .button.clear.primary[disabled]:hover, .button.clear.primary.disabled:focus, .button.clear.primary[disabled]:focus { + color: #1779ba; +} +.button.clear.primary:hover, .button.clear.primary:focus { + color: rgb(11.5, 60.5, 93); +} +.button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary.disabled:hover, .button.clear.secondary[disabled]:hover, .button.clear.secondary.disabled:focus, .button.clear.secondary[disabled]:focus { + color: #767676; +} +.button.clear.secondary:hover, .button.clear.secondary:focus { + color: #3b3b3b; +} +.button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success.disabled:hover, .button.clear.success[disabled]:hover, .button.clear.success.disabled:focus, .button.clear.success[disabled]:focus { + color: #3adb76; +} +.button.clear.success:hover, .button.clear.success:focus { + color: rgb(21.3991416309, 117.1008583691, 57.0643776824); +} +.button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning.disabled:hover, .button.clear.warning[disabled]:hover, .button.clear.warning.disabled:focus, .button.clear.warning[disabled]:focus { + color: #ffae00; +} +.button.clear.warning:hover, .button.clear.warning:focus { + color: rgb(127.5, 87, 0); +} +.button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert.disabled:hover, .button.clear.alert[disabled]:hover, .button.clear.alert.disabled:focus, .button.clear.alert[disabled]:focus { + color: #cc4b37; +} +.button.clear.alert:hover, .button.clear.alert:focus { + color: rgb(103.187250996, 36.6314741036, 26.312749004); +} +.button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; +} +.button.dropdown::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 0.4em; + content: ""; + border-bottom-width: 0; + border-color: #fefefe transparent transparent; + position: relative; + top: 0.4em; + display: inline-block; + float: right; + margin-left: 1em; +} +.button.dropdown.hollow::after, .button.dropdown.clear::after { + border-top-color: #1779ba; +} +.button.dropdown.hollow.primary::after, .button.dropdown.clear.primary::after { + border-top-color: #1779ba; +} +.button.dropdown.hollow.secondary::after, .button.dropdown.clear.secondary::after { + border-top-color: #767676; +} +.button.dropdown.hollow.success::after, .button.dropdown.clear.success::after { + border-top-color: #3adb76; +} +.button.dropdown.hollow.warning::after, .button.dropdown.clear.warning::after { + border-top-color: #ffae00; +} +.button.dropdown.hollow.alert::after, .button.dropdown.clear.alert::after { + border-top-color: #cc4b37; +} +.button.arrow-only::after { + top: -0.1em; + float: none; + margin-left: 0; +} + +a.button:hover, a.button:focus { + text-decoration: none; +} + +.button-group { + margin-bottom: 1rem; + display: flex; + flex-wrap: wrap; + align-items: stretch; + flex-grow: 1; +} +.button-group::before, .button-group::after { + display: none; +} +.button-group::before, .button-group::after { + display: table; + content: " "; + flex-basis: 0; + order: 1; +} +.button-group::after { + clear: both; +} +.button-group .button { + margin: 0; + margin-right: 1px; + margin-bottom: 1px; + font-size: 0.9rem; + flex: 0 0 auto; +} +.button-group .button:last-child { + margin-right: 0; +} +.button-group.tiny .button { + font-size: 0.6rem; +} +.button-group.small .button { + font-size: 0.75rem; +} +.button-group.large .button { + font-size: 1.25rem; +} +.button-group.expanded .button { + flex: 1 1 0px; +} +.button-group.primary .button, .button-group.primary .button.disabled, .button-group.primary .button[disabled], .button-group.primary .button.disabled:hover, .button-group.primary .button[disabled]:hover, .button-group.primary .button.disabled:focus, .button-group.primary .button[disabled]:focus { + background-color: #1779ba; + color: #fefefe; +} +.button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: rgb(18.4, 96.8, 148.8); + color: #fefefe; +} +.button-group.secondary .button, .button-group.secondary .button.disabled, .button-group.secondary .button[disabled], .button-group.secondary .button.disabled:hover, .button-group.secondary .button[disabled]:hover, .button-group.secondary .button.disabled:focus, .button-group.secondary .button[disabled]:focus { + background-color: #767676; + color: #fefefe; +} +.button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: rgb(94.4, 94.4, 94.4); + color: #fefefe; +} +.button-group.success .button, .button-group.success .button.disabled, .button-group.success .button[disabled], .button-group.success .button.disabled:hover, .button-group.success .button[disabled]:hover, .button-group.success .button.disabled:focus, .button-group.success .button[disabled]:focus { + background-color: #3adb76; + color: #0a0a0a; +} +.button-group.success .button:hover, .button-group.success .button:focus { + background-color: rgb(34.2386266094, 187.3613733906, 91.3030042918); + color: #0a0a0a; +} +.button-group.warning .button, .button-group.warning .button.disabled, .button-group.warning .button[disabled], .button-group.warning .button.disabled:hover, .button-group.warning .button[disabled]:hover, .button-group.warning .button.disabled:focus, .button-group.warning .button[disabled]:focus { + background-color: #ffae00; + color: #0a0a0a; +} +.button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: rgb(204, 139.2, 0); + color: #0a0a0a; +} +.button-group.alert .button, .button-group.alert .button.disabled, .button-group.alert .button[disabled], .button-group.alert .button.disabled:hover, .button-group.alert .button[disabled]:hover, .button-group.alert .button.disabled:focus, .button-group.alert .button[disabled]:focus { + background-color: #cc4b37; + color: #fefefe; +} +.button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: rgb(165.0996015936, 58.6103585657, 42.1003984064); + color: #fefefe; +} +.button-group.hollow .button, .button-group.hollow .button:hover, .button-group.hollow .button:focus, .button-group.hollow .button.disabled, .button-group.hollow .button.disabled:hover, .button-group.hollow .button.disabled:focus, .button-group.hollow .button[disabled], .button-group.hollow .button[disabled]:hover, .button-group.hollow .button[disabled]:focus { + background-color: transparent; +} +.button-group.hollow .button, .button-group.hollow .button.disabled, .button-group.hollow .button[disabled], .button-group.hollow .button.disabled:hover, .button-group.hollow .button[disabled]:hover, .button-group.hollow .button.disabled:focus, .button-group.hollow .button[disabled]:focus { + border: 1px solid #1779ba; + color: #1779ba; +} +.button-group.hollow .button:hover, .button-group.hollow .button:focus { + border-color: rgb(11.5, 60.5, 93); + color: rgb(11.5, 60.5, 93); +} +.button-group.hollow.primary .button, .button-group.hollow.primary .button.disabled, .button-group.hollow.primary .button[disabled], .button-group.hollow.primary .button.disabled:hover, .button-group.hollow.primary .button[disabled]:hover, .button-group.hollow.primary .button.disabled:focus, .button-group.hollow.primary .button[disabled]:focus, .button-group.hollow .button.primary, .button-group.hollow .button.primary.disabled, .button-group.hollow .button.primary[disabled], .button-group.hollow .button.primary.disabled:hover, .button-group.hollow .button.primary[disabled]:hover, .button-group.hollow .button.primary.disabled:focus, .button-group.hollow .button.primary[disabled]:focus { + border: 1px solid #1779ba; + color: #1779ba; +} +.button-group.hollow.primary .button:hover, .button-group.hollow.primary .button:focus, .button-group.hollow .button.primary:hover, .button-group.hollow .button.primary:focus { + border-color: rgb(11.5, 60.5, 93); + color: rgb(11.5, 60.5, 93); +} +.button-group.hollow.secondary .button, .button-group.hollow.secondary .button.disabled, .button-group.hollow.secondary .button[disabled], .button-group.hollow.secondary .button.disabled:hover, .button-group.hollow.secondary .button[disabled]:hover, .button-group.hollow.secondary .button.disabled:focus, .button-group.hollow.secondary .button[disabled]:focus, .button-group.hollow .button.secondary, .button-group.hollow .button.secondary.disabled, .button-group.hollow .button.secondary[disabled], .button-group.hollow .button.secondary.disabled:hover, .button-group.hollow .button.secondary[disabled]:hover, .button-group.hollow .button.secondary.disabled:focus, .button-group.hollow .button.secondary[disabled]:focus { + border: 1px solid #767676; + color: #767676; +} +.button-group.hollow.secondary .button:hover, .button-group.hollow.secondary .button:focus, .button-group.hollow .button.secondary:hover, .button-group.hollow .button.secondary:focus { + border-color: #3b3b3b; + color: #3b3b3b; +} +.button-group.hollow.success .button, .button-group.hollow.success .button.disabled, .button-group.hollow.success .button[disabled], .button-group.hollow.success .button.disabled:hover, .button-group.hollow.success .button[disabled]:hover, .button-group.hollow.success .button.disabled:focus, .button-group.hollow.success .button[disabled]:focus, .button-group.hollow .button.success, .button-group.hollow .button.success.disabled, .button-group.hollow .button.success[disabled], .button-group.hollow .button.success.disabled:hover, .button-group.hollow .button.success[disabled]:hover, .button-group.hollow .button.success.disabled:focus, .button-group.hollow .button.success[disabled]:focus { + border: 1px solid #3adb76; + color: #3adb76; +} +.button-group.hollow.success .button:hover, .button-group.hollow.success .button:focus, .button-group.hollow .button.success:hover, .button-group.hollow .button.success:focus { + border-color: rgb(21.3991416309, 117.1008583691, 57.0643776824); + color: rgb(21.3991416309, 117.1008583691, 57.0643776824); +} +.button-group.hollow.warning .button, .button-group.hollow.warning .button.disabled, .button-group.hollow.warning .button[disabled], .button-group.hollow.warning .button.disabled:hover, .button-group.hollow.warning .button[disabled]:hover, .button-group.hollow.warning .button.disabled:focus, .button-group.hollow.warning .button[disabled]:focus, .button-group.hollow .button.warning, .button-group.hollow .button.warning.disabled, .button-group.hollow .button.warning[disabled], .button-group.hollow .button.warning.disabled:hover, .button-group.hollow .button.warning[disabled]:hover, .button-group.hollow .button.warning.disabled:focus, .button-group.hollow .button.warning[disabled]:focus { + border: 1px solid #ffae00; + color: #ffae00; +} +.button-group.hollow.warning .button:hover, .button-group.hollow.warning .button:focus, .button-group.hollow .button.warning:hover, .button-group.hollow .button.warning:focus { + border-color: rgb(127.5, 87, 0); + color: rgb(127.5, 87, 0); +} +.button-group.hollow.alert .button, .button-group.hollow.alert .button.disabled, .button-group.hollow.alert .button[disabled], .button-group.hollow.alert .button.disabled:hover, .button-group.hollow.alert .button[disabled]:hover, .button-group.hollow.alert .button.disabled:focus, .button-group.hollow.alert .button[disabled]:focus, .button-group.hollow .button.alert, .button-group.hollow .button.alert.disabled, .button-group.hollow .button.alert[disabled], .button-group.hollow .button.alert.disabled:hover, .button-group.hollow .button.alert[disabled]:hover, .button-group.hollow .button.alert.disabled:focus, .button-group.hollow .button.alert[disabled]:focus { + border: 1px solid #cc4b37; + color: #cc4b37; +} +.button-group.hollow.alert .button:hover, .button-group.hollow.alert .button:focus, .button-group.hollow .button.alert:hover, .button-group.hollow .button.alert:focus { + border-color: rgb(103.187250996, 36.6314741036, 26.312749004); + color: rgb(103.187250996, 36.6314741036, 26.312749004); +} +.button-group.clear .button, .button-group.clear .button:hover, .button-group.clear .button:focus, .button-group.clear .button.disabled, .button-group.clear .button.disabled:hover, .button-group.clear .button.disabled:focus, .button-group.clear .button[disabled], .button-group.clear .button[disabled]:hover, .button-group.clear .button[disabled]:focus { + border-color: transparent; + background-color: transparent; +} +.button-group.clear .button, .button-group.clear .button.disabled, .button-group.clear .button[disabled], .button-group.clear .button.disabled:hover, .button-group.clear .button[disabled]:hover, .button-group.clear .button.disabled:focus, .button-group.clear .button[disabled]:focus { + color: #1779ba; +} +.button-group.clear .button:hover, .button-group.clear .button:focus { + color: rgb(11.5, 60.5, 93); +} +.button-group.clear.primary .button, .button-group.clear.primary .button.disabled, .button-group.clear.primary .button[disabled], .button-group.clear.primary .button.disabled:hover, .button-group.clear.primary .button[disabled]:hover, .button-group.clear.primary .button.disabled:focus, .button-group.clear.primary .button[disabled]:focus, .button-group.clear .button.primary, .button-group.clear .button.primary.disabled, .button-group.clear .button.primary[disabled], .button-group.clear .button.primary.disabled:hover, .button-group.clear .button.primary[disabled]:hover, .button-group.clear .button.primary.disabled:focus, .button-group.clear .button.primary[disabled]:focus { + color: #1779ba; +} +.button-group.clear.primary .button:hover, .button-group.clear.primary .button:focus, .button-group.clear .button.primary:hover, .button-group.clear .button.primary:focus { + color: rgb(11.5, 60.5, 93); +} +.button-group.clear.secondary .button, .button-group.clear.secondary .button.disabled, .button-group.clear.secondary .button[disabled], .button-group.clear.secondary .button.disabled:hover, .button-group.clear.secondary .button[disabled]:hover, .button-group.clear.secondary .button.disabled:focus, .button-group.clear.secondary .button[disabled]:focus, .button-group.clear .button.secondary, .button-group.clear .button.secondary.disabled, .button-group.clear .button.secondary[disabled], .button-group.clear .button.secondary.disabled:hover, .button-group.clear .button.secondary[disabled]:hover, .button-group.clear .button.secondary.disabled:focus, .button-group.clear .button.secondary[disabled]:focus { + color: #767676; +} +.button-group.clear.secondary .button:hover, .button-group.clear.secondary .button:focus, .button-group.clear .button.secondary:hover, .button-group.clear .button.secondary:focus { + color: #3b3b3b; +} +.button-group.clear.success .button, .button-group.clear.success .button.disabled, .button-group.clear.success .button[disabled], .button-group.clear.success .button.disabled:hover, .button-group.clear.success .button[disabled]:hover, .button-group.clear.success .button.disabled:focus, .button-group.clear.success .button[disabled]:focus, .button-group.clear .button.success, .button-group.clear .button.success.disabled, .button-group.clear .button.success[disabled], .button-group.clear .button.success.disabled:hover, .button-group.clear .button.success[disabled]:hover, .button-group.clear .button.success.disabled:focus, .button-group.clear .button.success[disabled]:focus { + color: #3adb76; +} +.button-group.clear.success .button:hover, .button-group.clear.success .button:focus, .button-group.clear .button.success:hover, .button-group.clear .button.success:focus { + color: rgb(21.3991416309, 117.1008583691, 57.0643776824); +} +.button-group.clear.warning .button, .button-group.clear.warning .button.disabled, .button-group.clear.warning .button[disabled], .button-group.clear.warning .button.disabled:hover, .button-group.clear.warning .button[disabled]:hover, .button-group.clear.warning .button.disabled:focus, .button-group.clear.warning .button[disabled]:focus, .button-group.clear .button.warning, .button-group.clear .button.warning.disabled, .button-group.clear .button.warning[disabled], .button-group.clear .button.warning.disabled:hover, .button-group.clear .button.warning[disabled]:hover, .button-group.clear .button.warning.disabled:focus, .button-group.clear .button.warning[disabled]:focus { + color: #ffae00; +} +.button-group.clear.warning .button:hover, .button-group.clear.warning .button:focus, .button-group.clear .button.warning:hover, .button-group.clear .button.warning:focus { + color: rgb(127.5, 87, 0); +} +.button-group.clear.alert .button, .button-group.clear.alert .button.disabled, .button-group.clear.alert .button[disabled], .button-group.clear.alert .button.disabled:hover, .button-group.clear.alert .button[disabled]:hover, .button-group.clear.alert .button.disabled:focus, .button-group.clear.alert .button[disabled]:focus, .button-group.clear .button.alert, .button-group.clear .button.alert.disabled, .button-group.clear .button.alert[disabled], .button-group.clear .button.alert.disabled:hover, .button-group.clear .button.alert[disabled]:hover, .button-group.clear .button.alert.disabled:focus, .button-group.clear .button.alert[disabled]:focus { + color: #cc4b37; +} +.button-group.clear.alert .button:hover, .button-group.clear.alert .button:focus, .button-group.clear .button.alert:hover, .button-group.clear .button.alert:focus { + color: rgb(103.187250996, 36.6314741036, 26.312749004); +} +.button-group.no-gaps .button { + margin-right: -0.0625rem; +} +.button-group.no-gaps .button + .button { + border-left-color: transparent; +} +.button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium { + flex-wrap: wrap; +} +.button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + flex: 0 0 100%; +} +.button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { + margin-bottom: 0; +} +.button-group.stacked.expanded .button, .button-group.stacked-for-small.expanded .button, .button-group.stacked-for-medium.expanded .button { + flex: 1 1 0px; +} +@media print, screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + flex: 0 0 auto; + margin-bottom: 0; + } +} +@media print, screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + flex: 0 0 auto; + margin-bottom: 0; + } +} +@media print, screen and (max-width: 39.99875em) { + .button-group.stacked-for-small.expanded { + display: block; + } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-right: 0; + } +} +@media print, screen and (max-width: 63.99875em) { + .button-group.stacked-for-medium.expanded { + display: block; + } + .button-group.stacked-for-medium.expanded .button { + display: block; + margin-right: 0; + } +} + +.close-button { + position: absolute; + z-index: 10; + color: #8a8a8a; + cursor: pointer; +} +[data-whatinput=mouse] .close-button { + outline: 0; +} +.close-button:hover, .close-button:focus { + color: #0a0a0a; +} +.close-button.small { + right: 0.66rem; + top: 0.33em; + font-size: 1.5em; + line-height: 1; +} + +.close-button.medium, .close-button { + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; +} + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + border-radius: 0; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + background: #1779ba; + color: #fefefe; +} +.label.primary { + background: #1779ba; + color: #fefefe; +} +.label.secondary { + background: #767676; + color: #fefefe; +} +.label.success { + background: #3adb76; + color: #0a0a0a; +} +.label.warning { + background: #ffae00; + color: #0a0a0a; +} +.label.alert { + background: #cc4b37; + color: #fefefe; +} + +.progress { + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; + background-color: #cacaca; +} +.progress.primary .progress-meter { + background-color: #1779ba; +} +.progress.secondary .progress-meter { + background-color: #767676; +} +.progress.success .progress-meter { + background-color: #3adb76; +} +.progress.warning .progress-meter { + background-color: #ffae00; +} +.progress.alert .progress-meter { + background-color: #cc4b37; +} + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #1779ba; +} + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; +} + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + user-select: none; + touch-action: none; +} + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + transition: all 0.2s ease-in-out; +} +.slider-fill.is-dragging { + transition: all 0s linear; +} + +.slider-handle { + left: 0; + z-index: 1; + cursor: grab; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + border-radius: 0; + background-color: #1779ba; + transition: all 0.2s ease-in-out; + touch-action: manipulation; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +[data-whatinput=mouse] .slider-handle { + outline: 0; +} +.slider-handle:hover { + background-color: rgb(19.55, 102.85, 158.1); +} +.slider-handle.is-dragging { + transition: all 0s linear; + cursor: grabbing; +} + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; +} + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + transform: scale(1, -1); +} +.slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; +} +.slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + transform: translateX(-50%); +} + +.switch { + position: relative; + margin-bottom: 1rem; + outline: 0; + font-size: 0.875rem; + font-weight: bold; + color: #fefefe; + user-select: none; + height: 2rem; +} + +.switch-input { + position: absolute; + margin-bottom: 0; + opacity: 0; +} + +.switch-paddle { + position: relative; + display: block; + width: 4rem; + height: 2rem; + border-radius: 0; + background: #cacaca; + transition: all 0.25s ease-out; + font-weight: inherit; + color: inherit; + cursor: pointer; +} +input + .switch-paddle { + margin: 0; +} +.switch-paddle::after { + position: absolute; + top: 0.25rem; + left: 0.25rem; + display: block; + width: 1.5rem; + height: 1.5rem; + transform: translate3d(0, 0, 0); + border-radius: 0; + background: #fefefe; + transition: all 0.25s ease-out; + content: ""; +} +input:checked ~ .switch-paddle { + background: #1779ba; +} +input:checked ~ .switch-paddle::after { + left: 2.25rem; +} +input:focus-visible ~ .switch-paddle { + background: rgb(181.8, 181.8, 181.8); +} +input:focus-visible ~ .switch-paddle::after { + background: #fefefe; +} +input:checked:focus-visible ~ .switch-paddle { + background: rgb(19.55, 102.85, 158.1); +} +input:disabled ~ .switch-paddle { + cursor: not-allowed; + opacity: 0.5; +} +[data-whatinput=mouse] input:focus ~ .switch-paddle { + outline: 0; +} + +.switch-inactive, .switch-active { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +.switch-active { + left: 8%; + display: none; +} +input:checked + label > .switch-active { + display: block; +} + +.switch-inactive { + right: 15%; +} +input:checked + label > .switch-inactive { + display: none; +} + +.switch.tiny { + height: 1.5rem; +} +.switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; +} +.switch.tiny .switch-paddle::after { + top: 0.25rem; + left: 0.25rem; + width: 1rem; + height: 1rem; +} +.switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; +} + +.switch.small { + height: 1.75rem; +} +.switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; +} +.switch.small .switch-paddle::after { + top: 0.25rem; + left: 0.25rem; + width: 1.25rem; + height: 1.25rem; +} +.switch.small input:checked ~ .switch-paddle::after { + left: 2rem; +} + +.switch.large { + height: 2.5rem; +} +.switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; +} +.switch.large .switch-paddle::after { + top: 0.25rem; + left: 0.25rem; + width: 2rem; + height: 2rem; +} +.switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; +} + +table { + border-collapse: collapse; + width: 100%; + margin-bottom: 1rem; + border-radius: 0; +} +thead, +tbody, +tfoot { + border: 1px solid rgb(241.3, 241.3, 241.3); + background-color: #fefefe; +} + +caption { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; +} + +thead { + background: rgb(247.65, 247.65, 247.65); + color: #0a0a0a; +} + +tfoot { + background: rgb(241.3, 241.3, 241.3); + color: #0a0a0a; +} + +thead tr, +tfoot tr { + background: transparent; +} +thead th, +thead td, +tfoot th, +tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; +} + +tbody th, +tbody td { + padding: 0.5rem 0.625rem 0.625rem; +} + +tbody tr:nth-child(even) { + border-bottom: 0; + background-color: rgb(241.3, 241.3, 241.3); +} + +table.unstriped tbody { + background-color: #fefefe; +} +table.unstriped tbody tr { + border-bottom: 1px solid rgb(241.3, 241.3, 241.3); + background-color: #fefefe; +} + +@media print, screen and (max-width: 63.99875em) { + table.stack thead { + display: none; + } + table.stack tfoot { + display: none; + } + table.stack tr, + table.stack th, + table.stack td { + display: block; + } + table.stack td { + border-top: 0; + } +} + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; +} + +table.hover thead tr:hover { + background-color: rgb(242.55, 242.55, 242.55); +} +table.hover tfoot tr:hover { + background-color: rgb(236.2, 236.2, 236.2); +} +table.hover tbody tr:hover { + background-color: rgb(248.9, 248.9, 248.9); +} +table.hover:not(.unstriped) tr:nth-of-type(even):hover { + background-color: rgb(236.15, 236.15, 236.15); +} + +.table-scroll { + overflow-x: auto; +} + +.badge { + display: inline-block; + min-width: 2.1em; + padding: 0.3em; + border-radius: 50%; + font-size: 0.6rem; + text-align: center; + background: #1779ba; + color: #fefefe; +} +.badge.primary { + background: #1779ba; + color: #fefefe; +} +.badge.secondary { + background: #767676; + color: #fefefe; +} +.badge.success { + background: #3adb76; + color: #0a0a0a; +} +.badge.warning { + background: #ffae00; + color: #0a0a0a; +} +.badge.alert { + background: #cc4b37; + color: #fefefe; +} + +.breadcrumbs { + margin: 0 0 1rem 0; + list-style: none; +} +.breadcrumbs::before, .breadcrumbs::after { + display: table; + content: " "; + flex-basis: 0; + order: 1; +} +.breadcrumbs::after { + clear: both; +} +.breadcrumbs li { + float: left; + font-size: 0.6875rem; + color: #0a0a0a; + cursor: default; + text-transform: uppercase; +} +.breadcrumbs li:not(:last-child)::after { + position: relative; + margin: 0 0.75rem; + opacity: 1; + content: "/"; + color: #cacaca; +} +.breadcrumbs a { + color: #1779ba; +} +.breadcrumbs a:hover { + text-decoration: underline; +} +.breadcrumbs .disabled { + color: #cacaca; + cursor: not-allowed; +} + +.callout { + background-color: rgb(254.85, 254.85, 254.85); + color: #0a0a0a; + position: relative; + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; +} +.callout > :first-child { + margin-top: 0; +} +.callout > :last-child { + margin-bottom: 0; +} +.callout.primary { + background-color: rgb(214.8186602871, 235.9894736842, 250.0313397129); + color: #0a0a0a; +} +.callout.secondary { + background-color: rgb(234.45, 234.45, 234.45); + color: #0a0a0a; +} +.callout.success { + background-color: rgb(225.45, 249.6, 234.45); + color: #0a0a0a; +} +.callout.warning { + background-color: rgb(255, 242.85, 216.75); + color: #0a0a0a; +} +.callout.alert { + background-color: rgb(247.35, 228, 225); + color: #0a0a0a; +} +.callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; +} +.callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; +} + +.card { + display: flex; + flex-direction: column; + flex-grow: 1; + margin-bottom: 1rem; + border: 1px solid #e6e6e6; + border-radius: 0; + background: #fefefe; + box-shadow: none; + overflow: hidden; + color: #0a0a0a; +} +.card > :last-child { + margin-bottom: 0; +} + +.card-divider { + display: flex; + flex: 0 1 auto; + padding: 1rem; + background: #e6e6e6; +} +.card-divider > :last-child { + margin-bottom: 0; +} + +.card-section { + flex: 1 0 auto; + padding: 1rem; +} +.card-section > :last-child { + margin-bottom: 0; +} + +.card-image { + min-height: 1px; +} + +.dropdown-pane { + position: absolute; + z-index: 10; + display: none; + width: 300px; + padding: 1rem; + visibility: hidden; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + font-size: 1rem; +} +.dropdown-pane.is-opening { + display: block; +} +.dropdown-pane.is-open { + display: block; + visibility: visible; +} + +.dropdown-pane.tiny { + width: 100px; +} + +.dropdown-pane.small { + width: 200px; +} + +.dropdown-pane.large { + width: 400px; +} + +.pagination { + margin-left: 0; + margin-bottom: 1rem; +} +.pagination::before, .pagination::after { + display: table; + content: " "; + flex-basis: 0; + order: 1; +} +.pagination::after { + clear: both; +} +.pagination li { + margin-right: 0.0625rem; + border-radius: 0; + font-size: 0.875rem; + display: none; +} +.pagination li:last-child, .pagination li:first-child { + display: inline-block; +} +@media print, screen and (min-width: 40em) { + .pagination li { + display: inline-block; + } +} +.pagination a, +.pagination button { + display: block; + padding: 0.1875rem 0.625rem; + border-radius: 0; + color: #0a0a0a; +} +.pagination a:hover, +.pagination button:hover { + background: #e6e6e6; +} +.pagination .current { + padding: 0.1875rem 0.625rem; + background: #1779ba; + color: #fefefe; + cursor: default; +} +.pagination .disabled { + padding: 0.1875rem 0.625rem; + color: #cacaca; + cursor: not-allowed; +} +.pagination .disabled:hover { + background: transparent; +} +.pagination .ellipsis::after { + padding: 0.1875rem 0.625rem; + content: "…"; + color: #0a0a0a; +} + +.pagination-previous a::before, +.pagination-previous.disabled::before { + display: inline-block; + margin-right: 0.5rem; + content: "«"; +} + +.pagination-next a::after, +.pagination-next.disabled::after { + display: inline-block; + margin-left: 0.5rem; + content: "»"; +} + +.has-tip { + position: relative; + display: inline-block; + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + cursor: help; +} + +.tooltip { + position: absolute; + top: calc(100% + 0.6495rem); + z-index: 1200; + max-width: 10rem; + padding: 0.75rem; + border-radius: 0; + background-color: #0a0a0a; + font-size: 80%; + color: #fefefe; +} +.tooltip::before { + position: absolute; +} +.tooltip.bottom::before { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 0.75rem; + content: ""; + border-top-width: 0; + border-color: transparent transparent #0a0a0a; + bottom: 100%; +} +.tooltip.bottom.align-center::before { + left: 50%; + transform: translateX(-50%); +} +.tooltip.top::before { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 0.75rem; + content: ""; + border-bottom-width: 0; + border-color: #0a0a0a transparent transparent; + top: 100%; + bottom: auto; +} +.tooltip.top.align-center::before { + left: 50%; + transform: translateX(-50%); +} +.tooltip.left::before { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 0.75rem; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #0a0a0a; + left: 100%; +} +.tooltip.left.align-center::before { + bottom: auto; + top: 50%; + transform: translateY(-50%); +} +.tooltip.right::before { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 0.75rem; + content: ""; + border-left-width: 0; + border-color: transparent #0a0a0a transparent transparent; + right: 100%; + left: auto; +} +.tooltip.right.align-center::before { + bottom: auto; + top: 50%; + transform: translateY(-50%); +} +.tooltip.align-top::before { + bottom: auto; + top: 10%; +} +.tooltip.align-bottom::before { + bottom: 10%; + top: auto; +} +.tooltip.align-left::before { + left: 10%; + right: auto; +} +.tooltip.align-right::before { + left: auto; + right: 10%; +} + +.accordion { + margin-left: 0; + background: #fefefe; + list-style-type: none; +} +.accordion[disabled] .accordion-title { + cursor: not-allowed; +} + +.accordion-item:first-child > :first-child { + border-radius: 0 0 0 0; +} +.accordion-item:last-child > :last-child { + border-radius: 0 0 0 0; +} + +.accordion-title { + position: relative; + display: block; + padding: 1.25rem 1rem; + border: 1px solid #e6e6e6; + border-bottom: 0; + font-size: 0.75rem; + line-height: 1; + color: #1779ba; +} +:last-child:not(.is-active) > .accordion-title { + border-bottom: 1px solid #e6e6e6; + border-radius: 0 0 0 0; +} +.accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; +} +.accordion-title::before { + position: absolute; + top: 50%; + right: 1rem; + margin-top: -0.5rem; + content: "+"; +} +.is-active > .accordion-title::before { + content: "–"; +} + +.accordion-content { + display: none; + padding: 1rem; + border: 1px solid #e6e6e6; + border-bottom: 0; + background-color: #fefefe; + color: #0a0a0a; +} +:last-child > .accordion-content:last-child { + border-bottom: 1px solid #e6e6e6; +} + +.media-object { + display: flex; + margin-bottom: 1rem; + flex-wrap: nowrap; +} +.media-object img { + max-width: none; +} +@media print, screen and (max-width: 39.99875em) { + .media-object.stack-for-small { + flex-wrap: wrap; + } +} + +.media-object-section { + flex: 0 1 auto; +} +.media-object-section:first-child { + padding-right: 1rem; +} +.media-object-section:last-child:not(:nth-child(2)) { + padding-left: 1rem; +} +.media-object-section > :last-child { + margin-bottom: 0; +} +@media print, screen and (max-width: 39.99875em) { + .stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + flex-basis: 100%; + max-width: 100%; + } + .stack-for-small .media-object-section img { + width: 100%; + } +} +.media-object-section.main-section { + flex: 1 1 0px; +} + +.orbit { + position: relative; +} + +.orbit-container { + position: relative; + height: 0; + margin: 0; + list-style: none; + overflow: hidden; +} + +.orbit-slide { + width: 100%; + position: absolute; +} +.orbit-slide.no-motionui.is-active { + top: 0; + left: 0; +} + +.orbit-figure { + margin: 0; +} + +.orbit-image { + width: 100%; + max-width: 100%; + margin: 0; +} + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + margin-bottom: 0; + padding: 1rem; + background-color: rgba(10, 10, 10, 0.5); + color: #fefefe; +} + +.orbit-next, .orbit-previous { + z-index: 10; + padding: 1rem; + color: #fefefe; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +[data-whatinput=mouse] .orbit-next, [data-whatinput=mouse] .orbit-previous { + outline: 0; +} +.orbit-next:hover, .orbit-previous:hover, .orbit-next:active, .orbit-previous:active, .orbit-next:focus, .orbit-previous:focus { + background-color: rgba(10, 10, 10, 0.5); +} + +.orbit-previous { + left: 0; +} + +.orbit-next { + left: auto; + right: 0; +} + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; +} +[data-whatinput=mouse] .orbit-bullets { + outline: 0; +} +.orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + border-radius: 50%; + background-color: #cacaca; +} +.orbit-bullets button:hover { + background-color: #8a8a8a; +} +.orbit-bullets button.is-active { + background-color: #8a8a8a; +} + +.responsive-embed, +.flex-video { + position: relative; + height: 0; + margin-bottom: 1rem; + padding-bottom: 75%; + overflow: hidden; +} +.responsive-embed iframe, +.responsive-embed object, +.responsive-embed embed, +.responsive-embed video, +.flex-video iframe, +.flex-video object, +.flex-video embed, +.flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.responsive-embed.widescreen, +.flex-video.widescreen { + padding-bottom: 56.25%; +} + +.tabs { + margin: 0; + border: 1px solid #e6e6e6; + background: #fefefe; + list-style-type: none; +} +.tabs::before, .tabs::after { + display: table; + content: " "; + flex-basis: 0; + order: 1; +} +.tabs::after { + clear: both; +} + +.tabs.vertical > li { + display: block; + float: none; + width: auto; +} + +.tabs.simple > li > a { + padding: 0; +} +.tabs.simple > li > a:hover { + background: transparent; +} + +.tabs.primary { + background: #1779ba; +} +.tabs.primary > li > a { + color: #fefefe; +} +.tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: rgb(21.85, 114.95, 176.7); +} + +.tabs-title { + float: left; +} +.tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + font-size: 0.75rem; + line-height: 1; + color: #1779ba; +} +[data-whatinput=mouse] .tabs-title > a { + outline: 0; +} +.tabs-title > a:hover { + background: #fefefe; + color: rgb(19.78, 104.06, 159.96); +} +.tabs-title > a:focus, .tabs-title > a[aria-selected=true] { + background: #e6e6e6; + color: #1779ba; +} + +.tabs-content { + border: 1px solid #e6e6e6; + border-top: 0; + background: #fefefe; + color: #0a0a0a; + transition: all 0.5s ease; +} + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-left: 0; +} + +.tabs-panel { + display: none; + padding: 1rem; +} +.tabs-panel.is-active { + display: block; +} + +.thumbnail { + display: inline-block; + max-width: 100%; + margin-bottom: 1rem; + border: 4px solid #fefefe; + border-radius: 0; + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + line-height: 0; +} + +a.thumbnail { + transition: box-shadow 200ms ease-out; +} +a.thumbnail:hover, a.thumbnail:focus { + box-shadow: 0 0 6px 1px rgba(23, 121, 186, 0.5); +} +a.thumbnail image { + box-shadow: none; +} + +.menu { + padding: 0; + margin: 0; + list-style: none; + position: relative; + display: flex; + flex-wrap: wrap; +} +[data-whatinput=mouse] .menu li { + outline: 0; +} +.menu a, +.menu .button { + line-height: 1; + text-decoration: none; + display: block; + padding: 0.7rem 1rem; +} +.menu input, +.menu select, +.menu a, +.menu button { + margin-bottom: 0; +} +.menu input { + display: inline-block; +} +.menu, .menu.horizontal { + flex-wrap: wrap; + flex-direction: row; +} +.menu.vertical { + flex-wrap: nowrap; + flex-direction: column; +} +.menu.vertical.icon-top li a img, +.menu.vertical.icon-top li a i, +.menu.vertical.icon-top li a svg, .menu.vertical.icon-bottom li a img, +.menu.vertical.icon-bottom li a i, +.menu.vertical.icon-bottom li a svg { + text-align: left; +} +.menu.expanded li { + flex: 1 1 0px; +} +.menu.expanded.icon-top li a img, +.menu.expanded.icon-top li a i, +.menu.expanded.icon-top li a svg, .menu.expanded.icon-bottom li a img, +.menu.expanded.icon-bottom li a i, +.menu.expanded.icon-bottom li a svg { + text-align: left; +} +.menu.simple { + align-items: center; +} +.menu.simple li + li { + margin-left: 1rem; +} +.menu.simple a { + padding: 0; +} +@media print, screen and (min-width: 40em) { + .menu.medium-horizontal { + flex-wrap: wrap; + flex-direction: row; + } + .menu.medium-vertical { + flex-wrap: nowrap; + flex-direction: column; + } + .menu.medium-expanded li { + flex: 1 1 0px; + } + .menu.medium-simple li { + flex: 1 1 0px; + } +} +@media print, screen and (min-width: 64em) { + .menu.large-horizontal { + flex-wrap: wrap; + flex-direction: row; + } + .menu.large-vertical { + flex-wrap: nowrap; + flex-direction: column; + } + .menu.large-expanded li { + flex: 1 1 0px; + } + .menu.large-simple li { + flex: 1 1 0px; + } +} +.menu.nested { + margin-right: 0; + margin-left: 1rem; +} +.menu.icons a { + display: flex; +} +.menu.icon-top a, .menu.icon-right a, .menu.icon-bottom a, .menu.icon-left a { + display: flex; +} +.menu.icon-left li a, .menu.nested.icon-left li a { + flex-flow: row nowrap; +} +.menu.icon-left li a img, +.menu.icon-left li a i, +.menu.icon-left li a svg, .menu.nested.icon-left li a img, +.menu.nested.icon-left li a i, +.menu.nested.icon-left li a svg { + margin-right: 0.25rem; +} +.menu.icon-right li a, .menu.nested.icon-right li a { + flex-flow: row nowrap; +} +.menu.icon-right li a img, +.menu.icon-right li a i, +.menu.icon-right li a svg, .menu.nested.icon-right li a img, +.menu.nested.icon-right li a i, +.menu.nested.icon-right li a svg { + margin-left: 0.25rem; +} +.menu.icon-top li a, .menu.nested.icon-top li a { + flex-flow: column nowrap; +} +.menu.icon-top li a img, +.menu.icon-top li a i, +.menu.icon-top li a svg, .menu.nested.icon-top li a img, +.menu.nested.icon-top li a i, +.menu.nested.icon-top li a svg { + align-self: stretch; + margin-bottom: 0.25rem; + text-align: center; +} +.menu.icon-bottom li a, .menu.nested.icon-bottom li a { + flex-flow: column nowrap; +} +.menu.icon-bottom li a img, +.menu.icon-bottom li a i, +.menu.icon-bottom li a svg, .menu.nested.icon-bottom li a img, +.menu.nested.icon-bottom li a i, +.menu.nested.icon-bottom li a svg { + align-self: stretch; + margin-bottom: 0.25rem; + text-align: center; +} +.menu .is-active > a { + background: #1779ba; + color: #fefefe; +} +.menu .active > a { + background: #1779ba; + color: #fefefe; +} +.menu.align-left { + justify-content: flex-start; +} +.menu.align-right li { + display: flex; + justify-content: flex-end; +} +.menu.align-right li .submenu li { + justify-content: flex-start; +} +.menu.align-right.vertical li { + display: block; + text-align: right; +} +.menu.align-right.vertical li .submenu li { + text-align: right; +} +.menu.align-right.icon-top li a img, +.menu.align-right.icon-top li a i, +.menu.align-right.icon-top li a svg, .menu.align-right.icon-bottom li a img, +.menu.align-right.icon-bottom li a i, +.menu.align-right.icon-bottom li a svg { + text-align: right; +} +.menu.align-right .nested { + margin-right: 1rem; + margin-left: 0; +} +.menu.align-center li { + display: flex; + justify-content: center; +} +.menu.align-center li .submenu li { + justify-content: flex-start; +} +.menu .menu-text { + padding: 0.7rem 1rem; + font-weight: bold; + line-height: 1; + color: inherit; +} + +.menu-centered > .menu { + justify-content: center; +} +.menu-centered > .menu li { + display: flex; + justify-content: center; +} +.menu-centered > .menu li .submenu li { + justify-content: flex-start; +} + +.no-js [data-responsive-menu] ul { + display: none; +} + +.menu-icon { + position: relative; + display: inline-block; + vertical-align: middle; + width: 20px; + height: 16px; + cursor: pointer; +} +.menu-icon::after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 2px; + background: #fefefe; + box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; + content: ""; +} +.menu-icon:hover::after { + background: #cacaca; + box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; +} + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + width: 20px; + height: 16px; + cursor: pointer; +} +.menu-icon.dark::after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + content: ""; +} +.menu-icon.dark:hover::after { + background: #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; +} + +.accordion-menu li { + width: 100%; +} +.accordion-menu a { + padding: 0.7rem 1rem; +} +.accordion-menu .is-accordion-submenu a { + padding: 0.7rem 1rem; +} +.accordion-menu .nested.is-accordion-submenu { + margin-right: 0; + margin-left: 1rem; +} +.accordion-menu.align-right .nested.is-accordion-submenu { + margin-right: 1rem; + margin-left: 0; +} +.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a { + position: relative; +} +.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-bottom-width: 0; + border-color: #1779ba transparent transparent; + position: absolute; + top: 50%; + margin-top: -3px; + right: 1rem; +} +.accordion-menu.align-left .is-accordion-submenu-parent > a::after { + right: 1rem; + left: auto; +} +.accordion-menu.align-right .is-accordion-submenu-parent > a::after { + right: auto; + left: 1rem; +} +.accordion-menu .is-accordion-submenu-parent[aria-expanded=true] > a::after { + transform: rotate(180deg); + transform-origin: 50% 50%; +} + +.is-accordion-submenu-parent { + position: relative; +} + +.has-submenu-toggle > a { + margin-right: 40px; +} + +.submenu-toggle { + position: absolute; + top: 0; + right: 0; + width: 40px; + height: 40px; + cursor: pointer; +} +.submenu-toggle::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-bottom-width: 0; + border-color: #1779ba transparent transparent; + top: 0; + bottom: 0; + margin: auto; +} + +.submenu-toggle[aria-expanded=true]::after { + transform: scaleY(-1); + transform-origin: 50% 50%; +} + +.submenu-toggle-text { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.is-drilldown { + position: relative; + overflow: hidden; +} +.is-drilldown li { + display: block; +} +.is-drilldown.animate-height { + transition: height 0.5s; +} + +.drilldown a { + padding: 0.7rem 1rem; + background: #fefefe; +} +.drilldown .is-drilldown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: -1; + width: 100%; + background: #fefefe; + transition: transform 0.15s linear; +} +.drilldown .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + transform: translateX(-100%); +} +.drilldown .is-drilldown-submenu.is-closing { + transform: translateX(100%); +} +.drilldown .is-drilldown-submenu a { + padding: 0.7rem 1rem; +} +.drilldown .nested.is-drilldown-submenu { + margin-right: 0; + margin-left: 0; +} +.drilldown .drilldown-submenu-cover-previous { + min-height: 100%; +} +.drilldown .is-drilldown-submenu-parent > a { + position: relative; +} +.drilldown .is-drilldown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #1779ba; + position: absolute; + top: 50%; + margin-top: -6px; + right: 1rem; +} +.drilldown.align-left .is-drilldown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #1779ba; + right: 1rem; + left: auto; +} +.drilldown.align-right .is-drilldown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-left-width: 0; + border-color: transparent #1779ba transparent transparent; + right: auto; + left: 1rem; +} +.drilldown .js-drilldown-back > a::before { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-left-width: 0; + border-color: transparent #1779ba transparent transparent; + display: inline-block; + vertical-align: middle; + margin-right: 0.75rem; +} + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + top: 100%; + right: 0; + left: auto; +} +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + top: 100%; + right: auto; + left: 0; +} +.dropdown.menu > li.is-dropdown-submenu-parent > a { + position: relative; + padding-right: 1.5rem; +} +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-bottom-width: 0; + border-color: #1779ba transparent transparent; + right: 5px; + left: auto; + margin-top: -3px; +} +[data-whatinput=mouse] .dropdown.menu a { + outline: 0; +} +.dropdown.menu > li > a { + padding: 0.7rem 1rem; +} +.dropdown.menu > li.is-active > a { + background: transparent; + color: #1779ba; +} +.no-js .dropdown.menu ul { + display: none; +} +.dropdown.menu .nested.is-dropdown-submenu { + margin-right: 0; + margin-left: 0; +} +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; +} +.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { + top: 0; + right: 100%; + left: auto; +} +.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; +} +.dropdown.menu.vertical > li > a::after { + right: 14px; +} +.dropdown.menu.vertical > li.opens-left > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-left-width: 0; + border-color: transparent #1779ba transparent transparent; + right: auto; + left: 5px; +} +.dropdown.menu.vertical > li.opens-right > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #1779ba; +} +@media print, screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + top: 100%; + right: 0; + left: auto; + } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + top: 100%; + right: auto; + left: 0; + } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + position: relative; + padding-right: 1.5rem; + } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-bottom-width: 0; + border-color: #1779ba transparent transparent; + right: 5px; + left: auto; + margin-top: -3px; + } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; + } + .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { + top: 0; + right: 100%; + left: auto; + } + .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; + } + .dropdown.menu.medium-vertical > li > a::after { + right: 14px; + } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-left-width: 0; + border-color: transparent #1779ba transparent transparent; + right: auto; + left: 5px; + } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #1779ba; + } +} +@media print, screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + top: 100%; + right: 0; + left: auto; + } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + top: 100%; + right: auto; + left: 0; + } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + position: relative; + padding-right: 1.5rem; + } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-bottom-width: 0; + border-color: #1779ba transparent transparent; + right: 5px; + left: auto; + margin-top: -3px; + } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; + } + .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { + top: 0; + right: 100%; + left: auto; + } + .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; + } + .dropdown.menu.large-vertical > li > a::after { + right: 14px; + } + .dropdown.menu.large-vertical > li.opens-left > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-left-width: 0; + border-color: transparent #1779ba transparent transparent; + right: auto; + left: 5px; + } + .dropdown.menu.large-vertical > li.opens-right > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #1779ba; + } +} +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + right: 0; + left: auto; +} + +.is-dropdown-menu.vertical { + width: 100px; +} +.is-dropdown-menu.vertical.align-right { + float: right; +} + +.is-dropdown-submenu-parent { + position: relative; +} +.is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + right: 5px; + left: auto; + margin-top: -6px; +} +.is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { + top: 100%; + left: auto; +} +.is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { + right: 100%; + left: auto; +} +.is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; +} + +.is-dropdown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: 1; + display: none; + min-width: 200px; + border: 1px solid #cacaca; + background: #fefefe; +} +.dropdown .is-dropdown-submenu a { + padding: 0.7rem 1rem; +} +.is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + right: 14px; +} +.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-left-width: 0; + border-color: transparent #1779ba transparent transparent; + right: auto; + left: 5px; +} +.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 6px; + content: ""; + border-right-width: 0; + border-color: transparent transparent transparent #1779ba; +} +.is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; +} +.is-dropdown-submenu > li { + width: 100%; +} +.is-dropdown-submenu.js-dropdown-active { + display: block; +} + +.is-off-canvas-open { + overflow: hidden; +} + +.js-off-canvas-overlay { + position: absolute; + top: 0; + left: 0; + z-index: 11; + width: 100%; + height: 100%; + transition: opacity 0.5s ease, visibility 0.5s ease; + background: rgba(254, 254, 254, 0.25); + opacity: 0; + visibility: hidden; + overflow: hidden; +} +.js-off-canvas-overlay.is-visible { + opacity: 1; + visibility: visible; +} +.js-off-canvas-overlay.is-closable { + cursor: pointer; +} +.js-off-canvas-overlay.is-overlay-absolute { + position: absolute; +} +.js-off-canvas-overlay.is-overlay-fixed { + position: fixed; +} + +.off-canvas-wrapper { + position: relative; + overflow: hidden; +} + +.off-canvas { + z-index: 12; + transition: transform 0.5s ease; + backface-visibility: hidden; + background: #e6e6e6; + position: fixed; +} +[data-whatinput=mouse] .off-canvas { + outline: 0; +} +.off-canvas.is-transition-push { + z-index: 12; +} +.off-canvas.is-closed { + visibility: hidden; +} +.off-canvas.is-transition-overlap { + z-index: 13; +} +.off-canvas.is-transition-overlap.is-open { + box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); +} +.off-canvas.is-open { + transform: translate(0, 0); +} + +.off-canvas-absolute { + z-index: 12; + transition: transform 0.5s ease; + backface-visibility: hidden; + background: #e6e6e6; + position: absolute; +} +[data-whatinput=mouse] .off-canvas-absolute { + outline: 0; +} +.off-canvas-absolute.is-transition-push { + z-index: 12; +} +.off-canvas-absolute.is-closed { + visibility: hidden; +} +.off-canvas-absolute.is-transition-overlap { + z-index: 13; +} +.off-canvas-absolute.is-transition-overlap.is-open { + box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); +} +.off-canvas-absolute.is-open { + transform: translate(0, 0); +} + +.position-left { + top: 0; + left: 0; + height: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + width: 250px; + transform: translateX(-250px); +} +.off-canvas-content .off-canvas.position-left { + transform: translateX(-250px); +} +.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open { + transform: translate(0, 0); +} + +.off-canvas-content.is-open-left.has-transition-push { + transform: translateX(250px); +} + +.position-left.is-transition-push { + box-shadow: inset -13px 0 20px -13px rgba(10, 10, 10, 0.25); +} + +.position-right { + top: 0; + right: 0; + height: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + width: 250px; + transform: translateX(250px); +} +.off-canvas-content .off-canvas.position-right { + transform: translateX(250px); +} +.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open { + transform: translate(0, 0); +} + +.off-canvas-content.is-open-right.has-transition-push { + transform: translateX(-250px); +} + +.position-right.is-transition-push { + box-shadow: inset 13px 0 20px -13px rgba(10, 10, 10, 0.25); +} + +.position-top { + top: 0; + left: 0; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + height: 250px; + transform: translateY(-250px); +} +.off-canvas-content .off-canvas.position-top { + transform: translateY(-250px); +} +.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open { + transform: translate(0, 0); +} + +.off-canvas-content.is-open-top.has-transition-push { + transform: translateY(250px); +} + +.position-top.is-transition-push { + box-shadow: inset 0 -13px 20px -13px rgba(10, 10, 10, 0.25); +} + +.position-bottom { + bottom: 0; + left: 0; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + height: 250px; + transform: translateY(250px); +} +.off-canvas-content .off-canvas.position-bottom { + transform: translateY(250px); +} +.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open { + transform: translate(0, 0); +} + +.off-canvas-content.is-open-bottom.has-transition-push { + transform: translateY(-250px); +} + +.position-bottom.is-transition-push { + box-shadow: inset 0 13px 20px -13px rgba(10, 10, 10, 0.25); +} + +.off-canvas-content { + transform: none; + backface-visibility: hidden; +} +.off-canvas-content.has-transition-overlap, .off-canvas-content.has-transition-push { + transition: transform 0.5s ease; +} +.off-canvas-content.has-transition-push { + transform: translate(0, 0); +} +.off-canvas-content .off-canvas.is-open { + transform: translate(0, 0); +} + +@media print, screen and (min-width: 40em) { + .position-left.reveal-for-medium { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-left.reveal-for-medium .close-button { + display: none; + } + .off-canvas-content .position-left.reveal-for-medium { + transform: none; + } + .off-canvas-content.has-reveal-left { + margin-left: 250px; + } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; + } + .position-right.reveal-for-medium { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-right.reveal-for-medium .close-button { + display: none; + } + .off-canvas-content .position-right.reveal-for-medium { + transform: none; + } + .off-canvas-content.has-reveal-right { + margin-right: 250px; + } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; + } + .position-top.reveal-for-medium { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-top.reveal-for-medium .close-button { + display: none; + } + .off-canvas-content .position-top.reveal-for-medium { + transform: none; + } + .off-canvas-content.has-reveal-top { + margin-top: 250px; + } + .position-top.reveal-for-medium ~ .off-canvas-content { + margin-top: 250px; + } + .position-bottom.reveal-for-medium { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-bottom.reveal-for-medium .close-button { + display: none; + } + .off-canvas-content .position-bottom.reveal-for-medium { + transform: none; + } + .off-canvas-content.has-reveal-bottom { + margin-bottom: 250px; + } + .position-bottom.reveal-for-medium ~ .off-canvas-content { + margin-bottom: 250px; + } +} +@media print, screen and (min-width: 64em) { + .position-left.reveal-for-large { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-left.reveal-for-large .close-button { + display: none; + } + .off-canvas-content .position-left.reveal-for-large { + transform: none; + } + .off-canvas-content.has-reveal-left { + margin-left: 250px; + } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; + } + .position-right.reveal-for-large { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-right.reveal-for-large .close-button { + display: none; + } + .off-canvas-content .position-right.reveal-for-large { + transform: none; + } + .off-canvas-content.has-reveal-right { + margin-right: 250px; + } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; + } + .position-top.reveal-for-large { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-top.reveal-for-large .close-button { + display: none; + } + .off-canvas-content .position-top.reveal-for-large { + transform: none; + } + .off-canvas-content.has-reveal-top { + margin-top: 250px; + } + .position-top.reveal-for-large ~ .off-canvas-content { + margin-top: 250px; + } + .position-bottom.reveal-for-large { + transform: none; + z-index: 12; + transition: none; + visibility: visible; + } + .position-bottom.reveal-for-large .close-button { + display: none; + } + .off-canvas-content .position-bottom.reveal-for-large { + transform: none; + } + .off-canvas-content.has-reveal-bottom { + margin-bottom: 250px; + } + .position-bottom.reveal-for-large ~ .off-canvas-content { + margin-bottom: 250px; + } +} +@media print, screen and (min-width: 40em) { + .off-canvas.in-canvas-for-medium { + visibility: visible; + height: auto; + position: static; + background: none; + width: auto; + overflow: visible; + transition: none; + } + .off-canvas.in-canvas-for-medium.position-left, .off-canvas.in-canvas-for-medium.position-right, .off-canvas.in-canvas-for-medium.position-top, .off-canvas.in-canvas-for-medium.position-bottom { + box-shadow: none; + transform: none; + } + .off-canvas.in-canvas-for-medium .close-button { + display: none; + } +} +@media print, screen and (min-width: 64em) { + .off-canvas.in-canvas-for-large { + visibility: visible; + height: auto; + position: static; + background: none; + width: auto; + overflow: visible; + transition: none; + } + .off-canvas.in-canvas-for-large.position-left, .off-canvas.in-canvas-for-large.position-right, .off-canvas.in-canvas-for-large.position-top, .off-canvas.in-canvas-for-large.position-bottom { + box-shadow: none; + transform: none; + } + .off-canvas.in-canvas-for-large .close-button { + display: none; + } +} +html.is-reveal-open { + position: fixed; + width: 100%; + overflow-y: hidden; +} +html.is-reveal-open.zf-has-scroll { + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +html.is-reveal-open body { + overflow-y: hidden; +} + +.reveal-overlay { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1005; + display: none; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.reveal { + position: relative; + top: 100px; + margin-right: auto; + margin-left: auto; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1006; + backface-visibility: hidden; + display: none; + padding: 1rem; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; +} +[data-whatinput=mouse] .reveal { + outline: 0; +} +@media print, screen and (min-width: 40em) { + .reveal { + min-height: 0; + } +} +.reveal .column, .reveal .columns { + min-width: 0; +} +.reveal > :last-child { + margin-bottom: 0; +} +@media print, screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; + } +} +.reveal.collapse { + padding: 0; +} +@media print, screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; + } +} +@media print, screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; + } +} +@media print, screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; + } +} +.reveal.full { + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + max-width: none; + height: 100%; + min-height: 100%; + margin-left: 0; + border: 0; + border-radius: 0; +} +@media print, screen and (max-width: 39.99875em) { + .reveal { + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + max-width: none; + height: 100%; + min-height: 100%; + margin-left: 0; + border: 0; + border-radius: 0; + } +} +.reveal.without-overlay { + position: fixed; +} + +.sticky-container { + position: relative; +} + +.sticky { + position: relative; + z-index: 0; + transform: translate3d(0, 0, 0); +} + +.sticky.is-stuck { + position: fixed; + z-index: 5; + width: 100%; +} +.sticky.is-stuck.is-at-top { + top: 0; +} +.sticky.is-stuck.is-at-bottom { + bottom: 0; +} + +.sticky.is-anchored { + position: relative; + right: auto; + left: auto; +} +.sticky.is-anchored.is-at-bottom { + bottom: 0; +} + +.title-bar { + padding: 0.5rem; + background: #0a0a0a; + color: #fefefe; + display: flex; + justify-content: flex-start; + align-items: center; +} +.title-bar .menu-icon { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.title-bar-left, +.title-bar-right { + flex: 1 1 0px; +} + +.title-bar-right { + text-align: right; +} + +.title-bar-title { + display: inline-block; + vertical-align: middle; + font-weight: bold; +} + +.top-bar { + padding: 0.5rem; + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + align-items: center; +} +.top-bar, +.top-bar ul { + background-color: #e6e6e6; +} +.top-bar input { + max-width: 200px; + margin-right: 1rem; +} +.top-bar .input-group-field { + width: 100%; + margin-right: 0; +} +.top-bar input.button { + width: auto; +} + +.top-bar { + flex-wrap: wrap; +} +.top-bar .top-bar-left, +.top-bar .top-bar-right { + flex: 0 0 100%; + max-width: 100%; +} + +@media print, screen and (min-width: 40em) { + .top-bar { + flex-wrap: nowrap; + } + .top-bar .top-bar-left { + flex: 1 1 auto; + margin-right: auto; + } + .top-bar .top-bar-right { + flex: 0 1 auto; + margin-left: auto; + } +} +@media print, screen and (max-width: 63.99875em) { + .top-bar.stacked-for-medium { + flex-wrap: wrap; + } + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + flex: 0 0 100%; + max-width: 100%; + } +} +@media print, screen and (max-width: 74.99875em) { + .top-bar.stacked-for-large { + flex-wrap: wrap; + } + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + flex: 0 0 100%; + max-width: 100%; + } +} + +.top-bar-title { + flex: 0 0 auto; + margin: 0.5rem 1rem 0.5rem 0; +} + +.top-bar-left, +.top-bar-right { + flex: 0 0 auto; +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-center { + display: block; + margin-right: auto; + margin-left: auto; +} + +.clearfix::before, .clearfix::after { + display: table; + content: " "; + flex-basis: 0; + order: 1; +} +.clearfix::after { + clear: both; +} + +.hide { + display: none !important; +} + +.invisible { + visibility: hidden; +} + +.visible { + visibility: visible; +} + +@media print, screen and (max-width: 39.99875em) { + .hide-for-small-only { + display: none !important; + } +} + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; + } +} + +@media print, screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; + } +} + +@media screen and (max-width: 39.99875em) { + .show-for-medium { + display: none !important; + } +} + +@media print, screen and (min-width: 40em) and (max-width: 63.99875em) { + .hide-for-medium-only { + display: none !important; + } +} + +@media screen and (max-width: 39.99875em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; + } +} + +@media print, screen and (min-width: 64em) { + .hide-for-large { + display: none !important; + } +} + +@media screen and (max-width: 63.99875em) { + .show-for-large { + display: none !important; + } +} + +@media print, screen and (min-width: 64em) and (max-width: 74.99875em) { + .hide-for-large-only { + display: none !important; + } +} + +@media screen and (max-width: 63.99875em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; + } +} + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + width: auto !important; + height: auto !important; + overflow: visible !important; + clip: auto !important; + white-space: normal !important; +} + +.show-for-landscape, +.hide-for-portrait { + display: block !important; +} +@media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; + } +} +@media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; + } +} + +.hide-for-landscape, +.show-for-portrait { + display: none !important; +} +@media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; + } +} +@media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; + } +} + +.show-for-dark-mode { + display: none; +} + +.hide-for-dark-mode { + display: block; +} + +@media screen and (prefers-color-scheme: dark) { + .show-for-dark-mode { + display: block !important; + } + .hide-for-dark-mode { + display: none !important; + } +} +.show-for-ie { + display: none; +} + +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + .show-for-ie { + display: block !important; + } + .hide-for-ie { + display: none !important; + } +} +.show-for-sticky { + display: none; +} + +.is-stuck .show-for-sticky { + display: block; +} + +.is-stuck .hide-for-sticky { + display: none; +} + +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; +} + +abbr[title] { + border-bottom: 0; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +img { + border-style: none; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0; +} + +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details { + display: block; +} + +summary { + display: list-item; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +[data-whatintent=mouse] *, [data-whatintent=mouse] *:focus, +[data-whatintent=touch] *, +[data-whatintent=touch] *:focus, +[data-whatinput=mouse] *, +[data-whatinput=mouse] *:focus, +[data-whatinput=touch] *, +[data-whatinput=touch] *:focus { + outline: none; +} + +[draggable=false] { + -webkit-touch-callout: none; + -webkit-user-select: none; +} + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; +} + +html { + box-sizing: border-box; + font-size: 100%; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +body { + margin: 0; + padding: 0; + background: #fefefe; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img { + display: inline-block; + vertical-align: middle; + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; +} + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; +} + +select { + box-sizing: border-box; + width: 100%; + border-radius: 0; +} + +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; +} + +button { + padding: 0; + appearance: none; + border: 0; + border-radius: 0; + background: transparent; + line-height: 1; + cursor: auto; +} +[data-whatinput=mouse] button { + outline: 0; +} + +pre { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; +} + +.is-visible { + display: block !important; +} + +.is-hidden { + display: none !important; +} + +.row { + max-width: 75rem; + margin-right: auto; + margin-left: auto; +} +.row::before, .row::after { + display: table; + content: " "; + flex-basis: 0; + order: 1; +} +.row::after { + clear: both; +} +.row.collapse > .column, .row.collapse > .columns { + padding-right: 0; + padding-left: 0; +} +.row .row { + margin-right: -0.625rem; + margin-left: -0.625rem; +} +@media print, screen and (min-width: 40em) { + .row .row { + margin-right: -0.9375rem; + margin-left: -0.9375rem; + } +} +@media print, screen and (min-width: 64em) { + .row .row { + margin-right: -0.9375rem; + margin-left: -0.9375rem; + } +} +.row .row.collapse { + margin-right: 0; + margin-left: 0; +} +.row.expanded { + max-width: none; +} +.row.expanded .row { + margin-right: auto; + margin-left: auto; +} +.row:not(.expanded) .row { + max-width: none; +} +.row.gutter-small > .column, .row.gutter-small > .columns { + padding-right: 0.625rem; + padding-left: 0.625rem; +} +.row.gutter-medium > .column, .row.gutter-medium > .columns { + padding-right: 0.9375rem; + padding-left: 0.9375rem; +} + +.column, .columns { + float: left; + width: 100%; + padding-right: 0.625rem; + padding-left: 0.625rem; +} +@media print, screen and (min-width: 40em) { + .column, .columns { + padding-right: 0.9375rem; + padding-left: 0.9375rem; + } +} +.column, .columns, .column:last-child:not(:first-child) { + float: left; + clear: none; +} +.column:last-child:not(:first-child), .columns:last-child:not(:first-child) { + float: right; +} +.column.end:last-child:last-child, .end.columns:last-child:last-child { + float: left; +} + +.column.row.row, .row.row.columns { + float: none; +} + +.row .column.row.row, .row .row.row.columns { + margin-right: 0; + margin-left: 0; + padding-right: 0; + padding-left: 0; +} + +.small-1 { + width: 8.3333333333%; +} + +.small-push-1 { + position: relative; + left: 8.3333333333%; +} + +.small-pull-1 { + position: relative; + left: -8.3333333333%; +} + +.small-offset-0 { + margin-left: 0%; +} + +.small-2 { + width: 16.6666666667%; +} + +.small-push-2 { + position: relative; + left: 16.6666666667%; +} + +.small-pull-2 { + position: relative; + left: -16.6666666667%; +} + +.small-offset-1 { + margin-left: 8.3333333333%; +} + +.small-3 { + width: 25%; +} + +.small-push-3 { + position: relative; + left: 25%; +} + +.small-pull-3 { + position: relative; + left: -25%; +} + +.small-offset-2 { + margin-left: 16.6666666667%; +} + +.small-4 { + width: 33.3333333333%; +} + +.small-push-4 { + position: relative; + left: 33.3333333333%; +} + +.small-pull-4 { + position: relative; + left: -33.3333333333%; +} + +.small-offset-3 { + margin-left: 25%; +} + +.small-5 { + width: 41.6666666667%; +} + +.small-push-5 { + position: relative; + left: 41.6666666667%; +} + +.small-pull-5 { + position: relative; + left: -41.6666666667%; +} + +.small-offset-4 { + margin-left: 33.3333333333%; +} + +.small-6 { + width: 50%; +} + +.small-push-6 { + position: relative; + left: 50%; +} + +.small-pull-6 { + position: relative; + left: -50%; +} + +.small-offset-5 { + margin-left: 41.6666666667%; +} + +.small-7 { + width: 58.3333333333%; +} + +.small-push-7 { + position: relative; + left: 58.3333333333%; +} + +.small-pull-7 { + position: relative; + left: -58.3333333333%; +} + +.small-offset-6 { + margin-left: 50%; +} + +.small-8 { + width: 66.6666666667%; +} + +.small-push-8 { + position: relative; + left: 66.6666666667%; +} + +.small-pull-8 { + position: relative; + left: -66.6666666667%; +} + +.small-offset-7 { + margin-left: 58.3333333333%; +} + +.small-9 { + width: 75%; +} + +.small-push-9 { + position: relative; + left: 75%; +} + +.small-pull-9 { + position: relative; + left: -75%; +} + +.small-offset-8 { + margin-left: 66.6666666667%; +} + +.small-10 { + width: 83.3333333333%; +} + +.small-push-10 { + position: relative; + left: 83.3333333333%; +} + +.small-pull-10 { + position: relative; + left: -83.3333333333%; +} + +.small-offset-9 { + margin-left: 75%; +} + +.small-11 { + width: 91.6666666667%; +} + +.small-push-11 { + position: relative; + left: 91.6666666667%; +} + +.small-pull-11 { + position: relative; + left: -91.6666666667%; +} + +.small-offset-10 { + margin-left: 83.3333333333%; +} + +.small-12 { + width: 100%; +} + +.small-offset-11 { + margin-left: 91.6666666667%; +} + +.small-up-1 > .column, .small-up-1 > .columns { + float: left; + width: 100%; +} +.small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) { + clear: both; +} +.small-up-1 > .column:last-child, .small-up-1 > .columns:last-child { + float: left; +} + +.small-up-2 > .column, .small-up-2 > .columns { + float: left; + width: 50%; +} +.small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) { + clear: both; +} +.small-up-2 > .column:last-child, .small-up-2 > .columns:last-child { + float: left; +} + +.small-up-3 > .column, .small-up-3 > .columns { + float: left; + width: 33.3333333333%; +} +.small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) { + clear: both; +} +.small-up-3 > .column:last-child, .small-up-3 > .columns:last-child { + float: left; +} + +.small-up-4 > .column, .small-up-4 > .columns { + float: left; + width: 25%; +} +.small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) { + clear: both; +} +.small-up-4 > .column:last-child, .small-up-4 > .columns:last-child { + float: left; +} + +.small-up-5 > .column, .small-up-5 > .columns { + float: left; + width: 20%; +} +.small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) { + clear: both; +} +.small-up-5 > .column:last-child, .small-up-5 > .columns:last-child { + float: left; +} + +.small-up-6 > .column, .small-up-6 > .columns { + float: left; + width: 16.6666666667%; +} +.small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) { + clear: both; +} +.small-up-6 > .column:last-child, .small-up-6 > .columns:last-child { + float: left; +} + +.small-up-7 > .column, .small-up-7 > .columns { + float: left; + width: 14.2857142857%; +} +.small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) { + clear: both; +} +.small-up-7 > .column:last-child, .small-up-7 > .columns:last-child { + float: left; +} + +.small-up-8 > .column, .small-up-8 > .columns { + float: left; + width: 12.5%; +} +.small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) { + clear: none; +} +.small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) { + clear: both; +} +.small-up-8 > .column:last-child, .small-up-8 > .columns:last-child { + float: left; +} + +.small-collapse > .column, .small-collapse > .columns { + padding-right: 0; + padding-left: 0; +} +.small-collapse .row { + margin-right: 0; + margin-left: 0; +} + +.expanded.row .small-collapse.row { + margin-right: 0; + margin-left: 0; +} + +.small-uncollapse > .column, .small-uncollapse > .columns { + padding-right: 0.625rem; + padding-left: 0.625rem; +} + +.small-centered { + margin-left: auto; + margin-right: auto; +} +.small-centered, .small-centered:last-child:not(:first-child) { + float: none; + clear: both; +} + +.small-uncentered, .small-push-0, .small-pull-0 { + position: static; + margin-right: 0; + margin-left: 0; +} +.small-uncentered, .small-uncentered:last-child:not(:first-child), .small-push-0, .small-push-0:last-child:not(:first-child), .small-pull-0, .small-pull-0:last-child:not(:first-child) { + float: left; + clear: none; +} +.small-uncentered:last-child:not(:first-child), .small-push-0:last-child:not(:first-child), .small-pull-0:last-child:not(:first-child) { + float: right; +} + +@media print, screen and (min-width: 40em) { + .medium-1 { + width: 8.3333333333%; + } + .medium-push-1 { + position: relative; + left: 8.3333333333%; + } + .medium-pull-1 { + position: relative; + left: -8.3333333333%; + } + .medium-offset-0 { + margin-left: 0%; + } + .medium-2 { + width: 16.6666666667%; + } + .medium-push-2 { + position: relative; + left: 16.6666666667%; + } + .medium-pull-2 { + position: relative; + left: -16.6666666667%; + } + .medium-offset-1 { + margin-left: 8.3333333333%; + } + .medium-3 { + width: 25%; + } + .medium-push-3 { + position: relative; + left: 25%; + } + .medium-pull-3 { + position: relative; + left: -25%; + } + .medium-offset-2 { + margin-left: 16.6666666667%; + } + .medium-4 { + width: 33.3333333333%; + } + .medium-push-4 { + position: relative; + left: 33.3333333333%; + } + .medium-pull-4 { + position: relative; + left: -33.3333333333%; + } + .medium-offset-3 { + margin-left: 25%; + } + .medium-5 { + width: 41.6666666667%; + } + .medium-push-5 { + position: relative; + left: 41.6666666667%; + } + .medium-pull-5 { + position: relative; + left: -41.6666666667%; + } + .medium-offset-4 { + margin-left: 33.3333333333%; + } + .medium-6 { + width: 50%; + } + .medium-push-6 { + position: relative; + left: 50%; + } + .medium-pull-6 { + position: relative; + left: -50%; + } + .medium-offset-5 { + margin-left: 41.6666666667%; + } + .medium-7 { + width: 58.3333333333%; + } + .medium-push-7 { + position: relative; + left: 58.3333333333%; + } + .medium-pull-7 { + position: relative; + left: -58.3333333333%; + } + .medium-offset-6 { + margin-left: 50%; + } + .medium-8 { + width: 66.6666666667%; + } + .medium-push-8 { + position: relative; + left: 66.6666666667%; + } + .medium-pull-8 { + position: relative; + left: -66.6666666667%; + } + .medium-offset-7 { + margin-left: 58.3333333333%; + } + .medium-9 { + width: 75%; + } + .medium-push-9 { + position: relative; + left: 75%; + } + .medium-pull-9 { + position: relative; + left: -75%; + } + .medium-offset-8 { + margin-left: 66.6666666667%; + } + .medium-10 { + width: 83.3333333333%; + } + .medium-push-10 { + position: relative; + left: 83.3333333333%; + } + .medium-pull-10 { + position: relative; + left: -83.3333333333%; + } + .medium-offset-9 { + margin-left: 75%; + } + .medium-11 { + width: 91.6666666667%; + } + .medium-push-11 { + position: relative; + left: 91.6666666667%; + } + .medium-pull-11 { + position: relative; + left: -91.6666666667%; + } + .medium-offset-10 { + margin-left: 83.3333333333%; + } + .medium-12 { + width: 100%; + } + .medium-offset-11 { + margin-left: 91.6666666667%; + } + .medium-up-1 > .column, .medium-up-1 > .columns { + float: left; + width: 100%; + } + .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) { + clear: both; + } + .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child { + float: left; + } + .medium-up-2 > .column, .medium-up-2 > .columns { + float: left; + width: 50%; + } + .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) { + clear: both; + } + .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child { + float: left; + } + .medium-up-3 > .column, .medium-up-3 > .columns { + float: left; + width: 33.3333333333%; + } + .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) { + clear: both; + } + .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child { + float: left; + } + .medium-up-4 > .column, .medium-up-4 > .columns { + float: left; + width: 25%; + } + .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) { + clear: both; + } + .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child { + float: left; + } + .medium-up-5 > .column, .medium-up-5 > .columns { + float: left; + width: 20%; + } + .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) { + clear: both; + } + .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child { + float: left; + } + .medium-up-6 > .column, .medium-up-6 > .columns { + float: left; + width: 16.6666666667%; + } + .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) { + clear: both; + } + .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child { + float: left; + } + .medium-up-7 > .column, .medium-up-7 > .columns { + float: left; + width: 14.2857142857%; + } + .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) { + clear: both; + } + .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child { + float: left; + } + .medium-up-8 > .column, .medium-up-8 > .columns { + float: left; + width: 12.5%; + } + .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) { + clear: none; + } + .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) { + clear: both; + } + .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child { + float: left; + } + .medium-collapse > .column, .medium-collapse > .columns { + padding-right: 0; + padding-left: 0; + } + .medium-collapse .row { + margin-right: 0; + margin-left: 0; + } + .expanded.row .medium-collapse.row { + margin-right: 0; + margin-left: 0; + } + .medium-uncollapse > .column, .medium-uncollapse > .columns { + padding-right: 0.9375rem; + padding-left: 0.9375rem; + } + .medium-centered { + margin-left: auto; + margin-right: auto; + } + .medium-centered, .medium-centered:last-child:not(:first-child) { + float: none; + clear: both; + } + .medium-uncentered, .medium-push-0, .medium-pull-0 { + position: static; + margin-right: 0; + margin-left: 0; + } + .medium-uncentered, .medium-uncentered:last-child:not(:first-child), .medium-push-0, .medium-push-0:last-child:not(:first-child), .medium-pull-0, .medium-pull-0:last-child:not(:first-child) { + float: left; + clear: none; + } + .medium-uncentered:last-child:not(:first-child), .medium-push-0:last-child:not(:first-child), .medium-pull-0:last-child:not(:first-child) { + float: right; + } +} +@media print, screen and (min-width: 64em) { + .large-1 { + width: 8.3333333333%; + } + .large-push-1 { + position: relative; + left: 8.3333333333%; + } + .large-pull-1 { + position: relative; + left: -8.3333333333%; + } + .large-offset-0 { + margin-left: 0%; + } + .large-2 { + width: 16.6666666667%; + } + .large-push-2 { + position: relative; + left: 16.6666666667%; + } + .large-pull-2 { + position: relative; + left: -16.6666666667%; + } + .large-offset-1 { + margin-left: 8.3333333333%; + } + .large-3 { + width: 25%; + } + .large-push-3 { + position: relative; + left: 25%; + } + .large-pull-3 { + position: relative; + left: -25%; + } + .large-offset-2 { + margin-left: 16.6666666667%; + } + .large-4 { + width: 33.3333333333%; + } + .large-push-4 { + position: relative; + left: 33.3333333333%; + } + .large-pull-4 { + position: relative; + left: -33.3333333333%; + } + .large-offset-3 { + margin-left: 25%; + } + .large-5 { + width: 41.6666666667%; + } + .large-push-5 { + position: relative; + left: 41.6666666667%; + } + .large-pull-5 { + position: relative; + left: -41.6666666667%; + } + .large-offset-4 { + margin-left: 33.3333333333%; + } + .large-6 { + width: 50%; + } + .large-push-6 { + position: relative; + left: 50%; + } + .large-pull-6 { + position: relative; + left: -50%; + } + .large-offset-5 { + margin-left: 41.6666666667%; + } + .large-7 { + width: 58.3333333333%; + } + .large-push-7 { + position: relative; + left: 58.3333333333%; + } + .large-pull-7 { + position: relative; + left: -58.3333333333%; + } + .large-offset-6 { + margin-left: 50%; + } + .large-8 { + width: 66.6666666667%; + } + .large-push-8 { + position: relative; + left: 66.6666666667%; + } + .large-pull-8 { + position: relative; + left: -66.6666666667%; + } + .large-offset-7 { + margin-left: 58.3333333333%; + } + .large-9 { + width: 75%; + } + .large-push-9 { + position: relative; + left: 75%; + } + .large-pull-9 { + position: relative; + left: -75%; + } + .large-offset-8 { + margin-left: 66.6666666667%; + } + .large-10 { + width: 83.3333333333%; + } + .large-push-10 { + position: relative; + left: 83.3333333333%; + } + .large-pull-10 { + position: relative; + left: -83.3333333333%; + } + .large-offset-9 { + margin-left: 75%; + } + .large-11 { + width: 91.6666666667%; + } + .large-push-11 { + position: relative; + left: 91.6666666667%; + } + .large-pull-11 { + position: relative; + left: -91.6666666667%; + } + .large-offset-10 { + margin-left: 83.3333333333%; + } + .large-12 { + width: 100%; + } + .large-offset-11 { + margin-left: 91.6666666667%; + } + .large-up-1 > .column, .large-up-1 > .columns { + float: left; + width: 100%; + } + .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) { + clear: both; + } + .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child { + float: left; + } + .large-up-2 > .column, .large-up-2 > .columns { + float: left; + width: 50%; + } + .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) { + clear: both; + } + .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child { + float: left; + } + .large-up-3 > .column, .large-up-3 > .columns { + float: left; + width: 33.3333333333%; + } + .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) { + clear: both; + } + .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child { + float: left; + } + .large-up-4 > .column, .large-up-4 > .columns { + float: left; + width: 25%; + } + .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) { + clear: both; + } + .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child { + float: left; + } + .large-up-5 > .column, .large-up-5 > .columns { + float: left; + width: 20%; + } + .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) { + clear: both; + } + .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child { + float: left; + } + .large-up-6 > .column, .large-up-6 > .columns { + float: left; + width: 16.6666666667%; + } + .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) { + clear: both; + } + .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child { + float: left; + } + .large-up-7 > .column, .large-up-7 > .columns { + float: left; + width: 14.2857142857%; + } + .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) { + clear: both; + } + .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child { + float: left; + } + .large-up-8 > .column, .large-up-8 > .columns { + float: left; + width: 12.5%; + } + .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) { + clear: none; + } + .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) { + clear: both; + } + .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child { + float: left; + } + .large-collapse > .column, .large-collapse > .columns { + padding-right: 0; + padding-left: 0; + } + .large-collapse .row { + margin-right: 0; + margin-left: 0; + } + .expanded.row .large-collapse.row { + margin-right: 0; + margin-left: 0; + } + .large-uncollapse > .column, .large-uncollapse > .columns { + padding-right: 0.9375rem; + padding-left: 0.9375rem; + } + .large-centered { + margin-left: auto; + margin-right: auto; + } + .large-centered, .large-centered:last-child:not(:first-child) { + float: none; + clear: both; + } + .large-uncentered, .large-push-0, .large-pull-0 { + position: static; + margin-right: 0; + margin-left: 0; + } + .large-uncentered, .large-uncentered:last-child:not(:first-child), .large-push-0, .large-push-0:last-child:not(:first-child), .large-pull-0, .large-pull-0:last-child:not(:first-child) { + float: left; + clear: none; + } + .large-uncentered:last-child:not(:first-child), .large-push-0:last-child:not(:first-child), .large-pull-0:last-child:not(:first-child) { + float: right; + } +} +.column-block { + margin-bottom: 1.25rem; +} +.column-block > :last-child { + margin-bottom: 0; +} +@media print, screen and (min-width: 40em) { + .column-block { + margin-bottom: 1.875rem; + } + .column-block > :last-child { + margin-bottom: 0; + } +} + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; +} + +p { + margin-bottom: 1rem; + font-size: inherit; + line-height: 1.6; + text-rendering: optimizeLegibility; +} + +em, +i { + font-style: italic; + line-height: inherit; +} + +strong, +b { + font-weight: bold; + line-height: inherit; +} + +small { + font-size: 80%; + line-height: inherit; +} + +h1, .h1, +h2, .h2, +h3, .h3, +h4, .h4, +h5, .h5, +h6, .h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-style: normal; + font-weight: normal; + color: inherit; + text-rendering: optimizeLegibility; +} +h1 small, .h1 small, +h2 small, .h2 small, +h3 small, .h3 small, +h4 small, .h4 small, +h5 small, .h5 small, +h6 small, .h6 small { + line-height: 0; + color: #cacaca; +} + +h1, .h1 { + font-size: 1.5rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h2, .h2 { + font-size: 1.25rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h3, .h3 { + font-size: 1.1875rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h4, .h4 { + font-size: 1.125rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h5, .h5 { + font-size: 1.0625rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h6, .h6 { + font-size: 1rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; +} + +@media print, screen and (min-width: 40em) { + h1, .h1 { + font-size: 3rem; + } + h2, .h2 { + font-size: 2.5rem; + } + h3, .h3 { + font-size: 1.9375rem; + } + h4, .h4 { + font-size: 1.5625rem; + } + h5, .h5 { + font-size: 1.25rem; + } + h6, .h6 { + font-size: 1rem; + } +} +a { + line-height: inherit; + color: #1779ba; + text-decoration: none; + cursor: pointer; +} +a:hover, a:focus { + color: rgb(19.78, 104.06, 159.96); +} +a img { + border: 0; +} + +hr { + clear: both; + max-width: 75rem; + height: 0; + margin: 1.25rem auto; + border-top: 0; + border-right: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; +} + +ul, +ol, +dl { + margin-bottom: 1rem; + list-style-position: outside; + line-height: 1.6; +} + +li { + font-size: inherit; +} + +ul { + margin-left: 1.25rem; + list-style-type: disc; +} + +ol { + margin-left: 1.25rem; +} + +ul ul, ul ol, ol ul, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; +} + +dl { + margin-bottom: 1rem; +} +dl dt { + margin-bottom: 0.3rem; + font-weight: bold; +} + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; +} +blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; +} + +abbr, abbr[title] { + border-bottom: 1px dotted #0a0a0a; + cursor: help; + text-decoration: none; +} + +figure { + margin: 0; +} + +kbd { + margin: 0; + padding: 0.125rem 0.25rem 0; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + color: #0a0a0a; +} + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; +} + +.lead { + font-size: 125%; + line-height: 1.6; +} + +.stat { + font-size: 2.5rem; + line-height: 1; +} +p + .stat { + margin-top: -1rem; +} + +ul.no-bullet, ol.no-bullet { + margin-left: 0; + list-style: none; +} + +cite, .cite-block { + display: block; + color: #8a8a8a; + font-size: 0.8125rem; +} +cite:before, .cite-block:before { + content: "— "; +} + +code, .code-inline { + border: 1px solid #cacaca; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + display: inline; + max-width: 100%; + word-wrap: break-word; + padding: 0.125rem 0.3125rem 0.0625rem; +} + +.code-block { + border: 1px solid #cacaca; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + display: block; + overflow: auto; + white-space: pre; + padding: 1rem; + margin-bottom: 1.5rem; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +.text-justify { + text-align: justify; +} + +@media print, screen and (min-width: 40em) { + .medium-text-left { + text-align: left; + } + .medium-text-right { + text-align: right; + } + .medium-text-center { + text-align: center; + } + .medium-text-justify { + text-align: justify; + } +} +@media print, screen and (min-width: 64em) { + .large-text-left { + text-align: left; + } + .large-text-right { + text-align: right; + } + .large-text-center { + text-align: center; + } + .large-text-justify { + text-align: justify; + } +} +.show-for-print { + display: none !important; +} + +@media print { + * { + background: transparent !important; + color: black !important; + print-color-adjust: economy; + box-shadow: none !important; + text-shadow: none !important; + } + .show-for-print { + display: block !important; + } + .hide-for-print { + display: none !important; + } + table.show-for-print { + display: table !important; + } + thead.show-for-print { + display: table-header-group !important; + } + tbody.show-for-print { + display: table-row-group !important; + } + tr.show-for-print { + display: table-row !important; + } + td.show-for-print { + display: table-cell !important; + } + th.show-for-print { + display: table-cell !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .print-break-inside { + page-break-inside: auto; + } +} +[type=text], [type=password], [type=date], [type=datetime], [type=datetime-local], [type=month], [type=week], [type=email], [type=number], [type=search], [type=tel], [type=time], [type=url], [type=color], +textarea { + appearance: none; + display: block; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + margin: 0 0 1rem; + padding: 0.5rem; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +} +[type=text]:focus, [type=password]:focus, [type=date]:focus, [type=datetime]:focus, [type=datetime-local]:focus, [type=month]:focus, [type=week]:focus, [type=email]:focus, [type=number]:focus, [type=search]:focus, [type=tel]:focus, [type=time]:focus, [type=url]:focus, [type=color]:focus, +textarea:focus { + outline: none; + border: 1px solid #8a8a8a; + background-color: #fefefe; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +} + +textarea { + max-width: 100%; +} +textarea[rows] { + height: auto; +} + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; +} + +[type=submit], +[type=button] { + appearance: none; + border-radius: 0; +} + +input[type=search] { + box-sizing: border-box; +} + +::placeholder { + color: #cacaca; +} + +[type=file], +[type=checkbox], +[type=radio] { + margin: 0 0 1rem; +} + +[type=checkbox] + label, +[type=radio] + label { + display: inline-block; + vertical-align: baseline; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; +} +[type=checkbox] + label[for], +[type=radio] + label[for] { + cursor: pointer; +} + +label > [type=checkbox], +label > [type=radio] { + margin-right: 0.5rem; +} + +[type=file] { + width: 100%; +} + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; +} +label.middle { + margin: 0 0 1rem; + line-height: 1.5; + padding: 0.5625rem 0; +} + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; +} + +.input-group { + display: flex; + width: 100%; + margin-bottom: 1rem; + align-items: stretch; +} +.input-group > :first-child, .input-group > :first-child.input-group-button > * { + border-radius: 0 0 0 0; +} +.input-group > :last-child, .input-group > :last-child.input-group-button > * { + border-radius: 0 0 0 0; +} + +.input-group-label, .input-group-field, .input-group-button, .input-group-button a, +.input-group-button input, +.input-group-button button, +.input-group-button label { + margin: 0; + white-space: nowrap; +} + +.input-group-label { + padding: 0 1rem; + border: 1px solid #cacaca; + background: #e6e6e6; + color: #0a0a0a; + text-align: center; + white-space: nowrap; + display: flex; + flex: 0 0 auto; + align-items: center; +} +.input-group-label:first-child { + border-right: 0; +} +.input-group-label:last-child { + border-left: 0; +} + +.input-group-field { + border-radius: 0; + flex: 1 1 0px; + min-width: 0; +} + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + display: flex; + flex: 0 0 auto; +} +.input-group-button a, +.input-group-button input, +.input-group-button button, +.input-group-button label { + align-self: stretch; + height: auto; + padding-top: 0; + padding-bottom: 0; + font-size: 1rem; +} + +fieldset { + margin: 0; + padding: 0; + border: 0; +} + +legend { + max-width: 100%; + margin-bottom: 0.5rem; +} + +.fieldset { + margin: 1.125rem 0; + padding: 1.25rem; + border: 1px solid #cacaca; +} +.fieldset legend { + margin: 0; + margin-left: -0.1875rem; + padding: 0 0.1875rem; +} + +select { + height: 2.4375rem; + margin: 0 0 1rem; + padding: 0.5rem; + appearance: none; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + background-origin: content-box; + background-position: right -1rem center; + background-repeat: no-repeat; + background-size: 9px 6px; + padding-right: 1.5rem; + background-image: url('data:image/svg+xml;utf8,'); +} +@media screen and (min-width: 0\0 ) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); + } +} +select:focus { + outline: none; + border: 1px solid #8a8a8a; + background-color: #fefefe; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +} +select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; +} +select::-ms-expand { + display: none; +} +select[multiple] { + height: auto; + background-image: none; +} +select:not([multiple]) { + padding-top: 0; + padding-bottom: 0; +} + +.is-invalid-input:not(:focus) { + border-color: #cc4b37; + background-color: rgb(249, 236.1, 234.1); +} +.is-invalid-input:not(:focus)::placeholder { + color: #cc4b37; +} + +.is-invalid-label { + color: #cc4b37; +} + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #cc4b37; +} +.form-error.is-visible { + display: block; +} + +.button { + display: inline-block; + vertical-align: middle; + margin: 0 0 1rem 0; + border: 1px solid transparent; + border-radius: 0; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + font-family: inherit; + font-size: 0.9rem; + -webkit-appearance: none; + line-height: 1; + text-align: center; + cursor: pointer; + padding: 0.85em 1em; +} +[data-whatinput=mouse] .button { + outline: 0; +} +.button.tiny { + font-size: 0.6rem; +} +.button.small { + font-size: 0.75rem; +} +.button.large { + font-size: 1.25rem; +} +.button.expanded { + display: block; + width: 100%; + margin-right: 0; + margin-left: 0; +} +.button, .button.disabled, .button[disabled], .button.disabled:hover, .button[disabled]:hover, .button.disabled:focus, .button[disabled]:focus { + background-color: #1779ba; + color: #fefefe; +} +.button:hover, .button:focus { + background-color: rgb(19.55, 102.85, 158.1); + color: #fefefe; +} +.button.primary, .button.primary.disabled, .button.primary[disabled], .button.primary.disabled:hover, .button.primary[disabled]:hover, .button.primary.disabled:focus, .button.primary[disabled]:focus { + background-color: #1779ba; + color: #fefefe; +} +.button.primary:hover, .button.primary:focus { + background-color: rgb(18.4, 96.8, 148.8); + color: #fefefe; +} +.button.secondary, .button.secondary.disabled, .button.secondary[disabled], .button.secondary.disabled:hover, .button.secondary[disabled]:hover, .button.secondary.disabled:focus, .button.secondary[disabled]:focus { + background-color: #767676; + color: #fefefe; +} +.button.secondary:hover, .button.secondary:focus { + background-color: rgb(94.4, 94.4, 94.4); + color: #fefefe; +} +.button.success, .button.success.disabled, .button.success[disabled], .button.success.disabled:hover, .button.success[disabled]:hover, .button.success.disabled:focus, .button.success[disabled]:focus { + background-color: #3adb76; + color: #0a0a0a; +} +.button.success:hover, .button.success:focus { + background-color: rgb(34.2386266094, 187.3613733906, 91.3030042918); + color: #0a0a0a; +} +.button.warning, .button.warning.disabled, .button.warning[disabled], .button.warning.disabled:hover, .button.warning[disabled]:hover, .button.warning.disabled:focus, .button.warning[disabled]:focus { + background-color: #ffae00; + color: #0a0a0a; +} +.button.warning:hover, .button.warning:focus { + background-color: rgb(204, 139.2, 0); + color: #0a0a0a; +} +.button.alert, .button.alert.disabled, .button.alert[disabled], .button.alert.disabled:hover, .button.alert[disabled]:hover, .button.alert.disabled:focus, .button.alert[disabled]:focus { + background-color: #cc4b37; + color: #fefefe; +} +.button.alert:hover, .button.alert:focus { + background-color: rgb(165.0996015936, 58.6103585657, 42.1003984064); + color: #fefefe; +} +.button.hollow, .button.hollow:hover, .button.hollow:focus, .button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus { + background-color: transparent; +} +.button.hollow, .button.hollow.disabled, .button.hollow[disabled], .button.hollow.disabled:hover, .button.hollow[disabled]:hover, .button.hollow.disabled:focus, .button.hollow[disabled]:focus { + border: 1px solid #1779ba; + color: #1779ba; +} +.button.hollow:hover, .button.hollow:focus { + border-color: rgb(11.5, 60.5, 93); + color: rgb(11.5, 60.5, 93); +} +.button.hollow.primary, .button.hollow.primary.disabled, .button.hollow.primary[disabled], .button.hollow.primary.disabled:hover, .button.hollow.primary[disabled]:hover, .button.hollow.primary.disabled:focus, .button.hollow.primary[disabled]:focus { + border: 1px solid #1779ba; + color: #1779ba; +} +.button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: rgb(11.5, 60.5, 93); + color: rgb(11.5, 60.5, 93); +} +.button.hollow.secondary, .button.hollow.secondary.disabled, .button.hollow.secondary[disabled], .button.hollow.secondary.disabled:hover, .button.hollow.secondary[disabled]:hover, .button.hollow.secondary.disabled:focus, .button.hollow.secondary[disabled]:focus { + border: 1px solid #767676; + color: #767676; +} +.button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3b3b3b; + color: #3b3b3b; +} +.button.hollow.success, .button.hollow.success.disabled, .button.hollow.success[disabled], .button.hollow.success.disabled:hover, .button.hollow.success[disabled]:hover, .button.hollow.success.disabled:focus, .button.hollow.success[disabled]:focus { + border: 1px solid #3adb76; + color: #3adb76; +} +.button.hollow.success:hover, .button.hollow.success:focus { + border-color: rgb(21.3991416309, 117.1008583691, 57.0643776824); + color: rgb(21.3991416309, 117.1008583691, 57.0643776824); +} +.button.hollow.warning, .button.hollow.warning.disabled, .button.hollow.warning[disabled], .button.hollow.warning.disabled:hover, .button.hollow.warning[disabled]:hover, .button.hollow.warning.disabled:focus, .button.hollow.warning[disabled]:focus { + border: 1px solid #ffae00; + color: #ffae00; +} +.button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: rgb(127.5, 87, 0); + color: rgb(127.5, 87, 0); +} +.button.hollow.alert, .button.hollow.alert.disabled, .button.hollow.alert[disabled], .button.hollow.alert.disabled:hover, .button.hollow.alert[disabled]:hover, .button.hollow.alert.disabled:focus, .button.hollow.alert[disabled]:focus { + border: 1px solid #cc4b37; + color: #cc4b37; +} +.button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: rgb(103.187250996, 36.6314741036, 26.312749004); + color: rgb(103.187250996, 36.6314741036, 26.312749004); +} +.button.clear, .button.clear:hover, .button.clear:focus, .button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus { + border-color: transparent; + background-color: transparent; +} +.button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear.disabled:hover, .button.clear[disabled]:hover, .button.clear.disabled:focus, .button.clear[disabled]:focus { + color: #1779ba; +} +.button.clear:hover, .button.clear:focus { + color: rgb(11.5, 60.5, 93); +} +.button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary.disabled:hover, .button.clear.primary[disabled]:hover, .button.clear.primary.disabled:focus, .button.clear.primary[disabled]:focus { + color: #1779ba; +} +.button.clear.primary:hover, .button.clear.primary:focus { + color: rgb(11.5, 60.5, 93); +} +.button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary.disabled:hover, .button.clear.secondary[disabled]:hover, .button.clear.secondary.disabled:focus, .button.clear.secondary[disabled]:focus { + color: #767676; +} +.button.clear.secondary:hover, .button.clear.secondary:focus { + color: #3b3b3b; +} +.button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success.disabled:hover, .button.clear.success[disabled]:hover, .button.clear.success.disabled:focus, .button.clear.success[disabled]:focus { + color: #3adb76; +} +.button.clear.success:hover, .button.clear.success:focus { + color: rgb(21.3991416309, 117.1008583691, 57.0643776824); +} +.button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning.disabled:hover, .button.clear.warning[disabled]:hover, .button.clear.warning.disabled:focus, .button.clear.warning[disabled]:focus { + color: #ffae00; +} +.button.clear.warning:hover, .button.clear.warning:focus { + color: rgb(127.5, 87, 0); +} +.button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert.disabled:hover, .button.clear.alert[disabled]:hover, .button.clear.alert.disabled:focus, .button.clear.alert[disabled]:focus { + color: #cc4b37; +} +.button.clear.alert:hover, .button.clear.alert:focus { + color: rgb(103.187250996, 36.6314741036, 26.312749004); +} +.button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; +} +.button.dropdown::after { + display: block; + width: 0; + height: 0; + border-style: solid; + border-width: 0.4em; + content: ""; + border-bottom-width: 0; + border-color: #fefefe transparent transparent; + position: relative; + top: 0.4em; + display: inline-block; + float: right; + margin-left: 1em; +} +.button.dropdown.hollow::after, .button.dropdown.clear::after { + border-top-color: #1779ba; +} +.button.dropdown.hollow.primary::after, .button.dropdown.clear.primary::after { + border-top-color: #1779ba; +} +.button.dropdown.hollow.secondary::after, .button.dropdown.clear.secondary::after { + border-top-color: #767676; +} +.button.dropdown.hollow.success::after, .button.dropdown.clear.success::after { + border-top-color: #3adb76; +} +.button.dropdown.hollow.warning::after, .button.dropdown.clear.warning::after { + border-top-color: #ffae00; +} +.button.dropdown.hollow.alert::after, .button.dropdown.clear.alert::after { + border-top-color: #cc4b37; +} +.button.arrow-only::after { + top: -0.1em; + float: none; + margin-left: 0; +} + +a.button:hover, a.button:focus { + text-decoration: none; +} + +@font-face { + font-family: "Droid Sans"; + font-style: normal; + font-weight: 400; + src: local("Droid Sans"), local("DroidSans"), url(/fonts/DroidSans.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +@font-face { + font-family: "Droid Sans"; + font-style: normal; + font-weight: 700; + src: local("Droid Sans Bold"), local("DroidSans-Bold"), url(/fonts/DroidSans-Bold.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +#teaser { + padding-top: 20px; +} + +.menu .menu-text { + font-weight: 100 !important; + font-size: 1.1rem; +} + +h1, h2, h3 { + color: #8a8a8a; +} + +div.thumb-height { + min-height: 120px; +} + +.uploadbutton { + animation-name: pump; + animation-duration: 10s; + animation-delay: 5s; + animation-iteration-count: infinite; + animation-timing-function: ease-out; +} + +@keyframes pump { + 0% { + transform: scale(1, 1); + } + 5% { + transform: scale(1.2, 1.2); + } + 10% { + transform: scale(1, 1); + } +} +.top-bar { + margin-bottom: 0.5rem; + color: #8a8a8a; +} +.top-bar a { + color: #8a8a8a; +} +.top-bar a.active { + color: #fefefe; +} + +/*@import "compass/layout/sticky-footer";*/ +/*@include sticky-footer(40px, "#wholepage");*/ +#sidebar { + text-align: center; +} +#sidebar .caption { + padding-bottom: 5px; + color: black; +} +#sidebar .item { + padding-bottom: 10px; +} +#sidebar .space { + padding-bottom: 20px; +} + +.pkgname { + font-size: 130%; + font-weight: 700; + padding-bottom: 5px; + line-height: 120%; + /*white-space: nowrap; -> can overflow the flex grid – min-width:0 should fix it but I failed to use it properly */ + overflow: hidden; + text-overflow: ellipsis; +} + +.grid-thumbnail { + height: 260px; +} + +a.black { + color: black; +} + +.gray { + color: #808080; +} + +.bigpanel { + background-color: #e6e6e6; + border-radius: 10px; + padding: 1em 1em 0.1em 1em; + margin-bottom: 1em; +} + +.subtitle { + font-size: 120%; + color: #808080; +} + +/* Limit the height of the long description in list view – not very elegant though */ +.listview.longdescription { + max-height: 6em; + overflow: hidden; +} + +.packagepage { + /* Description of a screenshot (e.g. the situation when the screenshot was taken) */ + /* Status of a screenshot (e.g. if it has to be moderated) */ +} +.packagepage h1 { + margin: 0 0 0 0; +} +.packagepage h2 { + font-weight: normal; + margin: 0 0 0.5rem 0; + color: #808080; +} +.packagepage .imgcaption { + text-align: center; + display: inline-block; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.packagepage .imgstatus { + text-align: center; + font-style: italic; + color: #808080; +} +.packagepage .comment { + font-size: 90%; +} +.packagepage .comment .summary { + font-weight: 700; +} +.packagepage .comment .author { + text-align: right; + color: #808080; + font-style: italic; +} +.packagepage form.comment { + border: 2px solid #a0a0a0; + background-color: white; + border-radius: 10px; + padding: 10px; + margin-bottom: 10px; +} +.packagepage form.comment .summary input, .packagepage form.comment textarea { + margin-bottom: 0; +} +.packagepage form.comment .content, .packagepage form.comment .author, .packagepage form.comment .submit { + display: none; +} +.packagepage .listview { + margin-bottom: 2rem; +} + +.moderate-bar { + background-color: #ffd0d0; +} + +/* Properties of a screenshot - shown in details view */ +.property-title { + font-weight: bolder; + font-size: 120%; + color: #808080; +} + +.property { + margin-left: 2em; + margin-bottom: 0.5em; +} + +.description-verbatim-lines { + line-height: 120%; +} + +/* Hide the file upload button to just show the styleable label */ +/* display: none will not work - this is the workaround */ +.hidden-inputfile { + width: 0.1px; + height: 0.1px; + opacity: 0; + overflow: hidden; + position: absolute; + z-index: -1; +} + +.inputfile + label { + cursor: pointer; /* "hand" cursor */ +} + +/* Foundation sets file buttons to 100% width. Fix that */ +/* +.fa-wobble { + animation-name: fa-wobble; + animation-duration: 0.5s; + animation-direction: alternate; + animation-iteration-count: infinite; +} + +@keyframes fa-wobble { + 0% { opacity: 0.2; } + 50% { opacity: 0.8; } + 100% { opacity: 1; } +} +*/ +.pkgdescription { + margin-bottom: 3rem; +} + +/* Display a looking glass / zoom icon on image if they can be enlarged using FancyBox */ +.image-with-zoom-icon { + position: relative; +} + +.image-with-zoom-icon img { + display: block; + margin: auto; + height: auto; +} + +@keyframes image-with-zoom-icon-animation { + from { + opacity: 0; + } + to { + opacity: 0.3; + } +} +.image-with-zoom-icon .magnifying-glass-icon { + position: absolute; + top: 50%; + left: 50%; + padding: 20px; + transform: translate(-50%, -50%); + background: rgba(0, 0, 0, 0.5); + text-align: center; + color: #fff; + text-align: center; + font-size: 200%; + line-height: 1; + border-radius: 50%; + border: 1px solid #fff; + animation-name: image-with-zoom-icon-animation; + animation-duration: 1s; + animation-delay: 4s; + animation-fill-mode: both; +} + +/* Grid view */ +.pkgcard { + margin-bottom: 20px; + display: table; + background: #ffffff; + border: 1px solid #e0e0e0; + box-shadow: 0px 0px 5px 2px rgba(189, 189, 189, 0.5); + padding: 5px; + margin-left: auto; + margin-right: auto; +} +.pkgcard .image { + height: 260px; + background: #e0e0e0; + padding: 10px; + display: flex; + align-items: center; + justify-content: center; + margin-left: auto; + margin-right: auto; +} +.pkgcard .text { + padding: 5px; + text-align: center; +} +.pkgcard .pkgname { + font-size: 120%; + padding: 10px; +} + +.pkgcard.unapproved { + background: repeating-linear-gradient(45deg, #ffffff, #ffffff 5px, #f0f0f0 5px, #f0f0f0 10px); +} + +.pkgcard.highlight { + border: 5px solid red; +} + +.pkgcard.hidden { + background-color: gray; +} + +.button { + box-shadow: 0.1rem 0.1rem 0.2rem 0 rgba(0, 0, 0, 0.5); +} + +.label.adminlabel.public { + background-color: green !important; +} + +.label.adminlabel.hidden { + background-color: blue !important; +} + +.label.adminlabel.unapproved { + background-color: orange !important; +} + +.gravatar { + border-radius: 50%; + width: 120px; +} diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js deleted file mode 100644 index 9e0e087..0000000 --- a/app/assets/config/manifest.js +++ /dev/null @@ -1,4 +0,0 @@ -//= link_tree ../images -//= link_directory ../javascripts .js -//= link_directory ../stylesheets .css -//= link application.js diff --git a/app/assets/javascripts/fslightbox.js b/app/assets/javascripts/fslightbox.js deleted file mode 100644 index d054d74..0000000 --- a/app/assets/javascripts/fslightbox.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var o,i="fslightbox-",r="".concat(i,"styles"),s="".concat(i,"cursor-grabbing"),a="".concat(i,"full-dimension"),c="".concat(i,"flex-centered"),l="".concat(i,"open"),u="".concat(i,"transform-transition"),d="".concat(i,"absoluted"),f="".concat(i,"slide-btn"),p="".concat(f,"-container"),h="".concat(i,"fade-in"),m="".concat(i,"fade-out"),g=h+"-strong",v=m+"-strong",b="".concat(i,"opacity-"),x="".concat(b,"1"),y="".concat(i,"source");function w(e){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function S(e){var t=e.stageIndexes,n=e.core.stageManager,o=e.props.sources.length-1;n.getPreviousSlideIndex=function(){return 0===t.current?o:t.current-1},n.getNextSlideIndex=function(){return t.current===o?0:t.current+1},n.updateStageIndexes=0===o?function(){}:1===o?function(){0===t.current?(t.next=1,delete t.previous):(t.previous=0,delete t.next)}:function(){t.previous=n.getPreviousSlideIndex(),t.next=n.getNextSlideIndex()},n.i=o<=2?function(){return!0}:function(e){var n=t.current;if(0===n&&e===o||n===o&&0===e)return!0;var i=n-e;return-1===i||0===i||1===i}}"object"===("undefined"==typeof document?"undefined":w(document))&&((o=document.createElement("style")).className=r,o.appendChild(document.createTextNode(".fslightbox-absoluted{position:absolute;top:0;left:0}.fslightbox-fade-in{animation:fslightbox-fade-in .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out{animation:fslightbox-fade-out .3s ease}.fslightbox-fade-in-strong{animation:fslightbox-fade-in-strong .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out-strong{animation:fslightbox-fade-out-strong .3s ease}@keyframes fslightbox-fade-in{from{opacity:.65}to{opacity:1}}@keyframes fslightbox-fade-out{from{opacity:.35}to{opacity:0}}@keyframes fslightbox-fade-in-strong{from{opacity:.3}to{opacity:1}}@keyframes fslightbox-fade-out-strong{from{opacity:1}to{opacity:0}}.fslightbox-cursor-grabbing{cursor:grabbing}.fslightbox-full-dimension{width:100%;height:100%}.fslightbox-open{overflow:hidden;height:100%}.fslightbox-flex-centered{display:flex;justify-content:center;align-items:center}.fslightbox-opacity-0{opacity:0!important}.fslightbox-opacity-1{opacity:1!important}.fslightbox-scrollbarfix{padding-right:17px}.fslightbox-transform-transition{transition:transform .3s}.fslightbox-container{font-family:Arial,sans-serif;position:fixed;top:0;left:0;background:linear-gradient(rgba(30,30,30,.9),#000 1810%);touch-action:pinch-zoom;z-index:1000000000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fslightbox-container *{box-sizing:border-box}.fslightbox-svg-path{transition:fill .15s ease;fill:#ddd}.fslightbox-nav{height:45px;width:100%;position:absolute;top:0;left:0}.fslightbox-slide-number-container{display:flex;justify-content:center;align-items:center;position:relative;height:100%;font-size:15px;color:#d7d7d7;z-index:0;max-width:55px;text-align:left}.fslightbox-slide-number-container .fslightbox-flex-centered{height:100%}.fslightbox-slash{display:block;margin:0 5px;width:1px;height:12px;transform:rotate(15deg);background:#fff}.fslightbox-toolbar{position:absolute;z-index:3;right:0;top:0;height:100%;display:flex;background:rgba(35,35,35,.65)}.fslightbox-toolbar-button{height:100%;width:45px;cursor:pointer}.fslightbox-toolbar-button:hover .fslightbox-svg-path{fill:#fff}.fslightbox-slide-btn-container{display:flex;align-items:center;padding:12px 12px 12px 6px;position:absolute;top:50%;cursor:pointer;z-index:3;transform:translateY(-50%)}@media (min-width:476px){.fslightbox-slide-btn-container{padding:22px 22px 22px 6px}}@media (min-width:768px){.fslightbox-slide-btn-container{padding:30px 30px 30px 6px}}.fslightbox-slide-btn-container:hover .fslightbox-svg-path{fill:#f1f1f1}.fslightbox-slide-btn{padding:9px;font-size:26px;background:rgba(35,35,35,.65)}@media (min-width:768px){.fslightbox-slide-btn{padding:10px}}@media (min-width:1600px){.fslightbox-slide-btn{padding:11px}}.fslightbox-slide-btn-container-previous{left:0}@media (max-width:475.99px){.fslightbox-slide-btn-container-previous{padding-left:3px}}.fslightbox-slide-btn-container-next{right:0;padding-left:12px;padding-right:3px}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-left:22px}}@media (min-width:768px){.fslightbox-slide-btn-container-next{padding-left:30px}}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-right:6px}}.fslightbox-down-event-detector{position:absolute;z-index:1}.fslightbox-slide-swiping-hoverer{z-index:4}.fslightbox-invalid-file-wrapper{font-size:22px;color:#eaebeb;margin:auto}.fslightbox-video{object-fit:cover}.fslightbox-youtube-iframe{border:0}.fslightboxl{display:block;margin:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:67px;height:67px}.fslightboxl div{box-sizing:border-box;display:block;position:absolute;width:54px;height:54px;margin:6px;border:5px solid;border-color:#999 transparent transparent transparent;border-radius:50%;animation:fslightboxl 1.2s cubic-bezier(.5,0,.5,1) infinite}.fslightboxl div:nth-child(1){animation-delay:-.45s}.fslightboxl div:nth-child(2){animation-delay:-.3s}.fslightboxl div:nth-child(3){animation-delay:-.15s}@keyframes fslightboxl{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fslightbox-source{position:relative;z-index:2;opacity:0}")),document.head.appendChild(o));function L(e){var t,n=e.props,o=0,i={};this.getSourceTypeFromLocalStorageByUrl=function(e){return t[e]?t[e]:r(e)},this.handleReceivedSourceTypeForUrl=function(e,n){if(!1===i[n]&&(o--,"invalid"!==e?i[n]=e:delete i[n],0===o)){!function(e,t){for(var n in t)e[n]=t[n]}(t,i);try{localStorage.setItem("fslightbox-types",JSON.stringify(t))}catch(e){}}};var r=function(e){o++,i[e]=!1};if(n.disableLocalStorage)this.getSourceTypeFromLocalStorageByUrl=function(){},this.handleReceivedSourceTypeForUrl=function(){};else{try{t=JSON.parse(localStorage.getItem("fslightbox-types"))}catch(e){}t||(t={},this.getSourceTypeFromLocalStorageByUrl=r)}}function A(e,t,n,o){e.data;var i=e.elements.sources,r=n/o,s=0;this.adjustSize=function(){if((s=e.mw/r)e.mh?e.mh:o,a()};var a=function(){i[t].style.width=s*r+"px",i[t].style.height=s+"px"}}function C(e,t){var n=this,o=e.collections.sourceSizers,i=e.elements,r=i.sourceAnimationWrappers,s=i.sources,a=e.isl,c=e.resolve;function l(e,n){o[t]=c(A,[t,e,n]),o[t].adjustSize()}this.runActions=function(e,o){a[t]=!0,s[t].classList.add(x),r[t].classList.add(g),r[t].removeChild(r[t].firstChild),l(e,o),n.runActions=l}}function E(e,t){var n,o=this,i=e.elements.sources,r=e.props,s=(0,e.resolve)(C,[t]);this.handleImageLoad=function(e){var t=e.target,n=t.naturalWidth,o=t.naturalHeight;s.runActions(n,o)},this.handleVideoLoad=function(e){var t=e.target,o=t.videoWidth,i=t.videoHeight;n=!0,s.runActions(o,i)},this.handleNotMetaDatedVideoLoad=function(){n||o.handleYoutubeLoad()},this.handleYoutubeLoad=function(){var e=1920,t=1080;r.maxYoutubeDimensions&&(e=r.maxYoutubeDimensions.width,t=r.maxYoutubeDimensions.height),s.runActions(e,t)},this.handleCustomLoad=function(){var e=i[t],n=e.offsetWidth,r=e.offsetHeight;n&&r?s.runActions(n,r):setTimeout(o.handleCustomLoad)}}function F(e,t,n){var o=e.elements.sources,i=e.props.customClasses,r=i[t]?i[t]:"";o[t].className=n+" "+r}function I(e,t){var n=e.elements.sources,o=e.props.customAttributes;for(var i in o[t])n[t].setAttribute(i,o[t][i])}function N(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=document.createElement("img"),F(e,t,y),i[t].src=s[t],i[t].onload=n[t].handleImageLoad,I(e,t),r[t].appendChild(i[t])}function z(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props,a=s.sources,c=s.videosPosters;i[t]=document.createElement("video"),F(e,t,y),i[t].src=a[t],i[t].onloadedmetadata=function(e){n[t].handleVideoLoad(e)},i[t].controls=!0,I(e,t),c[t]&&(i[t].poster=c[t]);var l=document.createElement("source");l.src=a[t],i[t].appendChild(l),setTimeout(n[t].handleNotMetaDatedVideoLoad,3e3),r[t].appendChild(i[t])}function T(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,r=o.sources,s=o.sourceAnimationWrappers,a=e.props.sources;r[t]=document.createElement("iframe"),F(e,t,"".concat(y," ").concat(i,"youtube-iframe"));var c=a[t],l=c.split("?")[1];r[t].src="https://www.youtube.com/embed/".concat(c.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/)[2],"?").concat(l||""),r[t].allowFullscreen=!0,I(e,t),s[t].appendChild(r[t]),n[t].handleYoutubeLoad()}function P(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=s[t],F(e,t,"".concat(i[t].className," ").concat(y)),r[t].appendChild(i[t]),n[t].handleCustomLoad()}function k(e,t){var n=e.elements,o=n.sources,r=n.sourceAnimationWrappers;e.props.sources;o[t]=document.createElement("div"),o[t].className="".concat(i,"invalid-file-wrapper ").concat(c),o[t].innerHTML="Invalid source",r[t].classList.add(g),r[t].removeChild(r[t].firstChild),r[t].appendChild(o[t])}function R(e){var t=e.collections,n=t.sourceLoadHandlers,o=t.sourcesRenderFunctions,i=e.core.sourceDisplayFacade,r=e.resolve;this.runActionsForSourceTypeAndIndex=function(t,s){var a;switch("invalid"!==t&&(n[s]=r(E,[s])),t){case"image":a=N;break;case"video":a=z;break;case"youtube":a=T;break;case"custom":a=P;break;default:a=k}o[s]=function(){return a(e,s)},i.displaySourcesWhichShouldBeDisplayed()}}function H(e,t,n){var o=e.props,i=o.types,r=o.type,s=o.sources;this.getTypeSetByClientForIndex=function(e){var t;return i&&i[e]?t=i[e]:r&&(t=r),t},this.retrieveTypeWithXhrForIndex=function(e){!function(e,t){var n=document.createElement("a");n.href=e;var o=n.hostname;if("www.youtube.com"===o||"youtu.be"===o)return t("youtube");var i=new XMLHttpRequest;i.onreadystatechange=function(){if(4!==i.readyState){if(2===i.readyState){var e,n=i.getResponseHeader("content-type");switch(n.slice(0,n.indexOf("/"))){case"image":e="image";break;case"video":e="video";break;default:e="invalid"}i.onreadystatechange=null,i.abort(),t(e)}}else t("invalid")},i.open("GET",e),i.send()}(s[e],(function(o){t.handleReceivedSourceTypeForUrl(o,s[e]),n.runActionsForSourceTypeAndIndex(o,e)}))}}function W(e,t){var n=e.core.stageManager,o=e.elements,i=o.smw,r=o.sourceWrappersContainer,s=e.props,l=0,f=document.createElement("div");function p(e){f.style.transform="translateX(".concat(e+l,"px)"),l=0}function h(){return(1+s.slideDistance)*innerWidth}f.className="".concat(d," ").concat(a," ").concat(c),f.s=function(){f.style.display="flex"},f.h=function(){f.style.display="none"},f.a=function(){f.classList.add(u)},f.d=function(){f.classList.remove(u)},f.n=function(){f.style.removeProperty("transform")},f.v=function(e){return l=e,f},f.ne=function(){p(-h())},f.z=function(){p(0)},f.p=function(){p(h())},n.i(t)||f.h(),i[t]=f,r.appendChild(f),function(e,t){var n=e.elements,o=n.smw,i=n.sourceAnimationWrappers,r=document.createElement("div"),s=document.createElement("div");s.className="fslightboxl";for(var a=0;a<3;a++){var c=document.createElement("div");s.appendChild(c)}r.appendChild(s),o[t].appendChild(r),i[t]=r}(e,t)}function D(e,t,n,o){var r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttributeNS(null,"width",t),r.setAttributeNS(null,"height",t),r.setAttributeNS(null,"viewBox",n);var s=document.createElementNS("http://www.w3.org/2000/svg","path");return s.setAttributeNS(null,"class","".concat(i,"svg-path")),s.setAttributeNS(null,"d",o),r.appendChild(s),e.appendChild(r),r}function M(e,t){var n=document.createElement("div");return n.className="".concat(i,"toolbar-button ").concat(c),n.title=t,e.appendChild(n),n}function O(e,t){var n=document.createElement("div");n.className="".concat(i,"toolbar"),t.appendChild(n),function(e,t){var n=e.componentsServices,o=e.data,i=e.fs,r="M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z",s=M(t);s.title="Enter fullscreen";var a=D(s,"20px","0 0 18 18",r);n.ofs=function(){o.ifs=!0,s.title="Exit fullscreen",a.setAttributeNS(null,"width","24px"),a.setAttributeNS(null,"height","24px"),a.setAttributeNS(null,"viewBox","0 0 950 1024"),a.firstChild.setAttributeNS(null,"d","M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z")},n.xfs=function(){o.ifs=!1,s.title="Enter fullscreen",a.setAttributeNS(null,"width","20px"),a.setAttributeNS(null,"height","20px"),a.setAttributeNS(null,"viewBox","0 0 18 18"),a.firstChild.setAttributeNS(null,"d",r)},s.onclick=i.t}(e,n),function(e,t){var n=M(t,"Close");n.onclick=e.core.lightboxCloser.closeLightbox,D(n,"20px","0 0 24 24","M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z")}(e,n)}function j(e){var t=e.props.sources,n=e.elements.container,o=document.createElement("div");o.className="".concat(i,"nav"),n.appendChild(o),O(e,o),t.length>1&&function(e,t){var n=e.componentsServices,o=e.props.sources,r=(e.stageIndexes,document.createElement("div"));r.className="".concat(i,"slide-number-container");var s=document.createElement("div");s.className=c;var a=document.createElement("span");n.setSlideNumber=function(e){return a.innerHTML=e};var l=document.createElement("span");l.className="".concat(i,"slash");var u=document.createElement("div");u.innerHTML=o.length,r.appendChild(s),s.appendChild(a),s.appendChild(l),s.appendChild(u),t.appendChild(r),setTimeout((function(){s.offsetWidth>55&&(r.style.justifyContent="flex-start")}))}(e,o)}function X(e,t,n,o){var i=e.elements.container,r=n.charAt(0).toUpperCase()+n.slice(1),s=document.createElement("div");s.className="".concat(p," ").concat(p,"-").concat(n),s.title="".concat(r," slide"),s.onclick=t,function(e,t){var n=document.createElement("div");n.className="".concat(f," ").concat(c),D(n,"20px","0 0 20 20",t),e.appendChild(n)}(s,o),i.appendChild(s)}function B(e){var t=e.core,n=t.lightboxCloser,o=t.slideChangeFacade,i=e.fs;this.listener=function(e){switch(e.key){case"Escape":n.closeLightbox();break;case"ArrowLeft":o.changeToPrevious();break;case"ArrowRight":o.changeToNext();break;case"F11":e.preventDefault(),i.t()}}}function q(e){var t=e.elements,n=e.sourcePointerProps,o=e.stageIndexes;function i(e,o){t.smw[e].v(n.swipedX)[o]()}this.runActionsForEvent=function(e){var r,a,c;t.container.contains(t.slideSwipingHoverer)||t.container.appendChild(t.slideSwipingHoverer),r=t.container,a=s,(c=r.classList).contains(a)||c.add(a),n.swipedX=e.screenX-n.downScreenX;var l=o.previous,u=o.next;i(o.current,"z"),void 0!==l&&n.swipedX>0?i(l,"ne"):void 0!==u&&n.swipedX<0&&i(u,"p")}}function V(e){var t=e.props.sources,n=e.resolve,o=e.sourcePointerProps,i=n(q);1===t.length?this.listener=function(){o.swipedX=1}:this.listener=function(e){o.isPointering&&i.runActionsForEvent(e)}}function U(e){var t=e.core.slideIndexChanger,n=e.elements.smw,o=e.stageIndexes,i=e.sws;function r(e){var t=n[o.current];t.a(),t[e]()}function s(e,t){void 0!==e&&(n[e].s(),n[e][t]())}this.runPositiveSwipedXActions=function(){var e=o.previous;if(void 0===e)r("z");else{r("p");var n=o.next;t.changeTo(e);var a=o.previous;i.d(a),i.b(n),r("z"),s(a,"ne")}},this.runNegativeSwipedXActions=function(){var e=o.next;if(void 0===e)r("z");else{r("ne");var n=o.previous;t.changeTo(e);var a=o.next;i.d(a),i.b(n),r("z"),s(a,"p")}}}function _(e,t){e.contains(t)&&e.removeChild(t)}function Y(e){var t=e.core.lightboxCloser,n=e.elements,o=e.resolve,i=e.sourcePointerProps,r=o(U);this.runNoSwipeActions=function(){_(n.container,n.slideSwipingHoverer),i.isSourceDownEventTarget||t.closeLightbox(),i.isPointering=!1},this.runActions=function(){i.swipedX>0?r.runPositiveSwipedXActions():r.runNegativeSwipedXActions(),_(n.container,n.slideSwipingHoverer),n.container.classList.remove(s),i.isPointering=!1}}function J(e){var t=e.resolve,n=e.sourcePointerProps,o=t(Y);this.listener=function(){n.isPointering&&(n.swipedX?o.runActions():o.runNoSwipeActions())}}function G(e){var t=this,n=e.core,o=n.eventsDispatcher,i=n.globalEventsController,r=n.scrollbarRecompensor,s=e.data,a=e.elements,c=e.fs,u=e.props,d=e.sourcePointerProps;this.isLightboxFadingOut=!1,this.runActions=function(){t.isLightboxFadingOut=!0,a.container.classList.add(v),i.removeListeners(),u.exitFullscreenOnClose&&s.ifs&&c.x(),setTimeout((function(){t.isLightboxFadingOut=!1,d.isPointering=!1,a.container.classList.remove(v),document.documentElement.classList.remove(l),r.removeRecompense(),document.body.removeChild(a.container),o.dispatch("onClose")}),270)}}function $(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function K(e){var t,n,o;n=(t=e).core.eventsDispatcher,o=t.props,n.dispatch=function(e){o[e]&&o[e]()},function(e){var t=e.componentsServices,n=e.data,o=e.fs,i=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"];function r(e){for(var t=0;tinnerHeight&&(document.body.style.marginRight=t.scrollbarWidth+"px")}n.addRecompense=function(){"complete"===document.readyState?o():addEventListener("load",(function(){o(),n.addRecompense=o}))},n.removeRecompense=function(){document.body.style.removeProperty("margin-right")}}(e),function(e){var t=e.core,n=t.slideChangeFacade,o=t.slideIndexChanger,i=t.stageManager;e.props.sources.length>1?(n.changeToPrevious=function(){o.jumpTo(i.getPreviousSlideIndex())},n.changeToNext=function(){o.jumpTo(i.getNextSlideIndex())}):(n.changeToPrevious=function(){},n.changeToNext=function(){})}(e),function(e){var t=e.componentsServices,n=e.core,o=n.slideIndexChanger,i=n.sourceDisplayFacade,r=n.stageManager,s=e.elements,a=s.smw,c=s.sourceAnimationWrappers,l=e.isl,u=e.stageIndexes,d=e.sws;o.changeTo=function(e){u.current=e,r.updateStageIndexes(),t.setSlideNumber(e+1),i.displaySourcesWhichShouldBeDisplayed()},o.jumpTo=function(e){var t=u.previous,n=u.current,i=u.next,s=l[n],f=l[e];o.changeTo(e);for(var p=0;p992?e.mw=s*innerWidth:e.mw=innerWidth,e.mh=s*innerHeight;for(var n=0;n1&&(n=(t=e).core.slideChangeFacade,X(t,n.changeToPrevious,"previous","M18.271,9.212H3.615l4.184-4.184c0.306-0.306,0.306-0.801,0-1.107c-0.306-0.306-0.801-0.306-1.107,0L1.21,9.403C1.194,9.417,1.174,9.421,1.158,9.437c-0.181,0.181-0.242,0.425-0.209,0.66c0.005,0.038,0.012,0.071,0.022,0.109c0.028,0.098,0.075,0.188,0.142,0.271c0.021,0.026,0.021,0.061,0.045,0.085c0.015,0.016,0.034,0.02,0.05,0.033l5.484,5.483c0.306,0.307,0.801,0.307,1.107,0c0.306-0.305,0.306-0.801,0-1.105l-4.184-4.185h14.656c0.436,0,0.788-0.353,0.788-0.788S18.707,9.212,18.271,9.212z"),X(t,n.changeToNext,"next","M1.729,9.212h14.656l-4.184-4.184c-0.307-0.306-0.307-0.801,0-1.107c0.305-0.306,0.801-0.306,1.106,0l5.481,5.482c0.018,0.014,0.037,0.019,0.053,0.034c0.181,0.181,0.242,0.425,0.209,0.66c-0.004,0.038-0.012,0.071-0.021,0.109c-0.028,0.098-0.075,0.188-0.143,0.271c-0.021,0.026-0.021,0.061-0.045,0.085c-0.015,0.016-0.034,0.02-0.051,0.033l-5.483,5.483c-0.306,0.307-0.802,0.307-1.106,0c-0.307-0.305-0.307-0.801,0-1.105l4.184-4.185H1.729c-0.436,0-0.788-0.353-0.788-0.788S1.293,9.212,1.729,9.212z")),function(e){for(var t=e.props.sources,n=e.resolve,o=n(L),i=n(R),r=n(H,[o,i]),s=0;s0&&void 0!==arguments[0]?arguments[0]:0,i=m.previous,a=m.current,d=m.next;m.current=n,p.i||S(e),u.updateStageIndexes(),p.i?(v.c(),v.a(),v.b(i),v.b(a),v.b(d),o.dispatch("onShow")):b(),c.displaySourcesWhichShouldBeDisplayed(),t.setSlideNumber(n+1),document.body.appendChild(h.container),document.documentElement.classList.add(l),s.addRecompense(),r.attachListeners(),f.runActions(),h.smw[m.current].n(),o.dispatch("onOpen")}}function Z(e,t,n){return(Z=ee()?Reflect.construct.bind():function(e,t,n){var o=[null];o.push.apply(o,t);var i=new(Function.bind.apply(e,o));return n&&te(i,n.prototype),i}).apply(null,arguments)}function ee(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function te(e,t){return(te=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ne(e){return function(e){if(Array.isArray(e))return oe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return oe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return oe(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:[];return n.unshift(e),Z(t,ne(n))},this.collections={sourceLoadHandlers:[],sourcesRenderFunctions:[],sourceSizers:[]},this.core={eventsDispatcher:{},globalEventsController:{},lightboxCloser:{},lightboxUpdater:{},scrollbarRecompensor:{},slideChangeFacade:{},slideIndexChanger:{},sourcesPointerDown:{},sourceDisplayFacade:{},stageManager:{},windowResizeActioner:{}},this.fs={},this.sws={},Q(this),this.close=function(){return e.core.lightboxCloser.closeLightbox()}},window.fsLightboxInstances={},ie(),window.refreshFsLightbox=function(){for(var e in fsLightboxInstances){var t=fsLightboxInstances[e].props;fsLightboxInstances[e]=new FsLightbox,fsLightboxInstances[e].props=t,fsLightboxInstances[e].props.sources=[],fsLightboxInstances[e].elements.a=[]}ie()}}])})); \ No newline at end of file diff --git a/app/assets/javascripts/jquery.fancybox.min.js b/app/assets/javascripts/jquery.fancybox.min.js deleted file mode 100644 index d5d10f6..0000000 --- a/app/assets/javascripts/jquery.fancybox.min.js +++ /dev/null @@ -1,13 +0,0 @@ -// ================================================== -// fancyBox v3.5.7 -// -// Licensed GPLv3 for open source use -// or fancyBox Commercial License for commercial use -// -// http://fancyapps.com/fancybox/ -// Copyright 2019 fancyApps -// -// ================================================== -!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'',spinnerTpl:'
',errorTpl:'

{{ERROR}}

',btnTpl:{download:'',zoom:'',close:'',arrowLeft:'',arrowRight:'',smallBtn:''},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded.
Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schließen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergrößern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio,select")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('
').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),ap&&(s=i.top*c-(e*c-e),s>0&&(s=0),se-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('
').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('
').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("
").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("
").append(n.trim(e)).contents()),t.opts.filter&&(e=n("
").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("
"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("
").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('
').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity, -"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.7",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;ee.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&aa?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),rs.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:''},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('
').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:''},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('
').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('
').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.lefta.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:''},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location}, -tpl:''}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})},mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery); \ No newline at end of file diff --git a/app/assets/stylesheets/_settings.scss b/app/assets/stylesheets/_settings.scss index cba0260..9159004 100644 --- a/app/assets/stylesheets/_settings.scss +++ b/app/assets/stylesheets/_settings.scss @@ -61,7 +61,7 @@ // 57. Xy Grid @use "sass:color"; -@import 'util/util'; +@import 'foundation-sites/scss/util/util'; // 1. Global // --------- diff --git a/app/assets/stylesheets/actiontext.scss b/app/assets/stylesheets/actiontext.scss deleted file mode 100644 index 7cb26e7..0000000 --- a/app/assets/stylesheets/actiontext.scss +++ /dev/null @@ -1,36 +0,0 @@ -// -// Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and -// the trix-editor content (whether displayed or under editing). Feel free to incorporate this -// inclusion directly in any other asset bundle and remove this file. -// -//= require trix/dist/trix - -// We need to override trix.css’s image gallery styles to accommodate the -// element we wrap around attachments. Otherwise, -// images in galleries will be squished by the max-width: 33%; rule. -.trix-content { - .attachment-gallery { - > action-text-attachment, - > .attachment { - flex: 1 0 33%; - padding: 0 0.5em; - max-width: 33%; - } - - &.attachment-gallery--2, - &.attachment-gallery--4 { - > action-text-attachment, - > .attachment { - flex-basis: 50%; - max-width: 50%; - } - } - } - - action-text-attachment { - .attachment { - padding: 0 !important; - max-width: 100% !important; - } - } -} diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss deleted file mode 100644 index 6b55735..0000000 --- a/app/assets/stylesheets/admin.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the admin controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/application.sass.scss b/app/assets/stylesheets/application.sass.scss new file mode 100644 index 0000000..bbaf3e0 --- /dev/null +++ b/app/assets/stylesheets/application.sass.scss @@ -0,0 +1,22 @@ +// Customize Foundation settings before loading the framework +// @use '_settings' with ( +// // Override default variables +// $primary-color: #1779ba, +// $header-color: green +// ); + +// @import 'foundation-sites/scss/foundation'; +@import 'foundation_and_overrides'; + +// @import 'foundation-sites/scss/util/util'; + +// Include specific Foundation components (optional) +// see https://get.foundation/sites/docs/sass.html#adjusting-css-output +@include foundation-global-styles; +@include foundation-grid; +@include foundation-typography; +@include foundation-forms; +@include foundation-button; +// Add more components as needed + +@import 'my_styles'; diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss deleted file mode 100644 index af2d5b2..0000000 --- a/app/assets/stylesheets/application.scss +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This is a manifest file that'll be compiled into application.css, which will include all the files - * listed below. - * - * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, - * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. - * - * You're free to add application-wide styles to this file and they'll appear at the top of the - * compiled file, but it's generally better to create a new file per style scope. - * - *= require_self - *= require font-awesome - *= require my_styles - */ - -@import "foundation_and_overrides"; diff --git a/app/assets/stylesheets/browserslist b/app/assets/stylesheets/browserslist deleted file mode 100644 index 6019618..0000000 --- a/app/assets/stylesheets/browserslist +++ /dev/null @@ -1,4 +0,0 @@ -last 2 versions -ie >= 9 -Android >= 2.3 -ios >= 7 diff --git a/app/assets/stylesheets/foundation_and_overrides.scss b/app/assets/stylesheets/foundation_and_overrides.scss index 2ae5cbb..ed19edb 100644 --- a/app/assets/stylesheets/foundation_and_overrides.scss +++ b/app/assets/stylesheets/foundation_and_overrides.scss @@ -1,7 +1,7 @@ @charset 'utf-8'; -@import 'settings'; -@import 'foundation'; +@import '_settings'; +@import '../../../node_modules/foundation-sites/scss/foundation'; // If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package. // @@ -9,48 +9,60 @@ // We include everything by default. To slim your CSS, remove components you don't use. +// Global styles @include foundation-global-styles; -@include foundation-xy-grid-classes; -//@include foundation-grid; -//@include foundation-flex-grid; -@include foundation-flex-classes; -@include foundation-typography; @include foundation-forms; +@include foundation-typography; + +// Grids (choose one) +@include foundation-xy-grid-classes; +// @include foundation-grid; +// @include foundation-flex-grid; + +// Generic components @include foundation-button; -@include foundation-accordion; -@include foundation-accordion-menu; -@include foundation-badge; -@include foundation-breadcrumbs; @include foundation-button-group; -@include foundation-callout; -@include foundation-card; @include foundation-close-button; -@include foundation-menu; -@include foundation-menu-icon; -@include foundation-drilldown-menu; -@include foundation-dropdown; -@include foundation-dropdown-menu; -@include foundation-responsive-embed; @include foundation-label; -@include foundation-media-object; -@include foundation-off-canvas; -@include foundation-orbit; -@include foundation-pagination; @include foundation-progress-bar; @include foundation-slider; -@include foundation-sticky; -@include foundation-reveal; @include foundation-switch; @include foundation-table; + +// Basic components +@include foundation-badge; +@include foundation-breadcrumbs; +@include foundation-callout; +@include foundation-card; +@include foundation-dropdown; +@include foundation-pagination; +@include foundation-tooltip; + +// Containers +@include foundation-accordion; +@include foundation-media-object; +@include foundation-orbit; +@include foundation-responsive-embed; @include foundation-tabs; @include foundation-thumbnail; -@include foundation-title-bar; -@include foundation-tooltip; -@include foundation-top-bar; -@include foundation-visibility-classes; -@include foundation-float-classes; -// If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package. -// -// @include motion-ui-transitions; -// @include motion-ui-animations; +// Menu-based containers +@include foundation-menu; +@include foundation-menu-icon; +@include foundation-accordion-menu; +@include foundation-drilldown-menu; +@include foundation-dropdown-menu; + +// Layout components +@include foundation-off-canvas; +@include foundation-reveal; +@include foundation-sticky; +@include foundation-title-bar; +@include foundation-top-bar; + +// Helpers +@include foundation-float-classes; +// @include foundation-flex-classes; +@include foundation-visibility-classes; +// @include foundation-prototype-classes; + diff --git a/app/assets/stylesheets/jquery.fancybox.min.scss b/app/assets/stylesheets/jquery.fancybox.min.scss deleted file mode 100644 index 7cc60b2..0000000 --- a/app/assets/stylesheets/jquery.fancybox.min.scss +++ /dev/null @@ -1 +0,0 @@ -body.compensate-for-scrollbar{overflow:hidden}.fancybox-active{height:auto}.fancybox-is-hidden{left:-9999px;margin:0;position:absolute!important;top:-9999px;visibility:hidden}.fancybox-container{-webkit-backface-visibility:hidden;height:100%;left:0;outline:none;position:fixed;-webkit-tap-highlight-color:transparent;top:0;-ms-touch-action:manipulation;touch-action:manipulation;transform:translateZ(0);width:100%;z-index:99992}.fancybox-container *{box-sizing:border-box}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{bottom:0;left:0;position:absolute;right:0;top:0}.fancybox-outer{-webkit-overflow-scrolling:touch;overflow-y:auto}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.9;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption,.fancybox-infobar,.fancybox-navigation .fancybox-button,.fancybox-toolbar{direction:ltr;opacity:0;position:absolute;transition:opacity .25s ease,visibility 0s ease .25s;visibility:hidden;z-index:99997}.fancybox-show-caption .fancybox-caption,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-nav .fancybox-navigation .fancybox-button,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;transition:opacity .25s ease 0s,visibility 0s ease 0s;visibility:visible}.fancybox-infobar{color:#ccc;font-size:13px;-webkit-font-smoothing:subpixel-antialiased;height:44px;left:0;line-height:44px;min-width:44px;mix-blend-mode:difference;padding:0 10px;pointer-events:none;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-toolbar{right:0;top:0}.fancybox-stage{direction:ltr;overflow:visible;transform:translateZ(0);z-index:99994}.fancybox-is-open .fancybox-stage{overflow:hidden}.fancybox-slide{-webkit-backface-visibility:hidden;display:none;height:100%;left:0;outline:none;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:absolute;text-align:center;top:0;transition-property:transform,opacity;white-space:normal;width:100%;z-index:99994}.fancybox-slide:before{content:"";display:inline-block;font-size:0;height:100%;vertical-align:middle;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:hidden;padding:44px 0}.fancybox-slide--image:before{display:none}.fancybox-slide--html{padding:6px}.fancybox-content{background:#fff;display:inline-block;margin:0;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:relative;text-align:left;vertical-align:middle}.fancybox-slide--image .fancybox-content{animation-timing-function:cubic-bezier(.5,0,.14,1);-webkit-backface-visibility:hidden;background:transparent;background-repeat:no-repeat;background-size:100% 100%;left:0;max-width:none;overflow:visible;padding:0;position:absolute;top:0;transform-origin:top left;transition-property:transform,opacity;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:99995}.fancybox-can-zoomOut .fancybox-content{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-content{cursor:zoom-in}.fancybox-can-pan .fancybox-content,.fancybox-can-swipe .fancybox-content{cursor:grab}.fancybox-is-grabbing .fancybox-content{cursor:grabbing}.fancybox-container [data-selectable=true]{cursor:text}.fancybox-image,.fancybox-spaceball{background:transparent;border:0;height:100%;left:0;margin:0;max-height:none;max-width:none;padding:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content,.fancybox-slide--map .fancybox-content,.fancybox-slide--pdf .fancybox-content,.fancybox-slide--video .fancybox-content{height:100%;overflow:visible;padding:0;width:100%}.fancybox-slide--video .fancybox-content{background:#000}.fancybox-slide--map .fancybox-content{background:#e5e3df}.fancybox-slide--iframe .fancybox-content{background:#fff}.fancybox-iframe,.fancybox-video{background:transparent;border:0;display:block;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.fancybox-iframe{left:0;position:absolute;top:0}.fancybox-error{background:#fff;cursor:default;max-width:400px;padding:40px;width:100%}.fancybox-error p{color:#444;font-size:16px;line-height:20px;margin:0;padding:0}.fancybox-button{background:rgba(30,30,30,.6);border:0;border-radius:0;box-shadow:none;cursor:pointer;display:inline-block;height:44px;margin:0;padding:10px;position:relative;transition:color .2s;vertical-align:top;visibility:inherit;width:44px}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:hover{color:#fff}.fancybox-button:focus{outline:none}.fancybox-button.fancybox-focus{outline:1px dotted}.fancybox-button[disabled],.fancybox-button[disabled]:hover{color:#888;cursor:default;outline:none}.fancybox-button div{height:100%}.fancybox-button svg{display:block;height:100%;overflow:visible;position:relative;width:100%}.fancybox-button svg path{fill:currentColor;stroke-width:0}.fancybox-button--fsenter svg:nth-child(2),.fancybox-button--fsexit svg:first-child,.fancybox-button--pause svg:first-child,.fancybox-button--play svg:nth-child(2){display:none}.fancybox-progress{background:#ff5268;height:2px;left:0;position:absolute;right:0;top:0;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;z-index:99998}.fancybox-close-small{background:transparent;border:0;border-radius:0;color:#ccc;cursor:pointer;opacity:.8;padding:8px;position:absolute;right:-12px;top:-44px;z-index:401}.fancybox-close-small:hover{color:#fff;opacity:1}.fancybox-slide--html .fancybox-close-small{color:currentColor;padding:10px;right:0;top:0}.fancybox-slide--image.fancybox-is-scaling .fancybox-content{overflow:hidden}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small{display:none}.fancybox-navigation .fancybox-button{background-clip:content-box;height:100px;opacity:0;position:absolute;top:calc(50% - 50px);width:70px}.fancybox-navigation .fancybox-button div{padding:7px}.fancybox-navigation .fancybox-button--arrow_left{left:0;left:env(safe-area-inset-left);padding:31px 26px 31px 6px}.fancybox-navigation .fancybox-button--arrow_right{padding:31px 6px 31px 26px;right:0;right:env(safe-area-inset-right)}.fancybox-caption{background:linear-gradient(0deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.15) 65%,rgba(0,0,0,.075) 75.5%,rgba(0,0,0,.037) 82.85%,rgba(0,0,0,.019) 88%,transparent);bottom:0;color:#eee;font-size:14px;font-weight:400;left:0;line-height:1.5;padding:75px 44px 25px;pointer-events:none;right:0;text-align:center;z-index:99996}@supports (padding:max(0px)){.fancybox-caption{padding:75px max(44px,env(safe-area-inset-right)) max(25px,env(safe-area-inset-bottom)) max(44px,env(safe-area-inset-left))}}.fancybox-caption--separate{margin-top:-50px}.fancybox-caption__body{max-height:50vh;overflow:auto;pointer-events:all}.fancybox-caption a,.fancybox-caption a:link,.fancybox-caption a:visited{color:#ccc;text-decoration:none}.fancybox-caption a:hover{color:#fff;text-decoration:underline}.fancybox-loading{animation:a 1s linear infinite;background:transparent;border:4px solid #888;border-bottom-color:#fff;border-radius:50%;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.7;padding:0;position:absolute;top:50%;width:50px;z-index:99999}@keyframes a{to{transform:rotate(1turn)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{opacity:0;transform:translate3d(-100%,0,0)}.fancybox-fx-slide.fancybox-slide--next{opacity:0;transform:translate3d(100%,0,0)}.fancybox-fx-slide.fancybox-slide--current{opacity:1;transform:translateZ(0)}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{opacity:0;transform:scale3d(1.5,1.5,1.5)}.fancybox-fx-zoom-in-out.fancybox-slide--next{opacity:0;transform:scale3d(.5,.5,.5)}.fancybox-fx-zoom-in-out.fancybox-slide--current{opacity:1;transform:scaleX(1)}.fancybox-fx-rotate.fancybox-slide--previous{opacity:0;transform:rotate(-1turn)}.fancybox-fx-rotate.fancybox-slide--next{opacity:0;transform:rotate(1turn)}.fancybox-fx-rotate.fancybox-slide--current{opacity:1;transform:rotate(0deg)}.fancybox-fx-circular.fancybox-slide--previous{opacity:0;transform:scale3d(0,0,0) translate3d(-100%,0,0)}.fancybox-fx-circular.fancybox-slide--next{opacity:0;transform:scale3d(0,0,0) translate3d(100%,0,0)}.fancybox-fx-circular.fancybox-slide--current{opacity:1;transform:scaleX(1) translateZ(0)}.fancybox-fx-tube.fancybox-slide--previous{transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{transform:translateZ(0) scale(1)}@media (max-height:576px){.fancybox-slide{padding-left:6px;padding-right:6px}.fancybox-slide--image{padding:6px 0}.fancybox-close-small{right:-6px}.fancybox-slide--image .fancybox-close-small{background:#4e4e4e;color:#f2f4f6;height:36px;opacity:1;padding:6px;right:0;top:0;width:36px}.fancybox-caption{padding-left:12px;padding-right:12px}@supports (padding:max(0px)){.fancybox-caption{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}}.fancybox-share{background:#f4f4f4;border-radius:3px;max-width:90%;padding:30px;text-align:center}.fancybox-share h1{color:#222;font-size:35px;font-weight:700;margin:0 0 20px}.fancybox-share p{margin:0;padding:0}.fancybox-share__button{border:0;border-radius:3px;display:inline-block;font-size:14px;font-weight:700;line-height:40px;margin:0 5px 10px;min-width:130px;padding:0 15px;text-decoration:none;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.fancybox-share__button:link,.fancybox-share__button:visited{color:#fff}.fancybox-share__button:hover{text-decoration:none}.fancybox-share__button--fb{background:#3b5998}.fancybox-share__button--fb:hover{background:#344e86}.fancybox-share__button--pt{background:#bd081d}.fancybox-share__button--pt:hover{background:#aa0719}.fancybox-share__button--tw{background:#1da1f2}.fancybox-share__button--tw:hover{background:#0d95e8}.fancybox-share__button svg{height:25px;margin-right:7px;position:relative;top:-1px;vertical-align:middle;width:25px}.fancybox-share__button svg path{fill:#fff}.fancybox-share__input{background:transparent;border:0;border-bottom:1px solid #d7d7d7;border-radius:0;color:#5d5b5b;font-size:14px;margin:10px 0 0;outline:none;padding:10px 15px;width:100%}.fancybox-thumbs{background:#ddd;bottom:0;display:none;margin:0;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;padding:2px 2px 4px;position:absolute;right:0;-webkit-tap-highlight-color:rgba(0,0,0,0);top:0;width:212px;z-index:99995}.fancybox-thumbs-x{overflow-x:auto;overflow-y:hidden}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs__list{font-size:0;height:100%;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;position:relative;white-space:nowrap;width:100%}.fancybox-thumbs-x .fancybox-thumbs__list{overflow:hidden}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar{width:7px}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs__list a{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,.1);background-position:50%;background-repeat:no-repeat;background-size:cover;cursor:pointer;float:left;height:75px;margin:2px;max-height:calc(100% - 8px);max-width:calc(50% - 4px);outline:none;overflow:hidden;padding:0;position:relative;-webkit-tap-highlight-color:transparent;width:100px}.fancybox-thumbs__list a:before{border:6px solid #ff5268;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:all .2s cubic-bezier(.25,.46,.45,.94);z-index:99991}.fancybox-thumbs__list a:focus:before{opacity:.5}.fancybox-thumbs__list a.fancybox-thumbs-active:before{opacity:1}@media (max-width:576px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs__list a{max-width:calc(100% - 10px)}} \ No newline at end of file diff --git a/app/assets/javascripts/application.js b/app/javascript/application.js similarity index 62% rename from app/assets/javascripts/application.js rename to app/javascript/application.js index 272c96a..ef265de 100644 --- a/app/assets/javascripts/application.js +++ b/app/javascript/application.js @@ -1,42 +1,41 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, -// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. -// -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// compiled file. -// -// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require jquery -//= require jquery_ujs -//= require foundation -//= require_tree . +// Entry point for the build script in your package.json +// import "@hotwired/turbo-rails"; +// import "jquery"; +import "foundation-sites"; +// import 'foundation-sites/dist/css/foundation.min.css'; // CSS +import "./controllers"; -$(function(){ $(document).foundation(); }); +// // Entry point for the build script in your package.json + +import jquery from "jquery"; + +window.jQuery = jquery; +window.$ = jquery; + +$(function () { + $(document).foundation(); +}); // Load reviews on package's details page -load_reviews = function() { - // Display message while loading reviews - // $('#reviews').html("Loading reviews..."); +// load_reviews = function() { +// // Display message while loading reviews +// // $('#reviews').html("Loading reviews..."); - // Hide the DIV so that in can be faded in later - $('#reviews').hide(); +// // Hide the DIV so that in can be faded in later +// $('#reviews').hide(); - // The URL is specified in the #reviews's DIV data attribute - var url = $('#reviews').attr('data-package-reviews-url'); - $('#reviews').load(url, null, - // Fade in the reviews as soon as the DIV is loaded and filled - function(){ - $(this).fadeIn('slow') - } - ); -}; +// // The URL is specified in the #reviews's DIV data attribute +// var url = $('#reviews').attr('data-package-reviews-url'); +// $('#reviews').load(url, null, +// // Fade in the reviews as soon as the DIV is loaded and filled +// function(){ +// $(this).fadeIn('slow') +// } +// ); +// }; // Initialize the upload form. -upload_form_init = function() { +function upload_form_init() { // Disable the submit button if Javascript is supported. // Upload will start right after selecting images. $('#file-submit').hide(); @@ -45,12 +44,12 @@ upload_form_init = function() { $('#file').on('change', upload_form_files_selected); }; -upload_form_files_selected = function() { +function upload_form_files_selected() { no_files = this.files.length; if (no_files > 0) { $('#file-label').html(no_files+" files selected - uploading…"); // change label $('#file-select-button').attr('disabled','disabled'); // disable select button - $('#file-form').submit(); // start upload + $('#file-form').trigger('submit'); // start upload } }; diff --git a/app/javascript/controllers/application.js b/app/javascript/controllers/application.js new file mode 100644 index 0000000..1213e85 --- /dev/null +++ b/app/javascript/controllers/application.js @@ -0,0 +1,9 @@ +import { Application } from "@hotwired/stimulus" + +const application = Application.start() + +// Configure Stimulus development experience +application.debug = false +window.Stimulus = application + +export { application } diff --git a/app/javascript/controllers/hello_controller.js b/app/javascript/controllers/hello_controller.js new file mode 100644 index 0000000..5975c07 --- /dev/null +++ b/app/javascript/controllers/hello_controller.js @@ -0,0 +1,7 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + connect() { + this.element.textContent = "Hello World!" + } +} diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js new file mode 100644 index 0000000..d0685d3 --- /dev/null +++ b/app/javascript/controllers/index.js @@ -0,0 +1,8 @@ +// This file is auto-generated by ./bin/rails stimulus:manifest:update +// Run that command whenever you add a new controller or create them with +// ./bin/rails generate stimulus controllerName + +import { application } from "./application" + +import HelloController from "./hello_controller" +application.register("hello", HelloController) diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb index a009ace..d394c3d 100644 --- a/app/jobs/application_job.rb +++ b/app/jobs/application_job.rb @@ -1,2 +1,7 @@ class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError end diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 10a4cba..b63caeb 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -1,3 +1,3 @@ class ApplicationRecord < ActiveRecord::Base - self.abstract_class = true + primary_abstract_class end diff --git a/app/views/layouts/action_text/contents/_content.html.erb b/app/views/layouts/action_text/contents/_content.html.erb new file mode 100644 index 0000000..9e3c0d0 --- /dev/null +++ b/app/views/layouts/action_text/contents/_content.html.erb @@ -0,0 +1,3 @@ +
+ <%= yield -%> +
diff --git a/app/views/layouts/application.html.slim b/app/views/layouts/application.html.slim index 654ec99..6a9507e 100644 --- a/app/views/layouts/application.html.slim +++ b/app/views/layouts/application.html.slim @@ -7,9 +7,14 @@ html / meta name="keywords" content="debian screenshots packages applications linux" meta name="viewport" content="width=device-width, initial-scale=1.0" / TODO: make the keywords reflect the virtual host (e.g. Debian) + + // Includes all stylesheet files in app/assets/stylesheets + / = stylesheet_link_tag :app, "data-turbo-track": "reload" + / = javascript_include_tag "application", "data-turbo-track": "reload", type: "module" + = stylesheet_link_tag "application", media: "all" - / = javascript_include_tag "vendor/modernizr" - = javascript_include_tag "application", "data-turbolinks-track" => true + = javascript_include_tag "application", "data-turbo-track": "reload", type: "module" + = csrf_meta_tags body @@ -21,6 +26,7 @@ html #messages = render 'layouts/messages' = yield + = render 'layouts/footer' // Load Javascript libraries diff --git a/bin/brakeman b/bin/brakeman new file mode 100755 index 0000000..ace1c9b --- /dev/null +++ b/bin/brakeman @@ -0,0 +1,7 @@ +#!/usr/bin/env ruby +require "rubygems" +require "bundler/setup" + +ARGV.unshift("--ensure-latest") + +load Gem.bin_path("brakeman", "brakeman") diff --git a/bin/bundle b/bin/bundle index f19acf5..50da5fd 100755 --- a/bin/bundle +++ b/bin/bundle @@ -1,3 +1,109 @@ #!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) -load Gem.bin_path('bundler', 'bundle') +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundle' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "rubygems" + +m = Module.new do + module_function + + def invoked_as_script? + File.expand_path($0) == File.expand_path(__FILE__) + end + + def env_var_version + ENV["BUNDLER_VERSION"] + end + + def cli_arg_version + return unless invoked_as_script? # don't want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + if update_index && update_index.succ == i && a.match?(Gem::Version::ANCHORED_VERSION_PATTERN) + bundler_version = a + end + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + bundler_version = $1 + update_index = i + end + bundler_version + end + + def gemfile + gemfile = ENV["BUNDLE_GEMFILE"] + return gemfile if gemfile && !gemfile.empty? + + File.expand_path("../Gemfile", __dir__) + end + + def lockfile + lockfile = + case File.basename(gemfile) + when "gems.rb" then gemfile.sub(/\.rb$/, ".locked") + else "#{gemfile}.lock" + end + File.expand_path(lockfile) + end + + def lockfile_version + return unless File.file?(lockfile) + lockfile_contents = File.read(lockfile) + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + Regexp.last_match(1) + end + + def bundler_requirement + @bundler_requirement ||= + env_var_version || + cli_arg_version || + bundler_requirement_for(lockfile_version) + end + + def bundler_requirement_for(version) + return "#{Gem::Requirement.default}.a" unless version + + bundler_gem_version = Gem::Version.new(version) + + bundler_gem_version.approximate_recommendation + end + + def load_bundler! + ENV["BUNDLE_GEMFILE"] ||= gemfile + + activate_bundler + end + + def activate_bundler + gem_error = activation_error_handling do + gem "bundler", bundler_requirement + end + return if gem_error.nil? + require_error = activation_error_handling do + require "bundler/version" + end + return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) + warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" + exit 42 + end + + def activation_error_handling + yield + nil + rescue StandardError, LoadError => e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/bin/dev b/bin/dev new file mode 100755 index 0000000..d80a02d --- /dev/null +++ b/bin/dev @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +if gem list --no-installed --exact --silent foreman; then + echo "Installing foreman..." + gem install foreman +fi + +# Default to port 3000 if not specified +export PORT="${PORT:-3000}" + +exec foreman start -f Procfile.dev --env /dev/null "$@" diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint new file mode 100755 index 0000000..57567d6 --- /dev/null +++ b/bin/docker-entrypoint @@ -0,0 +1,14 @@ +#!/bin/bash -e + +# Enable jemalloc for reduced memory usage and latency. +if [ -z "${LD_PRELOAD+x}" ]; then + LD_PRELOAD=$(find /usr/lib -name libjemalloc.so.2 -print -quit) + export LD_PRELOAD +fi + +# If running the rails server then create or migrate existing database +if [ "${@: -2:1}" == "./bin/rails" ] && [ "${@: -1:1}" == "server" ]; then + ./bin/rails db:prepare +fi + +exec "${@}" diff --git a/bin/jobs b/bin/jobs new file mode 100755 index 0000000..dcf59f3 --- /dev/null +++ b/bin/jobs @@ -0,0 +1,6 @@ +#!/usr/bin/env ruby + +require_relative "../config/environment" +require "solid_queue/cli" + +SolidQueue::Cli.start(ARGV) diff --git a/bin/kamal b/bin/kamal new file mode 100755 index 0000000..cbe59b9 --- /dev/null +++ b/bin/kamal @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'kamal' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("kamal", "kamal") diff --git a/bin/rubocop b/bin/rubocop new file mode 100755 index 0000000..40330c0 --- /dev/null +++ b/bin/rubocop @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby +require "rubygems" +require "bundler/setup" + +# explicit rubocop config increases performance slightly while avoiding config confusion. +ARGV.unshift("--config", File.expand_path("../.rubocop.yml", __dir__)) + +load Gem.bin_path("rubocop", "rubocop") diff --git a/bin/setup b/bin/setup index ce0ec18..6b62a32 100755 --- a/bin/setup +++ b/bin/setup @@ -2,7 +2,6 @@ require "fileutils" APP_ROOT = File.expand_path("..", __dir__) -APP_NAME = "debshots" def system!(*args) system(*args, exception: true) @@ -14,9 +13,11 @@ FileUtils.chdir APP_ROOT do # Add necessary setup steps to this file. puts "== Installing dependencies ==" - system! "gem install bundler --conservative" system("bundle check") || system!("bundle install") + # Install JavaScript dependencies + system("yarn install --check-files") + # puts "\n== Copying sample files ==" # unless File.exist?("config/database.yml") # FileUtils.cp "config/database.yml.sample", "config/database.yml" @@ -28,10 +29,9 @@ FileUtils.chdir APP_ROOT do puts "\n== Removing old logs and tempfiles ==" system! "bin/rails log:clear tmp:clear" - puts "\n== Restarting application server ==" - system! "bin/rails restart" - - # puts "\n== Configuring puma-dev ==" - # system "ln -nfs #{APP_ROOT} ~/.puma-dev/#{APP_NAME}" - # system "curl -Is https://#{APP_NAME}.test/up | head -n 1" + unless ARGV.include?("--skip-server") + puts "\n== Starting development server ==" + STDOUT.flush # flush the output before exec(2) so that it displays + exec "bin/dev" + end end diff --git a/bin/thrust b/bin/thrust new file mode 100755 index 0000000..36bde2d --- /dev/null +++ b/bin/thrust @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("thruster", "thrust") diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..5eb4b5f Binary files /dev/null and b/bun.lockb differ diff --git a/config/application.rb b/config/application.rb index ee13544..a30a5f0 100644 --- a/config/application.rb +++ b/config/application.rb @@ -9,7 +9,7 @@ Bundler.require(*Rails.groups) module Debshots class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. - config.load_defaults 7.1 + config.load_defaults 8.0 # Please, add to the `ignore` list any other `lib` subdirectories that do # not contain `.rb` files, or that should not be reloaded or eager loaded. diff --git a/config/cable.yml b/config/cable.yml index 4dde668..b9adc5a 100644 --- a/config/cable.yml +++ b/config/cable.yml @@ -1,3 +1,7 @@ +# Async adapter only works within the same process, so for manually triggering cable updates from a console, +# and seeing results in the browser, you must do so from the web console (running inside the dev process), +# not a terminal started via bin/rails console! Add "console" to any action or any ERB template view +# to make the web console appear. development: adapter: async @@ -5,6 +9,9 @@ test: adapter: test production: - adapter: redis - url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> - channel_prefix: debshots_production + adapter: solid_cable + connects_to: + database: + writing: cable + polling_interval: 0.1.seconds + message_retention: 1.day diff --git a/config/database.yml b/config/database.yml index 8f8f878..1305327 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,4 +1,4 @@ -# SQLite version 3.x +# SQLite. Versions 3.8.0 and up are supported. # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile diff --git a/config/deploy.yml b/config/deploy.yml new file mode 100644 index 0000000..a7725c8 --- /dev/null +++ b/config/deploy.yml @@ -0,0 +1,116 @@ +# Name of your application. Used to uniquely configure containers. +service: example + +# Name of the container image. +image: your-user/example + +# Deploy to these servers. +servers: + web: + - 192.168.0.1 + # job: + # hosts: + # - 192.168.0.1 + # cmd: bin/jobs + +# Enable SSL auto certification via Let's Encrypt and allow for multiple apps on a single web server. +# Remove this section when using multiple web servers and ensure you terminate SSL at your load balancer. +# +# Note: If using Cloudflare, set encryption mode in SSL/TLS setting to "Full" to enable CF-to-app encryption. +proxy: + ssl: true + host: app.example.com + +# Credentials for your image host. +registry: + # Specify the registry server, if you're not using Docker Hub + # server: registry.digitalocean.com / ghcr.io / ... + username: your-user + + # Always use an access token rather than real password when possible. + password: + - KAMAL_REGISTRY_PASSWORD + +# Inject ENV variables into containers (secrets come from .kamal/secrets). +env: + secret: + - RAILS_MASTER_KEY + clear: + # Run the Solid Queue Supervisor inside the web server's Puma process to do jobs. + # When you start using multiple servers, you should split out job processing to a dedicated machine. + SOLID_QUEUE_IN_PUMA: true + + # Set number of processes dedicated to Solid Queue (default: 1) + # JOB_CONCURRENCY: 3 + + # Set number of cores available to the application on each server (default: 1). + # WEB_CONCURRENCY: 2 + + # Match this to any external database server to configure Active Record correctly + # Use example-db for a db accessory server on same machine via local kamal docker network. + # DB_HOST: 192.168.0.2 + + # Log everything from Rails + # RAILS_LOG_LEVEL: debug + +# Aliases are triggered with "bin/kamal ". You can overwrite arguments on invocation: +# "bin/kamal logs -r job" will tail logs from the first server in the job section. +aliases: + console: app exec --interactive --reuse "bin/rails console" + shell: app exec --interactive --reuse "bash" + logs: app logs -f + dbc: app exec --interactive --reuse "bin/rails dbconsole" + + +# Use a persistent storage volume for sqlite database files and local Active Storage files. +# Recommended to change this to a mounted volume path that is backed up off server. +volumes: + - "example_storage:/rails/storage" + + +# Bridge fingerprinted assets, like JS and CSS, between versions to avoid +# hitting 404 on in-flight requests. Combines all files from new and old +# version inside the asset_path. +asset_path: /rails/public/assets + +# Configure the image builder. +builder: + arch: amd64 + + # # Build image via remote server (useful for faster amd64 builds on arm64 computers) + # remote: ssh://docker@docker-builder-server + # + # # Pass arguments and secrets to the Docker build process + # args: + # RUBY_VERSION: 3.2.4 + # secrets: + # - GITHUB_TOKEN + # - RAILS_MASTER_KEY + +# Use a different ssh user than root +# ssh: +# user: app + +# Use accessory services (secrets come from .kamal/secrets). +# accessories: +# db: +# image: mysql:8.0 +# host: 192.168.0.2 +# # Change to 3306 to expose port to the world instead of just local network. +# port: "127.0.0.1:3306:3306" +# env: +# clear: +# MYSQL_ROOT_HOST: '%' +# secret: +# - MYSQL_ROOT_PASSWORD +# files: +# - config/mysql/production.cnf:/etc/mysql/my.cnf +# - db/production.sql:/docker-entrypoint-initdb.d/setup.sql +# directories: +# - data:/var/lib/mysql +# redis: +# image: redis:7.0 +# host: 192.168.0.2 +# port: 6379 +# directories: +# - data:/data diff --git a/config/environments/development.rb b/config/environments/development.rb index 3beb0d0..ab644b2 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -3,9 +3,7 @@ require "active_support/core_ext/integer/time" Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. - # In the development environment your application's code is reloaded any time - # it changes. This slows down response time but is perfect for development - # since you don't have to restart the web server when you make code changes. + # Make code changes take effect immediately without server restart. config.enable_reloading = true # Do not eager load code on boot. @@ -17,20 +15,19 @@ Rails.application.configure do # Enable server timing. config.server_timing = true - # Enable/disable caching. By default caching is disabled. - # Run rails dev:cache to toggle caching. + # Enable/disable Action Controller caching. By default Action Controller caching is disabled. + # Run rails dev:cache to toggle Action Controller caching. if Rails.root.join("tmp/caching-dev.txt").exist? config.action_controller.perform_caching = true config.action_controller.enable_fragment_cache_logging = true - - config.cache_store = :memory_store - config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{2.days.to_i}" } + config.public_file_server.headers = { "cache-control" => "public, max-age=#{2.days.to_i}" } else config.action_controller.perform_caching = false - - config.cache_store = :null_store end + # Change to :null_store to avoid any caching. + config.cache_store = :memory_store + # Store uploaded files on the local file system (see config/storage.yml for options). config.active_storage.service = :local @@ -44,34 +41,29 @@ Rails.application.configure do config.action_mailer.default_url_options = { host: "screenshots.debian.net", protocol: 'https' + } - # Disable caching for Action Mailer templates even if Action Controller - # caching is enabled. + # Make template changes take effect immediately. config.action_mailer.perform_caching = false + # Set localhost to be used by links generated in mailer templates. config.action_mailer.default_url_options = { host: "localhost", port: 3000 } # Print deprecation notices to the Rails logger. config.active_support.deprecation = :log - # Raise exceptions for disallowed deprecations. - config.active_support.disallowed_deprecation = :raise - - # Tell Active Support which deprecation messages to disallow. - config.active_support.disallowed_deprecation_warnings = [] - # Raise an error on page load if there are pending migrations. config.active_record.migration_error = :page_load # Highlight code that triggered database queries in logs. config.active_record.verbose_query_logs = true + # Append comments with runtime information tags to SQL queries in logs. + config.active_record.query_log_tags_enabled = true + # Highlight code that enqueued background job in logs. config.active_job.verbose_enqueue_logs = true - # Suppress logger output for asset requests. - config.assets.quiet = true - # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true @@ -105,4 +97,8 @@ Rails.application.configure do # Raise error when a before_action's only/except options reference missing actions. config.action_controller.raise_on_missing_callback_actions = true + + # Apply autocorrection by RuboCop to files generated by `bin/rails generate`. + # config.generators.apply_rubocop_autocorrect_after_generate! end + diff --git a/config/environments/production.rb b/config/environments/production.rb index ae10604..0cfc950 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -6,47 +6,26 @@ Rails.application.configure do # Code is not reloaded between requests. config.enable_reloading = false - # Eager load code on boot. This eager loads most of Rails and - # your application in memory, allowing both threaded web servers - # and those relying on copy on write to perform better. - # Rake tasks automatically ignore this option for performance. + # Eager load code on boot for better performance and memory savings (ignored by Rake tasks). config.eager_load = true - # Full error reports are disabled and caching is turned on. + # Full error reports are disabled. config.consider_all_requests_local = false + + # Turn on fragment caching in view templates. config.action_controller.perform_caching = true - # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment - # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files). - # config.require_master_key = true - - # Disable serving static files from `public/`, relying on NGINX/Apache to do so instead. - # config.public_file_server.enabled = false - - # Compress CSS using a preprocessor. - # config.assets.css_compressor = :sass - - # Do not fall back to assets pipeline if a precompiled asset is missed. - config.assets.compile = false + # Cache assets for far-future expiry since they are all digest stamped. + config.public_file_server.headers = { "cache-control" => "public, max-age=#{1.year.to_i}" } # Enable serving of images, stylesheets, and JavaScripts from an asset server. # config.asset_host = "http://assets.example.com" - # Specifies the header that your server uses for sending files. - # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache - # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX - # Store uploaded files on the local file system (see config/storage.yml for options). config.active_storage.service = :local - # Mount Action Cable outside main process or domain. - # config.action_cable.mount_path = nil - # config.action_cable.url = "wss://example.com/cable" - # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ] - # Assume all access to the app is happening through a SSL-terminating reverse proxy. - # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies. - # config.assume_ssl = true + config.assume_ssl = true # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. config.force_ssl = true @@ -54,30 +33,25 @@ Rails.application.configure do # Skip http-to-https redirect for the default health check endpoint. # config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } } - # Log to STDOUT by default - config.logger = ActiveSupport::Logger.new(STDOUT) - .tap { |logger| logger.formatter = ::Logger::Formatter.new } - .then { |logger| ActiveSupport::TaggedLogging.new(logger) } - - # Prepend all log lines with the following tags. + # Log to STDOUT with the current request id as a default log tag. config.log_tags = [ :request_id ] + config.logger = ActiveSupport::TaggedLogging.logger(STDOUT) - # "info" includes generic and useful information about system operation, but avoids logging too much - # information to avoid inadvertent exposure of personally identifiable information (PII). If you - # want to log everything, set the level to "debug". + # Change to "debug" to log everything (including potentially personally-identifiable information!) config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info") - # Use a different cache store in production. - # config.cache_store = :mem_cache_store + # Prevent health checks from clogging up the logs. + config.silence_healthcheck_path = "/up" - # Use a real queuing backend for Active Job (and separate queues per environment). - # config.active_job.queue_adapter = :resque - # config.active_job.queue_name_prefix = "debshots_production" + # Don't log any deprecations. + config.active_support.report_deprecations = false - # Disable caching for Action Mailer templates even if Action Controller - # caching is enabled. - config.action_mailer.perform_caching = false + # Replace the default in-process memory cache store with a durable alternative. + config.cache_store = :solid_cache_store + # Replace the default in-process and non-durable queuing backend for Active Job. + config.active_job.queue_adapter = :solid_queue + config.solid_queue.connects_to = { database: { writing: :queue } } config.action_mailer.smtp_settings = { # TODO: make configurable through ENV variables address: 'dokku2.workaround.org', @@ -93,13 +67,22 @@ Rails.application.configure do # Set this to true and configure the email server for immediate delivery to raise delivery errors. # config.action_mailer.raise_delivery_errors = false + # Set host to be used by links generated in mailer templates. + config.action_mailer.default_url_options = { host: "example.com" } + + # Specify outgoing SMTP server. Remember to add smtp/* credentials via rails credentials:edit. + # config.action_mailer.smtp_settings = { + # user_name: Rails.application.credentials.dig(:smtp, :user_name), + # password: Rails.application.credentials.dig(:smtp, :password), + # address: "smtp.example.com", + # port: 587, + # authentication: :plain + # } + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation cannot be found). config.i18n.fallbacks = true - # Don't log any deprecations. - config.active_support.report_deprecations = false - # Do not dump schema after migrations. config.active_record.dump_schema_after_migration = false @@ -131,6 +114,7 @@ Rails.application.configure do # "example.com", # Allow requests from example.com # /.*\.example\.com/ # Allow requests from subdomains like `www.example.com` # ] + # # Skip DNS rebinding protection for the default health check endpoint. # config.host_authorization = { exclude: ->(request) { request.path == "/up" } } end diff --git a/config/environments/test.rb b/config/environments/test.rb index 7dc7222..ac74cce 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -1,5 +1,3 @@ -require "active_support/core_ext/integer/time" - # The test environment is used exclusively to run your application's # test suite. You never need to work with it otherwise. Remember that # your test database is "scratch space" for the test suite and is wiped @@ -17,12 +15,11 @@ Rails.application.configure do # loading is working properly before deploying your code. config.eager_load = ENV["CI"].present? - # Configure public file server for tests with Cache-Control for performance. - config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{1.hour.to_i}" } + # Configure public file server for tests with cache-control for performance. + config.public_file_server.headers = { "cache-control" => "public, max-age=3600" } - # Show full error reports and disable caching. + # Show full error reports. config.consider_all_requests_local = true - config.action_controller.perform_caching = false config.cache_store = :null_store # Render exception templates for rescuable exceptions and raise for other exceptions. @@ -34,28 +31,17 @@ Rails.application.configure do # Store uploaded files on the local file system in a temporary directory. config.active_storage.service = :test - # Disable caching for Action Mailer templates even if Action Controller - # caching is enabled. - config.action_mailer.perform_caching = false - # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the # ActionMailer::Base.deliveries array. config.action_mailer.delivery_method = :test - # Unlike controllers, the mailer instance doesn't have any context about the - # incoming request so you'll need to provide the :host parameter yourself. - config.action_mailer.default_url_options = { host: "www.example.com" } + # Set host to be used by links generated in mailer templates. + config.action_mailer.default_url_options = { host: "example.com" } # Print deprecation notices to the stderr. config.active_support.deprecation = :stderr - # Raise exceptions for disallowed deprecations. - config.active_support.disallowed_deprecation = :raise - - # Tell Active Support which deprecation messages to disallow. - config.active_support.disallowed_deprecation_warnings = [] - # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index bd5bcd2..4873244 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -5,8 +5,3 @@ Rails.application.config.assets.version = "1.0" # Add additional assets to the asset load path. # Rails.application.config.assets.paths << Emoji.images_path - -# Precompile additional assets. -# application.js, application.css, and all non-JS/CSS in the app/assets -# folder are already added. -# Rails.application.config.assets.precompile += %w[ admin.js admin.css ] diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb index c010b83..c0b717f 100644 --- a/config/initializers/filter_parameter_logging.rb +++ b/config/initializers/filter_parameter_logging.rb @@ -4,5 +4,5 @@ # Use this to limit dissemination of sensitive information. # See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors. Rails.application.config.filter_parameters += [ - :passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn + :passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn, :cvv, :cvc ] diff --git a/config/initializers/new_framework_defaults_8_0.rb b/config/initializers/new_framework_defaults_8_0.rb new file mode 100644 index 0000000..92efa95 --- /dev/null +++ b/config/initializers/new_framework_defaults_8_0.rb @@ -0,0 +1,30 @@ +# Be sure to restart your server when you modify this file. +# +# This file eases your Rails 8.0 framework defaults upgrade. +# +# Uncomment each configuration one by one to switch to the new default. +# Once your application is ready to run with all new defaults, you can remove +# this file and set the `config.load_defaults` to `8.0`. +# +# Read the Guide for Upgrading Ruby on Rails for more info on each option. +# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html + +### +# Specifies whether `to_time` methods preserve the UTC offset of their receivers or preserves the timezone. +# If set to `:zone`, `to_time` methods will use the timezone of their receivers. +# If set to `:offset`, `to_time` methods will use the UTC offset. +# If `false`, `to_time` methods will convert to the local system UTC offset instead. +#++ +# Rails.application.config.active_support.to_time_preserves_timezone = :zone + +### +# When both `If-Modified-Since` and `If-None-Match` are provided by the client +# only consider `If-None-Match` as specified by RFC 7232 Section 6. +# If set to `false` both conditions need to be satisfied. +#++ +# Rails.application.config.action_dispatch.strict_freshness = true + +### +# Set `Regexp.timeout` to `1`s by default to improve security over Regexp Denial-of-Service attacks. +#++ +# Regexp.timeout = 1 diff --git a/config/locales/en.yml b/config/locales/en.yml index cf9b342..6c349ae 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,14 +1,14 @@ -# Files in the config/locales directory are used for internationalization -# and are automatically loaded by Rails. If you want to use locales other -# than English, add the necessary files in this directory. +# Files in the config/locales directory are used for internationalization and +# are automatically loaded by Rails. If you want to use locales other than +# English, add the necessary files in this directory. # # To use the locales, use `I18n.t`: # -# I18n.t 'hello' +# I18n.t "hello" # # In views, this is aliased to just `t`: # -# <%= t('hello') %> +# <%= t("hello") %> # # To use a different locale, set it with `I18n.locale`: # @@ -16,18 +16,16 @@ # # This would use the information in config/locales/es.yml. # -# The following keys must be escaped otherwise they will not be retrieved by -# the default I18n backend: +# To learn more about the API, please read the Rails Internationalization guide +# at https://guides.rubyonrails.org/i18n.html. # -# true, false, on, off, yes, no +# Be aware that YAML interprets the following case-insensitive strings as +# booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings +# must be quoted to be interpreted as strings. For example: # -# Instead, surround them with single quotes. -# -# en: -# 'true': 'foo' -# -# To learn more, please read the Rails Internationalization guide -# available at https://guides.rubyonrails.org/i18n.html. +# en: +# "yes": yup +# enabled: "ON" en: hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb index 03c166f..a248513 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,13 +1,17 @@ # This configuration file will be evaluated by Puma. The top-level methods that # are invoked here are part of Puma's configuration DSL. For more information # about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html. - +# # Puma starts a configurable number of processes (workers) and each process # serves each request in a thread from an internal thread pool. # +# You can control the number of workers using ENV["WEB_CONCURRENCY"]. You +# should only set this value when you want to run 2 or more workers. The +# default is already 1. +# # The ideal number of threads per worker depends both on how much time the # application spends waiting for IO operations and on how much you wish to -# to prioritize throughput over latency. +# prioritize throughput over latency. # # As a rule of thumb, increasing the number of threads will increase how much # traffic a given process can handle (throughput), but due to CRuby's @@ -29,6 +33,9 @@ port ENV.fetch("PORT", 3000) # Allow puma to be restarted by `bin/rails restart` command. plugin :tmp_restart +# Run the Solid Queue supervisor inside of Puma for single-server deployments +plugin :solid_queue if ENV["SOLID_QUEUE_IN_PUMA"] + # Specify the PID file. Defaults to tmp/pids/server.pid in development. # In other environments, only set the PID file if requested. pidfile ENV["PIDFILE"] if ENV["PIDFILE"] diff --git a/config/queue.yml b/config/queue.yml new file mode 100644 index 0000000..9eace59 --- /dev/null +++ b/config/queue.yml @@ -0,0 +1,18 @@ +default: &default + dispatchers: + - polling_interval: 1 + batch_size: 500 + workers: + - queues: "*" + threads: 3 + processes: <%= ENV.fetch("JOB_CONCURRENCY", 1) %> + polling_interval: 0.1 + +development: + <<: *default + +test: + <<: *default + +production: + <<: *default diff --git a/config/recurring.yml b/config/recurring.yml new file mode 100644 index 0000000..d045b19 --- /dev/null +++ b/config/recurring.yml @@ -0,0 +1,10 @@ +# production: +# periodic_cleanup: +# class: CleanSoftDeletedRecordsJob +# queue: background +# args: [ 1000, { batch_size: 500 } ] +# schedule: every hour +# periodic_command: +# command: "SoftDeletedRecord.due.delete_all" +# priority: 2 +# schedule: at 5am every day diff --git a/config/routes.rb b/config/routes.rb index c75403d..78b5b99 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,8 +1,16 @@ Rails.application.routes.draw do + # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html + + # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. + # Can be used by load balancers and uptime monitors to verify that the app is live. + get "up" => "rails/health#show", as: :rails_health_check Healthcheck.routes(self) get 'admin/status' + # Render dynamic PWA files from app/views/pwa/* (remember to link manifest in application.html.erb) + # get "manifest" => "rails/pwa#manifest", as: :pwa_manifest + # get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker get 'admin/screenshots' get 'admin/integration' diff --git a/config/storage.yml b/config/storage.yml index d32f76e..4942ab6 100644 --- a/config/storage.yml +++ b/config/storage.yml @@ -6,27 +6,27 @@ local: service: Disk root: <%= Rails.root.join("storage") %> -# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) # amazon: # service: S3 # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> # region: us-east-1 -# bucket: your_own_bucket +# bucket: your_own_bucket-<%= Rails.env %> # Remember not to checkin your GCS keyfile to a repository # google: # service: GCS # project: your_project # credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> -# bucket: your_own_bucket +# bucket: your_own_bucket-<%= Rails.env %> -# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) # microsoft: # service: AzureStorage # storage_account_name: your_account_name # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> -# container: your_container_name +# container: your_container_name-<%= Rails.env %> # mirror: # service: Mirror diff --git a/db/cable_schema.rb b/db/cable_schema.rb new file mode 100644 index 0000000..2366660 --- /dev/null +++ b/db/cable_schema.rb @@ -0,0 +1,11 @@ +ActiveRecord::Schema[7.1].define(version: 1) do + create_table "solid_cable_messages", force: :cascade do |t| + t.binary "channel", limit: 1024, null: false + t.binary "payload", limit: 536870912, null: false + t.datetime "created_at", null: false + t.integer "channel_hash", limit: 8, null: false + t.index ["channel"], name: "index_solid_cable_messages_on_channel" + t.index ["channel_hash"], name: "index_solid_cable_messages_on_channel_hash" + t.index ["created_at"], name: "index_solid_cable_messages_on_created_at" + end +end diff --git a/db/cache_schema.rb b/db/cache_schema.rb new file mode 100644 index 0000000..6005a29 --- /dev/null +++ b/db/cache_schema.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +ActiveRecord::Schema[7.2].define(version: 1) do + create_table "solid_cache_entries", force: :cascade do |t| + t.binary "key", limit: 1024, null: false + t.binary "value", limit: 536870912, null: false + t.datetime "created_at", null: false + t.integer "key_hash", limit: 8, null: false + t.integer "byte_size", limit: 4, null: false + t.index ["byte_size"], name: "index_solid_cache_entries_on_byte_size" + t.index ["key_hash", "byte_size"], name: "index_solid_cache_entries_on_key_hash_and_byte_size" + t.index ["key_hash"], name: "index_solid_cache_entries_on_key_hash", unique: true + end +end diff --git a/db/development.sqlite3 b/db/development.sqlite3 new file mode 100644 index 0000000..e69de29 diff --git a/db/queue_schema.rb b/db/queue_schema.rb new file mode 100644 index 0000000..85194b6 --- /dev/null +++ b/db/queue_schema.rb @@ -0,0 +1,129 @@ +ActiveRecord::Schema[7.1].define(version: 1) do + create_table "solid_queue_blocked_executions", force: :cascade do |t| + t.bigint "job_id", null: false + t.string "queue_name", null: false + t.integer "priority", default: 0, null: false + t.string "concurrency_key", null: false + t.datetime "expires_at", null: false + t.datetime "created_at", null: false + t.index [ "concurrency_key", "priority", "job_id" ], name: "index_solid_queue_blocked_executions_for_release" + t.index [ "expires_at", "concurrency_key" ], name: "index_solid_queue_blocked_executions_for_maintenance" + t.index [ "job_id" ], name: "index_solid_queue_blocked_executions_on_job_id", unique: true + end + + create_table "solid_queue_claimed_executions", force: :cascade do |t| + t.bigint "job_id", null: false + t.bigint "process_id" + t.datetime "created_at", null: false + t.index [ "job_id" ], name: "index_solid_queue_claimed_executions_on_job_id", unique: true + t.index [ "process_id", "job_id" ], name: "index_solid_queue_claimed_executions_on_process_id_and_job_id" + end + + create_table "solid_queue_failed_executions", force: :cascade do |t| + t.bigint "job_id", null: false + t.text "error" + t.datetime "created_at", null: false + t.index [ "job_id" ], name: "index_solid_queue_failed_executions_on_job_id", unique: true + end + + create_table "solid_queue_jobs", force: :cascade do |t| + t.string "queue_name", null: false + t.string "class_name", null: false + t.text "arguments" + t.integer "priority", default: 0, null: false + t.string "active_job_id" + t.datetime "scheduled_at" + t.datetime "finished_at" + t.string "concurrency_key" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index [ "active_job_id" ], name: "index_solid_queue_jobs_on_active_job_id" + t.index [ "class_name" ], name: "index_solid_queue_jobs_on_class_name" + t.index [ "finished_at" ], name: "index_solid_queue_jobs_on_finished_at" + t.index [ "queue_name", "finished_at" ], name: "index_solid_queue_jobs_for_filtering" + t.index [ "scheduled_at", "finished_at" ], name: "index_solid_queue_jobs_for_alerting" + end + + create_table "solid_queue_pauses", force: :cascade do |t| + t.string "queue_name", null: false + t.datetime "created_at", null: false + t.index [ "queue_name" ], name: "index_solid_queue_pauses_on_queue_name", unique: true + end + + create_table "solid_queue_processes", force: :cascade do |t| + t.string "kind", null: false + t.datetime "last_heartbeat_at", null: false + t.bigint "supervisor_id" + t.integer "pid", null: false + t.string "hostname" + t.text "metadata" + t.datetime "created_at", null: false + t.string "name", null: false + t.index [ "last_heartbeat_at" ], name: "index_solid_queue_processes_on_last_heartbeat_at" + t.index [ "name", "supervisor_id" ], name: "index_solid_queue_processes_on_name_and_supervisor_id", unique: true + t.index [ "supervisor_id" ], name: "index_solid_queue_processes_on_supervisor_id" + end + + create_table "solid_queue_ready_executions", force: :cascade do |t| + t.bigint "job_id", null: false + t.string "queue_name", null: false + t.integer "priority", default: 0, null: false + t.datetime "created_at", null: false + t.index [ "job_id" ], name: "index_solid_queue_ready_executions_on_job_id", unique: true + t.index [ "priority", "job_id" ], name: "index_solid_queue_poll_all" + t.index [ "queue_name", "priority", "job_id" ], name: "index_solid_queue_poll_by_queue" + end + + create_table "solid_queue_recurring_executions", force: :cascade do |t| + t.bigint "job_id", null: false + t.string "task_key", null: false + t.datetime "run_at", null: false + t.datetime "created_at", null: false + t.index [ "job_id" ], name: "index_solid_queue_recurring_executions_on_job_id", unique: true + t.index [ "task_key", "run_at" ], name: "index_solid_queue_recurring_executions_on_task_key_and_run_at", unique: true + end + + create_table "solid_queue_recurring_tasks", force: :cascade do |t| + t.string "key", null: false + t.string "schedule", null: false + t.string "command", limit: 2048 + t.string "class_name" + t.text "arguments" + t.string "queue_name" + t.integer "priority", default: 0 + t.boolean "static", default: true, null: false + t.text "description" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index [ "key" ], name: "index_solid_queue_recurring_tasks_on_key", unique: true + t.index [ "static" ], name: "index_solid_queue_recurring_tasks_on_static" + end + + create_table "solid_queue_scheduled_executions", force: :cascade do |t| + t.bigint "job_id", null: false + t.string "queue_name", null: false + t.integer "priority", default: 0, null: false + t.datetime "scheduled_at", null: false + t.datetime "created_at", null: false + t.index [ "job_id" ], name: "index_solid_queue_scheduled_executions_on_job_id", unique: true + t.index [ "scheduled_at", "priority", "job_id" ], name: "index_solid_queue_dispatch_all" + end + + create_table "solid_queue_semaphores", force: :cascade do |t| + t.string "key", null: false + t.integer "value", default: 1, null: false + t.datetime "expires_at", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index [ "expires_at" ], name: "index_solid_queue_semaphores_on_expires_at" + t.index [ "key", "value" ], name: "index_solid_queue_semaphores_on_key_and_value" + t.index [ "key" ], name: "index_solid_queue_semaphores_on_key", unique: true + end + + add_foreign_key "solid_queue_blocked_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade + add_foreign_key "solid_queue_claimed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade + add_foreign_key "solid_queue_failed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade + add_foreign_key "solid_queue_ready_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade + add_foreign_key "solid_queue_recurring_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade + add_foreign_key "solid_queue_scheduled_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade +end diff --git a/db/seeds.rb b/db/seeds.rb index 4edb1e8..4fbd6ed 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,7 +1,9 @@ -# This file should contain all the record creation needed to seed the database with its default values. -# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). +# This file should ensure the existence of records required to run the application in every environment (production, +# development, test). The code here should be idempotent so that it can be executed at any point in every environment. +# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). # -# Examples: +# Example: # -# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) -# Mayor.create(name: 'Emanuel', city: cities.first) +# ["Action", "Comedy", "Drama", "Horror"].each do |genre_name| +# MovieGenre.find_or_create_by!(name: genre_name) +# end diff --git a/dns b/dns new file mode 100644 index 0000000..645a914 --- /dev/null +++ b/dns @@ -0,0 +1,2 @@ +screenshots in cname dokku2.workaround.org. +screenshots-beta in cname dokku2.workaround.org. diff --git a/package.json b/package.json new file mode 100644 index 0000000..a564e7c --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "app", + "private": true, + "devDependencies": { + "esbuild": "^0.25.1", + "webpack": "^5.98.0", + "webpack-cli": "^6.0.1" + }, + "scripts": { + "build": "webpack --config webpack.config.js", + "build:css": "sass ./app/assets/stylesheets/application.sass.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules" + }, + "dependencies": { + "@hotwired/stimulus": "^3.2.2", + "@hotwired/turbo-rails": "^8.0.13", + "autoprefixer": "^10.4.21", + "foundation-sites": "^6.9.0", + "jquery": "^3.7.1", + "motion-ui": "^2.0.8", + "postcss": "^8.5.3", + "postcss-cli": "^11.0.1", + "postcss-import": "^16.1.0", + "postcss-nesting": "^13.0.1", + "sass": "^1.85.1" + } +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..bc2a02e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +module.exports = { + plugins: [ + require('postcss-import'), + require('postcss-nesting'), + require('autoprefixer'), + ], +} diff --git a/public/400.html b/public/400.html new file mode 100644 index 0000000..282dbc8 --- /dev/null +++ b/public/400.html @@ -0,0 +1,114 @@ + + + + + + + The server cannot process the request due to a client error (400 Bad Request) + + + + + + + + + + + + + +
+
+ +
+
+

The server cannot process the request due to a client error. Please check the request and try again. If you’re the application owner check the logs for more information.

+
+
+ + + + diff --git a/public/404.html b/public/404.html index e77b905..c0670bc 100644 --- a/public/404.html +++ b/public/404.html @@ -1,64 +1,114 @@ - - - - The page you were looking for doesn't exist (404) - - - + + + + + + + + + + + + +
+
+ +
+
+

The page you were looking for doesn’t exist. You may have mistyped the address or the page may have moved. If you’re the application owner check the logs for more information.

+
+
+ + - - -
-

The page you were looking for doesn't exist.

-

You may have mistyped the address or the page may have moved.

-
- diff --git a/public/406-unsupported-browser.html b/public/406-unsupported-browser.html index 7cf1e16..9532a9c 100644 --- a/public/406-unsupported-browser.html +++ b/public/406-unsupported-browser.html @@ -1,66 +1,114 @@ - - - - Your browser is not supported (406) - - - + + + + + + + + + + + + +
+
+ +
+
+

Your browser is not supported.
Please upgrade your browser to continue.

+
+
+ + - - -
-
-

Your browser is not supported.

-

Please upgrade your browser to continue.

-
-
- diff --git a/public/422.html b/public/422.html index c08eac0..8bcf060 100644 --- a/public/422.html +++ b/public/422.html @@ -1,67 +1,114 @@ - - - - The change you wanted was rejected (422) - - - + + + + + + + + + + + + +
+
+ +
+
+

The change you wanted was rejected. Maybe you tried to change something you didn’t have access to. If you’re the application owner check the logs for more information.

+
+
+ + - - -
-
-

The change you wanted was rejected.

-

Maybe you tried to change something you didn't have access to.

-
-

If you are the application owner check the logs for more information.

-
- diff --git a/public/500.html b/public/500.html index 78a030a..d77718c 100644 --- a/public/500.html +++ b/public/500.html @@ -1,66 +1,114 @@ - - - - We're sorry, but something went wrong (500) - - - + + + + + + + + + + + + +
+
+ +
+
+

We’re sorry, but something went wrong.
If you’re the application owner check the logs for more information.

+
+
+ + - - -
-
-

We're sorry, but something went wrong.

-
-

If you are the application owner check the logs for more information.

-
- diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000..c4c9dbf Binary files /dev/null and b/public/icon.png differ diff --git a/public/icon.svg b/public/icon.svg new file mode 100644 index 0000000..04b34bf --- /dev/null +++ b/public/icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/robots.txt b/public/robots.txt index 9c8d942..c19f78a 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,4 +1 @@ -User-agent: * -Disallow: /json -Disallow: /upload -Disallow: /shrine +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/sql b/sql new file mode 100644 index 0000000..e1dafb6 Binary files /dev/null and b/sql differ diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..557a746 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,21 @@ +const path = require("path") +const webpack = require("webpack") + +module.exports = { + mode: "production", + devtool: "source-map", + entry: { + application: "./app/javascript/application.js" + }, + output: { + filename: "[name].js", + sourceMapFilename: "[file].map", + chunkFormat: "module", + path: path.resolve(__dirname, "app/assets/builds"), + }, + plugins: [ + new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1 + }) + ] +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..1ccf24f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1721 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bufbuild/protobuf@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.2.3.tgz#9cd136f6b687e63e9b517b3a54211ece942897ee" + integrity sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg== + +"@csstools/selector-resolve-nested@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz#704a9b637975680e025e069a4c58b3beb3e2752a" + integrity sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ== + +"@csstools/selector-specificity@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz#037817b574262134cabd68fc4ec1a454f168407b" + integrity sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw== + +"@discoveryjs/json-ext@^0.6.1": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz#f13c7c205915eb91ae54c557f5e92bddd8be0e83" + integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== + +"@esbuild/aix-ppc64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" + integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== + +"@esbuild/android-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" + integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== + +"@esbuild/android-arm@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" + integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== + +"@esbuild/android-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" + integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== + +"@esbuild/darwin-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" + integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== + +"@esbuild/darwin-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" + integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== + +"@esbuild/freebsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" + integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== + +"@esbuild/freebsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" + integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== + +"@esbuild/linux-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" + integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== + +"@esbuild/linux-arm@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" + integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== + +"@esbuild/linux-ia32@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" + integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== + +"@esbuild/linux-loong64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" + integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== + +"@esbuild/linux-mips64el@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" + integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== + +"@esbuild/linux-ppc64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" + integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== + +"@esbuild/linux-riscv64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" + integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== + +"@esbuild/linux-s390x@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" + integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== + +"@esbuild/linux-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz#f1c796b78fff5ce393658313e8c58613198d9954" + integrity sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA== + +"@esbuild/netbsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" + integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== + +"@esbuild/netbsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" + integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== + +"@esbuild/openbsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" + integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== + +"@esbuild/openbsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" + integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== + +"@esbuild/sunos-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" + integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== + +"@esbuild/win32-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" + integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== + +"@esbuild/win32-ia32@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" + integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== + +"@esbuild/win32-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" + integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== + +"@hotwired/stimulus@^3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" + integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== + +"@hotwired/turbo-rails@^8.0.13": + version "8.0.13" + resolved "https://registry.yarnpkg.com/@hotwired/turbo-rails/-/turbo-rails-8.0.13.tgz#7016651f7144053992ce5096bb95495f8faa5854" + integrity sha512-6SCnnOSzhtaJ0pNkAjncZxjtKsK3sP/vPEkCnTXBXSHkr+vF7DTZkOlwjhms1DbbQNTsjCsBoKvzSMbh/omSCQ== + dependencies: + "@hotwired/turbo" "^8.0.13" + "@rails/actioncable" "^7.0" + +"@hotwired/turbo@^8.0.13": + version "8.0.13" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.13.tgz#ab35fda9d358432c8a872a833844b38cccb8c25b" + integrity sha512-M7qXUqcGab6G5PKOiwhgbByTtrPgKPFCTMNQ52QhzUEXEqmp0/ApEguUesh/FPiUjrmFec+3lq98KsWnYY2C7g== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@parcel/watcher-android-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" + integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher-darwin-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" + integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== + +"@parcel/watcher-freebsd-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" + integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== + +"@parcel/watcher-linux-arm-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" + integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== + +"@parcel/watcher-linux-arm-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" + integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== + +"@parcel/watcher-linux-arm64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" + integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== + +"@parcel/watcher-linux-arm64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" + integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== + +"@parcel/watcher-linux-x64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" + integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== + +"@parcel/watcher-linux-x64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" + integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== + +"@parcel/watcher-win32-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" + integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== + +"@parcel/watcher-win32-ia32@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" + integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== + +"@parcel/watcher-win32-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" + integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== + +"@parcel/watcher@^2.4.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" + integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.1" + "@parcel/watcher-darwin-arm64" "2.5.1" + "@parcel/watcher-darwin-x64" "2.5.1" + "@parcel/watcher-freebsd-x64" "2.5.1" + "@parcel/watcher-linux-arm-glibc" "2.5.1" + "@parcel/watcher-linux-arm-musl" "2.5.1" + "@parcel/watcher-linux-arm64-glibc" "2.5.1" + "@parcel/watcher-linux-arm64-musl" "2.5.1" + "@parcel/watcher-linux-x64-glibc" "2.5.1" + "@parcel/watcher-linux-x64-musl" "2.5.1" + "@parcel/watcher-win32-arm64" "2.5.1" + "@parcel/watcher-win32-ia32" "2.5.1" + "@parcel/watcher-win32-x64" "2.5.1" + +"@rails/actioncable@^7.0": + version "7.2.201" + resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.2.201.tgz#bfb3da01b3e2462f5a18f372c52dedd7de76037f" + integrity sha512-wsTdWoZ5EfG5k3t7ORdyQF0ZmDEgN4aVPCanHAiNEwCROqibSZMXXmCbH7IDJUVri4FOeAVwwbPINI7HVHPKBw== + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/json-schema@*", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@*": + version "22.13.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" + integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== + dependencies: + undici-types "~6.20.0" + +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-3.0.1.tgz#76ac285b9658fa642ce238c276264589aa2b6b57" + integrity sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA== + +"@webpack-cli/info@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-3.0.1.tgz#3cff37fabb7d4ecaab6a8a4757d3826cf5888c63" + integrity sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ== + +"@webpack-cli/serve@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-3.0.1.tgz#bd8b1f824d57e30faa19eb78e4c0951056f72f00" + integrity sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +acorn@^8.14.0, acorn@^8.8.2: + version "8.14.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" + integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +autoprefixer@^10.4.21: + version "10.4.21" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" + integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== + dependencies: + browserslist "^4.24.4" + caniuse-lite "^1.0.30001702" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0, browserslist@^4.24.4: + version "4.24.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + +buffer-builder@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/buffer-builder/-/buffer-builder-0.2.0.tgz#3322cd307d8296dab1f604618593b261a3fade8f" + integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001702: + version "1.0.30001704" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001704.tgz#6644fe909d924ac3a7125e8a0ab6af95b1f32990" + integrity sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew== + +chokidar@^3.3.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +colorjs.io@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef" + integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw== + +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +dependency-graph@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-1.0.0.tgz#bb5e85aec1310bc13b22dbd76e3196c4ee4c10d2" + integrity sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +electron-to-chromium@^1.5.73: + version "1.5.119" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.119.tgz#4e105e419209b33e1c44b4d1b5fc6fb27fac0209" + integrity sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enhanced-resolve@^5.17.1: + version "5.18.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +envinfo@^7.14.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" + integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== + +es-module-lexer@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" + integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== + +esbuild@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.1.tgz#a16b8d070b6ad4871935277bda6ccfe852e3fa2f" + integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.1" + "@esbuild/android-arm" "0.25.1" + "@esbuild/android-arm64" "0.25.1" + "@esbuild/android-x64" "0.25.1" + "@esbuild/darwin-arm64" "0.25.1" + "@esbuild/darwin-x64" "0.25.1" + "@esbuild/freebsd-arm64" "0.25.1" + "@esbuild/freebsd-x64" "0.25.1" + "@esbuild/linux-arm" "0.25.1" + "@esbuild/linux-arm64" "0.25.1" + "@esbuild/linux-ia32" "0.25.1" + "@esbuild/linux-loong64" "0.25.1" + "@esbuild/linux-mips64el" "0.25.1" + "@esbuild/linux-ppc64" "0.25.1" + "@esbuild/linux-riscv64" "0.25.1" + "@esbuild/linux-s390x" "0.25.1" + "@esbuild/linux-x64" "0.25.1" + "@esbuild/netbsd-arm64" "0.25.1" + "@esbuild/netbsd-x64" "0.25.1" + "@esbuild/openbsd-arm64" "0.25.1" + "@esbuild/openbsd-x64" "0.25.1" + "@esbuild/sunos-x64" "0.25.1" + "@esbuild/win32-arm64" "0.25.1" + "@esbuild/win32-ia32" "0.25.1" + "@esbuild/win32-x64" "0.25.1" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fdir@^6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" + integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +foundation-sites@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/foundation-sites/-/foundation-sites-6.9.0.tgz#ef4d51fa1c669cbdf61d080d8a328686ff85992a" + integrity sha512-bZpjL6lxuGViy1UU/NuMddyAAJP0YgJYKNh+8ZtDWhQRtiY1yQISxHmgF4V8EFx7DWHDTdZC1fwFysnMAYkdQg== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fs-extra@^11.0.0: + version "11.3.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" + integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +immutable@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1" + integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw== + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jquery@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +lilconfig@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +motion-ui@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/motion-ui/-/motion-ui-2.0.8.tgz#5d643fd6478c4e3f2e4a5e0fd699826cf5ffb36b" + integrity sha512-kFPFUYslkA9NcnrbErCdGlSGGKBxSTfp7FToapj8/wawPIoks88H1bpNmqRh0EzU+u7PydUp2YSmmO3Sv+ZiBQ== + dependencies: + sass-embedded "^1.79.3" + +nanoid@^3.3.8: + version "3.3.10" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.10.tgz#7bc882237698ef787d5cbba109e3b0168ba6e7b1" + integrity sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss-cli@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-11.0.1.tgz#341188ff7b26b19b206ca923ae2bd979751e7da7" + integrity sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g== + dependencies: + chokidar "^3.3.0" + dependency-graph "^1.0.0" + fs-extra "^11.0.0" + picocolors "^1.0.0" + postcss-load-config "^5.0.0" + postcss-reporter "^7.0.0" + pretty-hrtime "^1.0.3" + read-cache "^1.0.0" + slash "^5.0.0" + tinyglobby "^0.2.12" + yargs "^17.0.0" + +postcss-import@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-16.1.0.tgz#258732175518129667fe1e2e2a05b19b5654b96a" + integrity sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-load-config@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-5.1.0.tgz#4ded23410da973e05edae9d41fa99bb5c1d5477f" + integrity sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA== + dependencies: + lilconfig "^3.1.1" + yaml "^2.4.2" + +postcss-nesting@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-13.0.1.tgz#c405796d7245a3e4c267a9956cacfe9670b5d43e" + integrity sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ== + dependencies: + "@csstools/selector-resolve-nested" "^3.0.0" + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + +postcss-reporter@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.1.0.tgz#5ec476d224e2fe25a054e3c66d9b2901d4fab422" + integrity sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA== + dependencies: + picocolors "^1.0.0" + thenby "^1.3.4" + +postcss-selector-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.5.3: + version "8.5.3" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" + integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.7, resolve@^1.20.0: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rxjs@^7.4.0: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sass-embedded-android-arm64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.1.tgz#1ca9c5e06ea1a8ecf74ff7fbea671706cfe50320" + integrity sha512-27oRheqNA3SJM2hAxpVbs7mCKUwKPWmEEhyiNFpBINb5ELVLg+Ck5RsGg+SJmo130ul5YX0vinmVB5uPWc8X5w== + +sass-embedded-android-arm@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.1.tgz#f3bcd59fb05c2931aea1269496a0988f80b936af" + integrity sha512-GkcgUGMZtEF9gheuE1dxCU0ZSAifuaFXi/aX7ZXvjtdwmTl9Zc/OHR9oiUJkc8IW9UI7H8TuwlTAA8+SwgwIeQ== + +sass-embedded-android-ia32@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.1.tgz#0b48cf1b0a157c066d8d6c8f4c7cf5d36b6b229b" + integrity sha512-f3x16NyRgtXFksIaO/xXKrUhttUBv8V0XsAR2Dhdb/yz4yrDrhzw9Wh8fmw7PlQqECcQvFaoDr3XIIM6lKzasw== + +sass-embedded-android-riscv64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.1.tgz#b2024aaeb75454011bd2a3ae8ee4cac273b5e711" + integrity sha512-IP6OijpJ8Mqo7XqCe0LsuZVbAxEFVboa0kXqqR5K55LebEplsTIA2GnmRyMay3Yr/2FVGsZbCb6Wlgkw23eCiA== + +sass-embedded-android-x64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.1.tgz#c5391830cbb3c378e5177bc0e03e94a782cd1cc1" + integrity sha512-Mh7CA53wR3ADvXAYipFc/R3vV4PVOzoKwWzPxmq+7i8UZrtsVjKONxGtqWe9JG1mna0C9CRZAx0sv/BzbOJxWg== + +sass-embedded-darwin-arm64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz#79acbb6867d016896f843971bdfa0ac76e101df8" + integrity sha512-msWxzhvcP9hqGVegxVePVEfv9mVNTlUgGr6k7O7Ihji702mbtrH/lKwF4aRkkt4g1j7tv10+JtQXmTNi/pi9kA== + +sass-embedded-darwin-x64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.1.tgz#147ecf49bf2d182dbde6cef337a58a05b7a93ab1" + integrity sha512-J4UFHUiyI9Z+mwYMwz11Ky9TYr3hY1fCxeQddjNGL/+ovldtb0yAIHvoVM0BGprQDm5JqhtUk8KyJ3RMJqpaAA== + +sass-embedded-linux-arm64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.1.tgz#5c7b5c2749532996630a5512d0e1bf6d8472acd3" + integrity sha512-jGadetB03BMFG2rq3OXub/uvC/lGpbQOiLGEz3NLb2nRZWyauRhzDtvZqkr6BEhxgIWtMtz2020yD8ZJSw/r2w== + +sass-embedded-linux-arm@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.1.tgz#899cba94b73eb119f64346889e466de31b6f5d3c" + integrity sha512-X0fDh95nNSw1wfRlnkE4oscoEA5Au4nnk785s9jghPFkTBg+A+5uB6trCjf0fM22+Iw6kiP4YYmDdw3BqxAKLQ== + +sass-embedded-linux-ia32@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.1.tgz#f1ba53f034389635afe9c1059bc36a77936421b8" + integrity sha512-7HlYY90d9mitDtNi5s+S+5wYZrTVbkBH2/kf7ixrzh2BFfT0YM81UHLJRnGX93y9aOMBL6DSZAIfkt1RsV9bkQ== + +sass-embedded-linux-musl-arm64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.1.tgz#b14ce2615c7ab4626e88cba2656f91a3a748e1ce" + integrity sha512-FLkIT0p18XOkR6wryJ13LqGBDsrYev2dRk9dtiU18NCpNXruKsdBQ1ZnWHVKB3h1dA9lFyEEisC0sooKdNfeOQ== + +sass-embedded-linux-musl-arm@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.1.tgz#428e5e299a9ff4dfd20b57861d2440428b5fbdf6" + integrity sha512-5vcdEqE8QZnu6i6shZo7x2N36V7YUoFotWj2rGekII5ty7Nkaj+VtZhUEOp9tAzEOlaFuDp5CyO1kUCvweT64A== + +sass-embedded-linux-musl-ia32@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.1.tgz#070609afd99cd0f9eae72186c9f4a2d0cdf6944d" + integrity sha512-N1093T84zQJor1yyIAdYScB5eAuQarGK1tKgZ4uTnxVlgA7Xi1lXV8Eh7ox9sDqKCaWkVQ3MjqU26vYRBeRWyw== + +sass-embedded-linux-musl-riscv64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.1.tgz#0f4264be40277d7cc18149c9e0f03af09562e6f7" + integrity sha512-WRsZS/7qlfYXsa93FBpSruieuURIu7ySfFhzYfF1IbKrNAGwmbduutkHZh2ddm5/vQMvQ0Rdosgv+CslaQHMcw== + +sass-embedded-linux-musl-x64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.1.tgz#b54b5e1f646d1f0c09d9df7e0e6d4960d6ed7fa1" + integrity sha512-+OlLIilA5TnP0YEqTQ8yZtkW+bJIQYvzoGoNLUEskeyeGuOiIyn2CwL6G4JQB4xZQFaxPHb7JD3EueFkQbH0Pw== + +sass-embedded-linux-riscv64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.1.tgz#2718773307f94feb815e4e2fbb5aa73226a8d375" + integrity sha512-mKKlOwMGLN7yP1p0gB5yG/HX4fYLnpWaqstNuOOXH+fOzTaNg0+1hALg0H0CDIqypPO74M5MS9T6FAJZGdT6dQ== + +sass-embedded-linux-x64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.1.tgz#0664cc886b87818ac9d29bf4e9f299fe6c63f524" + integrity sha512-uKRTv0z8NgtHV7xSren78+yoWB79sNi7TMqI7Bxd8fcRNIgHQSA8QBdF8led2ETC004hr8h71BrY60RPO+SSvA== + +sass-embedded-win32-arm64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.1.tgz#d07b755f8408d7dde1b8308d3a57fbfcda9d909c" + integrity sha512-/GMiZXBOc6AEMBC3g25Rp+x8fq9Z6Ql7037l5rajBPhZ+DdFwtdHY0Ou3oIU6XuWUwD06U3ii4XufXVFhsP6PA== + +sass-embedded-win32-ia32@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.1.tgz#5e5f16e1a30f8df31148aaf65a772298d7037d70" + integrity sha512-L+4BWkKKBGFOKVQ2PQ5HwFfkM5FvTf1Xx2VSRvEWt9HxPXp6SPDho6zC8fqNQ3hSjoaoASEIJcSvgfdQYO0gdg== + +sass-embedded-win32-x64@1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.1.tgz#758fb96c16e77265a4b7f2474a43962d71ef5ffd" + integrity sha512-/FO0AGKWxVfCk4GKsC0yXWBpUZdySe3YAAbQQL0lL6xUd1OiUY8Kow6g4Kc1TB/+z0iuQKKTqI/acJMEYl4iTQ== + +sass-embedded@^1.79.3: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.85.1.tgz#868cdf067a3b515eb72cb0039e61e72c4c56c856" + integrity sha512-0i+3h2Df/c71afluxC1SXqyyMmJlnKWfu9ZGdzwuKRM1OftEa2XM2myt5tR36CF3PanYrMjFKtRIj8PfSf838w== + dependencies: + "@bufbuild/protobuf" "^2.0.0" + buffer-builder "^0.2.0" + colorjs.io "^0.5.0" + immutable "^5.0.2" + rxjs "^7.4.0" + supports-color "^8.1.1" + sync-child-process "^1.0.2" + varint "^6.0.0" + optionalDependencies: + sass-embedded-android-arm "1.85.1" + sass-embedded-android-arm64 "1.85.1" + sass-embedded-android-ia32 "1.85.1" + sass-embedded-android-riscv64 "1.85.1" + sass-embedded-android-x64 "1.85.1" + sass-embedded-darwin-arm64 "1.85.1" + sass-embedded-darwin-x64 "1.85.1" + sass-embedded-linux-arm "1.85.1" + sass-embedded-linux-arm64 "1.85.1" + sass-embedded-linux-ia32 "1.85.1" + sass-embedded-linux-musl-arm "1.85.1" + sass-embedded-linux-musl-arm64 "1.85.1" + sass-embedded-linux-musl-ia32 "1.85.1" + sass-embedded-linux-musl-riscv64 "1.85.1" + sass-embedded-linux-musl-x64 "1.85.1" + sass-embedded-linux-riscv64 "1.85.1" + sass-embedded-linux-x64 "1.85.1" + sass-embedded-win32-arm64 "1.85.1" + sass-embedded-win32-ia32 "1.85.1" + sass-embedded-win32-x64 "1.85.1" + +sass@^1.85.1: + version "1.85.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.85.1.tgz#18ab0bb48110ae99163778f06445b406148ca0d5" + integrity sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + +schema-utils@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" + integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slash@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +sync-child-process@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/sync-child-process/-/sync-child-process-1.0.2.tgz#45e7c72e756d1243e80b547ea2e17957ab9e367f" + integrity sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA== + dependencies: + sync-message-port "^1.0.0" + +sync-message-port@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sync-message-port/-/sync-message-port-1.1.3.tgz#6055c565ee8c81d2f9ee5aae7db757e6d9088c0c" + integrity sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.11: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.31.1: + version "5.39.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a" + integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +thenby@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/thenby/-/thenby-1.3.4.tgz#81581f6e1bb324c6dedeae9bfc28e59b1a2201cc" + integrity sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ== + +tinyglobby@^0.2.12: + version "0.2.12" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" + integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== + dependencies: + fdir "^6.4.3" + picomatch "^4.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tslib@^2.1.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +update-browserslist-db@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webpack-cli@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-6.0.1.tgz#a1ce25da5ba077151afd73adfa12e208e5089207" + integrity sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw== + dependencies: + "@discoveryjs/json-ext" "^0.6.1" + "@webpack-cli/configtest" "^3.0.1" + "@webpack-cli/info" "^3.0.1" + "@webpack-cli/serve" "^3.0.1" + colorette "^2.0.14" + commander "^12.1.0" + cross-spawn "^7.0.3" + envinfo "^7.14.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^6.0.1" + +webpack-merge@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" + integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.98.0: + version "5.98.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" + integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.11" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaml@^2.4.2: + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.0.0: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1"