453 changed files with 20601 additions and 44448 deletions
@ -1,37 +0,0 @@ |
|||
root = true |
|||
|
|||
[*] |
|||
end_of_line = lf |
|||
insert_final_newline = true |
|||
charset = utf-8 |
|||
|
|||
[*.py] |
|||
indent_style = space |
|||
indent_size = 4 |
|||
ij_continuation_indent_size = 4 |
|||
|
|||
[*.js] |
|||
indent_style = space |
|||
indent_size = 4 |
|||
ij_continuation_indent_size = 4 |
|||
|
|||
[*.scss] |
|||
indent_style = space |
|||
indent_size = 2 |
|||
|
|||
[*.html] |
|||
indent_style = space |
|||
indent_size = 4 |
|||
ij_continuation_indent_size = 4 |
|||
|
|||
[{*.yml, *.yaml}] |
|||
indent_style = space |
|||
indent_size = 2 |
|||
|
|||
[*.svg] |
|||
indent_style = space |
|||
indent_size = 2 |
|||
|
|||
[{package.json, tsconfig.json}] |
|||
indent_style = space |
|||
indent_size = 4 |
@ -1,20 +0,0 @@ |
|||
# Configuration defaults for AlmaLinux website software. |
|||
# `make dev` will automatically copy this file to `.env` if target is not present with development |
|||
# environment appropriate and specific defaults. |
|||
|
|||
# Django secret key |
|||
SECRET_KEY=CHANGE_ME |
|||
# Is debugging enabled? False for production |
|||
DEBUG=true |
|||
# Database settings |
|||
DB_ENGINE=django.db.backends.mysql |
|||
DB_NAME=devel |
|||
DB_USER=devel |
|||
DB_PASSWORD=devel |
|||
DB_HOST=mariadb |
|||
DB_PORT=3306 |
|||
# Path to media, empty for default |
|||
MEDIA_ROOT= |
|||
# HubSpot subscription API key |
|||
HUBSPOT_APIKEY=changeme |
|||
HUBSPOT_SUB_ID=changeme |
@ -1,7 +0,0 @@ |
|||
node_modules |
|||
db.sqlite3 |
|||
static/build |
|||
public/ |
|||
*.mo |
|||
tmp |
|||
.env |
@ -1,5 +0,0 @@ |
|||
[mypy] |
|||
disallow_untyped_calls = True |
|||
disallow_untyped_defs = True |
|||
disallow_untyped_decorators = True |
|||
disallow_incomplete_defs = True |
@ -1,3 +0,0 @@ |
|||
# Keep .venv around in the project source to avoid pipenv creating new user-local venvs |
|||
* |
|||
!.gitignore |
@ -1,60 +0,0 @@ |
|||
# Contributing |
|||
|
|||
If you are interested in making a contribution there are a few ways you could help out the project. |
|||
|
|||
## Filing issues |
|||
|
|||
You are free to use [GitHub issues](https://github.com/AlmaLinux/almalinux.org/issues) to submit bugs and for |
|||
discussions related to the codebase. |
|||
|
|||
### Reporting a Bug |
|||
|
|||
Good bug reports can be very helpful. A bug is a demonstrable problem with the code or functionality. |
|||
|
|||
Please use the [GitHub issues](https://github.com/AlmaLinux/almalinux.org/issues) and check if the issue has |
|||
already been reported. |
|||
|
|||
A good bug report should be as detailed as possible, so that others won't have to follow up for the essential details. |
|||
|
|||
- Submit a bug in [GitHub issues](https://github.com/AlmaLinux/almalinux.org/issues) |
|||
|
|||
### Requesting a Feature |
|||
|
|||
1. [Search the issues](https://github.com/AlmaLinux/almalinux.org/issues) for any previous requests for the same |
|||
feature, and give a thumbs up or +1 on existing requests. |
|||
1. If no previous requests exist, create a new issue. Please be as clear as possible about why the feature is needed and |
|||
the intended use case. |
|||
|
|||
- Request a feature in [GitHub issues](https://github.com/AlmaLinux/almalinux.org/issues) |
|||
|
|||
## Contributing code |
|||
|
|||
If you plan to propose code changes it is required you create |
|||
an [issue](https://github.com/AlmaLinux/almalinux.org/issues) with a brief proposal and discuss it with |
|||
us first. |
|||
|
|||
This is necessary to avoid more than one contributor working on the same feature/change and to avoid someone from |
|||
spending time on feature/change that would not be merged for any reason. |
|||
|
|||
For smaller contributions use this workflow: |
|||
|
|||
* Create an [issue](https://github.com/AlmaLinux/almalinux.org/issues) describing the changes. |
|||
* Await confirmation from contributors. |
|||
* Fork the project. |
|||
* Create a branch for your feature or bug fix. |
|||
* Add code changes, relevant documentation, etc. |
|||
* Send a pull request. |
|||
|
|||
After one of the contributors has checked and approved the changes, they will be merged into master branch and will be |
|||
included in the next deployment. |
|||
|
|||
## Approval of changes |
|||
|
|||
Before any changes can be merged: |
|||
|
|||
- All minor or cosmetic changes (typos, minor styling, etc) can be approved and merged by any contributor with master |
|||
merge rights, |
|||
- All non-cosmetic changes to the website requires the approval of the Web Team lead and at least one other Web Team |
|||
member. |
|||
- All major changes that are not purely technical, and fundamental changes in technology requires the approval of the |
|||
AlmaLinux OS Community Manager. |
@ -1,32 +0,0 @@ |
|||
# Docker image for local development environment. |
|||
# You should NOT publish this image, it is intended for local use only. |
|||
|
|||
FROM almalinux/almalinux:8 |
|||
ARG LOCAL_UID |
|||
ARG LOCAL_GID |
|||
ARG LOCAL_USER=web |
|||
|
|||
RUN groupadd -g $LOCAL_GID -o $LOCAL_USER |
|||
RUN useradd -m -u $LOCAL_UID -g $LOCAL_GID -o -s /bin/bash $LOCAL_USER |
|||
|
|||
|
|||
RUN dnf -y install \ |
|||
gcc \ |
|||
make \ |
|||
gettext \ |
|||
python38 \ |
|||
python38-devel \ |
|||
mariadb-devel |
|||
|
|||
RUN pip3 install pipenv |
|||
|
|||
# Work around IDEA remote interpreter not able to work with remote virtualenvs |
|||
RUN touch /root/.bashrc \ |
|||
&& echo 'if [[ -f "/app/.venv/bin/activate" ]]; then source /app/.venv/bin/activate; fi' >> /root/.bashrc |
|||
|
|||
RUN touch /home/web/.bashrc \ |
|||
&& echo 'if [[ -f "/app/.venv/bin/activate" ]]; then source /app/.venv/bin/activate; fi' >> /home/web/.bashrc |
|||
|
|||
WORKDIR /app |
|||
|
|||
CMD make runserver |
@ -1,25 +0,0 @@ |
|||
# Docker image for local development environment. |
|||
# You should NOT publish this image, it is intended for local use only. |
|||
|
|||
FROM almalinux/almalinux:8 |
|||
ARG LOCAL_UID |
|||
ARG LOCAL_GID |
|||
ARG LOCAL_USER=web |
|||
|
|||
RUN groupadd -g $LOCAL_GID -o $LOCAL_USER |
|||
RUN useradd -m -u $LOCAL_UID -g $LOCAL_GID -o -s /bin/bash $LOCAL_USER |
|||
|
|||
RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ |
|||
dnf -y install yum-utils && \ |
|||
curl -fsSL https://rpm.nodesource.com/setup_15.x | bash - && \ |
|||
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo |
|||
|
|||
RUN dnf -y install \ |
|||
make \ |
|||
gcc-c++ \ |
|||
nodejs \ |
|||
yarn |
|||
|
|||
WORKDIR /app |
|||
|
|||
CMD make frontend-runserver |
@ -1,35 +0,0 @@ |
|||
# Docker image for production environment. |
|||
# You should NOT publish this image. |
|||
|
|||
FROM almalinux/almalinux:8 |
|||
|
|||
RUN groupadd -g 900 web && \ |
|||
useradd -d /app -M -r -s /bin/bash web -g 900 -u 900 |
|||
|
|||
RUN dnf -y install \ |
|||
gcc \ |
|||
make \ |
|||
gettext \ |
|||
python38 \ |
|||
python38-devel \ |
|||
mariadb-devel |
|||
|
|||
COPY tmp/deploy /app |
|||
WORKDIR /app |
|||
|
|||
# Use our local env |
|||
ENV PYTHONPATH=/app/.local/lib/python3.8/site-packages:$PYTHONPATH |
|||
ENV PATH=/app/.local/bin:$PATH |
|||
|
|||
# Remove static images from build |
|||
RUN rm -rf /app/public/* \ |
|||
# Fix perms |
|||
&& chown web:web -Rf /app \ |
|||
# Install dependencies |
|||
&& su - web -c 'pip3 install -r requirements.txt --user' \ |
|||
# Cleanup dependencies |
|||
&& dnf -y remove gcc \ |
|||
&& dnf -y clean all \ |
|||
&& rm -rf /var/cache/yum |
|||
|
|||
CMD su web -c 'make uwsgi' |
@ -1,19 +0,0 @@ |
|||
Copyright (c) 2021 AlmaLinux OS Foundation |
|||
|
|||
Permission is hereby granted, free of charge, to any person obtaining a copy |
|||
of this software and associated documentation files (the "Software"), to deal |
|||
in the Software without restriction, including without limitation the rights |
|||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
copies of the Software, and to permit persons to whom the Software is |
|||
furnished to do so, subject to the following conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be included in all |
|||
copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
|||
SOFTWARE. |
@ -1,145 +0,0 @@ |
|||
ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) |
|||
CURRENT_UID ?= $(shell id -u) |
|||
CURRENT_GID ?= $(shell id -g) |
|||
TARGET_REPO ?= "git@github.com:AlmaLinux/almalinux.org.git" |
|||
TARGET_BRANCH ?= "master" |
|||
|
|||
.PHONY: default |
|||
default: dev ; |
|||
|
|||
dev: #: Start development environment
|
|||
cp -n .env.dist .env |
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose up --abort-on-container-exit |
|||
|
|||
build-dev: #: Build development Docker images
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose build web |
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose build frontend |
|||
|
|||
clean-dev: #: Clean development environment, remove docker images and data
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose down --rmi local -v |
|||
|
|||
mypy: #: Run mypy static type checker for Python modules
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web pipenv run mypy almalinux www commons |
|||
|
|||
web-shell: #: Enter backend shell within docker, as a regular user, new service instance
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web /bin/bash |
|||
|
|||
web-root-shell: #: Enter backend shell within docker, as root, new service instance
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run web /bin/bash |
|||
|
|||
web-attach: #: Attach to backend shell within docker, as a regular user, running instance
|
|||
docker exec -ti -u ${CURRENT_UID} web /bin/bash |
|||
|
|||
web-root-attach: #: Attach to backend shell within docker, as root, running instance
|
|||
docker exec -ti web /bin/bash |
|||
|
|||
messages: #: Update message files for all translations in known domains
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web pipenv run python3 ./manage.py makemessages -a --domain django |
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web pipenv run python3 ./manage.py makemessages -a --domain djangojs --ignore "frontend/node_modules/**" |
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web pipenv run python3 ./manage.py compilemessages |
|||
|
|||
compile-messages: #: Compile messages without source extraction
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web pipenv run python3 ./manage.py compilemessages |
|||
|
|||
migrations: #: Update message files for all translations in known domains
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web pipenv run python3 ./manage.py makemigrations |
|||
|
|||
frontend-shell: #: Enter frontend shell within docker, as a regular user, new service instance
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} frontend /bin/bash |
|||
|
|||
frontend-root-shell: #: Enter frontend shell within docker, as root, new service instance
|
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run frontend /bin/bash |
|||
|
|||
frontend-attach: #: Attach to frontend shell within docker, as a regular user, running instance
|
|||
docker exec -ti -u ${CURRENT_UID} frontend /bin/bash |
|||
|
|||
frontend-root-attach: #: Attach to frontend shell within docker, as root, running instance
|
|||
docker exec -ti frontend /bin/bash |
|||
|
|||
assemble: # INTERNAL: assemble deployment asset for deployment
|
|||
rm -rf tmp/deploy |
|||
rm -rf tmp/deploy_out |
|||
mkdir -p tmp |
|||
mkdir -p tmp/deploy_out |
|||
git clone ${TARGET_REPO} tmp/deploy --branch ${TARGET_BRANCH} |
|||
# Use local install .venv and node_modules to reuse local install as sort of a cache |
|||
cp -R .venv tmp/deploy |
|||
cp -R frontend/node_modules tmp/deploy/frontend |
|||
# Build dependencies |
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} frontend /bin/bash -c 'cd /app/tmp/deploy/ && make assemble-frontend' |
|||
LOCAL_UID=${CURRENT_UID} LOCAL_GID=${CURRENT_GID} docker-compose run -u ${CURRENT_UID} web /bin/bash -c 'cd /app/tmp/deploy/ && make assemble-web' |
|||
# Cleanup |
|||
rm tmp/deploy/Pipfile |
|||
rm tmp/deploy/Pipfile.lock |
|||
rm tmp/deploy/.env |
|||
rm tmp/deploy/.env.dist |
|||
rm -rf tmp/deploy/.git |
|||
rm -rf tmp/deploy/.venv |
|||
rm -rf tmp/deploy/static |
|||
rm -rf tmp/deploy/media |
|||
rm -rf tmp/deploy/Dockerfile* |
|||
rm -rf tmp/deploy/docker-compose.yml |
|||
rm -rf tmp/deploy/.mypy.ini |
|||
rm -rf tmp/deploy/.editorconfig |
|||
rm -rf tmp/deploy/.gitignore |
|||
rm -rf tmp/deploy/README.md |
|||
rm -rf tmp/deploy/CONTRIBUTING.md |
|||
rm -rf tmp/deploy/screenshot.png |
|||
# Build production docker image |
|||
docker build --rm -f ./Dockerfile-production -t almalinux.org:latest . |
|||
# Exporting image for deployment... |
|||
docker save almalinux.org:latest > tmp/deploy_out/almalinux.org.image.tar |
|||
# Assembling deployment asset |
|||
mv tmp/deploy/public tmp/deploy_out |
|||
cp tmp/deploy/docker-compose.production.yml tmp/deploy_out/docker-compose.yml |
|||
cd tmp/deploy_out && tar -zcvf ../deployment.tar.gz . |
|||
# Cleanup deployment workspace |
|||
rm -rf tmp/deploy_out/ |
|||
rm -rf tmp/deploy/ |
|||
|
|||
assemble-frontend: # INTERNAL - package and build frontend
|
|||
yarn --cwd=/app/tmp/deploy/frontend/ install |
|||
yarn --cwd=/app/tmp/deploy/frontend/ build |
|||
rm -rf /app/tmp/deploy/frontend |
|||
|
|||
assemble-web: # INTERNAL - package and build web
|
|||
cp /app/tmp/deploy/.env.dist /app/tmp/deploy/.env |
|||
cd /app/tmp/deploy/ && pipenv sync |
|||
cd /app/tmp/deploy/ && pipenv clean |
|||
cd /app/tmp/deploy/ && pipenv run python3 ./manage.py collectstatic |
|||
cd /app/tmp/deploy/ && pipenv run python3 ./manage.py compilemessages |
|||
cd /app/tmp/deploy/ && pipenv lock -r > requirements.txt |
|||
|
|||
uwsgi: # INTERNAL - start UWSGI server, within production image
|
|||
uwsgi \
|
|||
--chdir=/app/ \
|
|||
--module=almalinux.wsgi:application \
|
|||
--master \
|
|||
--pidfile=/tmp/almalinux.org.pid \
|
|||
--socket=0.0.0.0:9000 \
|
|||
--processes=4 \
|
|||
--enable-threads \
|
|||
--threads=2 \
|
|||
--harakiri=20 \
|
|||
--max-requests=5000 \
|
|||
--vacuum |
|||
|
|||
runserver: # INTERNAL - start internal development server. This is supposed to be run inside Docker.
|
|||
@echo 'Delaying start of local development server to allow for dependencies to boot' |
|||
@sleep 5 |
|||
su - web -c 'cd /app && pipenv install --dev' |
|||
su - web -c 'cd /app && pipenv run python3 manage.py migrate' |
|||
su - web -c 'cd /app && pipenv run python3 manage.py runserver 0.0.0.0:8080' |
|||
|
|||
frontend-runserver: # INTERNAL - start internal frontend development server. This is supposed to be run inside Docker.
|
|||
su - web -c 'yarn --cwd=/app/frontend/ install' |
|||
su - web -c 'yarn --cwd=/app/frontend/ dev-server --host 0.0.0.0 --public http://localhost:8090 --port 8090' |
|||
|
|||
help: #: Show this help
|
|||
@fgrep -h "#:" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/#://' |
|||
|
|||
all: dev |
|||
|
|||
%: |
|||
@echo 'Invalid command' |
|||
@make help |
@ -1,21 +0,0 @@ |
|||
[[source]] |
|||
url = "https://pypi.org/simple" |
|||
verify_ssl = true |
|||
name = "pypi" |
|||
|
|||
[packages] |
|||
Django = "~=3.2" |
|||
mysqlclient = "~=2.0.3" |
|||
Pillow = "~=9.0.0" |
|||
python-dotenv = "~=0.17.1" |
|||
PyYAML = "~=5.4.1" |
|||
uWSGI = "~=2.0" |
|||
requests = "~=2.25" |
|||
Markdown = "~=3.3" |
|||
|
|||
[dev-packages] |
|||
mypy = "*" |
|||
django-stubs = "*" |
|||
|
|||
[requires] |
|||
python_version = "3.8" |
@ -1,347 +0,0 @@ |
|||
{ |
|||
"_meta": { |
|||
"hash": { |
|||
"sha256": "709bc6f36c62f3c5fff12247d94da36aa6f3b894e4b4386275acaf787b6f7ff3" |
|||
}, |
|||
"pipfile-spec": 6, |
|||
"requires": { |
|||
"python_version": "3.8" |
|||
}, |
|||
"sources": [ |
|||
{ |
|||
"name": "pypi", |
|||
"url": "https://pypi.org/simple", |
|||
"verify_ssl": true |
|||
} |
|||
] |
|||
}, |
|||
"default": { |
|||
"asgiref": { |
|||
"hashes": [ |
|||
"sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4", |
|||
"sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424" |
|||
], |
|||
"markers": "python_version >= '3.7'", |
|||
"version": "==3.5.2" |
|||
}, |
|||
"certifi": { |
|||
"hashes": [ |
|||
"sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d", |
|||
"sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412" |
|||
], |
|||
"markers": "python_version >= '3.6'", |
|||
"version": "==2022.6.15" |
|||
}, |
|||
"charset-normalizer": { |
|||
"hashes": [ |
|||
"sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", |
|||
"sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" |
|||
], |
|||
"markers": "python_version >= '3'", |
|||
"version": "==2.0.12" |
|||
}, |
|||
"django": { |
|||
"hashes": [ |
|||
"sha256:115baf5049d5cf4163e43492cdc7139c306ed6d451e7d3571fe9612903903713", |
|||
"sha256:f71934b1a822f14a86c9ac9634053689279cd04ae69cb6ade4a59471b886582b" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==3.2.15" |
|||
}, |
|||
"idna": { |
|||
"hashes": [ |
|||
"sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", |
|||
"sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" |
|||
], |
|||
"markers": "python_version >= '3'", |
|||
"version": "==3.3" |
|||
}, |
|||
"importlib-metadata": { |
|||
"hashes": [ |
|||
"sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670", |
|||
"sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23" |
|||
], |
|||
"markers": "python_version < '3.10'", |
|||
"version": "==4.12.0" |
|||
}, |
|||
"markdown": { |
|||
"hashes": [ |
|||
"sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006", |
|||
"sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==3.3.6" |
|||
}, |
|||
"mysqlclient": { |
|||
"hashes": [ |
|||
"sha256:0ac0dd759c4ca02c35a9fedc24bc982cf75171651e8187c2495ec957a87dfff7", |
|||
"sha256:3381ca1a4f37ff1155fcfde20836b46416d66531add8843f6aa6d968982731c3", |
|||
"sha256:71c4b330cf2313bbda0307fc858cc9055e64493ba9bf28454d25cf8b3ee8d7f5", |
|||
"sha256:f6ebea7c008f155baeefe16c56cd3ee6239f7a5a9ae42396c2f1860f08a7c432", |
|||
"sha256:fc575093cf81b6605bed84653e48b277318b880dc9becf42dd47fa11ffd3e2b6" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==2.0.3" |
|||
}, |
|||
"pillow": { |
|||
"hashes": [ |
|||
"sha256:011233e0c42a4a7836498e98c1acf5e744c96a67dd5032a6f666cc1fb97eab97", |
|||
"sha256:0f29d831e2151e0b7b39981756d201f7108d3d215896212ffe2e992d06bfe049", |
|||
"sha256:12875d118f21cf35604176872447cdb57b07126750a33748bac15e77f90f1f9c", |
|||
"sha256:14d4b1341ac07ae07eb2cc682f459bec932a380c3b122f5540432d8977e64eae", |
|||
"sha256:1c3c33ac69cf059bbb9d1a71eeaba76781b450bc307e2291f8a4764d779a6b28", |
|||
"sha256:1d19397351f73a88904ad1aee421e800fe4bbcd1aeee6435fb62d0a05ccd1030", |
|||
"sha256:253e8a302a96df6927310a9d44e6103055e8fb96a6822f8b7f514bb7ef77de56", |
|||
"sha256:2632d0f846b7c7600edf53c48f8f9f1e13e62f66a6dbc15191029d950bfed976", |
|||
"sha256:335ace1a22325395c4ea88e00ba3dc89ca029bd66bd5a3c382d53e44f0ccd77e", |
|||
"sha256:413ce0bbf9fc6278b2d63309dfeefe452835e1c78398efb431bab0672fe9274e", |
|||
"sha256:5100b45a4638e3c00e4d2320d3193bdabb2d75e79793af7c3eb139e4f569f16f", |
|||
"sha256:514ceac913076feefbeaf89771fd6febde78b0c4c1b23aaeab082c41c694e81b", |
|||
"sha256:528a2a692c65dd5cafc130de286030af251d2ee0483a5bf50c9348aefe834e8a", |
|||
"sha256:6295f6763749b89c994fcb6d8a7f7ce03c3992e695f89f00b741b4580b199b7e", |
|||
"sha256:6c8bc8238a7dfdaf7a75f5ec5a663f4173f8c367e5a39f87e720495e1eed75fa", |
|||
"sha256:718856856ba31f14f13ba885ff13874be7fefc53984d2832458f12c38205f7f7", |
|||
"sha256:7f7609a718b177bf171ac93cea9fd2ddc0e03e84d8fa4e887bdfc39671d46b00", |
|||
"sha256:80ca33961ced9c63358056bd08403ff866512038883e74f3a4bf88ad3eb66838", |
|||
"sha256:80fe64a6deb6fcfdf7b8386f2cf216d329be6f2781f7d90304351811fb591360", |
|||
"sha256:81c4b81611e3a3cb30e59b0cf05b888c675f97e3adb2c8672c3154047980726b", |
|||
"sha256:855c583f268edde09474b081e3ddcd5cf3b20c12f26e0d434e1386cc5d318e7a", |
|||
"sha256:9bfdb82cdfeccec50aad441afc332faf8606dfa5e8efd18a6692b5d6e79f00fd", |
|||
"sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4", |
|||
"sha256:a9f44cd7e162ac6191491d7249cceb02b8116b0f7e847ee33f739d7cb1ea1f70", |
|||
"sha256:b5b3f092fe345c03bca1e0b687dfbb39364b21ebb8ba90e3fa707374b7915204", |
|||
"sha256:b9618823bd237c0d2575283f2939655f54d51b4527ec3972907a927acbcc5bfc", |
|||
"sha256:cef9c85ccbe9bee00909758936ea841ef12035296c748aaceee535969e27d31b", |
|||
"sha256:d21237d0cd37acded35154e29aec853e945950321dd2ffd1a7d86fe686814669", |
|||
"sha256:d3c5c79ab7dfce6d88f1ba639b77e77a17ea33a01b07b99840d6ed08031cb2a7", |
|||
"sha256:d9d7942b624b04b895cb95af03a23407f17646815495ce4547f0e60e0b06f58e", |
|||
"sha256:db6d9fac65bd08cea7f3540b899977c6dee9edad959fa4eaf305940d9cbd861c", |
|||
"sha256:ede5af4a2702444a832a800b8eb7f0a7a1c0eed55b644642e049c98d589e5092", |
|||
"sha256:effb7749713d5317478bb3acb3f81d9d7c7f86726d41c1facca068a04cf5bb4c", |
|||
"sha256:f154d173286a5d1863637a7dcd8c3437bb557520b01bddb0be0258dcb72696b5", |
|||
"sha256:f25ed6e28ddf50de7e7ea99d7a976d6a9c415f03adcaac9c41ff6ff41b6d86ac" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==9.0.1" |
|||
}, |
|||
"python-dotenv": { |
|||
"hashes": [ |
|||
"sha256:00aa34e92d992e9f8383730816359647f358f4a3be1ba45e5a5cefd27ee91544", |
|||
"sha256:b1ae5e9643d5ed987fc57cc2583021e38db531946518130777734f9589b3141f" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==0.17.1" |
|||
}, |
|||
"pytz": { |
|||
"hashes": [ |
|||
"sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7", |
|||
"sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c" |
|||
], |
|||
"version": "==2022.1" |
|||
}, |
|||
"pyyaml": { |
|||
"hashes": [ |
|||
"sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", |
|||
"sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", |
|||
"sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", |
|||
"sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", |
|||
"sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", |
|||
"sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", |
|||
"sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", |
|||
"sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", |
|||
"sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", |
|||
"sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", |
|||
"sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", |
|||
"sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", |
|||
"sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", |
|||
"sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", |
|||
"sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", |
|||
"sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", |
|||
"sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", |
|||
"sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", |
|||
"sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", |
|||
"sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", |
|||
"sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", |
|||
"sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", |
|||
"sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", |
|||
"sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", |
|||
"sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", |
|||
"sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", |
|||
"sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", |
|||
"sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", |
|||
"sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==5.4.1" |
|||
}, |
|||
"requests": { |
|||
"hashes": [ |
|||
"sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", |
|||
"sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==2.27.1" |
|||
}, |
|||
"sqlparse": { |
|||
"hashes": [ |
|||
"sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", |
|||
"sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" |
|||
], |
|||
"markers": "python_version >= '3.5'", |
|||
"version": "==0.4.2" |
|||
}, |
|||
"urllib3": { |
|||
"hashes": [ |
|||
"sha256:c33ccba33c819596124764c23a97d25f32b28433ba0dedeb77d873a38722c9bc", |
|||
"sha256:ea6e8fb210b19d950fab93b60c9009226c63a28808bc8386e05301e25883ac0a" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", |
|||
"version": "==1.26.11" |
|||
}, |
|||
"uwsgi": { |
|||
"hashes": [ |
|||
"sha256:88ab9867d8973d8ae84719cf233b7dafc54326fcaec89683c3f9f77c002cdff9" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==2.0.20" |
|||
}, |
|||
"zipp": { |
|||
"hashes": [ |
|||
"sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2", |
|||
"sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009" |
|||
], |
|||
"markers": "python_version >= '3.7'", |
|||
"version": "==3.8.1" |
|||
} |
|||
}, |
|||
"develop": { |
|||
"asgiref": { |
|||
"hashes": [ |
|||
"sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4", |
|||
"sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424" |
|||
], |
|||
"markers": "python_version >= '3.7'", |
|||
"version": "==3.5.2" |
|||
}, |
|||
"backports.zoneinfo": { |
|||
"hashes": [ |
|||
"sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", |
|||
"sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", |
|||
"sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", |
|||
"sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", |
|||
"sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", |
|||
"sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", |
|||
"sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", |
|||
"sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", |
|||
"sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", |
|||
"sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", |
|||
"sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", |
|||
"sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", |
|||
"sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", |
|||
"sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", |
|||
"sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", |
|||
"sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" |
|||
], |
|||
"markers": "python_version < '3.9'", |
|||
"version": "==0.2.1" |
|||
}, |
|||
"django": { |
|||
"hashes": [ |
|||
"sha256:115baf5049d5cf4163e43492cdc7139c306ed6d451e7d3571fe9612903903713", |
|||
"sha256:f71934b1a822f14a86c9ac9634053689279cd04ae69cb6ade4a59471b886582b" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==3.2.15" |
|||
}, |
|||
"django-stubs": { |
|||
"hashes": [ |
|||
"sha256:2ec21fc14dba392156e0ec8438e1863c86ddb295f1c8d88eecd7e0e04977c843", |
|||
"sha256:dfffa933e3c7f5cae92c860fbd6cf4ae58c4f78eed93843612f863207c9e0e1a" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==1.10.1" |
|||
}, |
|||
"django-stubs-ext": { |
|||
"hashes": [ |
|||
"sha256:9bd7418376ab00b7f88d6d56be9fece85bfa0c7c348ac621155fa4d7a91146f2", |
|||
"sha256:c5d8db53d29c756e7e3d0820a5a079a43bc38d8fab0e1b8bd5df2f3366c54b5a" |
|||
], |
|||
"markers": "python_version >= '3.6'", |
|||
"version": "==0.5.0" |
|||
}, |
|||
"mypy": { |
|||
"hashes": [ |
|||
"sha256:0e2dd88410937423fba18e57147dd07cd8381291b93d5b1984626f173a26543e", |
|||
"sha256:10daab80bc40f84e3f087d896cdb53dc811a9f04eae4b3f95779c26edee89d16", |
|||
"sha256:17e44649fec92e9f82102b48a3bf7b4a5510ad0cd22fa21a104826b5db4903e2", |
|||
"sha256:1a0459c333f00e6a11cbf6b468b870c2b99a906cb72d6eadf3d1d95d38c9352c", |
|||
"sha256:246e1aa127d5b78488a4a0594bd95f6d6fb9d63cf08a66dafbff8595d8891f67", |
|||
"sha256:2b184db8c618c43c3a31b32ff00cd28195d39e9c24e7c3b401f3db7f6e5767f5", |
|||
"sha256:2bc249409a7168d37c658e062e1ab5173300984a2dada2589638568ddc1db02b", |
|||
"sha256:3841b5433ff936bff2f4dc8d54cf2cdbfea5d8e88cedfac45c161368e5770ba6", |
|||
"sha256:4c3e497588afccfa4334a9986b56f703e75793133c4be3a02d06a3df16b67a58", |
|||
"sha256:5bf44840fb43ac4074636fd47ee476d73f0039f4f54e86d7265077dc199be24d", |
|||
"sha256:64235137edc16bee6f095aba73be5334677d6f6bdb7fa03cfab90164fa294a17", |
|||
"sha256:6776e5fa22381cc761df53e7496a805801c1a751b27b99a9ff2f0ca848c7eca0", |
|||
"sha256:6ce34a118d1a898f47def970a2042b8af6bdcc01546454726c7dd2171aa6dfca", |
|||
"sha256:6f6ad963172152e112b87cc7ec103ba0f2db2f1cd8997237827c052a3903eaa6", |
|||
"sha256:6f7106cbf9cc2f403693bf50ed7c9fa5bb3dfa9007b240db3c910929abe2a322", |
|||
"sha256:7742d2c4e46bb5017b51c810283a6a389296cda03df805a4f7869a6f41246534", |
|||
"sha256:9521c1265ccaaa1791d2c13582f06facf815f426cd8b07c3a485f486a8ffc1f3", |
|||
"sha256:a1b383fe99678d7402754fe90448d4037f9512ce70c21f8aee3b8bf48ffc51db", |
|||
"sha256:b840cfe89c4ab6386c40300689cd8645fc8d2d5f20101c7f8bd23d15fca14904", |
|||
"sha256:d8d3ba77e56b84cd47a8ee45b62c84b6d80d32383928fe2548c9a124ea0a725c", |
|||
"sha256:dcd955f36e0180258a96f880348fbca54ce092b40fbb4b37372ae3b25a0b0a46", |
|||
"sha256:e865fec858d75b78b4d63266c9aff770ecb6a39dfb6d6b56c47f7f8aba6baba8", |
|||
"sha256:edf7237137a1a9330046dbb14796963d734dd740a98d5e144a3eb1d267f5f9ee" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==0.942" |
|||
}, |
|||
"mypy-extensions": { |
|||
"hashes": [ |
|||
"sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", |
|||
"sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" |
|||
], |
|||
"version": "==0.4.3" |
|||
}, |
|||
"sqlparse": { |
|||
"hashes": [ |
|||
"sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", |
|||
"sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" |
|||
], |
|||
"markers": "python_version >= '3.5'", |
|||
"version": "==0.4.2" |
|||
}, |
|||
"tomli": { |
|||
"hashes": [ |
|||
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", |
|||
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" |
|||
], |
|||
"markers": "python_version >= '3.7'", |
|||
"version": "==2.0.1" |
|||
}, |
|||
"types-pytz": { |
|||
"hashes": [ |
|||
"sha256:1a8b25c225c5e6bd8468aa9eb45ddd3b337f6716d4072ad0aa4ef1e41478eebc", |
|||
"sha256:8aa9fd2af9dee5f5bd7221c6804c9addeafa7ebc0008f544d4ace02b066818a4" |
|||
], |
|||
"version": "==2022.1.2" |
|||
}, |
|||
"types-pyyaml": { |
|||
"hashes": [ |
|||
"sha256:7f7da2fd11e9bc1e5e9eb3ea1be84f4849747017a59fc2eee0ea34ed1147c2e0", |
|||
"sha256:8f890028123607379c63550179ddaec4517dc751f4c527a52bb61934bf495989" |
|||
], |
|||
"version": "==6.0.11" |
|||
}, |
|||
"typing-extensions": { |
|||
"hashes": [ |
|||
"sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", |
|||
"sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" |
|||
], |
|||
"markers": "python_version >= '3.7'", |
|||
"version": "==4.3.0" |
|||
} |
|||
} |
|||
} |
@ -1,13 +0,0 @@ |
|||
# Deployment |
|||
|
|||
The website is currently designed to run on a single host. |
|||
|
|||
## Preparing a host |
|||
|
|||
- Go to `ansible/` and apply all relevant roles to the new host. |
|||
- Create `.env` file in `/opt/almalinux.org/` directory on the target host. |
|||
- Deploy! |
|||
|
|||
## Deploying |
|||
|
|||
Execute `kafe do <staging|production> deploy`. This will build from master and deploy to the target environment. |
@ -1,48 +0,0 @@ |
|||
# almalinux.org website |
|||
|
|||
[](https://almalinux.org) |
|||
|
|||
This repository contains website source code for https://almalinux.org. |
|||
|
|||
This website is built with Python using Django web framework. It uses MariaDB as database backend, |
|||
Docker and docker-compose for development environment deployment, and Pipenv is used to track project |
|||
requirements, and manage Python dependencies. |
|||
|
|||
JavaScript and SCSS is used for frontend, and is managed/built using Webpack Encore. See |
|||
[frontend/README](./frontend/README.md) for more details. |
|||
|
|||
## For developers |
|||
|
|||
To deploy local development environment, you will need following dependencies installed |
|||
on your development host: |
|||
|
|||
- Docker |
|||
- docker-compose |
|||
- make |
|||
|
|||
Common development commands and automation related commands are listed in Makefile. Execute `make help` |
|||
for a complete list of available commands. |
|||
|
|||
Executing `make dev` will deploy a complete, ready to go development environment. |
|||
|
|||
### Directories and modules |
|||
|
|||
- `/almalinux/` - Django project root. |
|||
- `/commons/` - A Django app-module with reusable utilities for app support. |
|||
- `/locale/` - Django locale files. |
|||
- `/media/` - Django file uploads. |
|||
- `/static/` - Static files and build output for frontend code. |
|||
- `/www/` - Django app that contains all logic for the website. |
|||
- `/frontend/` - JavaScript and SCSS frontend code. |
|||
|
|||
### Localization and translation |
|||
|
|||
AlmaLinux OS localization and translation is managed using [Weblate](https://hosted.weblate.org/engage/almalinux/). |
|||
|
|||
To contribute translations see [AlmaLinux OS](https://hosted.weblate.org/projects/almalinux/) localization project in Weblate. |
|||
|
|||
You can request new languages to be added by creating a ticket in [GitHub issues](https://github.com/AlmaLinux/almalinux.org/issues). |
|||
|
|||
[](https://hosted.weblate.org/engage/almalinux/) |
|||
|
|||
Copyright (c) 2021 AlmaLinux OS Foundation |
@ -1,38 +0,0 @@ |
|||
from functools import update_wrapper |
|||
from typing import List |
|||
|
|||
from django.contrib.admin import AdminSite |
|||
from django.template.response import TemplateResponse |
|||
from django.urls import path |
|||
from django.utils.safestring import SafeString |
|||
|
|||
|
|||
class AlmaLinuxAdminSite(AdminSite): |
|||
site_title = 'AlmaLinux OS Admin' |
|||
site_header = SafeString('<img src="/static/images/logo.svg" alt="Logo">') |
|||
|
|||
def get_urls(self) -> List: |
|||
urls: List = [] |
|||
urls += super().get_urls() |
|||
urls_insert_pos = len(urls) - 1 |
|||
|
|||
from www.admin import www_admin_urls |
|||
|
|||
for www_admin_url in www_admin_urls: |
|||
def inner(request): # type: ignore |
|||
context = { |
|||
**self.each_context(request), |
|||
'subtitle': None, |
|||
'is_nav_sidebar_enabled': False, |
|||
**(www_admin_url[3] or {}) |
|||
} |
|||
request.current_app = self.name |
|||
|
|||
return TemplateResponse(request, www_admin_url[1], context) |
|||
|
|||
urls.insert( |
|||
urls_insert_pos, |
|||
path(www_admin_url[0], self.admin_view(inner), name=www_admin_url[2]) |
|||
) |
|||
|
|||
return urls |
@ -1,5 +0,0 @@ |
|||
from django.contrib.admin.apps import AdminConfig |
|||
|
|||
|
|||
class AlmaLinuxAdminConfig(AdminConfig): |
|||
default_site = 'almalinux.admin.AlmaLinuxAdminSite' |
@ -1,16 +0,0 @@ |
|||
""" |
|||
ASGI config for almalinux project. |
|||
|
|||
It exposes the ASGI callable as a module-level variable named ``application``. |
|||
|
|||
For more information on this file, see |
|||
https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/ |
|||
""" |
|||
|
|||
import os |
|||
|
|||
from django.core.asgi import get_asgi_application |
|||
|
|||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'almalinux.settings') |
|||
|
|||
application = get_asgi_application() |
@ -1,188 +0,0 @@ |
|||
""" |
|||
Django settings for almalinux project. |
|||
|
|||
Generated by 'django-admin startproject' using Django 3.1.4. |
|||
|
|||
For more information on this file, see |
|||
https://docs.djangoproject.com/en/3.1/topics/settings/ |
|||
|
|||
For the full list of settings and their values, see |
|||
https://docs.djangoproject.com/en/3.1/ref/settings/ |
|||
""" |
|||
|
|||
# TODO: .env support for all major settings that could change between envs |
|||
|
|||
from pathlib import Path |
|||
# Build paths inside the project like this: BASE_DIR / 'subdir'. |
|||
from typing import List, Tuple, Union, Any |
|||
|
|||
from dotenv import dotenv_values |
|||
|
|||
BASE_DIR = Path(__file__).resolve().parent.parent |
|||
DOTENV = dotenv_values(BASE_DIR / '.env') |
|||
|
|||
# Quick-start development settings - unsuitable for production |
|||
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ |
|||
|
|||
# SECURITY WARNING: keep the secret key used in production secret! |
|||
SECRET_KEY = DOTENV['SECRET_KEY'] |
|||
|
|||
# SECURITY WARNING: don't run with debug turned on in production! |
|||
DEBUG = DOTENV['DEBUG'] == 'true' |
|||
|
|||
ALLOWED_HOSTS = [ |
|||
'127.0.0.1', |
|||
'localhost', |
|||
'almalinux.org', |
|||
'www.almalinux.org', |
|||
'staging.almalinux.org', |
|||
] |
|||
|
|||
# Application definition |
|||
|
|||
INSTALLED_APPS = [ |
|||
'django.contrib.auth', |
|||
'django.contrib.contenttypes', |
|||
'django.contrib.sessions', |
|||
'django.contrib.messages', |
|||
'django.contrib.staticfiles', |
|||
'django.contrib.humanize', |
|||
'commons', |
|||
'almalinux.apps.AlmaLinuxAdminConfig', |
|||
'www', |
|||
] |
|||
|
|||
MIDDLEWARE = [ |
|||
'django.middleware.locale.LocaleMiddleware', |
|||
'django.middleware.security.SecurityMiddleware', |
|||
'django.contrib.sessions.middleware.SessionMiddleware', |
|||
'django.middleware.common.CommonMiddleware', |
|||
'django.middleware.csrf.CsrfViewMiddleware', |
|||
'django.contrib.auth.middleware.AuthenticationMiddleware', |
|||
'django.contrib.messages.middleware.MessageMiddleware', |
|||
'django.middleware.clickjacking.XFrameOptionsMiddleware', |
|||
] |
|||
|
|||
ROOT_URLCONF = 'almalinux.urls' |
|||
|
|||
template_loaders: List[Any] = [ |
|||
'django.template.loaders.filesystem.Loader', |
|||
'django.template.loaders.app_directories.Loader' |
|||
] |
|||
|
|||
effective_loaders: List[Union[str, Tuple]] |
|||
|
|||
if DEBUG: |
|||
effective_loaders = template_loaders |
|||
else: |
|||
effective_loaders = [ |
|||
('django.template.loaders.cached.Loader', template_loaders), |
|||
] |
|||
|
|||
TEMPLATES = [ |
|||
{ |
|||
'BACKEND': 'django.template.backends.django.DjangoTemplates', |
|||
'DIRS': [], |
|||
'APP_DIRS': [], |
|||
'OPTIONS': { |
|||
'loaders': effective_loaders, |
|||
'context_processors': [ |
|||
'django.template.context_processors.debug', |
|||
'django.template.context_processors.request', |
|||
'django.contrib.auth.context_processors.auth', |
|||
'django.contrib.messages.context_processors.messages', |
|||
'commons.context.dnt.is_dnt_enabled' |
|||
], |
|||
}, |
|||
}, |
|||
] |
|||
|
|||
WSGI_APPLICATION = 'almalinux.wsgi.application' |
|||
|
|||
# Database |
|||
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases |
|||
|
|||
DATABASES = { |
|||
'default': { |
|||
'ENGINE': DOTENV['DB_ENGINE'], |
|||
'NAME': DOTENV['DB_NAME'], |
|||
'USER': DOTENV['DB_USER'], |
|||
'PASSWORD': DOTENV['DB_PASSWORD'], |
|||
'HOST': DOTENV['DB_HOST'], |
|||
'PORT': int(DOTENV['DB_PORT']), # type: ignore |
|||
} |
|||
} |
|||
|
|||
# Password validation |
|||
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators |
|||
|
|||
AUTH_PASSWORD_VALIDATORS = [ |
|||
{ |
|||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', |
|||
}, |
|||
{ |
|||
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', |
|||
}, |
|||
{ |
|||
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', |
|||
}, |
|||
{ |
|||
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', |
|||
}, |
|||
] |
|||
|
|||
# Internationalization |
|||
# https://docs.djangoproject.com/en/3.1/topics/i18n/ |
|||
|
|||
LANGUAGE_CODE = 'en' |
|||
|
|||
TIME_ZONE = 'UTC' |
|||
|
|||
USE_I18N = True |
|||
|
|||
USE_L10N = True |
|||
|
|||
USE_TZ = True |
|||
|
|||
LANGUAGES = ( |
|||
('de', 'Deutsch'), |
|||
('en', 'English'), # English (US), default |
|||
('es', 'Español'), # Spanish (ES) |
|||
('fr', 'Français'), |
|||
('he', 'עִבְרִית'), # Hebrew |
|||
('it', 'Italiano'), |
|||
('ja', '日本語'), # Japanese |
|||
('lv', 'Latviešu'), |
|||
('pl', 'Polski'), |
|||
('pt', 'Português'), # Portuguese (PT) |
|||
('pt-br', 'Português Brasileiro'), # Portuguese (BR) |
|||
('ru', 'Русский'), |
|||
('sk', 'Slovenčina'), |
|||
('sv', 'Svenska'), |
|||
('tr', 'Türkçe'), |
|||
('uk', 'Украї́нська'), |
|||
('zh-hans', 'Chinese (Simplified)'), |
|||
) |
|||
|
|||
LOCALE_PATHS = [ |
|||
BASE_DIR / 'locale' |
|||
] |
|||
|
|||
# Static files (CSS, JavaScript, Images) |
|||
# https://docs.djangoproject.com/en/3.1/howto/static-files/ |
|||
|
|||
STATIC_URL = '/static/' |
|||
STATIC_ROOT = BASE_DIR / 'public/static/' |
|||
|
|||
STATICFILES_DIRS = [ |
|||
BASE_DIR / 'static', |
|||
] |
|||
|
|||
ENCORE_BUILD_DIR = BASE_DIR / 'static/build/' |
|||
|
|||
MEDIA_ROOT = BASE_DIR / 'media' if 0 == len(DOTENV['MEDIA_ROOT']) else DOTENV['MEDIA_ROOT'] # type: ignore |
|||
MEDIA_URL = 'media/' |
|||
|
|||
# Custom settings |
|||
HUBSPOT_APIKEY = DOTENV['HUBSPOT_APIKEY'] |
|||
HUBSPOT_SUB_ID = DOTENV['HUBSPOT_SUB_ID'] |
@ -1,42 +0,0 @@ |
|||
"""almalinux URL Configuration |
|||
|
|||
The `urlpatterns` list routes URLs to views. For more information please see: |
|||
https://docs.djangoproject.com/en/3.1/topics/http/urls/ |
|||
Examples: |
|||
Function views |
|||
1. Add an import: from my_app import views |
|||
2. Add a URL to urlpatterns: path('', views.home, name='home') |
|||
Class-based views |
|||
1. Add an import: from other_app.views import Home |
|||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') |
|||
Including another URLconf |
|||
1. Import the include() function: from django.urls import include, path |
|||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) |
|||
""" |
|||
from typing import List |
|||
|
|||
from django.conf import settings |
|||
from django.conf.urls.i18n import i18n_patterns |
|||
from django.conf.urls.static import static |
|||
from django.contrib import admin |
|||
from django.urls import path, include |
|||
from django.views.generic.base import RedirectView |
|||
from django.views.i18n import JavaScriptCatalog |
|||
|
|||
handler404 = 'www.views.not_found' |
|||
|
|||
urlpatterns: List = [] |
|||
urlpatterns += i18n_patterns(path('', include('www.urls')), prefix_default_language=False) |
|||
|
|||
urlpatterns += [ |
|||
path('admin/', admin.site.urls), |
|||
path('favicon.ico', RedirectView.as_view(url='/static/fav/favicon.ico')) |
|||
] |
|||
|
|||
urlpatterns += i18n_patterns(path( |
|||
'jsi18n/', |
|||
JavaScriptCatalog.as_view(), |
|||
name='javascript-catalog' |
|||
), prefix_default_language=False) |
|||
|
|||
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
@ -1,16 +0,0 @@ |
|||
""" |
|||
WSGI config for almalinux project. |
|||
|
|||
It exposes the WSGI callable as a module-level variable named ``application``. |
|||
|
|||
For more information on this file, see |
|||
https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ |
|||
""" |
|||
|
|||
import os |
|||
|
|||
from django.core.wsgi import get_wsgi_application |
|||
|
|||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'almalinux.settings') |
|||
|
|||
application = get_wsgi_application() |
@ -1,15 +0,0 @@ |
|||
root = true |
|||
|
|||
[*] |
|||
end_of_line = lf |
|||
insert_final_newline = true |
|||
|
|||
[*.yml] |
|||
indent_style = space |
|||
charset = utf-8 |
|||
indent_size = 2 |
|||
|
|||
[group_vars/all] |
|||
indent_style = space |
|||
charset = utf-8 |
|||
indent_size = 2 |
@ -1 +0,0 @@ |
|||
site.retry |
@ -1,8 +0,0 @@ |
|||
[defaults] |
|||
callback_whitelist = profile_tasks |
|||
ssh_args = -o ControlMaster=auto -o ControlPersist=3600s -o PreferredAuthentications=publickey |
|||
|
|||
[ssh_connection] |
|||
pipelining = True |
|||
control_path = /tmp/ansible-ssh-%%h-%%p-%%r |
|||
|
@ -1 +0,0 @@ |
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGqJLNLhgjH3xUgkR8OqIEBLsBk/BdjG7GIXpFIhLFzug4f1FRATA7cVsJ8XQ2sN+WUPe9hRJicYXTdFirJUafdpsrtwWhdvVhFq9RlkpS1BtbMlNJa8tkurxRqtdzR0sinu71uq8T/HmfKIgXHiRvo7qZyWfvM+0NHflPNS6kJfFoa0QazLmavPnI7dHROmkNnBpSMIDlovHjzFyiH2WFNBTkW0KLolio7xcySTtTsZPzYomp+mlMhnAUjwfcOUNFTgkoo86IYuOfu/3LdCOZQEq9N7AM4KpCaEm0qwSFrowWfNqGQGJPczUYlFMCd0InnZolb1D9JGhoUp2GppU3 eugene |
@ -1 +0,0 @@ |
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCNQ4ei4vig0thQbLvY8n1pUxPRfTlCDIE+GLQLz8On09xhFgBDqf60WtbmLTT8d10uAkXBz9Lw8TzNpOAWqrLXNiUsXKZlJiCc/8CYR26YdS1a2CcpDhbEU30vfxXfcGF7kLxUYoo60Qqbg8lgku4+FPNgVP8gfquPn8e+1r+V0H24QFuO6FOTDohNRjDRvtXghh2rhWdIa1fBNbd8rcuHCxgri7j/DNH1/x+fRtM6CvT+t5mYD9gOUK5LbQVdpWyd9IhkwKJHQ3DAAiljcLWP6p81yNHHjaatsJ1nuUtVKKeeBUEtJ+ehOjPuGHMOnddFdY1SZq+T+B/tkI8lw9mwua9Vl/adxfpxLOVGLQ1pFRHGxng3A6NXiV38LTFHT+PFZZJZp733Wh/rn5yJWaj6lhdsrsfEB/PG3ctGliOlVjvetzeg339LahrQtP8AfxAAiI6yJ22Bekl2+UR2cLAO37aPZjr6d4FsaxdOn3d3yjw0yylzh26Xovo8ihGFUU= iseletsk@ainode1 |
@ -1 +0,0 @@ |
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyNw588p7A9RaexQuHa1ZGYsqX+B9PlcBWPY7PgJCTNAMsLN9neH+SEHjc3VO9f1a5p+2YJSu6nrM39MJHiqXynX4VwILfCXrEfUCKRdr8KOfDipoH0fkX/9NcDZU1mU1Hx7yVgRe/sbnjrGsuYu1k6fBUfAV73jB8/UWS7I4zpp+iVAW41bPDLPJmMlxO//V6jvze8rtAqc4W0YuwkTN5tJQR7sZSUFSzZHYfjRlSesRaKRrfcryu813ak39/bIbkuntWFqJhi7Z1R7rWIF2BCj7xwnMn5JwN33XeqW+b+KbZZ4n5ikjQ53VPpdkrLgzVkBN1ZooUbz1QaqjxozSZ iseletsk@almalinux.org |
@ -1 +0,0 @@ |
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeNW6Ja6L2EcSjtfrQk/pLrUQoB3ORcp5VPZhEqx6GXdv+J5CXZUlUbx2MZx9/Ir9tsdqjcxqVpRzNnefgUkqnSuJLH7J2kp+hUXXqdLjBUJI1QT6aPVyWxrgpTkpvuPKSQp5SXfmbj3FrWYCJi9wHwezARO+BtSpHMNLcyDRm5iPHYXOAljCxdxnbUQuU6SpmseLjwzOtgd6q+MkxZU+d7FT5zBVl0Z8H2DyKachDN/ah51MJ6rt2DYrCcUzIVa+JtJ7SSXSa0MIJQukhcXZMKeIqXJpoFw/FbptjL5tsAhZ6COdvuFzyaayKsTIG9mKpVbfXK6LVddPgRVvYOfZL jack |
@ -1 +0,0 @@ |
|||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq08dp40WevtPv9FG/dA61MVY364TYhhMvwgMQNxqmCGzcxs0MVFlIGT/xJrd6rq6W0ORiC0WEG3msRqwKI+0KtbKKn2jKPk7P2vkZQv2Gpn/b0KgP2WodPHUXUdl1gPrX/L/SqgC3W2DKmCWojnL/mV51VjC9fCMj6Swszz/c9BUaASZUXoce1VcthA93alPASo9KBcHUgQnbw/MS5c22wnPlOVUvA1dFtTbeqI/EkERNxDS8T/ZEHXzYXsTczFe2Gpdyh6gy5T+LTv5tUONG4fKrWjdkXmZ6w0RvUrzdxHXmjF7SDvUgpHtv49HjpXYgFLzAaBoeXftRoV3fTJwuQ== leonid |
@ -1 +0,0 @@ |
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCoLG3WPkrxwAmbVZKf5bffLiREPi0/YHezYu342OVhjokklmdXm1TcqW3WXDChDB83qaZ4KEbP2aqqwpJNwIv8hz6njFTYgqRyjNFKtTmlTEBSzel225pbm8Rt0B4I4ghJdw84JY6wxMLSkhtF0QsjzW6RcJH4YD+K+8GRH+qA3XL4JeTspB5W94gTsBoTq+wIwi4Ph3U0yfsQ6iozvoi+9OiuXWm1YnoVJ74mFMBQXlR3W1gu+fGu5EYyCUrqgxbwjpcO+7c8GPZ8dF/SbmzIfcvqCL6I5jIWunIrNALNlLC6TJHFp9hs1/TkJa/N+sB4JgLr58aqb1+kyiF9fdr4fDgVFLM6Ij/QD1aSXfxJXoihiDVFBXUTf/vgzALbhwxQXFrA65gu5YfIDZTOxBRSq8FtCLlLXfNA4Cp3lk6oec3WN6z9te9VFORXCQzBYa/oi7OMIQQDkSMR3JpsdXUBcijxK9Y2r6NDwEJINlyyYyPfs5lepu64yube2a9TeXAQP7DPULrGsHo8bNoSJakqoBtT/vg5zwNyzfBxlhNMcEuyYjBG+80mmMsOg6D6G3Zipu9SyDmIMvK3p1w6VeUBp7XogvHLECISdWxYYjpWGv0O88fblu9gsZeFY9LJ4JQ1sZaUaQyFF6UxMhr/qwmNslF4HM/hsHZ9SCDr5a0g1w== matiss@hub256.com |
@ -1,22 +0,0 @@ |
|||
users: |
|||
- username: matiss |
|||
pubkey: '{{ lookup("file", "../files/ssh/id_rsa.matiss.pub") }}' |
|||
state: absent |
|||
- username: jack |
|||
pubkey: '{{ lookup("file", "../files/ssh/id_rsa.jack.pub") }}' |
|||
state: present |
|||
- username: eugene |
|||
pubkey: '{{ lookup("file", "../files/ssh/id_rsa.eugene.pub") }}' |
|||
state: present |
|||
- username: leonid |
|||
pubkey: '{{ lookup("file", "../files/ssh/id_rsa.leonid.pub") }}' |
|||
state: present |
|||
- username: iseletsk |
|||
pubkey: '{{ lookup("file", "../files/ssh/id_rsa.iseletsk.pub") }}' |
|||
state: present |
|||
|
|||
deployment_keys: |
|||
- '{{ lookup("file", "../files/ssh/id_rsa.jack.pub") }}' |
|||
- '{{ lookup("file", "../files/ssh/id_rsa.jack.pub") }}' |
|||
- '{{ lookup("file", "../files/ssh/id_rsa.leonid.pub") }}' |
|||
- '{{ lookup("file", "../files/ssh/id_rsa.iseletsk.pub") }}' |
@ -1 +0,0 @@ |
|||
performance_profile: 'virtual-guest' |
@ -1 +0,0 @@ |
|||
performance_profile: 'virtual-guest' |
@ -1,9 +0,0 @@ |
|||
[all:vars] |
|||
ansible_connection=ssh |
|||
ansible_python_interpreter=/usr/bin/python3 |
|||
|
|||
[production_web_servers] |
|||
almalinux.org ansible_ssh_host=3.210.88.35 |
|||
|
|||
[staging_web_servers] |
|||
staging.almalinux.org ansible_ssh_host=18.213.64.210 |
@ -1,8 +0,0 @@ |
|||
--- |
|||
- name: Restart journald |
|||
service: name='systemd-journald' state='restarted' |
|||
become: yes |
|||
|
|||
- name: Restart SSH |
|||
service: name='sshd' state='restarted' |
|||
become: yes |
@ -1,33 +0,0 @@ |
|||
--- |
|||
- name: Make Journal persist logs |
|||
ini_file: |
|||
path: /etc/systemd/journald.conf |
|||
section: Journal |
|||
option: Storage |
|||
value: persistent |
|||
mode: '0644' |
|||
backup: yes |
|||
notify: ['Restart journald'] |
|||
become: yes |
|||
|
|||
- name: Make Journal compress logs |
|||
ini_file: |
|||
path: /etc/systemd/journald.conf |
|||
section: Journal |
|||
option: Compress |
|||
value: 'true' |
|||
mode: '0644' |
|||
backup: yes |
|||
notify: ['Restart journald'] |
|||
become: yes |
|||
|
|||
- name: Make Journal store maximum of 30 days of logs |
|||
ini_file: |
|||
path: /etc/systemd/journald.conf |
|||
section: Journal |
|||
option: MaxRetentionSec |
|||
value: '1month' |
|||
mode: '0644' |
|||
backup: yes |
|||
notify: ['Restart journald'] |
|||
become: yes |
@ -1,20 +0,0 @@ |
|||
--- |
|||
- import_tasks: users.yml |
|||
- import_tasks: packages.yml |
|||
- import_tasks: services.yml |
|||
- import_tasks: journal.yml |
|||
|
|||
- name: Set timezone to UTC |
|||
timezone: |
|||
name: 'Etc/UTC' |
|||
become: yes |
|||
|
|||
- name: Set tuned profile |
|||
shell: tuned-adm profile '{{ performance_profile }}' |
|||
when: performance_profile is defined |
|||
changed_when: False |
|||
become: yes |
|||
|
|||
- hostname: |
|||
name: '{{ inventory_hostname }}' |
|||
become: yes |
@ -1,12 +0,0 @@ |
|||
--- |
|||
- name: Ensure common system packages |
|||
package: name='{{item}}' state=latest |
|||
loop: |
|||
- iotop |
|||
- tuned |
|||
- chrony |
|||
- traceroute |
|||
- bind-utils |
|||
- net-tools |
|||
- policycoreutils-python-utils |
|||
become: yes |
@ -1,8 +0,0 @@ |
|||
--- |
|||
- name: Enable common services |
|||
service: name='{{item}}' state=started enabled=yes |
|||
loop: |
|||
- sshd |
|||
- auditd |
|||
- tuned |
|||
become: yes |
@ -1,42 +0,0 @@ |
|||
--- |
|||
- name: Configure users |
|||
user: |
|||
name: '{{ item.username }}' |
|||
create_home: yes |
|||
shell: /bin/bash |
|||
groups: wheel |
|||
append: yes |
|||
update_password: always |
|||
state: '{{ item.state }}' |
|||
loop: '{{ users }}' |
|||
become: yes |
|||
tags: [ 'users' ] |
|||
|
|||
- name: Configure user SSH keys |
|||
authorized_key: |
|||
user: '{{ item.username }}' |
|||
state: present |
|||
key: '{{ item.pubkey }}' |
|||
exclusive: true |
|||
loop: '{{ users | selectattr("state", "equalto", "present") | list }}' |
|||
become: yes |
|||
tags: [ 'users' ] |
|||
|
|||
- name: Allow 'wheel' group to have passwordless sudo |
|||
lineinfile: |
|||
dest: /etc/sudoers |
|||
state: present |
|||
regexp: '^%wheel' |
|||
line: '%wheel ALL=(ALL) NOPASSWD: ALL' |
|||
validate: 'visudo -cf %s' |
|||
become: yes |
|||
|
|||
- name: Disable root login over SSH |
|||
lineinfile: dest=/etc/ssh/sshd_config regexp="^PermitRootLogin" line="PermitRootLogin no" state=present |
|||
notify: ['Restart SSH'] |
|||
become: yes |
|||
|
|||
- name: Disable password login |
|||
lineinfile: dest=/etc/ssh/sshd_config regexp="^PasswordAuthentication" line="PasswordAuthentication no" state=present |
|||
notify: [ 'Restart SSH' ] |
|||
become: yes |
@ -1,8 +0,0 @@ |
|||
-----BEGIN DH PARAMETERS----- |
|||
MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz |
|||
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a |
|||
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7 |
|||
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi |
|||
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD |
|||
ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== |
|||
-----END DH PARAMETERS----- |
@ -1,62 +0,0 @@ |
|||
[docker-ce-stable] |
|||
name=Docker CE Stable - $basearch |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable |
|||
enabled=1 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-stable-debuginfo] |
|||
name=Docker CE Stable - Debuginfo $basearch |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/stable |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-stable-source] |
|||
name=Docker CE Stable - Sources |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/source/stable |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-test] |
|||
name=Docker CE Test - $basearch |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/test |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-test-debuginfo] |
|||
name=Docker CE Test - Debuginfo $basearch |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/test |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-test-source] |
|||
name=Docker CE Test - Sources |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/source/test |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-nightly] |
|||
name=Docker CE Nightly - $basearch |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/nightly |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-nightly-debuginfo] |
|||
name=Docker CE Nightly - Debuginfo $basearch |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/nightly |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
|||
|
|||
[docker-ce-nightly-source] |
|||
name=Docker CE Nightly - Sources |
|||
baseurl=https://download.docker.com/linux/centos/$releasever/source/nightly |
|||
enabled=0 |
|||
gpgcheck=1 |
|||
gpgkey=https://download.docker.com/linux/centos/gpg |
@ -1,3 +0,0 @@ |
|||
#!/bin/bash |
|||
# DO NOT EDIT - managed by Ansible. |
|||
/sbin/nginx -t && systemctl reload nginx |
@ -1,59 +0,0 @@ |
|||
# DO NOT EDIT - managed by Ansible. |
|||
|
|||
user nginx nginx; |
|||
pid /run/nginx.pid; |
|||
worker_processes auto; |
|||
worker_rlimit_nofile 1000000; |
|||
|
|||
events { |
|||
multi_accept on; |
|||
worker_connections 65535; |
|||
use epoll; |
|||
} |
|||
|
|||
http { |
|||
charset utf-8; |
|||
sendfile on; |
|||
sendfile_max_chunk 512k; |
|||
tcp_nopush on; |
|||
tcp_nodelay on; |
|||
server_tokens off; |
|||
log_not_found off; |
|||
types_hash_max_size 2048; |
|||
client_max_body_size 16M; |
|||
reset_timedout_connection on; |
|||
server_names_hash_bucket_size 128; |
|||
|
|||
# MIME |
|||
include mime.types; |
|||
default_type application/octet-stream; |
|||
|
|||
# Logging |
|||
access_log /var/log/nginx/access.log; |
|||
error_log /var/log/nginx/error.log warn; |
|||
|
|||
# Limits |
|||
limit_req_log_level warn; |
|||
limit_req_zone $binary_remote_addr zone=login:10m rate=10r/m; |
|||
|
|||
# SSL |
|||
ssl_session_timeout 1d; |
|||
ssl_session_cache shared:SSL:150m; |
|||
ssl_session_tickets off; |
|||
|
|||
# Diffie-Hellman parameter for DHE ciphersuites |
|||
ssl_dhparam /etc/nginx/dhparam.pem; |
|||
|
|||
# Mozilla Intermediate configuration |
|||
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; |
|||
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; |
|||
|
|||
# OCSP Stapling |
|||
ssl_stapling on; |
|||
ssl_stapling_verify on; |
|||
resolver 1.1.1.1 1.0.0.1 valid=60s; |
|||
resolver_timeout 2s; |
|||
|
|||
# Load configs |
|||
include /etc/nginx/conf.d/*.conf; |
|||
} |
@ -1,152 +0,0 @@ |
|||
# DO NOT EDIT - managed by Ansible. |
|||
upstream almalinux_org_backends { |
|||
server 127.0.0.1:9000; |
|||
server 127.0.0.1:9001; |
|||
server 127.0.0.1:9002; |
|||
} |
|||
|
|||
server { |
|||
server_name almalinux.org www.almalinux.org staging.almalinux.org; |
|||
root /var/www/almalinux.org/current/public; |
|||
listen 443 ssl http2; |
|||
listen [::]:443 ssl http2; |
|||
|
|||
# SSL |
|||
ssl_certificate /etc/ssl/almalinux.org.cert.pem; |
|||
ssl_certificate_key /etc/ssl/almalinux.org.key.pem; |
|||
|
|||
# . files |
|||
location ~ /\.(?!well-known) { |
|||
deny all; |
|||
} |
|||
|
|||
# logging |
|||
access_log /var/log/nginx/almalinux.org.access.log; |
|||
error_log /var/log/nginx/almalinux.org.error.log warn; |
|||
|
|||
location ~ /static/ { |
|||
root /var/www/almalinux.org/current/public; |
|||
|
|||
# assets, media |
|||
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|svgz?|svpng|gif|png|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ { |
|||
# 1 day cache |
|||
add_header Cache-Control "private, no-transform, must-revalidate, max-age=86400"; |
|||
etag on; |
|||
access_log off; |
|||
} |
|||
|
|||
# fonts |
|||
location ~* \.(?:ttf|ttc|otf|eot|woff2?)$ { |
|||
# 7 day cache |
|||
add_header Cache-Control "private, no-transform, must-revalidate, max-age=604800"; |
|||
add_header Access-Control-Allow-Origin "*"; |
|||
etag on; |
|||
access_log off; |
|||
} |
|||
} |
|||
|
|||
location ~ /media/ { |
|||
root /var/www/almalinux.org; |
|||
|
|||
# media |
|||
location ~* \.(?:jpe?g|svgz?|svpng|gif|png|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ { |
|||
# 1 day cache |
|||
add_header Cache-Control "private, no-transform, must-revalidate, max-age=86400"; |
|||
etag on; |
|||
access_log off; |
|||
} |
|||
} |
|||
|
|||
location / { |
|||
include /etc/nginx/uwsgi_params; |
|||
uwsgi_param Host $host; |
|||
uwsgi_param X-Real-IP $remote_addr; |
|||
uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for; |
|||
uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto; |
|||
uwsgi_pass almalinux_org_backends; |
|||
} |
|||
|
|||
# favicon.ico |
|||
location = /favicon.ico { |
|||
expires 1d; |
|||
log_not_found off; |
|||
access_log off; |
|||
} |
|||
|
|||
# robots.txt |
|||
location = /robots.txt { |
|||
expires 1d; |
|||
log_not_found off; |
|||
access_log off; |
|||
} |
|||
|
|||
# security.txt |
|||
location = /security.txt { |
|||
expires 1h; |
|||
access_log off; |
|||
root /var/www/_default; |
|||
} |
|||
|
|||
# HTML |
|||
location ~* \.(?:html|htm?)$ { |
|||
add_header Cache-Control "no-cache, no-transform, must-revalidate"; |
|||
etag on; |
|||
} |
|||
|
|||
# assets, media |
|||
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|svgz?|svpng|gif|png|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ { |
|||
# 1 hour cache |
|||
add_header Cache-Control "private, no-transform, must-revalidate, max-age=3600"; |
|||
etag on; |
|||
access_log off; |
|||
} |
|||
|
|||
# fonts |
|||
location ~* \.(?:ttf|ttc|otf|eot|woff2?)$ { |
|||
# 7 day cache |
|||
add_header Cache-Control "private, no-transform, must-revalidate, max-age=604800"; |
|||
add_header Access-Control-Allow-Origin "*"; |
|||
etag on; |
|||
access_log off; |
|||
} |
|||
|
|||
# gzip |
|||
gzip on; |
|||
gzip_vary on; |
|||
gzip_proxied any; |
|||
gzip_comp_level 6; |
|||
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; |
|||
} |
|||
|
|||
# HTTP to HTTPS redirect |
|||
server { |
|||
listen 80; |
|||
listen [::]:80; |
|||
server_name almalinux.org www.almalinux.org staging.almalinux.org almalinux.net almalinux.com; |
|||
|
|||
# ACME-challenge |
|||
location ^~ /.well-known/acme-challenge/ { |
|||
allow all; |
|||
default_type 'text/plain'; |
|||
root /var/www/_letsencrypt; |
|||
} |
|||
|
|||
location / { |
|||
return 301 https://$host$request_uri; |
|||
} |
|||
} |
|||
|
|||
# Redirect for .net and .com |
|||
server { |
|||
server_name almalinux.net almalinux.com; |
|||
listen 443 ssl http2; |
|||
listen [::]:443 ssl http2; |
|||
|
|||
# SSL |
|||
ssl_certificate /etc/ssl/almalinux.com.cert.pem; |
|||
ssl_certificate_key /etc/ssl/almalinux.com.key.pem; |
|||
|
|||
location / { |
|||
return 301 https://almalinux.org$request_uri; |
|||
} |
|||
} |
@ -1,8 +0,0 @@ |
|||
# DO NOT EDIT - managed by Ansible. |
|||
[nginx-stable] |
|||
name=nginx stable repo |
|||
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ |
|||
gpgcheck=1 |
|||
enabled=1 |
|||
gpgkey=https://nginx.org/keys/nginx_signing.key |
|||
module_hotfixes=true |
@ -1,2 +0,0 @@ |
|||
Contact: https://almalinux.atlassian.net/browse/SEC |
|||
Preferred-Languages: en |
@ -1,6 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
openssl req -x509 -nodes -days 398 -newkey rsa:2048 \ |
|||
-keyout /etc/ssl/selfsigned.key \ |
|||
-out /etc/ssl/selfsigned.crt \ |
|||
-subj '/C=ES/ST=Moon/L=Moon/O=Acme Inc./OU=IT Department/CN=localhost' |
@ -1,12 +0,0 @@ |
|||
--- |
|||
- name: Reload NGINX |
|||
service: name='nginx' state='reloaded' |
|||
become: yes |
|||
|
|||
- name: Restart NGINX |
|||
service: name='nginx' state='restarted' |
|||
become: yes |
|||
|
|||
- name: Generate temporary SSL |
|||
command: /opt/tempcrt.sh |
|||
become: yes |
@ -1,37 +0,0 @@ |
|||
--- |
|||
- name: Remove not-Docker |
|||
package: name='{{item}}' state=absent |
|||
loop: |
|||
- docker |
|||
- docker-client |
|||
- docker-client-latest |
|||
- docker-common |
|||
- docker-latest |
|||
- docker-latest-logrotate |
|||
- docker-logrotate |
|||
- docker-engine |
|||
become: yes |
|||
|
|||
- name: Configure Docker upstream repository |
|||
copy: src='docker.repo' dest='/etc/yum.repos.d/docker.repo' mode='0644' owner=root group=root |
|||
become: yes |
|||
|
|||
- name: Install Docker |
|||
package: name='{{item}}' state=latest |
|||
loop: |
|||
- docker-ce |
|||
- docker-ce-cli |
|||
- containerd.io |
|||
become: yes |
|||
|
|||
- name: Ensure latest pip |
|||
pip: name='pip' executable='/usr/local/bin/pip3' extra_args='--upgrade' |
|||
become: yes |
|||
|
|||
- name: Install docker-compose |
|||
pip: name='docker-compose' executable='/usr/local/bin/pip3' |
|||
become: yes |
|||
|
|||
- name: Enable and start Docker service |
|||
service: name='docker' state=started enabled=yes |
|||
become: yes |
@ -1,5 +0,0 @@ |
|||
--- |
|||
- import_tasks: docker.yml |
|||
- import_tasks: users.yml |
|||
- import_tasks: nginx.yml |
|||
- import_tasks: website.yml |
@ -1,82 +0,0 @@ |
|||
--- |
|||
- name: Deploy temporary SSL cert build script |
|||
copy: src='tempcrt.sh' dest='/opt/tempcrt.sh' mode='0750' owner=root group=root |
|||
become: yes |
|||
|
|||
- name: Create temporary SSL cert if none exists |
|||
stat: |
|||
path: /etc/ssl/selfsigned.key |
|||
register: selfsigned_key |
|||
changed_when: not selfsigned_key.stat.exists |
|||
become: yes |
|||
notify: [ 'Generate temporary SSL' ] |
|||
|
|||
- meta: flush_handlers |
|||
|
|||
- name: Install certbot |
|||
pip: name='certbot' executable='/usr/local/bin/pip3' |
|||
become: yes |
|||
|
|||
- name: Configure NGINX upstream repository |
|||
copy: src='nginx.repo' dest='/etc/yum.repos.d/nginx.repo' mode='0644' owner=root group=root |
|||
become: yes |
|||
|
|||
- name: Install NGINX |
|||
package: name='nginx' state=latest |
|||
notify: [ 'Restart NGINX' ] |
|||
become: yes |
|||
|
|||
- name: Install OpenSSL |
|||
package: name='openssl' state=latest |
|||
become: yes |
|||
|
|||
- name: Configure NGINX |
|||
copy: src='nginx.conf' dest='/etc/nginx/nginx.conf' mode='0644' owner='root' group='root' |
|||
notify: [ 'Reload NGINX' ] |
|||
become: yes |
|||
|
|||
- name: Deploy dhparam.pem |
|||
copy: src='dhparam.pem' dest='/etc/nginx/dhparam.pem' mode='0644' owner=root group=root |
|||
notify: [ 'Reload NGINX' ] |
|||
become: yes |
|||
|
|||
- name: Create common site directory |
|||
file: path='/var/www/_default' state=directory mode='0755' owner=root group=root |
|||
become: yes |
|||
|
|||
- name: Deploy security.txt |
|||
copy: src='security.txt' dest='/var/www/_default/security.txt' mode='0644' owner=root group=root |
|||
become: yes |
|||
|
|||
- name: Create letsencrypt known root |
|||
file: path='/var/www/_letsencrypt' state=directory mode='0755' owner='nginx' group='nginx' |
|||
become: yes |
|||
|
|||
- name: Create letsencrypt update hook directory |
|||
file: path='/etc/letsencrypt/renewal-hooks/post/' state=directory mode='0755' owner='root' group='root' |
|||
become: yes |
|||
|
|||
- name: Deploy LetsEncrypt NGINX post-update hook |
|||
copy: src='le-nginx-reload.sh' dest='/etc/letsencrypt/renewal-hooks/post/nginx-reload.sh' mode='0755' owner=root group=root |
|||
become: yes |
|||
|
|||
- name: Enable and start NGINX service |
|||
service: name='nginx' state=started enabled=yes |
|||
become: yes |
|||
|
|||
- name: Create certbot update CRON job |
|||
cron: |
|||
name: 'certbot auto update' |
|||
minute: '0' |
|||
hour: '8' |
|||
user: 'root' |
|||
job: '/usr/local/bin/certbot renew --webroot --email info@almalinux.org -w /var/www/_letsencrypt -n --agree-tos 2>&1 | /usr/bin/logger -t certbot' |
|||
cron_file: 'certbot-auto_update' |
|||
become: yes |
|||
|
|||
- name: Set httpd_can_network_connect flag on and keep it persistent across reboots |
|||
seboolean: |
|||
name: httpd_can_network_connect |
|||
state: yes |
|||
persistent: yes |
|||
become: yes |
@ -1,32 +0,0 @@ |
|||
--- |
|||
- name: Ensure group deploy exists |
|||
group: |
|||
name: deploy |
|||
state: present |
|||
gid: 900 |
|||
become: yes |
|||
|
|||
- name: Configure deployment user |
|||
user: |
|||
name: deploy |
|||
create_home: yes |
|||
shell: /bin/bash |
|||
groups: docker |
|||
append: yes |
|||
state: present |
|||
uid: 900 |
|||
become: yes |
|||
|
|||
- name: Ensure deploy .ssh directory |
|||
file: |
|||
path: /home/deploy/.ssh |
|||
state: directory |
|||
owner: deploy |
|||
group: deploy |
|||
mode: '0700' |
|||
become: yes |
|||
|
|||
- name: Add all authorized keys to deployment user |
|||
template: src='web_authorized_keys.jinja2' dest='/home/deploy/.ssh/authorized_keys' mode='0600' owner=deploy group=deploy |
|||
become: yes |
|||
tags: [ 'users' ] |
@ -1,84 +0,0 @@ |
|||
--- |
|||
- name: Ensure deployment directory |
|||
file: |
|||
path: /opt/almalinux.org/ |
|||
state: directory |
|||
owner: deploy |
|||
group: deploy |
|||
mode: '0750' |
|||
become: yes |
|||
|
|||
- name: Ensure deployment releases directory |
|||
file: |
|||
path: /opt/almalinux.org/release/ |
|||
state: directory |
|||
owner: deploy |
|||
group: deploy |
|||
mode: '0750' |
|||
become: yes |
|||
|
|||
- name: Ensure webroot directory |
|||
file: |
|||
path: /var/www/almalinux.org/ |
|||
state: directory |
|||
owner: deploy |
|||
group: nginx |
|||
mode: '0750' |
|||
become: yes |
|||
|
|||
- name: Ensure webroot release deployment directory |
|||
file: |
|||
path: /var/www/almalinux.org/release/ |
|||
state: directory |
|||
owner: deploy |
|||
group: nginx |
|||
mode: '0750' |
|||
become: yes |
|||
|
|||
- name: Ensure media uploads directory |
|||
file: |
|||
path: /var/www/almalinux.org/media/ |
|||
state: directory |
|||
owner: deploy |
|||
group: nginx |
|||
mode: '0750' |
|||
recurse: true |
|||
become: yes |
|||
|
|||
- name: Check if site SSL cert exists |
|||
stat: |
|||
path: /etc/ssl/almalinux.org.cert.pem |
|||
register: site_cert |
|||
become: yes |
|||
|
|||
- name: Check if site SSL key exists |
|||
stat: |
|||
path: /etc/ssl/almalinux.org.key.pem |
|||
register: site_key |
|||
become: yes |
|||
|
|||
- name: Link site cert to temporary cert if site cert does not exist |
|||
file: |
|||
src: /etc/ssl/selfsigned.crt |
|||
dest: /etc/ssl/almalinux.org.cert.pem |
|||
owner: root |
|||
group: root |
|||
state: link |
|||
become: yes |
|||
when: not site_cert.stat.exists |
|||
|
|||
- name: Link site key to temporary key if site key does not exist |
|||
file: |
|||
src: /etc/ssl/selfsigned.key |
|||
dest: /etc/ssl/almalinux.org.key.pem |
|||
owner: root |
|||
group: root |
|||
state: link |
|||
become: yes |
|||
when: not site_key.stat.exists |
|||
|
|||
- name: Configure almalinux.org vhost |
|||
copy: src='nginx.conf.d/almalinux.org.conf' dest='/etc/nginx/conf.d/almalinux.org.conf' mode='0644' owner=root group=root |
|||
notify: [ 'Reload NGINX' ] |
|||
become: yes |
|||
tags: [ 'www_conf' ] |
@ -1,3 +0,0 @@ |
|||
{% for key in deployment_keys %} |
|||
{{ key }} |
|||
{% endfor %} |
@ -1,11 +0,0 @@ |
|||
--- |
|||
- hosts: production_web_servers |
|||
roles: |
|||
- role: commons |
|||
- role: website |
|||
|
|||
- hosts: staging_web_servers |
|||
roles: |
|||
- role: commons |
|||
- role: website |
|||
|
@ -0,0 +1,6 @@ |
|||
--- |
|||
title: "{{ replace .Name "-" " " | title }}" |
|||
date: {{ .Date }} |
|||
draft: true |
|||
--- |
|||
|
@ -0,0 +1,838 @@ |
|||
|
|||
.row{ |
|||
margin-left: 0 !important; |
|||
margin-right: 0 !important; |
|||
} |
|||
|
|||
.container{ |
|||
padding: 0 ; |
|||
} |
|||
.al-primary-navbar .container { |
|||
padding-left: 15px !important; |
|||
padding-right: 15px !important; |
|||
} |
|||
.al-index-faq .container { |
|||
padding-left: 15px !important; |
|||
padding-right: 15px !important; |
|||
} |
|||
.al-index-press .container { |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
.elevate-container-wrap{ |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
.al-page-index .al-hero-cta-primary { |
|||
background: #24c2ff; |
|||
color: #222222; |
|||
margin:10px 10px 10px 0; |
|||
} |
|||
.al-page-index .al-hero-cta-primary:hover { |
|||
background: #0bbbff; |
|||
} |
|||
.al-page-index .al-hero-cta-secondary { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
margin: 10px; |
|||
} |
|||
.al-page-index .al-hero-cta-secondary:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary { |
|||
background: #ffcb12; |
|||
color: #222222; |
|||
margin: 10px; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary img { |
|||
display: inline; |
|||
height: 1em; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary:hover { |
|||
background: #f8c100; |
|||
} |
|||
.al-page-index .al-index-feature-container { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-feature-container .al-index-feature-icon { |
|||
color: white; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
} |
|||
[dir=rtl] .al-page-index .al-index-feature-container .al-index-feature-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-index .al-index-community-container { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-icon { |
|||
color: #fefefe; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
flex: 0; |
|||
} |
|||
[dir=rtl] .al-page-index .al-index-community-container .al-index-community-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-index .al-index-community-container .al-index-community-icon.img { |
|||
height: 32px; |
|||
box-sizing: border-box; |
|||
} |
|||
.al-index-community-content-wrap { |
|||
display: flex; |
|||
flex: 1; |
|||
flex-direction: column; |
|||
} |
|||
|
|||
.al-index-community-content-wrap p{ |
|||
|
|||
flex: 1; |
|||
|
|||
} |
|||
.al-page-index .al-index-community-container .al-community-cta { |
|||
min-width: 120px; |
|||
} |
|||
.al-page-index .al-index-backed-by h2.border-bottom { |
|||
border-bottom-color: #14598a !important; |
|||
} |
|||
.al-backed-by-list a{ |
|||
margin-top: 3rem !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list { |
|||
justify-content: space-between; |
|||
padding: 0; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list div.col { |
|||
text-align: center; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list .al-backer-logo-container { |
|||
height: 100%; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list .al-backer-logo { |
|||
height: 100%; |
|||
width: 120px; |
|||
/* padding: 10px; */ |
|||
} |
|||
.al-page-index .al-index-commercial-support h2.border-bottom { |
|||
border-bottom-color: #14598a !important; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list { |
|||
justify-content: center; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list div.col { |
|||
text-align: center; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list .al-commercial-supporter-logo-container { |
|||
height: 100%; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list .al-commercial-supporter-logo { |
|||
max-width: 120px; |
|||
width: 100%; |
|||
} |
|||
.al-page-index .al-index-faq { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button { |
|||
border: none; |
|||
box-shadow: none; |
|||
font-weight: normal; |
|||
background: #104469; |
|||
width: 100% !important; |
|||
text-align: left !important; |
|||
padding: 20px 10px !important; |
|||
color: #fefefe !important; |
|||
font-size: 15px; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button:active, .al-page-index .al-index-faq .accordion-button.active, .al-page-index .al-index-faq .accordion-button:hover, .al-page-index .al-index-faq .accordion-button:focus { |
|||
box-shadow: none; |
|||
outline: none; |
|||
border: none; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button:not(.collapsed) { |
|||
background: #104469; |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-body { |
|||
background: #114a73; |
|||
padding: 15px 10px; |
|||
margin-top: -8px; |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-newsletter a { |
|||
text-decoration: underline !important; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-input { |
|||
background-color: white; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-button { |
|||
background: #86da2f; |
|||
color: #000518; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-button:hover { |
|||
color: #000518; |
|||
background: #79cb24; |
|||
} |
|||
.al-page-index .al-index-press { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item { |
|||
margin-bottom: 10px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote { |
|||
padding-bottom: 7px; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 1.4rem; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:before { |
|||
content: open-quote; |
|||
padding-right: 3px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:after { |
|||
content: close-quote; |
|||
padding-left: 3px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:before, .al-page-index .al-index-press .al-index-press-item blockquote.blockquote:after { |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
vertical-align: top; |
|||
display: inline-block; |
|||
color: #faf5f5; |
|||
font-weight: bold; |
|||
font-size: 1rem; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer cite { |
|||
font-style: normal; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer a { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer a:hover { |
|||
text-decoration: underline; |
|||
color: #f7fbff; |
|||
} |
|||
|
|||
.al-page-blog-index .al-page-blog-posts article a.al-article-title-link { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article a.al-article-title-link h2 { |
|||
font-weight: 400; |
|||
font-size: 1.5rem; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-date { |
|||
color: #efefef; |
|||
font-size: 0.82rem; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-date i { |
|||
font-size: 0.8rem; |
|||
} |
|||
[dir=rtl] .al-page-blog-index .al-page-blog-posts article .al-article-date i { |
|||
padding-right: 0; |
|||
padding-left: 6px; |
|||
} |
|||
|
|||
.al-page-blog-index .al-page-blog-posts article .al-article-excerpt { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue { |
|||
text-decoration: none; |
|||
font-size: 0.9rem; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue:hover { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author img { |
|||
width: 40px; |
|||
height: 40px; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author .al-article-author-name { |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
margin: 0px; |
|||
margin-bottom: 5px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author .al-article-author-bio { |
|||
font-style: italic; |
|||
font-size: 12px; |
|||
margin: 0px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .pagination .page-item .page-link { |
|||
background: #196da9; |
|||
border: none; |
|||
} |
|||
.al-page-blog-index .pagination .page-item .page-link:hover { |
|||
color: #efefef; |
|||
} |
|||
.al-page-blog-index .pagination .page-item.active .page-link { |
|||
background: #1f8ad5; |
|||
} |
|||
.al-page-blog-index .pagination .page-item.disabled .page-link { |
|||
color: #051723; |
|||
} |
|||
|
|||
.al-page-blog-post article .al-article-date { |
|||
color: #efefef; |
|||
font-size: 0.82rem; |
|||
} |
|||
.al-page-blog-post article .al-article-date i { |
|||
font-size: 0.8rem; |
|||
margin-right: 5px; |
|||
} |
|||
[dir=rtl] .al-page-blog-post article .al-article-date i { |
|||
padding-right: 0; |
|||
padding-left: 6px; |
|||
} |
|||
|
|||
.al-page-blog-post article .al-article-content { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-blog-post article .al-article-content img { |
|||
max-width: 100%; |
|||
} |
|||
.al-page-blog-post article .al-page-blog-author img { |
|||
width: 40px; |
|||
height: 40px; |
|||
} |
|||
.al-page-blog-post article .al-page-blog-author .al-page-blog-author-name { |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
margin: 0px; |
|||
margin-bottom: 5px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-post article .al-page-blog-author .al-page-blog-author-bio { |
|||
font-style: italic; |
|||
font-size: 12px; |
|||
margin: 0px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-post .al-blog-pagination .al-blog-previous-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-blog-post .al-blog-pagination .al-blog-previous-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-blog-post .al-blog-pagination .al-blog-next-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
float: right; |
|||
} |
|||
.al-page-blog-post .al-blog-pagination .al-blog-next-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-blog-post .al-blog-pagination a { |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
padding: 10px 16px; |
|||
font-size: 15px; |
|||
} |
|||
|
|||
.custom-blog-page-section{ |
|||
width: 680px; |
|||
margin: auto; |
|||
} |
|||
.al-page-blog-post .container{ |
|||
padding: 3rem 15px !important; |
|||
} |
|||
.al-page-elevate-index .al-cta-discuss { |
|||
background: #2891ff; |
|||
color: #222; |
|||
} |
|||
.al-page-elevate-index .al-cta-discuss:hover { |
|||
background: #0f84ff; |
|||
} |
|||
.al-page-elevate-index .al-cta-learn-how { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-elevate-index .al-cta-learn-how:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-elevate-index .faq-container { |
|||
margin-bottom: 120px; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim { |
|||
padding-top: 25px; |
|||
padding-bottom: 25px; |
|||
font-weight: 300; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim > div { |
|||
padding-bottom: 26px; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim > div div.question { |
|||
font-weight: 500; |
|||
font-size: 1.1rem; |
|||
text-transform: uppercase; |
|||
margin-bottom: 8px; |
|||
} |
|||
|
|||
.al-page-foundation-members-index .al-members .al-member-item { |
|||
height: 100%; |
|||
background: rgb(14, 59, 92); |
|||
} |
|||
.al-page-foundation-members-index .al-member-apply-category-icon { |
|||
color: white; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
} |
|||
[dir=rtl] .al-page-foundation-members-index .al-member-apply-category-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-foundation-members-index .al-member-apply-cta { |
|||
min-width: 120px; |
|||
} |
|||
.al-page-foundation-members-index .fw-light .al-laws-link, .al-page-foundation-members-index .fw-light .al-guideline-link { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-foundation-members-index .fw-light .al-laws-link:hover, .al-page-foundation-members-index .fw-light .al-laws-link:active, .al-page-foundation-members-index .fw-light .al-guideline-link:hover, .al-page-foundation-members-index .fw-light .al-guideline-link:active { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-foundation-members-index .al-membership-info { |
|||
display: none; |
|||
} |
|||
.al-membership-info table { |
|||
color: #fefefe !important; |
|||
} |
|||
.al-page-foundation-members-index #al-mirror-info ul, .al-page-foundation-members-index #al-sponsor-info ul { |
|||
list-style-type: "- "; |
|||
} |
|||
.al-page-foundation-members-index .member-info:hover { |
|||
color: #86da2f; |
|||
} |
|||
.al-page-foundation-members-index .al-foundation-members-apply-content-wrap { |
|||
display: flex; |
|||
flex-direction: column; |
|||
flex: 1; |
|||
} |
|||
.al-page-foundation-members-index .al-foundation-members-apply-content-wrap p { |
|||
flex: 1; |
|||
} |
|||
|
|||
.al-page-contribute-index { |
|||
padding-bottom: 120px; |
|||
} |
|||
.al-page-contribute-index .al-subtle-links a { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-contribute-index .al-subtle-links a:hover, .al-page-contribute-index .al-subtle-links a:active { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-contribute-index .al-cta-chat { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-contribute-index .al-cta-chat:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-contribute-index .al-member-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-contribute-index .al-member-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
|
|||
body, html { |
|||
line-height: initial; |
|||
font-weight: normal; |
|||
font-style: normal; |
|||
-webkit-font-smoothing: subpixel-antialiased; |
|||
-moz-osx-font-smoothing: grayscale; |
|||
text-rendering: auto; |
|||
letter-spacing: normal; |
|||
word-spacing: normal; |
|||
text-transform: none; |
|||
text-shadow: none; |
|||
position: relative; |
|||
box-sizing: border-box; |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
|
|||
body { |
|||
background: #0f4266; |
|||
} |
|||
|
|||
h1, h2, h3, h4, h5, h6 { |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
} |
|||
|
|||
.al-body-container { |
|||
min-height: 65vh; |
|||
} |
|||
|
|||
button:active { |
|||
outline: none; |
|||
border: 0px solid transparent; |
|||
} |
|||
|
|||
button:focus, .btn:focus { |
|||
outline: none !important; |
|||
box-shadow: none !important; |
|||
} |
|||
|
|||
.row { |
|||
margin-left: 0 !important; |
|||
margin-right: 0 !important; |
|||
} |
|||
|
|||
.al-primary-navbar { |
|||
background: #082336; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-weight: 500; |
|||
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.07), 0 3px 3px -2px rgba(0, 0, 0, 0.06), 0 1px 8px 0 rgba(0, 0, 0, 0.1); |
|||
} |
|||
.al-primary-navbar .nav-link.al-download-button { |
|||
font-weight: 500; |
|||
background-color: #86da2f; |
|||
color: black !important; |
|||
} |
|||
.al-primary-navbar .nav-link.al-download-button:hover { |
|||
color: black !important; |
|||
background: #79cb24; |
|||
|
|||
} |
|||
.al-primary-navbar .nav-link { |
|||
padding-left: 1rem !important; |
|||
padding-right: 1rem !important; |
|||
color: #fff !important; |
|||
font-size: 15px; |
|||
transition: 0.3s ease-in-out; |
|||
text-decoration: none !important; |
|||
cursor: pointer !important; |
|||
} |
|||
.al-primary-navbar .nav-link:hover { |
|||
color: #1e87f8 !important; |
|||
} |
|||
.al-primary-navbar.with-motd { |
|||
padding-bottom: 0; |
|||
border-bottom: 0; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark { |
|||
background: #082336; |
|||
border: 0; |
|||
} |
|||
.dropdown-item{ |
|||
text-decoration: none !important; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark .dropdown-item:hover { |
|||
background-color: rgba(255, 255, 255, 0.1490196078) !important; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark .dropdown-divider { |
|||
border-color: #264154; |
|||
} |
|||
|
|||
.al-primary-navbar .al-language-switch img { |
|||
height: 24px; |
|||
} |
|||
.al-primary-navbar .al-language-link { |
|||
text-transform: capitalize; |
|||
color: aliceblue; |
|||
} |
|||
.al-primary-navbar .al-translate-callout { |
|||
font-size: 0.92rem; |
|||
} |
|||
.al-primary-navbar .al-translate-callout a { |
|||
display: flex; |
|||
align-items: center; |
|||
color: #69b1ff; |
|||
} |
|||
.al-primary-navbar .al-translate-callout a i { |
|||
margin-right: 0.4rem; |
|||
font-size: 0.8rem; |
|||
} |
|||
|
|||
#al-motd { |
|||
width: 100%; |
|||
background: #051520; |
|||
/* margin-top: 8px; */ |
|||
padding-top: 12px; |
|||
padding-bottom: 12px; |
|||
font-size: 0.8rem; |
|||
} |
|||
#al-motd > .container { |
|||
display: flex; |
|||
} |
|||
#al-motd > .container > i { |
|||
padding-right: 8px; |
|||
} |
|||
#al-motd > .container > .text { |
|||
display: block; |
|||
font-weight: 500; |
|||
|
|||
} |
|||
#al-motd > .container > .text a { |
|||
text-decoration: none; |
|||
} |
|||
#al-motd > .container > .text a:hover { |
|||
text-decoration: underline; |
|||
color: inherit; |
|||
} |
|||
|
|||
section h1.al-section-title { |
|||
font-size: 2.6rem; |
|||
font-weight: 300; |
|||
} |
|||
|
|||
.al-primary-footer { |
|||
background: #0D3654; |
|||
padding-top: 122px; |
|||
padding-bottom: 132px; |
|||
} |
|||
|
|||
.al-py-lg { |
|||
padding-top: 3rem !important; |
|||
padding-bottom: 3rem !important; |
|||
} |
|||
|
|||
.al-py-md { |
|||
padding-top: 2.5rem !important; |
|||
padding-bottom: 2.5rem !important; |
|||
} |
|||
|
|||
.al-text-shadow-dark { |
|||
text-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); |
|||
} |
|||
|
|||
.btn { |
|||
transition-property: all; |
|||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); |
|||
transition-duration: 0.12s; |
|||
text-decoration: none !important; |
|||
} |
|||
|
|||
a{ |
|||
transition-property: all; |
|||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); |
|||
transition-duration: 0.12s; |
|||
text-decoration: underline; |
|||
} |
|||
a:hover{ |
|||
color: #9db4cc; |
|||
} |
|||
|
|||
.al-wysiwyg { |
|||
all: revert; |
|||
font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 15px; |
|||
} |
|||
.al-wysiwyg h1, .al-wysiwyg h2, .al-wysiwyg h3, .al-wysiwyg h4, .al-wysiwyg h5, .al-wysiwyg h6 { |
|||
all: revert; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
} |
|||
.al-wysiwyg ul, |
|||
.al-wysiwyg ol, |
|||
.al-wysiwyg ul li, |
|||
.al-wysiwyg ol li, |
|||
.al-wysiwyg p, |
|||
.al-wysiwyg pre, |
|||
.al-wysiwyg blockquote { |
|||
all: revert; |
|||
font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 15px; |
|||
} |
|||
.al-wysiwyg pre, .al-wysiwyg code { |
|||
font-family: "SF Mono", "source code pro", consolas, "courier new", courier, monospace; |
|||
} |
|||
|
|||
.fw-bold{ |
|||
font-weight: 700 !important; |
|||
} |
|||
.fw-light{ |
|||
font-weight: 300; |
|||
} |
|||
.fs-6 { |
|||
font-size: 1rem!important; |
|||
} |
|||
.display-5{ |
|||
font-size: 46px !important; |
|||
line-height: 47px |
|||
} |
|||
.lead { |
|||
font-size: 1.25rem !important; |
|||
font-weight: 400 !important; |
|||
} |
|||
|
|||
|
|||
@media (min-width:1400px){ |
|||
.container{ |
|||
max-width: 1320px; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
.al-certified-amd-page .banner { |
|||
background-image: url(/images/main-image.png); |
|||
background-size: cover; |
|||
padding: 180px 0 300px; |
|||
background-position:25%; |
|||
} |
|||
.al-certified-amd-page .container { |
|||
margin: 0 auto; |
|||
max-width: 1180px; |
|||
} |
|||
.al-certified-amd-page .banner h1 { |
|||
font-size: 40px; |
|||
font-weight: 600; |
|||
max-width: 600px; |
|||
} |
|||
.al-certified-amd-page .banner p { |
|||
font-size: 22px; |
|||
font-style: italic; |
|||
font-weight: 500; |
|||
} |
|||
.al-certified-amd-page section.content { |
|||
background-color: #0e3b5c; |
|||
} |
|||
.al-certified-amd-page .content p { |
|||
margin: 0 auto; |
|||
max-width: 900px; |
|||
padding: 60px 0; |
|||
text-align: center; |
|||
} |
|||
.al-certified-amd-page .info-flex { |
|||
align-items: center; |
|||
display: flex; |
|||
justify-content: space-evenly; |
|||
padding: 60px 0; |
|||
} |
|||
.al-certified-amd-page .img img { |
|||
height: 300px; |
|||
} |
|||
.al-certified-amd-page .text>div { |
|||
align-items: center; |
|||
display: flex; |
|||
font-size: 16px; |
|||
margin-bottom: 30px; |
|||
} |
|||
.al-certified-amd-page .info-block-title { |
|||
font-size: 25px!important; |
|||
font-weight: 500; |
|||
margin-bottom: 40px!important; |
|||
} |
|||
.al-certified-amd-page .info-flex .text img { |
|||
height: 25px; |
|||
margin-right: 20px; |
|||
} |
|||
.al-certified-amd-page .container{ |
|||
padding: 3rem 15px; |
|||
} |
|||
.al-certified-amd-page img{ |
|||
max-width: 100%; |
|||
} |
|||
.al-certified-amd-page button.request { |
|||
background-color: #0069d9; |
|||
border: 0; |
|||
cursor: pointer; |
|||
font-size: 16px; |
|||
margin-top: 20px; |
|||
padding: 17px 35px; |
|||
} |
|||
.al-certified-amd-page .test-cta { |
|||
padding: 60px 0; |
|||
text-align: center; |
|||
} |
|||
.al-certified-amd-page .test-cta a, .al-certified-amd-page .test-cta button { |
|||
background-color: #87d831; |
|||
border: 0; |
|||
color: #000; |
|||
cursor: pointer; |
|||
font-size: 16px; |
|||
margin-top: 0; |
|||
padding: 17px 50px; |
|||
-webkit-text-decoration: None; |
|||
text-decoration: None; |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
.al-certified-amd-page .test table { |
|||
margin: 0 auto; |
|||
max-width: 800px; |
|||
width: 100%; |
|||
} |
|||
.al-certified-amd-page .test table td, .al-certified-amd-page .test table th { |
|||
background-color: #0e3b5c; |
|||
font-weight: 500; |
|||
padding: 20px 40px; |
|||
text-transform: uppercase; |
|||
width: 35%; |
|||
} |
|||
.al-certified-amd-page td.passed { |
|||
padding-left: 80px!important; |
|||
position: relative; |
|||
} |
|||
.al-certified-amd-page .checkmark { |
|||
border-bottom: 6px solid #0069d9; |
|||
border-right: 6px solid #0069d9; |
|||
display: inline-block; |
|||
height: 25px; |
|||
left: 40px; |
|||
position: absolute; |
|||
top: 25px; |
|||
transform: rotate(45deg); |
|||
width: 12px; |
|||
} |
|||
|
|||
.al-certified-amd-page { |
|||
color: #fff; |
|||
font-family: Montserrat,sans-serif; |
|||
margin: 0; |
|||
width: 100%; |
|||
} |
|||
.al-certified-amd-page p.test-title { |
|||
font-size: 20px; |
|||
font-weight: 500; |
|||
padding-top: 40px; |
|||
text-transform: uppercase; |
|||
} |
|||
|
|||
.al-certified-amd-page .test img { |
|||
margin-top: 40px; |
|||
max-height: 400px; |
|||
} |
|||
.al-certified-amd-page .form { |
|||
margin-top: 40px; |
|||
} |
|||
|
|||
.al-page-blog-index { |
|||
margin: auto; |
|||
max-width: 680px; |
|||
} |
|||
.al-article-actions i { |
|||
margin-right: 5px; |
|||
} |
|||
|
|||
.pagination .page-item .page-link { |
|||
background: #196da9 !important; |
|||
padding: .375rem .75rem !important; |
|||
color: #c4e1ff; |
|||
border: none; |
|||
text-decoration: none; |
|||
} |
|||
.pagination .active .page-link{ |
|||
background: #1f8ad5 !important; |
|||
} |
|||
.pagination .disabled { |
|||
|
|||
color: #000 !important; |
|||
|
|||
} |
|||
|
|||
|
|||
/*# sourceMappingURL=bundle.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sourceRoot":"","sources":["../scss/home.scss","../scss/variables.scss","../scss/blog.scss","../scss/elevate.scss","../scss/members.scss","../scss/contribute.scss","../scss/main.scss"],"names":[],"mappings":"AAOE;EACE;EACA;EACA;;AACA;EACE;;AAIJ;EACE,YCMY;EDLZ;EACA;;AAEA;EACE;;AAIJ;EACE,YCCe;EDAf;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;;AAGE;EACE;EACA;;;AAMR;EACE;;AAEA;EACE,OC7DU;ED8DV;EACA;EACA;;AAGE;EACE;EACA;;;AAIJ;EACE;EACA;;AAKJ;EACE;;AAKF;EACE;;AAIF;EACE;;AAEA;EACE;;AAGF;EACE;;AAKF;EACE;EACA;EAEA;;AAUJ;EACE;;AAKF;EACE;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAKN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA,OCpKQ;;ADwKZ;EACE;EACA;EACJ;EACA;;AAQE;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAKN;EACE;;AAIA;EACE;;AAEA;EACE;EACA,aCzMgB;ED0MhB;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EAEE,aCxNc;EDyNd;EACA;EACA;EACA;EACA;;AAIJ;EACE,OCtOQ;;ADwOR;EACE;;AAGF;EACE;;AAEA;EACE;EACA;;;AE1ON;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGE;EACE;EACA;;;AAMR;EACE,ODjCQ;;ACqCR;EACE;EACA;EACA;;AAEA;EACE;;AAMJ;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAQJ;EACE;EACA;;AAEA;EACE;;AAKF;EACE;;AAKF;EACE;;;AASN;EACE;EACA;;AAEA;EACE;;AAGE;EACE;EACA;;;AAMR;EACE,ODnHU;;ACqHV;EACE;;AAIA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAMN;EACE,YD1HU;EC2HV;;AAEA;EACE;;AAGJ;EACE,YDlIU;ECmIV;EACA;;AAEA;EACE;;AAGJ;EACE;EACA;EACA;EACA;;;AAKN;EACE,WD1H2B;EC2H3B;;;ACtKA;EACE,YFcsB;EEbtB;;AAEA;EACE;;AAIJ;EACE,YFOY;EENZ;;AAEA;EACE;;AAIJ;EACE;;AAOF;EACE;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;;ACtCJ;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;EACA;;;AAKN;EACE;;AAIA;EACE;;AAEA;EACE;;AAKN;EACE;;AAIA;EACI;;AAIN;EACE;;AAIA;EACE;EACA;EACA;;AAEA;EACE;;;ACxDR;EACE;;AAGE;EACE;;AAEA;EACE;;AAKN;EACE,YJKY;EIJZ;;AAEA;EACE;;AAIJ;EACE,YJJY;EIKZ;;AAEA;EACE;;;ACrBN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE,YLnBmB;;;AKsBrB;EACE,aL3BsB;;;AK8BxB;EACE;;;AAGF;EACA;EACA;;;AAGA;EACE;EACA;;;AAEF;EACE;EACA;;;AAIF;EACE,YLtBiB;EKuBjB,aLnDsB;EKoDtB;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAIJ;EACE;EACA;;AAKF;EACE,YL/Ce;EKgDf;;AAIA;EACE,cLnDqB;;AK2DzB;EACE;EACA,YLzEY;EK0EZ,OL/FkB;;AKiGlB;EACE,OLlGgB;EKmGhB;;AAKF;EACE;;AAIJ;EACE;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAOR;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAEA;EACE;EACA;;;AAQV;EACE;EACA;;;AAIF;EACE;EACA;EACA;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAIF;EACE;EACA;EACA;;;AAMF;EAEE;EACA,aLxMe;EKyMf,WAHuB;;AAKvB;EACE;EACA,aL5MoB;;AK+MtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;EACA,aLxNa;EKyNb,WAnBqB;;AAsBvB;EACE,aL3NkB","file":"bundle.css"} |
After Width: | Height: | Size: 423 KiB |
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,32 @@ |
|||
"use strict"; |
|||
(self.webpackChunk = self.webpackChunk || []).push([ |
|||
[229], |
|||
{ |
|||
63: function () { |
|||
window.addEventListener("DOMContentLoaded", function () { |
|||
document.getElementById("contributor").addEventListener("click", function () { |
|||
var e = document.getElementById("al-contributor-info"), |
|||
n = document.getElementById("al-mirror-info"), |
|||
t = document.getElementById("al-sponsor-info"); |
|||
(n.style.display = "none"), (t.style.display = "none"), ("none" === e.style.display) | ("" == e.style.display) ? (e.style.display = "block") : (e.style.display = "none"); |
|||
}), |
|||
document.getElementById("mirror").addEventListener("click", function () { |
|||
var e = document.getElementById("al-mirror-info"), |
|||
n = document.getElementById("al-contributor-info"), |
|||
t = document.getElementById("al-sponsor-info"); |
|||
(n.style.display = "none"), (t.style.display = "none"), ("none" === e.style.display) | ("" == e.style.display) ? (e.style.display = "block") : (e.style.display = "none"); |
|||
}), |
|||
|
|||
document.getElementById("sponsor").addEventListener("click", function () { |
|||
var e = document.getElementById("al-sponsor-info"), |
|||
n = document.getElementById("al-mirror-info"); |
|||
(document.getElementById("al-contributor-info").style.display = "none"), (n.style.display = "none"), ("none" === e.style.display) | ("" == e.style.display) ? (e.style.display = "block") : (e.style.display = "none"); |
|||
}); |
|||
}); |
|||
}, |
|||
}, |
|||
function (e) { |
|||
var n; |
|||
(n = 63), e((e.s = n)); |
|||
}, |
|||
]); |
@ -0,0 +1 @@ |
|||
import '.assets/scss/main.scss'; |
@ -0,0 +1,154 @@ |
|||
.al-page-blog-index { |
|||
margin: auto; |
|||
max-width: 680px; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article a.al-article-title-link { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article a.al-article-title-link h2 { |
|||
font-weight: 400; |
|||
font-size: 1.5rem; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-date { |
|||
color: #efefef; |
|||
font-size: 0.82rem; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-date i { |
|||
font-size: 0.8rem; |
|||
margin-right: 5px; |
|||
} |
|||
[dir=rtl] .al-page-blog-index .al-page-blog-posts article .al-article-date i { |
|||
padding-right: 0; |
|||
padding-left: 6px; |
|||
} |
|||
|
|||
.al-page-blog-index .al-page-blog-posts article .al-article-excerpt { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue { |
|||
text-decoration: none; |
|||
font-size: 0.9rem; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue i { |
|||
margin-right: 5px; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue:hover { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author img { |
|||
width: 40px; |
|||
height: 40px; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author .al-article-author-name { |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
margin: 0px; |
|||
margin-bottom: 5px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author .al-article-author-bio { |
|||
font-style: italic; |
|||
font-size: 12px; |
|||
margin: 0px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .pagination .page-item .page-link { |
|||
background: #196da9; |
|||
border: none; |
|||
} |
|||
.al-page-blog-index .pagination .page-item .page-link:hover { |
|||
color: #efefef; |
|||
} |
|||
.al-page-blog-index .pagination .page-item.active .page-link { |
|||
background: #1f8ad5; |
|||
} |
|||
.al-page-blog-index .pagination .page-item.disabled .page-link { |
|||
color: #051723; |
|||
} |
|||
|
|||
.al-page-blog-post .container { |
|||
padding: 3rem 15px !important; |
|||
} |
|||
.al-page-blog-post .container article .al-article-date { |
|||
color: #efefef; |
|||
font-size: 0.82rem; |
|||
} |
|||
.al-page-blog-post .container article .al-article-date i { |
|||
font-size: 0.8rem; |
|||
} |
|||
[dir=rtl] .al-page-blog-post .container article .al-article-date i { |
|||
padding-right: 0; |
|||
padding-left: 6px; |
|||
} |
|||
|
|||
.al-page-blog-post .container article .al-article-content { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-blog-post .container article .al-article-content img { |
|||
max-width: 100%; |
|||
} |
|||
.al-page-blog-post .container article .al-page-blog-author img { |
|||
width: 40px; |
|||
height: 40px; |
|||
} |
|||
.al-page-blog-post .container article .al-page-blog-author .al-page-blog-author-name { |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
margin: 0px; |
|||
margin-bottom: 5px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-post .container article .al-page-blog-author .al-page-blog-author-bio { |
|||
font-style: italic; |
|||
font-size: 12px; |
|||
margin: 0px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-previous-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-previous-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-next-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
float: right; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-next-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination a { |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
padding: 10px 16px; |
|||
font-size: 15px; |
|||
} |
|||
|
|||
.custom-blog-page-section { |
|||
width: 680px; |
|||
margin: auto; |
|||
} |
|||
|
|||
.al-page-blog-index .pagination .page-item .page-link { |
|||
background: #196da9 !important; |
|||
border: none; |
|||
} |
|||
|
|||
.pagination .page-item .page-link { |
|||
background: #196da9 !important; |
|||
padding: 0.375rem 0.75rem !important; |
|||
color: #c4e1ff; |
|||
border: none; |
|||
text-decoration: none; |
|||
} |
|||
|
|||
.pagination .active .page-link { |
|||
background: #1f8ad5 !important; |
|||
} |
|||
|
|||
.pagination .disabled { |
|||
color: #000 !important; |
|||
}/*# sourceMappingURL=blog.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":["blog.scss","blog.css","variables.scss"],"names":[],"mappings":"AAIA;EAEI,YAAA;EACA,gBAAA;ACJJ;ADSM;EACE,qBAAA;ACPR;ADSQ;EACE,gBAAA;EACA,iBAAA;ACPV;ADWM;EACE,cAAA;EACA,kBAAA;ACTR;ADWQ;EACE,iBAAA;EACA,iBAAA;ACTV;ADYY;EACE,gBAAA;EACA,iBAAA;ACVd;;ADgBM;EACE,cEtCQ;ADyBhB;ADkBQ;EACE,qBAAA;EACA,iBAAA;EACA,cAAA;AChBV;ADkBU;EACE,iBAAA;AChBZ;ADmBU;EACE,0BAAA;ACjBZ;ADuBQ;EACE,WAAA;EACA,YAAA;ACrBV;ADuBQ;EACE,kBAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,cAAA;ACrBV;ADuBQ;EACE,kBAAA;EACA,eAAA;EACA,WAAA;EACA,cAAA;ACrBV;AD6BM;EACE,mBAAA;EACA,YAAA;AC3BR;AD6BQ;EACE,cAAA;AC3BV;ADgCQ;EACE,mBAAA;AC9BV;ADmCQ;EACE,cAAA;ACjCV;;AD0CE;EACE,6BAAA;ACvCJ;AD0CI;EACE,cAAA;EACA,kBAAA;ACxCN;AD0CM;EACE,iBAAA;ACxCR;AD2CU;EACE,gBAAA;EACA,iBAAA;ACzCZ;;AD+CI;EACE,cEjIU;ADqFhB;AD8CM;EACE,eAAA;AC5CR;ADgDQ;EACE,WAAA;EACA,YAAA;AC9CV;ADgDQ;EACE,kBAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,cAAA;AC9CV;ADgDQ;EACE,kBAAA;EACA,eAAA;EACA,WAAA;EACA,cAAA;AC9CV;ADoDI;EACE,mBExIU;EFyIV,cAAA;AClDN;ADoDM;EACE,mBAAA;AClDR;ADqDI;EACE,mBEhJU;EFiJV,cAAA;EACA,YAAA;ACnDN;ADqDM;EACE,mBAAA;ACnDR;ADsDI;EACE,qBAAA;EACA,qBAAA;EACA,kBAAA;EACA,eAAA;ACpDN;;ADyDA;EACE,YAAA;EACA,YAAA;ACtDF;;ADwDA;EACE,8BAAA;EACA,YAAA;ACrDF;;ADwDA;EACE,8BAAA;EACA,oCAAA;EACA,cAAA;EACA,YAAA;EACA,qBAAA;ACrDF;;ADuDA;EACE,8BAAA;ACpDF;;ADsDA;EAEE,sBAAA;ACpDF","file":"blog.css"} |
@ -0,0 +1 @@ |
|||
/*# sourceMappingURL=bootstrap.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"bootstrap.css"} |
@ -0,0 +1,23 @@ |
|||
.al-page-contribute-index { |
|||
padding-bottom: 120px; |
|||
} |
|||
.al-page-contribute-index .al-subtle-links a { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-contribute-index .al-subtle-links a:hover, .al-page-contribute-index .al-subtle-links a:active { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-contribute-index .al-cta-chat { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-contribute-index .al-cta-chat:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-contribute-index .al-member-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-contribute-index .al-member-button:hover { |
|||
background: #79cb24; |
|||
}/*# sourceMappingURL=contribute.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":["contribute.scss","contribute.css","variables.scss"],"names":[],"mappings":"AAIA;EACE,qBAAA;ACHF;ADMI;EACE,qBAAA;ACJN;ADMM;EACE,0BAAA;ACJR;ADSE;EACE,mBEKY;EFJZ,cAAA;ACPJ;ADSI;EACE,mBAAA;ACPN;ADWE;EACE,mBEJY;EFKZ,cAAA;ACTJ;ADWI;EACE,mBAAA;ACTN","file":"contribute.css"} |
@ -1,6 +1,6 @@ |
|||
@import "~bootstrap/scss/bootstrap-utilities"; |
|||
@import "../../common/scss/variables"; |
|||
@import "../../common/scss/functions"; |
|||
@import "./variables"; |
|||
@import "./functions"; |
|||
@import "./bootstrap"; |
|||
|
|||
.al-page-contribute-index { |
|||
padding-bottom: 120px; |
@ -0,0 +1,35 @@ |
|||
.al-page-elevate-index .elevate-container-wrap { |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
.al-page-elevate-index .al-cta-discuss { |
|||
background: #2891ff; |
|||
color: #222; |
|||
} |
|||
.al-page-elevate-index .al-cta-discuss:hover { |
|||
background: #0f84ff; |
|||
} |
|||
.al-page-elevate-index .al-cta-learn-how { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-elevate-index .al-cta-learn-how:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-elevate-index .faq-container { |
|||
margin-bottom: 120px; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim { |
|||
padding-top: 25px; |
|||
padding-bottom: 25px; |
|||
font-weight: 300; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim > div { |
|||
padding-bottom: 26px; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim > div div.question { |
|||
font-weight: 500; |
|||
font-size: 1.1rem; |
|||
text-transform: uppercase; |
|||
margin-bottom: 8px; |
|||
}/*# sourceMappingURL=elevate.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":["elevate.scss","elevate.css","variables.scss"],"names":[],"mappings":"AAOE;EACE,8BAAA;EACA,6BAAA;ACNJ;ADQE;EACE,mBESsB;EFRtB,WAAA;ACNJ;ADQI;EACE,mBAAA;ACNN;ADUE;EACE,mBEEY;EFDZ,cAAA;ACRJ;ADUI;EACE,mBAAA;ACRN;ADYE;EACE,oBAAA;ACVJ;ADiBE;EACE,iBAAA;EACA,oBAAA;EACA,gBAAA;ACfJ;ADiBI;EACE,oBAAA;ACfN;ADiBM;EACE,gBAAA;EACA,iBAAA;EACA,yBAAA;EACA,kBAAA;ACfR","file":"elevate.css"} |
@ -0,0 +1 @@ |
|||
/*# sourceMappingURL=functions.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"functions.css"} |
@ -0,0 +1,189 @@ |
|||
.al-page-index .al-hero-cta-primary { |
|||
background: #24c2ff; |
|||
color: #222222; |
|||
margin: 10px 10px 10px 0; |
|||
} |
|||
.al-page-index .al-hero-cta-primary:hover { |
|||
background: #0bbbff; |
|||
} |
|||
.al-page-index .al-hero-cta-secondary { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
margin: 10px; |
|||
} |
|||
.al-page-index .al-hero-cta-secondary:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary { |
|||
background: #ffcb12; |
|||
color: #222222; |
|||
margin: 10px; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary img { |
|||
display: inline; |
|||
height: 1em; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary:hover { |
|||
background: #f8c100; |
|||
} |
|||
.al-page-index .al-index-feature-container { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-feature-container .al-index-feature-icon { |
|||
color: white; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
} |
|||
[dir=rtl] .al-page-index .al-index-feature-container .al-index-feature-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-index .al-index-community-container { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-icon { |
|||
color: #fefefe; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
flex: 0; |
|||
} |
|||
[dir=rtl] .al-page-index .al-index-community-container .al-index-community-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-index .al-index-community-container .al-index-community-icon.img { |
|||
height: 32px; |
|||
box-sizing: border-box; |
|||
} |
|||
.al-page-index .al-index-community-container .al-community-cta { |
|||
min-width: 120px; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-content-wrap { |
|||
display: flex; |
|||
flex: 1; |
|||
flex-direction: column; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-content-wrap p { |
|||
flex: 1; |
|||
} |
|||
.al-page-index .al-index-backed-by h2.border-bottom { |
|||
border-bottom-color: #14598a !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list { |
|||
justify-content: space-between; |
|||
padding: 0 !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a { |
|||
margin-top: 3rem !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a div.col { |
|||
text-align: center; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a .al-backer-logo-container { |
|||
height: 100%; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a .al-backer-logo { |
|||
height: 100%; |
|||
width: 120px; |
|||
} |
|||
.al-page-index .al-index-commercial-support h2.border-bottom { |
|||
border-bottom-color: #14598a !important; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list { |
|||
justify-content: center; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list div.col { |
|||
text-align: center; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list .al-commercial-supporter-logo-container { |
|||
height: 100%; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list .al-commercial-supporter-logo { |
|||
max-width: 120px; |
|||
width: 100%; |
|||
} |
|||
.al-page-index .al-index-faq { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button { |
|||
border: none; |
|||
box-shadow: none; |
|||
font-weight: normal; |
|||
background: #104469; |
|||
width: 100% !important; |
|||
text-align: left !important; |
|||
padding: 20px 10px !important; |
|||
color: #fefefe !important; |
|||
font-size: 15px; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button:active, .al-page-index .al-index-faq .accordion-button.active, .al-page-index .al-index-faq .accordion-button:hover, .al-page-index .al-index-faq .accordion-button:focus { |
|||
box-shadow: none; |
|||
outline: none; |
|||
border: none; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button:not(.collapsed) { |
|||
background: #104469; |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-body { |
|||
background: #114a73; |
|||
padding: 15px 10px; |
|||
margin-top: -8px; |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-newsletter a { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-input { |
|||
background-color: white; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-button { |
|||
background: #86da2f; |
|||
color: #000518; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-button:hover { |
|||
color: #000518; |
|||
background: #79cb24; |
|||
} |
|||
.al-page-index .al-index-press { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item { |
|||
margin-bottom: 10px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote { |
|||
padding-bottom: 7px; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 1.4rem; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:before { |
|||
content: open-quote; |
|||
padding-right: 3px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:after { |
|||
content: close-quote; |
|||
padding-left: 3px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:before, .al-page-index .al-index-press .al-index-press-item blockquote.blockquote:after { |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
vertical-align: top; |
|||
display: inline-block; |
|||
color: #faf5f5; |
|||
font-weight: bold; |
|||
font-size: 1rem; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer cite { |
|||
font-style: normal; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer a { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer a:hover { |
|||
text-decoration: underline; |
|||
color: #f7fbff; |
|||
}/*# sourceMappingURL=home.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":["home.scss","home.css","variables.scss"],"names":[],"mappings":"AAOE;EACE,mBAAA;EACA,cAAA;EACA,wBAAA;ACNJ;ADQI;EACE,mBAAA;ACNN;ADUE;EACE,mBEKY;EFJZ,cAAA;EACA,YAAA;ACRJ;ADUI;EACE,mBAAA;ACRN;ADYE;EACE,mBAAA;EACA,cAAA;EACA,YAAA;ACVJ;ADYI;EACE,eAAA;EACA,WAAA;ACVN;ADaI;EACE,mBAAA;ACXN;ADeE;EACE,mBAAA;ACbJ;ADeI;EACE,YAAA;EACA,eAAA;EACA,mBAAA;ACbN;ADgBQ;EACE,gBAAA;EACA,kBAAA;ACdV;;ADoBE;EACE,mBAAA;ACjBJ;ADmBI;EACE,cE9DU;EF+DV,eAAA;EACA,mBAAA;EACA,OAAA;ACjBN;ADoBQ;EACE,gBAAA;EACA,kBAAA;AClBV;;ADsBM;EACE,YAAA;EACA,sBAAA;ACnBR;ADyBI;EACE,gBAAA;ACvBN;ADyBI;EACE,aAAA;EACA,OAAA;EACA,sBAAA;ACvBN;ADwBM;EACE,OAAA;ACtBR;AD6BI;EACE,uCAAA;AC3BN;AD+BI;EACE,8BAAA;EACA,qBAAA;AC7BN;AD+BM;EACE,2BAAA;AC7BR;ADgCM;EACE,kBAAA;AC9BR;ADkCM;EACE,YAAA;AChCR;ADqCM;EACE,YAAA;EACA,YAAA;ACnCR;AD2CI;EACE,uCAAA;ACzCN;AD8CI;EACE,uBAAA;AC5CN;AD8CM;EACE,kBAAA;AC5CR;AD+CM;EACE,YAAA;AC7CR;ADgDM;EACE,gBAAA;EACA,WAAA;AC9CR;ADmDE;EACE,mBAAA;ACjDJ;ADmDI;EACE,YAAA;EACA,gBAAA;EACA,mBAAA;EACA,mBAAA;EACA,sBAAA;EACA,2BAAA;EACA,6BAAA;EACA,yBAAA;EACA,eAAA;ACjDN;ADmDM;EACE,gBAAA;EACA,aAAA;EACA,YAAA;ACjDR;ADoDM;EACE,mBAAA;EACA,cEjLQ;AD+HhB;ADsDI;EACE,mBAAA;EACA,kBAAA;EACJ,gBAAA;EACA,cAAA;ACpDF;AD0DG;EACC,0BAAA;ACxDJ;AD2DI;EACE,uBAAA;ACzDN;AD4DI;EACE,mBAAA;EACA,cAAA;AC1DN;AD4DM;EACE,cAAA;EACA,mBAAA;AC1DR;AD+DE;EACE,mBAAA;AC7DJ;ADiEI;EACE,mBAAA;AC/DN;ADiEM;EACE,mBAAA;EACA,iNExNgB;EFyNhB,iBAAA;AC/DR;ADiEQ;EACE,mBAAA;EACA,kBAAA;AC/DV;ADkEQ;EACE,oBAAA;EACA,iBAAA;AChEV;ADmEQ;EAEE,iNEvOc;EFwOd,mBAAA;EACA,qBAAA;EACA,cAAA;EACA,iBAAA;EACA,eAAA;AClEV;ADsEM;EACE,cErPQ;ADiLhB;ADsEQ;EACE,kBAAA;ACpEV;ADuEQ;EACE,qBAAA;ACrEV;ADuEU;EACE,0BAAA;EACA,cAAA;ACrEZ","file":"home.css"} |
@ -0,0 +1,841 @@ |
|||
.al-page-index .al-hero-cta-primary { |
|||
background: #24c2ff; |
|||
color: #222222; |
|||
margin: 10px 10px 10px 0; |
|||
} |
|||
.al-page-index .al-hero-cta-primary:hover { |
|||
background: #0bbbff; |
|||
} |
|||
.al-page-index .al-hero-cta-secondary { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
margin: 10px; |
|||
} |
|||
.al-page-index .al-hero-cta-secondary:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary { |
|||
background: #ffcb12; |
|||
color: #222222; |
|||
margin: 10px; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary img { |
|||
display: inline; |
|||
height: 1em; |
|||
} |
|||
.al-page-index .al-hero-cta-tertiary:hover { |
|||
background: #f8c100; |
|||
} |
|||
.al-page-index .al-index-feature-container { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-feature-container .al-index-feature-icon { |
|||
color: white; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
} |
|||
[dir=rtl] .al-page-index .al-index-feature-container .al-index-feature-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-index .al-index-community-container { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-icon { |
|||
color: #fefefe; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
flex: 0; |
|||
} |
|||
[dir=rtl] .al-page-index .al-index-community-container .al-index-community-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-index .al-index-community-container .al-index-community-icon.img { |
|||
height: 32px; |
|||
box-sizing: border-box; |
|||
} |
|||
.al-page-index .al-index-community-container .al-community-cta { |
|||
min-width: 120px; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-content-wrap { |
|||
display: flex; |
|||
flex: 1; |
|||
flex-direction: column; |
|||
} |
|||
.al-page-index .al-index-community-container .al-index-community-content-wrap p { |
|||
flex: 1; |
|||
} |
|||
.al-page-index .al-index-backed-by h2.border-bottom { |
|||
border-bottom-color: #14598a !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list { |
|||
justify-content: space-between; |
|||
padding: 0 !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a { |
|||
margin-top: 3rem !important; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a div.col { |
|||
text-align: center; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a .al-backer-logo-container { |
|||
height: 100%; |
|||
} |
|||
.al-page-index .al-index-backed-by .al-backed-by-list a .al-backer-logo { |
|||
height: 100%; |
|||
width: 120px; |
|||
} |
|||
.al-page-index .al-index-commercial-support h2.border-bottom { |
|||
border-bottom-color: #14598a !important; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list { |
|||
justify-content: center; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list div.col { |
|||
text-align: center; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list .al-commercial-supporter-logo-container { |
|||
height: 100%; |
|||
} |
|||
.al-page-index .al-index-commercial-support .al-commercial-supporter-list .al-commercial-supporter-logo { |
|||
max-width: 120px; |
|||
width: 100%; |
|||
} |
|||
.al-page-index .al-index-faq { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button { |
|||
border: none; |
|||
box-shadow: none; |
|||
font-weight: normal; |
|||
background: #104469; |
|||
width: 100% !important; |
|||
text-align: left !important; |
|||
padding: 20px 10px !important; |
|||
color: #fefefe !important; |
|||
font-size: 15px; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button:active, .al-page-index .al-index-faq .accordion-button.active, .al-page-index .al-index-faq .accordion-button:hover, .al-page-index .al-index-faq .accordion-button:focus { |
|||
box-shadow: none; |
|||
outline: none; |
|||
border: none; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-button:not(.collapsed) { |
|||
background: #104469; |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-faq .accordion-body { |
|||
background: #114a73; |
|||
padding: 15px 10px; |
|||
margin-top: -8px; |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-newsletter a { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-input { |
|||
background-color: white; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-button { |
|||
background: #86da2f; |
|||
color: #000518; |
|||
} |
|||
.al-page-index .al-index-newsletter .al-newsletter-button:hover { |
|||
color: #000518; |
|||
background: #79cb24; |
|||
} |
|||
.al-page-index .al-index-press { |
|||
background: #0e3b5c; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item { |
|||
margin-bottom: 10px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote { |
|||
padding-bottom: 7px; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 1.4rem; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:before { |
|||
content: open-quote; |
|||
padding-right: 3px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:after { |
|||
content: close-quote; |
|||
padding-left: 3px; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item blockquote.blockquote:before, .al-page-index .al-index-press .al-index-press-item blockquote.blockquote:after { |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
vertical-align: top; |
|||
display: inline-block; |
|||
color: #faf5f5; |
|||
font-weight: bold; |
|||
font-size: 1rem; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer cite { |
|||
font-style: normal; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer a { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-index .al-index-press .al-index-press-item figcaption.blockquote-footer a:hover { |
|||
text-decoration: underline; |
|||
color: #f7fbff; |
|||
} |
|||
|
|||
.al-page-blog-index { |
|||
margin: auto; |
|||
max-width: 680px; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article a.al-article-title-link { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article a.al-article-title-link h2 { |
|||
font-weight: 400; |
|||
font-size: 1.5rem; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-date { |
|||
color: #efefef; |
|||
font-size: 0.82rem; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-date i { |
|||
font-size: 0.8rem; |
|||
} |
|||
[dir=rtl] .al-page-blog-index .al-page-blog-posts article .al-article-date i { |
|||
padding-right: 0; |
|||
padding-left: 6px; |
|||
} |
|||
|
|||
.al-page-blog-index .al-page-blog-posts article .al-article-excerpt { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue { |
|||
text-decoration: none; |
|||
font-size: 0.9rem; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-actions a.al-article-continue:hover { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author img { |
|||
width: 40px; |
|||
height: 40px; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author .al-article-author-name { |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
margin: 0px; |
|||
margin-bottom: 5px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .al-page-blog-posts article .al-article-author .al-article-author-bio { |
|||
font-style: italic; |
|||
font-size: 12px; |
|||
margin: 0px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-index .pagination .page-item .page-link { |
|||
background: #196da9; |
|||
border: none; |
|||
} |
|||
.al-page-blog-index .pagination .page-item .page-link:hover { |
|||
color: #efefef; |
|||
} |
|||
.al-page-blog-index .pagination .page-item.active .page-link { |
|||
background: #1f8ad5; |
|||
} |
|||
.al-page-blog-index .pagination .page-item.disabled .page-link { |
|||
color: #051723; |
|||
} |
|||
|
|||
.al-page-blog-post .container { |
|||
padding: 3rem 15px !important; |
|||
} |
|||
.al-page-blog-post .container article .al-article-date { |
|||
color: #efefef; |
|||
font-size: 0.82rem; |
|||
} |
|||
.al-page-blog-post .container article .al-article-date i { |
|||
font-size: 0.8rem; |
|||
} |
|||
[dir=rtl] .al-page-blog-post .container article .al-article-date i { |
|||
padding-right: 0; |
|||
padding-left: 6px; |
|||
} |
|||
|
|||
.al-page-blog-post .container article .al-article-content { |
|||
color: #fefefe; |
|||
} |
|||
.al-page-blog-post .container article .al-article-content img { |
|||
max-width: 100%; |
|||
} |
|||
.al-page-blog-post .container article .al-page-blog-author img { |
|||
width: 40px; |
|||
height: 40px; |
|||
} |
|||
.al-page-blog-post .container article .al-page-blog-author .al-page-blog-author-name { |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
margin: 0px; |
|||
margin-bottom: 5px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-post .container article .al-page-blog-author .al-page-blog-author-bio { |
|||
font-style: italic; |
|||
font-size: 12px; |
|||
margin: 0px; |
|||
color: #C4E1FF; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-previous-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-previous-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-next-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
float: right; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination .al-blog-next-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-blog-post .container .al-blog-pagination a { |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
padding: 10px 16px; |
|||
font-size: 15px; |
|||
} |
|||
|
|||
.custom-blog-page-section { |
|||
width: 680px; |
|||
margin: auto; |
|||
} |
|||
|
|||
.al-page-elevate-index .elevate-container-wrap { |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
.al-page-elevate-index .al-cta-discuss { |
|||
background: #2891ff; |
|||
color: #222; |
|||
} |
|||
.al-page-elevate-index .al-cta-discuss:hover { |
|||
background: #0f84ff; |
|||
} |
|||
.al-page-elevate-index .al-cta-learn-how { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-elevate-index .al-cta-learn-how:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-elevate-index .faq-container { |
|||
margin-bottom: 120px; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim { |
|||
padding-top: 25px; |
|||
padding-bottom: 25px; |
|||
font-weight: 300; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim > div { |
|||
padding-bottom: 26px; |
|||
} |
|||
.al-page-elevate-index .al-faq-slim > div div.question { |
|||
font-weight: 500; |
|||
font-size: 1.1rem; |
|||
text-transform: uppercase; |
|||
margin-bottom: 8px; |
|||
} |
|||
|
|||
.al-page-foundation-members-index .al-members .table { |
|||
color: #fefefe !important; |
|||
} |
|||
.al-page-foundation-members-index .al-members .al-member-item { |
|||
height: 100%; |
|||
background: rgb(14, 59, 92); |
|||
} |
|||
.al-page-foundation-members-index .al-member-apply-category-icon { |
|||
color: white; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
} |
|||
[dir=rtl] .al-page-foundation-members-index .al-member-apply-category-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-foundation-members-index .al-member-apply-cta { |
|||
min-width: 120px; |
|||
} |
|||
.al-page-foundation-members-index .fw-light .al-laws-link, .al-page-foundation-members-index .fw-light .al-guideline-link { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-foundation-members-index .fw-light .al-laws-link:hover, .al-page-foundation-members-index .fw-light .al-laws-link:active, .al-page-foundation-members-index .fw-light .al-guideline-link:hover, .al-page-foundation-members-index .fw-light .al-guideline-link:active { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-foundation-members-index .al-membership-info { |
|||
display: none; |
|||
} |
|||
.al-page-foundation-members-index #al-mirror-info ul, .al-page-foundation-members-index #al-sponsor-info ul { |
|||
list-style-type: "- "; |
|||
} |
|||
.al-page-foundation-members-index .member-info:hover { |
|||
color: #86da2f; |
|||
} |
|||
.al-page-foundation-members-index .al-foundation-members-apply-content-wrap { |
|||
display: flex; |
|||
flex-direction: column; |
|||
flex: 1; |
|||
} |
|||
.al-page-foundation-members-index .al-foundation-members-apply-content-wrap p { |
|||
flex: 1; |
|||
} |
|||
|
|||
.al-page-contribute-index { |
|||
padding-bottom: 120px; |
|||
} |
|||
.al-page-contribute-index .al-subtle-links a { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-contribute-index .al-subtle-links a:hover, .al-page-contribute-index .al-subtle-links a:active { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-contribute-index .al-cta-chat { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-contribute-index .al-cta-chat:hover { |
|||
background: #79cb24; |
|||
} |
|||
.al-page-contribute-index .al-member-button { |
|||
background: #86da2f; |
|||
color: #222222; |
|||
} |
|||
.al-page-contribute-index .al-member-button:hover { |
|||
background: #79cb24; |
|||
} |
|||
|
|||
body, html { |
|||
line-height: initial; |
|||
font-weight: normal; |
|||
font-style: normal; |
|||
-webkit-font-smoothing: subpixel-antialiased; |
|||
-moz-osx-font-smoothing: grayscale; |
|||
text-rendering: auto; |
|||
letter-spacing: normal; |
|||
word-spacing: normal; |
|||
text-transform: none; |
|||
text-shadow: none; |
|||
position: relative; |
|||
box-sizing: border-box; |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
|
|||
body { |
|||
background: #0f4266; |
|||
} |
|||
|
|||
a { |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
h1, h2, h3, h4, h5, h6 { |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
} |
|||
|
|||
.al-body-container { |
|||
min-height: 65vh; |
|||
} |
|||
|
|||
button:active { |
|||
outline: none; |
|||
border: 0px solid transparent; |
|||
} |
|||
|
|||
button:focus, .btn:focus { |
|||
outline: none !important; |
|||
box-shadow: none !important; |
|||
} |
|||
|
|||
.row { |
|||
margin-left: 0 !important; |
|||
margin-right: 0 !important; |
|||
} |
|||
|
|||
.container { |
|||
padding: 0; |
|||
} |
|||
|
|||
.al-primary-navbar .container { |
|||
padding-left: 15px !important; |
|||
padding-right: 15px !important; |
|||
} |
|||
|
|||
.al-index-faq .container { |
|||
padding-left: 15px !important; |
|||
padding-right: 15px !important; |
|||
} |
|||
|
|||
.al-index-press .container { |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
|
|||
.elevate-container-wrap { |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
|
|||
.custom-blog-page-section { |
|||
width: 680px; |
|||
margin: auto; |
|||
} |
|||
|
|||
.al-page-blog-post .container { |
|||
padding: 3rem 15px !important; |
|||
} |
|||
|
|||
.fw-bold { |
|||
font-weight: 700 !important; |
|||
} |
|||
|
|||
.fw-light { |
|||
font-weight: 300; |
|||
} |
|||
|
|||
.fs-6 { |
|||
font-size: 1rem !important; |
|||
} |
|||
|
|||
.display-5 { |
|||
font-size: 46px !important; |
|||
line-height: 47px !important; |
|||
} |
|||
|
|||
.lead { |
|||
font-size: 1.25rem !important; |
|||
font-weight: 400 !important; |
|||
} |
|||
|
|||
.al-primary-navbar { |
|||
background: #082336; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-weight: 500; |
|||
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.07), 0 3px 3px -2px rgba(0, 0, 0, 0.06), 0 1px 8px 0 rgba(0, 0, 0, 0.1); |
|||
} |
|||
.al-primary-navbar .nav-link.al-download-button { |
|||
font-weight: 500; |
|||
background: #86da2f; |
|||
color: #000518 !important; |
|||
} |
|||
.al-primary-navbar .nav-link.al-download-button:hover { |
|||
color: #000518; |
|||
background: #79cb24; |
|||
} |
|||
.al-primary-navbar .nav-link { |
|||
padding-left: 1rem !important; |
|||
padding-right: 1rem !important; |
|||
color: #fff !important; |
|||
font-size: 15px; |
|||
transition: 0.3s ease-in-out; |
|||
text-decoration: none !important; |
|||
cursor: pointer !important; |
|||
} |
|||
.al-primary-navbar .nav-link :hover { |
|||
color: #1e87f8 !important; |
|||
} |
|||
.al-primary-navbar.with-motd { |
|||
padding-bottom: 0; |
|||
border-bottom: 0; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark { |
|||
background: #082336; |
|||
border: 0; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark .dropdown-item { |
|||
text-decoration: none !important; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark .dropdown-item:hover { |
|||
background-color: rgba(255, 255, 255, 0.1490196078) !important; |
|||
} |
|||
.al-primary-navbar .dropdown-menu-dark .dropdown-divider { |
|||
border-color: #264154; |
|||
} |
|||
.al-primary-navbar .al-language-switch img { |
|||
height: 24px; |
|||
} |
|||
.al-primary-navbar .al-language-link { |
|||
text-transform: capitalize; |
|||
color: aliceblue; |
|||
} |
|||
.al-primary-navbar .al-translate-callout { |
|||
font-size: 0.92rem; |
|||
} |
|||
.al-primary-navbar .al-translate-callout a { |
|||
display: flex; |
|||
align-items: center; |
|||
color: #69b1ff; |
|||
} |
|||
.al-primary-navbar .al-translate-callout a i { |
|||
margin-right: 0.4rem; |
|||
font-size: 0.8rem; |
|||
} |
|||
|
|||
#al-motd { |
|||
width: 100%; |
|||
background: #051520; |
|||
padding-top: 12px; |
|||
padding-bottom: 12px; |
|||
font-size: 0.8rem; |
|||
} |
|||
#al-motd > .container { |
|||
display: flex; |
|||
} |
|||
#al-motd > .container > i { |
|||
padding-right: 8px; |
|||
} |
|||
#al-motd > .container > .text { |
|||
display: block; |
|||
font-weight: 500; |
|||
} |
|||
#al-motd > .container > .text a { |
|||
text-decoration: none; |
|||
} |
|||
#al-motd > .container > .text a:hover { |
|||
text-decoration: underline; |
|||
color: inherit; |
|||
} |
|||
|
|||
section h1.al-section-title { |
|||
font-size: 2.6rem; |
|||
font-weight: 300; |
|||
} |
|||
|
|||
.al-primary-footer { |
|||
background: #0D3654; |
|||
padding-top: 122px; |
|||
padding-bottom: 132px; |
|||
} |
|||
|
|||
.al-py-lg { |
|||
padding-top: 3rem !important; |
|||
padding-bottom: 3rem !important; |
|||
} |
|||
|
|||
.al-py-md { |
|||
padding-top: 2.5rem !important; |
|||
padding-bottom: 2.5rem !important; |
|||
} |
|||
|
|||
.al-text-shadow-dark { |
|||
text-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); |
|||
} |
|||
|
|||
.btn { |
|||
transition-property: all; |
|||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); |
|||
transition-duration: 0.12s; |
|||
text-decoration: none !important; |
|||
} |
|||
|
|||
a { |
|||
transition-property: all; |
|||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); |
|||
transition-duration: 0.12s; |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
.al-wysiwyg { |
|||
all: revert; |
|||
font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 15px; |
|||
} |
|||
.al-wysiwyg h1, .al-wysiwyg h2, .al-wysiwyg h3, .al-wysiwyg h4, .al-wysiwyg h5, .al-wysiwyg h6 { |
|||
all: revert; |
|||
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
} |
|||
.al-wysiwyg ul, |
|||
.al-wysiwyg ol, |
|||
.al-wysiwyg ul li, |
|||
.al-wysiwyg ol li, |
|||
.al-wysiwyg p, |
|||
.al-wysiwyg pre, |
|||
.al-wysiwyg blockquote { |
|||
all: revert; |
|||
font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen-sans, ubuntu, cantarell, "helvetica neue", "arial", sans-serif, "apple color emoji", "segoe ui emoji", "segoe ui symbol"; |
|||
font-size: 15px; |
|||
} |
|||
.al-wysiwyg pre, .al-wysiwyg code { |
|||
font-family: "SF Mono", "source code pro", consolas, "courier new", courier, monospace; |
|||
} |
|||
|
|||
.al-certified-amd-page .banner { |
|||
background-image: url(/images/main-image.png); |
|||
background-size: cover; |
|||
padding: 180px 0 300px; |
|||
background-position: 25%; |
|||
} |
|||
|
|||
.al-certified-amd-page .container { |
|||
margin: 0 auto; |
|||
max-width: 1180px; |
|||
} |
|||
|
|||
.al-certified-amd-page .banner h1 { |
|||
font-size: 40px; |
|||
font-weight: 600; |
|||
max-width: 600px; |
|||
} |
|||
|
|||
.al-certified-amd-page .banner p { |
|||
font-size: 22px; |
|||
font-style: italic; |
|||
font-weight: 500; |
|||
} |
|||
|
|||
.al-certified-amd-page section.content { |
|||
background-color: #0e3b5c; |
|||
} |
|||
|
|||
.al-certified-amd-page .content p { |
|||
margin: 0 auto; |
|||
max-width: 900px; |
|||
padding: 60px 0; |
|||
text-align: center; |
|||
} |
|||
|
|||
.al-certified-amd-page .info-flex { |
|||
align-items: center; |
|||
display: flex; |
|||
justify-content: space-evenly; |
|||
padding: 60px 0; |
|||
} |
|||
|
|||
.al-certified-amd-page .img img { |
|||
height: 300px; |
|||
} |
|||
|
|||
.al-certified-amd-page .text > div { |
|||
align-items: center; |
|||
display: flex; |
|||
font-size: 16px; |
|||
margin-bottom: 30px; |
|||
} |
|||
|
|||
.al-certified-amd-page .info-block-title { |
|||
font-size: 25px !important; |
|||
font-weight: 500; |
|||
margin-bottom: 40px !important; |
|||
} |
|||
|
|||
.al-certified-amd-page .info-flex .text img { |
|||
height: 25px; |
|||
margin-right: 20px; |
|||
} |
|||
|
|||
.al-certified-amd-page .container { |
|||
padding: 3rem 15px; |
|||
} |
|||
|
|||
.al-certified-amd-page img { |
|||
max-width: 100%; |
|||
} |
|||
|
|||
.al-certified-amd-page button.request { |
|||
background-color: #0069d9; |
|||
border: 0; |
|||
cursor: pointer; |
|||
font-size: 16px; |
|||
margin-top: 20px; |
|||
padding: 17px 35px; |
|||
} |
|||
|
|||
.al-certified-amd-page .test-cta { |
|||
padding: 60px 0; |
|||
text-align: center; |
|||
} |
|||
|
|||
.al-certified-amd-page .test-cta a, .al-certified-amd-page .test-cta button { |
|||
background-color: #87d831; |
|||
border: 0; |
|||
color: #000; |
|||
cursor: pointer; |
|||
font-size: 16px; |
|||
margin-top: 0; |
|||
padding: 17px 50px; |
|||
-webkit-text-decoration: None; |
|||
text-decoration: None; |
|||
} |
|||
|
|||
.al-certified-amd-page .test table { |
|||
margin: 0 auto; |
|||
max-width: 800px; |
|||
width: 100%; |
|||
} |
|||
|
|||
.al-certified-amd-page .test table td, .al-certified-amd-page .test table th { |
|||
background-color: #0e3b5c; |
|||
font-weight: 500; |
|||
padding: 20px 40px; |
|||
text-transform: uppercase; |
|||
width: 35%; |
|||
} |
|||
|
|||
.al-certified-amd-page td.passed { |
|||
padding-left: 80px !important; |
|||
position: relative; |
|||
} |
|||
|
|||
.al-certified-amd-page .checkmark { |
|||
border-bottom: 6px solid #0069d9; |
|||
border-right: 6px solid #0069d9; |
|||
display: inline-block; |
|||
height: 25px; |
|||
left: 40px; |
|||
position: absolute; |
|||
top: 25px; |
|||
transform: rotate(45deg); |
|||
width: 12px; |
|||
} |
|||
|
|||
.al-certified-amd-page { |
|||
color: #fff; |
|||
font-family: Montserrat, sans-serif; |
|||
margin: 0; |
|||
width: 100%; |
|||
} |
|||
|
|||
.al-certified-amd-page p.test-title { |
|||
font-size: 20px; |
|||
font-weight: 500; |
|||
padding-top: 40px; |
|||
text-transform: uppercase; |
|||
} |
|||
|
|||
.al-certified-amd-page .test img { |
|||
margin-top: 40px; |
|||
max-height: 400px; |
|||
} |
|||
|
|||
.al-certified-amd-page .form { |
|||
margin-top: 40px; |
|||
} |
|||
|
|||
.al-page-blog-index { |
|||
margin: auto; |
|||
max-width: 680px; |
|||
} |
|||
|
|||
@media (min-width: 1400px) { |
|||
.container { |
|||
max-width: 1320px; |
|||
} |
|||
}/*# sourceMappingURL=main.css.map */ |
File diff suppressed because one or more lines are too long
@ -0,0 +1,435 @@ |
|||
@import "./variables"; |
|||
@import "./functions"; |
|||
@import "./bootstrap"; |
|||
@import "./home"; |
|||
@import "./blog"; |
|||
@import "./elevate"; |
|||
@import "./members"; |
|||
@import "./contribute"; |
|||
|
|||
|
|||
body, html { |
|||
line-height: initial; |
|||
font-weight: normal; |
|||
font-style: normal; |
|||
-webkit-font-smoothing: subpixel-antialiased; |
|||
-moz-osx-font-smoothing: grayscale; |
|||
text-rendering: auto; |
|||
letter-spacing: normal; |
|||
word-spacing: normal; |
|||
text-transform: none; |
|||
text-shadow: none; |
|||
position: relative; |
|||
box-sizing: border-box; |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
|
|||
body { |
|||
background: $al-body-background; |
|||
} |
|||
a{ |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
h1, h2, h3, h4, h5, h6 { |
|||
font-family: $al-font-family-accent; |
|||
} |
|||
|
|||
.al-body-container { |
|||
min-height: 65vh; |
|||
} |
|||
|
|||
button:active { |
|||
outline: none; |
|||
border: 0px solid transparent; |
|||
} |
|||
|
|||
button:focus, .btn:focus{ |
|||
outline: none !important; |
|||
box-shadow: none !important; |
|||
} |
|||
.row{ |
|||
margin-left: 0 !important; |
|||
margin-right: 0 !important; |
|||
} |
|||
|
|||
.container{ |
|||
padding: 0 ; |
|||
} |
|||
.al-primary-navbar .container { |
|||
padding-left: 15px !important; |
|||
padding-right: 15px !important; |
|||
} |
|||
.al-index-faq .container { |
|||
padding-left: 15px !important; |
|||
padding-right: 15px !important; |
|||
} |
|||
.al-index-press .container { |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
.elevate-container-wrap{ |
|||
padding-right: 15px !important; |
|||
padding-left: 15px !important; |
|||
} |
|||
.custom-blog-page-section{ |
|||
width: 680px; |
|||
margin: auto; |
|||
} |
|||
.al-page-blog-post .container{ |
|||
padding: 3rem 15px !important; |
|||
} |
|||
.fw-bold{ |
|||
font-weight: 700 !important; |
|||
} |
|||
.fw-light{ |
|||
font-weight: 300; |
|||
} |
|||
.fs-6 { |
|||
font-size: 1rem!important; |
|||
} |
|||
.display-5{ |
|||
font-size: 46px !important; |
|||
line-height: 47px !important; |
|||
} |
|||
.lead { |
|||
font-size: 1.25rem !important; |
|||
font-weight: 400 !important; |
|||
} |
|||
|
|||
// Main navigation |
|||
.al-primary-navbar { |
|||
background: $al-c-black-pearl; |
|||
font-family: $al-font-family-accent; |
|||
font-weight: 500; |
|||
box-shadow: al-shadow(3, 0.5); |
|||
.nav-link.al-download-button { |
|||
font-weight: 500; |
|||
background: $al-c-atlantis; |
|||
color: $al-font-color-light !important; |
|||
|
|||
&:hover { |
|||
color: $al-font-color-light; |
|||
background: darken($al-c-atlantis, 5%); |
|||
} |
|||
} |
|||
|
|||
.nav-link { |
|||
|
|||
padding-left: 1rem !important; |
|||
padding-right: 1rem !important; |
|||
color: #fff !important; |
|||
font-size: 15px; |
|||
transition: .3s ease-in-out; |
|||
text-decoration: none !important; |
|||
cursor: pointer !important; |
|||
:hover{ |
|||
color: #1e87f8 !important; |
|||
} |
|||
} |
|||
|
|||
&.with-motd { |
|||
padding-bottom: 0; |
|||
border-bottom: 0; |
|||
} |
|||
|
|||
|
|||
|
|||
.dropdown-menu-dark { |
|||
background: $al-c-black-pearl; |
|||
border: 0; |
|||
.dropdown-item{ |
|||
text-decoration: none !important; |
|||
} |
|||
.dropdown-item:hover{ |
|||
background-color: #ffffff26 !important; |
|||
} |
|||
|
|||
.dropdown-divider { |
|||
border-color: $al-c-black-pearl-lighter; |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
.al-language-switch { |
|||
img { |
|||
height: 24px; |
|||
} |
|||
} |
|||
|
|||
.al-language-link { |
|||
text-transform: capitalize; |
|||
color: aliceblue; |
|||
} |
|||
|
|||
.al-translate-callout { |
|||
font-size: 0.92rem; |
|||
|
|||
a { |
|||
display: flex; |
|||
align-items: center; |
|||
color: #69b1ff; |
|||
|
|||
i { |
|||
margin-right: 0.4rem; |
|||
font-size: 0.8rem; |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
#al-motd { |
|||
width: 100%; |
|||
background: darken($al-c-black-pearl, 5%); |
|||
padding-top: 12px; |
|||
padding-bottom: 12px; |
|||
font-size: 0.8rem; |
|||
|
|||
& > .container { |
|||
display: flex; |
|||
|
|||
& > i { |
|||
padding-right: 8px; |
|||
} |
|||
|
|||
& > .text { |
|||
display: block; |
|||
font-weight: 500; |
|||
|
|||
a { |
|||
text-decoration: none; |
|||
|
|||
&:hover { |
|||
text-decoration: underline; |
|||
color: inherit; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Section titles |
|||
section h1.al-section-title { |
|||
font-size: 2.6rem; |
|||
font-weight: 300; |
|||
} |
|||
|
|||
// Footer |
|||
.al-primary-footer { |
|||
background: #0D3654; |
|||
padding-top: 122px; |
|||
padding-bottom: 132px; |
|||
} |
|||
|
|||
// Utilities |
|||
.al-py-lg { |
|||
padding-top: 3rem !important; |
|||
padding-bottom: 3rem !important; |
|||
} |
|||
|
|||
.al-py-md { |
|||
padding-top: 2.5rem !important; |
|||
padding-bottom: 2.5rem !important; |
|||
} |
|||
|
|||
.al-text-shadow-dark { |
|||
text-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); |
|||
} |
|||
|
|||
// Smooth out buttons and links |
|||
.btn { |
|||
transition-property: all; |
|||
transition-timing-function: cubic-bezier(.4, 0, .2, 1); |
|||
transition-duration: .12s; |
|||
text-decoration: none !important; |
|||
} |
|||
|
|||
a{ |
|||
transition-property: all; |
|||
transition-timing-function: cubic-bezier(.4, 0, .2, 1); |
|||
transition-duration: .12s; |
|||
text-decoration: underline ; |
|||
} |
|||
|
|||
|
|||
|
|||
// WYSIWYG |
|||
.al-wysiwyg { |
|||
$al-wysiwyg-font-size: $al-font-base-size - 1px; |
|||
all: revert; |
|||
font-family: $al-font-family; |
|||
font-size: $al-wysiwyg-font-size; |
|||
|
|||
h1, h2, h3, h4, h5, h6 { |
|||
all: revert; |
|||
font-family: $al-font-family-accent; |
|||
} |
|||
|
|||
ul, |
|||
ol, |
|||
ul li, |
|||
ol li, |
|||
p, |
|||
pre, |
|||
blockquote { |
|||
all: revert; |
|||
font-family: $al-font-family; |
|||
font-size: $al-wysiwyg-font-size; |
|||
} |
|||
|
|||
pre, code { |
|||
font-family: $al-font-family-mono; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
.al-certified-amd-page .banner { |
|||
background-image: url(/images/main-image.png); |
|||
background-size: cover; |
|||
padding: 180px 0 300px; |
|||
background-position: 25%; |
|||
} |
|||
.al-certified-amd-page .container { |
|||
margin: 0 auto; |
|||
max-width: 1180px; |
|||
} |
|||
.al-certified-amd-page .banner h1 { |
|||
font-size: 40px; |
|||
font-weight: 600; |
|||
max-width: 600px; |
|||
} |
|||
.al-certified-amd-page .banner p { |
|||
font-size: 22px; |
|||
font-style: italic; |
|||
font-weight: 500; |
|||
} |
|||
.al-certified-amd-page section.content { |
|||
background-color: #0e3b5c; |
|||
} |
|||
.al-certified-amd-page .content p { |
|||
margin: 0 auto; |
|||
max-width: 900px; |
|||
padding: 60px 0; |
|||
text-align: center; |
|||
} |
|||
.al-certified-amd-page .info-flex { |
|||
align-items: center; |
|||
display: flex; |
|||
justify-content: space-evenly; |
|||
padding: 60px 0; |
|||
} |
|||
.al-certified-amd-page .img img { |
|||
height: 300px; |
|||
} |
|||
.al-certified-amd-page .text>div { |
|||
align-items: center; |
|||
display: flex; |
|||
font-size: 16px; |
|||
margin-bottom: 30px; |
|||
} |
|||
.al-certified-amd-page .info-block-title { |
|||
font-size: 25px!important; |
|||
font-weight: 500; |
|||
margin-bottom: 40px!important; |
|||
} |
|||
.al-certified-amd-page .info-flex .text img { |
|||
height: 25px; |
|||
margin-right: 20px; |
|||
} |
|||
.al-certified-amd-page .container{ |
|||
padding: 3rem 15px; |
|||
} |
|||
.al-certified-amd-page img{ |
|||
max-width: 100%; |
|||
} |
|||
.al-certified-amd-page button.request { |
|||
background-color: #0069d9; |
|||
border: 0; |
|||
cursor: pointer; |
|||
font-size: 16px; |
|||
margin-top: 20px; |
|||
padding: 17px 35px; |
|||
} |
|||
.al-certified-amd-page .test-cta { |
|||
padding: 60px 0; |
|||
text-align: center; |
|||
} |
|||
.al-certified-amd-page .test-cta a, .al-certified-amd-page .test-cta button { |
|||
background-color: #87d831; |
|||
border: 0; |
|||
color: #000; |
|||
cursor: pointer; |
|||
font-size: 16px; |
|||
margin-top: 0; |
|||
padding: 17px 50px; |
|||
-webkit-text-decoration: None; |
|||
text-decoration: None; |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
.al-certified-amd-page .test table { |
|||
margin: 0 auto; |
|||
max-width: 800px; |
|||
width: 100%; |
|||
} |
|||
.al-certified-amd-page .test table td, .al-certified-amd-page .test table th { |
|||
background-color: #0e3b5c; |
|||
font-weight: 500; |
|||
padding: 20px 40px; |
|||
text-transform: uppercase; |
|||
width: 35%; |
|||
} |
|||
.al-certified-amd-page td.passed { |
|||
padding-left: 80px!important; |
|||
position: relative; |
|||
} |
|||
.al-certified-amd-page .checkmark { |
|||
border-bottom: 6px solid #0069d9; |
|||
border-right: 6px solid #0069d9; |
|||
display: inline-block; |
|||
height: 25px; |
|||
left: 40px; |
|||
position: absolute; |
|||
top: 25px; |
|||
transform: rotate(45deg); |
|||
width: 12px; |
|||
} |
|||
|
|||
.al-certified-amd-page { |
|||
color: #fff; |
|||
font-family: Montserrat,sans-serif; |
|||
margin: 0; |
|||
width: 100%; |
|||
} |
|||
.al-certified-amd-page p.test-title { |
|||
font-size: 20px; |
|||
font-weight: 500; |
|||
padding-top: 40px; |
|||
text-transform: uppercase; |
|||
} |
|||
|
|||
.al-certified-amd-page .test img { |
|||
margin-top: 40px; |
|||
max-height: 400px; |
|||
} |
|||
.al-certified-amd-page .form { |
|||
margin-top: 40px; |
|||
} |
|||
.al-page-blog-index{ |
|||
margin: auto; |
|||
max-width: 680px; |
|||
} |
|||
|
|||
|
|||
@media (min-width:1400px){ |
|||
.container{ |
|||
max-width: 1320px; |
|||
} |
|||
} |
@ -0,0 +1,43 @@ |
|||
.al-page-foundation-members-index .al-members .table { |
|||
color: #fefefe !important; |
|||
} |
|||
.al-page-foundation-members-index .al-members .al-member-item { |
|||
height: 100%; |
|||
background: rgb(14, 59, 92); |
|||
} |
|||
.al-page-foundation-members-index .al-member-apply-category-icon { |
|||
color: white; |
|||
font-size: 32px; |
|||
padding-right: 22px; |
|||
} |
|||
[dir=rtl] .al-page-foundation-members-index .al-member-apply-category-icon { |
|||
padding-right: 0; |
|||
padding-left: 22px; |
|||
} |
|||
|
|||
.al-page-foundation-members-index .al-member-apply-cta { |
|||
min-width: 120px; |
|||
} |
|||
.al-page-foundation-members-index .fw-light .al-laws-link, .al-page-foundation-members-index .fw-light .al-guideline-link { |
|||
text-decoration: none; |
|||
} |
|||
.al-page-foundation-members-index .fw-light .al-laws-link:hover, .al-page-foundation-members-index .fw-light .al-laws-link:active, .al-page-foundation-members-index .fw-light .al-guideline-link:hover, .al-page-foundation-members-index .fw-light .al-guideline-link:active { |
|||
text-decoration: underline; |
|||
} |
|||
.al-page-foundation-members-index .al-membership-info { |
|||
display: none; |
|||
} |
|||
.al-page-foundation-members-index #al-mirror-info ul, .al-page-foundation-members-index #al-sponsor-info ul { |
|||
list-style-type: "- "; |
|||
} |
|||
.al-page-foundation-members-index .member-info:hover { |
|||
color: #86da2f; |
|||
} |
|||
.al-page-foundation-members-index .al-foundation-members-apply-content-wrap { |
|||
display: flex; |
|||
flex-direction: column; |
|||
flex: 1; |
|||
} |
|||
.al-page-foundation-members-index .al-foundation-members-apply-content-wrap p { |
|||
flex: 1; |
|||
}/*# sourceMappingURL=members.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":["members.scss","members.css"],"names":[],"mappings":"AAMI;EACE,yBAAA;ACLN;ADOI;EACE,YAAA;EACA,2BAAA;ACLN;ADSE;EACE,YAAA;EACA,eAAA;EACA,mBAAA;ACPJ;ADUM;EACE,gBAAA;EACA,kBAAA;ACRR;;ADaE;EACE,gBAAA;ACVJ;ADcI;EACE,qBAAA;ACZN;ADcM;EACE,0BAAA;ACZR;ADiBE;EACE,aAAA;ACfJ;ADmBI;EACI,uBAAA;ACjBR;ADqBE;EACE,cAAA;ACnBJ;ADuBI;EACE,aAAA;EACA,sBAAA;EACA,OAAA;ACrBN;ADuBM;EACE,OAAA;ACrBR","file":"members.css"} |
@ -0,0 +1 @@ |
|||
/*# sourceMappingURL=footer.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"footer.css"} |
@ -0,0 +1 @@ |
|||
/*# sourceMappingURL=header.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"header.css"} |
@ -0,0 +1 @@ |
|||
/*# sourceMappingURL=variables.css.map */ |
@ -0,0 +1 @@ |
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"variables.css"} |
@ -1,3 +0,0 @@ |
|||
from commons.encore import Encore |
|||
|
|||
encore = Encore() |
@ -1,5 +0,0 @@ |
|||
from django.apps import AppConfig |
|||
|
|||
|
|||
class CommonsConfig(AppConfig): |
|||
name = 'commons' |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue