diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..2afc8fb
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,24 @@
+name: Lint
+on: [push, pull_request]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Setup python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+ architecture: x64
+ - uses: actions/cache@v1
+ with:
+ path: ~/.cache/pip
+ key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/requirements_dev.txt') }}
+
+ - run: pip install -r requirements.txt
+ - run: pip install -r requirements_dev.txt
+
+ - run: flake8
+ # To local srcs, we must specifically exclude src
+ - run: black --check --exclude "/(\.eggs|\.git|_cache|src)/" ./
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..4a179b4
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,36 @@
+name: Test
+on: [push, pull_request]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Setup python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+ architecture: x64
+ - uses: actions/cache@v1
+ with:
+ path: ~/.cache/pip
+ key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/requirements_dev.txt') }}
+
+ - run: pip install -r requirements.txt
+ - run: pip install -r requirements_dev.txt
+
+ - run: ./registry/manage.py makemigrations --dry-run --check
+ - run: ./registry/manage.py migrate
+
+ - env:
+ SALESFORCE_USERNAME: ${{ secrets.SALESFORCE_USERNAME }}
+ SALESFORCE_PASSWORD: ${{ secrets.SALESFORCE_PASSWORD }}
+ SALESFORCE_SECURITY_TOKEN: ${{ secrets.SALESFORCE_SECURITY_TOKEN }}
+ # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # coveralls
+
+ run: ./registry/manage.py test -v 3 tests
+#- run: coverage run --source='./registry' ./registry/manage.py test -v 3 tests
+
+# - env:
+ # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # run: coveralls --service=github
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..765ad13
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+.DS_Store
+.idea/
+.pytest_cache/
+.ve/
+.vscode/
+*.sqlite3
+get-pip.py
+
+chromedriver/
+__pycache__/
+registry/__pycache__/
+tests/__pycache__/
+tests/samples/__pycache__/
+
+chromedriver_mac64.zip
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..0dacd4e
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "360-ds"]
+ path = 360-ds
+ url = https://github.com/ThreeSixtyGiving/360-ds.git
diff --git a/360-ds b/360-ds
new file mode 160000
index 0000000..7b69f06
--- /dev/null
+++ b/360-ds
@@ -0,0 +1 @@
+Subproject commit 7b69f067bbd9a38f4a5eb33e3500aee1229432c5
diff --git a/LICENCE.md b/LICENCE.md
new file mode 100644
index 0000000..34d97af
--- /dev/null
+++ b/LICENCE.md
@@ -0,0 +1,28 @@
+360Giving Registry software
+===========================
+
+Note: This license doesn't apply to the 360Giving logo The 360Giving logo is copyright [360Giving](http://threesixtygiving.org) and may not be used without express permission.
+
+The look-and-feel of the registry is that of 360Giving, and care should be
+taken when running any public instance not to falsely give the impression,
+intentionally or otherwise, that the instance is operated by or related to
+360Giving.
+
+The 360Giving Registry is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+360Giving Registry software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+for more details.
+
+You should have received a copy of the GNU Affero General Public License along
+with the 360Giving Registry software. If not, see
+ .
+
+Copyright 2024 360Giving.
+
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4bf65d4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,51 @@
+# 360Giving Registry
+
+![360Giving registry logo](registry/static/images/360-logos/360giving-registry.svg)
+
+The [360Giving Registry](http://data.threesixtygiving.org) lists files that use the [360Giving Standard](http://standard.threesixtygiving.org). The list of files is maintained by 360Giving, and this repo contains the source code for the website that obtains the listing from 360Giving (via the Salesforce API) and presents it as a website. The live website is updated once a day from this repo, unless manually triggered.
+
+To download all the files listed in the registy, the 360Giving [datagetter](https://github.com/ThreeSixtyGiving/datagetter) tool is available.
+
+## Install dependencies
+
+```
+$ python3 -m venv .ve
+$ source .ve/bin/activate
+$ pip install -r requirements_dev.txt
+```
+
+## Run
+
+Development server
+```
+$ ./registry/manage.py runserver
+```
+
+## Tests
+```
+$ ./registry/manage.py test tests
+```
+
+## Update requirements
+
+```
+$ pip install pip-tools
+$ pip-compile requirements.in
+$ pip-compile requirements_dev.in
+```
+
+
+## Styles - 360-ds
+
+The [360Giving design system](https://github.com/ThreeSixtyGiving/360-ds) is used for styling this project.
+
+To compile the theme, check out the submodule then:
+
+```
+cd 360-ds
+npm install
+npm run compile-sass
+cp ./build/360-ds/css/main.css ../registry/ui/static/css/
+```
+
+For more information on the design system see the [360-ds project](https://github.com/ThreeSixtyGiving/360-ds)
diff --git a/registry/api/__init__.py b/registry/api/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/registry/api/apps.py b/registry/api/apps.py
new file mode 100644
index 0000000..14b89a8
--- /dev/null
+++ b/registry/api/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class ApiConfig(AppConfig):
+ name = "api"
diff --git a/registry/api/urls.py b/registry/api/urls.py
new file mode 100644
index 0000000..eee3acc
--- /dev/null
+++ b/registry/api/urls.py
@@ -0,0 +1,9 @@
+from django.urls import path
+
+import api.views
+
+app_name = "api"
+
+urlpatterns = [
+ path("", api.views.DataView.as_view(), name="data"),
+]
diff --git a/registry/api/views.py b/registry/api/views.py
new file mode 100644
index 0000000..1045763
--- /dev/null
+++ b/registry/api/views.py
@@ -0,0 +1,14 @@
+from django.http.response import JsonResponse
+from django.views import View
+
+from salesforce import salesforce
+
+
+class DataView(View):
+ def get(self, *args, **kwargs):
+ return JsonResponse(salesforce.get_salesforce_data(), safe=False)
+
+
+class PublishersView(View):
+ def get(self, *args, **kwargs):
+ return JsonResponse(salesforce.get_salesforce_publishers(), safe=False)
diff --git a/registry/manage.py b/registry/manage.py
new file mode 100755
index 0000000..bb0e058
--- /dev/null
+++ b/registry/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.settings")
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/registry/salesforce/__init__.py b/registry/salesforce/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/registry/salesforce/salesforce.py b/registry/salesforce/salesforce.py
new file mode 100644
index 0000000..a1cc25c
--- /dev/null
+++ b/registry/salesforce/salesforce.py
@@ -0,0 +1,117 @@
+import os
+
+from simple_salesforce import Salesforce
+
+
+def get_salesforce_access():
+ return Salesforce(
+ username=os.environ["SALESFORCE_USERNAME"],
+ password=os.environ["SALESFORCE_PASSWORD"],
+ security_token=os.environ["SALESFORCE_SECURITY_TOKEN"],
+ domain=os.environ.get("SALESFORCE_DOMAIN"),
+ )
+
+
+def clean_object(obj):
+ new_obj = {}
+
+ obj.pop("attributes", None)
+ for key, value in obj.items():
+ new_key = key.replace("__c", "").replace("__r", "").replace("_", "")
+ new_key = new_key[:1].lower() + new_key[1:] if new_key else ""
+ new_obj[new_key] = value
+ return new_obj
+
+
+def get_output_dataset(dataset):
+ license = clean_object(dataset["license"])
+ publisher = clean_object(dataset["account"])
+
+ return {
+ "title": dataset["name"],
+ "description": (
+ dataset["description"] if dataset["description"] is not None else ""
+ ),
+ "identifier": dataset["id"],
+ "license": license["uRL"],
+ "license_name": license["name"],
+ "issued": dataset["dateFirstPublished"],
+ "modified": dataset["lastModifiedDate"],
+ "publisher": {
+ "name": publisher["name"],
+ "website": publisher["website"] if publisher["website"] else "",
+ "logo": publisher["logo"] if publisher["logo"] else "",
+ "prefix": publisher["prefix"],
+ "last_published": publisher["lastpublisheddate"],
+ "org_id": publisher.get("orgIdentifier", ""),
+ },
+ "distribution": [
+ {
+ "downloadURL": dataset["downloadURL"],
+ "accessURL": dataset["accessURL"],
+ "title": dataset["name"],
+ }
+ ],
+ }
+
+
+def clean_output(api_output):
+ datasets = []
+ for dataset in api_output["records"]:
+ if dataset["Approved__c"]:
+ try:
+ clean_dataset = clean_object(dataset)
+ output_dataset = get_output_dataset(clean_dataset)
+ datasets.append(output_dataset)
+ # We have bad data
+ except Exception as e:
+ print(e)
+ pass
+
+ if len(dataset) == 0:
+ raise Exception("No data could be cleaned for output")
+
+ return datasets
+
+
+def get_salesforce_data():
+ salesforce = get_salesforce_access()
+ sf_query = (
+ "SELECT Id, Name, License__r.Name, License__r.URL__c, Access_URL__c, Description__c, Download_URL__c,"
+ "Account__r.Id, Account__r.Logo__c, Account__r.Name, Account__r.Website, Account__r.prefix__c, "
+ "Date_First_Published__c, LastModifiedDate, Approved__c, Account__r.Last_published_date__c, Account__r.Org_Identifier__c from Dataset__c ORDER BY Account__r.Name"
+ ) # noqa: E126
+
+ return clean_output(salesforce.query_all(sf_query))
+
+
+def get_salesforce_publishers():
+ salesforce = get_salesforce_access()
+ sf_query = (
+ "SELECT Id, Logo__c, Name, Website, prefix__c, "
+ "Org_Identifier__c, Authorised_Domain__c, Self_registration_enabled__c from Account WHERE prefix__c != null ORDER BY Name "
+ ) # noqa: E126
+
+ sf_data = salesforce.query_all(sf_query)
+ publishers = {}
+
+ for publisher in sf_data["records"]:
+ publisher = clean_object(clean_object(publisher))
+ publishers[publisher["prefix"]] = {
+ "id": publisher["id"],
+ "name": publisher["name"],
+ "website": publisher.get("website", ""),
+ "logo": publisher.get("logo", ""),
+ "prefix": publisher["prefix"],
+ "org_id": publisher.get("orgIdentifier", ""),
+ "self_publish": {
+ "enabled": publisher.get("selfregistrationenabled", False),
+ "authorised_domains": (
+ [publisher["authorisedDomain"]]
+ if publisher.get("authorisedDomain")
+ else []
+ ),
+ },
+ }
+
+ return publishers
diff --git a/registry/settings/__init__.py b/registry/settings/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/registry/settings/settings.py b/registry/settings/settings.py
new file mode 100644
index 0000000..48fb1de
--- /dev/null
+++ b/registry/settings/settings.py
@@ -0,0 +1,128 @@
+"""
+Django settings for registry project.
+
+Generated by 'django-admin startproject' using Django 4.2.10.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.2/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/4.2/ref/settings/
+"""
+
+from pathlib import Path
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = "django-insecure-ch1(m*s(hiks*+p@)+qxsq5_v^&gl$1fq-rq1fs6f6vrg+xx1-"
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ "ui",
+ "api",
+ "django.contrib.auth",
+ "django.contrib.contenttypes",
+ "django.contrib.sessions",
+ "django.contrib.messages",
+ "django.contrib.staticfiles",
+]
+
+MIDDLEWARE = [
+ "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 = "urls"
+
+TEMPLATES = [
+ {
+ "BACKEND": "django.template.backends.django.DjangoTemplates",
+ "DIRS": [],
+ "APP_DIRS": True,
+ "OPTIONS": {
+ "context_processors": [
+ "django.template.context_processors.debug",
+ "django.template.context_processors.request",
+ "django.contrib.auth.context_processors.auth",
+ "django.contrib.messages.context_processors.messages",
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = "wsgi.application"
+
+
+# Database
+# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
+
+DATABASES = {
+ "default": {
+ "ENGINE": "django.db.backends.sqlite3",
+ "NAME": BASE_DIR / "db.sqlite3",
+ }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/4.2/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/4.2/topics/i18n/
+
+LANGUAGE_CODE = "en-us"
+
+TIME_ZONE = "UTC"
+
+USE_I18N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/4.2/howto/static-files/
+
+STATIC_URL = "static/"
+
+STATICFILES_DIRS = [
+ BASE_DIR.joinpath("static"),
+]
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
diff --git a/registry/static/css/main.css b/registry/static/css/main.css
new file mode 100644
index 0000000..c5b917f
--- /dev/null
+++ b/registry/static/css/main.css
@@ -0,0 +1,5178 @@
+@import url("https://fonts.googleapis.com/css?family=Material Icons|Roboto:200,200i,300,300i,400,400i,500,500i,600,600i,700,700i&display=swap");
+@media print {
+ *,
+ *:before,
+ *:after,
+ *:first-letter,
+ p:first-line,
+ div:first-line,
+ blockquote:first-line,
+ li:first-line {
+ background: transparent !important;
+ color: #000 !important;
+ box-shadow: none !important;
+ text-shadow: none !important; }
+ h1, h2, h3, h4, h5, h6 {
+ page-break-after: avoid; }
+ .hide-print {
+ display: none !important; }
+ .wrapper {
+ display: block;
+ height: auto;
+ overflow: auto;
+ width: auto;
+ padding: 0px;
+ margin: 0px;
+ max-width: 100%; } }
+
+.print-only {
+ display: none; }
+ @media print {
+ .print-only {
+ display: inherit !important; } }
+
+/*
+ * HSL(A) NOT TRANSFORMED TO RGB(A)
+ *
+ * Is now an accepted proposal: https://github.com/sass/sass/blob/master/accepted/color-4-rgb-hsl.md
+ * But without implementation, yet.
+ *
+ * Use:
+ * `color: hsl(15deg, 100%, 50%);`
+ * `--flashy-pink: hsl(15deg, 100%, 50%);`
+ * `$flashy-pink: hsl(15deg 100% 50%);`
+ * `--transparent-flashy-pink: hsl(15deg, 100%, 50%, .7);`
+ * `$transparent-flashy-pink: hsla(15deg, 100%, 50%, .7);`
+ * `$transparent-flashy-pink: hsla(15deg 100% 50% / .7);`
+ *
+ * Parameters:
+ * parameter 1 (angle | 0): the hue of the color
+ * parameter 2 (0-100% | 0): the saturation of the color
+ * parameter 3 (0-100% | 0): the luminosity of the color
+ * parameter 4 (optional, 1 by default): the alpha channel of the color
+ */
+*,
+*::before,
+*::after {
+ box-sizing: inherit; }
+
+html {
+ box-sizing: border-box;
+ font-family: sans-serif;
+ line-height: 1.62;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+
+body {
+ color: var(--color-base);
+ font-family: var(--fonts-primary);
+ font-size: var(--text-base-size);
+ font-weight: 300;
+ position: relative;
+ margin: 0;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale; }
+
+@-ms-viewport {
+ width: device-width; }
+
+article,
+aside,
+dialog,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section {
+ display: block; }
+
+[tabindex="-1"]:focus {
+ outline: none !important; }
+
+hr {
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible;
+ margin: 1rem 0; }
+
+dd,
+p,
+label {
+ margin: 0 0 1.62ex 0; }
+
+ol,
+ul,
+dl,
+table,
+p,
+pre,
+address,
+figure {
+ margin: 0 0 1.62ex 0; }
+
+abbr[title],
+abbr[data-original-title] {
+ text-decoration: underline;
+ text-decoration: underline dotted;
+ cursor: help;
+ border-bottom: 0; }
+
+address {
+ font-style: normal;
+ line-height: inherit; }
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+ margin-bottom: 0; }
+
+dt {
+ font-weight: 700; }
+
+blockquote {
+ margin: 0 0 1.62ex 0; }
+
+dfn {
+ font-style: italic; }
+
+b,
+strong {
+ font-weight: bolder; }
+
+small {
+ font-size: 80%; }
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline; }
+
+sub {
+ bottom: -0.25ex; }
+
+sup {
+ top: -0.5ex; }
+
+a {
+ color: var(--color-accent);
+ text-decoration: none;
+ -webkit-text-decoration-skip: objects; }
+ a:hover, a:focus {
+ color: var(--color-accent);
+ text-decoration: none; }
+ a:active {
+ color: var(--color-orange);
+ text-decoration: none; }
+
+a:not([href]):not([tabindex]) {
+ color: inherit;
+ text-decoration: none; }
+
+a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
+ color: inherit;
+ text-decoration: none; }
+
+a:not([href]):not([tabindex]):focus {
+ outline: 0; }
+
+pre,
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em; }
+
+pre {
+ overflow: auto;
+ -ms-overflow-style: scrollbar; }
+
+img {
+ vertical-align: middle;
+ border-style: none;
+ max-width: 100%; }
+
+svg:not(:root) {
+ overflow: hidden; }
+
+a,
+area,
+button,
+[role="button"],
+input:not([type="range"]),
+label,
+select,
+summary,
+textarea {
+ touch-action: manipulation; }
+
+table {
+ border-collapse: collapse; }
+
+caption {
+ padding-top: 1ex;
+ padding-bottom: 1ex;
+ color: #868e96;
+ text-align: left;
+ caption-side: bottom; }
+
+th {
+ text-align: inherit; }
+
+button {
+ border-radius: 0; }
+
+button:focus {
+ outline: 1px dotted;
+ outline: 5px auto -webkit-focus-ring-color; }
+
+input,
+button,
+select,
+optgroup,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit; }
+
+button,
+input {
+ overflow: visible; }
+
+button,
+select {
+ text-transform: none; }
+
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button; }
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ padding: 0;
+ border-style: none; }
+
+input[type="radio"],
+input[type="checkbox"] {
+ box-sizing: border-box;
+ padding: 0; }
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+ -webkit-appearance: listbox; }
+
+textarea {
+ overflow: auto;
+ resize: vertical; }
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0; }
+
+legend {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ padding: 0;
+ font-size: 1.72em;
+ margin-bottom: 0.5ex;
+ line-height: inherit;
+ color: inherit;
+ white-space: normal; }
+
+progress {
+ vertical-align: baseline; }
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto; }
+
+[type="search"] {
+ outline-offset: -2px;
+ -webkit-appearance: none; }
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button; }
+
+label, output {
+ display: inline-block; }
+
+summary {
+ display: list-item; }
+
+template, [hidden] {
+ display: none !important; }
+
+.wrapper {
+ margin-left: 8px;
+ margin-right: 8px; }
+ .wrapper__left {
+ margin-left: 8px;
+ margin-right: 8px; }
+ @media (min-width: 36em) {
+ .wrapper {
+ max-width: 960px;
+ margin-left: auto;
+ margin-right: auto; }
+ .wrapper__left {
+ max-width: 960px;
+ margin-left: 32px;
+ margin-right: auto; } }
+
+.clearfix:after {
+ content: " ";
+ /* Older browser do not support empty content */
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both; }
+
+.u-material-icons, .breadcrumbs__arrow, .modal__close:after, .accordion-list--no-numbers .accordion:before, .prose blockquote:before {
+ font-family: 'Material Icons';
+ font-weight: normal;
+ font-style: normal;
+ font-size: 24px;
+ line-height: 1;
+ letter-spacing: normal;
+ text-transform: none;
+ display: inline-block;
+ white-space: nowrap;
+ word-wrap: normal;
+ direction: ltr;
+ -webkit-font-feature-settings: 'liga';
+ -webkit-font-smoothing: antialiased; }
+
+.u-transition {
+ transition: all .4s ease; }
+
+@media (min-width: 36em) {
+ .small-only {
+ display: none !important; } }
+
+@media (max-width: 35.98em) {
+ .medium-up {
+ display: none !important; } }
+
+@media (max-width: 59.98em) {
+ .wrapper {
+ margin-left: 8px;
+ margin-right: 8px; } }
+
+@media (min-width: 85em) {
+ .wrapper {
+ max-width: 960px;
+ margin-left: auto;
+ margin-right: auto; } }
+
+.align-left {
+ text-align: left; }
+
+.align-right {
+ text-align: right; }
+
+.align-center {
+ text-align: center; }
+
+.screen-reader-only {
+ position: absolute;
+ width: 1px;
+ clip: rect(0 0 0 0);
+ overflow: hidden;
+ white-space: nowrap; }
+
+.margin-top\:05 {
+ margin-top: .5rem !important; }
+
+.margin-top\:1 {
+ margin-top: 1rem !important; }
+
+.margin-top\:2 {
+ margin-top: 2rem !important; }
+
+.margin-top\:3 {
+ margin-top: 3rem !important; }
+
+.margin-top\:4 {
+ margin-top: 4rem !important; }
+
+.margin-top\:5 {
+ margin-top: 5rem !important; }
+
+.margin-bottom\:05 {
+ margin-bottom: .5rem !important; }
+
+.margin-bottom\:1 {
+ margin-bottom: 1rem !important; }
+
+.margin-bottom\:2 {
+ margin-bottom: 2rem !important; }
+
+.margin-bottom\:3 {
+ margin-bottom: 3rem !important; }
+
+.margin-bottom\:4 {
+ margin-bottom: 4rem !important; }
+
+.margin-bottom\:5 {
+ margin-bottom: 5rem !important; }
+
+.margin-right\:05 {
+ margin-right: .5rem !important; }
+
+.margin-right\:1 {
+ margin-right: 1rem !important; }
+
+.margin-right\:2 {
+ margin-right: 2rem !important; }
+
+.margin-right\:3 {
+ margin-right: 3rem !important; }
+
+.margin-right\:4 {
+ margin-right: 4rem !important; }
+
+.margin-right\:5 {
+ margin-right: 5rem !important; }
+
+.margin-left\:05 {
+ margin-left: .5rem !important; }
+
+.margin-left\:1 {
+ margin-left: 1rem !important; }
+
+.margin-left\:2 {
+ margin-left: 2rem !important; }
+
+.margin-left\:3 {
+ margin-left: 3rem !important; }
+
+.margin-left\:4 {
+ margin-left: 4rem !important; }
+
+.margin-left\:5 {
+ margin-left: 5rem !important; }
+
+.padding-left\:05 {
+ padding-left: .5rem !important; }
+
+.padding-left\:1 {
+ padding-left: 1rem !important; }
+
+.padding-left\:2 {
+ padding-left: 2rem !important; }
+
+.padding-left\:3 {
+ padding-left: 3rem !important; }
+
+.padding-left\:4 {
+ padding-left: 4rem !important; }
+
+.padding-left\:5 {
+ padding-left: 5rem !important; }
+
+.padding-right\:05 {
+ padding-right: .5rem !important; }
+
+.padding-right\:1 {
+ padding-right: 1rem !important; }
+
+.padding-right\:2 {
+ padding-right: 2rem !important; }
+
+.padding-right\:3 {
+ padding-right: 3rem !important; }
+
+.padding-right\:4 {
+ padding-right: 4rem !important; }
+
+.padding-right\:5 {
+ padding-right: 5rem !important; }
+
+.padding-top\:05 {
+ padding-top: .5rem !important; }
+
+.padding-top\:1 {
+ padding-top: 1rem !important; }
+
+.padding-top\:2 {
+ padding-top: 2rem !important; }
+
+.padding-top\:3 {
+ padding-top: 3rem !important; }
+
+.padding-top\:4 {
+ padding-top: 4rem !important; }
+
+.padding-top\:5 {
+ padding-top: 5rem !important; }
+
+.padding-bottom\:05 {
+ padding-bottom: .5rem !important; }
+
+.padding-bottom\:1 {
+ padding-bottom: 1rem !important; }
+
+.padding-bottom\:2 {
+ padding-bottom: 2rem !important; }
+
+.padding-bottom\:3 {
+ padding-bottom: 3rem !important; }
+
+.padding-bottom\:4 {
+ padding-bottom: 4rem !important; }
+
+.padding-bottom\:5 {
+ padding-bottom: 5rem !important; }
+
+:root {
+ --gray-05-hsl: 0, 0%, 95%;
+ --gray-10-hsl: 0, 0%, 90%;
+ --gray-20-hsl: 0, 0%, 80%;
+ --gray-30-hsl: 0, 0%, 70%;
+ --gray-70-hsl: 0, 0%, 30%;
+ --gray-80-hsl: 0, 0%, 20%;
+ --black-hsl: 0, 0%, 10%;
+ --white-hsl: 0, 100%, 100%;
+ --success-green-hsl: 140, 100%, 17%;
+ --error-red-hsl: 5, 81%, 95%;
+ --warning-yellow-hsl: 45, 78%, 98%;
+ --base-hsl: 176, 44%, 15%;
+ --orange-hsl: 23, 74%, 51%;
+ --teal-hsl: 186, 42%, 51%;
+ --yellow-hsl: 47, 86%, 55%;
+ --red-hsl: 2, 66%, 44%;
+ --teal-dark-hsl: 185, 40%, 30%;
+ --orange-dark-hsl: 23, 73%, 38%;
+ --yellow-dark-hsl: 47, 85%, 30%;
+ --default-hsl: var(--base-hsl);
+ --primary-hsl: var(--orange-hsl);
+ --accent-hsl: var(--teal-hsl);
+ --color-error: hsla(var(--red-hsl), 1);
+ --color-warning: hsla(var(--yellow-hsl), 1);
+ --color-success: hsla(var(--success-green-hsl), 1);
+ --color-base: hsla(var(--base-hsl), 1);
+ --color-orange: hsla(var(--orange-hsl), 1);
+ --color-teal: hsla(var(--teal-hsl), 1);
+ --color-yellow: hsla(var(--yellow-hsl), 1);
+ --color-red: hsla(var(--red-hsl), 1);
+ --color-black: hsla(var(--black-hsl), 1);
+ --color-white: hsla(var(--white-hsl), 1);
+ --color-orange-dark: hsla(var(--orange-dark-hsl), 1);
+ --color-teal-dark: hsla(var(--teal-dark-hsl), 1);
+ --color-yellow-dark: hsla(var(--yellow-dark-hsl), 1);
+ --color-default: hsla(var(--base-hsl), 1);
+ --color-primary: hsla(var(--orange-hsl), 1);
+ --color-accent: hsla(var(--teal-hsl), 1); }
+
+.layout {
+ min-height: 100vh; }
+ .layout__content {
+ width: 100%; }
+ .layout__content-inner {
+ padding-top: 54px;
+ padding-bottom: 64px; }
+ .layout--single-column {
+ display: grid;
+ grid-template-areas: "header" "content" "footer"; }
+ .layout--single-column .layout__content {
+ max-width: 960px;
+ margin-left: auto;
+ margin-right: auto; }
+ .layout--narrow .layout__content {
+ max-width: 700px; }
+ .layout--full .layout__content {
+ max-width: 100vw;
+ width: 100vw; }
+ .layout--two-columns {
+ display: grid;
+ grid-template-areas: "nav" "header" "content" "footer"; }
+ @media (min-width: 36em) {
+ .layout--two-columns {
+ grid-template-columns: 320px 1fr;
+ grid-template-rows: auto auto 1fr auto;
+ grid-template-areas: "nav nav" "header header" "sidebar content" "footer footer"; } }
+ .layout--two-columns .layout__nav {
+ grid-area: nav; }
+ .layout--two-columns .layout__header {
+ grid-area: header; }
+ .layout--two-columns .layout__content {
+ grid-area: content; }
+ .layout--two-columns .layout__sidebar {
+ grid-area: sidebar; }
+ @media (max-width: 35.98em) {
+ .layout--two-columns .layout__sidebar {
+ display: none; } }
+ .layout--two-columns .layout__footer {
+ grid-area: footer; }
+ @media (min-width: 36em) {
+ .layout--docs {
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ height: 100vh; }
+ .layout--docs .layout__header {
+ display: flex;
+ flex-direction: column;
+ flex: 1 0 auto; }
+ .layout--docs .layout__body {
+ display: flex;
+ flex: 1 1 100%;
+ min-height: 0;
+ position: relative; }
+ .layout--docs .layout__body > * {
+ overflow-x: auto;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: none; }
+ .layout--docs .layout__sidebar {
+ flex: 0 0 auto;
+ width: 330px;
+ padding-top: 1rem;
+ border-right: 1px solid hsl(var(--base-hsl), 0.2); }
+ .layout--docs .layout__content {
+ flex: 1 1 auto; }
+ .layout--docs .layout__content-inner {
+ padding-top: 0px; } }
+ @media print {
+ .layout {
+ display: block;
+ height: auto;
+ overflow: auto;
+ width: auto;
+ padding: 0px;
+ margin: 0px;
+ max-width: 100%; }
+ .layout .layout__header,
+ .layout .layout__body,
+ .layout .layout__sidebar,
+ .layout .layout__content, .layout--single-column, .layout--two-columns {
+ display: block;
+ height: auto;
+ overflow: auto;
+ width: auto;
+ padding: 0px;
+ margin: 0px;
+ max-width: 100%; }
+ .layout .layout__sidebar {
+ display: none; }
+ .layout .layout__body > * {
+ overflow: auto; } }
+
+:root {
+ --colors-default: var(--color-base);
+ --colors-white: #FFFFFF;
+ --colors-orange: var(--color-orange);
+ --colors-teal: var(--color-teal);
+ --colors-yellow: var(--color-yellow);
+ --colors-red: var(--color-red);
+ --colors-alt: var(--colors-teal);
+ --colors-black: var(--colors-default); }
+
+.swatch {
+ padding-right: 8px; }
+ .swatch__color {
+ height: calc(100% - 16px);
+ margin: 8px 0 8px 8px;
+ padding: 24px 10px;
+ text-align: center;
+ color: white;
+ font-size: 1.5rem; }
+ .swatch p {
+ margin: 16px 0 0; }
+ .swatch pre {
+ padding: 0;
+ margin: 8px 0;
+ height: 100%;
+ background-color: #F0F0F0; }
+ .swatch code {
+ padding: 16px 32px; }
+
+.color-variants {
+ display: flex;
+ font-weight: 400; }
+
+.color-variants__col {
+ flex: 1;
+ margin: 8px; }
+
+.color-variants__item {
+ padding: 24px 0;
+ color: white;
+ position: relative; }
+
+.color-variants--tints {
+ color: black; }
+
+.color-variants--main {
+ margin: 8px 0;
+ font-weight: bold; }
+
+#logos {
+ padding: 40px 0; }
+ #logos .wrapper {
+ max-width: 700px; }
+ #logos .base-card {
+ padding: 0 0 24px 0;
+ margin-bottom: 16px; }
+ #logos .base-card:before {
+ background-color: transparent; }
+ #logos .base-card img {
+ height: 100px; }
+ #logos .base-card__content {
+ padding: 48px; }
+ #logos .button {
+ margin-top: 24px; }
+ #logos .negative-logo {
+ background-color: hsl(var(--base-hsl), 1); }
+
+#main_logo {
+ padding: 40px 0 100px;
+ text-align: center; }
+ #main_logo > img {
+ max-width: 400px; }
+
+.main-logo--animated #circle-1, .main-logo--animated #circle-2, .main-logo--animated #circle-3, .main-logo--animated #circle-4, .main-logo--animated #circle-5, .main-logo--animated #circle-6 {
+ transform: scale(0, 0);
+ transform-origin: 20% center;
+ animation: circleIn 0.25s;
+ animation-fill-mode: forwards;
+ animation-delay: 0.05s;
+ animation-timing-function: cubic-bezier(0.48, 0.04, 0.89, 1.37); }
+ @media (prefers-reduced-motion) {
+ .main-logo--animated #circle-1, .main-logo--animated #circle-2, .main-logo--animated #circle-3, .main-logo--animated #circle-4, .main-logo--animated #circle-5, .main-logo--animated #circle-6 {
+ animation: none;
+ transform: scale(1, 1); } }
+
+.main-logo--animated #circle-2 {
+ animation-delay: 0.2s; }
+
+.main-logo--animated #circle-3 {
+ animation-delay: 0.25s; }
+
+.main-logo--animated #circle-4 {
+ animation-delay: 0.3s; }
+
+.main-logo--animated #circle-5 {
+ animation-delay: 0.35s; }
+
+.main-logo--animated #circle-6 {
+ animation-delay: 0.4s; }
+
+@keyframes circleIn {
+ from {
+ opacity: 0;
+ transform: scale(0, 0); }
+ to {
+ opacity: 1;
+ transform: scale(1, 1); } }
+
+.alert-tag {
+ display: block;
+ border-radius: 6px;
+ padding: 6px 10px;
+ background: #FBF0C9;
+ font-size: 13px;
+ font-weight: 400;
+ text-align: left; }
+ .alert-tag__icon {
+ display: inline-block;
+ margin-right: 4px;
+ margin-top: 3px;
+ margin-bottom: -3px;
+ vertical-align: middle; }
+ .alert-tag a {
+ text-decoration: underline;
+ text-underline-offset: 1px;
+ color: #153634; }
+ .alert-tag a:hover {
+ color: #153634;
+ text-decoration-style: dashed; }
+ .alert-tag--anchor:hover {
+ background: #EFC329; }
+ .alert-tag--anchor:focus {
+ outline-offset: -2px; }
+ .alert-tag--anchor .alert-tag__content {
+ text-underline-offset: 1px;
+ color: #153634; }
+ .alert-tag--anchor:hover .alert-tag__content {
+ color: #153634;
+ text-decoration: underline;
+ text-decoration-style: dashed; }
+
+a {
+ font-weight: 400;
+ color: hsl(var(--teal-dark-hsl), 1); }
+ a:hover {
+ color: hsl(var(--orange-dark-hsl), 1); }
+ a:active {
+ color: hsl(var(--yellow-dark-hsl), 1); }
+
+.breadcrumbs {
+ padding: 8px 0; }
+ .breadcrumbs a {
+ color: var(--color-teal-dark); }
+ .breadcrumbs__item, .breadcrumbs__arrow {
+ vertical-align: middle;
+ margin-top: -16px;
+ margin-right: 6px; }
+ .breadcrumbs__item {
+ color: hsl(var(--black-hsl), 0.7); }
+ .breadcrumbs__arrow {
+ margin-bottom: -18px;
+ color: hsl(var(--base-hsl), 0.4); }
+ .breadcrumbs__item:last-of-type {
+ color: hsl(var(--black-hsl), 1); }
+
+.button {
+ --border-color: hsla(var(--base-hsl), 1);
+ --text-color: hsla(var(--base-hsl), 1);
+ --bg-color: transparent;
+ border: 2px solid var(--border-color);
+ color: var(--text-color);
+ display: inline-block;
+ border-radius: 3px;
+ padding: 6px 24px 8px;
+ font-size: 1rem;
+ font-weight: 400;
+ background-color: var(--bg-color);
+ text-decoration: none;
+ cursor: pointer; }
+ .button.button--small {
+ padding: 2px 16px 2px;
+ border-width: 1px;
+ font-size: .9rem; }
+ .button.button--large {
+ padding: 10px 32px 12px;
+ border-width: 3px;
+ font-size: 1.3rem; }
+ .button.button--unstyled {
+ border: 0;
+ padding: 0; }
+ .button.button--white {
+ --border-color: hsla(var(--white-hsl), 1);
+ --text-color: hsla(var(--white-hsl), 1); }
+ .button.button--orange {
+ --border-color: var(--color-orange);
+ --text-color: hsla(var(--orange-dark-hsl), 1); }
+ .button.button--teal {
+ --border-color: var(--color-teal);
+ --text-color: hsla(var(--teal-dark-hsl), 1); }
+ .button.button--yellow {
+ --border-color: var(--color-yellow);
+ --text-color: var(--color-yellow-dark); }
+ .button.button--red {
+ --border-color: var(--color-red);
+ --text-color: var(--color-red); }
+ .button.button--black {
+ --border-color: var(--color-black);
+ --bg-color: var(--color-black);
+ --text-color: var(--color-white); }
+ .button.button--disabled {
+ opacity: .3 !important;
+ pointer-events: none !important; }
+
+.code-block {
+ padding: 0 16px;
+ margin-top: 24px;
+ background-color: hsl(var(--base-hsl), 0.03);
+ border: 1px solid hsl(var(--base-hsl), 0.1); }
+ .code-block--wrap pre, .code-block--wrap code {
+ white-space: pre-wrap; }
+
+.hljs.bash {
+ background-color: transparent !important; }
+
+.cookie-consent {
+ display: none !important;
+ padding-top: 0 !important;
+ width: 450px;
+ height: 325px;
+ position: fixed !important;
+ bottom: 0;
+ left: 0;
+ background: #f9e1d3 !important;
+ z-index: 99; }
+
+.dropdown-filter {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap; }
+ @media (min-width: 36em) {
+ .dropdown-filter {
+ flex-wrap: nowrap; } }
+ .dropdown-filter__label {
+ flex-shrink: 0;
+ align-self: flex-start;
+ font-size: 16px;
+ font-weight: 700;
+ margin-top: 12px;
+ margin-right: 10px; }
+ .dropdown-filter__select {
+ font-weight: 400;
+ font-size: 16px;
+ padding: 2px 4px; }
+
+.export-data-button:hover [class*=background-fill1], .export-data-button:focus [class*=background-fill1] {
+ fill: #2e666b; }
+
+.export-data-button:hover [class*=background-fill2], .export-data-button:focus [class*=background-fill2] {
+ fill: white; }
+
+.filter {
+ --filter-hsl: var(--base-hsl);
+ --filter-text-hsl: var(--base-hsl);
+ color: hsl(var(--filter-text-hsl), 1);
+ border: 1px solid hsl(var(--filter-hsl), 1);
+ display: inline-block;
+ border-radius: 24px;
+ font-size: 1rem;
+ padding: 4px 24px 6px;
+ font-weight: 600;
+ letter-spacing: .3px; }
+ .filter:hover {
+ cursor: pointer;
+ background-color: hsl(var(--filter-hsl), 1);
+ color: hsl(var(--white-hsl), 1); }
+ .filter.filter--data-wrangling:hover {
+ --filter-hsl: var(--teal-hsl); }
+ .filter.filter--data-literacy:hover {
+ --filter-hsl: var(--orange-hsl); }
+ .filter.filter--human-centered-design:hover {
+ --filter-hsl: var(--red-hsl); }
+
+.filter--selected {
+ cursor: pointer;
+ color: hsl(var(--white-hsl), 1);
+ background-color: hsl(var(--filter-hsl), 1); }
+ .filter--selected.filter--data-wrangling {
+ --filter-hsl: var(--teal-hsl); }
+ .filter--selected.filter--data-literacy {
+ --filter-hsl: var(--orange-hsl); }
+ .filter--selected.filter--human-centered-design {
+ --filter-hsl: var(--red-hsl); }
+
+.filter--data-wrangling {
+ --filter-text-hsl: var(--teal-dark-hsl);
+ --filter-hsl: var(--teal-hsl); }
+
+.filter--data-literacy {
+ --filter-text-hsl: var(--orange-dark-hsl);
+ --filter-hsl: var(--orange-hsl); }
+
+.filter--human-centered-design {
+ --filter-hsl: var(--red-hsl);
+ --filter-text-hsl: var(--red-hsl); }
+
+.icon {
+ --icon-color: var(--color-teal);
+ display: inline-block; }
+ .icon__overlaid-text {
+ font-size: 12px;
+ font-weight: 700;
+ color: white;
+ background: var(--icon-color);
+ justify-content: center;
+ padding: 2px;
+ border-radius: 2px;
+ min-width: 4rem;
+ vertical-align: middle; }
+ .icon__mat-icon {
+ font-size: 24px;
+ vertical-align: bottom; }
+ .icon__mat-icon {
+ color: var(--icon-color); }
+
+.page-title {
+ font-weight: 500;
+ font-size: 35px;
+ text-align: center;
+ margin-bottom: 10px; }
+ .page-title__id {
+ display: block;
+ text-align: center;
+ margin-bottom: 38px; }
+ .page-title__id a {
+ font-size: 24px;
+ font-weight: 400;
+ text-decoration: underline; }
+
+.pager {
+ font-size: 16px;
+ font-weight: 400;
+ border: 1px solid #2e666b;
+ display: inline-block; }
+ .pager ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ padding: 8px 14px;
+ flex-wrap: wrap; }
+ @media (min-width: 36em) {
+ .pager ul {
+ padding: 12px 18px; } }
+ .pager__item a {
+ display: block; }
+ .pager__item a:hover svg {
+ stroke: #DE6E26; }
+ .pager__item--first {
+ text-decoration: underline;
+ margin-right: 8px; }
+ @media (min-width: 36em) {
+ .pager__item--first {
+ margin-right: 18px; } }
+ .pager__item--prev {
+ margin-right: 8px; }
+ @media (min-width: 36em) {
+ .pager__item--prev {
+ margin-right: 20px; } }
+ .pager__item--prev a {
+ padding: 0 6px; }
+ .pager__item--prev a:hover svg {
+ stroke: #DE6E26; }
+ .pager__item--ellipsis {
+ padding: 0 6px; }
+ @media (min-width: 36em) {
+ .pager__item--ellipsis {
+ padding: 0 12px; } }
+ .pager__item--page {
+ margin: 0 4px; }
+ .pager__item--page a {
+ padding: 6px; }
+ .pager__item--page a.active {
+ font-weight: bold; }
+ .pager__item--page a:hover {
+ text-decoration: dotted underline; }
+ .pager__item--next {
+ margin-left: 8px; }
+ @media (min-width: 36em) {
+ .pager__item--next {
+ margin-left: 20px; } }
+ .pager__item--next a {
+ padding: 0 6px; }
+ .pager__item--next a:hover svg {
+ stroke: #DE6E26; }
+ .pager__item--last {
+ text-decoration: underline;
+ margin-left: 8px; }
+ @media (min-width: 36em) {
+ .pager__item--last {
+ margin-left: 18px; } }
+
+.radio-buttons {
+ display: flex;
+ flex-wrap: wrap; }
+ .radio-buttons__group {
+ margin-right: 12px; }
+ .radio-buttons__group:last-of-type {
+ margin-right: 0; }
+ .radio-buttons__button {
+ color: #153634;
+ font-size: 16px;
+ font-weight: 400;
+ padding: 4px;
+ border-radius: 3px;
+ border: 1px solid #153634; }
+ .radio-buttons__button:hover {
+ cursor: pointer; }
+ .radio-buttons__button:focus {
+ outline: 1px dashed red; }
+ .radio-buttons input[type="radio"]:checked ~ .radio-buttons__button {
+ background: #153634;
+ color: white; }
+ .radio-buttons input[type="radio"]:focus ~ .radio-buttons__button {
+ outline: 1px dashed #DE6E26;
+ outline-offset: -2px; }
+
+.results-title {
+ font-weight: 400;
+ font-size: 24px; }
+ .results-title__subtitle {
+ font-size: 17px; }
+
+.search-summary-description {
+ font-weight: bold;
+ font-size: 18px; }
+
+.separator-light {
+ border-width: 0;
+ border-top: solid 1px hsl(var(--gray-30-hsl), 1);
+ margin: 1rem 0;
+ height: 0; }
+
+.spacer-1 {
+ padding-bottom: 8px; }
+
+.spacer-2 {
+ padding-bottom: 16px; }
+
+.spacer-3 {
+ padding-bottom: 24px; }
+
+.spacer-4 {
+ padding-bottom: 32px; }
+
+.spacer-5 {
+ padding-bottom: 40px; }
+
+.spacer-10 {
+ padding-bottom: 80px; }
+
+.lds-ellipsis {
+ display: block;
+ position: relative;
+ width: 80px;
+ height: 80px;
+ margin-left: auto;
+ margin-right: auto; }
+
+.lds-ellipsis div {
+ position: absolute;
+ top: 33px;
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ animation-timing-function: cubic-bezier(0, 1, 1, 0); }
+
+.lds-ellipsis div:nth-child(1) {
+ background: #DE6E26;
+ left: 8px;
+ animation: lds-ellipsis1 0.6s infinite; }
+
+.lds-ellipsis div:nth-child(2) {
+ background: #4DACB6;
+ left: 8px;
+ animation: lds-ellipsis2 0.6s infinite; }
+
+.lds-ellipsis div:nth-child(3) {
+ background: #EFC329;
+ left: 32px;
+ animation: lds-ellipsis2 0.6s infinite; }
+
+.lds-ellipsis div:nth-child(4) {
+ background: #BC2C26;
+ left: 56px;
+ animation: lds-ellipsis3 0.6s infinite; }
+
+@keyframes lds-ellipsis1 {
+ 0% {
+ transform: scale(0); }
+ 100% {
+ transform: scale(1); } }
+
+@keyframes lds-ellipsis3 {
+ 0% {
+ transform: scale(1); }
+ 100% {
+ transform: scale(0); } }
+
+@keyframes lds-ellipsis2 {
+ 0% {
+ transform: translate(0, 0); }
+ 100% {
+ transform: translate(24px, 0); } }
+
+.loading360g {
+ --logo-size: 80px;
+ --small-circle: 9%;
+ --medium-circle: 14%;
+ --large-circle: 20%;
+ --center-circle: 50%;
+ --diagonals: 21.7%;
+ --colour-red: #BC2C26;
+ --colour-yellow: #EFC329;
+ --colour-orange: var(--color-orange);
+ --colour-teal: #4DACB6;
+ --colour-dark: #153634;
+ display: inline-block;
+ position: relative;
+ width: var(--logo-size);
+ height: var(--logo-size);
+ animation: loading360g-rotate 2s forwards infinite; }
+
+.loading360g > div.circle-yellow {
+ background: var(--colour-yellow); }
+
+.loading360g > div.circle-red {
+ background: var(--colour-red); }
+
+.loading360g > div.circle-orange {
+ background: var(--colour-orange); }
+
+.loading360g > div.circle-teal {
+ background: var(--colour-teal); }
+
+.loading360g > div.circle-small {
+ --circle-size: var(--small-circle); }
+
+.loading360g > div.circle-medium {
+ --circle-size: var(--medium-circle); }
+
+.loading360g > div.circle-large {
+ --circle-size: var(--large-circle); }
+
+.loading360g > div {
+ position: absolute;
+ width: var(--circle-size);
+ height: var(--circle-size);
+ background: #000;
+ border-radius: 50%;
+ animation: loading360g-grow 1.6s ease-in-out infinite; }
+
+.loading360g > div.center-circle {
+ --circle-size: var(--center-circle);
+ top: calc(50% - calc(var(--circle-size) / 2));
+ left: calc(50% - calc(var(--circle-size) / 2));
+ background: var(--colour-dark);
+ animation: none; }
+
+.loading360g > div.circle-1 {
+ animation-delay: 0s;
+ top: calc(12.5% - calc(var(--circle-size) / 2));
+ left: calc(50% - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-2 {
+ animation-delay: -0.2s;
+ top: calc(var(--diagonals) - calc(var(--circle-size) / 2));
+ left: calc(var(--diagonals) - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-3 {
+ animation-delay: -0.4s;
+ top: calc(50% - calc(var(--circle-size) / 2));
+ left: calc(12.5% - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-4 {
+ animation-delay: -0.6s;
+ bottom: calc(var(--diagonals) - calc(var(--circle-size) / 2));
+ left: calc(var(--diagonals) - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-5 {
+ animation-delay: -0.8s;
+ bottom: calc(12.5% - calc(var(--circle-size) / 2));
+ left: calc(50% - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-6 {
+ animation-delay: -1s;
+ bottom: calc(var(--diagonals) - calc(var(--circle-size) / 2));
+ right: calc(var(--diagonals) - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-7 {
+ animation-delay: -1.2s;
+ bottom: calc(50% - calc(var(--circle-size) / 2));
+ right: calc(12.5% - calc(var(--circle-size) / 2)); }
+
+.loading360g > div.circle-8 {
+ animation-delay: -1.4s;
+ top: calc(var(--diagonals) - calc(var(--circle-size) / 2));
+ right: calc(var(--diagonals) - calc(var(--circle-size) / 2)); }
+
+@keyframes loading360g-grow {
+ 0%, 20%, 80%, 100% {
+ transform: scale(1); }
+ 50% {
+ transform: scale(1.75); } }
+
+@keyframes loading360g-rotate {
+ 0% {
+ transform: rotate(0deg); }
+ 100% {
+ transform: rotate(360deg); } }
+
+.tab {
+ display: inline-block; }
+ .tab__inner {
+ color: inherit;
+ display: inline-block;
+ padding: 1rem;
+ border: solid 1px #e0e0e0; }
+ .tab__inner:hover {
+ color: inherit; }
+ .tab--active {
+ border-top: 4px solid #4DACB6; }
+ .tab--active .tab__inner {
+ border-width: 0 1px; }
+ .tab--inactive {
+ background: hsl(var(--gray-10-hsl), 1); }
+
+.tag {
+ --tag-border-hsl: var(--base-hsl);
+ --tag-text-hsl: var(--base-hsl);
+ --tag-bg-hsl: var(--white-hsl);
+ color: hsl(var(--tag-text-hsl), 1);
+ border: 2px solid hsl(var(--tag-border-hsl), 1);
+ display: inline-block;
+ padding: 2px 24px 4px;
+ border-radius: 24px;
+ font-size: 1rem;
+ font-weight: 400;
+ background-color: hsl(var(--tag-bg-hsl), 1); }
+
+.tag:hover {
+ cursor: pointer; }
+
+.tag--large {
+ padding: 4px 24px 6px;
+ font-weight: 600; }
+ .tag--large:hover {
+ --tag-text-hsl: var(--white-hsl);
+ --tag-bg-hsl: var(--base-hsl); }
+ .tag--large.tag--data-wrangling:hover {
+ --tag-bg-hsl: var(--teal-hsl); }
+ .tag--large.tag--data-literacy:hover {
+ --tag-bg-hsl: var(--orange-hsl); }
+ .tag--large.tag--human-centered-design:hover {
+ --tag-bg-hsl: var(--red-hsl); }
+
+.tag--selected {
+ --tag-border-hsl: var(--white-hsl);
+ --tag-bg-hsl: var(--base-hsl); }
+ .tag--selected.tag--data-wrangling {
+ --tag-bg-hsl: var(--teal-dark-hsl); }
+ .tag--selected.tag--data-literacy {
+ --tag-bg-hsl: var(--orange-dark-hsl); }
+ .tag--selected.tag--human-centered-design {
+ --tag-bg-hsl: var(--red-hsl); }
+
+.tag--data-wrangling {
+ --tag-text-hsl: var(--teal-dark-hsl);
+ --tag-border-hsl: var(--teal-hsl); }
+
+.tag--data-literacy {
+ --tag-text-hsl: var(--orange-dark-hsl);
+ --tag-border-hsl: var(--orange-hsl); }
+
+.tag--human-centered-design {
+ --tag-text-hsl: var(--red-hsl);
+ --tag-border-hsl: var(--red-hsl); }
+
+:root {
+ --text-base-size: 1rem;
+ --text-base-line-height: 1.62;
+ --fonts-primary: 'Roboto', sans-serif; }
+ @media (min-width: 60em) {
+ :root {
+ --text-base-size: 1rem; } }
+
+.h1 {
+ font-size: 2rem;
+ font-weight: 300;
+ color: hsl(var(--base-hsl), 1);
+ line-height: 1.3; }
+ @media (min-width: 36em) {
+ .h1 {
+ font-size: 1.7rem; } }
+ @media (min-width: 85em) {
+ .h1 {
+ font-size: 3rem; } }
+
+.intro {
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: hsl(var(--base-hsl), 0.7); }
+ @media (min-width: 85em) {
+ .intro {
+ font-size: 1.7rem;
+ line-height: 1.6; } }
+
+.h2 {
+ font-size: 1.3rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1);
+ line-height: 1.3; }
+ @media (min-width: 36em) {
+ .h2 {
+ font-size: 1.5rem; } }
+ @media (min-width: 85em) {
+ .h2 {
+ font-size: 2.2rem; } }
+
+.h3 {
+ font-size: 1.1rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1);
+ line-height: 1.3;
+ line-height: 1.3; }
+ @media (min-width: 36em) {
+ .h3 {
+ font-size: 1.2rem; } }
+ @media (min-width: 85em) {
+ .h3 {
+ font-size: 1.7rem; } }
+
+.h4 {
+ font-size: 1rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1); }
+ @media (min-width: 36em) {
+ .h4 {
+ font-size: 1.1rem; } }
+ @media (min-width: 85em) {
+ .h4 {
+ font-size: 1.3rem; } }
+
+.h5 {
+ font-size: 1rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1); }
+ @media (min-width: 36em) {
+ .h5 {
+ font-size: 1.1rem; } }
+ @media (min-width: 85em) {
+ .h5 {
+ font-size: 1.1rem; } }
+
+.h6 {
+ font-size: 1rem;
+ font-weight: 300;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1);
+ text-decoration: underline; }
+ @media (min-width: 36em) {
+ .h6 {
+ font-size: 1rem; } }
+ @media (min-width: 85em) {
+ .h6 {
+ font-size: 1rem; } }
+
+p {
+ line-height: 1.62;
+ margin: 0 0 1.62ex 0; }
+ p.intro {
+ font-size: 1.5em;
+ font-weight: 300;
+ margin-bottom: 2ex;
+ line-height: 1.5; }
+ @media (min-width: 60em) {
+ p {
+ line-height: 1.65;
+ margin-bottom: 1.65ex; }
+ p.intro {
+ font-size: 1.6em;
+ margin-bottom: 3ex;
+ line-height: 1.37; } }
+
+.p {
+ font-size: 1.1rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1);
+ margin-bottom: 0; }
+ @media (min-width: 85em) {
+ .p {
+ font-size: 1.2rem; } }
+ .p > a {
+ font-weight: 400;
+ color: var(--color-teal-dark); }
+
+.accordion__trigger {
+ cursor: pointer; }
+
+.accordion__extra {
+ max-height: 0;
+ overflow: hidden;
+ transition: all .5s ease; }
+
+.accordion--expanded .accordion__extra {
+ height: auto;
+ max-height: 4000px; }
+
+.bar-chart {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ --scale: 127;
+ --bar-bg-color: hsla(var(--yellow-hsl), 1); }
+ .bar-chart__item {
+ --value: 0;
+ display: flex;
+ padding-bottom: 8px; }
+ .bar-chart__bar {
+ flex: 4;
+ position: relative;
+ margin-right: 40px; }
+ .bar-chart__bar > span {
+ display: inline-block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ background-color: var(--bar-bg-color);
+ width: var(--width); }
+ .bar-chart__bar > span:after {
+ counter-reset: value var(--value);
+ content: counter(value);
+ position: absolute;
+ left: calc(100% + 8px); }
+ .bar-chart__label {
+ flex: 0;
+ min-width: 136px;
+ font-size: 1rem;
+ padding-right: 16px;
+ text-align: right; }
+
+.prose .box,
+.box {
+ --box-bg-hsl: var(--base-hsl);
+ --box-text-hsl: var(--base-hsl);
+ background-color: hsl(var(--box-bg-hsl), 0.1);
+ position: relative;
+ padding: 24px 24px 24px 24px; }
+ .prose .box:before,
+ .box:before {
+ background-color: hsl(var(--box-bg-hsl), 1);
+ content: "";
+ position: absolute;
+ height: 100%;
+ width: 4px;
+ left: 0;
+ top: 0; }
+ @media print {
+ .prose .box:before,
+ .box:before {
+ display: none; } }
+ .prose .box h3, .prose .box__heading,
+ .box h3,
+ .box__heading {
+ margin: 0 0 4px 0;
+ font-size: 1rem;
+ font-weight: 600;
+ color: hsl(var(--box-text-hsl), 1); }
+ .prose .box a,
+ .box a {
+ color: hsl(var(--box-text-hsl), 1);
+ font-weight: 500;
+ text-decoration: underline;
+ text-underline-position: under; }
+ .prose .box a:hover,
+ .box a:hover {
+ background-color: hsl(var(--box-bg-hsl), 0.1); }
+ @media print {
+ .prose .box,
+ .box {
+ break-inside: avoid;
+ padding-left: 0;
+ padding-right: 0;
+ border-top: 4px solid hsl(var(--box-bg-hsl), 1);
+ border-bottom: 4px solid hsl(var(--box-bg-hsl), 1); } }
+
+.prose .box:only-child {
+ margin-top: 0; }
+
+.prose .box.box--teal,
+.box--teal {
+ --box-bg-hsl: var(--teal-hsl);
+ --box-text-hsl: var(--teal-dark-hsl); }
+
+.prose .box.box--orange,
+.box--orange {
+ --box-bg-hsl: var(--orange-hsl);
+ --box-text-hsl: var(--orange-dark-hsl); }
+
+.prose .box.box--yellow,
+.box--yellow {
+ --box-bg-hsl: var(--yellow-hsl);
+ --box-text-hsl: var(--yellow-dark-hsl); }
+
+.prose .box.box--red,
+.box--red {
+ --box-bg-hsl: var(--red-hsl);
+ --box-text-hsl: var(--red-hsl); }
+
+.file-summary {
+ align-items: baseline; }
+ .file-summary__label {
+ margin-right: 0.5rem; }
+ .file-summary__stat {
+ font-size: 2rem; }
+ .file-summary__specs {
+ border-color: #BC2C26;
+ color: #BC2C26; }
+ .file-summary__native-icon {
+ position: relative;
+ top: 5px; }
+ .file-summary__native-icon svg {
+ width: 22px;
+ height: auto; }
+
+.filter-list {
+ border: 1px solid #A6D5DA;
+ border-radius: 2px; }
+ .filter-list__accordion[open] .filter-list__label .accordion-toggle-icon .accordion-toggle-icon__vertical-line {
+ transform-origin: center;
+ transform: rotateZ(90deg);
+ transition: 0.1s; }
+ .filter-list__label {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: #D3EAED;
+ font-size: 16px;
+ font-weight: 500;
+ padding: 4px 10px; }
+ .filter-list__label .accordion-toggle-icon {
+ transition: 0.2s; }
+ .filter-list__label .accordion-toggle-icon .accordion-toggle-icon__vertical-line {
+ transform-origin: center;
+ transform: rotateZ(0deg);
+ transition: 0.1s; }
+ .filter-list__label:hover {
+ cursor: pointer; }
+ .filter-list__label:hover .accordion-toggle-icon {
+ transform: scale(1.1, 1.1);
+ transition: 0.2s; }
+ .filter-list__label::-webkit-details-marker {
+ display: none; }
+ .filter-list__listing {
+ max-height: 250px;
+ overflow-y: auto;
+ list-style: none;
+ padding: 0;
+ margin: 0; }
+ .filter-list__listing li:last-of-type .filter-list__filter-item {
+ border-bottom: 0; }
+ .filter-list__filter-item {
+ display: block;
+ position: relative;
+ border-radius: 0;
+ padding: 4px 0;
+ padding-left: 34px;
+ border-bottom: 1px solid #A6D5DA;
+ color: #153634; }
+ .filter-list__filter-item::before {
+ content: '';
+ width: 14px;
+ height: 14px;
+ border: 1px solid #153634;
+ border-radius: 2px;
+ position: absolute;
+ left: 8px;
+ top: 9px;
+ box-sizing: border-box; }
+ .filter-list__filter-item::after {
+ content: '';
+ width: 10px;
+ height: 10px;
+ background: url("/images/checkmark-icon.svg") no-repeat;
+ background-size: cover;
+ border-radius: 2px;
+ position: absolute;
+ left: 10px;
+ top: 11px;
+ display: none;
+ box-sizing: border-box; }
+ .filter-list__filter-item:hover {
+ color: #153634;
+ text-decoration: underline; }
+ .filter-list__filter-item:active {
+ color: #153634;
+ background: #F7DBC9; }
+ .filter-list__filter-item:focus {
+ color: #153634;
+ background: #F7DBC9; }
+ .filter-list__filter-item.active {
+ background: #F7DBC9; }
+ .filter-list__filter-item.active::after {
+ display: block; }
+ .filter-list__expand-button {
+ display: block;
+ padding: 4px 12px;
+ text-align: center;
+ color: #153634;
+ font-size: 15px;
+ font-weight: 500; }
+ .filter-list__contents--form {
+ align-items: baseline;
+ padding: 6px 8px;
+ background: #F6FBFB;
+ border-bottom: 1px solid #A6D5DA;
+ max-width: 100%;
+ flex-wrap: wrap; }
+ .filter-list__contents--form-item {
+ display: inline-block;
+ flex-direction: column;
+ margin-right: 8px;
+ flex-shrink: 2;
+ max-width: 35%;
+ margin-bottom: 4px; }
+ .filter-list__contents--form-item label {
+ margin-bottom: 0;
+ font-weight: 400;
+ font-size: 15px;
+ box-sizing: border-box; }
+ .filter-list__contents--form-item input {
+ background: white;
+ border: 1px solid #A6D5DA;
+ border-radius: 2px;
+ font-size: 15px;
+ width: auto;
+ max-width: 100%; }
+ .filter-list__contents--form-submit {
+ appearance: none;
+ border: none;
+ display: inline-block;
+ align-self: flex-end;
+ font-weight: 400;
+ font-size: 15px;
+ background: #2e666b;
+ padding: 2px 6px;
+ color: white;
+ border-radius: 2px;
+ flex-shrink: 0;
+ margin-bottom: 4px;
+ border: 1px solid #2e666b; }
+ .filter-list__contents--form-submit:hover {
+ cursor: pointer; }
+ .filter-list__contents--form-clear {
+ appearance: none;
+ border: none;
+ align-self: flex-end;
+ font-weight: 400;
+ font-size: 15px;
+ background: white;
+ padding: 2px 6px;
+ color: #2e666b;
+ border-radius: 2px;
+ flex-shrink: 0;
+ margin-bottom: 4px;
+ border: 1px solid #2e666b; }
+ .filter-list__contents--form-clear:hover {
+ cursor: pointer; }
+
+.filter-list--with-checkboxes .filter-list__form--radios {
+ padding: 12px 8px;
+ border-bottom: 1px solid #A6D5DA; }
+
+.filter-list--with-checkboxes .filter-list__form--radio-item label {
+ margin: 0;
+ padding-left: 24px;
+ position: relative;
+ font-size: 15px;
+ font-weight: 400;
+ box-sizing: border-box; }
+ .filter-list--with-checkboxes .filter-list__form--radio-item label::before {
+ content: '';
+ position: absolute;
+ left: 0px;
+ top: 4px;
+ width: 14px;
+ height: 14px;
+ border: 1px solid #2e666b;
+ border-radius: 100%;
+ box-sizing: border-box; }
+ .filter-list--with-checkboxes .filter-list__form--radio-item label::after {
+ content: '';
+ position: absolute;
+ background: #2e666b;
+ left: 2px;
+ top: 6px;
+ width: 10px;
+ height: 10px;
+ border-radius: 100%;
+ display: none;
+ box-sizing: border-box; }
+
+.filter-list--with-checkboxes .filter-list__form--radio-item input:checked ~ label::after {
+ display: block; }
+
+.filter-list--with-checkboxes .filter-list__form--radio-item input:focus ~ label {
+ outline: 2px solid #DE6E26; }
+
+.filter-list--with-checkboxes .filter-list__form--checkbox-listing {
+ max-height: 200px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ border-bottom: 1px solid #A6D5DA;
+ display: flex;
+ flex-direction: column; }
+ .filter-list--with-checkboxes .filter-list__form--checkbox-listing li label {
+ border-bottom: 1px solid #A6D5DA; }
+ .filter-list--with-checkboxes .filter-list__form--checkbox-listing li:last-of-type label {
+ border-bottom: none; }
+
+.filter-list--with-checkboxes .filter-list__form--checkbox-item label {
+ margin: 0;
+ padding-top: 4px;
+ padding-bottom: 5px;
+ padding-left: 34px;
+ padding-right: 34px;
+ position: relative;
+ width: 100%;
+ font-size: 15px;
+ font-weight: 400;
+ box-sizing: border-box; }
+ .filter-list--with-checkboxes .filter-list__form--checkbox-item label:hover {
+ text-decoration: dashed underline;
+ text-underline-offset: 2px;
+ cursor: pointer; }
+ .filter-list--with-checkboxes .filter-list__form--checkbox-item label::before {
+ content: '';
+ position: absolute;
+ left: 8px;
+ top: 8px;
+ width: 14px;
+ height: 14px;
+ border: 1px solid #2e666b;
+ border-radius: 3px;
+ box-sizing: border-box; }
+ .filter-list--with-checkboxes .filter-list__form--checkbox-item label::after {
+ content: '';
+ position: absolute;
+ background: url("/images/checkmark-icon.svg") no-repeat;
+ background-size: cover;
+ left: 10px;
+ top: 10px;
+ width: 10px;
+ height: 10px;
+ display: none;
+ box-sizing: border-box; }
+
+.filter-list--with-checkboxes .filter-list__form--checkbox-item input:checked ~ label {
+ background: #F7DBC9; }
+ .filter-list--with-checkboxes .filter-list__form--checkbox-item input:checked ~ label::after {
+ display: block; }
+
+.filter-list--with-checkboxes .filter-list__form--checkbox-item input:focus ~ label {
+ outline: 2px solid #DE6E26;
+ outline-offset: -3px; }
+
+.filter-list--with-checkboxes .filter-list__form--summary {
+ padding: 12px 8px;
+ list-style: none;
+ margin: 0; }
+ .filter-list--with-checkboxes .filter-list__form--summary-contents {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-wrap: wrap; }
+ .filter-list--with-checkboxes .filter-list__form--summary-label {
+ font-weight: 400;
+ font-size: 15px;
+ margin-bottom: 4px; }
+ .filter-list--with-checkboxes .filter-list__form--summary-item {
+ display: none;
+ margin-right: 6px;
+ margin-bottom: 6px; }
+ .filter-list--with-checkboxes .filter-list__form--summary-item.active {
+ display: block; }
+ .filter-list--with-checkboxes .filter-list__form--summary-button {
+ appearance: none;
+ border: 1px solid #2e666b;
+ background: white;
+ color: #2e666b;
+ border-radius: 3px;
+ font-size: 15px;
+ font-weight: 400; }
+ .filter-list--with-checkboxes .filter-list__form--summary-button:hover {
+ cursor: pointer; }
+ .filter-list--with-checkboxes .filter-list__form--summary-button__label {
+ margin-right: 6px; }
+
+.filter-list--with-checkboxes .filter-list__form--actions {
+ padding: 0px 8px 12px; }
+
+.filter-summary {
+ display: flex;
+ align-items: center;
+ font-weight: 400;
+ font-size: 15px;
+ flex-wrap: wrap; }
+ @media (min-width: 36em) {
+ .filter-summary {
+ flex-wrap: nowrap; } }
+ .filter-summary__label {
+ margin-top: 8px;
+ margin-right: 12px;
+ flex-shrink: 0;
+ align-self: flex-start; }
+ .filter-summary__filters {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-wrap: wrap; }
+ .filter-summary__filters-item {
+ margin-right: 12px; }
+ .filter-summary__filters-item a {
+ margin: 4px 0;
+ display: block;
+ border: 1px solid #A6D5DA;
+ border-radius: 3px;
+ padding: 2px 6px; }
+ .filter-summary__filters-item--label {
+ margin-right: 4px; }
+ .filter-summary__filters-clear a {
+ margin: 4px 0;
+ display: block;
+ background: #2e666b;
+ color: white;
+ border-radius: 3px;
+ padding: 2px 6px; }
+
+.frame {
+ --n: 9;
+ --d: 16;
+ padding-bottom: calc(var(--n) / var(--d) * 100%);
+ position: relative; }
+
+.frame > * {
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center; }
+
+.frame > img,
+.frame > video,
+.frame > iframe {
+ width: 100%;
+ height: 100%;
+ object-fit: cover; }
+
+.header-group {
+ --header-group-brow-text-hsl: var(--orange-dark-hsl);
+ --header-group-subtitle-text-hsl: var(--base-hsl);
+ --header-group-title-text-hsl: var(--base-hsl);
+ --header-group-text-hsl: var(--base-hsl); }
+
+.header-group__brow {
+ color: hsl(var(--header-group-brow-text-hsl), 1);
+ font-size: 1.4rem;
+ margin-bottom: 0;
+ text-transform: uppercase; }
+
+.header-group__title {
+ color: hsl(var(--header-group-title-text-hsl), 1);
+ font-size: 3.2em;
+ font-weight: 200;
+ line-height: 1.2;
+ margin: 0 0 0.8rem 0; }
+ .header-group__title > small {
+ font-size: 50%; }
+
+.header-group__subtitle {
+ color: hsl(var(--header-group-subtitle-text-hsl), 1);
+ font-size: 1.6em;
+ font-weight: 500;
+ line-height: 1.375;
+ margin: 0 0 5.5rem 0; }
+
+.header-group__excerpt {
+ color: hsl(var(--header-group-text-hsl), 1);
+ font-weight: 300;
+ line-height: 1.65;
+ margin: 1ex 0; }
+
+@media (max-width: 59.98em) {
+ .header-group br {
+ display: none; } }
+
+.icon-badge {
+ display: inline-block;
+ border: solid 1px #153634;
+ border-radius: 10px;
+ padding: 0.5rem 0.8rem;
+ margin: 0 0.5rem 0.5rem 0;
+ font-size: 80%; }
+ @media (min-width: 36em) {
+ .icon-badge {
+ font-size: 90%; } }
+
+.dashboard-modal {
+ background: white;
+ padding: 1rem; }
+ .dashboard-modal h3 {
+ margin-top: 0; }
+ .dashboard-modal__groups {
+ display: flex;
+ flex-direction: column; }
+ @media (min-width: 60em) {
+ .dashboard-modal__groups {
+ flex-direction: row; } }
+ .dashboard-modal__group:first-child {
+ max-width: 100%; }
+ @media (min-width: 60em) {
+ .dashboard-modal__group:first-child {
+ max-width: 20%; } }
+ .dashboard-modal__stat {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ padding: 0.5rem;
+ border: solid 1px hsl(var(--gray-30-hsl));
+ margin: 0 0 1rem 0; }
+ @media (min-width: 60em) {
+ .dashboard-modal__stat {
+ margin: 0 1rem 0 0; } }
+ .dashboard-modal__stat span {
+ margin-bottom: 0.5rem; }
+ .dashboard-modal__stat span:last-child {
+ margin-bottom: 0; }
+ .dashboard-modal__stat-value-placeholder {
+ font-size: 1.2rem;
+ font-weight: 700;
+ color: hsl(var(--gray-30-hsl), 1); }
+ .dashboard-modal__subtitle {
+ font-weight: 700;
+ margin: 0 0 4px 0; }
+
+.modal {
+ transition: all .4s ease;
+ align-items: center;
+ justify-content: center;
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 10000;
+ width: 100vw;
+ height: 100vh; }
+ .modal__overlay {
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ position: fixed;
+ background-color: hsl(var(--white-hsl), 0.4); }
+ .modal__trigger {
+ cursor: pointer; }
+ .modal__close {
+ cursor: pointer;
+ background-color: unset;
+ padding: unset;
+ border: unset;
+ float: right; }
+ .modal__close:after {
+ content: 'close'; }
+ .modal__window {
+ position: relative;
+ padding: 40px;
+ max-height: 90vh;
+ max-width: 960px;
+ overflow-y: scroll;
+ background-color: hsl(var(--white-hsl), 1);
+ box-shadow: 8px 8px 32px hsl(var(--base-hsl), 0.1); }
+
+.modal.modal--shown {
+ display: flex; }
+
+body.modal--shown {
+ overflow: hidden; }
+
+.progress-bar {
+ position: relative;
+ display: inline-block;
+ width: 400px;
+ height: 43px;
+ border: 2px solid currentColor;
+ border-radius: 3px;
+ vertical-align: bottom; }
+ .progress-bar > progress {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border: none;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ color: hsl(var(--base-hsl), 1);
+ font-size: 1rem;
+ font-weight: 400;
+ text-align: left; }
+ .progress-bar > progress[value]::-webkit-progress-bar {
+ background-color: hsl(var(--white-hsl), 1); }
+ .progress-bar > progress[value]::-webkit-progress-value {
+ background-color: hsl(var(--base-hsl), 0.1); }
+ .progress-bar > progress:before, .progress-bar > progress:after,
+ .progress-bar > progress label {
+ position: absolute;
+ top: 6px; }
+ .progress-bar > progress:before {
+ content: '%';
+ right: 16px; }
+ .progress-bar > progress:after {
+ content: attr(value);
+ right: 30px; }
+ .progress-bar > label {
+ position: absolute;
+ top: 6px;
+ left: 16px; }
+
+.prose figure {
+ box-shadow: 0px 4px 8px hsl(var(--base-hsl), 0.15); }
+
+.prose figcaption {
+ font-size: 85%;
+ padding: 1.5rem; }
+
+.search-summary {
+ width: 100%;
+ border-radius: 3px;
+ overflow: hidden;
+ margin-top: 1rem;
+ margin-bottom: 1rem; }
+ .search-summary--header {
+ display: flex;
+ flex-direction: column; }
+ @media (min-width: 36em) {
+ .search-summary--header {
+ flex-direction: row; } }
+ .search-summary--title {
+ font-size: 1.125rem;
+ color: white;
+ background: #2B666A;
+ line-height: 120%;
+ font-weight: 700;
+ padding: 1rem;
+ display: flex;
+ align-items: center;
+ white-space: nowrap; }
+ .search-summary--description {
+ color: #153634;
+ background: #F4D569;
+ font-size: 1rem;
+ line-height: 120%;
+ font-weight: 500;
+ padding: 1rem;
+ display: flex;
+ align-items: center;
+ width: 100%; }
+ @media (min-width: 36em) {
+ .search-summary--description {
+ padding: 0.9rem 1.125rem; } }
+ .search-summary--description a {
+ color: #153634;
+ text-decoration: solid underline;
+ font-weight: 700; }
+ .search-summary--description a:hover {
+ text-decoration: dashed underline; }
+ .search-summary--main {
+ background: #FBF0C9; }
+ @media (min-width: 36em) {
+ .search-summary--main {
+ display: flex;
+ flex-direction: row; } }
+ .search-summary--main__left-column {
+ padding: 1rem;
+ width: 100%; }
+ @media (min-width: 85em) {
+ .search-summary--main__left-column {
+ display: flex; }
+ .search-summary--main__left-column .graph-item:first-of-type {
+ margin-right: 1rem; } }
+ .search-summary--main__right-column {
+ position: relative;
+ width: 100%; }
+ .search-summary--main .graph-label {
+ font-size: 0.9375rem;
+ font-weight: 500;
+ padding: 1rem;
+ padding-top: 0;
+ line-height: 110%; }
+ .search-summary--main .summary-content--item {
+ background: #F9E6AC;
+ padding: 0.625rem;
+ font-size: 0.9375rem;
+ font-weight: 500;
+ line-height: 110%; }
+ @media (min-width: 85em) {
+ .search-summary--main .summary-content--item {
+ padding-right: 180px;
+ /* The width of the absolute positioned illustration */ } }
+ .search-summary--main .summary-content--item:nth-of-type(even) {
+ background: #F7E194; }
+ .search-summary--main .summary-illustration {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.5rem;
+ background: #F9E6AC;
+ border-top: 0.5rem solid #F7E194; }
+ @media (min-width: 85em) {
+ .search-summary--main .summary-illustration {
+ position: absolute;
+ right: 1rem;
+ top: -0.2rem;
+ background: none;
+ border-top: none; } }
+ .search-summary--footer__details[open] summary .summary-icon svg {
+ transform: rotateX(180deg); }
+ .search-summary--footer__details[open] summary:hover .summary-icon svg {
+ transform: translateY(-2px) rotateX(180deg); }
+ .search-summary--footer summary {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #EFB793;
+ padding: 0.8rem 1rem; }
+ .search-summary--footer summary::-webkit-details-marker {
+ display: none; }
+ .search-summary--footer summary:hover {
+ cursor: pointer; }
+ .search-summary--footer summary:hover .summary-icon svg {
+ transform: translateY(2px); }
+ .search-summary--footer .summary-label {
+ font-size: 1rem;
+ line-height: 130%;
+ font-weight: 700; }
+ .search-summary--footer .summary-icon {
+ border: 1px solid #153634;
+ border-radius: 100%;
+ width: 25px;
+ height: 25px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transform: translateY(0px);
+ transition: transform 0.2s ease;
+ margin-left: 12px; }
+ .search-summary--footer .summary-icon svg {
+ transition: transform 0.2s ease; }
+ @media (min-width: 85em) {
+ .search-summary--footer .summary-footer--content {
+ display: grid;
+ grid-template-columns: 1fr 1fr; } }
+ .search-summary--footer .summary-footer--item {
+ color: #153634;
+ display: flex;
+ padding: 0.625rem;
+ font-size: 0.9375rem;
+ line-height: 120%;
+ background: #FBF0C9;
+ /* This styling will not work for css grid in 2 columns */
+ /* Assuming a limited number of selectors needed, it's easier to just write them out */ }
+ @media (min-width: 36em) {
+ .search-summary--footer .summary-footer--item {
+ align-items: center; } }
+ .search-summary--footer .summary-footer--item a:not(.alert-tag) {
+ color: #153634;
+ text-decoration: solid underline; }
+ .search-summary--footer .summary-footer--item a:not(.alert-tag):hover {
+ text-decoration: dashed underline; }
+ .search-summary--footer .summary-footer--item:nth-of-type(even) {
+ background: #F7E194; }
+ @media (min-width: 85em) {
+ .search-summary--footer .summary-footer--item:nth-of-type(even) {
+ background: #FBF0C9; }
+ .search-summary--footer .summary-footer--item:nth-of-type(2) {
+ background: #F7E194; }
+ .search-summary--footer .summary-footer--item:nth-of-type(3) {
+ background: #F7E194; }
+ .search-summary--footer .summary-footer--item:nth-of-type(6) {
+ background: #F7E194; } }
+ .search-summary--footer .summary-footer--item__label {
+ font-weight: 500;
+ margin-right: 0.5rem;
+ white-space: nowrap; }
+ .search-summary--footer .summary-footer--item__value {
+ align-items: center;
+ vertical-align: middle; }
+ .search-summary--footer .summary-footer--item__value .alert-tag {
+ display: inline-block;
+ margin: 0 0.5rem; }
+
+.tabs {
+ display: flex;
+ margin-bottom: 1rem; }
+ .tabs-empty-bar {
+ display: inline-block;
+ flex-grow: 1;
+ border-bottom: solid 1px #e0e0e0; }
+
+.table {
+ --table-border-hsl: var(--base-hsl);
+ --table-text-hsl: var(--base-hsl);
+ --table-bg-hsl: var(--base-hsl);
+ font-size: .9rem;
+ border: 1px solid hsl(var(--table-border-hsl), 0.2);
+ border-radius: 3px; }
+ .table table {
+ margin: 0; }
+ .table a {
+ font-weight: inherit;
+ text-decoration: underline;
+ text-underline-position: under; }
+ .table th, .table td {
+ padding: 8px;
+ vertical-align: top;
+ color: hsl(var(--table-text-hsl), 1);
+ display: block; }
+ @media (min-width: 36em) {
+ .table th, .table td {
+ display: table-cell;
+ padding: 8px 16px; } }
+ .table th {
+ background-color: hsl(var(--table-bg-hsl), 0.1); }
+ .table tr + tr {
+ border-top: 1px solid hsl(var(--table-bg-hsl), 0.2); }
+ .table th {
+ display: none; }
+ @media (min-width: 36em) {
+ .table th {
+ display: table-cell; } }
+ .table td {
+ display: block; }
+ @media (min-width: 36em) {
+ .table td {
+ display: table-cell; } }
+
+@media (max-width: 35.98em) {
+ .table td:before {
+ content: attr(data-header);
+ display: block;
+ font-weight: 400;
+ background-color: hsl(var(--table-bg-hsl), 0.1);
+ margin: -8px -8px 4px -8px;
+ padding: 4px 8px; } }
+
+.table--zebra tr:nth-of-type(even) {
+ background-color: hsl(var(--table-bg-hsl), 0.04); }
+
+.table__lead-cell {
+ font-weight: 500;
+ min-width: 180px; }
+
+@media (min-width: 36em) {
+ .table__checks {
+ text-align: center; } }
+
+.table--true {
+ color: hsl(var(--teal-dark-hsl), 1); }
+
+.table--false {
+ color: hsl(var(--red-hsl), 1); }
+
+/* Primary styling */
+.table--primary {
+ border: none;
+ border-bottom: 1px solid #EFB793; }
+ .table--primary th {
+ background: #EFB793;
+ font-size: 20px;
+ font-weight: 700;
+ padding: 16px 14px;
+ border: none; }
+ .table--primary thead tr:first-of-type {
+ border-radius: 3px 3px 0px 0px; }
+ .table--primary thead tr:first-of-type th:first-of-type {
+ border-top-left-radius: 3px; }
+ .table--primary thead tr:first-of-type th:last-of-type {
+ border-top-right-radius: 3px; }
+ .table--primary tr {
+ border: none; }
+ .table--primary tr td + td {
+ border-left: 1px solid #EFB793; }
+ .table--primary tr:nth-of-type(odd) {
+ background: #FCF0E8; }
+ .table--primary tr:nth-of-type(even) {
+ background: #F7DBC9; }
+ .table--primary tr + tr {
+ border: none; }
+
+.table--primary-light table {
+ border: solid 1px #F7DBC9; }
+
+.table--primary-light th {
+ background: #FFEEE7; }
+
+.table--primary-light td {
+ border: solid 1px #F7DBC9; }
+
+/* Secondary styling */
+.table--secondary {
+ border: none;
+ border-bottom: 1px solid #F7E194; }
+ .table--secondary th {
+ background: #F7E194;
+ font-size: 16px;
+ font-weight: 700;
+ padding: 16px 14px;
+ border: none; }
+ .table--secondary thead tr:first-of-type {
+ border-radius: 3px 3px 0px 0px; }
+ .table--secondary thead tr:first-of-type th:first-of-type {
+ border-top-left-radius: 3px; }
+ .table--secondary thead tr:first-of-type th:last-of-type {
+ border-top-right-radius: 3px; }
+ .table--secondary tr {
+ border: none; }
+ .table--secondary tr td + td {
+ border-left: 1px solid #F7E194; }
+ .table--secondary tr:nth-of-type(odd) {
+ background: #FEF9EA; }
+ .table--secondary tr:nth-of-type(even) {
+ background: #FBEFC3; }
+ .table--secondary tr + tr {
+ border: none; }
+
+.table--small {
+ width: 100%;
+ border: none;
+ border-bottom: 1px solid #EFB793; }
+ .table--small th {
+ background: #EFB793;
+ font-size: 16px;
+ font-weight: 600;
+ padding: 16px 14px;
+ border: none; }
+ .table--small thead tr:first-of-type {
+ border-radius: 3px 3px 0px 0px; }
+ .table--small thead tr:first-of-type th:first-of-type {
+ border-top-left-radius: 3px; }
+ .table--small thead tr:first-of-type th:last-of-type {
+ border-top-right-radius: 3px; }
+ .table--small tr {
+ border: none; }
+ .table--small tr td + td {
+ border-left: 1px solid #EFB793; }
+ .table--small tr:nth-of-type(odd) {
+ background: #FCF0E8; }
+ .table--small tr:nth-of-type(even) {
+ background: #F7DBC9; }
+ .table--small tr + tr {
+ border: none; }
+
+.upload-file {
+ text-align: left;
+ background-color: hsl(var(--base-hsl), 0.02);
+ padding: 64px;
+ margin-top: 64px;
+ border: 1px solid hsl(var(--base-hsl), 0.2);
+ box-shadow: inset 0 0 8px hsl(var(--base-hsl), 0.1); }
+ .upload-file h3 {
+ font-size: 3rem;
+ margin: 0 0 64px 0;
+ text-align: center;
+ color: hsl(var(--base-hsl), 0.2); }
+ .upload-file h4 {
+ margin: 24px 0 0 0;
+ font-size: 1.2rem; }
+ .upload-file p {
+ margin: 0; }
+
+.years-chart {
+ --block-size: 42px;
+ --label-colour: #A3A3A3;
+ --separator-colour: #F0F0F0;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ max-width: 100%;
+ flex-wrap: wrap; }
+ .years-chart__block {
+ padding: 0 1px;
+ border: solid 1px var(--separator-colour);
+ border-left-width: 0;
+ border-collapse: collapse;
+ text-align: center;
+ height: var(--block-size); }
+ .years-chart__block:first {
+ border-left-width: 1px; }
+ .years-chart__block > span {
+ display: inline-block;
+ background-color: rgba(222, 110, 38, var(--opacity));
+ width: var(--block-size);
+ height: 100%;
+ font-size: 0.75rem;
+ text-align: center;
+ padding-top: 0.5rem; }
+ .years-chart__label {
+ color: --label-colour;
+ text-align: center;
+ font-size: 0.8rem;
+ margin-bottom: 6px; }
+ @media (min-width: 36em) {
+ .years-chart__item {
+ flex-grow: 1; } }
+
+.accordion-list {
+ --accordion-hsl: var(--teal-hsl);
+ --accordion-text-hsl: var(--teal-dark-hsl);
+ list-style: none; }
+ .accordion-list .accordion-list__heading {
+ padding: 0;
+ margin: 0;
+ color: hsl(var(--accordion-text-hsl), 1); }
+ .accordion-list__item {
+ padding-bottom: 24px;
+ counter-increment: items;
+ position: relative; }
+ .accordion-list__item .accordion:before {
+ content: counter(items);
+ position: absolute;
+ top: 4px;
+ right: calc(100% + 32px);
+ padding: 4px;
+ width: 48px;
+ height: 48px;
+ border-radius: 100px;
+ font-weight: 600;
+ font-size: 1.4rem;
+ text-align: center;
+ border: 2px solid hsl(var(--accordion-hsl), 1);
+ color: hsl(var(--accordion-hsl), 1);
+ background-color: hsl(var(--white-hsl), 1);
+ z-index: 1;
+ transition: all .3s ease; }
+ .accordion-list__item .accordion--expanded:before {
+ background-color: hsl(var(--accordion-hsl), 1);
+ color: hsl(var(--white-hsl), 1); }
+ .accordion-list__item .accordion:after {
+ content: '';
+ position: absolute;
+ top: 44px;
+ right: calc(100% + 54px);
+ width: 0;
+ height: 100%;
+ border: 2px solid hsl(var(--accordion-hsl), 1); }
+ .accordion-list__item:last-of-type .accordion:after {
+ border: 0; }
+
+.accordion-list--no-numbers .accordion:before {
+ content: 'add';
+ font-size: 1.8rem;
+ padding: 8px; }
+
+.accordion-list--no-numbers .accordion--expanded:before {
+ transform: rotate(45deg); }
+
+.base-card {
+ --card-bg-hsl: var(--base-hsl);
+ background: hsl(var(--white-hsl), 1);
+ box-shadow: 0px 4px 8px hsl(var(--base-hsl), 0.15);
+ position: relative;
+ text-align: center;
+ display: block; }
+ @media (max-width: 59.98em) {
+ .base-card {
+ margin-bottom: 16px; } }
+ .base-card:before {
+ content: '';
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: hsl(var(--card-bg-hsl), 1);
+ transition: all .2s ease; }
+
+.base-card__content {
+ padding: 16px; }
+ @media (min-width: 85em) {
+ .base-card__content {
+ padding: 32px; } }
+
+.base-card__header {
+ text-align: left;
+ padding-bottom: 24px;
+ padding-left: 24px; }
+
+.base-card__heading {
+ font-size: 1.5rem;
+ font-weight: 400;
+ margin: 0; }
+
+.base-card__subheading {
+ font-size: 1rem;
+ font-weight: 300;
+ margin: 0; }
+
+.base-card__title {
+ font-size: 2rem;
+ line-height: 1.3;
+ font-weight: 300;
+ margin: 0; }
+
+.base-card__text {
+ font-size: 1rem;
+ font-weight: 300; }
+
+.base-card--orange:before {
+ --card-bg-hsl: var(--orange-hsl); }
+
+.base-card--yellow:before {
+ --card-bg-hsl: var(--yellow-hsl); }
+
+.base-card--teal:before {
+ --card-bg-hsl: var(--teal-hsl); }
+
+.base-card--red:before {
+ --card-bg-hsl: var(--red-hsl); }
+
+.base-card--none:before {
+ background-color: transparent !important; }
+
+@media (min-width: 85em) {
+ .base-card--spacious {
+ padding: 24px 16px; } }
+
+.base-card--new {
+ --card-bg-hsl: var(--base-hsl);
+ background: hsl(var(--orange-hsl), 0.2);
+ border-left: 4px solid #DE6E26;
+ border-right: 4px solid #DE6E26;
+ padding-top: 32px;
+ padding-bottom: 58px;
+ /* I've opted to hide the before element and use borders for this instead.
+ I didn't want to update the other base cards as to not break anything
+ but I don't think a whole new element is needed. */ }
+ .base-card--new::before {
+ content: none; }
+ .base-card--new .base-card__title {
+ font-size: 33px;
+ margin-bottom: 32px; }
+ .base-card--new .base-card__text:last-of-type {
+ margin-bottom: 0; }
+ .base-card--new .button:hover {
+ color: #153634;
+ border-color: #A7531D; }
+
+a.base-card {
+ color: currentColor; }
+
+a.base-card:hover:before {
+ width: 12px; }
+
+.card-list {
+ list-style-type: none;
+ padding: 0 8px 0 0; }
+ .card-list__item + .card-list__item {
+ margin-top: 24px; }
+
+.card-list--linked {
+ --card-list-links-hsl: var(--base-hsl);
+ margin-left: 40px; }
+ .card-list--linked .card-list__item {
+ position: relative; }
+ .card-list--linked .card-list__item:before {
+ content: '';
+ width: 4px;
+ height: calc(100% + 32px);
+ position: absolute;
+ top: 48px;
+ left: -40px;
+ background-color: hsl(var(--card-list-links-hsl), 0.2); }
+ .card-list--linked .card-list__item:last-of-type::before {
+ height: 0; }
+ .card-list--linked .card-list__item:after {
+ content: '';
+ width: 24px;
+ height: 24px;
+ border-radius: 50%;
+ position: absolute;
+ top: 48px;
+ left: -50px;
+ background-color: hsl(var(--card-list-links-hsl), 1); }
+
+.collapsed-table__details[open] summary .summary-icon svg {
+ transform: rotateX(180deg); }
+
+.collapsed-table__details[open] summary:hover .summary-icon svg {
+ transform: translateY(-2px) rotateX(180deg); }
+
+.collapsed-table summary {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #EFB793;
+ padding: 0.8rem 1rem; }
+ .collapsed-table summary::-webkit-details-marker {
+ display: none; }
+ .collapsed-table summary:hover {
+ cursor: pointer; }
+ .collapsed-table summary:hover .summary-icon svg {
+ transform: translateY(2px); }
+
+.collapsed-table .summary-label {
+ font-size: 1rem;
+ line-height: 130%;
+ font-weight: 700; }
+
+.collapsed-table .summary-icon {
+ border: 1px solid #153634;
+ border-radius: 100%;
+ width: 25px;
+ height: 25px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transform: translateY(0px);
+ transition: transform 0.2s ease;
+ margin-left: 12px; }
+ .collapsed-table .summary-icon svg {
+ transition: transform 0.2s ease; }
+
+.dashboard-files-card {
+ border-left: 4px solid #4DACB6;
+ box-shadow: 1px 4px 4px 4px rgba(0, 0, 0, 0.06);
+ padding: 20px 24px;
+ margin-bottom: 20px; }
+ .dashboard-files-card--grant {
+ border-left-color: #DE6E26; }
+ .dashboard-files-card__head {
+ display: flex; }
+ .dashboard-files-card__right-side {
+ min-width: 40%; }
+ @media (min-width: 36em) {
+ .dashboard-files-card__right-side {
+ min-width: 25%; } }
+ .dashboard-files-card__title {
+ font-weight: 700;
+ font-size: 1.2rem;
+ margin-bottom: 16px;
+ display: block; }
+ .dashboard-files-card__description {
+ font-weight: 400;
+ font-size: 16px; }
+ .dashboard-files-card__groups {
+ display: flex;
+ flex-direction: column; }
+ @media (min-width: 36em) {
+ .dashboard-files-card__groups {
+ flex-direction: row; } }
+ .dashboard-files-card__group {
+ max-width: 100%;
+ padding: 2rem 0;
+ border-bottom: solid 1px #2B666A; }
+ @media (min-width: 36em) {
+ .dashboard-files-card__group {
+ max-width: 20%;
+ padding: 0 2rem;
+ border-bottom-width: 0;
+ border-right: solid 1px #2B666A; } }
+ .dashboard-files-card__group:last-child {
+ border-width: 0; }
+ .dashboard-files-card__value {
+ font-size: 1.2rem;
+ font-weight: 700; }
+ .dashboard-files-card__graph {
+ flex-grow: 1;
+ max-width: 100%; }
+
+.dashboard-publisher-result {
+ border-left: 4px solid #4DACB6;
+ box-shadow: 1px 4px 4px 4px rgba(0, 0, 0, 0.06);
+ padding: 20px 24px;
+ margin-bottom: 20px; }
+ .dashboard-publisher-result__head {
+ display: flex; }
+ .dashboard-publisher-result__left-side {
+ flex-grow: 1; }
+ .dashboard-publisher-result__title {
+ font-weight: 700;
+ font-size: 1.2rem;
+ margin-bottom: 16px;
+ display: block; }
+ .dashboard-publisher-result__description {
+ font-weight: 400;
+ font-size: 16px; }
+ .dashboard-publisher-result__date {
+ color: #153634;
+ margin-bottom: 16px; }
+
+.dashboard-publisher-result-wrapper .dashboard-publisher-result {
+ padding-top: 1px; }
+
+.dashboard-publisher-result-wrapper__external-buttons a:last-child {
+ margin-left: 1rem; }
+
+.dashboard-stats-card {
+ border-left: 4px solid #4DACB6;
+ box-shadow: 1px 4px 4px 4px rgba(0, 0, 0, 0.06);
+ padding: 20px 24px;
+ margin-bottom: 20px; }
+ .dashboard-stats-card--grant {
+ border-left-color: #DE6E26; }
+ .dashboard-stats-card__head {
+ display: flex; }
+ .dashboard-stats-card__right-side {
+ min-width: 40%; }
+ @media (min-width: 36em) {
+ .dashboard-stats-card__right-side {
+ min-width: 25%; } }
+ .dashboard-stats-card__title {
+ font-weight: 700;
+ font-size: 1.2rem;
+ margin-bottom: 16px;
+ display: block; }
+ .dashboard-stats-card__description {
+ font-weight: 400;
+ font-size: 16px; }
+ .dashboard-stats-card__groups {
+ display: flex;
+ flex-direction: column; }
+ @media (min-width: 36em) {
+ .dashboard-stats-card__groups {
+ flex-direction: row; } }
+ .dashboard-stats-card__group {
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ padding: 2rem 0;
+ border-bottom: solid 1px #2B666A; }
+ @media (min-width: 36em) {
+ .dashboard-stats-card__group {
+ max-width: 20%;
+ padding: 0 2rem;
+ border-bottom-width: 0;
+ border-right: solid 1px #2B666A; } }
+ .dashboard-stats-card__group:last-child {
+ border-width: 0; }
+ .dashboard-stats-card__value {
+ font-size: 1.2rem;
+ font-weight: 700; }
+
+.filter-group {
+ border-radius: 1px;
+ margin-bottom: 4px; }
+ @media (min-width: 36em) {
+ .filter-group {
+ margin-bottom: 20px; } }
+ .filter-group__accordion[open] .filter-group__label .accordion-toggle-icon .accordion-toggle-icon__vertical-line {
+ transform-origin: center;
+ transform: rotateZ(90deg);
+ transition: 0.1s; }
+ .filter-group__label {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: #F7DBC9;
+ font-size: 16px;
+ font-weight: 500;
+ padding: 4px 10px;
+ border: 1px solid #E6925C;
+ border-radius: 2px; }
+ @media (min-width: 36em) {
+ .filter-group__label {
+ padding: 18px 10px; } }
+ .filter-group__label .accordion-toggle-icon {
+ transition: 0.2s; }
+ .filter-group__label .accordion-toggle-icon__vertical-line {
+ transform-origin: center;
+ transform: rotateZ(0deg);
+ transition: 0.1s; }
+ .filter-group__label:hover {
+ cursor: pointer; }
+ .filter-group__label:hover .accordion-toggle-icon {
+ transform: scale(1.1, 1.1);
+ transition: 0.2s; }
+ .filter-group__label::-webkit-details-marker {
+ display: none; }
+ .filter-group_contents-wrapper {
+ padding: 4px 0; }
+ .filter-group_contents-wrapper > * {
+ margin-bottom: 4px; }
+ .filter-group_contents-wrapper > *:last-of-type {
+ margin-bottom: 0; }
+
+.filter-panel {
+ border-top: 1px solid hsl(var(--base-hsl), 0.2);
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.2);
+ padding: 24px 0; }
+ .filter-panel h4 {
+ margin: 0; }
+ .filter-panel__item {
+ padding: 8px 0; }
+
+.range-filter input[type="checkbox"] {
+ display: none; }
+
+.range-filter label {
+ clear: right; }
+
+.range-filter label:after {
+ content: attr(data-value); }
+
+.filter-section {
+ border-top: 1px solid hsl(var(--base-hsl), 0.2);
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.2); }
+ @media (max-width: 35.98em) {
+ .filter-section {
+ overflow-x: scroll;
+ scroll-snap-align: center;
+ scroll-snap-type: x proximity; } }
+ .filter-section__panel {
+ display: flex; }
+ .filter-section__search {
+ flex: 1;
+ display: flex;
+ align-items: center; }
+ .filter-section__buttons {
+ flex: 3;
+ text-align: right; }
+
+.search-field {
+ padding: 8px 16px;
+ width: 100%;
+ border: 1px solid hsl(var(--base-hsl), 0.2);
+ color: hsl(var(--base-hsl), 1);
+ background-color: transparent; }
+ .search-field::-webkit-input-placeholder {
+ color: hsl(var(--base-hsl), 0.7); }
+ .search-field:-moz-placeholder {
+ color: hsl(var(--base-hsl), 0.7); }
+ .search-field::-moz-placeholder {
+ color: hsl(var(--base-hsl), 0.7); }
+ .search-field:-ms-input-placeholder {
+ color: hsl(var(--base-hsl), 0.7); }
+ .search-field:focus {
+ border: 1px solid hsl(var(--orange-hsl), 1); }
+
+.filters {
+ padding-top: 24px;
+ padding-bottom: 24px; }
+ @media (max-width: 35.98em) {
+ .filters {
+ width: max-content;
+ padding-right: 20px; }
+ .filters .filter + .filter {
+ margin-left: 8px; } }
+ @media (min-width: 36em) {
+ .filters .filter + .filter {
+ margin-left: 24px; } }
+
+.footer__row {
+ display: flex; }
+ @media (max-width: 35.98em) {
+ .footer__row {
+ flex-direction: column; } }
+
+.footer__column-0 {
+ flex: 0; }
+
+.footer__column-1 {
+ flex: 1; }
+ @media (max-width: 35.98em) {
+ .footer__column-1 {
+ min-width: 100px; } }
+
+.footer__column-2 {
+ flex: 2; }
+ @media (max-width: 35.98em) {
+ .footer__column-2 {
+ min-width: 200px; } }
+
+.footer__column-3 {
+ flex: 3; }
+
+.footer {
+ padding-top: 24px;
+ background-color: hsl(var(--base-hsl), 1); }
+ .footer ul {
+ list-style-type: none;
+ padding: 0; }
+ .footer ul a {
+ text-decoration: none; }
+ .footer a {
+ color: hsl(var(--white-hsl), 1);
+ text-decoration: underline;
+ text-underline-offset: under; }
+ .footer a:hover {
+ color: hsl(var(--white-hsl), 1);
+ text-decoration: underline; }
+ @media print {
+ .footer a {
+ color: hsl(var(--base-hsl), 1); } }
+ @media (min-width: 85em) {
+ .footer {
+ padding-top: 48px; } }
+ .footer__row:first-of-type {
+ padding-bottom: 36px;
+ border-bottom: 1px solid hsl(var(--white-hsl), 0.2); }
+ @media print {
+ .footer__row:first-of-type {
+ padding-bottom: inherit; } }
+ .footer__row {
+ padding: 16px 0; }
+ @media print {
+ .footer__row {
+ display: block;
+ height: auto;
+ overflow: auto;
+ width: auto;
+ padding: 0px;
+ margin: 0px;
+ max-width: 100%; } }
+ .footer__section {
+ font-size: 0.75rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 0.8);
+ color: hsl(var(--white-hsl), 0.7);
+ padding: 24px 0 16px; }
+ @media (min-width: 36em) {
+ .footer__section + .footer__section {
+ margin-left: 48px; } }
+ .footer__section li {
+ margin-top: 8px; }
+ .footer__heading {
+ font-size: 1rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1);
+ font-weight: bold;
+ letter-spacing: 1px;
+ color: hsl(var(--yellow-hsl), 1);
+ margin-bottom: 16px; }
+ @media (min-width: 36em) {
+ .footer__heading {
+ font-size: 1.1rem; } }
+ @media (min-width: 85em) {
+ .footer__heading {
+ font-size: 1.3rem; } }
+ .footer__branding, .footer__social {
+ display: flex;
+ align-items: center; }
+ @media (max-width: 35.98em) {
+ .footer__branding {
+ flex-direction: column;
+ text-align: center; } }
+ .footer__logo {
+ opacity: .5; }
+ @media (max-width: 35.98em) {
+ .footer__logo {
+ margin-bottom: 16px; } }
+ @media print {
+ .footer__logo img {
+ -webkit-filter: invert(100%);
+ filter: invert(100%);
+ margin-bottom: 0.5cm;
+ opacity: 1; } }
+ .footer__tagline {
+ padding-bottom: 4px;
+ color: hsl(var(--white-hsl), 1);
+ font-weight: 300;
+ letter-spacing: 1px;
+ font-size: 1rem; }
+ @media (max-width: 35.98em) {
+ .footer__tagline {
+ margin-bottom: 16px; } }
+ @media (min-width: 36em) {
+ .footer__tagline {
+ margin-left: 48px; } }
+ @media (min-width: 85em) {
+ .footer__tagline {
+ font-size: 1.3rem; } }
+ .footer__social {
+ justify-content: flex-end; }
+ @media (max-width: 35.98em) {
+ .footer__social {
+ justify-content: center; } }
+ .footer__social * + * {
+ margin-left: 24px; }
+ .footer__social .github-icon {
+ line-height: 3px; }
+ .footer__social .twitter-icon {
+ line-height: 8px; }
+ .footer__small-print {
+ font-size: 0.75rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 0.8);
+ border-top: 1px solid hsl(var(--white-hsl), 0.2);
+ padding-top: 16px;
+ padding-bottom: 12px;
+ color: hsl(var(--white-hsl), 0.7); }
+ @media print {
+ .footer__small-print {
+ color: hsl(var(--base-hsl), 1); } }
+ .footer .edit-github {
+ float: right; }
+ .footer__policy-links a {
+ display: inline-block; }
+ @media (min-width: 36em) {
+ .footer__policy-links {
+ text-align: right; } }
+ @media print {
+ .footer__policy-links {
+ text-align: left; } }
+ .footer--compact {
+ padding-top: 12px; }
+ .footer--compact .footer__small-print {
+ border-top: 0; }
+ @media print {
+ .footer {
+ border-top: 4px solid hsl(var(--base-hsl), 1);
+ background-color: inherit;
+ page-break-inside: avoid; } }
+
+.footer p a:hover {
+ color: hsl(var(--white-hsl), 1); }
+
+.grant-info-highlight {
+ box-shadow: 1px 4px 4px 4px rgba(0, 0, 0, 0.06);
+ border-top: 4px solid #EFC329;
+ border-bottom: 4px solid #EFC329;
+ padding: 22px 24px 34px; }
+ @media (min-width: 36em) {
+ .grant-info-highlight {
+ padding: 22px 44px 34px; } }
+ .grant-info-highlight a {
+ font-size: 24px;
+ font-weight: 400;
+ text-decoration: underline; }
+ .grant-info-highlight__funder {
+ text-align: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 42px;
+ background: white; }
+ @media (min-width: 36em) {
+ .grant-info-highlight__funder {
+ margin-bottom: 0; } }
+ .grant-info-highlight__data {
+ display: flex;
+ justify-content: center;
+ margin-bottom: 42px; }
+ @media (min-width: 36em) {
+ .grant-info-highlight__data {
+ margin-bottom: 0;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center; } }
+ .grant-info-highlight__data--amount {
+ color: #2e666b;
+ font-weight: 400;
+ font-size: 27px;
+ width: 33.33%;
+ text-align: right; }
+ @media (min-width: 36em) {
+ .grant-info-highlight__data--amount {
+ text-align: left;
+ width: auto; } }
+ .grant-info-highlight__data--infographic {
+ width: 33.33%;
+ transform: rotateZ(90deg);
+ z-index: -1;
+ display: flex;
+ align-items: center;
+ justify-content: center; }
+ @media (min-width: 36em) {
+ .grant-info-highlight__data--infographic {
+ transform: none;
+ width: 100%; } }
+ .grant-info-highlight__data--infographic .infographic-arrow {
+ width: 100px;
+ height: 60px;
+ display: block; }
+ @media (min-width: 36em) {
+ .grant-info-highlight__data--infographic .infographic-arrow {
+ width: unset;
+ height: unset; } }
+ .grant-info-highlight__data--date {
+ width: 33.33%;
+ color: #2e666b;
+ font-weight: 500;
+ font-size: 20px; }
+ @media (min-width: 36em) {
+ .grant-info-highlight__data--date {
+ width: auto; } }
+ .grant-info-highlight__recipient {
+ text-align: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center; }
+ .grant-info-highlight__label {
+ font-weight: 700;
+ font-size: 20px;
+ margin-bottom: 8px; }
+
+.grant-search-result {
+ display: flex;
+ flex-direction: column;
+ border-left: 4px solid #DE6E26;
+ box-shadow: 1px 4px 4px 4px rgba(0, 0, 0, 0.06);
+ padding: 20px 24px;
+ margin-bottom: 20px; }
+ .grant-search-result__recipients {
+ border-left: 4px solid #fac710 !important; }
+ .grant-search-result__funders {
+ border-left: 4px solid #4dacb6 !important; }
+ .grant-search-result a {
+ text-decoration: underline; }
+ .grant-search-result a:hover {
+ text-decoration: underline; }
+ @media (min-width: 36em) {
+ .grant-search-result {
+ flex-direction: row; } }
+ .grant-search-result__left-side {
+ position: relative;
+ padding-bottom: 20px;
+ margin-bottom: 24px;
+ width: 100%; }
+ @media (min-width: 36em) {
+ .grant-search-result__left-side {
+ padding-bottom: 0;
+ margin-bottom: 0;
+ width: 70%;
+ padding-right: 24px;
+ margin-right: 24px; } }
+ .grant-search-result__left-side::after {
+ content: '';
+ width: 60%;
+ height: 1px;
+ background: #153634;
+ position: absolute;
+ left: 0;
+ bottom: 0; }
+ @media (min-width: 36em) {
+ .grant-search-result__left-side::after {
+ width: 1px;
+ height: 100%;
+ left: auto;
+ right: 0; } }
+ .grant-search-result__right-side {
+ padding-top: 12px;
+ padding-bottom: 6px;
+ width: 100%; }
+ @media (min-width: 36em) {
+ .grant-search-result__right-side {
+ width: 30%; } }
+ .grant-search-result__title {
+ font-weight: 400;
+ font-size: 24px;
+ margin-bottom: 16px;
+ display: block; }
+ .grant-search-result__description {
+ font-weight: 400;
+ font-size: 16px; }
+ .grant-search-result__date {
+ margin-bottom: 16px;
+ font-weight: 700; }
+ .grant-search-result__data-item {
+ margin-bottom: 6px; }
+ .grant-search-result__data-item a {
+ color: #153634; }
+ .grant-search-result__data-item a:hover {
+ color: #DE6E26; }
+ .grant-search-result__data-item--label {
+ font-weight: 700; }
+ .grant-search-result__box_container {
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row; }
+ .grant-search-result__box {
+ padding-top: 5px;
+ padding-bottom: 20px;
+ width: 50%;
+ font-size: 20px;
+ text-align: center; }
+ @media (min-width: 85em) {
+ .grant-search-result__box {
+ width: 20%; } }
+
+@media (max-width: 59.98em) {
+ .grid {
+ margin-left: 8px;
+ margin-right: 8px; } }
+
+@media (min-width: 85em) {
+ .grid {
+ max-width: 960px;
+ margin-left: auto;
+ margin-right: auto; } }
+
+@media (min-width: 36em) {
+ .grid {
+ display: grid;
+ grid-gap: 16px;
+ grid-auto-rows: auto;
+ grid-auto-flow: row;
+ grid-gap: 32px; } }
+
+@media (min-width: 36em) {
+ .grid--two-columns {
+ grid-template-columns: repeat(2, 1fr); } }
+
+@media (min-width: 36em) {
+ .grid--three-columns {
+ grid-template-columns: repeat(3, 1fr); } }
+
+@media (min-width: 36em) {
+ .grid--four-columns {
+ grid-template-columns: repeat(4, 1fr); } }
+
+.grid__2 {
+ grid-column: auto / span 2; }
+
+.grid__3 {
+ grid-column: auto / span 3; }
+
+.grid__all {
+ grid-column: 1 / -1; }
+
+.slick-dots {
+ position: absolute;
+ display: block;
+ width: 100%;
+ padding: 0;
+ list-style: none;
+ text-align: center; }
+
+.slick-dots li {
+ cursor: pointer;
+ display: inline-block;
+ border: 0;
+ width: 20px;
+ height: 4px; }
+
+.dot {
+ display: block;
+ width: 10px;
+ height: 10px;
+ text-decoration: none;
+ background-color: var(--color-orange);
+ border-radius: 50%;
+ cursor: pointer; }
+
+.slick-active .dot {
+ background-color: var(--color-base); }
+
+.hero-section {
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.2); }
+
+.hero {
+ padding-top: 36px;
+ padding-bottom: 40px; }
+ @media (min-width: 36em) {
+ .hero {
+ padding-top: 88px;
+ padding-bottom: 88px; } }
+ .hero__logo img {
+ margin: 0 auto;
+ max-width: 320px;
+ max-height: 150px; }
+ @media print {
+ .hero__logo {
+ float: right;
+ width: 320px; } }
+ .hero__lead {
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: hsl(var(--base-hsl), 0.7);
+ border-left: 4px solid hsl(var(--base-hsl), 1);
+ padding-left: 32px; }
+ @media (min-width: 85em) {
+ .hero__lead {
+ font-size: 1.7rem;
+ line-height: 1.6; } }
+ @media (min-width: 36em) {
+ .hero__lead {
+ margin: 0; } }
+ .hero__title {
+ font-size: 1.5rem;
+ font-weight: bold; }
+ .hero__blurb {
+ font-size: 1.25rem; }
+ .hero__title + .hero__blurb {
+ margin-top: 16px; }
+ .hero__center {
+ width: 50%;
+ margin: auto; }
+
+.hero {
+ display: flex;
+ flex-direction: column;
+ align-items: center; }
+ @media (min-width: 36em) {
+ .hero {
+ flex-direction: row; }
+ .hero__logo, .hero__image {
+ flex: 3; }
+ .hero__lead {
+ margin-left: 40px;
+ flex: 4; } }
+ @media print {
+ .hero {
+ display: block;
+ height: auto;
+ overflow: auto;
+ width: auto;
+ padding: 0px;
+ margin: 0px;
+ max-width: 100%; }
+ .hero__lead {
+ padding-left: 0;
+ border: 0;
+ margin-left: 0; } }
+
+.hero--orange .hero__lead {
+ border-left-color: hsl(var(--orange-hsl), 1); }
+
+.hero--orange .hero__title {
+ color: hsl(var(--orange-dark-hsl), 1); }
+
+.hero--teal .hero__lead {
+ border-left-color: hsl(var(--teal-hsl), 1); }
+
+.hero--teal .hero__title {
+ color: hsl(var(--teal-dark-hsl), 1); }
+
+.hero--yellow .hero__lead {
+ border-left-color: hsl(var(--yellow-hsl), 1); }
+
+.hero--yellow .hero__title {
+ color: hsl(var(--yellow-dark-hsl), 1); }
+
+.hero--red .hero__lead {
+ border-left-color: hsl(var(--red-hsl), 1); }
+
+.hero--red .hero__title {
+ color: hsl(var(--red-hsl), 1); }
+
+.homepage-card {
+ text-align: center;
+ margin-bottom: 32px; }
+ .homepage-card__title {
+ font-weight: normal; }
+ .homepage-card__title-numbers {
+ color: #DE6E26;
+ display: block;
+ font-size: 56px;
+ font-weight: 500; }
+ .homepage-card__description {
+ font-size: 19px;
+ font-weight: 400;
+ margin-bottom: 40px; }
+
+.insights-card {
+ display: flex; }
+ .insights-card__content {
+ flex: 1; }
+
+.insights-card {
+ background: hsl(var(--white-hsl), 1);
+ box-shadow: 0px 4px 8px hsl(var(--base-hsl), 0.1);
+ position: relative;
+ padding: 16px 24px 16px 24px; }
+ @media (min-width: 85em) {
+ .insights-card {
+ padding: 32px 40px 16px 40px; } }
+ .insights-card:before {
+ content: '';
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: hsl(var(--teal-hsl), 1); }
+ .insights-card__pub-logo {
+ width: 132px; }
+ .insights-card__pub-name {
+ font-size: 1.5rem;
+ color: hsl(var(--base-hsl), 1);
+ font-weight: 300;
+ padding: 0 16px; }
+ .insights-card__content {
+ margin-left: 32px; }
+ .insights-card__list {
+ list-style: none;
+ padding-left: 0; }
+ .insights-card__item > a {
+ color: hsl(var(--base-hsl), 1);
+ display: block;
+ padding: 8px 16px; }
+ .insights-card__item > a:hover {
+ background-color: hsl(var(--base-hsl), 0.05); }
+
+.grant {
+ width: 100%;
+ cursor: pointer; }
+ .grant, .grant td {
+ border: 0; }
+ .grant td {
+ padding: 0;
+ vertical-align: bottom;
+ cursor: pointer; }
+ .grant__line {
+ font-style: normal;
+ font-weight: 300; }
+ .grant--title-line td {
+ padding-top: 4px;
+ font-weight: 400;
+ padding-bottom: 4px; }
+ .grant--amounts-line td {
+ line-height: 1.3;
+ border-bottom: 0; }
+ .grant--data-line {
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.1); }
+ .grant--data-line td {
+ padding: 0 0 8px; }
+ .grant--data-line:last-child {
+ border-bottom: 0; }
+ .grant__records {
+ width: 35%; }
+ .grant__spacer {
+ padding-left: 24px; }
+ .grant__pub-date {
+ width: 40%; }
+ .grant__title {
+ width: 100%; }
+ .grant__amount {
+ width: 100%;
+ text-align: right; }
+ .grant__amount {
+ margin-bottom: 8; }
+ .grant__grant-n, .grant__amount-n {
+ font-size: 1.6rem; }
+ .grant__grant-n {
+ font-weight: 300; }
+ .grant__amount-n {
+ font-weight: 400; }
+
+.media-card {
+ --media-card-text-hsl: var(--base-hsl);
+ --media-card-color-hsl: ;
+ background-color: hsl(var(--white-hsl), 1);
+ box-shadow: 0px 4px 8px hsl(var(--base-hsl), 0.15);
+ display: flex;
+ position: relative; }
+ .media-card:before {
+ content: '';
+ background-color: hsl(var(--media-card-color-hsl, transparent), 1);
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0; }
+ .media-card__header {
+ display: flex;
+ padding-bottom: 16px;
+ flex-direction: column; }
+ @media (min-width: 36em) {
+ .media-card__header {
+ flex-direction: row;
+ align-items: baseline; } }
+ .media-card__heading, .media-card__subtitle, .media-card__links {
+ line-height: 1;
+ margin: 0; }
+ @media (max-width: 59.98em) {
+ .media-card__heading, .media-card__subtitle, .media-card__links {
+ margin-bottom: 8px; } }
+ .media-card__heading {
+ padding-right: 16px;
+ font-size: 1.5rem;
+ font-weight: 400;
+ line-height: 1.4; }
+ .media-card__subtitle {
+ flex: 1;
+ color: hsl(var(--media-card-text-hsl), 1);
+ font-weight: 400; }
+ .media-card__links {
+ margin-bottom: -4px; }
+ .media-card__link,
+ .media-card__link > svg {
+ max-height: 24px;
+ max-width: 24px;
+ fill: hsl(var(--base-hsl), 0.4); }
+ .media-card__link:hover,
+ .media-card__link > svg:hover {
+ fill: hsl(var(--orange-dark-hsl), 1); }
+ .media-card__link + .media-card__link {
+ margin-left: 12px; }
+ .media-card__content {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ flex: 1;
+ padding: 48px; }
+ @media (min-width: 85em) {
+ .media-card__content {
+ padding: 32px 48px 32px 48px; } }
+ @media print {
+ .media-card__content {
+ padding: 0;
+ display: block; } }
+ .media-card__content_no_image {
+ justify-content: center;
+ padding: 20px;
+ width: 100%; }
+ .media-card__image-wrapper {
+ width: 30%;
+ max-width: 320px;
+ min-height: 320px; }
+ .media-card div.media-card__image {
+ height: 0;
+ width: 100%;
+ padding-bottom: 100%;
+ background-position: center;
+ background-size: cover; }
+ .media-card img.media-card__image {
+ height: 100%;
+ width: 100%;
+ object-fit: cover; }
+ .media-card__byline {
+ font-size: .8rem;
+ font-style: italic;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1); }
+ .media-card__byline > a {
+ color: hsl(var(--base-hsl), 1);
+ text-decoration: underline; }
+ .media-card__category-tags {
+ margin-bottom: .5rem; }
+ .media-card__category-tag {
+ padding: .2rem .5rem;
+ background-color: hsl(var(--media-card-color-hsl), 0.1);
+ color: hsl(var(--media-card-text-hsl), 1);
+ border-radius: 2px; }
+ .media-card__category-tag + .media-card__category-tag {
+ margin-left: .3rem; }
+ .media-card__box_container {
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row; }
+ .media-card__box {
+ padding-top: 5px;
+ padding-bottom: 20px;
+ padding-left: 15px;
+ padding-right: 15px;
+ width: 33%;
+ font-size: 15px;
+ text-align: center; }
+ @media (min-width: 85em) {
+ .media-card__box {
+ width: 20%; } }
+
+.media-card--teal {
+ --media-card-text-hsl: var(--teal-dark-hsl);
+ --media-card-color-hsl: var(--teal-hsl); }
+
+.media-card--orange {
+ --media-card-text-hsl: var(--orange-dark-hsl);
+ --media-card-color-hsl: var(--orange-hsl); }
+
+.media-card--yellow {
+ --media-card-text-hsl: var(--yellow-dark-hsl);
+ --media-card-color-hsl: var(--yellow-hsl); }
+
+.media-card--red {
+ --media-card-text-hsl: var(--red-hsl);
+ --media-card-color-hsl: var(--red-hsl); }
+
+.media-card--base {
+ --media-card-text-hsl: var(--base-hsl);
+ --media-card-color-hsl: var(--base-hsl); }
+
+.media-card--self-contained {
+ margin-right: 8px; }
+
+.media-card--minimal .media-card__content {
+ padding: 0; }
+ @media (min-width: 85em) {
+ .media-card--minimal .media-card__content {
+ padding: 0; } }
+
+.nav-bar {
+ display: flex;
+ flex-direction: column;
+ padding: 8px 24px 14px; }
+ .nav-bar--minimal {
+ padding: 14px 24px;
+ margin-bottom: -1rem; }
+ @media (min-width: 60em) {
+ .nav-bar {
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center; } }
+ .nav-bar__home-button {
+ display: block;
+ margin: 2px;
+ margin-bottom: 22px; }
+ .nav-bar__home-button img {
+ width: 190px; }
+ @media (min-width: 60em) {
+ .nav-bar__home-button {
+ margin-bottom: 0; } }
+ @media print {
+ .nav-bar__home-button {
+ float: right;
+ min-width: initial; } }
+ .nav-bar__product-name {
+ display: inline-block;
+ vertical-align: top;
+ font-weight: 400;
+ color: #153634;
+ font-size: 30px;
+ margin-top: 24px; }
+ .nav-bar__title {
+ font-weight: 400;
+ margin-top: 12px;
+ margin-bottom: 12px; }
+ @media (min-width: 60em) {
+ .nav-bar__title {
+ margin-left: 2rem;
+ margin-right: auto; } }
+ .nav-bar__title a {
+ color: inherit; }
+ @media print {
+ .nav-bar__title {
+ margin-left: 0px;
+ margin-right: 0px; } }
+ .nav-bar__nav-menu ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ margin-bottom: 20px; }
+ @media (min-width: 60em) {
+ .nav-bar__nav-menu ul {
+ flex-direction: row;
+ align-items: center;
+ margin-bottom: 0; } }
+ .nav-bar__nav-menu ul li {
+ margin-right: 10px; }
+ .nav-bar__nav-menu ul li:last-of-type {
+ margin-right: 0; }
+ .nav-bar__nav-menu .nav-menu__button {
+ display: block;
+ padding: 8px 0px;
+ font-weight: 400;
+ font-size: 14px; }
+ .nav-bar__nav-menu .nav-menu__button:hover {
+ text-decoration: underline dashed;
+ text-underline-offset: 2px; }
+ @media (min-width: 60em) {
+ .nav-bar__nav-menu .nav-menu__button {
+ padding: 16px 6px; } }
+ @media print {
+ .nav-bar__nav-menu {
+ display: none; } }
+ @media print {
+ .nav-bar {
+ display: block;
+ height: auto;
+ overflow: auto;
+ width: auto;
+ padding: 0px;
+ margin: 0px;
+ max-width: 100%; } }
+
+.org-header-card {
+ --card-bg-hsl: var(--base-hsl);
+ background: hsl(var(--white-hsl), 1);
+ box-shadow: 0px 0px 8px hsl(var(--base-hsl), 0.15);
+ position: relative;
+ text-align: center;
+ display: block;
+ padding-bottom: 10px; }
+ @media (max-width: 59.98em) {
+ .org-header-card {
+ margin-bottom: 16px; } }
+
+.org-header-card__content {
+ padding: 5px; }
+
+.org-header-card__header {
+ margin-bottom: 5px; }
+
+.org-header-card__heading {
+ font-size: 1.5rem;
+ font-weight: 400;
+ margin: 0; }
+
+.org-header-card__subheading {
+ font-size: 1rem;
+ font-weight: 200;
+ margin: 0; }
+
+.org-header-card__data_title {
+ font-size: 0.9rem;
+ font-weight: 400;
+ margin: 0; }
+
+.org-header-card__data_text {
+ font-size: 0.8rem;
+ margin: 0; }
+
+.org-header-card__title {
+ font-size: 2rem;
+ line-height: 1.3;
+ font-weight: 100;
+ margin: 0; }
+
+.org-header-card__text {
+ font-size: 1rem;
+ font-weight: 100; }
+
+.org-header-card--orange:before {
+ --card-bg-hsl: var(--orange-hsl); }
+
+.org-header-card--yellow:before {
+ --card-bg-hsl: var(--yellow-hsl); }
+
+.org-header-card--teal:before {
+ --card-bg-hsl: var(--teal-hsl); }
+
+.org-header-card--red:before {
+ --card-bg-hsl: var(--red-hsl); }
+
+.org-header-card--none:before {
+ background-color: transparent !important; }
+
+@media (min-width: 85em) {
+ .org-header-card--spacious {
+ padding: 24px 16px; } }
+
+.prose .prose-card {
+ --prose-card-border-hsl: var(--base-hsl);
+ --prose-card-text-hsl: var(--base-hsl);
+ background: hsl(var(--white-hsl), 1);
+ box-shadow: 0px 4px 8px hsl(var(--base-hsl), 0.15);
+ position: relative;
+ text-align: center; }
+ .prose .prose-card:before {
+ content: '';
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: hsl(var(--prose-card-border-hsl, transparent), 1); }
+
+.prose .prose-card__content {
+ padding: 16px 24px 16px 24px; }
+ @media (min-width: 85em) {
+ .prose .prose-card__content {
+ padding: 48px 64px 48px 64px; } }
+
+.prose .prose-card__image {
+ padding-bottom: 32px; }
+
+.prose .prose-card__title {
+ font-size: 1.2rem;
+ font-weight: 400;
+ margin: 0;
+ color: hsl(var(--prose-card-text-hsl), 1); }
+
+.prose .prose-card__text {
+ font-size: 1rem;
+ font-weight: 100; }
+
+.prose .prose-card--orange {
+ --prose-card-border-hsl: var(--orange-hsl);
+ --prose-card-text-hsl: var(--orange-dark-hsl); }
+
+.prose .prose-card--yellow {
+ --prose-card-border-hsl: var(--yellow-hsl);
+ --prose-card-text-hsl: var(--yellow-dark-hsl); }
+
+.prose .prose-card--teal {
+ --prose-card-border-hsl: var(--teal-hsl);
+ --prose-card-text-hsl: var(--teal-dark-hsl); }
+
+.prose .prose-card--red {
+ --prose-card-border-hsl: var(--red-hsl);
+ --prose-card-text-hsl: var(--red-hsl); }
+
+.prose__section > * + *,
+.prose__section .section > * + * {
+ margin-top: 1rem; }
+
+.prose__section .grid > * + *,
+.prose__section .section .grid > * + * {
+ margin-top: 0; }
+
+.prose__section .media-card,
+.prose__section .section .media-card {
+ margin-top: 2.2rem;
+ margin-bottom: 2.2rem; }
+ .prose__section .media-card__content,
+ .prose__section .section .media-card__content {
+ padding-top: 1.8rem;
+ padding-bottom: 1.8rem; }
+ .prose__section .media-card h3,
+ .prose__section .section .media-card h3 {
+ margin: 0; }
+
+.prose,
+.prose table,
+.p {
+ font-size: 1.1rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1);
+ margin-bottom: 0; }
+ @media (min-width: 85em) {
+ .prose,
+ .prose table,
+ .p {
+ font-size: 1.2rem; } }
+
+.prose a {
+ font-weight: inherit;
+ color: hsl(var(--teal-dark-hsl), 1);
+ text-decoration: underline;
+ text-underline-position: under; }
+ .prose a:hover {
+ background-color: hsl(var(--teal-hsl), 0.1); }
+ .prose a.button {
+ text-decoration: none;
+ color: var(--text-color); }
+ @media print {
+ .prose a {
+ font-weight: bolder;
+ text-decoration: none; }
+ .prose a[href^=http]:after {
+ content: " (" attr(href) ")"; } }
+
+.prose__author {
+ font-style: italic;
+ padding-bottom: 32px; }
+ .prose__author a {
+ color: hsl(var(--teal-dark-hsl), 1); }
+
+.prose h1,
+.h1 {
+ font-size: 2rem;
+ font-weight: 300;
+ color: hsl(var(--base-hsl), 1);
+ line-height: 1.3; }
+ @media (min-width: 36em) {
+ .prose h1,
+ .h1 {
+ font-size: 1.7rem; } }
+ @media (min-width: 85em) {
+ .prose h1,
+ .h1 {
+ font-size: 3rem; } }
+
+.prose .intro,
+.intro,
+.prose__intro p {
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: hsl(var(--base-hsl), 0.7); }
+ @media (min-width: 85em) {
+ .prose .intro,
+ .intro,
+ .prose__intro p {
+ font-size: 1.7rem;
+ line-height: 1.6; } }
+
+.prose h2,
+.h2 {
+ font-size: 1.3rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1); }
+ @media (min-width: 36em) {
+ .prose h2,
+ .h2 {
+ font-size: 1.5rem; } }
+ @media (min-width: 85em) {
+ .prose h2,
+ .h2 {
+ font-size: 2.2rem; } }
+
+.prose h3,
+.h3 {
+ font-size: 1.1rem;
+ font-weight: 400;
+ color: hsl(var(--base-hsl), 1);
+ line-height: 1.3; }
+ @media (min-width: 36em) {
+ .prose h3,
+ .h3 {
+ font-size: 1.2rem; } }
+ @media (min-width: 85em) {
+ .prose h3,
+ .h3 {
+ font-size: 1.7rem; } }
+
+.prose h4,
+.h4 {
+ font-size: 1rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1); }
+ @media (min-width: 36em) {
+ .prose h4,
+ .h4 {
+ font-size: 1.1rem; } }
+ @media (min-width: 85em) {
+ .prose h4,
+ .h4 {
+ font-size: 1.3rem; } }
+
+.prose h5,
+.h5 {
+ font-size: 1rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1); }
+ @media (min-width: 36em) {
+ .prose h5,
+ .h5 {
+ font-size: 1.1rem; } }
+ @media (min-width: 85em) {
+ .prose h5,
+ .h5 {
+ font-size: 1.1rem; } }
+
+.prose h6,
+.h6 {
+ font-size: 1rem;
+ font-weight: 300;
+ line-height: 1.3;
+ color: hsl(var(--base-hsl), 1);
+ text-decoration: underline; }
+ @media (min-width: 36em) {
+ .prose h6,
+ .h6 {
+ font-size: 1rem; } }
+ @media (min-width: 85em) {
+ .prose h6,
+ .h6 {
+ font-size: 1rem; } }
+
+.prose {
+ max-width: 800px;
+ margin: 0 auto; }
+ .prose ul, .prose ol {
+ padding-bottom: 1.4rem;
+ padding-top: 1.4rem;
+ padding-left: 0; }
+ .prose ul li + li, .prose ol li + li {
+ margin-top: 1rem; }
+ .prose ol > li {
+ margin-left: 24px; }
+ .prose ol > li::marker {
+ color: hsl(var(--teal-dark-hsl), 1); }
+ .prose ul > li {
+ margin-left: 24px; }
+ .prose ul > li::marker {
+ color: hsl(var(--teal-hsl), 1);
+ font-size: 1.3rem; }
+ .prose--left {
+ margin: 0 2rem; }
+ .prose--left ol {
+ margin-left: 42px; }
+ .prose h1 {
+ margin-top: 3rem;
+ margin-bottom: 2rem; }
+ .prose h2, .prose h3, .prose h4, .prose h5, .prose h6, .prose .intro {
+ margin-top: 3rem;
+ margin-bottom: 1.4rem; }
+ .prose__intro,
+ .prose > p:first-of-type {
+ margin-bottom: 2rem; }
+ .prose__section + .prose__section {
+ padding-top: 1.4rem; }
+ .prose .box {
+ margin-bottom: 1.4rem;
+ margin-top: 1.4rem; }
+ @media print {
+ .prose {
+ max-width: 100%;
+ padding: 0px;
+ margin: 0px; } }
+
+.prose blockquote,
+.prose blockquote p {
+ line-height: 1.6;
+ color: hsl(var(--orange-dark-hsl), 1);
+ position: relative;
+ z-index: 1; }
+
+.prose blockquote {
+ padding-left: 4rem; }
+ .prose blockquote:before {
+ content: "format_quote";
+ transform: scaleX(-0.9);
+ font-size: 10rem;
+ position: absolute;
+ left: -65px;
+ top: -50px;
+ color: hsl(var(--orange-hsl), 0.15);
+ z-index: -1; }
+ @media print {
+ .prose blockquote {
+ margin-left: 5mm;
+ padding-left: 5mm;
+ font-style: italic;
+ border-left: 3px solid hsl(var(--orange-hsl), 0.2); }
+ .prose blockquote:before {
+ content: ""; } }
+
+.prose blockquote p + p {
+ padding-top: .8rem; }
+
+.prose__h1-long {
+ margin-bottom: 1.5rem;
+ margin-top: 0;
+ font-size: 2.2rem;
+ line-height: 1.5; }
+
+.prose--wp {
+ /* = WordPress Core -------------------------------------------------------------- */
+ /* Text meant only for screen readers. */ }
+ .prose--wp .alignnone {
+ margin: 5px 20px 20px 0; }
+ .prose--wp .aligncenter,
+ .prose--wp div.aligncenter {
+ display: block;
+ margin: 5px auto 5px auto; }
+ .prose--wp .alignright {
+ float: right;
+ margin: 5px 0 20px 20px; }
+ .prose--wp .alignleft {
+ float: left;
+ margin: 5px 20px 20px 0; }
+ .prose--wp a img.alignright {
+ float: right;
+ margin: 5px 0 20px 20px; }
+ .prose--wp a img.alignnone {
+ margin: 5px 20px 20px 0; }
+ .prose--wp a img.alignleft {
+ float: left;
+ margin: 5px 20px 20px 0; }
+ .prose--wp a img.aligncenter {
+ display: block;
+ margin-left: auto;
+ margin-right: auto; }
+ .prose--wp .wp-caption {
+ background: #fff;
+ border: 1px solid #f0f0f0;
+ max-width: 96%;
+ /* Image does not overflow the content area */
+ padding: 5px 3px 10px;
+ text-align: center; }
+ .prose--wp .wp-caption.alignnone {
+ margin: 5px 20px 20px 0; }
+ .prose--wp .wp-caption.alignleft {
+ margin: 5px 20px 20px 0; }
+ .prose--wp .wp-caption.alignright {
+ margin: 5px 0 20px 20px; }
+ .prose--wp .wp-caption img {
+ border: 0 none;
+ height: auto;
+ margin: 0;
+ max-width: 98.5%;
+ padding: 0;
+ width: auto; }
+ .prose--wp .wp-caption p.wp-caption-text {
+ font-size: 11px;
+ line-height: 17px;
+ margin: 0;
+ padding: 0 4px 5px; }
+ .prose--wp .screen-reader-text {
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ clip-path: inset(50%);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute !important;
+ width: 1px;
+ word-wrap: normal !important;
+ /* Many screen reader and browser combinations announce broken words as they would appear visually. */ }
+ .prose--wp .screen-reader-text:focus {
+ background-color: #eee;
+ clip: auto !important;
+ clip-path: none;
+ color: #444;
+ display: block;
+ font-size: 1em;
+ height: auto;
+ left: 5px;
+ line-height: normal;
+ padding: 15px 23px 14px;
+ text-decoration: none;
+ top: 5px;
+ width: auto;
+ z-index: 100000;
+ /* Above WP toolbar. */ }
+ .prose--wp img[class*="wp-image-"] {
+ height: auto;
+ width: auto; }
+
+.registry-card {
+ display: flex; }
+
+.registry-card__content {
+ flex: 1; }
+
+.registry-card {
+ --registry-card-border-hsl: var(--teal-hsl);
+ background: hsl(var(--white-hsl), 1);
+ box-shadow: 0px 4px 8px hsl(var(--base-hsl), 0.15);
+ position: relative;
+ padding: 16px 24px 16px 24px; }
+ @media (min-width: 85em) {
+ .registry-card {
+ padding: 32px 40px 16px 40px; } }
+
+.registry-card:before {
+ content: '';
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: hsl(var(--registry-card-border-hsl, transparent), 1); }
+
+.registry-card__pub-logo {
+ width: 132px; }
+
+.registry-card__pub-name {
+ font-size: 1.5rem;
+ color: hsl(var(--base-hsl), 1);
+ font-weight: 300; }
+
+.registry-card__content {
+ margin-left: 32px; }
+
+.registry-card__list {
+ list-style: none;
+ padding-left: 0; }
+
+.registry-grant {
+ width: 100%; }
+
+.registry-grant td {
+ border: 0;
+ padding: 0;
+ vertical-align: top; }
+
+.registry-grant__line {
+ font-style: normal;
+ font-weight: 300; }
+
+.registry-grant--title-line td {
+ padding-top: 12px;
+ font-weight: 400;
+ padding-bottom: 4px; }
+
+.registry-grant--amounts-line td {
+ line-height: 1.3;
+ border-bottom: 0; }
+
+.registry-grant--data-line {
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.1); }
+
+.registry-grant td {
+ padding: 8px 0 16px; }
+
+.registry-grant:last-child {
+ border-bottom: 0; }
+
+.registry-grant__records,
+.registry-grant__validation {
+ width: 35%; }
+
+.registry-grant__spacer {
+ padding-left: 24px; }
+
+.registry-grant__pub-date,
+.registry-grant__download {
+ width: 40%; }
+
+.registry-grant__title {
+ width: 100%; }
+
+.registry-grant__amount,
+.registry-grant__license {
+ width: 100%;
+ text-align: right; }
+
+.registry-grant__amount {
+ margin-bottom: 8; }
+
+.registry-grant__license a {
+ margin-left: 32px; }
+
+.registry-grant__validation > i {
+ vertical-align: -7px; }
+
+.registry-grant--validated > i {
+ color: hsl(var(--teal-dark-hsl), 1); }
+
+.registry-grant--invalid > i {
+ color: hsl(var(--red-hsl), 1); }
+
+.registry-grant__grant-n,
+.registry-grant__amount-n {
+ font-size: 1.6rem; }
+
+.registry-grant__grant-n {
+ font-weight: 300; }
+
+.registry-grant__amount-n {
+ font-weight: 400; }
+
+.registry-grant__file {
+ padding: 0 12px 0;
+ border-radius: 20px;
+ border: 1px solid currentColor;
+ font-weight: 400;
+ text-align: center;
+ display: inline-block; }
+
+.registry-grant--xls {
+ color: hsl(var(--orange-dark-hsl), 1); }
+
+.registry-grant--csv {
+ color: hsl(var(--teal-dark-hsl), 1); }
+
+.registry-grant--json {
+ color: hsl(var(--yellow-dark-hsl), 1); }
+
+.registry-grant--ods {
+ color: hsl(var(--red-hsl), 1); }
+
+.license {
+ opacity: .4; }
+
+.license--cc {
+ max-width: 20px; }
+
+.license--ogl {
+ max-width: 32px; }
+
+.license--pddl {
+ max-width: 32px; }
+
+.search-block {
+ padding: 82px 1.5rem 67px; }
+ .search-block--simple {
+ background: #DE6E26; }
+ .search-block--funders {
+ background: hsl(var(--teal-hsl), 1) !important; }
+ .search-block--recipients {
+ background: hsl(var(--yellow-hsl), 1) !important; }
+ .search-block__description {
+ text-align: center;
+ font-size: 24px;
+ font-weight: 400;
+ margin-bottom: 48px; }
+ @media (min-width: 36em) {
+ .search-block__description {
+ font-size: 35px; } }
+ .search-block form {
+ text-align: left; }
+ .search-block__form-item-label {
+ font-weight: 500;
+ font-size: 19px;
+ margin-bottom: 6px;
+ margin-top: 10px; }
+ .search-block__form-group {
+ display: flex; }
+ .search-block__form-group input[type="text"] {
+ border: none;
+ appearance: none;
+ font-size: 20px;
+ padding: 22px 12px;
+ margin: 0;
+ display: block;
+ border-radius: 3px 0px 0px 3px;
+ flex-grow: 0;
+ min-width: 20px;
+ width: 100%; }
+ @media (min-width: 36em) {
+ .search-block__form-group input[type="text"] {
+ min-width: 100px;
+ font-size: 22px;
+ padding: 24px 16px;
+ flex-grow: 2; } }
+ @media (min-width: 60em) {
+ .search-block__form-group input[type="text"] {
+ min-width: 160px;
+ font-size: 24px;
+ padding: 28px 18px;
+ flex-grow: 2; } }
+ .search-block input[type="submit"] {
+ border: none;
+ appearance: none;
+ background: #153634;
+ color: white;
+ font-size: 20px;
+ padding: 20px 30px;
+ font-weight: 500;
+ border-radius: 0px 3px 3px 0px; }
+ @media (min-width: 36em) {
+ .search-block input[type="submit"] {
+ padding: 24px 36px;
+ font-size: 22px; } }
+ @media (min-width: 60em) {
+ .search-block input[type="submit"] {
+ padding: 28px 42px;
+ font-size: 24px; } }
+ .search-block input[type="submit"]:hover {
+ cursor: pointer; }
+ .search-block .search-block__label {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 6px; }
+ @media (min-width: 60em) {
+ .search-block .search-block__label {
+ flex-direction: row-reverse;
+ justify-content: space-between;
+ align-items: baseline; } }
+
+/* Advanced variant styling */
+.search-block--advanced {
+ padding-top: 2rem;
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ padding-bottom: 2rem;
+ background: #E6925C; }
+ .search-block--advanced .search-block__description {
+ margin-bottom: 36px; }
+ .search-block--advanced input[type="text"] {
+ border-radius: 3px;
+ padding: 16px 12px; }
+ @media (min-width: 36em) {
+ .search-block--advanced input[type="text"] {
+ padding: 12px 16px; } }
+ @media (min-width: 60em) {
+ .search-block--advanced input[type="text"] {
+ padding: 12px 18px; } }
+ .search-block--advanced input[type="submit"] {
+ border-radius: 3px;
+ padding: 14px 30px; }
+ @media (min-width: 36em) {
+ .search-block--advanced input[type="submit"] {
+ padding: 16px 36px;
+ font-size: 22px; } }
+ @media (min-width: 60em) {
+ .search-block--advanced input[type="submit"] {
+ padding: 18px 50px;
+ font-size: 24px; } }
+
+.search-block__form-radio-group {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+ margin-top: 16px;
+ margin-bottom: 32px; }
+ @media (min-width: 36em) {
+ .search-block__form-radio-group {
+ flex-direction: row;
+ align-items: flex-start;
+ justify-content: center; } }
+ .search-block__form-radio-group label {
+ margin-top: 6px;
+ margin-bottom: 6px; }
+
+.search-block__form-group-label {
+ font-weight: 400;
+ font-size: 18px;
+ height: 100%; }
+ @media (min-width: 36em) {
+ .search-block__form-group-label {
+ margin-top: 10px;
+ margin-right: 8px;
+ margin-bottom: 6px; } }
+
+.search-block__form-action-group {
+ display: flex;
+ justify-content: center; }
+
+@media print {
+ .search-block {
+ display: none; } }
+
+.search-breadcrumbs-section {
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.2);
+ padding: 16px 0; }
+ @media (max-width: 35.98em) {
+ .search-breadcrumbs-section {
+ overflow-x: scroll;
+ scroll-snap-align: center;
+ scroll-snap-type: x proximity; } }
+ .search-breadcrumbs-section__panel {
+ display: flex; }
+ .search-breadcrumbs-section__search {
+ flex: 1;
+ display: flex;
+ align-items: center; }
+ @media print {
+ .search-breadcrumbs-section__search {
+ display: none; } }
+ .search-breadcrumbs-section__breadcrumbs {
+ flex: 2; }
+
+.sidebar-blog {
+ text-align: right;
+ padding-top: 0px; }
+ .sidebar-blog__heading {
+ padding: 0 32px 8px;
+ margin: 0;
+ font-weight: 400; }
+ .sidebar-blog__text {
+ padding: 102px;
+ max-width: 700px; }
+ .sidebar-blog__content {
+ padding: 0px; }
+
+.categories-list {
+ list-style: none; }
+ .categories-list__item > a {
+ font-weight: bold; }
+ .categories-list__item > ul {
+ list-style: none; }
+ .categories-list__item > ul > li {
+ margin-top: 1rem; }
+
+.category {
+ padding: 16px 32px;
+ display: block;
+ color: hsl(var(--base-hsl), 0.6);
+ font-size: 1.2rem; }
+ .category:hover {
+ background-color: hsl(var(--base-hsl), 0.1); }
+ .category a:hover {
+ text-decoration: underline; }
+ .category--active {
+ background-color: hsl(var(--teal-hsl), 0.2); }
+
+.sidebar-content {
+ --sidebar-content-heading-hsl: var(--base-hsl);
+ padding: 16px 32px;
+ text-align: right; }
+
+.sidebar-content__heading {
+ font-size: 1rem;
+ font-weight: bold;
+ color: hsl(var(--sidebar-content-heading-hsl), 1); }
+
+.sidebar-content__text {
+ font-size: .9rem;
+ color: hsl(var(--base-hsl), 1); }
+
+.sidebar-content__image {
+ padding: 16px 0; }
+
+.sidebar-content__image figcaption {
+ padding-top: 8px;
+ font-size: .8rem;
+ color: hsl(var(--base-hsl), 1);
+ font-size: italic; }
+
+.sidebar-content--orange {
+ --sidebar-content-heading-hsl: var(--orange-dark-hsl); }
+
+.sidebar-content--teal {
+ --sidebar-content-heading-hsl: var(--teal-dark-hsl); }
+
+.sidebar-content--yellow {
+ --sidebar-content-heading-hsl: var(--yellow-dark-hsl); }
+
+.sidebar-content--red {
+ --sidebar-content-heading-hsl: var(--red-hsl); }
+
+.sidebar-list {
+ text-align: right;
+ padding-left: 0; }
+ .sidebar-list__item {
+ list-style-type: none;
+ position: relative; }
+ .sidebar-list__item > .sidebar-list {
+ max-height: 0;
+ overflow: hidden; }
+ .sidebar-list__trigger {
+ position: absolute;
+ right: 0; }
+
+.sidebar-list__trigger {
+ cursor: pointer;
+ padding: 12px 16px; }
+
+.sidebar-list__item > a {
+ display: block;
+ padding: 8px 4px;
+ margin-right: 40px;
+ color: hsl(var(--base-hsl), 1); }
+
+.sidebar-list__item.sidebar-list--expanded > .sidebar-list {
+ height: auto;
+ max-height: 1000px; }
+
+.sidebar-list__item > .sidebar-list {
+ background-color: hsl(var(--teal-hsl), 0.075);
+ transition: max-height .4s ease; }
+
+.sidebar-list__item .material-icons {
+ font-size: 1.2rem;
+ transition: transform .1s ease;
+ transform: rotate(0);
+ color: hsl(var(--teal-hsl), 1); }
+
+.sidebar-list__item.sidebar-list--expanded > .sidebar-list {
+ box-shadow: inset 0 0 4px hsl(var(--teal-hsl), 0.1); }
+
+.sidebar-list__item.sidebar-list--expanded > .sidebar-list__trigger > .material-icons {
+ transform: rotate(45deg); }
+
+.sort-filters {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+ grid-gap: 10px; }
+ .sort-filters__select-wrapper {
+ display: grid;
+ grid-template-areas: "select";
+ align-items: center;
+ width: 100%;
+ border: solid 1px hsl(var(--gray-30-hsl), 1);
+ border-radius: 0.25rem;
+ padding: 0.25rem 0.5rem;
+ background-color: #fff;
+ cursor: pointer; }
+ .sort-filters__select-wrapper:after {
+ grid-area: select;
+ justify-self: end;
+ content: "";
+ width: 0.8rem;
+ height: 0.5rem;
+ background-color: hsl(var(--gray-30-hsl), 1);
+ clip-path: polygon(100% 0%, 0 0%, 50% 100%); }
+ .sort-filters select {
+ grid-area: select;
+ appearance: none;
+ background-color: transparent;
+ border: none;
+ padding: 0 1rem 0 0;
+ margin: 0;
+ width: 100%;
+ font-family: inherit;
+ font-size: inherit;
+ cursor: inherit;
+ line-height: inherit;
+ color: hsl(var(--gray-30-hsl), 1); }
+ .sort-filters select.sort-filters__filter-active {
+ color: #153634; }
+
+.subscribe-section {
+ background-color: hsl(var(--yellow-hsl), 1);
+ padding: 24px; }
+ @media print {
+ .subscribe-section {
+ display: none; } }
+
+@media (max-width: 59.98em) {
+ .subscribe-section__wrapper {
+ margin-left: 8px;
+ margin-right: 8px; } }
+
+@media (min-width: 85em) {
+ .subscribe-section__wrapper {
+ max-width: 960px;
+ margin-left: auto;
+ margin-right: auto; } }
+
+@media (min-width: 85em) {
+ .subscribe-section__wrapper {
+ max-width: 700px; } }
+
+.subscribe-section__form {
+ display: flex;
+ flex-direction: column;
+ width: 100%; }
+ @media (min-width: 36em) {
+ .subscribe-section__form {
+ flex-direction: row; } }
+
+.subscribe-section input[type="email"] {
+ border-radius: 3px 0 0 3px;
+ flex: 1;
+ padding: 12px 24px;
+ width: 100%;
+ border: 0;
+ letter-spacing: .3px;
+ color: hsl(var(--white-hsl), 1);
+ background-color: hsl(var(--base-hsl), 0.1); }
+ .subscribe-section input[type="email"]::-webkit-input-placeholder {
+ color: hsl(var(--base-hsl), 0.9); }
+ .subscribe-section input[type="email"]:-moz-placeholder {
+ color: hsl(var(--base-hsl), 0.9); }
+ .subscribe-section input[type="email"]::-moz-placeholder {
+ color: hsl(var(--base-hsl), 0.9); }
+ .subscribe-section input[type="email"]:-ms-input-placeholder {
+ color: hsl(var(--base-hsl), 0.9); }
+ .subscribe-section input[type="email"]:focus {
+ background-color: hsl(var(--base-hsl), 0.2); }
+ .subscribe-section input[type="email"]:hover {
+ background-color: hsl(var(--base-hsl), 0.3); }
+
+.subscribe-section input[type="submit"] {
+ all: inherit;
+ color: hsl(var(--base-hsl), 1);
+ display: inline-block;
+ width: 100%;
+ margin-top: 8px;
+ padding: 12px 24px;
+ background-color: hsl(var(--base-hsl), 0.15);
+ border-radius: 0 3px 3px 0;
+ text-align: center;
+ cursor: pointer; }
+ @media (min-width: 36em) {
+ .subscribe-section input[type="submit"] {
+ max-width: 90px;
+ margin-top: 0; } }
+
+.subscribe-section input[type="submit"]:focus {
+ background-color: hsl(var(--base-hsl), 0.2); }
+
+.subscribe-section input[type="submit"]:hover {
+ background-color: hsl(var(--base-hsl), 0.3); }
+
+.top-bar ul {
+ padding: 0;
+ margin: 0; }
+
+.top-bar li {
+ list-style: none;
+ margin: 0; }
+
+.top-bar a {
+ text-decoration: none; }
+
+.top-bar {
+ --panel-width: 280px; }
+ @media (min-width: 36em) {
+ .top-bar {
+ --panel-width: 350px; } }
+
+.top-bar {
+ display: flex;
+ position: relative;
+ z-index: 1000; }
+ .top-bar__menu {
+ flex: 1; }
+ .top-bar__menu-trigger {
+ flex: 0;
+ line-height: 1; }
+ @media print {
+ .top-bar {
+ display: none; } }
+
+@media (max-width: 35.98em) {
+ .contextual-menu {
+ display: none; } }
+
+.contextual-menu__item {
+ display: inline-block;
+ vertical-align: -webkit-baseline-middle;
+ vertical-align: -moz-middle-with-baseline; }
+
+.contextual-menu__item + .contextual-menu__item {
+ margin-left: -5px; }
+
+.contextual-menu--disabled {
+ opacity: .4;
+ pointer-events: none; }
+
+.off-canvas-menu {
+ top: 0;
+ bottom: 0;
+ z-index: 1000;
+ display: block;
+ position: fixed;
+ box-sizing: border-box;
+ width: var(--panel-width);
+ left: calc(-1 * var(--panel-width) - 20px);
+ overflow-y: scroll; }
+ .off-canvas-menu__list {
+ list-style-type: none; }
+ .off-canvas-menu__heading {
+ margin-bottom: 0; }
+ .off-canvas-menu__trigger {
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ right: 0;
+ border: 0; }
+ .off-canvas-menu--disabled {
+ pointer-events: none; }
+ .off-canvas-menu__submenu .submenu__list {
+ padding-left: 16px;
+ display: block;
+ position: static; }
+
+@media (min-width: 36em) {
+ .off-canvas-menu__contextual {
+ display: none; } }
+
+.off-canvas-menu--expanded {
+ left: 0; }
+
+.submenu {
+ position: relative; }
+ .submenu__list {
+ width: auto;
+ display: none;
+ text-align: left;
+ position: absolute;
+ white-space: nowrap; }
+ .submenu__list:last-child {
+ right: 1px; }
+ .submenu__item {
+ display: block; }
+ .submenu__button {
+ display: inline-block;
+ box-sizing: border-box; }
+ .submenu__item:not(:first-child) .submenu__button {
+ margin-top: -1px; }
+ .submenu:hover .submenu__list {
+ display: block; }
+
+.top-bar {
+ --bg-color: var(--teal-hsl);
+ --text-color: var(--base-hsl);
+ --active-color: var(--orange-hsl);
+ border-bottom: 1px solid hsl(var(--base-hsl), 0.2); }
+ .top-bar__menu-trigger {
+ border: 0;
+ padding: 4px 8px 2px; }
+ .top-bar__menu {
+ text-align: right; }
+
+.submenu__list {
+ width: auto; }
+
+.submenu__button {
+ width: 100%;
+ padding: 8px 24px 8px;
+ border: 1px solid hsl(var(--base-hsl), 0.1);
+ color: hsl(var(--text-color), 1); }
+ .submenu__button:hover {
+ background-color: hsl(var(--bg-color), 0.1); }
+
+.contextual-menu__button {
+ display: inline-block;
+ padding: 8px 24px 8px;
+ transition: all .5s;
+ color: hsl(var(--text-color), 1); }
+ .contextual-menu__button:hover {
+ color: hsl(var(--text-color), 1);
+ background-color: hsl(var(--bg-color), 0.8); }
+
+.contextual-menu--active {
+ background-color: hsl(var(--active-color), 0.1); }
+
+.contextual-menu .submenu__list {
+ background-color: hsl(var(--white-hsl)); }
+
+.off-canvas-menu {
+ padding: 48px 32px;
+ transition: all .4s ease;
+ background-color: hsl(var(--bg-color), 1);
+ box-shadow: 4px 4px 16px hsl(var(--bg-color), 0.2); }
+ .off-canvas-menu__list {
+ padding: 0 0 24px 0;
+ margin-bottom: 24px;
+ border-bottom: 1px solid hsl(var(--text-color), 0.2); }
+ .off-canvas-menu__trigger {
+ padding: 8px;
+ background-color: transparent;
+ color: hsl(var(--text-color), 0.7); }
+ .off-canvas-menu__item a {
+ display: inline-block;
+ padding-bottom: 8px;
+ color: hsl(var(--base-hsl), 0.7); }
+ .off-canvas-menu__item a:hover {
+ color: hsl(var(--base-hsl), 1); }
+ .off-canvas-menu__heading {
+ color: hsl(var(--white-hsl), 1);
+ font-weight: 400;
+ margin-bottom: 8px; }
+ .off-canvas-menu__contextual {
+ padding-bottom: 24px; }
+ .off-canvas-menu--disabled {
+ opacity: .4; }
+
+.base-section {
+ padding: 48px 0; }
+ .base-section--narrow {
+ max-width: 700px;
+ margin: 0 auto; }
+
+.grid-aligned {
+ margin-top: 8px; }
+
+.grid-aligned {
+ margin-top: 8px; }
+
+.cards-section {
+ padding: 32px 0; }
+ .cards-section__heading, .cards-section__tagline {
+ text-align: center;
+ font-size: 2rem; }
+ .cards-section__tagline {
+ font-weight: 200; }
+ .cards-section__tagline > a {
+ color: hsl(var(--orange-dark-hsl), 1);
+ font-weight: 200; }
+
+.filter-wrapper[open] .filter-wrapper__summary .accordion-toggle-icon .accordion-toggle-icon__vertical-line {
+ transform-origin: center;
+ transform: rotateZ(90deg);
+ transition: 0.1s; }
+
+.filter-wrapper__summary {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: #2e666b;
+ font-size: 16px;
+ font-weight: 500;
+ padding: 4px 10px;
+ color: white;
+ margin-bottom: 4px; }
+ @media (min-width: 60em) {
+ .filter-wrapper__summary {
+ color: #153634;
+ background: none;
+ padding-left: 0;
+ margin-bottom: 6px; } }
+ @media (min-width: 60em) {
+ .filter-wrapper__summary:focus {
+ outline: none; } }
+ .filter-wrapper__summary .accordion-toggle-icon {
+ transition: 0.2s;
+ stroke: white; }
+ @media (min-width: 60em) {
+ .filter-wrapper__summary .accordion-toggle-icon {
+ display: none; } }
+ .filter-wrapper__summary .accordion-toggle-icon__vertical-line {
+ transform-origin: center;
+ transform: rotateZ(0deg);
+ transition: 0.1s; }
+ .filter-wrapper__summary:hover {
+ cursor: pointer; }
+ @media (min-width: 60em) {
+ .filter-wrapper__summary:hover {
+ cursor: default; } }
+ .filter-wrapper__summary:hover .accordion-toggle-icon {
+ transform: scale(1.1, 1.1);
+ transition: 0.2s; }
+ .filter-wrapper__summary::-webkit-details-marker {
+ display: none; }
+ .filter-wrapper__summary--heading {
+ font-weight: 500;
+ font-size: 18px; }
+
+.intro-section {
+ padding: 48px 0;
+ text-align: center; }
+ .intro-section h2 {
+ font-weight: 200; }
+
+.sidebar-section {
+ --sidebar-bg-hsl: var(--base-hsl);
+ margin-top: 88px;
+ box-shadow: 4px 0 8px hsl(var(--base-hsl), 0.1);
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-right: 24px;
+ position: relative; }
+ .sidebar-section:before {
+ content: '';
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ right: 0;
+ background-color: hsl(var(--sidebar-bg-hsl), 1); }
+
+.sidebar-section--fixed {
+ top: 0;
+ position: sticky; }
+
+.sidebar-section--orange {
+ --sidebar-bg-hsl: var(--orange-dark-hsl); }
+
+.sidebar-section--teal {
+ --sidebar-bg-hsl: var(--teal-dark-hsl); }
+
+.sidebar-section--yellow {
+ --sidebar-bg-hsl: var(--yellow-dark-hsl); }
+
+.sidebar-section--red {
+ --sidebar-bg-hsl: var(--red-hsl); }
+
+.dashboard-page__section-radios {
+ float: right; }
+ .dashboard-page__section-radios label {
+ min-width: 6rem;
+ text-align: center; }
+
+.dashboard-page__back-link {
+ color: #153634; }
+
+.dashboard-page__pager {
+ display: flex;
+ justify-content: center;
+ margin-bottom: 48px; }
+
+.grantnav-page__wrapper {
+ border-top: 10px solid #F7DBC9; }
+
+.grantnav-page__content .section {
+ margin-bottom: 32px; }
+
+.grantnav-search__wrapper {
+ display: flex;
+ flex-direction: column;
+ padding: 0 1.5rem; }
+ @media (min-width: 60em) {
+ .grantnav-search__wrapper {
+ flex-direction: row; } }
+
+.grantnav-search__sidebar {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start; }
+ @media (min-width: 60em) {
+ .grantnav-search__sidebar {
+ min-width: 320px;
+ max-width: 320px;
+ margin-right: 32px; } }
+ .grantnav-search__sidebar--heading {
+ font-size: 24px;
+ font-weight: 400;
+ margin-bottom: 12px; }
+ .grantnav-search__sidebar--filters {
+ width: 100%;
+ margin-top: 20px;
+ margin-bottom: 24px; }
+ @media print {
+ .grantnav-search__sidebar {
+ display: none; } }
+
+.grantnav-search__content {
+ padding-top: 0px;
+ width: 100%; }
+ @media (min-width: 60em) {
+ .grantnav-search__content {
+ padding-top: 24px; } }
+ .grantnav-search__content--filters {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-top: 32px;
+ margin-bottom: 28px; }
+ .grantnav-search__content--filters .export-wrapper {
+ display: flex;
+ align-items: center; }
+ .grantnav-search__content--filters .export-wrapper .export-label {
+ position: absolute;
+ width: 1px;
+ clip: rect(0 0 0 0);
+ overflow: hidden;
+ white-space: nowrap;
+ font-size: 17px;
+ font-weight: 700; }
+ @media (min-width: 36em) {
+ .grantnav-search__content--filters .export-wrapper .export-label {
+ position: static;
+ width: unset;
+ clip: unset;
+ overflow: unset;
+ white-space: unset;
+ margin-right: 6px; } }
+ .grantnav-search__content--filters .export-wrapper .export-button {
+ margin-right: 6px; }
+ .grantnav-search__content--results {
+ margin-bottom: 64px; }
+ .grantnav-search__content--footer {
+ display: flex;
+ justify-content: center;
+ margin-bottom: 48px; }
+
+.grantnav-datatable__wrapper {
+ display: flex;
+ flex-direction: column;
+ padding: 0 1.5rem; }
+ @media (min-width: 60em) {
+ .grantnav-datatable__wrapper {
+ flex-direction: row; } }
+
+.grantnav-datatable__sidebar {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start; }
+ @media (min-width: 60em) {
+ .grantnav-datatable__sidebar {
+ min-width: 280px;
+ max-width: 280px;
+ margin-right: 32px; } }
+ .grantnav-datatable__sidebar--heading {
+ font-size: 24px;
+ font-weight: 400;
+ margin-bottom: 12px; }
+ .grantnav-datatable__sidebar--filters {
+ width: 100%;
+ margin-top: 20px; }
+
+.grantnav-datatable__content {
+ padding-top: 0px; }
+ @media (min-width: 60em) {
+ .grantnav-datatable__content {
+ padding-top: 24px; } }
+ .grantnav-datatable__content--filters {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-top: 32px; }
+ .grantnav-datatable__content--filters .export-wrapper {
+ display: flex;
+ align-items: center; }
+ .grantnav-datatable__content--filters .export-wrapper .export-label {
+ position: absolute;
+ width: 1px;
+ clip: rect(0 0 0 0);
+ overflow: hidden;
+ white-space: nowrap;
+ font-size: 17px;
+ font-weight: 700; }
+ @media (min-width: 36em) {
+ .grantnav-datatable__content--filters .export-wrapper .export-label {
+ position: static;
+ width: unset;
+ clip: unset;
+ overflow: unset;
+ white-space: unset;
+ margin-right: 6px; } }
+ .grantnav-datatable__content--filters .export-wrapper .export-button {
+ margin-right: 6px; }
+ .grantnav-datatable__content--results {
+ margin-bottom: 64px; }
+ .grantnav-datatable__content--footer {
+ display: flex;
+ justify-content: center;
+ margin-bottom: 48px; }
diff --git a/registry/static/css/sanitize.css b/registry/static/css/sanitize.css
new file mode 100644
index 0000000..b5026c2
--- /dev/null
+++ b/registry/static/css/sanitize.css
@@ -0,0 +1,551 @@
+/*! sanitize.css v6.0.0 | CC0 License | github.com/csstools/sanitize.css */
+
+/* Document
+ * ========================================================================== */
+
+/**
+ * 1. Remove repeating backgrounds in all browsers (opinionated).
+ * 2. Add border box sizing in all browsers (opinionated).
+ */
+
+*,
+::before,
+::after {
+ background-repeat: no-repeat; /* 1 */
+ box-sizing: border-box; /* 2 */
+}
+
+/**
+ * 1. Add text decoration inheritance in all browsers (opinionated).
+ * 2. Add vertical alignment inheritance in all browsers (opinionated).
+ */
+
+::before,
+::after {
+ text-decoration: inherit; /* 1 */
+ vertical-align: inherit; /* 2 */
+}
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Add the default cursor in all browsers (opinionated).
+ * 3. Prevent adjustments of font size after orientation changes in
+ * IE on Windows Phone and in iOS.
+ * 4. Breaks words to prevent prevent overflow in all browsers (opinionated).
+ */
+
+html {
+ line-height: 1.15; /* 1 */
+ cursor: default; /* 2 */
+ -ms-text-size-adjust: 100%; /* 3 */
+ -webkit-text-size-adjust: 100%; /* 3 */
+ word-break: break-word; /* 4 */
+}
+
+/* Sections
+ * ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ * ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * Add the correct display in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Remove the list style on navigation lists in all browsers (opinionated).
+ */
+
+nav ol,
+nav ul {
+ list-style: none;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ * ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Add the correct text decoration in Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ text-decoration: underline;
+ text-decoration: underline dotted;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/*
+ * Remove the text shadow on text selections in Firefox 61- (opinionated).
+ * 1. Restore the coloring undone by defining the text shadow
+ * in all browsers (opinionated).
+ */
+
+::-moz-selection {
+ background-color: #b3d4fc; /* 1 */
+ color: #000; /* 1 */
+ text-shadow: none;
+}
+
+::selection {
+ background-color: #b3d4fc; /* 1 */
+ color: #000; /* 1 */
+ text-shadow: none;
+}
+
+/* Embedded content
+ * ========================================================================== */
+
+/*
+ * Change the alignment on media elements in all browers (opinionated).
+ */
+
+audio,
+canvas,
+iframe,
+img,
+svg,
+video {
+ vertical-align: middle;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+video {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+
+img {
+ border-style: none;
+}
+
+/**
+ * Change the fill color to match the text color in all browsers (opinionated).
+ */
+
+svg {
+ fill: currentColor;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Tabular data
+ * ========================================================================== */
+
+/**
+ * Collapse border spacing in all browsers (opinionated).
+ */
+
+table {
+ border-collapse: collapse;
+}
+
+/* Forms
+ * ========================================================================== */
+
+/**
+ * Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+}
+
+/**
+ * Inherit styling in all browsers (opinionated).
+ */
+
+button,
+input,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+/**
+ * 1. Show the overflow in IE.
+ * 2. Remove the inheritance of text transform in Edge, Firefox, and IE.
+ */
+
+button {
+ overflow: visible; /* 1 */
+ text-transform: none; /* 2 */
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule in Firefox.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * Show the overflow in Edge and IE.
+ */
+
+input {
+ overflow: visible;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * 1. Add the correct display in Edge and IE.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Remove the inheritance of text transform in Firefox.
+ */
+
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Remove the default vertical scrollbar in IE.
+ * 2. Change the resize direction on textareas in all browsers (opinionated).
+ */
+
+textarea {
+ overflow: auto; /* 1 */
+ resize: vertical; /* 2 */
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ * ========================================================================== */
+
+/*
+ * Add the correct display in Edge and IE.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct styles in Edge, IE, and Safari.
+ */
+
+dialog {
+ background-color: white;
+ border: solid;
+ color: black;
+ display: block;
+ height: -moz-fit-content;
+ height: -webkit-fit-content;
+ height: fit-content;
+ left: 0;
+ margin: auto;
+ padding: 1em;
+ position: absolute;
+ right: 0;
+ width: -moz-fit-content;
+ width: -webkit-fit-content;
+ width: fit-content;
+}
+
+dialog:not([open]) {
+ display: none;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Scripting
+ * ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+canvas {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+
+template {
+ display: none;
+}
+
+/* User interaction
+ * ========================================================================== */
+
+/*
+ * 1. Remove the tapping delay on clickable elements in all browsers (opinionated).
+ * 2. Remove the tapping delay in IE 10.
+ */
+
+a,
+area,
+button,
+input,
+label,
+select,
+summary,
+textarea,
+[tabindex] {
+ -ms-touch-action: manipulation; /* 1 */
+ touch-action: manipulation; /* 2 */
+}
+
+/**
+ * Add the correct display in IE 10-.
+ */
+
+[hidden] {
+ display: none;
+}
+
+/* Accessibility
+ * ========================================================================== */
+
+/**
+ * Change the cursor on busy elements in all browsers (opinionated).
+ */
+
+[aria-busy="true"] {
+ cursor: progress;
+}
+
+/*
+ * Change the cursor on control elements in all browsers (opinionated).
+ */
+
+[aria-controls] {
+ cursor: pointer;
+}
+
+/*
+ * Change the cursor on disabled, not-editable, or otherwise
+ * inoperable elements in all browsers (opinionated).
+ */
+
+[aria-disabled],
+[disabled] {
+ cursor: disabled;
+}
+
+/*
+ * Change the display on visually hidden accessible elements
+ * in all browsers (opinionated).
+ */
+
+[aria-hidden="false"][hidden]:not(:focus) {
+ clip: rect(0, 0, 0, 0);
+ display: inherit;
+ position: absolute;
+}
diff --git a/registry/static/fonts/OstrichSans-Black.otf b/registry/static/fonts/OstrichSans-Black.otf
new file mode 100644
index 0000000..bfe9eb9
Binary files /dev/null and b/registry/static/fonts/OstrichSans-Black.otf differ
diff --git a/registry/static/images/360-giving-logo-white.svg b/registry/static/images/360-giving-logo-white.svg
new file mode 100644
index 0000000..35800a1
--- /dev/null
+++ b/registry/static/images/360-giving-logo-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-challenge.svg b/registry/static/images/360-logos/360giving-challenge.svg
new file mode 100644
index 0000000..2c317ee
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-challenge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-grantnav.svg b/registry/static/images/360-logos/360giving-grantnav.svg
new file mode 100644
index 0000000..96179fc
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-grantnav.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-insights.svg b/registry/static/images/360-logos/360giving-insights.svg
new file mode 100644
index 0000000..ae81c96
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-insights.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-main.svg b/registry/static/images/360-logos/360giving-main.svg
new file mode 100644
index 0000000..764bef7
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-main.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-map.svg b/registry/static/images/360-logos/360giving-map.svg
new file mode 100644
index 0000000..e3d3bda
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-registry.svg b/registry/static/images/360-logos/360giving-registry.svg
new file mode 100644
index 0000000..ddc4aeb
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-registry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-resources.svg b/registry/static/images/360-logos/360giving-resources.svg
new file mode 100644
index 0000000..c7b351d
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-resources.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/360giving-standard.svg b/registry/static/images/360-logos/360giving-standard.svg
new file mode 100644
index 0000000..a4cb7a4
--- /dev/null
+++ b/registry/static/images/360-logos/360giving-standard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/challenge/360challenge-color.pdf b/registry/static/images/360-logos/challenge/360challenge-color.pdf
new file mode 100644
index 0000000..29c7e5b
Binary files /dev/null and b/registry/static/images/360-logos/challenge/360challenge-color.pdf differ
diff --git a/registry/static/images/360-logos/challenge/360challenge-color.png b/registry/static/images/360-logos/challenge/360challenge-color.png
new file mode 100644
index 0000000..26aacef
Binary files /dev/null and b/registry/static/images/360-logos/challenge/360challenge-color.png differ
diff --git a/registry/static/images/360-logos/challenge/360challenge-color.svg b/registry/static/images/360-logos/challenge/360challenge-color.svg
new file mode 100644
index 0000000..a20d46b
--- /dev/null
+++ b/registry/static/images/360-logos/challenge/360challenge-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/challenge/360challenge-color@4x.png b/registry/static/images/360-logos/challenge/360challenge-color@4x.png
new file mode 100644
index 0000000..e90df9d
Binary files /dev/null and b/registry/static/images/360-logos/challenge/360challenge-color@4x.png differ
diff --git a/registry/static/images/360-logos/challenge/360challenge-white.pdf b/registry/static/images/360-logos/challenge/360challenge-white.pdf
new file mode 100644
index 0000000..7be2b08
Binary files /dev/null and b/registry/static/images/360-logos/challenge/360challenge-white.pdf differ
diff --git a/registry/static/images/360-logos/challenge/360challenge-white.png b/registry/static/images/360-logos/challenge/360challenge-white.png
new file mode 100644
index 0000000..429f4d5
Binary files /dev/null and b/registry/static/images/360-logos/challenge/360challenge-white.png differ
diff --git a/registry/static/images/360-logos/challenge/360challenge-white.svg b/registry/static/images/360-logos/challenge/360challenge-white.svg
new file mode 100644
index 0000000..07f22c8
--- /dev/null
+++ b/registry/static/images/360-logos/challenge/360challenge-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/challenge/360challenge-white@4x.png b/registry/static/images/360-logos/challenge/360challenge-white@4x.png
new file mode 100644
index 0000000..6415603
Binary files /dev/null and b/registry/static/images/360-logos/challenge/360challenge-white@4x.png differ
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-color.pdf b/registry/static/images/360-logos/grantnav/360grantnav-color.pdf
new file mode 100644
index 0000000..3c905ea
Binary files /dev/null and b/registry/static/images/360-logos/grantnav/360grantnav-color.pdf differ
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-color.png b/registry/static/images/360-logos/grantnav/360grantnav-color.png
new file mode 100644
index 0000000..7fe5b3d
Binary files /dev/null and b/registry/static/images/360-logos/grantnav/360grantnav-color.png differ
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-color.svg b/registry/static/images/360-logos/grantnav/360grantnav-color.svg
new file mode 100644
index 0000000..ded9e57
--- /dev/null
+++ b/registry/static/images/360-logos/grantnav/360grantnav-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-color@4x.png b/registry/static/images/360-logos/grantnav/360grantnav-color@4x.png
new file mode 100644
index 0000000..299f51f
Binary files /dev/null and b/registry/static/images/360-logos/grantnav/360grantnav-color@4x.png differ
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-white.pdf b/registry/static/images/360-logos/grantnav/360grantnav-white.pdf
new file mode 100644
index 0000000..b7a5ede
Binary files /dev/null and b/registry/static/images/360-logos/grantnav/360grantnav-white.pdf differ
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-white.png b/registry/static/images/360-logos/grantnav/360grantnav-white.png
new file mode 100644
index 0000000..596e577
Binary files /dev/null and b/registry/static/images/360-logos/grantnav/360grantnav-white.png differ
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-white.svg b/registry/static/images/360-logos/grantnav/360grantnav-white.svg
new file mode 100644
index 0000000..938c86b
--- /dev/null
+++ b/registry/static/images/360-logos/grantnav/360grantnav-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/grantnav/360grantnav-white@4x.png b/registry/static/images/360-logos/grantnav/360grantnav-white@4x.png
new file mode 100644
index 0000000..8aff1ee
Binary files /dev/null and b/registry/static/images/360-logos/grantnav/360grantnav-white@4x.png differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon-white-100.jpg b/registry/static/images/360-logos/icon/360giving-icon-white-100.jpg
new file mode 100644
index 0000000..c5d7cc7
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon-white-100.jpg differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon-white.pdf b/registry/static/images/360-logos/icon/360giving-icon-white.pdf
new file mode 100644
index 0000000..2911567
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon-white.pdf differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon-white.png b/registry/static/images/360-logos/icon/360giving-icon-white.png
new file mode 100644
index 0000000..f714d6e
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon-white.png differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon-white.svg b/registry/static/images/360-logos/icon/360giving-icon-white.svg
new file mode 100644
index 0000000..e2a1a32
--- /dev/null
+++ b/registry/static/images/360-logos/icon/360giving-icon-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/icon/360giving-icon-white@4x-100.jpg b/registry/static/images/360-logos/icon/360giving-icon-white@4x-100.jpg
new file mode 100644
index 0000000..7119e43
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon-white@4x-100.jpg differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon-white@4x.png b/registry/static/images/360-logos/icon/360giving-icon-white@4x.png
new file mode 100644
index 0000000..b01d70b
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon-white@4x.png differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon.jpg b/registry/static/images/360-logos/icon/360giving-icon.jpg
new file mode 100644
index 0000000..022011a
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon.jpg differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon.pdf b/registry/static/images/360-logos/icon/360giving-icon.pdf
new file mode 100644
index 0000000..1e370a0
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon.pdf differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon.png b/registry/static/images/360-logos/icon/360giving-icon.png
new file mode 100644
index 0000000..22761d6
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon.png differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon.svg b/registry/static/images/360-logos/icon/360giving-icon.svg
new file mode 100644
index 0000000..7913d67
--- /dev/null
+++ b/registry/static/images/360-logos/icon/360giving-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/icon/360giving-icon@4x-100.jpg b/registry/static/images/360-logos/icon/360giving-icon@4x-100.jpg
new file mode 100644
index 0000000..fdaa03c
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon@4x-100.jpg differ
diff --git a/registry/static/images/360-logos/icon/360giving-icon@4x.png b/registry/static/images/360-logos/icon/360giving-icon@4x.png
new file mode 100644
index 0000000..1fb550a
Binary files /dev/null and b/registry/static/images/360-logos/icon/360giving-icon@4x.png differ
diff --git a/registry/static/images/360-logos/insights/360insights-color.pdf b/registry/static/images/360-logos/insights/360insights-color.pdf
new file mode 100644
index 0000000..ea9ec3a
Binary files /dev/null and b/registry/static/images/360-logos/insights/360insights-color.pdf differ
diff --git a/registry/static/images/360-logos/insights/360insights-color.png b/registry/static/images/360-logos/insights/360insights-color.png
new file mode 100644
index 0000000..f26e589
Binary files /dev/null and b/registry/static/images/360-logos/insights/360insights-color.png differ
diff --git a/registry/static/images/360-logos/insights/360insights-color.svg b/registry/static/images/360-logos/insights/360insights-color.svg
new file mode 100644
index 0000000..332e9c5
--- /dev/null
+++ b/registry/static/images/360-logos/insights/360insights-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/insights/360insights-color@4x.png b/registry/static/images/360-logos/insights/360insights-color@4x.png
new file mode 100644
index 0000000..dab79fc
Binary files /dev/null and b/registry/static/images/360-logos/insights/360insights-color@4x.png differ
diff --git a/registry/static/images/360-logos/insights/360insights-white.pdf b/registry/static/images/360-logos/insights/360insights-white.pdf
new file mode 100644
index 0000000..08f0c24
Binary files /dev/null and b/registry/static/images/360-logos/insights/360insights-white.pdf differ
diff --git a/registry/static/images/360-logos/insights/360insights-white.png b/registry/static/images/360-logos/insights/360insights-white.png
new file mode 100644
index 0000000..7ff269a
Binary files /dev/null and b/registry/static/images/360-logos/insights/360insights-white.png differ
diff --git a/registry/static/images/360-logos/insights/360insights-white.svg b/registry/static/images/360-logos/insights/360insights-white.svg
new file mode 100644
index 0000000..72262fd
--- /dev/null
+++ b/registry/static/images/360-logos/insights/360insights-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/insights/360insights-white@4x.png b/registry/static/images/360-logos/insights/360insights-white@4x.png
new file mode 100644
index 0000000..449ba8f
Binary files /dev/null and b/registry/static/images/360-logos/insights/360insights-white@4x.png differ
diff --git a/registry/static/images/360-logos/main/360giving-logo-100.jpg b/registry/static/images/360-logos/main/360giving-logo-100.jpg
new file mode 100644
index 0000000..67b2165
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo-100.jpg differ
diff --git a/registry/static/images/360-logos/main/360giving-logo-white-100.jpg b/registry/static/images/360-logos/main/360giving-logo-white-100.jpg
new file mode 100644
index 0000000..37583d5
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo-white-100.jpg differ
diff --git a/registry/static/images/360-logos/main/360giving-logo-white.pdf b/registry/static/images/360-logos/main/360giving-logo-white.pdf
new file mode 100644
index 0000000..4f411cd
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo-white.pdf differ
diff --git a/registry/static/images/360-logos/main/360giving-logo-white.png b/registry/static/images/360-logos/main/360giving-logo-white.png
new file mode 100644
index 0000000..c4f912e
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo-white.png differ
diff --git a/registry/static/images/360-logos/main/360giving-logo-white.svg b/registry/static/images/360-logos/main/360giving-logo-white.svg
new file mode 100644
index 0000000..e4cc767
--- /dev/null
+++ b/registry/static/images/360-logos/main/360giving-logo-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/main/360giving-logo-white@4x-100.jpg b/registry/static/images/360-logos/main/360giving-logo-white@4x-100.jpg
new file mode 100644
index 0000000..111c400
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo-white@4x-100.jpg differ
diff --git a/registry/static/images/360-logos/main/360giving-logo-white@4x.png b/registry/static/images/360-logos/main/360giving-logo-white@4x.png
new file mode 100644
index 0000000..e19fcbe
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo-white@4x.png differ
diff --git a/registry/static/images/360-logos/main/360giving-logo.pdf b/registry/static/images/360-logos/main/360giving-logo.pdf
new file mode 100644
index 0000000..d2929ec
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo.pdf differ
diff --git a/registry/static/images/360-logos/main/360giving-logo.png b/registry/static/images/360-logos/main/360giving-logo.png
new file mode 100644
index 0000000..afa5718
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo.png differ
diff --git a/registry/static/images/360-logos/main/360giving-logo.svg b/registry/static/images/360-logos/main/360giving-logo.svg
new file mode 100644
index 0000000..fdc1117
--- /dev/null
+++ b/registry/static/images/360-logos/main/360giving-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/main/360giving-logo@4x-100.jpg b/registry/static/images/360-logos/main/360giving-logo@4x-100.jpg
new file mode 100644
index 0000000..dd55e3d
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo@4x-100.jpg differ
diff --git a/registry/static/images/360-logos/main/360giving-logo@4x.png b/registry/static/images/360-logos/main/360giving-logo@4x.png
new file mode 100644
index 0000000..22a6cb1
Binary files /dev/null and b/registry/static/images/360-logos/main/360giving-logo@4x.png differ
diff --git a/registry/static/images/360-logos/map/360map-color.pdf b/registry/static/images/360-logos/map/360map-color.pdf
new file mode 100644
index 0000000..b1701b9
Binary files /dev/null and b/registry/static/images/360-logos/map/360map-color.pdf differ
diff --git a/registry/static/images/360-logos/map/360map-color.png b/registry/static/images/360-logos/map/360map-color.png
new file mode 100644
index 0000000..f46a386
Binary files /dev/null and b/registry/static/images/360-logos/map/360map-color.png differ
diff --git a/registry/static/images/360-logos/map/360map-color.svg b/registry/static/images/360-logos/map/360map-color.svg
new file mode 100644
index 0000000..ee1d05f
--- /dev/null
+++ b/registry/static/images/360-logos/map/360map-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/map/360map-color@4x.png b/registry/static/images/360-logos/map/360map-color@4x.png
new file mode 100644
index 0000000..1f52fcb
Binary files /dev/null and b/registry/static/images/360-logos/map/360map-color@4x.png differ
diff --git a/registry/static/images/360-logos/map/360map-white.pdf b/registry/static/images/360-logos/map/360map-white.pdf
new file mode 100644
index 0000000..250060b
Binary files /dev/null and b/registry/static/images/360-logos/map/360map-white.pdf differ
diff --git a/registry/static/images/360-logos/map/360map-white.png b/registry/static/images/360-logos/map/360map-white.png
new file mode 100644
index 0000000..ffe501a
Binary files /dev/null and b/registry/static/images/360-logos/map/360map-white.png differ
diff --git a/registry/static/images/360-logos/map/360map-white.svg b/registry/static/images/360-logos/map/360map-white.svg
new file mode 100644
index 0000000..9f5971b
--- /dev/null
+++ b/registry/static/images/360-logos/map/360map-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/map/360map-white@4x.png b/registry/static/images/360-logos/map/360map-white@4x.png
new file mode 100644
index 0000000..f638d7f
Binary files /dev/null and b/registry/static/images/360-logos/map/360map-white@4x.png differ
diff --git a/registry/static/images/360-logos/registry/360registry-color.pdf b/registry/static/images/360-logos/registry/360registry-color.pdf
new file mode 100644
index 0000000..f14608c
Binary files /dev/null and b/registry/static/images/360-logos/registry/360registry-color.pdf differ
diff --git a/registry/static/images/360-logos/registry/360registry-color.png b/registry/static/images/360-logos/registry/360registry-color.png
new file mode 100644
index 0000000..0d2b87b
Binary files /dev/null and b/registry/static/images/360-logos/registry/360registry-color.png differ
diff --git a/registry/static/images/360-logos/registry/360registry-color.svg b/registry/static/images/360-logos/registry/360registry-color.svg
new file mode 100644
index 0000000..699480a
--- /dev/null
+++ b/registry/static/images/360-logos/registry/360registry-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/registry/360registry-color@4x.png b/registry/static/images/360-logos/registry/360registry-color@4x.png
new file mode 100644
index 0000000..e7edf03
Binary files /dev/null and b/registry/static/images/360-logos/registry/360registry-color@4x.png differ
diff --git a/registry/static/images/360-logos/registry/360registry-white.pdf b/registry/static/images/360-logos/registry/360registry-white.pdf
new file mode 100644
index 0000000..a298ddf
Binary files /dev/null and b/registry/static/images/360-logos/registry/360registry-white.pdf differ
diff --git a/registry/static/images/360-logos/registry/360registry-white.png b/registry/static/images/360-logos/registry/360registry-white.png
new file mode 100644
index 0000000..132568c
Binary files /dev/null and b/registry/static/images/360-logos/registry/360registry-white.png differ
diff --git a/registry/static/images/360-logos/registry/360registry-white.svg b/registry/static/images/360-logos/registry/360registry-white.svg
new file mode 100644
index 0000000..66d8de6
--- /dev/null
+++ b/registry/static/images/360-logos/registry/360registry-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/registry/360registry-white@4x.png b/registry/static/images/360-logos/registry/360registry-white@4x.png
new file mode 100644
index 0000000..7370c3a
Binary files /dev/null and b/registry/static/images/360-logos/registry/360registry-white@4x.png differ
diff --git a/registry/static/images/360-logos/resources/360resources-color.pdf b/registry/static/images/360-logos/resources/360resources-color.pdf
new file mode 100644
index 0000000..60fd546
Binary files /dev/null and b/registry/static/images/360-logos/resources/360resources-color.pdf differ
diff --git a/registry/static/images/360-logos/resources/360resources-color.png b/registry/static/images/360-logos/resources/360resources-color.png
new file mode 100644
index 0000000..bb1614c
Binary files /dev/null and b/registry/static/images/360-logos/resources/360resources-color.png differ
diff --git a/registry/static/images/360-logos/resources/360resources-color.svg b/registry/static/images/360-logos/resources/360resources-color.svg
new file mode 100644
index 0000000..2a1b82f
--- /dev/null
+++ b/registry/static/images/360-logos/resources/360resources-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/resources/360resources-color@4x.png b/registry/static/images/360-logos/resources/360resources-color@4x.png
new file mode 100644
index 0000000..381232a
Binary files /dev/null and b/registry/static/images/360-logos/resources/360resources-color@4x.png differ
diff --git a/registry/static/images/360-logos/resources/360resources-white.pdf b/registry/static/images/360-logos/resources/360resources-white.pdf
new file mode 100644
index 0000000..dbeb712
Binary files /dev/null and b/registry/static/images/360-logos/resources/360resources-white.pdf differ
diff --git a/registry/static/images/360-logos/resources/360resources-white.png b/registry/static/images/360-logos/resources/360resources-white.png
new file mode 100644
index 0000000..205092b
Binary files /dev/null and b/registry/static/images/360-logos/resources/360resources-white.png differ
diff --git a/registry/static/images/360-logos/resources/360resources-white.svg b/registry/static/images/360-logos/resources/360resources-white.svg
new file mode 100644
index 0000000..518703a
--- /dev/null
+++ b/registry/static/images/360-logos/resources/360resources-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/resources/360resources-white@4x.png b/registry/static/images/360-logos/resources/360resources-white@4x.png
new file mode 100644
index 0000000..60b8e16
Binary files /dev/null and b/registry/static/images/360-logos/resources/360resources-white@4x.png differ
diff --git a/registry/static/images/360-logos/standard/360standard-color.pdf b/registry/static/images/360-logos/standard/360standard-color.pdf
new file mode 100644
index 0000000..b46a7fa
Binary files /dev/null and b/registry/static/images/360-logos/standard/360standard-color.pdf differ
diff --git a/registry/static/images/360-logos/standard/360standard-color.png b/registry/static/images/360-logos/standard/360standard-color.png
new file mode 100644
index 0000000..062ed26
Binary files /dev/null and b/registry/static/images/360-logos/standard/360standard-color.png differ
diff --git a/registry/static/images/360-logos/standard/360standard-color.svg b/registry/static/images/360-logos/standard/360standard-color.svg
new file mode 100644
index 0000000..1f3ca73
--- /dev/null
+++ b/registry/static/images/360-logos/standard/360standard-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/standard/360standard-color@4x.png b/registry/static/images/360-logos/standard/360standard-color@4x.png
new file mode 100644
index 0000000..152dc8b
Binary files /dev/null and b/registry/static/images/360-logos/standard/360standard-color@4x.png differ
diff --git a/registry/static/images/360-logos/standard/360standard-white.pdf b/registry/static/images/360-logos/standard/360standard-white.pdf
new file mode 100644
index 0000000..c181e65
Binary files /dev/null and b/registry/static/images/360-logos/standard/360standard-white.pdf differ
diff --git a/registry/static/images/360-logos/standard/360standard-white.png b/registry/static/images/360-logos/standard/360standard-white.png
new file mode 100644
index 0000000..b062c30
Binary files /dev/null and b/registry/static/images/360-logos/standard/360standard-white.png differ
diff --git a/registry/static/images/360-logos/standard/360standard-white.svg b/registry/static/images/360-logos/standard/360standard-white.svg
new file mode 100644
index 0000000..36d9d47
--- /dev/null
+++ b/registry/static/images/360-logos/standard/360standard-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/360-logos/standard/360standard-white@4x.png b/registry/static/images/360-logos/standard/360standard-white@4x.png
new file mode 100644
index 0000000..cb66976
Binary files /dev/null and b/registry/static/images/360-logos/standard/360standard-white@4x.png differ
diff --git a/registry/static/images/360-registry-logo.svg b/registry/static/images/360-registry-logo.svg
new file mode 100644
index 0000000..d7e314f
--- /dev/null
+++ b/registry/static/images/360-registry-logo.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Registry
+
+
\ No newline at end of file
diff --git a/registry/static/images/360-resources-logo.svg b/registry/static/images/360-resources-logo.svg
new file mode 100644
index 0000000..0e311d3
--- /dev/null
+++ b/registry/static/images/360-resources-logo.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/registry/static/images/colors@4x-100.jpg b/registry/static/images/colors@4x-100.jpg
new file mode 100644
index 0000000..e216713
Binary files /dev/null and b/registry/static/images/colors@4x-100.jpg differ
diff --git a/registry/static/images/creative-commons.svg b/registry/static/images/creative-commons.svg
new file mode 100644
index 0000000..f994e28
--- /dev/null
+++ b/registry/static/images/creative-commons.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/favicon/android-icon-144x144.png b/registry/static/images/favicon/android-icon-144x144.png
new file mode 100644
index 0000000..eecdfa3
Binary files /dev/null and b/registry/static/images/favicon/android-icon-144x144.png differ
diff --git a/registry/static/images/favicon/android-icon-192x192.png b/registry/static/images/favicon/android-icon-192x192.png
new file mode 100644
index 0000000..0af5bd8
Binary files /dev/null and b/registry/static/images/favicon/android-icon-192x192.png differ
diff --git a/registry/static/images/favicon/android-icon-36x36.png b/registry/static/images/favicon/android-icon-36x36.png
new file mode 100644
index 0000000..77fd6a3
Binary files /dev/null and b/registry/static/images/favicon/android-icon-36x36.png differ
diff --git a/registry/static/images/favicon/android-icon-48x48.png b/registry/static/images/favicon/android-icon-48x48.png
new file mode 100644
index 0000000..b185061
Binary files /dev/null and b/registry/static/images/favicon/android-icon-48x48.png differ
diff --git a/registry/static/images/favicon/android-icon-72x72.png b/registry/static/images/favicon/android-icon-72x72.png
new file mode 100644
index 0000000..a67982c
Binary files /dev/null and b/registry/static/images/favicon/android-icon-72x72.png differ
diff --git a/registry/static/images/favicon/android-icon-96x96.png b/registry/static/images/favicon/android-icon-96x96.png
new file mode 100644
index 0000000..1eab35b
Binary files /dev/null and b/registry/static/images/favicon/android-icon-96x96.png differ
diff --git a/registry/static/images/favicon/apple-icon-114x114.png b/registry/static/images/favicon/apple-icon-114x114.png
new file mode 100644
index 0000000..63654e5
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-114x114.png differ
diff --git a/registry/static/images/favicon/apple-icon-120x120.png b/registry/static/images/favicon/apple-icon-120x120.png
new file mode 100644
index 0000000..3d8157c
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-120x120.png differ
diff --git a/registry/static/images/favicon/apple-icon-144x144.png b/registry/static/images/favicon/apple-icon-144x144.png
new file mode 100644
index 0000000..eecdfa3
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-144x144.png differ
diff --git a/registry/static/images/favicon/apple-icon-152x152.png b/registry/static/images/favicon/apple-icon-152x152.png
new file mode 100644
index 0000000..74ff946
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-152x152.png differ
diff --git a/registry/static/images/favicon/apple-icon-180x180.png b/registry/static/images/favicon/apple-icon-180x180.png
new file mode 100644
index 0000000..09659b4
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-180x180.png differ
diff --git a/registry/static/images/favicon/apple-icon-57x57.png b/registry/static/images/favicon/apple-icon-57x57.png
new file mode 100644
index 0000000..7206ca3
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-57x57.png differ
diff --git a/registry/static/images/favicon/apple-icon-60x60.png b/registry/static/images/favicon/apple-icon-60x60.png
new file mode 100644
index 0000000..89d6a74
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-60x60.png differ
diff --git a/registry/static/images/favicon/apple-icon-72x72.png b/registry/static/images/favicon/apple-icon-72x72.png
new file mode 100644
index 0000000..a67982c
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-72x72.png differ
diff --git a/registry/static/images/favicon/apple-icon-76x76.png b/registry/static/images/favicon/apple-icon-76x76.png
new file mode 100644
index 0000000..29545ce
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-76x76.png differ
diff --git a/registry/static/images/favicon/apple-icon-precomposed.png b/registry/static/images/favicon/apple-icon-precomposed.png
new file mode 100644
index 0000000..b4addc1
Binary files /dev/null and b/registry/static/images/favicon/apple-icon-precomposed.png differ
diff --git a/registry/static/images/favicon/apple-icon.png b/registry/static/images/favicon/apple-icon.png
new file mode 100644
index 0000000..b4addc1
Binary files /dev/null and b/registry/static/images/favicon/apple-icon.png differ
diff --git a/registry/static/images/favicon/browserconfig.xml b/registry/static/images/favicon/browserconfig.xml
new file mode 100644
index 0000000..c554148
--- /dev/null
+++ b/registry/static/images/favicon/browserconfig.xml
@@ -0,0 +1,2 @@
+
+#ffffff
\ No newline at end of file
diff --git a/registry/static/images/favicon/favicon-16x16.png b/registry/static/images/favicon/favicon-16x16.png
new file mode 100644
index 0000000..ef6c58f
Binary files /dev/null and b/registry/static/images/favicon/favicon-16x16.png differ
diff --git a/registry/static/images/favicon/favicon-32x32.png b/registry/static/images/favicon/favicon-32x32.png
new file mode 100644
index 0000000..b118741
Binary files /dev/null and b/registry/static/images/favicon/favicon-32x32.png differ
diff --git a/registry/static/images/favicon/favicon-96x96.png b/registry/static/images/favicon/favicon-96x96.png
new file mode 100644
index 0000000..1eab35b
Binary files /dev/null and b/registry/static/images/favicon/favicon-96x96.png differ
diff --git a/registry/static/images/favicon/favicon.ico b/registry/static/images/favicon/favicon.ico
new file mode 100644
index 0000000..ea8261d
Binary files /dev/null and b/registry/static/images/favicon/favicon.ico differ
diff --git a/registry/static/images/favicon/manifest.json b/registry/static/images/favicon/manifest.json
new file mode 100644
index 0000000..013d4a6
--- /dev/null
+++ b/registry/static/images/favicon/manifest.json
@@ -0,0 +1,41 @@
+{
+ "name": "App",
+ "icons": [
+ {
+ "src": "\/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ },
+ {
+ "src": "\/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "\/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "\/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "\/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "\/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/registry/static/images/favicon/ms-icon-144x144.png b/registry/static/images/favicon/ms-icon-144x144.png
new file mode 100644
index 0000000..eecdfa3
Binary files /dev/null and b/registry/static/images/favicon/ms-icon-144x144.png differ
diff --git a/registry/static/images/favicon/ms-icon-150x150.png b/registry/static/images/favicon/ms-icon-150x150.png
new file mode 100644
index 0000000..811d911
Binary files /dev/null and b/registry/static/images/favicon/ms-icon-150x150.png differ
diff --git a/registry/static/images/favicon/ms-icon-310x310.png b/registry/static/images/favicon/ms-icon-310x310.png
new file mode 100644
index 0000000..1350ace
Binary files /dev/null and b/registry/static/images/favicon/ms-icon-310x310.png differ
diff --git a/registry/static/images/favicon/ms-icon-70x70.png b/registry/static/images/favicon/ms-icon-70x70.png
new file mode 100644
index 0000000..2ef31d3
Binary files /dev/null and b/registry/static/images/favicon/ms-icon-70x70.png differ
diff --git a/registry/static/images/files/csv.png b/registry/static/images/files/csv.png
new file mode 100644
index 0000000..553944c
Binary files /dev/null and b/registry/static/images/files/csv.png differ
diff --git a/registry/static/images/files/excel.png b/registry/static/images/files/excel.png
new file mode 100644
index 0000000..c984dd9
Binary files /dev/null and b/registry/static/images/files/excel.png differ
diff --git a/registry/static/images/files/file.png b/registry/static/images/files/file.png
new file mode 100644
index 0000000..1401a57
Binary files /dev/null and b/registry/static/images/files/file.png differ
diff --git a/registry/static/images/files/json.png b/registry/static/images/files/json.png
new file mode 100644
index 0000000..e2ada4f
Binary files /dev/null and b/registry/static/images/files/json.png differ
diff --git a/registry/static/images/files/xlsx.png b/registry/static/images/files/xlsx.png
new file mode 100644
index 0000000..c984dd9
Binary files /dev/null and b/registry/static/images/files/xlsx.png differ
diff --git a/registry/static/images/github-logo.svg b/registry/static/images/github-logo.svg
new file mode 100644
index 0000000..b70e13b
--- /dev/null
+++ b/registry/static/images/github-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/icon-json.svg b/registry/static/images/icon-json.svg
new file mode 100644
index 0000000..71ec8a9
--- /dev/null
+++ b/registry/static/images/icon-json.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/icon-spreadsheet.svg b/registry/static/images/icon-spreadsheet.svg
new file mode 100644
index 0000000..ffd4faa
--- /dev/null
+++ b/registry/static/images/icon-spreadsheet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/licenses/Cc-nc.svg b/registry/static/images/licenses/Cc-nc.svg
new file mode 100644
index 0000000..4983852
--- /dev/null
+++ b/registry/static/images/licenses/Cc-nc.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/registry/static/images/licenses/Cc-nd.svg b/registry/static/images/licenses/Cc-nd.svg
new file mode 100644
index 0000000..137a957
--- /dev/null
+++ b/registry/static/images/licenses/Cc-nd.svg
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/registry/static/images/licenses/Cc-public_domain_mark_white.svg b/registry/static/images/licenses/Cc-public_domain_mark_white.svg
new file mode 100644
index 0000000..94b4582
--- /dev/null
+++ b/registry/static/images/licenses/Cc-public_domain_mark_white.svg
@@ -0,0 +1,59 @@
+
+
+
+image/svg+xml
+
+
\ No newline at end of file
diff --git a/registry/static/images/licenses/Cc-sa.svg b/registry/static/images/licenses/Cc-sa.svg
new file mode 100644
index 0000000..412fbd3
--- /dev/null
+++ b/registry/static/images/licenses/Cc-sa.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/registry/static/images/licenses/Cc-zero.svg b/registry/static/images/licenses/Cc-zero.svg
new file mode 100644
index 0000000..6ed7c18
--- /dev/null
+++ b/registry/static/images/licenses/Cc-zero.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/registry/static/images/licenses/UKOpenGovernmentLicence.svg b/registry/static/images/licenses/UKOpenGovernmentLicence.svg
new file mode 100644
index 0000000..03f7c89
--- /dev/null
+++ b/registry/static/images/licenses/UKOpenGovernmentLicence.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/registry/static/images/licenses/creative-commons-main.svg b/registry/static/images/licenses/creative-commons-main.svg
new file mode 100644
index 0000000..3aa226d
--- /dev/null
+++ b/registry/static/images/licenses/creative-commons-main.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/registry/static/images/licenses/logo-ogl.png b/registry/static/images/licenses/logo-ogl.png
new file mode 100644
index 0000000..808a598
Binary files /dev/null and b/registry/static/images/licenses/logo-ogl.png differ
diff --git a/registry/static/images/licenses/pddl.svg b/registry/static/images/licenses/pddl.svg
new file mode 100644
index 0000000..532f646
--- /dev/null
+++ b/registry/static/images/licenses/pddl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/static/images/logos/360_logo.png b/registry/static/images/logos/360_logo.png
new file mode 100644
index 0000000..03bbc41
Binary files /dev/null and b/registry/static/images/logos/360_logo.png differ
diff --git a/registry/static/images/logos/360_logo_invert.png b/registry/static/images/logos/360_logo_invert.png
new file mode 100644
index 0000000..c6e200a
Binary files /dev/null and b/registry/static/images/logos/360_logo_invert.png differ
diff --git a/registry/static/images/logos/favicon.ico b/registry/static/images/logos/favicon.ico
new file mode 100644
index 0000000..6ac2c2d
Binary files /dev/null and b/registry/static/images/logos/favicon.ico differ
diff --git a/registry/static/images/screenshot-1.jpg b/registry/static/images/screenshot-1.jpg
new file mode 100644
index 0000000..aaa5420
Binary files /dev/null and b/registry/static/images/screenshot-1.jpg differ
diff --git a/registry/static/images/spacing@4x-100.jpg b/registry/static/images/spacing@4x-100.jpg
new file mode 100644
index 0000000..653c030
Binary files /dev/null and b/registry/static/images/spacing@4x-100.jpg differ
diff --git a/registry/static/images/twitter-logo.svg b/registry/static/images/twitter-logo.svg
new file mode 100644
index 0000000..8f6f49a
--- /dev/null
+++ b/registry/static/images/twitter-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/registry/tests/__init__.py b/registry/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/registry/tests/fixtures/__init__.py b/registry/tests/fixtures/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/registry/tests/fixtures/test_salesforce.py b/registry/tests/fixtures/test_salesforce.py
new file mode 100644
index 0000000..582acd2
--- /dev/null
+++ b/registry/tests/fixtures/test_salesforce.py
@@ -0,0 +1,289 @@
+from collections import OrderedDict
+
+API_OUTPUT = OrderedDict(
+ [
+ ("totalSize", 3),
+ ("done", True),
+ (
+ "records",
+ [
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "Dataset__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/Dataset__c/a001p00000zgyHZAAY",
+ ),
+ ]
+ ),
+ ),
+ ("Id", "a001p00000zgyHZAAY"),
+ (
+ "Name",
+ "Open Programme grants awarded from 2015 until February 2018",
+ ),
+ (
+ "License__r",
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "License__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/License__c/a0E2400000OdvyCEAR",
+ ),
+ ]
+ ),
+ ),
+ (
+ "Name",
+ "Creative Commons Attribution 4.0 International (CC BY 4.0)",
+ ),
+ (
+ "URL__c",
+ "https://creativecommons.org/licenses/by/4.0/",
+ ),
+ ]
+ ),
+ ),
+ ("Access_URL__c", "http://abcharitabletrust.org.uk/awards.htm"),
+ ("Description__c", None),
+ (
+ "Download_URL__c",
+ "http://abcharitabletrust.org.uk/data/abct-data-february-2018.xlsx",
+ ),
+ (
+ "Account__r",
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "Account"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/Account/0012400001HexUjAAJ",
+ ),
+ ]
+ ),
+ ),
+ ("Id", "0012400001HexUjAAJ"),
+ ("Logo__c", None),
+ ("Name", "A B Charitable Trust"),
+ ("Website", "http://abcharitabletrust.org.uk/"),
+ ("prefix__c", "360G-ABCT"),
+ ("Last_published_date__c", "2021-12-13"),
+ ("Last_published_date__c", "2021-12-13"),
+ ("Org_Identifier__c", "GB-CHC-1000147"),
+ ]
+ ),
+ ),
+ ("Date_First_Published__c", "2018-06-21"),
+ ("LastModifiedDate", "2018-08-03T10:26:35.000+0000"),
+ ("Approved__c", True),
+ ]
+ ),
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "Dataset__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/Dataset__c/a002400000p1DloAAE",
+ ),
+ ]
+ ),
+ ),
+ ("Id", "a002400000p1DloAAE"),
+ ("Name", "Arcadia Fund grants awarded to April 2018"),
+ (
+ "License__r",
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "License__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/License__c/a0E2400000OdvyCEAR",
+ ),
+ ]
+ ),
+ ),
+ (
+ "Name",
+ "Creative Commons Attribution 4.0 International (CC BY 4.0)",
+ ),
+ (
+ "URL__c",
+ "https://creativecommons.org/licenses/by/4.0/",
+ ),
+ ]
+ ),
+ ),
+ (
+ "Access_URL__c",
+ "https://www.arcadiafund.org.uk/grants/grant-directory/",
+ ),
+ ("Description__c", None),
+ (
+ "Download_URL__c",
+ "https://www.arcadiafund.org.uk/wp-content/uploads/2018/04/Arcadia-grants-360Giving-27-April-2018.xlsx",
+ ),
+ (
+ "Account__r",
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "Account"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/Account/00124000019TnbEAAS",
+ ),
+ ]
+ ),
+ ),
+ ("Id", "00124000019TnbEAAS"),
+ (
+ "Logo__c",
+ "http://www.threesixtygiving.org/wp-content/uploads/Arcadia-Logo.jpg",
+ ),
+ ("Name", "ARCADIA"),
+ ("Website", "https://www.arcadiafund.org.uk/"),
+ ("prefix__c", "360G-ArcadiaFund"),
+ ("Last_published_date__c", "2021-11-10"),
+ ]
+ ),
+ ),
+ ("Date_First_Published__c", "2017-08-31"),
+ ("LastModifiedDate", "2018-08-03T10:26:31.000+0000"),
+ ("Approved__c", False),
+ ]
+ ),
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "Dataset__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/Dataset__c/a002400000g3STDAA2",
+ ),
+ ]
+ ),
+ ),
+ ("Id", "a002400000g3STDAA2"),
+ ("Name", "Grants awarded since April 2012"),
+ (
+ "License__r",
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "License__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/License__c/a0E2400000OdvyCEAR",
+ ),
+ ]
+ ),
+ ),
+ (
+ "Name",
+ "Creative Commons Attribution 4.0 International (CC BY 4.0)",
+ ),
+ (
+ "URL__c",
+ "https://creativecommons.org/licenses/by/4.0/",
+ ),
+ ]
+ ),
+ ),
+ (
+ "Access_URL__c",
+ "https://www.barrowcadbury.org.uk/what-we-do/funded-work/",
+ ),
+ (
+ "Description__c",
+ "Barrow Cadbury Trust grants awarded since 2012",
+ ),
+ (
+ "Download_URL__c",
+ "https://www.barrowcadbury.org.uk/wp-content/uploads/2018/09/Copy-of-2018-07-360-Giving-revised.xlsx",
+ ),
+ (
+ "Account__r",
+ OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "Account"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/Account/0012400000jmuxuAAA",
+ ),
+ ]
+ ),
+ ),
+ ("Id", "0012400000jmuxuAAA"),
+ (
+ "Logo__c",
+ "https://www.threesixtygiving.org/wp-content/uploads/barrow-cadbury-trust.jpg",
+ ),
+ ("Name", "Barrow Cadbury Trust"),
+ ("Website", None),
+ ("prefix__c", "360G-barrowcadbury"),
+ ("Last_published_date__c", "2021-08-16"),
+ ]
+ ),
+ ),
+ ("Date_First_Published__c", "2017-03-23"),
+ ("LastModifiedDate", "2018-09-07T14:29:55.000+0000"),
+ ("Approved__c", True),
+ ]
+ ),
+ ],
+ ),
+ ]
+)
+
+LICENSE_OBJECT = OrderedDict(
+ [
+ (
+ "attributes",
+ OrderedDict(
+ [
+ ("type", "License__c"),
+ (
+ "url",
+ "/services/data/v38.0/sobjects/License__c/a0E2400000OdvyCEAR",
+ ),
+ ]
+ ),
+ ),
+ ("Name", "Creative Commons Attribution 4.0 International (CC BY 4.0)"),
+ ("URL__c", "https://creativecommons.org/licenses/by/4.0/"),
+ ]
+)
diff --git a/registry/tests/test_salesforce.py b/registry/tests/test_salesforce.py
new file mode 100644
index 0000000..64bf9f1
--- /dev/null
+++ b/registry/tests/test_salesforce.py
@@ -0,0 +1,71 @@
+from salesforce.salesforce import clean_output, clean_object
+from django.test import TestCase
+from tests.fixtures.test_salesforce import API_OUTPUT, LICENSE_OBJECT
+
+
+class SalesforceTest(TestCase):
+ def test_only_returns_approved_datasets(self):
+ response = clean_output(API_OUTPUT)
+
+ assert len(response) == 2
+ publishers = [
+ response[0]["publisher"]["name"],
+ response[1]["publisher"]["name"],
+ ]
+ assert "A B Charitable Trust" in publishers
+ assert "ARCADIA" not in publishers
+ assert "Barrow Cadbury Trust" in publishers
+
+ def test_correct_output(self):
+ response = clean_output(API_OUTPUT)[0]
+
+ expected_response = {
+ "title": "Open Programme grants awarded from 2015 until February 2018",
+ "description": "",
+ "identifier": "a001p00000zgyHZAAY",
+ "license": "https://creativecommons.org/licenses/by/4.0/",
+ "license_name": "Creative Commons Attribution 4.0 International (CC BY 4.0)",
+ "issued": "2018-06-21",
+ "modified": "2018-08-03T10:26:35.000+0000",
+ "publisher": {
+ "name": "A B Charitable Trust",
+ "website": "http://abcharitabletrust.org.uk/",
+ "logo": "",
+ "prefix": "360G-ABCT",
+ "last_published": "2021-12-13",
+ "org_id": "GB-CHC-1000147",
+ },
+ "distribution": [
+ {
+ "downloadURL": "http://abcharitabletrust.org.uk/data/abct-data-february-2018.xlsx",
+ "accessURL": "http://abcharitabletrust.org.uk/awards.htm",
+ "title": "Open Programme grants awarded from 2015 until February 2018",
+ }
+ ],
+ }
+
+ assert len(response) == 9
+ assert response == expected_response
+
+ def test_description_returns_empty_string_if_none(self):
+ response = clean_output(API_OUTPUT)[0]
+
+ assert response["description"] == ""
+
+ def test_logo_returns_empty_string_if_none(self):
+ response = clean_output(API_OUTPUT)[0]
+
+ assert response["publisher"]["logo"] == ""
+
+ def test_website_returns_empty_string_if_none(self):
+ response = clean_output(API_OUTPUT)[1]
+
+ assert response["publisher"]["website"] == ""
+
+ def test_clean_object(self):
+ response = clean_object(LICENSE_OBJECT)
+
+ assert response == {
+ "name": "Creative Commons Attribution 4.0 International (CC BY 4.0)",
+ "uRL": "https://creativecommons.org/licenses/by/4.0/",
+ }
diff --git a/registry/tests/test_views.py b/registry/tests/test_views.py
new file mode 100644
index 0000000..7dbf3c8
--- /dev/null
+++ b/registry/tests/test_views.py
@@ -0,0 +1,38 @@
+from django.test import LiveServerTestCase
+from django.urls import reverse_lazy
+
+
+class TestViewsRespond(LiveServerTestCase):
+ def test_views(self):
+ urls = [
+ reverse_lazy("ui:index"),
+ reverse_lazy("data"),
+ reverse_lazy("publishers"),
+ ]
+
+ for url in urls:
+ response = self.client.get(url)
+ self.assertEqual(
+ response.status_code, 200, f"Url {url} did not return a 200 response"
+ )
+
+ def test_json_length(self):
+ response = self.client.get(reverse_lazy("data"))
+ data = response.json()
+
+ # There are currently 601 datasets 28/02/2024
+ self.assertTrue(len(data) > 600)
+
+ # Check these keys are in at least the first item
+ for key in [
+ "title",
+ "description",
+ "identifier",
+ "license",
+ "license_name",
+ "issued",
+ "modified",
+ "publisher",
+ "distribution",
+ ]:
+ self.assertIn(key, data[0].keys())
diff --git a/registry/ui/__init__.py b/registry/ui/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/registry/ui/apps.py b/registry/ui/apps.py
new file mode 100644
index 0000000..f847789
--- /dev/null
+++ b/registry/ui/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class UiConfig(AppConfig):
+ name = "ui"
diff --git a/registry/ui/asgi.py b/registry/ui/asgi.py
new file mode 100644
index 0000000..931e977
--- /dev/null
+++ b/registry/ui/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for registry 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/4.2/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "registry.settings")
+
+application = get_asgi_application()
diff --git a/registry/ui/templates/index.html b/registry/ui/templates/index.html
new file mode 100644
index 0000000..84b6507
--- /dev/null
+++ b/registry/ui/templates/index.html
@@ -0,0 +1,389 @@
+{% load static %}
+
+
+
+
+
+
+
+
+
+
+ Data Registry | 360Giving
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ There are {{data|length}} datasets published in the 360Giving Data Standard.
+
+
+
+ Looking to explore the grants data by location, sector or recipient? Head to
+ GrantNav .
+
+
+
+ Looking to build tools or do research with the data?
+ Use our JSON feed .
+
+
+ Want to publish your grants data openly with the 360Giving standard? Visit our
+ support page or
+ get in touch .
+
+
+
+
+
+
+
+
+ {% for data in data %}
+
+
+
+
+
+
+ {{data.publisher.name}}
+
+
+
+
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Yes
+ No
+ Disable Analytics
+
+
360Giving uses privacy-respecting analytics. If you don't accept cookies, we will track only basic information about your visit. Click "Disable Analytics" if you don't want us to track at all.
+
+
+
+