From d00c6cceec9d9188a010d77d8b72fcfcb098228d Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 29 Apr 2024 11:57:44 +0200 Subject: [PATCH 001/216] Initial commit --- .gitignore | 12 ++++++++++++ Makefile | 21 +++++++++++++++++++++ README.rst | 13 +++++++++++++ pyproject.toml | 27 +++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.rst create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..776a3b475 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.* + +*.egg +*.egg-info +*.py[cio] +*.sw? + +__pycache__/ +build/ +dist/ + +!.gitignore diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..a0219489d --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +.PHONY: clean testclean distclean coverageclean nuke + +clean: + -find . -name __pycache__ -print0 | xargs -0 rm -rf + -find . -name "*.pyc" -print0 | xargs -0 rm -rf + -find . -name "*.egg-info" -print0 | xargs -0 rm -rf + +distclean: + -rm -rf ./dist + -rm -rf ./build + +coverageclean: + -rm .coverage + -rm .coverage.* + -rm coverage.xml + -rm -rf htmlcov + +testclean: coverageclean clean + -rm -rf .tox + +nuke: clean distclean testclean diff --git a/README.rst b/README.rst new file mode 100644 index 000000000..44021e088 --- /dev/null +++ b/README.rst @@ -0,0 +1,13 @@ +=================== +argus-HTMx-frontend +=================== + +Experimental frontend for `argus-server`_ as a django app. + +Will possibly cease to exist as a separate app if the experiment is deemed +successful. + +See `argus-server`_ for more. + + +.. _argus-server: https://github.com/Uninett/Argus diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..a03958c0d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,27 @@ +[build-system] +requires = ["flit_core >=3.2,<4"] +build-backend = "flit_core.buildapi" + +[project] +description = "HTTP Frontend as a django app for argus-server using HTMx" +name = "argus_htmx" +readme = "README.rst" +authors = [{name = "Hanne Moa", email = "hanne.moa@sikt.no"}] +requires-python = ">=3.8" +classifiers = [ + "Framework :: Django", + "Framework :: Django :: 4.2", + "Programming Language :: Python :: 3 :: Only", + "Environment :: Web Environment", +] +dynamic = ["version"] +dependencies = [ + "argus-server", + "django-htmx", +] + +[project.urls] +Github = "https://github.com/Uninett/argus-htmx-frontend" + +[project.optional-dependencies] +docs = ["sphinx"] From 9280888878bd08d599d4cbbf5ec228433f758cf6 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 29 Apr 2024 12:00:02 +0200 Subject: [PATCH 002/216] Moved from argus-server, experimental branch --- src/argus_htmx/__init__.py | 0 src/argus_htmx/admin.py | 3 ++ src/argus_htmx/apps.py | 7 +++ src/argus_htmx/migrations/__init__.py | 0 src/argus_htmx/models.py | 3 ++ src/argus_htmx/templates/base.html | 17 +++++++ src/argus_htmx/templates/htmx/base.html | 7 +++ .../htmx/incidents/_incident_description.html | 1 + .../htmx/incidents/_incident_pk.html | 1 + .../htmx/incidents/_incident_row.html | 14 ++++++ .../htmx/incidents/_incident_start_time.html | 1 + .../htmx/incidents/incident_detail.html | 44 +++++++++++++++++++ .../templates/htmx/incidents/list.html | 15 +++++++ src/argus_htmx/tests.py | 3 ++ src/argus_htmx/urls.py | 10 +++++ src/argus_htmx/views.py | 39 ++++++++++++++++ 16 files changed, 165 insertions(+) create mode 100644 src/argus_htmx/__init__.py create mode 100644 src/argus_htmx/admin.py create mode 100644 src/argus_htmx/apps.py create mode 100644 src/argus_htmx/migrations/__init__.py create mode 100644 src/argus_htmx/models.py create mode 100644 src/argus_htmx/templates/base.html create mode 100644 src/argus_htmx/templates/htmx/base.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_description.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_pk.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_row.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_start_time.html create mode 100644 src/argus_htmx/templates/htmx/incidents/incident_detail.html create mode 100644 src/argus_htmx/templates/htmx/incidents/list.html create mode 100644 src/argus_htmx/tests.py create mode 100644 src/argus_htmx/urls.py create mode 100644 src/argus_htmx/views.py diff --git a/src/argus_htmx/__init__.py b/src/argus_htmx/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/admin.py b/src/argus_htmx/admin.py new file mode 100644 index 000000000..8c38f3f3d --- /dev/null +++ b/src/argus_htmx/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/src/argus_htmx/apps.py b/src/argus_htmx/apps.py new file mode 100644 index 000000000..92120760b --- /dev/null +++ b/src/argus_htmx/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig + + +class HtmxFrontendConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + label = "argus_htmx" + name = "argus_htmx" diff --git a/src/argus_htmx/migrations/__init__.py b/src/argus_htmx/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/models.py b/src/argus_htmx/models.py new file mode 100644 index 000000000..71a836239 --- /dev/null +++ b/src/argus_htmx/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/src/argus_htmx/templates/base.html b/src/argus_htmx/templates/base.html new file mode 100644 index 000000000..50a363847 --- /dev/null +++ b/src/argus_htmx/templates/base.html @@ -0,0 +1,17 @@ +{% load static %} + + + + + Argus Server: {{ page_title }} + + {% block head %} + {% endblock head %} + + +

Argus Server: {{ page_title }}

+ {% block main %} + {% endblock main %} + {% block tail %}{% endblock tail %} + + diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html new file mode 100644 index 000000000..703b4e8d1 --- /dev/null +++ b/src/argus_htmx/templates/htmx/base.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block head %} + +{% endblock head %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_description.html b/src/argus_htmx/templates/htmx/incidents/_incident_description.html new file mode 100644 index 000000000..1cdd1d3cb --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_description.html @@ -0,0 +1 @@ +{{ incident.description }} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_pk.html b/src/argus_htmx/templates/htmx/incidents/_incident_pk.html new file mode 100644 index 000000000..6fb14aa51 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_pk.html @@ -0,0 +1 @@ +{{ incident.pk }} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_row.html new file mode 100644 index 000000000..f73932066 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_row.html @@ -0,0 +1,14 @@ +
  • + HTMX-app + + {% block incident_pk %} + {% include "htmx/incidents/_incident_pk.html" %} + {% endblock %} + {% block start_time %} + {% include "htmx/incidents/_incident_start_time.html" %} + {% endblock %} + {% block description %} + {% include "htmx/incidents/_incident_description.html" %} + {% endblock %} + +
  • diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_start_time.html b/src/argus_htmx/templates/htmx/incidents/_incident_start_time.html new file mode 100644 index 000000000..721f2a5c9 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_start_time.html @@ -0,0 +1 @@ +{{ incident.start_time }} diff --git a/src/argus_htmx/templates/htmx/incidents/incident_detail.html b/src/argus_htmx/templates/htmx/incidents/incident_detail.html new file mode 100644 index 000000000..d9bc73ac3 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/incident_detail.html @@ -0,0 +1,44 @@ +{% extends "htmx/base.html" %} + +{% block main %} +

    {{ incident.pk }}: {{ incident.description }}

    + +{% block incident_detail %} +
    +

    Status

    +

    +{{ incident.level }} +{{ incident.is_open }} +{{ incident.ticket_url }} +

    +
    + +
    +

    Tags

    +

    +{{ incident.level }} +{{ incident.is_open }} +{{ incident.ticket_url }} +

    +
    + +
    +

    Primary details #{{ incident.pk }}

    + +

    Description

    +

    {{ incident.description }}

    + +

    Start time

    +

    {{ incident.start_time }}

    + +

    Source id

    +

    {{ incident.source_incident_id }}

    + +

    Details url

    +

    {{ incident.details_url }}

    + +

    Ticket url

    +

    {{ incident.ticket_url }}

    +
    +{% endblock incident_detail %} +{% endblock main %} diff --git a/src/argus_htmx/templates/htmx/incidents/list.html b/src/argus_htmx/templates/htmx/incidents/list.html new file mode 100644 index 000000000..8946f3124 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/list.html @@ -0,0 +1,15 @@ +{% extends "htmx/base.html" %} + +{% block main %} +Latest: {{ latest }} + +Total, all time: {{ qs|length }} +{% endblock main %} diff --git a/src/argus_htmx/tests.py b/src/argus_htmx/tests.py new file mode 100644 index 000000000..7ce503c2d --- /dev/null +++ b/src/argus_htmx/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py new file mode 100644 index 000000000..d18721d29 --- /dev/null +++ b/src/argus_htmx/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from . import views + + +app_name = "htmx" +urlpatterns = [ + path("incidents/", views.incidents, name="htmx_incidents"), + path("incidents//", views.incident_detail, name="htmx_incident_detail"), +] diff --git a/src/argus_htmx/views.py b/src/argus_htmx/views.py new file mode 100644 index 000000000..9e478f029 --- /dev/null +++ b/src/argus_htmx/views.py @@ -0,0 +1,39 @@ +import logging + +from django.conf import settings +from django.shortcuts import render, reverse, get_object_or_404 + +from argus.incident.models import Incident + +LOG = logging.getLogger(__name__) + + +def incidents(request): + qs = Incident.objects.all().order_by("-start_time") + latest = qs.latest("start_time").start_time + context = { + "qs": qs, + "latest": latest, + "page_title": "Incidents", + } + return render(request, "htmx/incidents/list.html", context=context) + + +# fetch with htmx +def incident_row(request, pk: int): + incident = get_object_or_404(Incident, d=pk) + context = {"incident": incident} + return render(request, "htmx/incidents/_incident_row.html", context=context) + + +def incident_detail(request, pk: int): + incident = get_object_or_404(Incident, id=pk) + context = { + "incident": incident, + "page_title": str(incident), + } + return render(request, "htmx/incidents/incident_detail.html", context=context) + + +# +# incident.tags.key From ce582ad22025536fef8e499e8cf4a3ecc743173a Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 29 Apr 2024 13:32:36 +0200 Subject: [PATCH 003/216] Add installation and configuration instructions to README --- README.rst | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 44021e088..b3e1a2e98 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,63 @@ Experimental frontend for `argus-server`_ as a django app. Will possibly cease to exist as a separate app if the experiment is deemed successful. -See `argus-server`_ for more. +See `argus-server`_ for more abour argus. +Imports `django-htmx`_. See the `documentation for django-htmx`_ +for details. +How to play +=========== + +Install +------- + +To make sure you do not accidentally work on an old argus-server, do the following: + +1. Use/make a venv, for instance: create a new one with ``python -m venv argus-htmx`` +2. Check out argus-server code +3. Install argus-server dynamically into the venv: ``pip install -e .`` +4. Check out this repo +5. Install this app dynamically into the venv: ``pip install -e .`` + +It is now safe to remove argus-server from the venv if you feel like it. + +Configure +--------- + +Do this in your workdir, which could be the checked out `argus-server`_ repo. + +Django-style +~~~~~~~~~~~~ + +In your local settings that star-imports from an `argus-server`_ settings file:: + + INSTALLED_APPS += [ + "django_htmx", + "argus_htmx", + ] + ROOT_URLCONF = "urls.py" + MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] + +Next to ``localsettings.py`` create an ``urls.py`` containing:: + + from argus.site.urls import urlpatterns + + urlpatterns += [ + path("", include("argus_htmx.urls") + ] + +With EXTRA_APPS +~~~~~~~~~~~~~~~ + +In your environment variables:: + + ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"},{"app_name": "argus_htmx","urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}}]' + +In your local settings that star-imports from an `argus-server`_ settings file:: + + MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] + +.. _django-htmx: https://github.com/adamchainz/django-htmx .. _argus-server: https://github.com/Uninett/Argus +.. _documentation for django-htmx: https://django-htmx.readthedocs.io/en/latest/ From af0a9460be4b0b337d81278c1acdcfee4581707d Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 29 Apr 2024 13:55:11 +0200 Subject: [PATCH 004/216] Add version to argus_htmx.__init__ --- src/argus_htmx/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/argus_htmx/__init__.py b/src/argus_htmx/__init__.py index e69de29bb..a4e2017f0 100644 --- a/src/argus_htmx/__init__.py +++ b/src/argus_htmx/__init__.py @@ -0,0 +1 @@ +__version__ = "0.1" From d8e779020f1bf045529cf92afa48badc22c3c538 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 08:41:04 +0200 Subject: [PATCH 005/216] Namespace urls --- src/argus_htmx/templates/htmx/incidents/_incident_row.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_row.html index f73932066..c3da9cad3 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_row.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_row.html @@ -1,6 +1,6 @@
  • HTMX-app - + {% block incident_pk %} {% include "htmx/incidents/_incident_pk.html" %} {% endblock %} From 253bcabee3f7ebfea624c90ea39f069d9b48a5c0 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 10:26:08 +0200 Subject: [PATCH 006/216] Add status- and ack-column to incidents list --- .../templates/htmx/incidents/_incident_ack.html | 1 + src/argus_htmx/templates/htmx/incidents/_incident_pk.html | 2 +- .../templates/htmx/incidents/_incident_row.html | 8 ++++++-- .../templates/htmx/incidents/_incident_status.html | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_ack.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_status.html diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ack.html b/src/argus_htmx/templates/htmx/incidents/_incident_ack.html new file mode 100644 index 000000000..43a150cae --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ack.html @@ -0,0 +1 @@ +{% if incident.acked %}Acked{% else %}Unacked{% endif %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_pk.html b/src/argus_htmx/templates/htmx/incidents/_incident_pk.html index 6fb14aa51..65cd57aeb 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_pk.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_pk.html @@ -1 +1 @@ -{{ incident.pk }} +{{ incident.pk }} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_row.html index c3da9cad3..f5eb24594 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_row.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_row.html @@ -1,14 +1,18 @@
  • HTMX-app - {% block incident_pk %} {% include "htmx/incidents/_incident_pk.html" %} {% endblock %} + {% block status %} + {% include "htmx/incidents/_incident_status.html" %} + {% endblock %} + {% block acknowledgement %} + {% include "htmx/incidents/_incident_ack.html" %} + {% endblock %} {% block start_time %} {% include "htmx/incidents/_incident_start_time.html" %} {% endblock %} {% block description %} {% include "htmx/incidents/_incident_description.html" %} {% endblock %} -
  • diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_status.html b/src/argus_htmx/templates/htmx/incidents/_incident_status.html new file mode 100644 index 000000000..1ad4e5921 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_status.html @@ -0,0 +1 @@ +{% if incident.open %}Open{% else %}Closed{% endif %} From d57851337c98b8730f1ae9af1ac505102e8638f9 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 10:55:36 +0200 Subject: [PATCH 007/216] Get acks by clicking in ack column Allows for acking if authenticated. --- src/argus_htmx/forms.py | 6 +++ .../htmx/incidents/_incident_ack.html | 4 +- .../htmx/incidents/incident_add_ack.html | 39 +++++++++++++++++++ src/argus_htmx/urls.py | 1 + src/argus_htmx/views.py | 21 ++++++++-- 5 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 src/argus_htmx/forms.py create mode 100644 src/argus_htmx/templates/htmx/incidents/incident_add_ack.html diff --git a/src/argus_htmx/forms.py b/src/argus_htmx/forms.py new file mode 100644 index 000000000..510dc8283 --- /dev/null +++ b/src/argus_htmx/forms.py @@ -0,0 +1,6 @@ +from django import forms + +class AckForm(forms.Form): + description = forms.CharField() + expiration = forms.DateTimeField(required=False) + diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ack.html b/src/argus_htmx/templates/htmx/incidents/_incident_ack.html index 43a150cae..d8d5aaf49 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ack.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ack.html @@ -1 +1,3 @@ -{% if incident.acked %}Acked{% else %}Unacked{% endif %} + + {% if incident.acked %}Acked{% else %}Unacked{% endif %} + diff --git a/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html b/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html new file mode 100644 index 000000000..a614c64de --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html @@ -0,0 +1,39 @@ +{% extends "htmx/base.html" %} + +{% block main %} +

    Add ack

    + +{% block list_of_acks %} +
    +

    Acks

    +{% for ack in incident.acks %} +

    Description: {{ ack.event.description }}

    +

    Expiration: {{ ack.expiration }}

    +

    Acked by: {{ ack.event.actor }} +{% if ack.event.actor.groups.exists %} +

    Groups: +{% for group in ack.event.actor.groups.all %} +{{ group }} +{% endfor %} +

    +{% endif %} +

    +{% endfor %} +
    +{% endblock list_of_acks %} + +{% block add_ack %} +
    +

    Add ack

    +{% if request.user.is_authenticated %} +
    +{% csrf_token %} +{{ form }} + +
    +{% else %} +You need to Log in +{% endif %} +
    +{% endblock add_ack %} +{% endblock main %} diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index d18721d29..5d8f908a1 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -7,4 +7,5 @@ urlpatterns = [ path("incidents/", views.incidents, name="htmx_incidents"), path("incidents//", views.incident_detail, name="htmx_incident_detail"), + path("incidents//ack/", views.incident_add_ack, name="htmx-incident-add-ack"), ] diff --git a/src/argus_htmx/views.py b/src/argus_htmx/views.py index 9e478f029..bf450222b 100644 --- a/src/argus_htmx/views.py +++ b/src/argus_htmx/views.py @@ -5,6 +5,8 @@ from argus.incident.models import Incident +from .forms import AckForm + LOG = logging.getLogger(__name__) @@ -34,6 +36,19 @@ def incident_detail(request, pk: int): } return render(request, "htmx/incidents/incident_detail.html", context=context) - -# -# incident.tags.key +def incident_add_ack(request, pk: int): + incident = get_object_or_404(Incident, id=pk) + context = { + "form": AckForm, + "incident": incident, + "page_title": str(incident), + } + if request.POST: + form = AckForm(request.POST) + if form.is_valid(): + incident.create_ack( + request.user, + description=form.cleaned_data["description"], + expiration=form.cleaned_data["expiration"], + ) + return render(request, "htmx/incidents/incident_add_ack.html", context=context) From 529b83da817df4fc5370e23bce0c6ff7862ddfc7 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 12:25:42 +0200 Subject: [PATCH 008/216] Add group handling to incident_add_ack view --- src/argus_htmx/views.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/argus_htmx/views.py b/src/argus_htmx/views.py index bf450222b..9c58539ad 100644 --- a/src/argus_htmx/views.py +++ b/src/argus_htmx/views.py @@ -1,6 +1,9 @@ import logging +from typing import Optional from django.conf import settings +from django.contrib.auth.models import Group +from django.core.exceptions import PermissionDenied from django.shortcuts import render, reverse, get_object_or_404 from argus.incident.models import Incident @@ -36,14 +39,22 @@ def incident_detail(request, pk: int): } return render(request, "htmx/incidents/incident_detail.html", context=context) -def incident_add_ack(request, pk: int): +def incident_add_ack(request, pk: int, group: Optional[str] = None): incident = get_object_or_404(Incident, id=pk) + is_group_member = None + if group: + group = get_object_or_404(Group, name=group) + is_group_member = request.user.groups.filter(pk=group.pk).exists() context = { "form": AckForm, "incident": incident, "page_title": str(incident), + 'group': group, + 'is_group_member': is_group_member, } if request.POST: + if group and not is_group_member: + raise PermissionDenied("User {request.user} is not a member of the correct group") form = AckForm(request.POST) if form.is_valid(): incident.create_ack( From be2263b24c517d4484910ba602a541e0a5b0858f Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 13:12:41 +0200 Subject: [PATCH 009/216] Show tags in incident list and detail * Add "tagvalues" template tag. Needs SQL optimization. --- .../templates/htmx/incidents/_incident_row.html | 3 +++ .../templates/htmx/incidents/_incident_tag.html | 2 ++ .../templates/htmx/incidents/incident_detail.html | 6 +++--- src/argus_htmx/templatetags/__init__.py | 0 src/argus_htmx/templatetags/argus_htmx.py | 14 ++++++++++++++ 5 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_tag.html create mode 100644 src/argus_htmx/templatetags/__init__.py create mode 100644 src/argus_htmx/templatetags/argus_htmx.py diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_row.html index f5eb24594..25a2a8d5d 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_row.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_row.html @@ -9,6 +9,9 @@ {% block acknowledgement %} {% include "htmx/incidents/_incident_ack.html" %} {% endblock %} + {% block tag %} + {% include "htmx/incidents/_incident_tag.html" with tag="location" %} + {% endblock %} {% block start_time %} {% include "htmx/incidents/_incident_start_time.html" %} {% endblock %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_tag.html b/src/argus_htmx/templates/htmx/incidents/_incident_tag.html new file mode 100644 index 000000000..a997b34bc --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_tag.html @@ -0,0 +1,2 @@ +{% load argus_htmx %} +{{ incident|tagvalues:tag|first }} diff --git a/src/argus_htmx/templates/htmx/incidents/incident_detail.html b/src/argus_htmx/templates/htmx/incidents/incident_detail.html index d9bc73ac3..e0f85451f 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_detail.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_detail.html @@ -16,9 +16,9 @@

    Status

    Tags

    -{{ incident.level }} -{{ incident.is_open }} -{{ incident.ticket_url }} +{% for tag in incident.deprecated_tags %} +{{ tag }} +{% endfor %}

    diff --git a/src/argus_htmx/templatetags/__init__.py b/src/argus_htmx/templatetags/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/templatetags/argus_htmx.py b/src/argus_htmx/templatetags/argus_htmx.py new file mode 100644 index 000000000..4e8ce4be8 --- /dev/null +++ b/src/argus_htmx/templatetags/argus_htmx.py @@ -0,0 +1,14 @@ +from django import template + + +register = template.Library() + + +@register.filter +def tagvalues(incident, key) -> list: + """Return values of tags with key KEY for incident INCIDENT + + There can be multiple tags with the same key + """ + tags = incident.deprecated_tags + return [str(tag.value) for tag in tags] From f94713fe0c70ee4ccaf7a4f11a66c3260bcd4dc1 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 13:16:43 +0200 Subject: [PATCH 010/216] Improve incident detail level and status --- .../templates/htmx/incidents/incident_detail.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/argus_htmx/templates/htmx/incidents/incident_detail.html b/src/argus_htmx/templates/htmx/incidents/incident_detail.html index e0f85451f..67bbdb4a8 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_detail.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_detail.html @@ -7,9 +7,14 @@

    {{ incident.pk }}: {{ incident.description }}

    Status

    +{% if incident.open %}Open{% else %}Closed{% endif %} +

    +
    + +
    +

    Level

    +

    {{ incident.level }} -{{ incident.is_open }} -{{ incident.ticket_url }}

    From 655ca4fdfb4be0f3a0b20b4cd184a6269be0def0 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 14:25:41 +0200 Subject: [PATCH 011/216] Remove unused template --- src/argus_htmx/templates/base.html | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 src/argus_htmx/templates/base.html diff --git a/src/argus_htmx/templates/base.html b/src/argus_htmx/templates/base.html deleted file mode 100644 index 50a363847..000000000 --- a/src/argus_htmx/templates/base.html +++ /dev/null @@ -1,17 +0,0 @@ -{% load static %} - - - - - Argus Server: {{ page_title }} - - {% block head %} - {% endblock head %} - - -

    Argus Server: {{ page_title }}

    - {% block main %} - {% endblock main %} - {% block tail %}{% endblock tail %} - - From afb77ee9e12c0d88321a15d076fcc0b6a5c80dd5 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 30 Apr 2024 15:05:51 +0200 Subject: [PATCH 012/216] Override
    in base.html * Do some minimal styling * Add some placeholders for things to come * Add login and logout links It is not possible to correctly log out from OAuth2 yet --- src/argus_htmx/templates/htmx/base.html | 26 +++++++++++++++++++ .../templates/registration/login.html | 18 +++++++++++++ src/argus_htmx/urls.py | 13 +++++++++- src/argus_htmx/views.py | 4 +++ 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/argus_htmx/templates/registration/login.html diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 703b4e8d1..a8a387d5a 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -1,7 +1,33 @@ {% extends "base.html" %} {% block head %} + {% endblock head %} + +{% block header %} +
    +

    Logo Argus: {{ page_title }}

    +
    Timeslots
    +
    Profiles
    +
    {% block userlink %} +{% if request.user.is_authenticated %} +{{ request.user }} +
    +{% csrf_token %} + +
    +{% else %} +Log in +{% endif %} +{% endblock %}
    +
    +{% endblock header %} diff --git a/src/argus_htmx/templates/registration/login.html b/src/argus_htmx/templates/registration/login.html new file mode 100644 index 000000000..78c4ec9b1 --- /dev/null +++ b/src/argus_htmx/templates/registration/login.html @@ -0,0 +1,18 @@ +{% extends "htmx/base.html" %} + +{% block main %} +

    Log In

    +
    +
    + {% csrf_token %} + {{ form }} + +
    +
    +
    +

    Federated logins

    +{% for backend in oauth2_backends %} +{{ backend }} +{% endfor %} +
    +{% endblock main %} diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index 5d8f908a1..93bd7a1a8 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -1,10 +1,21 @@ -from django.urls import path +from django.urls import path, include +from django.contrib.auth import views as auth_views + +from argus.auth.utils import get_psa_authentication_names +from argus.auth.views import LogoutView from . import views app_name = "htmx" urlpatterns = [ + path( + "accounts/login/", + auth_views.LoginView.as_view(extra_context={"oauth2_backends": get_psa_authentication_names()}), + name="login", + ), + path("accounts/logout/", auth_views.LogoutView.as_view(), name="logout"), + #path("accounts/", include("django.contrib.auth.urls")), path("incidents/", views.incidents, name="htmx_incidents"), path("incidents//", views.incident_detail, name="htmx_incident_detail"), path("incidents//ack/", views.incident_add_ack, name="htmx-incident-add-ack"), diff --git a/src/argus_htmx/views.py b/src/argus_htmx/views.py index 9c58539ad..012d9a83f 100644 --- a/src/argus_htmx/views.py +++ b/src/argus_htmx/views.py @@ -63,3 +63,7 @@ def incident_add_ack(request, pk: int, group: Optional[str] = None): expiration=form.cleaned_data["expiration"], ) return render(request, "htmx/incidents/incident_add_ack.html", context=context) + + +# def login(request): +# From a45e96061a1c33a063e6467f280c5f3d3fa4677e Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Fri, 3 May 2024 13:09:31 +0200 Subject: [PATCH 013/216] Add classifier to underline instability of code --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index a03958c0d..5bddd47e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ readme = "README.rst" authors = [{name = "Hanne Moa", email = "hanne.moa@sikt.no"}] requires-python = ">=3.8" classifiers = [ + "Development Status :: 2 - Pre-Alpha", "Framework :: Django", "Framework :: Django :: 4.2", "Programming Language :: Python :: 3 :: Only", From 5a55b2655bbe2876017cd2dc726f4ad1b67cf5b0 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Fri, 3 May 2024 13:33:08 +0200 Subject: [PATCH 014/216] Switch to better names for import vs. install --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5bddd47e3..df3a75b87 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi" [project] description = "HTTP Frontend as a django app for argus-server using HTMx" -name = "argus_htmx" +name = "argus-htmx-frontend" readme = "README.rst" authors = [{name = "Hanne Moa", email = "hanne.moa@sikt.no"}] requires-python = ">=3.8" @@ -26,3 +26,6 @@ Github = "https://github.com/Uninett/argus-htmx-frontend" [project.optional-dependencies] docs = ["sphinx"] + +[tool.flit.module] +name = "argus_htmx" From b60890472b8733ff57f508bc95c190877144d7f2 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 15 May 2024 08:19:04 +0200 Subject: [PATCH 015/216] Add theme-switching support * Support primitive theme switching * Add two context processors for theming: theme via GET, theme via session * Update readme --- README.rst | 10 ++++++++- src/argus_htmx/context_processors.py | 19 +++++++++++++++++ src/argus_htmx/static/color-schemes/blue.css | 7 +++++++ src/argus_htmx/static/color-schemes/dark.css | 7 +++++++ src/argus_htmx/static/color-schemes/light.css | 7 +++++++ src/argus_htmx/templates/htmx/base.html | 21 +++++++++++++++++-- src/argus_htmx/views.py | 4 +++- 7 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 src/argus_htmx/context_processors.py create mode 100644 src/argus_htmx/static/color-schemes/blue.css create mode 100644 src/argus_htmx/static/color-schemes/dark.css create mode 100644 src/argus_htmx/static/color-schemes/light.css diff --git a/README.rst b/README.rst index b3e1a2e98..ebb6d49e5 100644 --- a/README.rst +++ b/README.rst @@ -45,6 +45,11 @@ In your local settings that star-imports from an `argus-server`_ settings file:: ROOT_URLCONF = "urls.py" MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] +In the same file, add a copy of the entirety of ``TEMPLATES``. Choose one of +the functions in ``argus_htmx.context_processors``. In the entry for +``django.template.backends.django.DjangoTemplates``, append the full dotted +path to the end of the ``context_processors`` list. + Next to ``localsettings.py`` create an ``urls.py`` containing:: from argus.site.urls import urlpatterns @@ -56,9 +61,12 @@ Next to ``localsettings.py`` create an ``urls.py`` containing:: With EXTRA_APPS ~~~~~~~~~~~~~~~ +Choose one of the functions in ``argus_htmx.context_processors``, exemplified +by "theme_via_GET" below. + In your environment variables:: - ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"},{"app_name": "argus_htmx","urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}}]' + ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"}, {"app_name": "argus_htmx", "urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}, "context_processors": ["arguss_htmx.context_processor.theme_via_GET"]}]' In your local settings that star-imports from an `argus-server`_ settings file:: diff --git a/src/argus_htmx/context_processors.py b/src/argus_htmx/context_processors.py new file mode 100644 index 000000000..1d81d1032 --- /dev/null +++ b/src/argus_htmx/context_processors.py @@ -0,0 +1,19 @@ +""" +This should probably be in a separate 3rd party theming-app! + +How to use: + +Update the "context_processors" list for the TEMPLATES-backend +``django.template.backends.django.DjangoTemplates`` with *one* of these. + +See django settings for ``TEMPLATES``. +""" + +def theme_via_GET(request): + theme = request.GET.get("theme", None) + return {"theme": theme} + + +def theme_via_session(request): + theme = request.session.get("theme", None) + return {"theme": theme} diff --git a/src/argus_htmx/static/color-schemes/blue.css b/src/argus_htmx/static/color-schemes/blue.css new file mode 100644 index 000000000..21dce662d --- /dev/null +++ b/src/argus_htmx/static/color-schemes/blue.css @@ -0,0 +1,7 @@ +:root { + --main-bg-color: lightblue; + --main-fg-color: darkblue; + --main-link-color: blue; + --nav-bg-color: darkblue; + --nav-fg-color: cyan; +} diff --git a/src/argus_htmx/static/color-schemes/dark.css b/src/argus_htmx/static/color-schemes/dark.css new file mode 100644 index 000000000..3afd9bd11 --- /dev/null +++ b/src/argus_htmx/static/color-schemes/dark.css @@ -0,0 +1,7 @@ +:root { + --main-bg-color: #121212; + --main-fg-color: #eee; + --main-link-color: #809fff; + --nav-bg-color: black; + --nav-fg-color: #eee; +} diff --git a/src/argus_htmx/static/color-schemes/light.css b/src/argus_htmx/static/color-schemes/light.css new file mode 100644 index 000000000..935cd6647 --- /dev/null +++ b/src/argus_htmx/static/color-schemes/light.css @@ -0,0 +1,7 @@ +:root { + --main-bg-color: white; + --main-fg-color: black; + --main-link-color: blue; + --nav-bg-color: lightgrey; + --nav-fg-color: black; +} diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index a8a387d5a..00be1081f 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -2,14 +2,30 @@ {% block head %} +{% if theme %} + +{% else %} + + +{% endif %} {% endblock head %} @@ -19,6 +35,7 @@

    Logo Argus: {{ page_title }}

    Timeslots
    Profiles
    {% block userlink %} +Theme: "{{ theme }}" {% if request.user.is_authenticated %} {{ request.user }}
    diff --git a/src/argus_htmx/views.py b/src/argus_htmx/views.py index 012d9a83f..a94427c9b 100644 --- a/src/argus_htmx/views.py +++ b/src/argus_htmx/views.py @@ -27,7 +27,9 @@ def incidents(request): # fetch with htmx def incident_row(request, pk: int): incident = get_object_or_404(Incident, d=pk) - context = {"incident": incident} + context = { + "incident": incident, + } return render(request, "htmx/incidents/_incident_row.html", context=context) From 200c4fda3db738ab3d2b0309c21649df9b12d3ca Mon Sep 17 00:00:00 2001 From: podliashanyk <60876078+podliashanyk@users.noreply.github.com> Date: Wed, 15 May 2024 08:29:31 +0200 Subject: [PATCH 016/216] Add page with table for incidents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will do the job of `htmx/incidents/list.html`, soonishâ„¢ --- .../templates/htmx/incidents/_base.html | 2 + .../htmx/incidents/_incident_table_row.html | 41 +++++++++ .../htmx/incidents/_incidents_table.html | 89 +++++++++++++++++++ .../htmx/incidents/incidents_list.html | 21 +++++ src/argus_htmx/urls.py | 1 + src/argus_htmx/views.py | 44 ++++++++- 6 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 src/argus_htmx/templates/htmx/incidents/_base.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_table_row.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incidents_table.html create mode 100644 src/argus_htmx/templates/htmx/incidents/incidents_list.html diff --git a/src/argus_htmx/templates/htmx/incidents/_base.html b/src/argus_htmx/templates/htmx/incidents/_base.html new file mode 100644 index 000000000..3247dee34 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_base.html @@ -0,0 +1,2 @@ +{% extends "htmx/base.html" %} +{% load django_htmx %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html new file mode 100644 index 000000000..5f05c51e0 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html @@ -0,0 +1,41 @@ + + + {% block row_select %} +

    X

    + {% endblock row_select %} + + + {% block incident_pk %} + {% include "htmx/incidents/_incident_pk.html" %} + {% endblock %} + + + {% block start_time %} + {% include "htmx/incidents/_incident_start_time.html" %} + {% endblock %} + + + {% block status %} + {% include "htmx/incidents/_incident_status.html" %} + {% endblock %} + + {{ incident.level }} + {{ incident.source }} + + {% block description %} + {% include "htmx/incidents/_incident_description.html" %} + {% endblock %} + + + {% block acknowledgement %} + {% include "htmx/incidents/_incident_ack.html" %} + {% endblock %} + + + {% block tag %} + {% include "htmx/incidents/_incident_tag.html" with tag="location" %} + {% endblock %} + + diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_table.html b/src/argus_htmx/templates/htmx/incidents/_incidents_table.html new file mode 100644 index 000000000..9e5ab0697 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_table.html @@ -0,0 +1,89 @@ + + {% block table %} + + + + + + + + + + + + + + + {% for incident in page.object_list %} + {% block incident %} + {% include 'htmx/incidents/_incident_table_row.html' %} + {% endblock incident %} + {% empty %} + + + + {% endfor %} + + + + + + + {% endblock %} +
    actionsidtimestampstatusseveritysourcedescriptionacktag
    + No incidents on this page. +
    + + + +
    diff --git a/src/argus_htmx/templates/htmx/incidents/incidents_list.html b/src/argus_htmx/templates/htmx/incidents/incidents_list.html new file mode 100644 index 000000000..560009540 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/incidents_list.html @@ -0,0 +1,21 @@ +{% extends base %} + +{% block main %} +
    +
    +

    + Latest: {{ latest }} +

    +
    + +
    + {% include "htmx/incidents/_incidents_table.html" %} +
    + +
    +

    + Total, all time: {{ qs|length }} +

    +
    +
    +{% endblock main %} diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index 93bd7a1a8..5c3096447 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -19,4 +19,5 @@ path("incidents/", views.incidents, name="htmx_incidents"), path("incidents//", views.incident_detail, name="htmx_incident_detail"), path("incidents//ack/", views.incident_add_ack, name="htmx-incident-add-ack"), + path("incidents/table/", views.incidents_table, name="htmx_incidents_table"), ] diff --git a/src/argus_htmx/views.py b/src/argus_htmx/views.py index a94427c9b..5b730a407 100644 --- a/src/argus_htmx/views.py +++ b/src/argus_htmx/views.py @@ -6,6 +6,11 @@ from django.core.exceptions import PermissionDenied from django.shortcuts import render, reverse, get_object_or_404 +from django.views.decorators.http import require_GET +from django.core.paginator import Paginator +from django.http import HttpRequest, HttpResponse +from django_htmx.middleware import HtmxDetails + from argus.incident.models import Incident from .forms import AckForm @@ -41,6 +46,7 @@ def incident_detail(request, pk: int): } return render(request, "htmx/incidents/incident_detail.html", context=context) + def incident_add_ack(request, pk: int, group: Optional[str] = None): incident = get_object_or_404(Incident, id=pk) is_group_member = None @@ -67,5 +73,41 @@ def incident_add_ack(request, pk: int, group: Optional[str] = None): return render(request, "htmx/incidents/incident_add_ack.html", context=context) +class HtmxHttpRequest(HttpRequest): + htmx: HtmxDetails + + +@require_GET +def incidents_table(request: HtmxHttpRequest) -> HttpResponse: + # Load incidents + qs = Incident.objects.all().order_by("-start_time") + latest = qs.latest("start_time").start_time + + # Standard Django pagination + page_num = request.GET.get("page", "1") + page = Paginator(object_list=qs, per_page=10).get_page(page_num) + + # The htmx magic - use a different, minimal base template for htmx + # requests, allowing us to skip rendering the unchanging parts of the + # template. + if request.htmx: + base_template = "htmx/incidents/_incidents_table.html" + else: + base_template = "htmx/incidents/_base.html" + + context = { + "qs": qs, + "latest": latest, + "page_title": "Incidents", + "base": base_template, + "page": page, + } + + return render( + request, + "htmx/incidents/incidents_list.html", + context=context + ) + # def login(request): -# +# From 8f321d35fdbbe0ceea05d3f652e96f5c41400c6c Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 15 May 2024 13:40:17 +0200 Subject: [PATCH 017/216] Reorganize source code to prevent future conflicts * Move all incidents-stuff to own directory * Add placeholder pages for missing functionality to flesh out file structure, and link to them in the
    * Remove "htmx"-prefix from url-names and use "-" instead of "_" everywhere --- src/argus_htmx/destinations/__init__.py | 0 src/argus_htmx/destinations/urls.py | 21 +++++++++++++++++++ src/argus_htmx/incidents/__init__.py | 0 src/argus_htmx/{ => incidents}/forms.py | 0 src/argus_htmx/incidents/urls.py | 12 +++++++++++ src/argus_htmx/{ => incidents}/views.py | 11 ++++------ .../notificationprofiles/__init__.py | 0 src/argus_htmx/notificationprofiles/urls.py | 21 +++++++++++++++++++ src/argus_htmx/templates/htmx/base.html | 6 +++--- .../htmx/incidents/_incident_ack.html | 2 +- .../htmx/incidents/_incident_pk.html | 2 +- src/argus_htmx/timeslots/__init__.py | 0 src/argus_htmx/timeslots/urls.py | 21 +++++++++++++++++++ src/argus_htmx/urls.py | 14 +++++++------ 14 files changed, 92 insertions(+), 18 deletions(-) create mode 100644 src/argus_htmx/destinations/__init__.py create mode 100644 src/argus_htmx/destinations/urls.py create mode 100644 src/argus_htmx/incidents/__init__.py rename src/argus_htmx/{ => incidents}/forms.py (100%) create mode 100644 src/argus_htmx/incidents/urls.py rename src/argus_htmx/{ => incidents}/views.py (99%) create mode 100644 src/argus_htmx/notificationprofiles/__init__.py create mode 100644 src/argus_htmx/notificationprofiles/urls.py create mode 100644 src/argus_htmx/timeslots/__init__.py create mode 100644 src/argus_htmx/timeslots/urls.py diff --git a/src/argus_htmx/destinations/__init__.py b/src/argus_htmx/destinations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/destinations/urls.py b/src/argus_htmx/destinations/urls.py new file mode 100644 index 000000000..377fae3ed --- /dev/null +++ b/src/argus_htmx/destinations/urls.py @@ -0,0 +1,21 @@ +from django.http import HttpResponse +from django.template import Template, RequestContext +from django.urls import path + + +def placeholder(request): + template = Template( + """{% extends "htmx/base.html" %} + {% block main %} +

    DESTINATION PLACEHOLDER

    + {% endblock main %} + """ + ) + context = RequestContext(request) + return HttpResponse(template.render(context)) + + +app_name = "htmx" +urlpatterns = [ + path("", placeholder, name="destination-placeholder"), +] diff --git a/src/argus_htmx/incidents/__init__.py b/src/argus_htmx/incidents/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/forms.py b/src/argus_htmx/incidents/forms.py similarity index 100% rename from src/argus_htmx/forms.py rename to src/argus_htmx/incidents/forms.py diff --git a/src/argus_htmx/incidents/urls.py b/src/argus_htmx/incidents/urls.py new file mode 100644 index 000000000..b0489f092 --- /dev/null +++ b/src/argus_htmx/incidents/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, include + +from . import views + + +app_name = "htmx" +urlpatterns = [ + path("", views.incidents, name="incidents"), + path("/", views.incident_detail, name="incident-detail"), + path("/ack/", views.incident_add_ack, name="incident-add-ack"), + path("table/", views.incidents_table, name="incidents-table"), +] diff --git a/src/argus_htmx/views.py b/src/argus_htmx/incidents/views.py similarity index 99% rename from src/argus_htmx/views.py rename to src/argus_htmx/incidents/views.py index 5b730a407..57d895e6b 100644 --- a/src/argus_htmx/views.py +++ b/src/argus_htmx/incidents/views.py @@ -18,6 +18,10 @@ LOG = logging.getLogger(__name__) +class HtmxHttpRequest(HttpRequest): + htmx: HtmxDetails + + def incidents(request): qs = Incident.objects.all().order_by("-start_time") latest = qs.latest("start_time").start_time @@ -73,10 +77,6 @@ def incident_add_ack(request, pk: int, group: Optional[str] = None): return render(request, "htmx/incidents/incident_add_ack.html", context=context) -class HtmxHttpRequest(HttpRequest): - htmx: HtmxDetails - - @require_GET def incidents_table(request: HtmxHttpRequest) -> HttpResponse: # Load incidents @@ -108,6 +108,3 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: "htmx/incidents/incidents_list.html", context=context ) - -# def login(request): -# diff --git a/src/argus_htmx/notificationprofiles/__init__.py b/src/argus_htmx/notificationprofiles/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/notificationprofiles/urls.py b/src/argus_htmx/notificationprofiles/urls.py new file mode 100644 index 000000000..e3d8ab649 --- /dev/null +++ b/src/argus_htmx/notificationprofiles/urls.py @@ -0,0 +1,21 @@ +from django.http import HttpResponse +from django.template import Template, RequestContext +from django.urls import path + + +def placeholder(request): + template = Template( + """{% extends "htmx/base.html" %} + {% block main %} +

    NOTIFICATION PROFILES PLACEHOLDER

    + {% endblock main %} + """ + ) + context = RequestContext(request) + return HttpResponse(template.render(context)) + + +app_name = "htmx" +urlpatterns = [ + path("", placeholder, name="notificationprofile-placeholder"), +] diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 00be1081f..c1a547a72 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -31,9 +31,9 @@ {% block header %}
    -

    Logo Argus: {{ page_title }}

    -
    Timeslots
    -
    Profiles
    +

    Logo Argus: {{ page_title }}

    + +
    {% block userlink %} Theme: "{{ theme }}" {% if request.user.is_authenticated %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ack.html b/src/argus_htmx/templates/htmx/incidents/_incident_ack.html index d8d5aaf49..11cd88139 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ack.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ack.html @@ -1,3 +1,3 @@ - + {% if incident.acked %}Acked{% else %}Unacked{% endif %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_pk.html b/src/argus_htmx/templates/htmx/incidents/_incident_pk.html index 65cd57aeb..db4546c88 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_pk.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_pk.html @@ -1 +1 @@ -{{ incident.pk }} +{{ incident.pk }} diff --git a/src/argus_htmx/timeslots/__init__.py b/src/argus_htmx/timeslots/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/timeslots/urls.py b/src/argus_htmx/timeslots/urls.py new file mode 100644 index 000000000..efbfffc31 --- /dev/null +++ b/src/argus_htmx/timeslots/urls.py @@ -0,0 +1,21 @@ +from django.http import HttpResponse +from django.template import Template, RequestContext +from django.urls import path + + +def placeholder(request): + template = Template( + """{% extends "htmx/base.html" %} + {% block main %} +

    TIMESLOT PLACEHOLDER

    + {% endblock main %} + """ + ) + context = RequestContext(request) + return HttpResponse(template.render(context)) + + +app_name = "htmx" +urlpatterns = [ + path("", placeholder, name="timeslot-placeholder"), +] diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index 5c3096447..2cb170f2a 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -4,8 +4,10 @@ from argus.auth.utils import get_psa_authentication_names from argus.auth.views import LogoutView -from . import views - +from .incidents.urls import urlpatterns as incident_urls +from .timeslots.urls import urlpatterns as timeslot_urls +from .notificationprofiles.urls import urlpatterns as notificationprofile_urls +from .destinations.urls import urlpatterns as destination_urls app_name = "htmx" urlpatterns = [ @@ -16,8 +18,8 @@ ), path("accounts/logout/", auth_views.LogoutView.as_view(), name="logout"), #path("accounts/", include("django.contrib.auth.urls")), - path("incidents/", views.incidents, name="htmx_incidents"), - path("incidents//", views.incident_detail, name="htmx_incident_detail"), - path("incidents//ack/", views.incident_add_ack, name="htmx-incident-add-ack"), - path("incidents/table/", views.incidents_table, name="htmx_incidents_table"), + path("incidents/", include(incident_urls)), + path("timeslots/", include(timeslot_urls)), + path("notificationprofiles/", include(notificationprofile_urls)), + path("destinations/", include(destination_urls)), ] From 5489dcb738ad633513db20c9199cd6653a5aa8e9 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Thu, 16 May 2024 08:33:56 +0200 Subject: [PATCH 018/216] Demo tons of classless themes with our current HTML structure * Add some class-less css-themes via cssbed * Swap themes instead of color-schemes * Add a view to switch themes with * Link to theme-switcher page in
    * Update README.rst * Add "default" theme and "purehtml" theme The former shows a theme depending on extra files. The latter shows the browser's default style. --- README.rst | 20 +- pyproject.toml | 2 + src/argus_htmx/static/themes/Chocolate.css | 816 ++++++++++++++++++ src/argus_htmx/static/themes/Traditional.css | 816 ++++++++++++++++++ src/argus_htmx/static/themes/bahunya.min.css | 2 + src/argus_htmx/static/themes/bamboo.css | 1 + src/argus_htmx/static/themes/default.css | 3 + .../static/themes/default/background.svg | 1 + src/argus_htmx/static/themes/ebmf.css | 19 + src/argus_htmx/static/themes/kacit.min.css | 3 + .../static/themes/mini-default.min.css | 1 + src/argus_htmx/static/themes/no-class.min.css | 1 + .../static/themes/pico.classless.min.css | 4 + src/argus_htmx/static/themes/purehtml.css | 0 src/argus_htmx/static/themes/reset.css | 48 ++ src/argus_htmx/static/themes/simple.css | 704 +++++++++++++++ src/argus_htmx/static/themes/stylize.css | 278 ++++++ .../static/themes/tacit-css-1.5.0.min.css | 3 + src/argus_htmx/static/themes/tufte.css | 486 +++++++++++ src/argus_htmx/static/themes/vanilla.css | 187 ++++ src/argus_htmx/static/themes/water-dark.css | 241 ++++++ src/argus_htmx/static/themes/water-light.css | 241 ++++++ src/argus_htmx/static/themes/writ.min.css | 7 + src/argus_htmx/static/themes/yorha.min.css | 1 + src/argus_htmx/templates/htmx/base.html | 32 +- .../templates/htmx/themes/themes_list.html | 23 + src/argus_htmx/themes/__init__.py | 0 src/argus_htmx/themes/urls.py | 9 + src/argus_htmx/themes/views.py | 52 ++ src/argus_htmx/urls.py | 2 + 30 files changed, 3988 insertions(+), 15 deletions(-) create mode 100644 src/argus_htmx/static/themes/Chocolate.css create mode 100644 src/argus_htmx/static/themes/Traditional.css create mode 100644 src/argus_htmx/static/themes/bahunya.min.css create mode 100644 src/argus_htmx/static/themes/bamboo.css create mode 100644 src/argus_htmx/static/themes/default.css create mode 100644 src/argus_htmx/static/themes/default/background.svg create mode 100644 src/argus_htmx/static/themes/ebmf.css create mode 100644 src/argus_htmx/static/themes/kacit.min.css create mode 100644 src/argus_htmx/static/themes/mini-default.min.css create mode 100644 src/argus_htmx/static/themes/no-class.min.css create mode 100644 src/argus_htmx/static/themes/pico.classless.min.css create mode 100644 src/argus_htmx/static/themes/purehtml.css create mode 100644 src/argus_htmx/static/themes/reset.css create mode 100644 src/argus_htmx/static/themes/simple.css create mode 100644 src/argus_htmx/static/themes/stylize.css create mode 100644 src/argus_htmx/static/themes/tacit-css-1.5.0.min.css create mode 100644 src/argus_htmx/static/themes/tufte.css create mode 100644 src/argus_htmx/static/themes/vanilla.css create mode 100644 src/argus_htmx/static/themes/water-dark.css create mode 100644 src/argus_htmx/static/themes/water-light.css create mode 100644 src/argus_htmx/static/themes/writ.min.css create mode 100644 src/argus_htmx/static/themes/yorha.min.css create mode 100644 src/argus_htmx/templates/htmx/themes/themes_list.html create mode 100644 src/argus_htmx/themes/__init__.py create mode 100644 src/argus_htmx/themes/urls.py create mode 100644 src/argus_htmx/themes/views.py diff --git a/README.rst b/README.rst index ebb6d49e5..0eed0546c 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,7 @@ Experimental frontend for `argus-server`_ as a django app. Will possibly cease to exist as a separate app if the experiment is deemed successful. -See `argus-server`_ for more abour argus. +See `argus-server`_ for more about argus. Imports `django-htmx`_. See the `documentation for django-htmx`_ for details. @@ -66,12 +66,28 @@ by "theme_via_GET" below. In your environment variables:: - ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"}, {"app_name": "argus_htmx", "urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}, "context_processors": ["arguss_htmx.context_processor.theme_via_GET"]}]' + ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"}, {"app_name": "argus_htmx", "urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}, "context_processors": ["argus_htmx.context_processor.theme_via_GET"]}]' In your local settings that star-imports from an `argus-server`_ settings file:: MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] +Themes +------ + +To try out class-less themes use the context processor +``argus_htmx.context_processor.theme_via_session`` instead of +``argus_htmx.context_processor.theme_via_GET``. + +There are plenty of themes copied from `CSS Bed`_ to play with. Your own themes +can be added by copying one css-file per theme to the static path ``themes/``, +either in an app or in a directory mentioned in ``STATICFILES_DIRS``. + +Icons, pictures, etc. used by the theme MUST be in a subdirectory named the +same as the theme (minus the ".css") in the same directory as the theme so +update the paths accordingly. See the included theme "default.css". + +.. _CSS Bed: https://www.cssbed.com/ .. _django-htmx: https://github.com/adamchainz/django-htmx .. _argus-server: https://github.com/Uninett/Argus .. _documentation for django-htmx: https://django-htmx.readthedocs.io/en/latest/ diff --git a/pyproject.toml b/pyproject.toml index df3a75b87..380f518ee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,8 @@ dynamic = ["version"] dependencies = [ "argus-server", "django-htmx", + # The next is for python_version < 3.12 but we simplify code by always needing it + "importlib_resources>=5.12", ] [project.urls] diff --git a/src/argus_htmx/static/themes/Chocolate.css b/src/argus_htmx/static/themes/Chocolate.css new file mode 100644 index 000000000..c5a84ccc1 --- /dev/null +++ b/src/argus_htmx/static/themes/Chocolate.css @@ -0,0 +1,816 @@ +/* The W3C Core Styles Copyright (c) 1998 W3C (mit, inria, Keio), All Rights +Reserved. W3C liability, trademark, document use and software licensing rules +apply. See http://www.w3.org/Consortium/Legal/ipr-notice.html + +This stylesheet has been served in a form to avoid known bugs in your user +agent's css implementation. Copying and serving this stylesheet to other +agents may lead to unexpected results. Please refer to its address rather than +copy it. */ + + + + + + /* begin body type */ /* 1 - humanist sans a */ + +body { + font-size: 1em; + font-weight: normal; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .58; + } + +p, blockquote, ul, ol, dl, dd, li, dir, menu { + /* inherit from body */ + } + +small { + font-size: .92em; + } + +big { + font-size: 1.17em; + } + +pre { + font-family: 'Monotype.com', Courier New, monospace; + } + +ol li { + list-style-type: decimal; + } + +ol ol li { + list-style-type: lower-alpha; + } + +ol ol ol li { + list-style-type: lower-roman; + } + +table, tbody, tr, td { + font-size: 1em; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .58; + } + + /* end body type */ + + + + + /* begin header type */ /* 7 - humanist sans b */ + +h1 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 2em; + font-weight: 400; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h2 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.75em; + font-weight: 400; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h3 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.58em; + font-weight: 400; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h4 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.33em; + font-weight: 500; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h5, dt { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.17em; + font-weight: 600; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h6 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1em; + font-weight: 700; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +tfoot, thead { + font-size: 1em; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + } + +th { + vertical-align: baseline; + font-size: 1em; + font-weight: bold; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + } + +hr { + visibility: hidden; + } + + /* end header type */ + + + + + /* begin affordances */ /* 3 - mint reverse */ + +a, address, blockquote, body, cite, code, dd, del, dfn, +div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, +li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, +applet, big, center, dir, font, hr, menu, pre, +abbr, acronym, bdo, button, fieldset, ins, label { + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + text-decoration: none; + border-color: #ccc; + border-style: none; + } + +body { + color: #D0FFD0; + background: #212121; + } + +em { + font-style: normal; + font-weight: bold; + color: #D0FFD0; + background: #212121; + } + +strong { + font-style: italic; + background: #212121; + font-weight: bold; + color: #D0FFD0; + } + +em strong, strong em { + text-transform: uppercase; + font-style: normal; + font-weight: bolder; + background: #212121; + color: #D0FFD0; + } + +b { + font-weight: bold; + } + +i { + font-style: italic; + } + +.warning { + text-transform: none; + font-style: normal; + font-weight: bolder; + background: yellow; + color: black; + } + +del { + text-decoration: line-through; + background: #900; + } + +ins { + text-decoration: none; + background: #060; + } + +var, cite, dfn, .note { + font-style: italic; + } + +address { + font-style: normal; + letter-spacing: .1em; + } + +acronym { + font-variant: small-caps; + letter-spacing: 0.1em; + } + +h1, h2, h3, h4, h5, h6, dt, th, thead, tfoot { + color: rgb(245,245,245); + background: #212121; + } + +hr { + color: #ccc; + } + +#colophon { + display: none; + } + +col, colgroup, table, tbody, td, tr { + color: #D0FFD0; + text-decoration: none; + border-color: #ccc; + border-style: none; + background: #212121; + } + +a:link { + text-decoration: none; + font-weight: bold; + color: #F60; + background: #212121; + } + +a:visited { + text-decoration: none; + font-weight: bold; + color: #C96; + background: #212121; + } + +a:active { + text-decoration: none; + font-weight: bold; + color: #ffc; + background: #212121; + } + +a:hover { + text-decoration: none; + color: #FC0; + background: #212121; + } + +a.offsite { + text-decoration: none; + font-weight: normal; + color: #F60; + background: #212121; + } + + /* end affordances */ + + + + + /* begin vertical */ /* 1 - pentatonic a */ + +a, address, blockquote, cite, code, dd, del, dfn, +div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, +li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, +applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, +u, abbr, acronym, bdo, button, fieldset, ins, label { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + vertical-align: baseline; + } + +body { + line-height: 1.58em; + } + +div > p:first-child, body > p:first-child, td > p:first-child { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, p.initial { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h1, h2, h3, h4, h5, h6 { + line-height: 1.33em; + } + +h1 { + margin-top: 1.33em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h2 { + margin-top: 1.75em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h3 { + margin-top: 1.58em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h4 { + margin-top: 1.33em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h5 { + margin-top: 1.17em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h6 { + margin-top: 1em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +p { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +blockquote, fieldset, form, ul, ol, dl, dir, menu { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +dt { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +dd { + margin-top: 0; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +li { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +address { + margin-top: 1.58em; + margin-bottom: 1.58em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +pre { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + line-height: 1.25em; + } + +hr { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + height: 1px; + } + +div, center { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +.subhead { + margin-top: .75em; + margin-bottom: .75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +.stb { + margin-top: 2.17em; + margin-bottom: .75em; + padding-top: 2.17em; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + border-style: solid + } + +.mtb { + margin-top: 3.08em; + margin-bottom: .75em; + padding-top: 3.08em; + padding-bottom: 0; + border-top: .1em; + border-bottom: 0; + border-style: solid + } + +.ltb { + margin-top: 4.34em; + margin-bottom: .75em; + padding-top: 4.34em; + padding-bottom: 0; + border-top: .25em; + border-bottom: 0; + border-style: solid + } + +col, colgroup, table, tbody, td, tfoot, th, thead, tr { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +td, th { + line-height: 1.33em; + } + + /* end vertical */ + + + + + /* begin horizontal */ /* 1 - compact */ + +a, address, blockquote, cite, code, dd, del, dfn, +div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, +li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, +applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, +u, abbr, acronym, bdo, button, fieldset, ins, label { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + float: none; + clear: none; + list-style-position: outside; + } + +address, blockquote, dl, fieldset, form, ol, +p, ul, dir, hr, menu, pre { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +div > p:first-child, body > p:first-child, td > p:first-child { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + text-indent: 0; + } + +h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, p.initial { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + text-indent: 0; + } + +h1 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h2 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h3 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h4 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h5 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h6 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +p { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-indent: 0; + } + +blockquote { + margin-left: 1.58em; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +address { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +pre { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +li { + margin-left: 3.16em; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +dt { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +dd { + margin-left: 1.58em; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +hr { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + width: 100%; + } + +center { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +col, colgroup, table, tbody, td, tfoot, th, thead, tr { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + float: none; + clear: none; + } + +table { + text-align: left; + } + +td { + text-align: left; + } + +th { + text-align: left; + } + +caption { + text-align: left; + } + + /* end horizontal */ + + + + + /* begin body box */ /* 5 - 'ninths symmetric' */ + +body { + margin-top: 1.58em; + margin-left: 11%; + margin-right: 8%; + margin-bottom: 1.58em; + padding-top: 0; + padding-left: 0; + padding-right: 0; + padding-bottom: 0; + border-top: 0; + border-left: 0; + border-bottom: 0; + border-right: 0; + width: auto; + } + /* end body box */ + + + + diff --git a/src/argus_htmx/static/themes/Traditional.css b/src/argus_htmx/static/themes/Traditional.css new file mode 100644 index 000000000..966e43ece --- /dev/null +++ b/src/argus_htmx/static/themes/Traditional.css @@ -0,0 +1,816 @@ +/* The W3C Core Styles Copyright (c) 1998 W3C (mit, inria, Keio), All Rights +Reserved. W3C liability, trademark, document use and software licensing rules +apply. See http://www.w3.org/Consortium/Legal/ipr-notice.html + +This stylesheet has been served in a form to avoid known bugs in your user +agent's css implementation. Copying and serving this stylesheet to other +agents may lead to unexpected results. Please refer to its address rather than +copy it. */ + + + + + + /* begin body type */ /* 2 - serif a */ + +body { + font-size: 1em; + font-weight: normal; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif; + font-size-adjust: .5; + } + +p, blockquote, ul, ol, dl, dd, li, dir, menu { + /* inherit from body */ + } + +small { + font-size: .92em; + } + +big { + font-size: 1.17em; + } + +pre { + font-family: 'Monotype.com', Courier New, monospace; + } + +ol li { + list-style-type: decimal; + } + +ol ol li { + list-style-type: lower-alpha; + } + +ol ol ol li { + list-style-type: lower-roman; + } + +table, tbody, tr, td { + font-size: 1em; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif; + font-size-adjust: .5; + } + + /* end body type */ + + + + + /* begin header type */ /* 7 - humanist sans b */ + +h1 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 2em; + font-weight: 400; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h2 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.75em; + font-weight: 400; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h3 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.58em; + font-weight: 400; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h4 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.33em; + font-weight: 500; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h5, dt { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1.17em; + font-weight: 600; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +h6 { + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + font-size: 1em; + font-weight: 700; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +tfoot, thead { + font-size: 1em; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + } + +th { + vertical-align: baseline; + font-size: 1em; + font-weight: bold; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; + font-size-adjust: .53; + } + +hr { + visibility: hidden; + } + + /* end header type */ + + + + + /* begin affordances */ /* 2 - laid */ + +a, address, blockquote, body, cite, code, dd, del, dfn, +div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, +li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, +applet, big, center, dir, font, hr, menu, pre, +abbr, acronym, bdo, button, fieldset, ins, label { + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + text-decoration: none; + border-color: black; + border-style: none; + } + +body { + color: black; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +em { + font-style: normal; + font-weight: bold; + color: black; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +strong { + font-style: italic; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + font-weight: bold; + color: black; + } + +em strong, strong em { + text-transform: uppercase; + font-style: normal; + font-weight: bolder; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + color: black; + } + +b { + font-weight: bold; + } + +i { + font-style: italic; + } + +.warning { + text-transform: none; + font-style: normal; + font-weight: bolder; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + color: black; + } + +del { + text-decoration: line-through; + background: #F66; + } + +ins { + text-decoration: underline; + background: yellow; + } + +var, cite, dfn, .note { + font-style: italic; + } + +address { + font-style: normal; + letter-spacing: .1em; + } + +acronym { + font-variant: small-caps; + letter-spacing: 0.1em; + } + +h1, h2, h3, h4, h5, h6, dt, th, thead, tfoot { + color: black; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +hr { + color: black; + } + +#colophon { + display: none; + } + +col, colgroup, table, tbody, td, tr { + color: black; + text-decoration: none; + border-color: black; + border-style: none; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +a:link { + text-decoration: none; + font-weight: bold; + color: #C00; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +a:visited { + text-decoration: none; + font-weight: bold; + color: #69C; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +a:active { + text-decoration: none; + font-weight: bold; + color: #C00; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #FF0; + } + +a:hover { + text-decoration: none; + color: #F00; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + +a.offsite { + text-decoration: none; + font-weight: normal; + color: #C66; + background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; + } + + /* end affordances */ + + + + + /* begin vertical */ /* 2 - pentatonic b */ + +a, address, blockquote, cite, code, dd, del, dfn, +div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, +li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, +applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, +u, abbr, acronym, bdo, button, fieldset, ins, label { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + vertical-align: baseline; + } + +body { + line-height: 1.75em; + } + +div > p:first-child, body > p:first-child, td > p:first-child { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, p.initial { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h1, h2, h3, h4, h5, h6 { + line-height: 1.33em; + } + +h1 { + margin-top: 1.33em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h2 { + margin-top: 1.75em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h3 { + margin-top: 1.58em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h4 { + margin-top: 1.33em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h5 { + margin-top: 1.17em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +h6 { + margin-top: 1em; + margin-bottom: .33em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +p { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +blockquote, fieldset, form, ul, ol, dl, dir, menu { + margin-top: .83em; + margin-bottom: .83em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +dt { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +dd { + margin-top: 0; + margin-bottom: .83em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +li { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +address { + margin-top: 1.75em; + margin-bottom: 1.75em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +pre { + margin-top: .83em; + margin-bottom: .83em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + line-height: 1.33em; + } + +hr { + margin-top: .83em; + margin-bottom: .83em; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + height: .1em; + } + +div, center { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +.subhead { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +.stb { + margin-top: .83em; + margin-bottom: 0; + padding-top: .83em; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + border-style: solid + } + +.mtb { + margin-top: 2.17em; + margin-bottom: 0; + padding-top: 2.17em; + padding-bottom: 0; + border-top: .1em; + border-bottom: 0; + border-style: solid + } + +.ltb { + margin-top: 3.08em; + margin-bottom: 0; + padding-top: 3.08em; + padding-bottom: 0; + border-top: .25em; + border-bottom: 0; + border-style: solid + } + +col, colgroup, table, tbody, td, tfoot, th, thead, tr { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + border-top: 0; + border-bottom: 0; + } + +td, th { + line-height: 1.58em; + } + + /* end vertical */ + + + + + /* begin horizontal */ /* 3 - indents */ + +a, address, blockquote, cite, code, dd, del, dfn, +div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, +li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, +applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, +u, abbr, acronym, bdo, button, fieldset, ins, label { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + float: none; + clear: none; + list-style-position: outside; + } + +address, blockquote, dl, fieldset, form, ol, +p, ul, dir, hr, menu, pre { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +div > p:first-child, body > p:first-child, td > p:first-child { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + text-indent: 0; + } + +h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, .initial, .stb, .mtb, .ltb { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + text-indent: 0; + } + +h1 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h2 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h3 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h4 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h5 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +h6 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +p { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-indent: 1.75em; + } + +blockquote { + margin-left: 1.75em; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +address { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +pre { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +li { + margin-left: 1.75em; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +dt { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +dd { + margin-left: 1.75em; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + } + +hr { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: center; + width: .5em; + } + +center { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + text-align: left; + } + +col, colgroup, table, tbody, td, tfoot, th, thead, tr { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left: 0; + border-right: 0; + float: none; + clear: none; + } + +table { + text-align: left; + } + +td { + text-align: left; + } + +th { + text-align: left; + } + +caption { + text-align: left; + } + + /* end horizontal */ + + + + + /* begin body box */ /* 3 - 'twelvths asymmetric' */ + +body { + margin-top: 1.58em; + margin-left: 16%; + margin-right: 5%; + margin-bottom: 1.58em; + padding-top: 0; + padding-left: 0; + padding-right: 0; + padding-bottom: 0; + border-top: 0; + border-left: 0; + border-bottom: 0; + border-right: 0; + width: auto; + } + /* end body box */ + + + + diff --git a/src/argus_htmx/static/themes/bahunya.min.css b/src/argus_htmx/static/themes/bahunya.min.css new file mode 100644 index 000000000..5e9bb24ca --- /dev/null +++ b/src/argus_htmx/static/themes/bahunya.min.css @@ -0,0 +1,2 @@ +:root{--background-body:#0d1117;--background:#161b22;--background-bright:rgba(240,246,252,0.15);--background-alt:#1a242f;--selection:#1c76c5;--text-main:#c9d1d9;--text-bright:#e3e9f0;--text-muted:#8b949e;--links:#e3bc5e;--focus:#388bfd;--focus-background:#0c2d6b;--border:#21252c;--border-muted:#21262d;--border-bright:#8b949e;--button-hover:#324759;--form-placeholder:#a9a9a9;--select-arrow:svg-load("./assets/select-arrow.svg",fill:#efefef);--monospace:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;--sans-serif:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,sans-serif;font-family:var(--sans-serif);line-height:1.7;max-width:50rem;margin:6rem auto;padding:0 10px;word-wrap:break-word;color:#c9d1d9;color:var(--text-main);background:#0d1117;background:var(--background-body);text-rendering:optimizeLegibility}h1,h2,h3,h4,h5{margin:3rem 0 1.38rem;line-height:1.3}h1{font-size:2.488rem}h2{font-size:2.074rem}h3{font-size:1.728rem}h4{font-size:1.44rem}h5{font-size:1.2rem}h6{font-size:1rem}small{font-size:.833rem}h1,h2,h3,h4,h5,h6,strong{color:#e3e9f0;color:var(--text-bright)}blockquote{border-left:4px solid #388bfd;border-left:4px solid var(--focus);margin:1.5em 0;padding:0 1em}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}blockquote>footer{border:0}address{font-style:normal}a[href^=mailto\:]:before{content:"📧 "}a[href^=tel\:]:before{content:"📞 "}a[href^=sms\:]:before{content:"💬 "}mark{background-color:#e3bc5e;background-color:var(--links);border-radius:2px;padding:0 2px}ol,ul{padding-left:2em}aside{width:40%;padding-left:.5rem;margin-left:.5rem;float:right;border-left:2px solid #388bfd;border-left:2px solid var(--focus);font-style:italic}aside>p{margin:.5rem}button,input[type=button],input[type=checkbox],input[type=radio],input[type=range],input[type=reset],input[type=submit],select{cursor:pointer}input:not([type=checkbox]):not([type=radio]),select{display:block}input,select,textarea{color:#e3e9f0;color:var(--text-bright);background-color:#161b22;background-color:var(--background);font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border-radius:6px;outline:none;border:1px solid #21262d;border:1px solid var(--border-muted)}input[type=color]{min-height:2rem;padding:8px;cursor:pointer}input[type=checkbox],input[type=radio]{height:1.2em;width:1em}input[type=radio]{border-radius:100%}input{vertical-align:top}label{vertical-align:middle;margin-bottom:4px;display:inline-block}button,input:not([type=checkbox]):not([type=radio]),input[type=range],select,textarea{-webkit-appearance:none}textarea{display:block;margin-right:0;resize:vertical}textarea,textarea:not([cols]){width:100%}textarea:not([rows]){min-height:40px;height:140px}select{background:#161b22 svg-load("./assets/select-arrow.svg",fill:#efefef) calc(100% - 12px) 50%/12px no-repeat;background:var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat;padding-right:35px}select::-ms-expand{display:none}select[multiple]{padding-right:10px;background-image:none;overflow-y:auto}input:focus,select:focus,textarea:focus{border:1px solid #388bfd;border:1px solid var(--focus);box-shadow:0 0 0 3px #0c2d6b;box-shadow:0 0 0 3px var(--focus-background)}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.5}::-moz-placeholder{color:#a9a9a9;color:var(--form-placeholder)}:-ms-input-placeholder{color:#a9a9a9;color:var(--form-placeholder)}::placeholder{color:#a9a9a9;color:var(--form-placeholder)}fieldset{border:1px solid #21252c;border:1px solid var(--border);border-radius:6px;margin:0 0 12px;padding:10px 20px}legend{font-size:.9em;font-weight:600}input[type=range]{margin:10px 0;padding:10px 0;background:transparent}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;height:9.5px;-webkit-transition:.2s;transition:.2s;background:#161b22;background:var(--background);border-radius:3px}input[type=range]::-webkit-slider-thumb{box-shadow:0 1px 1px #000,0 0 1px #0d0d0d;height:20px;width:20px;border-radius:50%;background:#21252c;background:var(--border);-webkit-appearance:none;margin-top:-7px}input[type=range]:focus::-webkit-slider-runnable-track{background:#161b22;background:var(--background)}input[type=range]::-moz-range-track{width:100%;height:9.5px;-moz-transition:.2s;transition:.2s;background:#161b22;background:var(--background);border-radius:3px}input[type=range]::-moz-range-thumb{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d;height:20px;width:20px;border-radius:50%;background:#21252c;background:var(--border)}input[type=range]::-ms-track{width:100%;height:9.5px;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}input[type=range]::-ms-fill-lower,input[type=range]::-ms-fill-upper{background:#161b22;background:var(--background);border:.2px solid #010101;border-radius:3px;box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}input[type=range]::-ms-thumb{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d;border:1px solid #000;height:20px;width:20px;border-radius:50%;background:#21252c;background:var(--border)}input[type=range]:focus::-ms-fill-lower,input[type=range]:focus::-ms-fill-upper{background:#161b22;background:var(--background)}a{text-decoration:none;color:#e3bc5e;color:var(--links)}a:hover{text-decoration:underline}code,samp,tt,var{font-size:85%;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-family:var(--monospace)}kbd{font-size:85%}code,kbd,samp,tt{padding:.2em .4em;border-radius:.4em}code,samp,tt{background:rgba(240,246,252,.15);background:var(--background-bright)}pre,pre>code{display:block;overflow-x:auto}pre>code{background:#161b22;background:var(--background);padding:1em}var{color:#388bfd;color:var(--focus);font-style:normal}kbd{border:1px solid #8b949e;border:1px solid var(--border-bright);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-family:var(--monospace)}img,video{max-width:100%;height:auto}hr{border:none;border-top:1px solid #8b949e;border-top:1px solid var(--border-bright);margin:1em 0}table{border-collapse:collapse;margin-bottom:10px;width:100%;table-layout:fixed;overflow-x:auto;display:block}table caption,td,th{text-align:left}td,th{padding:6px;vertical-align:top;word-wrap:break-word}thead{border-bottom:1px solid #8b949e;border-bottom:1px solid var(--border-bright)}tfoot{border-top:1px solid #8b949e;border-top:1px solid var(--border-bright)}tbody tr:nth-child(2n){background-color:#161b22;background-color:var(--background)}tbody tr:nth-child(2n) button{background-color:#1a242f;background-color:var(--background-alt)}tbody tr:nth-child(2n) button:hover{background-color:#0d1117;background-color:var(--background-body)}::-moz-selection{background-color:#1c76c5;background-color:var(--selection);color:#e3e9f0;color:var(--text-bright)}::selection{background-color:#1c76c5;background-color:var(--selection);color:#e3e9f0;color:var(--text-bright)}details summary{padding:.5rem 0;border-top:1px solid #21252c;border-top:1px solid var(--border);cursor:pointer;font-size:1.2rem;outline:none}summary:focus,summary:hover{text-decoration:underline}dialog{background-color:#0d1117;background-color:var(--background-body);color:#c9d1d9;color:var(--text-main);border-radius:6px;border:1px solid #21252c;border:1px solid var(--border);padding:10px 30px}dialog>header:first-child{border-radius:6px 6px 0 0;margin:-10px -30px 10px;padding:10px;text-align:center;border-bottom:1px solid #21252c;border-bottom:1px solid var(--border)}dialog::-webkit-backdrop{background:rgba(0,0,0,.611764705882353);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog::backdrop{background:rgba(0,0,0,.611764705882353);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}footer{border-top:1px solid #21252c;border-top:1px solid var(--border);padding-top:10px;color:#8b949e;color:var(--text-muted)}body>footer{margin-top:40px}@media print{body,button,code,details,input,pre,summary,textarea{background-color:#fff}button,input,textarea{border:1px solid #000}body,button,code,footer,h1,h2,h3,h4,h5,h6,input,pre,strong,summary,textarea{color:#000}summary::marker{color:#000}summary::-webkit-details-marker{color:#000}tbody tr:nth-child(2n){background-color:#f2f2f2}a{color:#00f;text-decoration:underline}}body nav:first-of-type{position:fixed;top:0;left:0;background:rgba(0,0,0,.5);padding:0 calc(50vw - 25rem);display:flex;align-items:center;width:100%;z-index:999}body nav:first-of-type:before{backdrop-filter:saturate(180%) blur(5px);-webkit-backdrop-filter:saturate(180%) blur(5px);content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0}body nav:first-of-type #brand{margin-right:auto;font-size:1.1rem}body nav:first-of-type a{margin:10px;display:inline-block}body nav:first-of-type ul{list-style-type:none;margin:0;padding:0;overflow:hidden;display:inline}body nav:first-of-type>ul>li{float:left}body nav:first-of-type ul li ul{display:none;position:absolute;background:rgba(0,0,0,.5);-webkit-backdrop-filter:saturate(180%) blur(5px);backdrop-filter:saturate(180%) blur(5px)}body nav:first-of-type ul li:hover ul{display:block}section{margin:20px 0}article{border:1px solid #21252c;border:1px solid var(--border);padding:20px;margin:10px 0;border-radius:.4em}article>:first-child,article>:first-child>:first-child{margin-top:0}article>:last-child,article>:last-child>:last-child{margin-bottom:0}button,input[type=button],input[type=reset],input[type=submit]{background:rgba(240,246,252,.15);background:var(--background-bright);border:1px solid #30363d;color:#e3e9f0;color:var(--text-bright);font-family:inherit;font-size:inherit;margin-right:.5rem;margin-bottom:.5rem;padding:5px 16px;border-radius:6px;outline:none;font-size:87.5%}button:hover,input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{border-color:#8b949e;filter:brightness(115%)}button:focus,input[type=button]:focus,input[type=reset]:focus,input[type=submit]:focus{border:1px solid #8b949e;box-shadow:none}button:active,input[type=button]:active,input[type=reset]:active,input[type=submit]:active{background:none}button:disabled,input[type=button]:disabled,input[type=reset]:disabled,input[type=submit]:disabled{border-color:#30363d} +/*# sourceMappingURL=bahunya.min.css.map */ diff --git a/src/argus_htmx/static/themes/bamboo.css b/src/argus_htmx/static/themes/bamboo.css new file mode 100644 index 000000000..cee0aba87 --- /dev/null +++ b/src/argus_htmx/static/themes/bamboo.css @@ -0,0 +1 @@ +:root{--b-font-main: system-ui, sans-serif;--b-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--b-txt: #2e3440;--b-bg-1: #fff;--b-bg-2: #eceff4;--b-line: #eceff4;--b-link: #bf616a;--b-btn-bg: #242933;--b-btn-txt: #fff;--b-focus: #88c0d0}@media(prefers-color-scheme: dark){:root{--b-txt: #eceff4;--b-bg-1: #2e3440;--b-bg-2: #3b4252;--b-line: #3b4252}}*,::before,::after{box-sizing:border-box}html:focus-within{scroll-behavior:smooth}body{max-width:70ch;padding:0 1rem;margin:auto;background:var(--b-bg-1);font-family:var(--b-font-main);text-rendering:optimizeSpeed;line-height:1.5;color:var(--b-txt);-moz-tab-size:4;tab-size:4;word-break:break-word;overflow-wrap:break-word;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%}h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,details,blockquote,pre,figure,table,address,hr,fieldset,iframe,audio,video{margin:0 0 1.5rem}h1,h2,h3,h4,h5,h6{line-height:1.25;margin-top:2rem;text-wrap:balance}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1rem}h5{font-size:.875rem}h6{font-size:.75rem}a{color:var(--b-link);text-decoration:none}a:hover{text-decoration:underline}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:700}blockquote{margin-left:0;margin-trim:block;padding:.5rem 0 .5rem 1.5rem;border-left:.25rem solid var(--b-txt)}small{font-size:.875rem}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}hr{height:0;border:0;border-bottom:1px solid var(--b-line)}pre,code,kbd,samp,tt,var{background:var(--b-bg-2);border-radius:.25rem;padding:.125rem .25rem;font-family:var(--b-font-mono);font-size:.875em}pre{padding:1rem;overflow:auto;white-space:pre}pre code{padding:0}details{display:block;padding:.5rem 1rem;background:var(--b-bg-2);border:1px solid var(--b-line);border-radius:.25rem;margin-trim:block}details[open]>summary{margin-bottom:1.5rem}summary{display:list-item;cursor:pointer;font-weight:bold}summary:focus{box-shadow:none}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:1px solid var(--b-line)}td,th{padding:.5rem 0 .5rem 1rem;word-break:normal}td:first-child,th:first-child{padding-left:0}th{text-align:left}ul,ol,dd{padding-left:2rem}li>ul,li>ol{margin-bottom:0}fieldset{padding:.5rem .75rem;border:1px solid var(--b-line);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}button,input,select,textarea{margin:0;padding:.5rem .75rem;max-width:100%;background:var(--b-bg-2);border:0;border-radius:.25rem;font:inherit;line-height:1.125;color:var(--b-txt)}button,select{text-transform:none}select,[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week]{width:100%}[type=image],[type=checkbox],[type=radio]{cursor:pointer}[type=color]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}button{touch-action:manipulation}button,[type=button],[type=submit],[type=reset]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--b-btn-bg);color:var(--b-btn-txt);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type=button]:hover,[type=submit]:hover,[type=reset]:hover{opacity:.75}button[disabled],[type=button][disabled],[type=submit][disabled],[type=reset][disabled]{opacity:.5}progress{vertical-align:baseline}[type=search]{-webkit-appearance:none;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.5}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}[aria-busy=true]{cursor:progress}[aria-disabled=true],[disabled]{cursor:not-allowed}:focus,details:focus-within{outline:none;box-shadow:0 0 0 2px var(--b-focus)}@media(prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,::before,::after{animation-delay:-1ms !important;animation-duration:1ms !important;animation-iteration-count:1 !important;background-attachment:initial !important;scroll-behavior:auto !important;transition-delay:0 !important;transition-duration:0 !important}}select:not([multiple]):not([size]){background-image:url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%232e3440'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E")}@media(prefers-color-scheme: dark){select:not([multiple]):not([size]){background-image:url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23eceff4'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E")}} diff --git a/src/argus_htmx/static/themes/default.css b/src/argus_htmx/static/themes/default.css new file mode 100644 index 000000000..2cba8ce42 --- /dev/null +++ b/src/argus_htmx/static/themes/default.css @@ -0,0 +1,3 @@ +body { +background-image: url("/static/themes/default/background.svg"); +} diff --git a/src/argus_htmx/static/themes/default/background.svg b/src/argus_htmx/static/themes/default/background.svg new file mode 100644 index 000000000..99382a3a4 --- /dev/null +++ b/src/argus_htmx/static/themes/default/background.svg @@ -0,0 +1 @@ + diff --git a/src/argus_htmx/static/themes/ebmf.css b/src/argus_htmx/static/themes/ebmf.css new file mode 100644 index 000000000..21a2c3810 --- /dev/null +++ b/src/argus_htmx/static/themes/ebmf.css @@ -0,0 +1,19 @@ +body { + margin: 5% auto; + background: #f2f2f2; + color: #444444; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 1.8; + text-shadow: 0 1px 0 #ffffff; + max-width: 73%; +} +code { + background: white; +} +a { + border-bottom: 1px solid #444444; + color: #444444; + text-decoration: none; +} +a:hover {border-bottom: 0;} diff --git a/src/argus_htmx/static/themes/kacit.min.css b/src/argus_htmx/static/themes/kacit.min.css new file mode 100644 index 000000000..c5fc27be8 --- /dev/null +++ b/src/argus_htmx/static/themes/kacit.min.css @@ -0,0 +1,3 @@ +input,textarea,select,button,option,html,body{font-family:Georgia,serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}input,textarea,select,button,option,html,body{font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}th{font-weight:600}td,th{border-bottom:1.08px solid #595959;overflow:auto;padding:14.85px 18px;text-align:left;vertical-align:top}thead th{border-bottom-width:2.16px;padding-bottom:6.3px}table{display:table;overflow-x:auto}input,textarea,select,button,option,html,body{font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}fieldset{display:flex;flex-direction:row;flex-wrap:wrap}fieldset legend{margin:18px 0}input,textarea,select,button{border-radius:3.6px;display:inline-block;padding:9.9px}input+label,input+input[type="checkbox"],input+input[type="radio"],textarea+label,textarea+input[type="checkbox"],textarea+input[type="radio"],select+label,select+input[type="checkbox"],select+input[type="radio"],button+label,button+input[type="checkbox"],button+input[type="radio"]{page-break-before:always}input,select,label{margin-right:3.6px}textarea{min-height:90px;min-width:360px}label{display:inline-block;margin-bottom:12.6px}label+*{page-break-before:always}label>input{margin-bottom:0}input[type="submit"],input[type="reset"],button{background:#f2f2f2;color:#191919;cursor:pointer;display:inline;margin-bottom:18px;margin-right:7.2px;padding:6.525px 23.4px;text-align:center}input[type="submit"]:hover,input[type="reset"]:hover,button:hover{background:#d9d9d9;color:#000}input[type="submit"][disabled],input[type="reset"][disabled],button[disabled]{background:#e6e5e5;color:#403f3f;cursor:not-allowed}input[type="submit"],button[type="submit"]{background:#b58d20;color:#fff}input[type="submit"]:hover,button[type="submit"]:hover{background:#6d5513;color:#bfbfbf}input,select,textarea{margin-bottom:18px}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="phone"],input[type="tel"],input[type="number"],input[type="datetime"],input[type="date"],input[type="month"],input[type="week"],input[type="color"],input[type="time"],input[type="search"],input[type="range"],input[type="file"],input[type="datetime-local"],select,textarea{border:1px solid #595959;padding:5.4px 6.3px}input[type="checkbox"],input[type="radio"]{flex-grow:0;height:29.7px;margin-left:0;margin-right:9px;vertical-align:middle}input[type="checkbox"]+label,input[type="radio"]+label{page-break-before:avoid}select[multiple]{min-width:270px}input,textarea,select,button,option,html,body{font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}pre,code,kbd,samp,var,output{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14.4px}pre{border-left:1.8px solid #59c072;line-height:25.2px;overflow:auto;padding-left:18px}pre code{background:none;border:0;line-height:29.7px;padding:0}code,kbd{background:#daf1e0;border-radius:3.6px;color:#2a6f3b;display:inline-block;line-height:18px;padding:3.6px 6.3px 2.7px}kbd{background:#2a6f3b;color:#fff}mark{background:#ffc;padding:0 3.6px}input,textarea,select,button,option,html,body{font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}h1,h2,h3,h4,h5,h6{color:#000;margin-bottom:18px}h1{font-size:36px;font-weight:500;line-height:41.4px;margin-top:72px}h2{font-size:25.2px;font-weight:400;line-height:30.6px;margin-top:54px}h3{font-size:21.6px;line-height:27px;margin-top:36px}h4{font-size:18px;line-height:23.4px;margin-top:18px}h5{font-size:14.4px;font-weight:bold;line-height:21.6px;text-transform:uppercase}h6{color:#595959;font-size:14.4px;font-weight:bold;line-height:18px;text-transform:uppercase}input,textarea,select,button,option,html,body{font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}a{color:#b58d20;text-decoration:none}a:hover{text-decoration:underline}hr{border-bottom:1px solid #595959}figcaption,small{font-size:15.3px}figcaption{color:#595959}var,em,i{font-style:italic}dt,strong,b{font-weight:600}del,s{text-decoration:line-through}ins,u{text-decoration:underline}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}*{border:0;border-collapse:separate;border-spacing:0;box-sizing:border-box;margin:0;max-width:100%;outline:0;padding:0;vertical-align:baseline}html,body{width:100%}html{height:100%}body{background:#f5f5f5;color:#1a1919;padding:36px}p,ul,ol,dl,blockquote,hr,pre,table,form,fieldset,figure,address{margin-bottom:29.7px}section{margin-left:auto;margin-right:auto;width:900px}article,header,footer{padding:43.2px}article{background:#fff;border:1px solid #d9d9d9;border-radius:7.2px}nav{text-align:center}nav ul{list-style:none;margin-left:0;text-align:center}nav ul li{display:inline-block;margin-left:9px;margin-right:9px;vertical-align:middle}nav ul li:first-child{margin-left:0}nav ul li:last-child{margin-right:0}ol,ul{margin-left:31.5px}li dl,li ol,li ul{margin-bottom:0}dl{display:inline-block}dt{padding:0 18px}dd{padding:0 18px 4.5px}dd:last-of-type{border-bottom:1.08px solid #595959}dd+dt{border-top:1.08px solid #595959;padding-top:9px}blockquote{border-left:2.16px solid #595959;padding:4.5px 18px 4.5px 15.84px}blockquote footer{color:#595959;font-size:13.5px;margin:0}blockquote p{margin-bottom:0}img{height:auto;margin:0 auto}figure img{display:block}@media (max-width: 767px){body{padding:18px 0}article{border:0;padding:18px}header,footer{padding:18px}textarea,input,select{min-width:0}fieldset{min-width:0}fieldset *{flex-grow:1;page-break-before:auto}section{width:auto}x:-moz-any-link{display:table-cell}} + +/*# sourceMappingURL=kacit.min.css.map */ diff --git a/src/argus_htmx/static/themes/mini-default.min.css b/src/argus_htmx/static/themes/mini-default.min.css new file mode 100644 index 000000000..33dfdf7d9 --- /dev/null +++ b/src/argus_htmx/static/themes/mini-default.min.css @@ -0,0 +1 @@ +:root{--fore-color:#111;--secondary-fore-color:#444;--back-color:#f8f8f8;--secondary-back-color:#f0f0f0;--blockquote-color:#f57c00;--pre-color:#1565c0;--border-color:#aaa;--secondary-border-color:#ddd;--heading-ratio:1.19;--universal-margin:.5rem;--universal-padding:.5rem;--universal-border-radius:.125rem;--a-link-color:#0277bd;--a-visited-color:#01579b}html{font-size:16px}a,b,del,em,i,ins,q,span,strong,u{font-size:1em}html,*{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, sans-serif;line-height:1.5;-webkit-text-size-adjust:100%}*{font-size:1rem}body{margin:0;color:var(--fore-color);background:var(--back-color)}details{display:block}summary{display:list-item}abbr[title]{border-bottom:none;text-decoration:underline dotted}input{overflow:visible}img{max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{line-height:1.2;margin:calc(1.5 * var(--universal-margin)) var(--universal-margin);font-weight:500}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:var(--secondary-fore-color);display:block;margin-top:-.25rem}h1{font-size:calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio))}h2{font-size:calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio))}h3{font-size:calc(1rem * var(--heading-ratio) * var(--heading-ratio))}h4{font-size:calc(1rem * var(--heading-ratio))}h5{font-size:1rem}h6{font-size:calc(1rem / var(--heading-ratio))}p{margin:var(--universal-margin)}ol,ul{margin:var(--universal-margin);padding-left:calc(2 * var(--universal-margin))}b,strong{font-weight:700}hr{box-sizing:content-box;border:0;line-height:1.25em;margin:var(--universal-margin);height:.0625rem;background:linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent)}blockquote{display:block;position:relative;font-style:italic;color:var(--secondary-fore-color);margin:var(--universal-margin);padding:calc(3 * var(--universal-padding));border:.0625rem solid var(--secondary-border-color);border-left:.375rem solid var(--blockquote-color);border-radius:0 var(--universal-border-radius) var(--universal-border-radius) 0}blockquote:before{position:absolute;top:calc(0rem - var(--universal-padding));left:0;font-family:sans-serif;font-size:3rem;font-weight:700;content:"\201c";color:var(--blockquote-color)}blockquote[cite]:after{font-style:normal;font-size:.75em;font-weight:700;content:"\a— " attr(cite);white-space:pre}code,kbd,pre,samp{font-family:Menlo, Consolas, monospace;font-size:.85em}code{background:var(--secondary-back-color);border-radius:var(--universal-border-radius);padding:calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2)}kbd{background:var(--fore-color);color:var(--back-color);border-radius:var(--universal-border-radius);padding:calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2)}pre{overflow:auto;background:var(--secondary-back-color);padding:calc(1.5 * var(--universal-padding));margin:var(--universal-margin);border:.0625rem solid var(--secondary-border-color);border-left:.25rem solid var(--pre-color);border-radius:0 var(--universal-border-radius) var(--universal-border-radius) 0}sup,sub,code,kbd{line-height:0;position:relative;vertical-align:baseline}small,sup,sub,figcaption{font-size:.75em}sup{top:-.5em}sub{bottom:-.25em}figure{margin:var(--universal-margin)}figcaption{color:var(--secondary-fore-color)}a{text-decoration:none}a:link{color:var(--a-link-color)}a:visited{color:var(--a-visited-color)}a:hover,a:focus{text-decoration:underline}.container{margin:0 auto;padding:0 calc(1.5 * var(--universal-padding))}.row{box-sizing:border-box;display:flex;flex:0 1 auto;flex-flow:row wrap}.col-sm,[class^='col-sm-'],[class^='col-sm-offset-'],.row[class*='cols-sm-']>*{box-sizing:border-box;flex:0 0 auto;padding:0 calc(var(--universal-padding) / 2)}.col-sm,.row.cols-sm>*{max-width:100%;flex-grow:1;flex-basis:0}.col-sm-1,.row.cols-sm-1>*{max-width:8.33333%;flex-basis:8.33333%}.col-sm-offset-0{margin-left:0}.col-sm-2,.row.cols-sm-2>*{max-width:16.66667%;flex-basis:16.66667%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-3,.row.cols-sm-3>*{max-width:25%;flex-basis:25%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-4,.row.cols-sm-4>*{max-width:33.33333%;flex-basis:33.33333%}.col-sm-offset-3{margin-left:25%}.col-sm-5,.row.cols-sm-5>*{max-width:41.66667%;flex-basis:41.66667%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-6,.row.cols-sm-6>*{max-width:50%;flex-basis:50%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-7,.row.cols-sm-7>*{max-width:58.33333%;flex-basis:58.33333%}.col-sm-offset-6{margin-left:50%}.col-sm-8,.row.cols-sm-8>*{max-width:66.66667%;flex-basis:66.66667%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-9,.row.cols-sm-9>*{max-width:75%;flex-basis:75%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-10,.row.cols-sm-10>*{max-width:83.33333%;flex-basis:83.33333%}.col-sm-offset-9{margin-left:75%}.col-sm-11,.row.cols-sm-11>*{max-width:91.66667%;flex-basis:91.66667%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-12,.row.cols-sm-12>*{max-width:100%;flex-basis:100%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-normal{order:initial}.col-sm-first{order:-999}.col-sm-last{order:999}@media screen and (min-width: 768px){.col-md,[class^='col-md-'],[class^='col-md-offset-'],.row[class*='cols-md-']>*{box-sizing:border-box;flex:0 0 auto;padding:0 calc(var(--universal-padding) / 2)}.col-md,.row.cols-md>*{max-width:100%;flex-grow:1;flex-basis:0}.col-md-1,.row.cols-md-1>*{max-width:8.33333%;flex-basis:8.33333%}.col-md-offset-0{margin-left:0}.col-md-2,.row.cols-md-2>*{max-width:16.66667%;flex-basis:16.66667%}.col-md-offset-1{margin-left:8.33333%}.col-md-3,.row.cols-md-3>*{max-width:25%;flex-basis:25%}.col-md-offset-2{margin-left:16.66667%}.col-md-4,.row.cols-md-4>*{max-width:33.33333%;flex-basis:33.33333%}.col-md-offset-3{margin-left:25%}.col-md-5,.row.cols-md-5>*{max-width:41.66667%;flex-basis:41.66667%}.col-md-offset-4{margin-left:33.33333%}.col-md-6,.row.cols-md-6>*{max-width:50%;flex-basis:50%}.col-md-offset-5{margin-left:41.66667%}.col-md-7,.row.cols-md-7>*{max-width:58.33333%;flex-basis:58.33333%}.col-md-offset-6{margin-left:50%}.col-md-8,.row.cols-md-8>*{max-width:66.66667%;flex-basis:66.66667%}.col-md-offset-7{margin-left:58.33333%}.col-md-9,.row.cols-md-9>*{max-width:75%;flex-basis:75%}.col-md-offset-8{margin-left:66.66667%}.col-md-10,.row.cols-md-10>*{max-width:83.33333%;flex-basis:83.33333%}.col-md-offset-9{margin-left:75%}.col-md-11,.row.cols-md-11>*{max-width:91.66667%;flex-basis:91.66667%}.col-md-offset-10{margin-left:83.33333%}.col-md-12,.row.cols-md-12>*{max-width:100%;flex-basis:100%}.col-md-offset-11{margin-left:91.66667%}.col-md-normal{order:initial}.col-md-first{order:-999}.col-md-last{order:999}}@media screen and (min-width: 1280px){.col-lg,[class^='col-lg-'],[class^='col-lg-offset-'],.row[class*='cols-lg-']>*{box-sizing:border-box;flex:0 0 auto;padding:0 calc(var(--universal-padding) / 2)}.col-lg,.row.cols-lg>*{max-width:100%;flex-grow:1;flex-basis:0}.col-lg-1,.row.cols-lg-1>*{max-width:8.33333%;flex-basis:8.33333%}.col-lg-offset-0{margin-left:0}.col-lg-2,.row.cols-lg-2>*{max-width:16.66667%;flex-basis:16.66667%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-3,.row.cols-lg-3>*{max-width:25%;flex-basis:25%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-4,.row.cols-lg-4>*{max-width:33.33333%;flex-basis:33.33333%}.col-lg-offset-3{margin-left:25%}.col-lg-5,.row.cols-lg-5>*{max-width:41.66667%;flex-basis:41.66667%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-6,.row.cols-lg-6>*{max-width:50%;flex-basis:50%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-7,.row.cols-lg-7>*{max-width:58.33333%;flex-basis:58.33333%}.col-lg-offset-6{margin-left:50%}.col-lg-8,.row.cols-lg-8>*{max-width:66.66667%;flex-basis:66.66667%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-9,.row.cols-lg-9>*{max-width:75%;flex-basis:75%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-10,.row.cols-lg-10>*{max-width:83.33333%;flex-basis:83.33333%}.col-lg-offset-9{margin-left:75%}.col-lg-11,.row.cols-lg-11>*{max-width:91.66667%;flex-basis:91.66667%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-12,.row.cols-lg-12>*{max-width:100%;flex-basis:100%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-normal{order:initial}.col-lg-first{order:-999}.col-lg-last{order:999}}:root{--card-back-color:#f8f8f8;--card-fore-color:#111;--card-border-color:#ddd}.card{display:flex;flex-direction:column;justify-content:space-between;align-self:center;position:relative;width:100%;background:var(--card-back-color);color:var(--card-fore-color);border:.0625rem solid var(--card-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin);overflow:hidden}@media screen and (min-width: 320px){.card{max-width:320px}}.card>.section{background:var(--card-back-color);color:var(--card-fore-color);box-sizing:border-box;margin:0;border:0;border-radius:0;border-bottom:.0625rem solid var(--card-border-color);padding:var(--universal-padding);width:100%}.card>.section.media{height:200px;padding:0;-o-object-fit:cover;object-fit:cover}.card>.section:last-child{border-bottom:0}@media screen and (min-width: 240px){.card.small{max-width:240px}}@media screen and (min-width: 480px){.card.large{max-width:480px}}.card.fluid{max-width:100%;width:auto}.card.warning{--card-back-color:#ffca28;--card-border-color:#e8b825}.card.error{--card-back-color:#b71c1c;--card-fore-color:#f8f8f8;--card-border-color:#a71a1a}.card>.section.dark{--card-back-color:#e0e0e0}.card>.section.double-padded{padding:calc(1.5 * var(--universal-padding))}:root{--form-back-color:#f0f0f0;--form-fore-color:#111;--form-border-color:#ddd;--input-back-color:#f8f8f8;--input-fore-color:#111;--input-border-color:#ddd;--input-focus-color:#0288d1;--input-invalid-color:#d32f2f;--button-back-color:#e2e2e2;--button-hover-back-color:#dcdcdc;--button-fore-color:#212121;--button-border-color:rgba(0,0,0,0);--button-hover-border-color:rgba(0,0,0,0);--button-group-border-color:rgba(124,124,124,0.54)}form{background:var(--form-back-color);color:var(--form-fore-color);border:.0625rem solid var(--form-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin);padding:calc(2 * var(--universal-padding)) var(--universal-padding)}fieldset{border:.0625rem solid var(--form-border-color);border-radius:var(--universal-border-radius);margin:calc(var(--universal-margin) / 4);padding:var(--universal-padding)}legend{box-sizing:border-box;display:table;max-width:100%;white-space:normal;font-weight:700;padding:calc(var(--universal-padding) / 2)}label{padding:calc(var(--universal-padding) / 2) var(--universal-padding)}.input-group{display:inline-block}.input-group.fluid{display:flex;align-items:center;justify-content:center}.input-group.fluid>input{max-width:100%;flex-grow:1;flex-basis:0px}@media screen and (max-width: 767px){.input-group.fluid{align-items:stretch;flex-direction:column}}.input-group.vertical{display:flex;align-items:stretch;flex-direction:column}.input-group.vertical>input{max-width:100%;flex-grow:1;flex-basis:0px}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input:not([type]),[type="text"],[type="email"],[type="number"],[type="search"],[type="password"],[type="url"],[type="tel"],[type="checkbox"],[type="radio"],textarea,select{box-sizing:border-box;background:var(--input-back-color);color:var(--input-fore-color);border:.0625rem solid var(--input-border-color);border-radius:var(--universal-border-radius);margin:calc(var(--universal-margin) / 2);padding:var(--universal-padding) calc(1.5 * var(--universal-padding))}input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover,input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus,textarea:hover,textarea:focus,select:hover,select:focus{border-color:var(--input-focus-color);box-shadow:none}input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid,input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid,textarea:invalid,textarea:focus:invalid,select:invalid,select:focus:invalid{border-color:var(--input-invalid-color);box-shadow:none}input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly],textarea[readonly],select[readonly]{background:var(--secondary-back-color)}select{max-width:100%}option{overflow:hidden;text-overflow:ellipsis}[type="checkbox"],[type="radio"]{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;height:calc(1rem + var(--universal-padding) / 2);width:calc(1rem + var(--universal-padding) / 2);vertical-align:text-bottom;padding:0;flex-basis:calc(1rem + var(--universal-padding) / 2) !important;flex-grow:0 !important}[type="checkbox"]:checked:before,[type="radio"]:checked:before{position:absolute}[type="checkbox"]:checked:before{content:'\2713';font-family:sans-serif;font-size:calc(1rem + var(--universal-padding) / 2);top:calc(0rem - var(--universal-padding));left:calc(var(--universal-padding) / 4)}[type="radio"]{border-radius:100%}[type="radio"]:checked:before{border-radius:100%;content:'';top:calc(.0625rem + var(--universal-padding) / 2);left:calc(.0625rem + var(--universal-padding) / 2);background:var(--input-fore-color);width:0.5rem;height:0.5rem}:placeholder-shown{color:var(--input-fore-color)}::-ms-placeholder{color:var(--input-fore-color);opacity:0.54}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button{overflow:visible;text-transform:none}button,[type="button"],[type="submit"],[type="reset"],a.button,label.button,.button,a[role="button"],label[role="button"],[role="button"]{display:inline-block;background:var(--button-back-color);color:var(--button-fore-color);border:.0625rem solid var(--button-border-color);border-radius:var(--universal-border-radius);padding:var(--universal-padding) calc(1.5 * var(--universal-padding));margin:var(--universal-margin);text-decoration:none;cursor:pointer;transition:background 0.3s}button:hover,button:focus,[type="button"]:hover,[type="button"]:focus,[type="submit"]:hover,[type="submit"]:focus,[type="reset"]:hover,[type="reset"]:focus,a.button:hover,a.button:focus,label.button:hover,label.button:focus,.button:hover,.button:focus,a[role="button"]:hover,a[role="button"]:focus,label[role="button"]:hover,label[role="button"]:focus,[role="button"]:hover,[role="button"]:focus{background:var(--button-hover-back-color);border-color:var(--button-hover-border-color)}input:disabled,input[disabled],textarea:disabled,textarea[disabled],select:disabled,select[disabled],button:disabled,button[disabled],.button:disabled,.button[disabled],[role="button"]:disabled,[role="button"][disabled]{cursor:not-allowed;opacity:.75}.button-group{display:flex;border:.0625rem solid var(--button-group-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin)}.button-group>button,.button-group [type="button"],.button-group>[type="submit"],.button-group>[type="reset"],.button-group>.button,.button-group>[role="button"]{margin:0;max-width:100%;flex:1 1 auto;text-align:center;border:0;border-radius:0;box-shadow:none}.button-group>:not(:first-child){border-left:.0625rem solid var(--button-group-border-color)}@media screen and (max-width: 767px){.button-group{flex-direction:column}.button-group>:not(:first-child){border:0;border-top:.0625rem solid var(--button-group-border-color)}}button.primary,[type="button"].primary,[type="submit"].primary,[type="reset"].primary,.button.primary,[role="button"].primary{--button-back-color:#1976d2;--button-fore-color:#f8f8f8}button.primary:hover,button.primary:focus,[type="button"].primary:hover,[type="button"].primary:focus,[type="submit"].primary:hover,[type="submit"].primary:focus,[type="reset"].primary:hover,[type="reset"].primary:focus,.button.primary:hover,.button.primary:focus,[role="button"].primary:hover,[role="button"].primary:focus{--button-hover-back-color:#1565c0}button.secondary,[type="button"].secondary,[type="submit"].secondary,[type="reset"].secondary,.button.secondary,[role="button"].secondary{--button-back-color:#d32f2f;--button-fore-color:#f8f8f8}button.secondary:hover,button.secondary:focus,[type="button"].secondary:hover,[type="button"].secondary:focus,[type="submit"].secondary:hover,[type="submit"].secondary:focus,[type="reset"].secondary:hover,[type="reset"].secondary:focus,.button.secondary:hover,.button.secondary:focus,[role="button"].secondary:hover,[role="button"].secondary:focus{--button-hover-back-color:#c62828}button.tertiary,[type="button"].tertiary,[type="submit"].tertiary,[type="reset"].tertiary,.button.tertiary,[role="button"].tertiary{--button-back-color:#308732;--button-fore-color:#f8f8f8}button.tertiary:hover,button.tertiary:focus,[type="button"].tertiary:hover,[type="button"].tertiary:focus,[type="submit"].tertiary:hover,[type="submit"].tertiary:focus,[type="reset"].tertiary:hover,[type="reset"].tertiary:focus,.button.tertiary:hover,.button.tertiary:focus,[role="button"].tertiary:hover,[role="button"].tertiary:focus{--button-hover-back-color:#277529}button.inverse,[type="button"].inverse,[type="submit"].inverse,[type="reset"].inverse,.button.inverse,[role="button"].inverse{--button-back-color:#212121;--button-fore-color:#f8f8f8}button.inverse:hover,button.inverse:focus,[type="button"].inverse:hover,[type="button"].inverse:focus,[type="submit"].inverse:hover,[type="submit"].inverse:focus,[type="reset"].inverse:hover,[type="reset"].inverse:focus,.button.inverse:hover,.button.inverse:focus,[role="button"].inverse:hover,[role="button"].inverse:focus{--button-hover-back-color:#111}button.small,[type="button"].small,[type="submit"].small,[type="reset"].small,.button.small,[role="button"].small{padding:calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding));margin:var(--universal-margin)}button.large,[type="button"].large,[type="submit"].large,[type="reset"].large,.button.large,[role="button"].large{padding:calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding));margin:var(--universal-margin)}:root{--header-back-color:#f8f8f8;--header-hover-back-color:#f0f0f0;--header-fore-color:#444;--header-border-color:#ddd;--nav-back-color:#f8f8f8;--nav-hover-back-color:#f0f0f0;--nav-fore-color:#444;--nav-border-color:#ddd;--nav-link-color:#0277bd;--footer-fore-color:#444;--footer-back-color:#f8f8f8;--footer-border-color:#ddd;--footer-link-color:#0277bd;--drawer-back-color:#f8f8f8;--drawer-hover-back-color:#f0f0f0;--drawer-border-color:#ddd;--drawer-close-color:#444}header{height:3.1875rem;background:var(--header-back-color);color:var(--header-fore-color);border-bottom:.0625rem solid var(--header-border-color);padding:calc(var(--universal-padding) / 4) 0;white-space:nowrap;overflow-x:auto;overflow-y:hidden}header.row{box-sizing:content-box}header .logo{color:var(--header-fore-color);font-size:1.75rem;padding:var(--universal-padding) calc(2 * var(--universal-padding));text-decoration:none}header button,header [type="button"],header .button,header [role="button"]{box-sizing:border-box;position:relative;top:calc(0rem - var(--universal-padding) / 4);height:calc(3.1875rem + var(--universal-padding) / 2);background:var(--header-back-color);line-height:calc(3.1875rem - var(--universal-padding) * 1.5);text-align:center;color:var(--header-fore-color);border:0;border-radius:0;margin:0;text-transform:uppercase}header button:hover,header button:focus,header [type="button"]:hover,header [type="button"]:focus,header .button:hover,header .button:focus,header [role="button"]:hover,header [role="button"]:focus{background:var(--header-hover-back-color)}nav{background:var(--nav-back-color);color:var(--nav-fore-color);border:.0625rem solid var(--nav-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin)}nav *{padding:var(--universal-padding) calc(1.5 * var(--universal-padding))}nav a,nav a:visited{display:block;color:var(--nav-link-color);border-radius:var(--universal-border-radius);transition:background 0.3s}nav a:hover,nav a:focus,nav a:visited:hover,nav a:visited:focus{text-decoration:none;background:var(--nav-hover-back-color)}nav .sublink-1{position:relative;margin-left:calc(2 * var(--universal-padding))}nav .sublink-1:before{position:absolute;left:calc(var(--universal-padding) - 1 * var(--universal-padding));top:-.0625rem;content:'';height:100%;border:.0625rem solid var(--nav-border-color);border-left:0}nav .sublink-2{position:relative;margin-left:calc(4 * var(--universal-padding))}nav .sublink-2:before{position:absolute;left:calc(var(--universal-padding) - 3 * var(--universal-padding));top:-.0625rem;content:'';height:100%;border:.0625rem solid var(--nav-border-color);border-left:0}footer{background:var(--footer-back-color);color:var(--footer-fore-color);border-top:.0625rem solid var(--footer-border-color);padding:calc(2 * var(--universal-padding)) var(--universal-padding);font-size:.875rem}footer a,footer a:visited{color:var(--footer-link-color)}header.sticky{position:-webkit-sticky;position:sticky;z-index:1101;top:0}footer.sticky{position:-webkit-sticky;position:sticky;z-index:1101;bottom:0}.drawer-toggle:before{display:inline-block;position:relative;vertical-align:bottom;content:'\00a0\2261\00a0';font-family:sans-serif;font-size:1.5em}@media screen and (min-width: 768px){.drawer-toggle:not(.persistent){display:none}}[type="checkbox"].drawer{height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}[type="checkbox"].drawer+*{display:block;box-sizing:border-box;position:fixed;top:0;width:320px;height:100vh;overflow-y:auto;background:var(--drawer-back-color);border:.0625rem solid var(--drawer-border-color);border-radius:0;margin:0;z-index:1110;right:-320px;transition:right 0.3s}[type="checkbox"].drawer+* .drawer-close{position:absolute;top:var(--universal-margin);right:var(--universal-margin);z-index:1111;width:2rem;height:2rem;border-radius:var(--universal-border-radius);padding:var(--universal-padding);margin:0;cursor:pointer;transition:background 0.3s}[type="checkbox"].drawer+* .drawer-close:before{display:block;content:'\00D7';color:var(--drawer-close-color);position:relative;font-family:sans-serif;font-size:2rem;line-height:1;text-align:center}[type="checkbox"].drawer+* .drawer-close:hover,[type="checkbox"].drawer+* .drawer-close:focus{background:var(--drawer-hover-back-color)}@media screen and (max-width: 320px){[type="checkbox"].drawer+*{width:100%}}[type="checkbox"].drawer:checked+*{right:0}@media screen and (min-width: 768px){[type="checkbox"].drawer:not(.persistent)+*{position:static;height:100%;z-index:1100}[type="checkbox"].drawer:not(.persistent)+* .drawer-close{display:none}}:root{--table-border-color:#aaa;--table-border-separator-color:#666;--table-head-back-color:#e6e6e6;--table-head-fore-color:#111;--table-body-back-color:#f8f8f8;--table-body-fore-color:#111;--table-body-alt-back-color:#eee}table{border-collapse:separate;border-spacing:0;margin:0;display:flex;flex:0 1 auto;flex-flow:row wrap;padding:var(--universal-padding);padding-top:0}table caption{font-size:1.5rem;margin:calc(2 * var(--universal-margin)) 0;max-width:100%;flex:0 0 100%}table thead,table tbody{display:flex;flex-flow:row wrap;border:.0625rem solid var(--table-border-color)}table thead{z-index:999;border-radius:var(--universal-border-radius) var(--universal-border-radius) 0 0;border-bottom:.0625rem solid var(--table-border-separator-color)}table tbody{border-top:0;margin-top:calc(0 - var(--universal-margin));border-radius:0 0 var(--universal-border-radius) var(--universal-border-radius)}table tr{display:flex;padding:0}table th,table td{padding:calc(2 * var(--universal-padding))}table th{text-align:left;background:var(--table-head-back-color);color:var(--table-head-fore-color)}table td{background:var(--table-body-back-color);color:var(--table-body-fore-color);border-top:.0625rem solid var(--table-border-color)}table:not(.horizontal){overflow:auto;max-height:400px}table:not(.horizontal) thead,table:not(.horizontal) tbody{max-width:100%;flex:0 0 100%}table:not(.horizontal) tr{flex-flow:row wrap;flex:0 0 100%}table:not(.horizontal) th,table:not(.horizontal) td{flex:1 0 0%;overflow:hidden;text-overflow:ellipsis}table:not(.horizontal) thead{position:sticky;top:0}table:not(.horizontal) tbody tr:first-child td{border-top:0}table.horizontal{border:0}table.horizontal thead,table.horizontal tbody{border:0;flex:.2 0 0;flex-flow:row nowrap}table.horizontal tbody{overflow:auto;justify-content:space-between;flex:.8 0 0;margin-left:0;padding-bottom:calc(var(--universal-padding) / 4)}table.horizontal tr{flex-direction:column;flex:1 0 auto}table.horizontal th,table.horizontal td{width:auto;border:0;border-bottom:.0625rem solid var(--table-border-color)}table.horizontal th:not(:first-child),table.horizontal td:not(:first-child){border-top:0}table.horizontal th{text-align:right;border-left:.0625rem solid var(--table-border-color);border-right:.0625rem solid var(--table-border-separator-color)}table.horizontal thead tr:first-child{padding-left:0}table.horizontal th:first-child,table.horizontal td:first-child{border-top:.0625rem solid var(--table-border-color)}table.horizontal tbody tr:last-child td{border-right:.0625rem solid var(--table-border-color)}table.horizontal tbody tr:last-child td:first-child{border-top-right-radius:0.25rem}table.horizontal tbody tr:last-child td:last-child{border-bottom-right-radius:0.25rem}table.horizontal thead tr:first-child th:first-child{border-top-left-radius:0.25rem}table.horizontal thead tr:first-child th:last-child{border-bottom-left-radius:0.25rem}@media screen and (max-width: 767px){table,table.horizontal{border-collapse:collapse;border:0;width:100%;display:table}table thead,table th,table.horizontal thead,table.horizontal th{border:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}table tbody,table.horizontal tbody{border:0;display:table-row-group}table tr,table.horizontal tr{display:block;border:.0625rem solid var(--table-border-color);border-radius:var(--universal-border-radius);background:#fafafa;padding:var(--universal-padding);margin:var(--universal-margin);margin-bottom:calc(2 * var(--universal-margin))}table th,table td,table.horizontal th,table.horizontal td{width:auto}table td,table.horizontal td{display:block;border:0;text-align:right}table td:before,table.horizontal td:before{content:attr(data-label);float:left;font-weight:600}table th:first-child,table td:first-child,table.horizontal th:first-child,table.horizontal td:first-child{border-top:0}table tbody tr:last-child td,table.horizontal tbody tr:last-child td{border-right:0}}:root{--table-body-alt-back-color:#eee}table.striped tr:nth-of-type(2n)>td{background:var(--table-body-alt-back-color)}@media screen and (max-width: 768px){table.striped tr:nth-of-type(2n){background:var(--table-body-alt-back-color)}}:root{--table-body-hover-back-color:#90caf9}table.hoverable tr:hover,table.hoverable tr:hover>td,table.hoverable tr:focus,table.hoverable tr:focus>td{background:var(--table-body-hover-back-color)}@media screen and (max-width: 768px){table.hoverable tr:hover,table.hoverable tr:hover>td,table.hoverable tr:focus,table.hoverable tr:focus>td{background:var(--table-body-hover-back-color)}}:root{--mark-back-color:#0277bd;--mark-fore-color:#fafafa}mark{background:var(--mark-back-color);color:var(--mark-fore-color);font-size:.95em;line-height:1em;border-radius:var(--universal-border-radius);padding:calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2)}mark.inline-block{display:inline-block;font-size:1em;line-height:1.5;padding:calc(var(--universal-padding) / 2) var(--universal-padding)}:root{--toast-back-color:#424242;--toast-fore-color:#fafafa}.toast{position:fixed;bottom:calc(var(--universal-margin) * 3);left:50%;transform:translate(-50%, -50%);z-index:1111;color:var(--toast-fore-color);background:var(--toast-back-color);border-radius:calc(var(--universal-border-radius) * 16);padding:var(--universal-padding) calc(var(--universal-padding) * 3)}:root{--tooltip-back-color:#212121;--tooltip-fore-color:#fafafa}.tooltip{position:relative;display:inline-block}.tooltip:before,.tooltip:after{position:absolute;opacity:0;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%);transition:all 0.3s;z-index:1010;left:50%}.tooltip:not(.bottom):before,.tooltip:not(.bottom):after{bottom:75%}.tooltip.bottom:before,.tooltip.bottom:after{top:75%}.tooltip:hover:before,.tooltip:hover:after,.tooltip:focus:before,.tooltip:focus:after{opacity:1;clip:auto;-webkit-clip-path:inset(0%);clip-path:inset(0%)}.tooltip:before{content:'';background:transparent;border:var(--universal-margin) solid transparent;left:calc(50% - var(--universal-margin))}.tooltip:not(.bottom):before{border-top-color:#212121}.tooltip.bottom:before{border-bottom-color:#212121}.tooltip:after{content:attr(aria-label);color:var(--tooltip-fore-color);background:var(--tooltip-back-color);border-radius:var(--universal-border-radius);padding:var(--universal-padding);white-space:nowrap;transform:translateX(-50%)}.tooltip:not(.bottom):after{margin-bottom:calc(2 * var(--universal-margin))}.tooltip.bottom:after{margin-top:calc(2 * var(--universal-margin))}:root{--modal-overlay-color:rgba(0,0,0,0.45);--modal-close-color:#444;--modal-close-hover-color:#f0f0f0}[type="checkbox"].modal{height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}[type="checkbox"].modal+div{position:fixed;top:0;left:0;display:none;width:100vw;height:100vh;background:var(--modal-overlay-color)}[type="checkbox"].modal+div .card{margin:0 auto;max-height:50vh;overflow:auto}[type="checkbox"].modal+div .card .modal-close{position:absolute;top:0;right:0;width:1.75rem;height:1.75rem;border-radius:var(--universal-border-radius);padding:var(--universal-padding);margin:0;cursor:pointer;transition:background 0.3s}[type="checkbox"].modal+div .card .modal-close:before{display:block;content:'\00D7';color:var(--modal-close-color);position:relative;font-family:sans-serif;font-size:1.75rem;line-height:1;text-align:center}[type="checkbox"].modal+div .card .modal-close:hover,[type="checkbox"].modal+div .card .modal-close:focus{background:var(--modal-close-hover-color)}[type="checkbox"].modal:checked+div{display:flex;flex:0 1 auto;z-index:1200}[type="checkbox"].modal:checked+div .card .modal-close{z-index:1211}:root{--collapse-label-back-color:#e8e8e8;--collapse-label-fore-color:#212121;--collapse-label-hover-back-color:#f0f0f0;--collapse-selected-label-back-color:#ececec;--collapse-border-color:#ddd;--collapse-content-back-color:#fafafa;--collapse-selected-label-border-color:#0277bd}.collapse{width:calc(100% - 2 * var(--universal-margin));opacity:1;display:flex;flex-direction:column;margin:var(--universal-margin);border-radius:var(--universal-border-radius)}.collapse>[type="radio"],.collapse>[type="checkbox"]{height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}.collapse>label{flex-grow:1;display:inline-block;height:1.5rem;cursor:pointer;transition:background 0.3s;color:var(--collapse-label-fore-color);background:var(--collapse-label-back-color);border:.0625rem solid var(--collapse-border-color);padding:calc(1.5 * var(--universal-padding))}.collapse>label:hover,.collapse>label:focus{background:var(--collapse-label-hover-back-color)}.collapse>label+div{flex-basis:auto;height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%);transition:max-height 0.3s;max-height:1px}.collapse>:checked+label{background:var(--collapse-selected-label-back-color);border-bottom-color:var(--collapse-selected-label-border-color)}.collapse>:checked+label+div{box-sizing:border-box;position:relative;width:100%;height:auto;overflow:auto;margin:0;background:var(--collapse-content-back-color);border:.0625rem solid var(--collapse-border-color);border-top:0;padding:var(--universal-padding);clip:auto;-webkit-clip-path:inset(0%);clip-path:inset(0%);max-height:400px}.collapse>label:not(:first-of-type){border-top:0}.collapse>label:first-of-type{border-radius:var(--universal-border-radius) var(--universal-border-radius) 0 0}.collapse>label:last-of-type:not(:first-of-type){border-radius:0 0 var(--universal-border-radius) var(--universal-border-radius)}.collapse>label:last-of-type:first-of-type{border-radius:var(--universal-border-radius)}.collapse>:checked:last-of-type:not(:first-of-type)+label{border-radius:0}.collapse>:checked:last-of-type+label+div{border-radius:0 0 var(--universal-border-radius) var(--universal-border-radius)}mark.secondary{--mark-back-color:#d32f2f}mark.tertiary{--mark-back-color:#308732}mark.tag{padding:calc(var(--universal-padding)/2) var(--universal-padding);border-radius:1em}:root{--progress-back-color:#ddd;--progress-fore-color:#555}progress{display:block;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:.75rem;width:calc(100% - 2 * var(--universal-margin));margin:var(--universal-margin);border:0;border-radius:calc(2 * var(--universal-border-radius));background:var(--progress-back-color);color:var(--progress-fore-color)}progress::-webkit-progress-value{background:var(--progress-fore-color);border-top-left-radius:calc(2 * var(--universal-border-radius));border-bottom-left-radius:calc(2 * var(--universal-border-radius))}progress::-webkit-progress-bar{background:var(--progress-back-color)}progress::-moz-progress-bar{background:var(--progress-fore-color);border-top-left-radius:calc(2 * var(--universal-border-radius));border-bottom-left-radius:calc(2 * var(--universal-border-radius))}progress[value="1000"]::-webkit-progress-value{border-radius:calc(2 * var(--universal-border-radius))}progress[value="1000"]::-moz-progress-bar{border-radius:calc(2 * var(--universal-border-radius))}progress.inline{display:inline-block;vertical-align:middle;width:60%}:root{--spinner-back-color:#ddd;--spinner-fore-color:#555}@keyframes spinner-donut-anim{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.spinner{display:inline-block;margin:var(--universal-margin);border:.25rem solid var(--spinner-back-color);border-left:.25rem solid var(--spinner-fore-color);border-radius:50%;width:1.25rem;height:1.25rem;animation:spinner-donut-anim 1.2s linear infinite}progress.primary{--progress-fore-color:#1976d2}progress.secondary{--progress-fore-color:#d32f2f}progress.tertiary{--progress-fore-color:#308732}.spinner.primary{--spinner-fore-color:#1976d2}.spinner.secondary{--spinner-fore-color:#d32f2f}.spinner.tertiary{--spinner-fore-color:#308732}span[class^='icon-']{display:inline-block;height:1em;width:1em;vertical-align:-0.125em;background-size:contain;margin:0 calc(var(--universal-margin) / 4)}span[class^='icon-'].secondary{-webkit-filter:invert(25%);filter:invert(25%)}span[class^='icon-'].inverse{-webkit-filter:invert(100%);filter:invert(100%)}span.icon-alert{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E")}span.icon-bookmark{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E")}span.icon-calendar{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E")}span.icon-credit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E")}span.icon-edit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E")}span.icon-link{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E")}span.icon-help{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E")}span.icon-home{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E")}span.icon-info{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E")}span.icon-lock{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E")}span.icon-mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E")}span.icon-location{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E")}span.icon-phone{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E")}span.icon-rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E")}span.icon-search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E")}span.icon-settings{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E")}span.icon-share{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E")}span.icon-cart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E")}span.icon-upload{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E")}span.icon-user{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E")}:root{--generic-border-color:rgba(0,0,0,0.3);--generic-box-shadow:0 .25rem .25rem 0 rgba(0,0,0,0.125),0 .125rem .125rem -.125rem rgba(0,0,0,0.25)}.hidden{display:none !important}.visually-hidden{position:absolute !important;width:1px !important;height:1px !important;margin:-1px !important;border:0 !important;padding:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(100%) !important;clip-path:inset(100%) !important;overflow:hidden !important}.bordered{border:.0625rem solid var(--generic-border-color) !important}.rounded{border-radius:var(--universal-border-radius) !important}.circular{border-radius:50% !important}.shadowed{box-shadow:var(--generic-box-shadow) !important}.responsive-margin{margin:calc(var(--universal-margin) / 4) !important}@media screen and (min-width: 768px){.responsive-margin{margin:calc(var(--universal-margin) / 2) !important}}@media screen and (min-width: 1280px){.responsive-margin{margin:var(--universal-margin) !important}}.responsive-padding{padding:calc(var(--universal-padding) / 4) !important}@media screen and (min-width: 768px){.responsive-padding{padding:calc(var(--universal-padding) / 2) !important}}@media screen and (min-width: 1280px){.responsive-padding{padding:var(--universal-padding) !important}}@media screen and (max-width: 767px){.hidden-sm{display:none !important}}@media screen and (min-width: 768px) and (max-width: 1279px){.hidden-md{display:none !important}}@media screen and (min-width: 1280px){.hidden-lg{display:none !important}}@media screen and (max-width: 767px){.visually-hidden-sm{position:absolute !important;width:1px !important;height:1px !important;margin:-1px !important;border:0 !important;padding:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(100%) !important;clip-path:inset(100%) !important;overflow:hidden !important}}@media screen and (min-width: 768px) and (max-width: 1279px){.visually-hidden-md{position:absolute !important;width:1px !important;height:1px !important;margin:-1px !important;border:0 !important;padding:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(100%) !important;clip-path:inset(100%) !important;overflow:hidden !important}}@media screen and (min-width: 1280px){.visually-hidden-lg{position:absolute !important;width:1px !important;height:1px !important;margin:-1px !important;border:0 !important;padding:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(100%) !important;clip-path:inset(100%) !important;overflow:hidden !important}} diff --git a/src/argus_htmx/static/themes/no-class.min.css b/src/argus_htmx/static/themes/no-class.min.css new file mode 100644 index 000000000..5e61f37dc --- /dev/null +++ b/src/argus_htmx/static/themes/no-class.min.css @@ -0,0 +1 @@ +/*! sanitize.css v5.0.0 | CC0 License | github.com/jonathantneal/sanitize.css */*,::after,::before{background-repeat:no-repeat;box-sizing:inherit}::after,::before{text-decoration:inherit;vertical-align:inherit}html{box-sizing:border-box;cursor:default;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,footer,header,nav,section{display:block}body{margin:0}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}nav ol,nav ul{list-style:none}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}::-moz-selection{background-color:#b3d4fc;color:#000;text-shadow:none}::selection{background-color:#b3d4fc;color:#000;text-shadow:none}audio,canvas,iframe,img,svg,video{vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg{fill:currentColor}svg:not(:root){overflow:hidden}table{border-collapse:collapse}button,input,optgroup,select,textarea{margin:0}button,input,select,textarea{background-color:transparent;color:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto;resize:vertical}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}[hidden]{display:none}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);display:inherit;position:absolute}[aria-disabled]{cursor:default}/*! no-class.css v1.0.0 | MIT License | https://github.com/davidpaulsson/no-class */html{font-size:62.5%;-webkit-font-kerning:normal;font-kerning:normal;font-synthesis:none;text-rendering:optimizeLegibility}body{font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-weight:300;line-height:1.6;font-size:16px;font-size:1.6rem}h1{font-weight:300;line-height:1;margin-top:1em;margin-bottom:1em;font-size:36px;font-size:3.6rem}h2{font-weight:300;line-height:1;margin-top:1em;margin-bottom:1em;font-size:30px;font-size:3rem}h3{font-weight:300;line-height:1;margin-top:1em;margin-bottom:1em;font-size:24px;font-size:2.4rem}h4{font-weight:300;line-height:1;margin-top:1em;margin-bottom:1em;font-size:20px;font-size:2rem}h5{font-weight:300;line-height:1;margin-top:1em;margin-bottom:1em;font-size:16px;font-size:1.6rem}h6{font-weight:300;line-height:1;margin-top:1em;margin-bottom:1em;font-size:14px;font-size:1.4rem}p{margin-bottom:1em}code{font-family:Consolas,Monaco,'Andale Mono',monospace;font-size:80%;vertical-align:baseline}pre{overflow:auto;margin:.5em 0;padding:0 1em!important;background:#f5f2f0}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}cite{font-style:italic}abbr,acronym{cursor:help;border-bottom:.1em dotted}blockquote,q{margin-bottom:1em;padding-left:1em;quotes:none;border-left:3px solid rgba(0,0,0,.1)}ol,ul{margin-bottom:1em;padding-left:1.5em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}a{text-decoration:none;color:#3498db;border-bottom:1px solid #3498db}a:hover{cursor:pointer;color:#217dbb;border-bottom:0}::-moz-selection{color:#000;background:rgba(0,0,0,.1);text-shadow:none}::selection{color:#000;background:rgba(0,0,0,.1);text-shadow:none}table{width:100%}td,th{padding:.25em;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}tbody tr:nth-of-type(odd){background-color:#f7f7f7}[colspan]{text-align:center}[colspan='1']{text-align:left}[rowspan]{vertical-align:middle}[rowspan='1']{vertical-align:top}hr{height:1px;margin:1em 0;border:none;background-color:#ddd}fieldset{min-width:0;margin:0;padding:1em;border:1px solid #ddd;border-radius:4px}fieldset legend{font-weight:700;line-height:inherit;display:block;padding:0 .5em;border:0;background-color:#fff;font-size:16px;font-size:1.6rem}label{font-weight:700;display:inline-block;display:block;max-width:100%;margin-bottom:5px}input,textarea{width:100%;margin-bottom:1em;padding:.25em .5em;border:1px solid #ddd;border-radius:4px}input:hover,textarea:hover{border:1px solid #c4c4c4}input:focus,textarea:focus{border:1px solid #3498db;outline:0}button{font-weight:700;line-height:1.4;display:inline-block;padding:.25em .55em;cursor:pointer;white-space:nowrap;text-decoration:none;color:inherit;border:1px solid #d5d5d5;border-radius:4px;background-color:#eee;background-image:linear-gradient(#fcfcfc,#eee);background-repeat:no-repeat;text-shadow:0 1px 0 #fff}button:hover{text-decoration:none;color:inherit;border:1px solid #ccc;background-color:#ddd;background-image:linear-gradient(#eee,#ddd)}button:focus{text-decoration:none;border-color:#3498db;outline:0}button:active{border-color:#b5b5b5;background-color:#dcdcdc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}button:disabled{color:#999;background-color:#efefef;background-image:none}button:disabled:hover{cursor:not-allowed}aside{background-color:#eee;padding:0 .5em;border-radius:4px}main{max-width:960px;margin:0 auto;padding:20px}header ul{padding-left:0;list-style-type:none}header li{text-align:center;border-bottom:1px solid #ddd}@media (min-width:40em){header li{display:inline-block;text-align:left;border-bottom:none}header li:first-child a{padding-left:0}header li:last-child a{padding-right:0}}header li a{display:block;width:100%;padding:.25em .5em;border-bottom:none} \ No newline at end of file diff --git a/src/argus_htmx/static/themes/pico.classless.min.css b/src/argus_htmx/static/themes/pico.classless.min.css new file mode 100644 index 000000000..7d8d77bd1 --- /dev/null +++ b/src/argus_htmx/static/themes/pico.classless.min.css @@ -0,0 +1,4 @@ +@charset "UTF-8";/*! + * Pico CSS ✨ v2.0.6 (https://picocss.com) + * Copyright 2019-2024 - Licensed under MIT + */:root{--pico-font-family-emoji:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--pico-font-family-sans-serif:system-ui,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,Helvetica,Arial,"Helvetica Neue",sans-serif,var(--pico-font-family-emoji);--pico-font-family-monospace:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace,var(--pico-font-family-emoji);--pico-font-family:var(--pico-font-family-sans-serif);--pico-line-height:1.5;--pico-font-weight:400;--pico-font-size:100%;--pico-text-underline-offset:0.1rem;--pico-border-radius:0.25rem;--pico-border-width:0.0625rem;--pico-outline-width:0.125rem;--pico-transition:0.2s ease-in-out;--pico-spacing:1rem;--pico-typography-spacing-vertical:1rem;--pico-block-spacing-vertical:var(--pico-spacing);--pico-block-spacing-horizontal:var(--pico-spacing);--pico-form-element-spacing-vertical:0.75rem;--pico-form-element-spacing-horizontal:1rem;--pico-group-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-primary-focus);--pico-group-box-shadow-focus-with-input:0 0 0 0.0625rem var(--pico-form-element-border-color);--pico-modal-overlay-backdrop-filter:blur(0.375rem);--pico-nav-element-spacing-vertical:1rem;--pico-nav-element-spacing-horizontal:0.5rem;--pico-nav-link-spacing-vertical:0.5rem;--pico-nav-link-spacing-horizontal:0.5rem;--pico-nav-breadcrumb-divider:">";--pico-icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--pico-icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--pico-icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--pico-icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--pico-icon-loading:url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E")}@media (min-width:576px){:root{--pico-font-size:106.25%}}@media (min-width:768px){:root{--pico-font-size:112.5%}}@media (min-width:1024px){:root{--pico-font-size:118.75%}}@media (min-width:1280px){:root{--pico-font-size:125%}}@media (min-width:1536px){:root{--pico-font-size:131.25%}}a{--pico-text-decoration:underline}small{--pico-font-size:0.875em}h1,h2,h3,h4,h5,h6{--pico-font-weight:700}h1{--pico-font-size:2rem;--pico-line-height:1.125;--pico-typography-spacing-top:3rem}h2{--pico-font-size:1.75rem;--pico-line-height:1.15;--pico-typography-spacing-top:2.625rem}h3{--pico-font-size:1.5rem;--pico-line-height:1.175;--pico-typography-spacing-top:2.25rem}h4{--pico-font-size:1.25rem;--pico-line-height:1.2;--pico-typography-spacing-top:1.874rem}h5{--pico-font-size:1.125rem;--pico-line-height:1.225;--pico-typography-spacing-top:1.6875rem}h6{--pico-font-size:1rem;--pico-line-height:1.25;--pico-typography-spacing-top:1.5rem}tfoot td,tfoot th,thead td,thead th{--pico-font-weight:600;--pico-border-width:0.1875rem}code,kbd,pre,samp{--pico-font-family:var(--pico-font-family-monospace)}kbd{--pico-font-weight:bolder}:where(select,textarea),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-outline-width:0.0625rem}[type=search]{--pico-border-radius:5rem}[type=checkbox],[type=radio]{--pico-border-width:0.125rem}[type=checkbox][role=switch]{--pico-border-width:0.1875rem}[role=search]{--pico-border-radius:5rem}[role=group] [role=button],[role=group] [type=button],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=submit],[role=search] button{--pico-form-element-spacing-horizontal:2rem}details summary[role=button]::after{filter:brightness(0) invert(1)}[aria-busy=true]:not(input,select,textarea):is(button,[type=submit],[type=button],[type=reset],[role=button])::before{filter:brightness(0) invert(1)}:root:not([data-theme=dark]),[data-theme=light]{--pico-background-color:#fff;--pico-color:#373c44;--pico-text-selection-color:rgba(2, 154, 232, 0.25);--pico-muted-color:#646b79;--pico-muted-border-color:#e7eaf0;--pico-primary:#0172ad;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 114, 173, 0.5);--pico-primary-hover:#015887;--pico-primary-hover-background:#02659a;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(2, 154, 232, 0.5);--pico-primary-inverse:#fff;--pico-secondary:#5d6b89;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(93, 107, 137, 0.5);--pico-secondary-hover:#48536b;--pico-secondary-hover-background:#48536b;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(93, 107, 137, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#181c25;--pico-contrast-background:#181c25;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(24, 28, 37, 0.5);--pico-contrast-hover:#000;--pico-contrast-hover-background:#000;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-secondary-hover);--pico-contrast-focus:rgba(93, 107, 137, 0.25);--pico-contrast-inverse:#fff;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698),0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024),0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03),0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036),0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302),0.5rem 1rem 6rem rgba(129, 145, 181, 0.06),0 0 0 0.0625rem rgba(129, 145, 181, 0.015);--pico-h1-color:#2d3138;--pico-h2-color:#373c44;--pico-h3-color:#424751;--pico-h4-color:#4d535e;--pico-h5-color:#5c6370;--pico-h6-color:#646b79;--pico-mark-background-color:#fde7c0;--pico-mark-color:#0f1114;--pico-ins-color:#1d6a54;--pico-del-color:#883935;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#f3f5f7;--pico-code-color:#646b79;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#fbfcfc;--pico-form-element-selected-background-color:#dfe3eb;--pico-form-element-border-color:#cfd5e2;--pico-form-element-color:#23262c;--pico-form-element-placeholder-color:var(--pico-muted-color);--pico-form-element-active-background-color:#fff;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#b86a6b;--pico-form-element-invalid-active-border-color:#c84f48;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#4c9b8a;--pico-form-element-valid-active-border-color:#279977;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#bfc7d9;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#dfe3eb;--pico-range-active-border-color:#bfc7d9;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:var(--pico-background-color);--pico-card-border-color:var(--pico-muted-border-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#fbfcfc;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(232, 234, 237, 0.75);--pico-progress-background-color:#dfe3eb;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 155, 138)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200, 79, 72)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:light}:root:not([data-theme=dark]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]),[data-theme=light] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}@media only screen and (prefers-color-scheme:dark){:root:not([data-theme]){--pico-background-color:#13171f;--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 9, 12, 0.06),0 0 0 0.0625rem rgba(7, 9, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:#ce7e7b;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#1a1f28;--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#1c212c;--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:#1a1f28;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#964a50;--pico-form-element-invalid-active-border-color:#b7403b;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:#16896a;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#1a1f28;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(8, 9, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:dark}:root:not([data-theme]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}}[data-theme=dark]{--pico-background-color:#13171f;--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 9, 12, 0.06),0 0 0 0.0625rem rgba(7, 9, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:#ce7e7b;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#1a1f28;--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#1c212c;--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:#1a1f28;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#964a50;--pico-form-element-invalid-active-border-color:#b7403b;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:#16896a;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#1a1f28;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(8, 9, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:dark}[data-theme=dark] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}[type=checkbox],[type=radio],[type=range],progress{accent-color:var(--pico-primary)}*,::after,::before{box-sizing:border-box;background-repeat:no-repeat}::after,::before{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family);text-underline-offset:var(--pico-text-underline-offset);text-rendering:optimizeLegibility;overflow-wrap:break-word;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{width:100%;margin:0}main{display:block}body>footer,body>header,body>main{width:100%;margin-right:auto;margin-left:auto;padding:var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal)}@media (min-width:576px){body>footer,body>header,body>main{max-width:510px;padding-right:0;padding-left:0}}@media (min-width:768px){body>footer,body>header,body>main{max-width:700px}}@media (min-width:1024px){body>footer,body>header,body>main{max-width:950px}}@media (min-width:1280px){body>footer,body>header,body>main{max-width:1200px}}@media (min-width:1536px){body>footer,body>header,body>main{max-width:1450px}}section{margin-bottom:var(--pico-block-spacing-vertical)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-style:normal;font-weight:var(--pico-font-weight)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family)}h1{--pico-color:var(--pico-h1-color)}h2{--pico-color:var(--pico-h2-color)}h3{--pico-color:var(--pico-h3-color)}h4{--pico-color:var(--pico-h4-color)}h5{--pico-color:var(--pico-h5-color)}h6{--pico-color:var(--pico-h6-color)}:where(article,address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--pico-typography-spacing-top)}p{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup>*{margin-top:0;margin-bottom:0}hgroup>:not(:first-child):last-child{--pico-color:var(--pico-muted-color);--pico-font-weight:unset;font-size:1rem}:where(ol,ul) li{margin-bottom:calc(var(--pico-typography-spacing-vertical) * .25)}:where(dl,ol,ul) :where(dl,ol,ul){margin:0;margin-top:calc(var(--pico-typography-spacing-vertical) * .25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--pico-mark-background-color);color:var(--pico-mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--pico-typography-spacing-vertical) 0;padding:var(--pico-spacing);border-right:none;border-left:.25rem solid var(--pico-blockquote-border-color);border-inline-start:0.25rem solid var(--pico-blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--pico-typography-spacing-vertical) * .5);color:var(--pico-blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--pico-ins-color);text-decoration:none}del{color:var(--pico-del-color)}::-moz-selection{background-color:var(--pico-text-selection-color)}::selection{background-color:var(--pico-text-selection-color)}:where(a:not([role=button])),[role=link]{--pico-color:var(--pico-primary);--pico-background-color:transparent;--pico-underline:var(--pico-primary-underline);outline:0;background-color:var(--pico-background-color);color:var(--pico-color);-webkit-text-decoration:var(--pico-text-decoration);text-decoration:var(--pico-text-decoration);text-decoration-color:var(--pico-underline);text-underline-offset:0.125em;transition:background-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition)}:where(a:not([role=button])):is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-primary-hover);--pico-underline:var(--pico-primary-hover-underline);--pico-text-decoration:underline}:where(a:not([role=button])):focus-visible,[role=link]:focus-visible{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}a[role=button]{display:inline-block}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[role=button],[type=button],[type=file]::file-selector-button,[type=reset],[type=submit],button{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);--pico-color:var(--pico-primary-inverse);--pico-box-shadow:var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:1rem;line-height:var(--pico-line-height);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}[role=button]:is(:hover,:active,:focus),[role=button]:is([aria-current]:not([aria-current=false])),[type=button]:is(:hover,:active,:focus),[type=button]:is([aria-current]:not([aria-current=false])),[type=file]::file-selector-button:is(:hover,:active,:focus),[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])),[type=reset]:is(:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false])),[type=submit]:is(:hover,:active,:focus),[type=submit]:is([aria-current]:not([aria-current=false])),button:is(:hover,:active,:focus),button:is([aria-current]:not([aria-current=false])){--pico-background-color:var(--pico-primary-hover-background);--pico-border-color:var(--pico-primary-hover-border);--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--pico-color:var(--pico-primary-inverse)}[role=button]:focus,[role=button]:is([aria-current]:not([aria-current=false])):focus,[type=button]:focus,[type=button]:is([aria-current]:not([aria-current=false])):focus,[type=file]::file-selector-button:focus,[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,[type=reset]:focus,[type=reset]:is([aria-current]:not([aria-current=false])):focus,[type=submit]:focus,[type=submit]:is([aria-current]:not([aria-current=false])):focus,button:focus,button:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}[type=button],[type=reset],[type=submit]{margin-bottom:var(--pico-spacing)}[type=file]::file-selector-button,[type=reset]{--pico-background-color:var(--pico-secondary-background);--pico-border-color:var(--pico-secondary-border);--pico-color:var(--pico-secondary-inverse);cursor:pointer}[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border);--pico-color:var(--pico-secondary-inverse)}[type=file]::file-selector-button:focus,[type=reset]:focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}:where(button,[type=submit],[type=reset],[type=button],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]){opacity:.5;pointer-events:none}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}td,th{padding:calc(var(--pico-spacing)/ 2) var(--pico-spacing);border-bottom:var(--pico-border-width) solid var(--pico-table-border-color);background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);text-align:left;text-align:start}tfoot td,tfoot th{border-top:var(--pico-border-width) solid var(--pico-table-border-color);border-bottom:0}table.striped tbody tr:nth-child(odd) td,table.striped tbody tr:nth-child(odd) th{background-color:var(--pico-table-row-stripped-background-color)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-size:.875em;font-family:var(--pico-font-family)}pre code{font-size:inherit;font-family:inherit}pre{-ms-overflow-style:scrollbar;overflow:auto}code,kbd,pre{border-radius:var(--pico-border-radius);background:var(--pico-code-background-color);color:var(--pico-code-color);font-weight:var(--pico-font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem}pre{display:block;margin-bottom:var(--pico-spacing);overflow-x:auto}pre>code{display:block;padding:var(--pico-spacing);background:0 0;line-height:var(--pico-line-height)}kbd{background-color:var(--pico-code-kbd-background-color);color:var(--pico-code-kbd-color);vertical-align:baseline}figure{display:block;margin:0;padding:0}figure figcaption{padding:calc(var(--pico-spacing) * .5) 0;color:var(--pico-muted-color)}hr{height:0;margin:var(--pico-typography-spacing-vertical) 0;border:0;border-top:1px solid var(--pico-muted-border-color);color:inherit}[hidden],template{display:none!important}canvas{display:inline-block}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--pico-line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:0}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2)}fieldset{width:100%;margin:0;margin-bottom:var(--pico-spacing);padding:0;border:0}fieldset legend,label{display:block;margin-bottom:calc(var(--pico-spacing) * .375);color:var(--pico-color);font-weight:var(--pico-form-label-font-weight,var(--pico-font-weight))}fieldset legend{margin-bottom:calc(var(--pico-spacing) * .5)}button[type=submit],input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal)}input,select,textarea{--pico-background-color:var(--pico-form-element-background-color);--pico-border-color:var(--pico-form-element-border-color);--pico-color:var(--pico-form-element-color);--pico-box-shadow:none;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus){--pico-background-color:var(--pico-form-element-active-background-color)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus){--pico-border-color:var(--pico-form-element-active-border-color)}:where(select,textarea):not([readonly]):focus,input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus{--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color)}:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea),input:not([type=submit],[type=button],[type=reset])[disabled],label[aria-disabled=true],select[disabled],textarea[disabled]{opacity:var(--pico-form-element-disabled-opacity);pointer-events:none}label[aria-disabled=true] input[disabled]{opacity:1}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid]{padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal)!important;padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=false]:not(select){background-image:var(--pico-icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=true]:not(select){background-image:var(--pico-icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--pico-border-color:var(--pico-form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--pico-border-color:var(--pico-form-element-valid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color)!important}:where(input,select,textarea)[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--pico-border-color:var(--pico-form-element-invalid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color)!important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::-webkit-input-placeholder,input::placeholder,select:invalid,textarea::-webkit-input-placeholder,textarea::placeholder{color:var(--pico-form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--pico-spacing)}select::-ms-expand{border:0;background-color:transparent}select:not([multiple],[size]){padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal);padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);background-image:var(--pico-icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}select[multiple] option:checked{background:var(--pico-form-element-selected-background-color);color:var(--pico-form-element-color)}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}textarea{display:block;resize:vertical}textarea[aria-invalid]{--pico-icon-height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);background-position:top right .75rem!important;background-size:1rem var(--pico-icon-height)!important}:where(input,select,textarea,fieldset)+small{display:block;width:100%;margin-top:calc(var(--pico-spacing) * -.75);margin-bottom:var(--pico-spacing);color:var(--pico-muted-color)}:where(input,select,textarea,fieldset)[aria-invalid=false]+small{color:var(--pico-ins-color)}:where(input,select,textarea,fieldset)[aria-invalid=true]+small{color:var(--pico-del-color)}label>:where(input,select,textarea){margin-top:calc(var(--pico-spacing) * .25)}label:has([type=checkbox],[type=radio]){width:-moz-fit-content;width:fit-content;cursor:pointer}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-inline-end:.5em;border-width:var(--pico-border-width);vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-bottom:0;cursor:pointer}[type=checkbox]~label:not(:last-of-type),[type=radio]~label:not(:last-of-type){margin-inline-end:1em}[type=checkbox]:indeterminate{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--pico-background-color:var(--pico-switch-background-color);--pico-color:var(--pico-switch-color);width:2.25em;height:1.25em;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:1.25em;background-color:var(--pico-background-color);line-height:1.25em}[type=checkbox][role=switch]:not([aria-invalid]){--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:before{display:block;aspect-ratio:1;height:100%;border-radius:50%;background-color:var(--pico-color);box-shadow:var(--pico-switch-thumb-box-shadow);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:focus{--pico-background-color:var(--pico-switch-background-color);--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:checked{--pico-background-color:var(--pico-switch-checked-background-color);--pico-border-color:var(--pico-switch-checked-background-color);background-image:none}[type=checkbox][role=switch]:checked::before{margin-inline-start:calc(2.25em - 1.25em)}[type=checkbox][role=switch][disabled]{--pico-background-color:var(--pico-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus{--pico-background-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--pico-background-color:var(--pico-form-element-invalid-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus,[type=radio][aria-invalid=false]:checked,[type=radio][aria-invalid=false]:checked:active,[type=radio][aria-invalid=false]:checked:focus{--pico-border-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true],[type=radio]:checked:active[aria-invalid=true],[type=radio]:checked:focus[aria-invalid=true],[type=radio]:checked[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--pico-icon-position:0.75rem;--pico-icon-width:1rem;padding-right:calc(var(--pico-icon-width) + var(--pico-icon-position));background-image:var(--pico-icon-date);background-position:center right var(--pico-icon-position);background-size:var(--pico-icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--pico-icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--pico-icon-width);margin-right:calc(var(--pico-icon-width) * -1);margin-left:var(--pico-icon-position);opacity:0}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--pico-form-element-spacing-horizontal)!important;background-image:none!important}}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}[type=file]{--pico-color:var(--pico-muted-color);margin-left:calc(var(--pico-outline-width) * -1);padding:calc(var(--pico-form-element-spacing-vertical) * .5) 0;padding-left:var(--pico-outline-width);border:0;border-radius:0;background:0 0}[type=file]::file-selector-button{margin-right:calc(var(--pico-spacing)/ 2);padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal)}[type=file]:is(:hover,:active,:focus)::file-selector-button{--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border)}[type=file]:focus::file-selector-button{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:0 0}[type=range]::-webkit-slider-runnable-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-webkit-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-moz-range-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-moz-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-ms-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-ms-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-webkit-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-moz-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-ms-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]:active,[type=range]:focus-within{--pico-range-border-color:var(--pico-range-active-border-color);--pico-range-thumb-color:var(--pico-range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem);background-image:var(--pico-icon-search);background-position:center left calc(var(--pico-form-element-spacing-horizontal) + .125rem);background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem)!important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--pico-icon-search),var(--pico-icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--pico-icon-search),var(--pico-icon-invalid)}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}details{display:block;margin-bottom:var(--pico-spacing)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--pico-transition)}details summary:not([role]){color:var(--pico-accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--pico-spacing,1rem) * .5);float:right;transform:rotate(-90deg);background-image:var(--pico-icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--pico-transition)}details summary:focus{outline:0}details summary:focus:not([role]){color:var(--pico-accordion-active-summary-color)}details summary:focus-visible:not([role]){outline:var(--pico-outline-width) solid var(--pico-primary-focus);outline-offset:calc(var(--pico-spacing,1rem) * 0.5);color:var(--pico-primary)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem * var(--pico-line-height,1.5))}details[open]>summary{margin-bottom:var(--pico-spacing)}details[open]>summary:not([role]):not(:focus){color:var(--pico-accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin-bottom:var(--pico-block-spacing-vertical);padding:var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);border-radius:var(--pico-border-radius);background:var(--pico-card-background-color);box-shadow:var(--pico-card-box-shadow)}article>footer,article>header{margin-right:calc(var(--pico-block-spacing-horizontal) * -1);margin-left:calc(var(--pico-block-spacing-horizontal) * -1);padding:calc(var(--pico-block-spacing-vertical) * .66) var(--pico-block-spacing-horizontal);background-color:var(--pico-card-sectioning-background-color)}article>header{margin-top:calc(var(--pico-block-spacing-vertical) * -1);margin-bottom:var(--pico-block-spacing-vertical);border-bottom:var(--pico-border-width) solid var(--pico-card-border-color);border-top-right-radius:var(--pico-border-radius);border-top-left-radius:var(--pico-border-radius)}article>footer{margin-top:var(--pico-block-spacing-vertical);margin-bottom:calc(var(--pico-block-spacing-vertical) * -1);border-top:var(--pico-border-width) solid var(--pico-card-border-color);border-bottom-right-radius:var(--pico-border-radius);border-bottom-left-radius:var(--pico-border-radius)}[role=group],[role=search]{display:inline-flex;position:relative;width:100%;margin-bottom:var(--pico-spacing);border-radius:var(--pico-border-radius);box-shadow:var(--pico-group-box-shadow,0 0 0 transparent);vertical-align:middle;transition:box-shadow var(--pico-transition)}[role=group] input:not([type=checkbox],[type=radio]),[role=group] select,[role=group]>*,[role=search] input:not([type=checkbox],[type=radio]),[role=search] select,[role=search]>*{position:relative;flex:1 1 auto;margin-bottom:0}[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=group]>:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child),[role=search]>:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}[role=group] input:not([type=checkbox],[type=radio]):not(:last-child),[role=group] select:not(:last-child),[role=group]>:not(:last-child),[role=search] input:not([type=checkbox],[type=radio]):not(:last-child),[role=search] select:not(:last-child),[role=search]>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}[role=group] input:not([type=checkbox],[type=radio]):focus,[role=group] select:focus,[role=group]>:focus,[role=search] input:not([type=checkbox],[type=radio]):focus,[role=search] select:focus,[role=search]>:focus{z-index:2}[role=group] [role=button]:not(:first-child),[role=group] [type=button]:not(:first-child),[role=group] [type=reset]:not(:first-child),[role=group] [type=submit]:not(:first-child),[role=group] button:not(:first-child),[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=search] [role=button]:not(:first-child),[role=search] [type=button]:not(:first-child),[role=search] [type=reset]:not(:first-child),[role=search] [type=submit]:not(:first-child),[role=search] button:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child){margin-left:calc(var(--pico-border-width) * -1)}[role=group] [role=button],[role=group] [type=button],[role=group] [type=reset],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=reset],[role=search] [type=submit],[role=search] button{width:auto}@supports selector(:has(*)){[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-button)}[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select,[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select{border-color:transparent}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus),[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-input)}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) button,[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) button{--pico-button-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-border);--pico-button-hover-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-hover-border)}[role=group] [role=button]:focus,[role=group] [type=button]:focus,[role=group] [type=reset]:focus,[role=group] [type=submit]:focus,[role=group] button:focus,[role=search] [role=button]:focus,[role=search] [type=button]:focus,[role=search] [type=reset]:focus,[role=search] [type=submit]:focus,[role=search] button:focus{box-shadow:none}}[role=search]>:first-child{border-top-left-radius:5rem;border-bottom-left-radius:5rem}[role=search]>:last-child{border-top-right-radius:5rem;border-bottom-right-radius:5rem}[aria-busy=true]:not(input,select,textarea,html){white-space:nowrap}[aria-busy=true]:not(input,select,textarea,html)::before{display:inline-block;width:1em;height:1em;background-image:var(--pico-icon-loading);background-size:1em auto;background-repeat:no-repeat;content:"";vertical-align:-.125em}[aria-busy=true]:not(input,select,textarea,html):not(:empty)::before{margin-inline-end:calc(var(--pico-spacing) * .5)}[aria-busy=true]:not(input,select,textarea,html):empty{text-align:center}[role=button][aria-busy=true],[type=button][aria-busy=true],[type=reset][aria-busy=true],[type=submit][aria-busy=true],a[aria-busy=true],button[aria-busy=true]{pointer-events:none}:root{--pico-scrollbar-width:0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:0;border:0;-webkit-backdrop-filter:var(--pico-modal-overlay-backdrop-filter);backdrop-filter:var(--pico-modal-overlay-backdrop-filter);background-color:var(--pico-modal-overlay-background-color);color:var(--pico-color)}dialog article{width:100%;max-height:calc(100vh - var(--pico-spacing) * 2);margin:var(--pico-spacing);overflow:auto}@media (min-width:576px){dialog article{max-width:510px}}@media (min-width:768px){dialog article{max-width:700px}}dialog article>header>*{margin-bottom:0}dialog article>header :is(a,button)[rel=prev]{margin:0;margin-left:var(--pico-spacing);padding:0;float:right}dialog article>footer{text-align:right}dialog article>footer [role=button],dialog article>footer button{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type),dialog article>footer button:not(:first-of-type){margin-left:calc(var(--pico-spacing) * .5)}dialog article :is(a,button)[rel=prev]{display:block;width:1rem;height:1rem;margin-top:calc(var(--pico-spacing) * -1);margin-bottom:var(--pico-spacing);margin-left:auto;border:none;background-image:var(--pico-icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;background-color:transparent;opacity:.5;transition:opacity var(--pico-transition)}dialog article :is(a,button)[rel=prev]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}:where(nav li)::before{float:left;content:"​"}nav,nav ul{display:flex}nav{justify-content:space-between;overflow:visible}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav li{display:inline-block;margin:0;padding:var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal)}nav li :where(a,[role=link]){display:inline-block;margin:calc(var(--pico-nav-link-spacing-vertical) * -1) calc(var(--pico-nav-link-spacing-horizontal) * -1);padding:var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal);border-radius:var(--pico-border-radius)}nav li :where(a,[role=link]):not(:hover){text-decoration:none}nav li [role=button],nav li [type=button],nav li button,nav li input:not([type=checkbox],[type=radio],[type=range],[type=file]),nav li select{height:auto;margin-right:inherit;margin-bottom:0;margin-left:inherit;padding:calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li a{margin:calc(var(--pico-nav-link-spacing-vertical) * -1) 0;margin-inline-start:calc(var(--pico-nav-link-spacing-horizontal) * -1)}nav[aria-label=breadcrumb] ul li:not(:last-child)::after{display:inline-block;position:absolute;width:calc(var(--pico-nav-link-spacing-horizontal) * 4);margin:0 calc(var(--pico-nav-link-spacing-horizontal) * -1);content:var(--pico-nav-breadcrumb-divider);color:var(--pico-muted-color);text-align:center;text-decoration:none;white-space:nowrap}nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]){background-color:transparent;color:inherit;text-decoration:none;pointer-events:none}aside li,aside nav,aside ol,aside ul{display:block}aside li{padding:calc(var(--pico-nav-element-spacing-vertical) * .5) var(--pico-nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--pico-spacing) * .5);overflow:hidden;border:0;border-radius:var(--pico-border-radius);background-color:var(--pico-progress-background-color);color:var(--pico-progress-color)}progress::-webkit-progress-bar{border-radius:var(--pico-border-radius);background:0 0}progress[value]::-webkit-progress-value{background-color:var(--pico-progress-color);-webkit-transition:inline-size var(--pico-transition);transition:inline-size var(--pico-transition)}progress::-moz-progress-bar{background-color:var(--pico-progress-color)}@media (prefers-reduced-motion:no-preference){progress:indeterminate{background:var(--pico-progress-background-color) linear-gradient(to right,var(--pico-progress-color) 30%,var(--pico-progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:transparent}progress:indeterminate::-moz-progress-bar{background-color:transparent}}@media (prefers-reduced-motion:no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip]::after,[data-tooltip]::before,[data-tooltip][data-placement=top]::after,[data-tooltip][data-placement=top]::before{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%,-.25rem);border-radius:var(--pico-border-radius);background:var(--pico-tooltip-background-color);content:attr(data-tooltip);color:var(--pico-tooltip-color);font-style:normal;font-weight:var(--pico-font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip]::after,[data-tooltip][data-placement=top]::after{padding:0;transform:translate(-50%,0);border-top:.3rem solid;border-right:.3rem solid transparent;border-left:.3rem solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--pico-tooltip-background-color)}[data-tooltip][data-placement=bottom]::after,[data-tooltip][data-placement=bottom]::before{top:100%;bottom:auto;transform:translate(-50%,.25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%,-.3rem);border:.3rem solid transparent;border-bottom:.3rem solid}[data-tooltip][data-placement=left]::after,[data-tooltip][data-placement=left]::before{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem,-50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem,-50%);border:.3rem solid transparent;border-left:.3rem solid}[data-tooltip][data-placement=right]::after,[data-tooltip][data-placement=right]::before{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem,-50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem,-50%);border:.3rem solid transparent;border-right:.3rem solid}[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{opacity:1}@media (hover:hover) and (pointer:fine){[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{--pico-tooltip-slide-to:translate(-50%, -0.25rem);transform:translate(-50%,.75rem);animation-duration:.2s;animation-fill-mode:forwards;animation-name:tooltip-slide;opacity:0}[data-tooltip]:focus::after,[data-tooltip]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, 0rem);transform:translate(-50%,-.25rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:hover::after,[data-tooltip][data-placement=bottom]:hover::before{--pico-tooltip-slide-to:translate(-50%, 0.25rem);transform:translate(-50%,-.75rem);animation-name:tooltip-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, -0.3rem);transform:translate(-50%,-.5rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:hover::after,[data-tooltip][data-placement=left]:hover::before{--pico-tooltip-slide-to:translate(-0.25rem, -50%);transform:translate(.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{--pico-tooltip-caret-slide-to:translate(0.3rem, -50%);transform:translate(.05rem,-50%);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:hover::after,[data-tooltip][data-placement=right]:hover::before{--pico-tooltip-slide-to:translate(0.25rem, -50%);transform:translate(-.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{--pico-tooltip-caret-slide-to:translate(-0.3rem, -50%);transform:translate(-.05rem,-50%);animation-name:tooltip-caret-slide}}@keyframes tooltip-slide{to{transform:var(--pico-tooltip-slide-to);opacity:1}}@keyframes tooltip-caret-slide{50%{opacity:0}to{transform:var(--pico-tooltip-caret-slide-to);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion:reduce){:not([aria-busy=true]),:not([aria-busy=true])::after,:not([aria-busy=true])::before{background-attachment:initial!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important}} \ No newline at end of file diff --git a/src/argus_htmx/static/themes/purehtml.css b/src/argus_htmx/static/themes/purehtml.css new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/static/themes/reset.css b/src/argus_htmx/static/themes/reset.css new file mode 100644 index 000000000..e29c0f5f4 --- /dev/null +++ b/src/argus_htmx/static/themes/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/src/argus_htmx/static/themes/simple.css b/src/argus_htmx/static/themes/simple.css new file mode 100644 index 000000000..984203c0d --- /dev/null +++ b/src/argus_htmx/static/themes/simple.css @@ -0,0 +1,704 @@ +/* Global variables. */ +:root, +::backdrop { + /* Set sans-serif & mono fonts */ + --sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir, + "Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica, + "Helvetica Neue", sans-serif; + --mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace; + --standard-border-radius: 5px; + + /* Default (light) theme */ + --bg: #fff; + --accent-bg: #f5f7ff; + --text: #212121; + --text-light: #585858; + --border: #898EA4; + --accent: #0d47a1; + --accent-hover: #1266e2; + --accent-text: var(--bg); + --code: #d81b60; + --preformatted: #444; + --marked: #ffdd33; + --disabled: #efefef; +} + +/* Dark theme */ +@media (prefers-color-scheme: dark) { + :root, + ::backdrop { + color-scheme: dark; + --bg: #212121; + --accent-bg: #2b2b2b; + --text: #dcdcdc; + --text-light: #ababab; + --accent: #ffb300; + --accent-hover: #ffe099; + --accent-text: var(--bg); + --code: #f06292; + --preformatted: #ccc; + --disabled: #111; + } + /* Add a bit of transparency so light media isn't so glaring in dark mode */ + img, + video { + opacity: 0.8; + } +} + +/* Reset box-sizing */ +*, *::before, *::after { + box-sizing: border-box; +} + +/* Reset default appearance */ +textarea, +select, +input, +progress { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +html { + /* Set the font globally */ + font-family: var(--sans-font); + scroll-behavior: smooth; +} + +/* Make the body a nice central block */ +body { + color: var(--text); + background-color: var(--bg); + font-size: 1.15rem; + line-height: 1.5; + display: grid; + grid-template-columns: 1fr min(45rem, 90%) 1fr; + margin: 0; +} +body > * { + grid-column: 2; +} + +/* Make the header bg full width, but the content inline with body */ +body > header { + background-color: var(--accent-bg); + border-bottom: 1px solid var(--border); + text-align: center; + padding: 0 0.5rem 2rem 0.5rem; + grid-column: 1 / -1; +} + +body > header > *:only-child { + margin-block-start: 2rem; +} + +body > header h1 { + max-width: 1200px; + margin: 1rem auto; +} + +body > header p { + max-width: 40rem; + margin: 1rem auto; +} + +/* Add a little padding to ensure spacing is correct between content and header > nav */ +main { + padding-top: 1.5rem; +} + +body > footer { + margin-top: 4rem; + padding: 2rem 1rem 1.5rem 1rem; + color: var(--text-light); + font-size: 0.9rem; + text-align: center; + border-top: 1px solid var(--border); +} + +/* Format headers */ +h1 { + font-size: 3rem; +} + +h2 { + font-size: 2.6rem; + margin-top: 3rem; +} + +h3 { + font-size: 2rem; + margin-top: 3rem; +} + +h4 { + font-size: 1.44rem; +} + +h5 { + font-size: 1.15rem; +} + +h6 { + font-size: 0.96rem; +} + +p { + margin: 1.5rem 0; +} + +/* Prevent long strings from overflowing container */ +p, h1, h2, h3, h4, h5, h6 { + overflow-wrap: break-word; +} + +/* Fix line height when title wraps */ +h1, +h2, +h3 { + line-height: 1.1; +} + +/* Reduce header size on mobile */ +@media only screen and (max-width: 720px) { + h1 { + font-size: 2.5rem; + } + + h2 { + font-size: 2.1rem; + } + + h3 { + font-size: 1.75rem; + } + + h4 { + font-size: 1.25rem; + } +} + +/* Format links & buttons */ +a, +a:visited { + color: var(--accent); +} + +a:hover { + text-decoration: none; +} + +button, +.button, +a.button, /* extra specificity to override a */ +input[type="submit"], +input[type="reset"], +input[type="button"], +label[type="button"] { + border: 1px solid var(--accent); + background-color: var(--accent); + color: var(--accent-text); + padding: 0.5rem 0.9rem; + text-decoration: none; + line-height: normal; +} + +.button[aria-disabled="true"], +input:disabled, +textarea:disabled, +select:disabled, +button[disabled] { + cursor: not-allowed; + background-color: var(--disabled); + border-color: var(--disabled); + color: var(--text-light); +} + +input[type="range"] { + padding: 0; +} + +/* Set the cursor to '?' on an abbreviation and style the abbreviation to show that there is more information underneath */ +abbr[title] { + cursor: help; + text-decoration-line: underline; + text-decoration-style: dotted; +} + +button:enabled:hover, +.button:not([aria-disabled="true"]):hover, +input[type="submit"]:enabled:hover, +input[type="reset"]:enabled:hover, +input[type="button"]:enabled:hover, +label[type="button"]:hover { + background-color: var(--accent-hover); + border-color: var(--accent-hover); + cursor: pointer; +} + +.button:focus-visible, +button:focus-visible:where(:enabled), +input:enabled:focus-visible:where( + [type="submit"], + [type="reset"], + [type="button"] +) { + outline: 2px solid var(--accent); + outline-offset: 1px; +} + +/* Format navigation */ +header > nav { + font-size: 1rem; + line-height: 2; + padding: 1rem 0 0 0; +} + +/* Use flexbox to allow items to wrap, as needed */ +header > nav ul, +header > nav ol { + align-content: space-around; + align-items: center; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + list-style-type: none; + margin: 0; + padding: 0; +} + +/* List items are inline elements, make them behave more like blocks */ +header > nav ul li, +header > nav ol li { + display: inline-block; +} + +header > nav a, +header > nav a:visited { + margin: 0 0.5rem 1rem 0.5rem; + border: 1px solid var(--border); + border-radius: var(--standard-border-radius); + color: var(--text); + display: inline-block; + padding: 0.1rem 1rem; + text-decoration: none; +} + +header > nav a:hover, +header > nav a.current, +header > nav a[aria-current="page"] { + border-color: var(--accent); + color: var(--accent); + cursor: pointer; +} + +/* Reduce nav side on mobile */ +@media only screen and (max-width: 720px) { + header > nav a { + border: none; + padding: 0; + text-decoration: underline; + line-height: 1; + } +} + +/* Consolidate box styling */ +aside, details, pre, progress { + background-color: var(--accent-bg); + border: 1px solid var(--border); + border-radius: var(--standard-border-radius); + margin-bottom: 1rem; +} + +aside { + font-size: 1rem; + width: 30%; + padding: 0 15px; + margin-inline-start: 15px; + float: right; +} +*[dir="rtl"] aside { + float: left; +} + +/* Make aside full-width on mobile */ +@media only screen and (max-width: 720px) { + aside { + width: 100%; + float: none; + margin-inline-start: 0; + } +} + +article, fieldset, dialog { + border: 1px solid var(--border); + padding: 1rem; + border-radius: var(--standard-border-radius); + margin-bottom: 1rem; +} + +article h2:first-child, +section h2:first-child { + margin-top: 1rem; +} + +section { + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); + padding: 2rem 1rem; + margin: 3rem 0; +} + +/* Don't double separators when chaining sections */ +section + section, +section:first-child { + border-top: 0; + padding-top: 0; +} + +section:last-child { + border-bottom: 0; + padding-bottom: 0; +} + +details { + padding: 0.7rem 1rem; +} + +summary { + cursor: pointer; + font-weight: bold; + padding: 0.7rem 1rem; + margin: -0.7rem -1rem; + word-break: break-all; +} + +details[open] > summary + * { + margin-top: 0; +} + +details[open] > summary { + margin-bottom: 0.5rem; +} + +details[open] > :last-child { + margin-bottom: 0; +} + +/* Format tables */ +table { + border-collapse: collapse; + margin: 1.5rem 0; +} + +figure > table { + width: max-content; +} + +td, +th { + border: 1px solid var(--border); + text-align: start; + padding: 0.5rem; +} + +th { + background-color: var(--accent-bg); + font-weight: bold; +} + +tr:nth-child(even) { + /* Set every other cell slightly darker. Improves readability. */ + background-color: var(--accent-bg); +} + +table caption { + font-weight: bold; + margin-bottom: 0.5rem; +} + +/* Format forms */ +textarea, +select, +input, +button, +.button { + font-size: inherit; + font-family: inherit; + padding: 0.5rem; + margin-bottom: 0.5rem; + border-radius: var(--standard-border-radius); + box-shadow: none; + max-width: 100%; + display: inline-block; +} +textarea, +select, +input { + color: var(--text); + background-color: var(--bg); + border: 1px solid var(--border); +} +label { + display: block; +} +textarea:not([cols]) { + width: 100%; +} + +/* Add arrow to drop-down */ +select:not([multiple]) { + background-image: linear-gradient(45deg, transparent 49%, var(--text) 51%), + linear-gradient(135deg, var(--text) 51%, transparent 49%); + background-position: calc(100% - 15px), calc(100% - 10px); + background-size: 5px 5px, 5px 5px; + background-repeat: no-repeat; + padding-inline-end: 25px; +} +*[dir="rtl"] select:not([multiple]) { + background-position: 10px, 15px; +} + +/* checkbox and radio button style */ +input[type="checkbox"], +input[type="radio"] { + vertical-align: middle; + position: relative; + width: min-content; +} + +input[type="checkbox"] + label, +input[type="radio"] + label { + display: inline-block; +} + +input[type="radio"] { + border-radius: 100%; +} + +input[type="checkbox"]:checked, +input[type="radio"]:checked { + background-color: var(--accent); +} + +input[type="checkbox"]:checked::after { + /* Creates a rectangle with colored right and bottom borders which is rotated to look like a check mark */ + content: " "; + width: 0.18em; + height: 0.32em; + border-radius: 0; + position: absolute; + top: 0.05em; + left: 0.17em; + background-color: transparent; + border-right: solid var(--bg) 0.08em; + border-bottom: solid var(--bg) 0.08em; + font-size: 1.8em; + transform: rotate(45deg); +} +input[type="radio"]:checked::after { + /* creates a colored circle for the checked radio button */ + content: " "; + width: 0.25em; + height: 0.25em; + border-radius: 100%; + position: absolute; + top: 0.125em; + background-color: var(--bg); + left: 0.125em; + font-size: 32px; +} + +/* Makes input fields wider on smaller screens */ +@media only screen and (max-width: 720px) { + textarea, + select, + input { + width: 100%; + } +} + +/* Set a height for color input */ +input[type="color"] { + height: 2.5rem; + padding: 0.2rem; +} + +/* do not show border around file selector button */ +input[type="file"] { + border: 0; +} + +/* Misc body elements */ +hr { + border: none; + height: 1px; + background: var(--border); + margin: 1rem auto; +} + +mark { + padding: 2px 5px; + border-radius: var(--standard-border-radius); + background-color: var(--marked); + color: black; +} + +mark a { + color: #0d47a1; +} + +img, +video { + max-width: 100%; + height: auto; + border-radius: var(--standard-border-radius); +} + +figure { + margin: 0; + display: block; + overflow-x: auto; +} + +figure > img, +figure > picture > img { + display: block; + margin-inline: auto; +} + +figcaption { + text-align: center; + font-size: 0.9rem; + color: var(--text-light); + margin-block: 1rem; +} + +blockquote { + margin-inline-start: 2rem; + margin-inline-end: 0; + margin-block: 2rem; + padding: 0.4rem 0.8rem; + border-inline-start: 0.35rem solid var(--accent); + color: var(--text-light); + font-style: italic; +} + +cite { + font-size: 0.9rem; + color: var(--text-light); + font-style: normal; +} + +dt { + color: var(--text-light); +} + +/* Use mono font for code elements */ +code, +pre, +pre span, +kbd, +samp { + font-family: var(--mono-font); + color: var(--code); +} + +kbd { + color: var(--preformatted); + border: 1px solid var(--preformatted); + border-bottom: 3px solid var(--preformatted); + border-radius: var(--standard-border-radius); + padding: 0.1rem 0.4rem; +} + +pre { + padding: 1rem 1.4rem; + max-width: 100%; + overflow: auto; + color: var(--preformatted); +} + +/* Fix embedded code within pre */ +pre code { + color: var(--preformatted); + background: none; + margin: 0; + padding: 0; +} + +/* Progress bars */ +/* Declarations are repeated because you */ +/* cannot combine vendor-specific selectors */ +progress { + width: 100%; +} + +progress:indeterminate { + background-color: var(--accent-bg); +} + +progress::-webkit-progress-bar { + border-radius: var(--standard-border-radius); + background-color: var(--accent-bg); +} + +progress::-webkit-progress-value { + border-radius: var(--standard-border-radius); + background-color: var(--accent); +} + +progress::-moz-progress-bar { + border-radius: var(--standard-border-radius); + background-color: var(--accent); + transition-property: width; + transition-duration: 0.3s; +} + +progress:indeterminate::-moz-progress-bar { + background-color: var(--accent-bg); +} + +dialog { + max-width: 40rem; + margin: auto; +} + +dialog::backdrop { + background-color: var(--bg); + opacity: 0.8; +} + +@media only screen and (max-width: 720px) { + dialog { + max-width: 100%; + margin: auto 1em; + } +} + +/* Superscript & Subscript */ +/* Prevent scripts from affecting line-height. */ +sup, sub { + vertical-align: baseline; + position: relative; +} + +sup { + top: -0.4em; +} + +sub { + top: 0.3em; +} + +/* Classes for notices */ +.notice { + background: var(--accent-bg); + border: 2px solid var(--border); + border-radius: var(--standard-border-radius); + padding: 1.5rem; + margin: 2rem 0; +} diff --git a/src/argus_htmx/static/themes/stylize.css b/src/argus_htmx/static/themes/stylize.css new file mode 100644 index 000000000..54023153a --- /dev/null +++ b/src/argus_htmx/static/themes/stylize.css @@ -0,0 +1,278 @@ +/*! stylize.css v1.0.0 | License MIT | https://github.com/vasanthv/stylize.css */ +:root{ + --text: #333333; + --text-med: #888888; + --text-light: #cccccc; + --text-lighter: #eeeeee; + --blue: #3498db; + --dark-blue: #2980b9; + --yellow: #ffeaa7; + --red: #c0392b; + --border-radius: 3px; +} + +body{ + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; /* To use the system default font. */ + line-height: 1.5; + font-size: 1em; + color:var(--text); + margin: 10px; + -webkit-text-size-adjust: 100%; +} + +/* Headings */ +h1{ + font-size: 2em; /* h1 inside section is treated different in some browsers */ + margin: 0.67em 0; +} +h2{ + font-size: 1.5em; + margin: 0.83em 0; +} +h3{ + font-size: 1.17em; + margin: 1em 0; +} +h4{ + font-size: 1em; + margin: 1.17em 0; +} +h5{ + font-size: 0.83em; + margin: 1.5em 0; +} +h6{ + font-size: 0.67em; + margin: 2em 0; +} + +/* Links */ +a{ + color:var(--blue); + background-color: transparent; +} +a:visited{ + color:var(--dark-blue); +} + +/* Navigation Links*/ +nav{ + background-color: var(--text-lighter); + padding: 1em; + margin:-10px; +} +nav a{ + padding:0.5em; + border-radius: var(--border-radius); + text-decoration: none; +} +nav a:hover{ + background-color: var(--text-light); + color: var(--text) +} + +/* Horizontal Line */ +hr{ + border: 1px solid var(--text-med); + border-bottom: 0px; + height:0px; +} + +/* Text formatting tags */ +p{ + margin:1em 0; +} +mark{ + background-color: var(--yellow); + color:#333333; +} +small{ + font-size: 80%; +} +sub, +sup{ + font-size: 75%; +} + +/* Quotation and Citation tags*/ +blockquote{ + border-left: 4px solid var(--text-light); + margin:1em 0; + padding:0.6em 1em; +} +pre{ + font-family: monospace; + border:1px solid var(--text-light); + background-color: var(--text-lighter); + padding: 0.8em; + border-radius: var(--border-radius); + font-size: 1em; + white-space: pre-wrap; + word-wrap: break-word; +} +code, +kbd, +samp{ + font-family: monospace; + font-size: 1em; +} +code, +kbd{ + border-radius: var(--border-radius); + padding:0px 2px; +} +code{ + border:1px solid var(--text-light); + background-color: var(--text-lighter); + color:var(--red); +} +kbd{ + border:1px solid var(--text); + background-color: var(--text); + color:var(--text-lighter); +} + +/* List items */ +ul, ol{ + padding-left: 2em; +} + +/* Form elements */ + +fieldset{ + border: 1px solid var(--text); + border-radius: var(--border-radius); +} +select { + -webkit-appearance: none; + -moz-appearance : none; + appearance : none; + background: transparent; + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position-x: 100%; + background-position-y: 50%; +} +button, +input, +select, +textarea, +a[role="button"] { + font-family: inherit; + font-size: 100%; + line-height: 1.5; + margin: 0; + padding: 0.33em; + border: 1px solid var(--text-light); + border-radius: var(--border-radius); + box-sizing: border-box; +} +input[type="checkbox"], +input[type="radio"]{ + border:none; + border:0; +} + +button, +input[type="button"], +input[type="submit"], +a[role="button"] { + padding: 0.33em 0.66em; + cursor: pointer; + background-color: var(--text-lighter); + color: var(--text); + text-decoration: none; +} +button:hover, +input[type="button"]:hover, +input[type="submit"]:hover, +a[role="button"]:hover { + background-color: var(--text-light); +} +a[role="button"]{ + padding:0.5em 0.66em; +} +button:disabled, +input[type="button"]:disabled, +input[type="submit"]:disabled, +a[role="button"]:disabled { + background-color: var(--text-lighter); + color: var(--text-light); + cursor: not-allowed; +} + /* Progress Bar */ + +progress[value] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + vertical-align: middle; + border: none; + width: 15em; + height: 0.75em; + background-color: var(--text-light); + color: var(--blue); +} +progress[value]::-webkit-progress-bar { + background-color: var(--text-light); +} +progress[value]::-webkit-progress-value{ + background-color: var(--blue); +} + +/* Table Elements */ +table{ + border-collapse: collapse; +} +table, +table th, +table td { + border-bottom: 1px solid var(--text-light); + padding:0.33em 0.66em; + text-align: left; + vertical-align: middle; +} +table[border="1"], +table[border="1"] th, +table[border="1"] td { + border: 1px solid var(--text-light); +} + +/* Utility classes */ +.left{ + float: left; +} +.right{ + float: right; +} +.center{ + text-align: center; +} +.clear{ + clear: both; +} +.hide{ + display: none; +} +.spacer{ + display: block; + height:1em; + border:none; + clear: both; +} +.wrap{ + width: 100%; + max-width: 40em; + margin: auto; +} +.reset{ + font: inherit; + font-size: 100%; + margin: 0; + padding: 0; + border: 0; + text-decoration: none; +} +ol.reset, ul.reset { + list-style: none; +} diff --git a/src/argus_htmx/static/themes/tacit-css-1.5.0.min.css b/src/argus_htmx/static/themes/tacit-css-1.5.0.min.css new file mode 100644 index 000000000..41679ed57 --- /dev/null +++ b/src/argus_htmx/static/themes/tacit-css-1.5.0.min.css @@ -0,0 +1,3 @@ +input,textarea,select,button,option,html,body{font-family:system-ui,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}input,textarea,select,button,option,html,body{font-family:system-ui,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}th{font-weight:600}td,th{border-bottom:1.08px solid #595959;padding:14.85px 18px;text-align:left;vertical-align:top}thead th{border-bottom-width:2.16px;padding-bottom:6.3px}table{display:table;width:100%}@media all and (max-width: 1024px){table{display:none}}@media all and (max-width: 1024px){table thead{display:none}}table tr{border-bottom-width:2.16px}table tr th{border-bottom-width:2.16px}table tr td,table tr th{overflow:hidden;padding:5.4px 3.6px}@media all and (max-width: 1024px){table tr td,table tr th{border:0;display:inline-block}}@media all and (max-width: 1024px){table tr{display:inline-block;margin:10.8px 0}}@media all and (max-width: 1024px){table{display:inline-block}}input,textarea,select,button,option,html,body{font-family:system-ui,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}fieldset{display:flex;flex-direction:row;flex-wrap:wrap}fieldset legend{margin:18px 0}input,textarea,select,button{border-radius:3.6px;display:inline-block;padding:9.9px}input+label,input+input[type="checkbox"],input+input[type="radio"],textarea+label,textarea+input[type="checkbox"],textarea+input[type="radio"],select+label,select+input[type="checkbox"],select+input[type="radio"],button+label,button+input[type="checkbox"],button+input[type="radio"]{page-break-before:always}input,select,label{margin-right:3.6px}textarea{min-height:90px;min-width:360px}label{display:inline-block;margin-bottom:12.6px}label+*{page-break-before:always}label>input{margin-bottom:0}input[type="submit"],input[type="reset"],button{background:#f2f2f2;color:#191919;cursor:pointer;display:inline;margin-bottom:18px;margin-right:7.2px;padding:6.525px 23.4px;text-align:center}input[type="submit"]:hover,input[type="reset"]:hover,button:hover{background:#d9d9d9;color:#000}input[type="submit"][disabled],input[type="reset"][disabled],button[disabled]{background:#e6e5e5;color:#403f3f;cursor:not-allowed}input[type="submit"],button[type="submit"]{background:#275a90;color:#fff}input[type="submit"]:hover,button[type="submit"]:hover{background:#173454;color:#bfbfbf}input,select,textarea{margin-bottom:18px}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="phone"],input[type="tel"],input[type="number"],input[type="datetime"],input[type="date"],input[type="month"],input[type="week"],input[type="color"],input[type="time"],input[type="search"],input[type="range"],input[type="file"],input[type="datetime-local"],select,textarea{border:1px solid #595959;padding:5.4px 6.3px}input[type="checkbox"],input[type="radio"]{flex-grow:0;height:29.7px;margin-left:0;margin-right:9px;vertical-align:middle}input[type="checkbox"]+label,input[type="radio"]+label{page-break-before:avoid}select[multiple]{min-width:270px}input,textarea,select,button,option,html,body{font-family:system-ui,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}pre,code,kbd,samp,var,output{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14.4px}pre{border-left:1.8px solid #59c072;line-height:25.2px;overflow:auto;padding-left:18px}pre code{background:none;border:0;line-height:29.7px;padding:0}code,kbd{background:#daf1e0;border-radius:3.6px;color:#2a6f3b;display:inline-block;line-height:18px;padding:3.6px 6.3px 2.7px}kbd{background:#2a6f3b;color:#fff}mark{background:#ffc;padding:0 3.6px}input,textarea,select,button,option,html,body{font-family:system-ui,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}h1,h2,h3,h4,h5,h6{color:#000;margin-bottom:18px}h1{font-size:36px;font-weight:500;line-height:41.4px;margin-top:72px}h2{font-size:25.2px;font-weight:400;line-height:30.6px;margin-top:54px}h3{font-size:21.6px;line-height:27px;margin-top:36px}h4{font-size:18px;line-height:23.4px;margin-top:18px}h5{font-size:14.4px;font-weight:bold;line-height:21.6px;text-transform:uppercase}h6{color:#595959;font-size:14.4px;font-weight:bold;line-height:18px;text-transform:uppercase}input,textarea,select,button,option,html,body{font-family:system-ui,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px;font-stretch:normal;font-style:normal;font-weight:400;line-height:29.7px}a{color:#275a90;text-decoration:none}a:hover{text-decoration:underline}hr{border-bottom:1px solid #595959}figcaption,small{font-size:15.3px}figcaption{color:#595959}var,em,i{font-style:italic}dt,strong,b{font-weight:600}del,s{text-decoration:line-through}ins,u{text-decoration:underline}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}*{border:0;border-collapse:separate;border-spacing:0;box-sizing:border-box;margin:0;max-width:100%;padding:0;vertical-align:baseline}html,body{width:100%}html{height:100%}body{background:#fff;color:#1a1919;padding:36px}p,ul,ol,dl,blockquote,hr,pre,table,form,fieldset,figure,address{margin-bottom:29.7px}section{margin-left:auto;margin-right:auto;width:900px}aside{float:right;width:285px}article,header,footer{padding:43.2px}article{background:#fff;border:1px solid #d9d9d9;border-radius:7.2px}nav{text-align:center}nav ul{list-style:none;margin-left:0;text-align:center}nav ul li{display:inline-block;margin-left:9px;margin-right:9px;vertical-align:middle}nav ul li:first-child{margin-left:0}nav ul li:last-child{margin-right:0}ol,ul{margin-left:31.5px}li dl,li ol,li ul{margin-bottom:0}dl{display:inline-block}dt{padding:0 18px}dd{padding:0 18px 4.5px}dd:last-of-type{border-bottom:1.08px solid #595959}dd+dt{border-top:1.08px solid #595959;padding-top:9px}blockquote{border-left:2.16px solid #595959;padding:4.5px 18px 4.5px 15.84px}blockquote footer{color:#595959;font-size:13.5px;margin:0}blockquote p{margin-bottom:0}img{height:auto;margin:0 auto}figure img{display:block}@media (max-width: 767px){body{padding:18px 0}article{border:0;padding:18px}header,footer{padding:18px}textarea,input,select{min-width:0}fieldset{min-width:0}fieldset *{flex-grow:1;page-break-before:auto}section{width:auto}x:-moz-any-link{display:table-cell}} + +/*# sourceMappingURL=tacit-css-1.5.0.min.css.map */ \ No newline at end of file diff --git a/src/argus_htmx/static/themes/tufte.css b/src/argus_htmx/static/themes/tufte.css new file mode 100644 index 000000000..834848ef7 --- /dev/null +++ b/src/argus_htmx/static/themes/tufte.css @@ -0,0 +1,486 @@ +@charset "UTF-8"; + +/* Import ET Book styles + adapted from https://github.com/edwardtufte/et-book/blob/gh-pages/et-book.css */ + +@font-face { + font-family: "et-book"; + src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot"); + src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff") format("woff"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf") format("truetype"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg#etbookromanosf") format("svg"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "et-book"; + src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot"); + src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff") format("woff"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf") format("truetype"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg#etbookromanosf") format("svg"); + font-weight: normal; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: "et-book"; + src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot"); + src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff") format("woff"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf") format("truetype"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg#etbookromanosf") format("svg"); + font-weight: bold; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "et-book-roman-old-style"; + src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot"); + src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff") format("woff"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf") format("truetype"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg#etbookromanosf") format("svg"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +/* Tufte CSS styles */ +html { + font-size: 15px; +} + +body { + width: 87.5%; + margin-left: auto; + margin-right: auto; + padding-left: 12.5%; + font-family: et-book, Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; + background-color: #fffff8; + color: #111; + max-width: 1400px; + counter-reset: sidenote-counter; +} + +/* Adds dark mode */ +@media (prefers-color-scheme: dark) { + body { + background-color: #151515; + color: #ddd; + } +} + +h1 { + font-weight: 400; + margin-top: 4rem; + margin-bottom: 1.5rem; + font-size: 3.2rem; + line-height: 1; +} + +h2 { + font-style: italic; + font-weight: 400; + margin-top: 2.1rem; + margin-bottom: 1.4rem; + font-size: 2.2rem; + line-height: 1; +} + +h3 { + font-style: italic; + font-weight: 400; + font-size: 1.7rem; + margin-top: 2rem; + margin-bottom: 1.4rem; + line-height: 1; +} + +hr { + display: block; + height: 1px; + width: 55%; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +p.subtitle { + font-style: italic; + margin-top: 1rem; + margin-bottom: 1rem; + font-size: 1.8rem; + display: block; + line-height: 1; +} + +.numeral { + font-family: et-book-roman-old-style; +} + +.danger { + color: red; +} + +article { + padding: 5rem 0rem; +} + +section { + padding-top: 1rem; + padding-bottom: 1rem; +} + +p, +dl, +ol, +ul { + font-size: 1.4rem; + line-height: 2rem; +} + +p { + margin-top: 1.4rem; + margin-bottom: 1.4rem; + padding-right: 0; + vertical-align: baseline; +} + +/* Chapter Epigraphs */ +div.epigraph { + margin: 5em 0; +} + +div.epigraph > blockquote { + margin-top: 3em; + margin-bottom: 3em; +} + +div.epigraph > blockquote, +div.epigraph > blockquote > p { + font-style: italic; +} + +div.epigraph > blockquote > footer { + font-style: normal; +} + +div.epigraph > blockquote > footer > cite { + font-style: italic; +} +/* end chapter epigraphs styles */ + +blockquote { + font-size: 1.4rem; +} + +blockquote p { + width: 55%; + margin-right: 40px; +} + +blockquote footer { + width: 55%; + font-size: 1.1rem; + text-align: right; +} + +section > p, +section > footer, +section > table { + width: 55%; +} + +/* 50 + 5 == 55, to be the same width as paragraph */ +section > dl, +section > ol, +section > ul { + width: 50%; + -webkit-padding-start: 5%; +} + +dt:not(:first-child), +li:not(:first-child) { + margin-top: 0.25rem; +} + +figure { + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + max-width: 55%; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + margin: 0 0 3em 0; +} + +figcaption { + float: right; + clear: right; + margin-top: 0; + margin-bottom: 0; + font-size: 1.1rem; + line-height: 1.6; + vertical-align: baseline; + position: relative; + max-width: 40%; +} + +figure.fullwidth figcaption { + margin-right: 24%; +} + +/* Links: replicate underline that clears descenders */ +a:link, +a:visited { + color: inherit; +} + +.no-tufte-underline:link { + background: unset; + text-shadow: unset; +} + +a:link, .tufte-underline, .hover-tufte-underline:hover { + text-decoration: none; + background: -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(currentColor, currentColor); + background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(currentColor, currentColor); + -webkit-background-size: 0.05em 1px, 0.05em 1px, 1px 1px; + -moz-background-size: 0.05em 1px, 0.05em 1px, 1px 1px; + background-size: 0.05em 1px, 0.05em 1px, 1px 1px; + background-repeat: no-repeat, no-repeat, repeat-x; + text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8; + background-position: 0% 93%, 100% 93%, 0% 93%; +} + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + a:link, .tufte-underline, .hover-tufte-underline:hover { + background-position-y: 87%, 87%, 87%; + } +} + +/* Adds dark mode */ +@media (prefers-color-scheme: dark) { + a:link, .tufte-underline, .hover-tufte-underline:hover { + text-shadow: 0.03em 0 #151515, -0.03em 0 #151515, 0 0.03em #151515, 0 -0.03em #151515, 0.06em 0 #151515, -0.06em 0 #151515, 0.09em 0 #151515, -0.09em 0 #151515, 0.12em 0 #151515, -0.12em 0 #151515, 0.15em 0 #151515, -0.15em 0 #151515; + } +} + +a:link::selection, +a:link::-moz-selection { + text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe; + background: #b4d5fe; +} + +/* Sidenotes, margin notes, figures, captions */ +img { + max-width: 100%; +} + +.sidenote, +.marginnote { + float: right; + clear: right; + margin-right: -60%; + width: 50%; + margin-top: 0.3rem; + margin-bottom: 0; + font-size: 1.1rem; + line-height: 1.3; + vertical-align: baseline; + position: relative; +} + +.sidenote-number { + counter-increment: sidenote-counter; +} + +.sidenote-number:after, +.sidenote:before { + font-family: et-book-roman-old-style; + position: relative; + vertical-align: baseline; +} + +.sidenote-number:after { + content: counter(sidenote-counter); + font-size: 1rem; + top: -0.5rem; + left: 0.1rem; +} + +.sidenote:before { + content: counter(sidenote-counter) " "; + font-size: 1rem; + top: -0.5rem; +} + +blockquote .sidenote, +blockquote .marginnote { + margin-right: -82%; + min-width: 59%; + text-align: left; +} + +div.fullwidth, +table.fullwidth { + width: 100%; +} + +div.table-wrapper { + overflow-x: auto; + font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif; +} + +.sans { + font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif; + letter-spacing: .03em; +} + +code, pre > code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 1.0rem; + line-height: 1.42; + -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. See https://github.com/edwardtufte/tufte-css/issues/81#issuecomment-261953409 */ +} + +.sans > code { + font-size: 1.2rem; +} + +h1 > code, +h2 > code, +h3 > code { + font-size: 0.80em; +} + +.marginnote > code, +.sidenote > code { + font-size: 1rem; +} + +pre > code { + font-size: 0.9rem; + width: 52.5%; + margin-left: 2.5%; + overflow-x: auto; + display: block; +} + +pre.fullwidth > code { + width: 90%; +} + +.fullwidth { + max-width: 90%; + clear:both; +} + +span.newthought { + font-variant: small-caps; + font-size: 1.2em; +} + +input.margin-toggle { + display: none; +} + +label.sidenote-number { + display: inline-block; + max-height: 2rem; /* should be less than or equal to paragraph line-height */ +} + +label.margin-toggle:not(.sidenote-number) { + display: none; +} + +.iframe-wrapper { + position: relative; + padding-bottom: 56.25%; /* 16:9 */ + padding-top: 25px; + height: 0; +} + +.iframe-wrapper iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +@media (max-width: 760px) { + body { + width: 84%; + padding-left: 8%; + padding-right: 8%; + } + + hr, + section > p, + section > footer, + section > table { + width: 100%; + } + + pre > code { + width: 97%; + } + + section > dl, + section > ol, + section > ul { + width: 90%; + } + + figure { + max-width: 90%; + } + + figcaption, + figure.fullwidth figcaption { + margin-right: 0%; + max-width: none; + } + + blockquote { + margin-left: 1.5em; + margin-right: 0em; + } + + blockquote p, + blockquote footer { + width: 100%; + } + + label.margin-toggle:not(.sidenote-number) { + display: inline; + } + + .sidenote, + .marginnote { + display: none; + } + + .margin-toggle:checked + .sidenote, + .margin-toggle:checked + .marginnote { + display: block; + float: left; + left: 1rem; + clear: both; + width: 95%; + margin: 1rem 2.5%; + vertical-align: baseline; + position: relative; + } + + label { + cursor: pointer; + } + + div.table-wrapper, + table { + width: 85%; + } + + img { + width: 100%; + } +} diff --git a/src/argus_htmx/static/themes/vanilla.css b/src/argus_htmx/static/themes/vanilla.css new file mode 100644 index 000000000..4765d61e0 --- /dev/null +++ b/src/argus_htmx/static/themes/vanilla.css @@ -0,0 +1,187 @@ +/* Reset */ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +* { + box-sizing: border-box; +} + +/* Variables */ +:root { + --desktop-font-size: 1.2rem/1.55; + --mobile-font-size: 1rem/1.45; + --text-color: #2d2d2d; + --link-color: blue; + --link-color-alt: darkblue; + --primary-color: lightsteelblue; + --secondary-color: aliceblue; + --tertiary-color: whitesmoke; +} + +/* Typography */ +body { + color: var(--text-color); + margin: 0 auto; + max-width: 75ch; + padding: 0 0.5rem; +} +body, input { + font: var(--desktop-font-size) -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto, Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol"; +} + +h1,h2,h3,h4,h5,h6,p,blockquote,dl,img,figure { + margin: 2rem 0; +} + +h1,h2,h3,h4,h5,h6 { font-weight: bold; line-height: 1.2; } +h1 { font-size: 200%; } +h2 { font-size: 150%; } +h3 { font-size: 120%; } +h4,h5,h6 { font-size: 100%; } +h5, h6 { text-transform: uppercase; } + +header h1 { border-bottom: 1px solid; } + +a,a:visited { color: var(--link-color); } +a:hover,a:focus { color: var(--link-color-alt); } + +strong, time, b { font-weight: bold; } +em, dfn, i { font-style: italic; } +sub { font-size: 60%; vertical-align: bottom; } +small { font-size: 80%; } + +blockquote, q { + background: var(--secondary-color); + border-left: 10px solid var(--primary-color); + display: block; + font-family: "Georgia", serif; + padding: 1rem; +} +blockquote p:first-child { margin-top: 0; } +blockquote p:last-child { margin-bottom: 0; } +cite { + font-family: "Georgia", serif; + font-style: italic; + font-weight: bold; + margin-top: 1rem; +} + +kbd,code,samp,pre,var { font: var(--mobile-font-size) monospace; } +code, pre { + background: var(--tertiary-color); + border: 1px solid; + overflow: auto; + padding: 0.25rem 0.5rem; +} +code pre , pre code { border: 0; padding: 0; } + +/* Elements */ +hr { + background: var(--text-color); + border: 0; + height: 1px; + margin: 4rem 0; +} + +img { + display: block; + height: auto; + max-width: 100%; +} + +figure { + border: 1px solid var(--primary-color); + display: inline-block; + padding: 1rem; + width: 100%; +} +figure img { margin: 0 auto; } +figure figcaption { font-size: 80%; margin-top: 0.5rem; text-align: center; } + +ul, ol { margin: 2rem 0; padding: 0 0 0 2rem; } +ul li, ol li { margin-bottom: 1rem; } +li > ul, li > ol { margin: 0.25rem 0 0.5rem; padding: 0 0 0 2rem; } +li > ul li, li > ol li { margin-bottom: 0.5rem; } + +dl dd { padding-left: 2rem; } + +table { + border: 1px solid var(--primary-color); + border-collapse: collapse; + table-layout: fixed; + text-align: left; + width: 100%; +} +table caption { margin: 2rem 0; } +table tr { border-bottom: 1px solid var(--primary-color); } +table thead { position: sticky; top: 0; } +table tbody tr:nth-child(even) { background: var(--tertiary-color); } +table th { background: var(--secondary-color); font-weight: bold; } +table th, table td { padding: 0.5rem; } + +input { + appearance: none; + border: 1px solid var(--text-color); + display: block; + margin: 0.5rem 0; + padding: 0.8rem; +} +input:focus, input:active { background-color: var(--secondary-color); border-color: var(--link-color); } + +sup { font-size: 80%; vertical-align: top; } + +/* Mobile Styling */ +@media screen and (max-width: 75ch) { + body, input { + font: var(--mobile-font-size) -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto, Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol"; + } + table { table-layout: auto; } +} + +/* Dark mode support */ +@media (prefers-color-scheme: dark) { + body { + background: #191919; + } + input:focus, input:active { + background-color: var(--text-color); + color: var(--secondary-color); + } + table, + table tr, + table th:not(:last-of-type), + table td:not(:last-of-type) { + border-color: var(--text-color); + } + table thead th, + table tfoot th { + background-color: var(--primary-color-light); + } + :root { + --text-color: #fff; + --link-color: orange; + --link-color-alt: yellow; + --primary-color: orange; + --primary-color-light: dimgrey; + --secondary-color: black; + --tertiary-color: #2d2d2d; + } +} diff --git a/src/argus_htmx/static/themes/water-dark.css b/src/argus_htmx/static/themes/water-dark.css new file mode 100644 index 000000000..43a72e950 --- /dev/null +++ b/src/argus_htmx/static/themes/water-dark.css @@ -0,0 +1,241 @@ +@charset "UTF-8"; +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + max-width: 800px; + margin: 20px auto; + padding: 0 10px; + color: #dbdbdb; + background: #202b38; + text-rendering: optimizeLegibility; +} + +button, input, textarea { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; +} + +h1 { + font-size: 2.2em; + margin-top: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-bottom: 12px; +} + +h1, +h2, +h3, +h4, +h5, +h6, +strong { + color: #ffffff; +} + +h1, +h2, +h3, +h4, +h5, +h6, +b, +strong, +th { + font-weight: 600; +} + +blockquote { + border-left: 4px solid #0096bfab; + margin: 1.5em 0em; + padding: 0.5em 1em; + font-style: italic; +} + +blockquote > footer { + margin-top: 10px; + font-style: normal; +} + +blockquote cite { + font-style: normal; +} + +address { + font-style: normal; +} + +a[href^='mailto']::before { + content: '📧 '; +} + +a[href^='tel']::before { + content: '📞 '; +} + +a[href^='sms']::before { + content: '💬 '; +} + +button, +input[type='submit'], +input[type='button'], +input[type='checkbox'] { + cursor: pointer; +} + +input:not([type='checkbox']):not([type='radio']), +select { + display: block; +} + +input, select, button, textarea { + color: #ffffff; + background-color: #161f27; + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} + +input:not([type='checkbox']):not([type='radio']), +select, button, textarea { + -webkit-appearance: none; +} + +textarea { + margin-right: 0; + width: 100%; + box-sizing: border-box; + resize: vertical; +} + +button, input[type='submit'], input[type='button'] { + padding-right: 30px; + padding-left: 30px; +} + +button:hover, +input[type='submit']:hover, +input[type='button']:hover { + background: #324759; +} + +input:focus, +select:focus, +button:focus, +textarea:focus { + box-shadow: 0 0 0 2px #0096bfab; +} + +input[type='checkbox']:active, +input[type='radio']:active, +input[type='submit']:active, +input[type='button']:active, +button:active { + transform: translateY(2px); +} + +input:disabled, +select:disabled, +button:disabled, +textarea:disabled { + cursor: not-allowed; + opacity: .5; +} + +::-webkit-input-placeholder { + color: #a9a9a9; +} + +:-ms-input-placeholder { + color: #a9a9a9; +} + +::-ms-input-placeholder { + color: #a9a9a9; +} + +::placeholder { + color: #a9a9a9; +} + +a { + text-decoration: none; + color: #41adff; +} + +a:hover { + text-decoration: underline; +} + +code, kbd { + background: #161f27; + color: #ffbe85; + padding: 5px; + border-radius: 6px; +} + +pre > code { + padding: 10px; + display: block; + overflow-x: auto; +} + +img { + max-width: 100%; +} + +hr { + border: none; + border-top: 1px solid #dbdbdb; +} + +table { + border-collapse: collapse; + margin-bottom: 10px; + width: 100%; +} + +td, th { + padding: 6px; + text-align: left; +} + +th { + border-bottom: 1px solid #dbdbdb; +} + +tbody tr:nth-child(even) { + background-color: #161f27; +} + +::-webkit-scrollbar { + height: 10px; + width: 10px; +} + +::-webkit-scrollbar-track { + background: #161f27; + border-radius: 6px; +} + +::-webkit-scrollbar-thumb { + background: #324759; + border-radius: 6px; +} + +::-webkit-scrollbar-thumb:hover { + background: #415c73; +} + +/*# sourceMappingURL=dark.css.map */ diff --git a/src/argus_htmx/static/themes/water-light.css b/src/argus_htmx/static/themes/water-light.css new file mode 100644 index 000000000..e2ea9a868 --- /dev/null +++ b/src/argus_htmx/static/themes/water-light.css @@ -0,0 +1,241 @@ +@charset "UTF-8"; +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + max-width: 800px; + margin: 20px auto; + padding: 0 10px; + color: #363636; + background: #ffffff; + text-rendering: optimizeLegibility; +} + +button, input, textarea { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; +} + +h1 { + font-size: 2.2em; + margin-top: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-bottom: 12px; +} + +h1, +h2, +h3, +h4, +h5, +h6, +strong { + color: #000000; +} + +h1, +h2, +h3, +h4, +h5, +h6, +b, +strong, +th { + font-weight: 600; +} + +blockquote { + border-left: 4px solid #0096bfab; + margin: 1.5em 0em; + padding: 0.5em 1em; + font-style: italic; +} + +blockquote > footer { + margin-top: 10px; + font-style: normal; +} + +blockquote cite { + font-style: normal; +} + +address { + font-style: normal; +} + +a[href^='mailto']::before { + content: '📧 '; +} + +a[href^='tel']::before { + content: '📞 '; +} + +a[href^='sms']::before { + content: '💬 '; +} + +button, +input[type='submit'], +input[type='button'], +input[type='checkbox'] { + cursor: pointer; +} + +input:not([type='checkbox']):not([type='radio']), +select { + display: block; +} + +input, select, button, textarea { + color: #000000; + background-color: #efefef; + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} + +input:not([type='checkbox']):not([type='radio']), +select, button, textarea { + -webkit-appearance: none; +} + +textarea { + margin-right: 0; + width: 100%; + box-sizing: border-box; + resize: vertical; +} + +button, input[type='submit'], input[type='button'] { + padding-right: 30px; + padding-left: 30px; +} + +button:hover, +input[type='submit']:hover, +input[type='button']:hover { + background: #dddddd; +} + +input:focus, +select:focus, +button:focus, +textarea:focus { + box-shadow: 0 0 0 2px #0096bfab; +} + +input[type='checkbox']:active, +input[type='radio']:active, +input[type='submit']:active, +input[type='button']:active, +button:active { + transform: translateY(2px); +} + +input:disabled, +select:disabled, +button:disabled, +textarea:disabled { + cursor: not-allowed; + opacity: .5; +} + +::-webkit-input-placeholder { + color: #949494; +} + +:-ms-input-placeholder { + color: #949494; +} + +::-ms-input-placeholder { + color: #949494; +} + +::placeholder { + color: #949494; +} + +a { + text-decoration: none; + color: #0076d1; +} + +a:hover { + text-decoration: underline; +} + +code, kbd { + background: #efefef; + color: #000000; + padding: 5px; + border-radius: 6px; +} + +pre > code { + padding: 10px; + display: block; + overflow-x: auto; +} + +img { + max-width: 100%; +} + +hr { + border: none; + border-top: 1px solid #dbdbdb; +} + +table { + border-collapse: collapse; + margin-bottom: 10px; + width: 100%; +} + +td, th { + padding: 6px; + text-align: left; +} + +th { + border-bottom: 1px solid #dbdbdb; +} + +tbody tr:nth-child(even) { + background-color: #efefef; +} + +::-webkit-scrollbar { + height: 10px; + width: 10px; +} + +::-webkit-scrollbar-track { + background: #efefef; + border-radius: 6px; +} + +::-webkit-scrollbar-thumb { + background: #d5d5d5; + border-radius: 6px; +} + +::-webkit-scrollbar-thumb:hover { + background: #c4c4c4; +} + +/*# sourceMappingURL=light.css.map */ diff --git a/src/argus_htmx/static/themes/writ.min.css b/src/argus_htmx/static/themes/writ.min.css new file mode 100644 index 000000000..4fca15d1c --- /dev/null +++ b/src/argus_htmx/static/themes/writ.min.css @@ -0,0 +1,7 @@ +/*! + * Writ v1.0.4 + * + * Copyright © 2015, Curtis McEnroe + * + * https://cmcenroe.me/writ/LICENSE (ISC) + */dd,hr,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow-x:auto}a,ins{text-decoration:none}html{font-family:Palatino,Georgia,Lucida Bright,Book Antiqua,serif;font-size:16px;line-height:1.5rem}code,kbd,pre,samp{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.833rem;color:#111}kbd{font-weight:700}h1,h2,h3,h4,h5,h6,th{font-weight:400}h1{font-size:2.488em}h2{font-size:2.074em}h3{font-size:1.728em}h4{font-size:1.44em}h5{font-size:1.2em}h6{font-size:1em}small{font-size:.833em}h1,h2,h3{line-height:3rem}blockquote,dl,h1,h2,h3,h4,h5,h6,ol,p,pre,table,ul{margin:1.5rem 0 0}pre,table{margin-bottom:-1px}hr{border:none;padding:1.5rem 0 0}table{line-height:calc(1.5rem - 1px);width:100%;border-collapse:collapse}pre{margin-top:calc(1.5rem - 1px)}body{color:#222;margin:1.5rem 1ch}a,a code,header nav a:visited{color:#00e}a:visited,a:visited code{color:#60b}mark{color:inherit;background-color:#fe0}code,pre,samp,tfoot,thead{background-color:rgba(0,0,0,.05)}blockquote,ins,main aside{border:rgba(0,0,0,.05) solid}blockquote,main aside{border-width:0 0 0 .5ch}code,pre,samp{border:rgba(0,0,0,.1) solid}td,th{border:solid #dbdbdb}body>header{text-align:center}body>footer,main{display:block;max-width:78ch;margin:auto}main aside,main figure{float:right;margin:1.5rem 0 0 1ch}main aside{max-width:26ch;padding:0 0 0 .5ch}blockquote{margin-right:3ch;margin-left:1.5ch;padding:0 0 0 1ch}pre{border-width:1px;border-radius:2px;padding:0 .5ch}pre code{border:none;padding:0;background-color:transparent;white-space:inherit}code,ins,samp,td,th{border-width:1px}img{max-width:100%}dd,ol,ul{padding:0 0 0 3ch}ul>li{list-style-type:disc}li ul>li{list-style-type:circle}li li ul>li{list-style-type:square}ol>li{list-style-type:decimal}li ol>li{list-style-type:lower-roman}li li ol>li{list-style-type:lower-alpha}nav ul{padding:0;list-style-type:none}nav ul li{display:inline;padding-left:1ch;white-space:nowrap}nav ul li:first-child{padding-left:0}ins,mark{padding:1px}td,th{padding:0 .5ch}sub,sup{font-size:.75em;line-height:1em}code,samp{border-radius:2px;padding:.1em .2em;white-space:nowrap} \ No newline at end of file diff --git a/src/argus_htmx/static/themes/yorha.min.css b/src/argus_htmx/static/themes/yorha.min.css new file mode 100644 index 000000000..45d7b994d --- /dev/null +++ b/src/argus_htmx/static/themes/yorha.min.css @@ -0,0 +1 @@ +::selection{background-color:#bab5a1}a{color:inherit}p{margin:0 0 1rem 0}mark{background-color:#454138;color:#dcd8c0}h1{font-weight:normal;text-transform:uppercase;letter-spacing:.5rem;text-shadow:.3rem .3rem 0 #bab5a1}h2{font-weight:lighter;border:solid #454138;border-width:.1rem 0;padding:.1rem 1rem}h3{font-weight:lighter;letter-spacing:.1rem}h4{font-weight:lighter;letter-spacing:.1rem}h5{font-weight:lighter;letter-spacing:.1rem}h6{font-weight:lighter;letter-spacing:.1rem}blockquote{padding:.5rem}blockquote{position:relative}blockquote:before{content:'';position:absolute;top:0;left:-1.5rem;bottom:0;height:100%;width:.3rem;border:solid #bab5a1;border-width:0 .2rem 0 .6rem}cite{padding-left:2rem}cite{position:relative}cite:before{content:'';position:absolute;width:.7rem;height:.7rem;background-color:#454138;margin-left:-1rem;top:.25em}hr{margin:1rem 0;border-top:solid #bab5a1;border-width:.1rem 0 0 0}table{border-collapse:collapse;font-weight:inherit}th{font-weight:normal}td,th{padding:.5rem}th{text-align:left;border-bottom:.1rem solid #454138}pre{background-color:#dcd8c0;padding:1rem}body{background-color:#d1cdb7;font-family:helvetica,sans-serif;letter-spacing:.03rem;font-weight:lighter;color:#454138}body{-webkit-background-size:.3rem .3rem;-moz-background-size:.3rem .3rem;background-size:.3rem .3rem;background-image:-webkit-linear-gradient(left, #ccc8b1 1px, transparent 1px), -webkit-linear-gradient(top, #ccc8b1 1px, transparent 1px);background-image:-moz-linear-gradient(left, #ccc8b1 1px, transparent 1px), -moz-linear-gradient(top, #ccc8b1 1px, transparent 1px);background-image:-o-linear-gradient(left, #ccc8b1 1px, transparent 1px), -o-linear-gradient(top, #ccc8b1 1px, transparent 1px);background-image:-ms-linear-gradient(left, #ccc8b1 1px, transparent 1px), -ms-linear-gradient(top, #ccc8b1 1px, transparent 1px);background-image:linear-gradient(to right, #ccc8b1 1px, transparent 1px), linear-gradient(to bottom, #ccc8b1 1px, transparent 1px)}::selection{background-color:#bab5a1}a{color:inherit}p{margin:0 0 1rem 0}mark{background-color:#454138;color:#dcd8c0}h1{font-weight:normal;text-transform:uppercase;letter-spacing:.5rem;text-shadow:.3rem .3rem 0 #bab5a1}h2{font-weight:lighter;border:solid #454138;border-width:.1rem 0;padding:.1rem 1rem}h3{font-weight:lighter;letter-spacing:.1rem}h4{font-weight:lighter;letter-spacing:.1rem}h5{font-weight:lighter;letter-spacing:.1rem}h6{font-weight:lighter;letter-spacing:.1rem}blockquote{padding:.5rem}blockquote{position:relative}blockquote:before{content:'';position:absolute;top:0;left:-1.5rem;bottom:0;height:100%;width:.3rem;border:solid #bab5a1;border-width:0 .2rem 0 .6rem}cite{padding-left:2rem}cite{position:relative}cite:before{content:'';position:absolute;width:.7rem;height:.7rem;background-color:#454138;margin-left:-1rem;top:.25em}hr{margin:1rem 0;border-top:solid #bab5a1;border-width:.1rem 0 0 0}table{border-collapse:collapse;font-weight:inherit}th{font-weight:normal}td,th{padding:.5rem}th{text-align:left;border-bottom:.1rem solid #454138}pre{background-color:#dcd8c0;padding:1rem}figure{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0;margin-bottom:1rem;background-color:#dcd8c0;padding:.5rem;}figure > :not(figcaption){margin:.5rem}figure > figcaption{-webkit-box-ordinal-group:-1;-moz-box-ordinal-group:-1;-o-box-ordinal-group:-1;-ms-flex-order:-1;-webkit-order:-1;order:-1;margin:-.5rem;margin-bottom:.5rem;padding:.5rem 1rem;font-size:1.2rem;background-color:#454138;color:#bab5a1}iframe{border:.1rem solid #bab5a1}fieldset{padding:1rem;padding-top:.5rem;border:.1rem solid #bab5a1}legend{padding:0 .5rem}label{display:inline-block;margin:.5rem 0}input[type=text]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=password]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=url]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=email]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=tel]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=search]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=number]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=color]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=date]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=month]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=week]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=datetime]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=datetime-local]{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}textarea{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}select{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIwLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0LjkgMTAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQuOSAxMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiM0NDQ0NDQ7fQo8L3N0eWxlPgo8dGl0bGU+YXJyb3dzPC90aXRsZT4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxLjQsNC43IDIuNSwzLjIgMy41LDQuNyAiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIzLjUsNS4zIDIuNSw2LjggMS40LDUuMyAiLz4KPC9zdmc+Cg==") no-repeat right;padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit}input[type=submit]:not(:disabled){padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#bab5a1;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit;cursor:pointer;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;-ms-transition:all 0.2s;transition:all 0.2s;}input[type=submit]:not(:disabled):hover{-webkit-box-shadow:.2em .2em .1em 0 #bab5a1;box-shadow:.2em .2em .1em 0 #bab5a1}input[type=submit]:not(:disabled):hover{background-color:#454138;color:#dcd8c0}input[type=submit]:not(:disabled):active{background-color:#dcd8c0;color:#454138}input[type=button]:not(:disabled){padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#bab5a1;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit;cursor:pointer;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;-ms-transition:all 0.2s;transition:all 0.2s;}input[type=button]:not(:disabled):hover{-webkit-box-shadow:.2em .2em .1em 0 #bab5a1;box-shadow:.2em .2em .1em 0 #bab5a1}input[type=button]:not(:disabled):hover{background-color:#454138;color:#dcd8c0}input[type=button]:not(:disabled):active{background-color:#dcd8c0;color:#454138}input[type=reset]:not(:disabled){padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#bab5a1;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit;cursor:pointer;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;-ms-transition:all 0.2s;transition:all 0.2s;}input[type=reset]:not(:disabled):hover{-webkit-box-shadow:.2em .2em .1em 0 #bab5a1;box-shadow:.2em .2em .1em 0 #bab5a1}input[type=reset]:not(:disabled):hover{background-color:#454138;color:#dcd8c0}input[type=reset]:not(:disabled):active{background-color:#dcd8c0;color:#454138}input:disabled,button:disabled,.button-disabled{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#dcd8c0;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit;color:#bab5a1;cursor:not-allowed}button:not(:disabled),.button{padding:.5rem;font-size:1em;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0;background-color:#bab5a1;color:inherit;font-family:inherit;letter-spacing:inherit;font-weight:inherit;cursor:pointer;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;-ms-transition:all 0.2s;transition:all 0.2s;position:relative;}button:not(:disabled):hover,.button:hover{-webkit-box-shadow:.2em .2em .1em 0 #bab5a1;box-shadow:.2em .2em .1em 0 #bab5a1}button:not(:disabled):before,.button:before{content:'';-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;-ms-transition:all 0.2s;transition:all 0.2s;position:absolute;top:0;bottom:0;left:0;right:0}button:not(:disabled):after,.button:after{content:'';-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;-ms-transition:all 0.2s;transition:all 0.2s;-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;transition-timing-function:ease-out;position:absolute;top:0;bottom:0;left:0;width:0;background-color:#454138;z-index:-1}button:not(:disabled):hover,.button:hover{background-color:transparent;color:#dcd8c0;}button:not(:disabled):hover:before,.button:hover:before{top:-.2rem;bottom:-.2rem;border:solid #454138;border-width:.1rem 0}button:not(:disabled):hover:after,.button:hover:after{width:100%}button:not(:disabled):active,.button:active{color:#454138;}button:not(:disabled):active:after,.button:active:after{background-color:#dcd8c0}::-webkit-input-placeholder{opacity:1;-ms-filter:none;filter:none;color:#bab5a1;font-weight:lighter}::-moz-placeholder{opacity:1;-ms-filter:none;filter:none;color:#bab5a1;font-weight:lighter}::-ms-input-placeholder{opacity:1;-ms-filter:none;filter:none;color:#bab5a1;font-weight:lighter} diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index c1a547a72..a1aca8df1 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -3,18 +3,23 @@ {% block head %} {% if theme %} - + {% else %} {% endif %} +{% comment %} +{% endcomment %} {% endblock head %} {% block header %}
    -

    Logo Argus: {{ page_title }}

    - - -
    {% block userlink %} -Theme: "{{ theme }}" +
    +{% endblock %} + +
    {% endblock header %} diff --git a/src/argus_htmx/templates/htmx/themes/themes_list.html b/src/argus_htmx/templates/htmx/themes/themes_list.html new file mode 100644 index 000000000..42ad97220 --- /dev/null +++ b/src/argus_htmx/templates/htmx/themes/themes_list.html @@ -0,0 +1,23 @@ +{% extends "htmx/base.html" %} + +{% block main %} +
    +

    Switch theme

    +{% if theme %} +

    Theme is set to: {{ theme }}

    +{% else %} +

    No theme set

    +{% endif %} +
      + {% for item in object_list %} +
    • + + {% csrf_token %} + + +
    • + + {% endfor %} +
    +
    +{% endblock main %} diff --git a/src/argus_htmx/themes/__init__.py b/src/argus_htmx/themes/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/themes/urls.py b/src/argus_htmx/themes/urls.py new file mode 100644 index 000000000..9d344d96f --- /dev/null +++ b/src/argus_htmx/themes/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from . import views + + +app_name = "htmx" +urlpatterns = [ + path("", views.ThemeListView.as_view(), name="theme-list"), +] diff --git a/src/argus_htmx/themes/views.py b/src/argus_htmx/themes/views.py new file mode 100644 index 000000000..613ef83fe --- /dev/null +++ b/src/argus_htmx/themes/views.py @@ -0,0 +1,52 @@ +import importlib_resources +import logging +from pathlib import Path +from typing import Optional + +from django.conf import settings +from django.contrib import messages +from django.contrib.auth.models import Group +from django.core.exceptions import PermissionDenied +from django.shortcuts import render, reverse, get_object_or_404 +from django.views.generic import ListView + +from django.views.decorators.http import require_GET +from django.http import HttpResponseRedirect + + +LOG = logging.getLogger(__name__) +THEMES_MODULE = 'argus_htmx' +THEMES_PATH = "static/themes/" + + +def get_theme_files(request): + theme_files_dir = importlib_resources.files(THEMES_MODULE).joinpath(THEMES_PATH) + absolute_filenames = (path for path in theme_files_dir.iterdir()) + theme_names = [] + for f in absolute_filenames: + if not f.suffix == '.css': + continue + filename = f.name.rstrip('.css') + theme_names.append(filename) + return sorted(theme_names) + + +class ThemeListView(ListView): + http_method_names = ['get', 'post', 'head', 'options', 'trace'] + template_name = "htmx/themes/themes_list.html" + + def setup(self, request, *args, **kwargs): + super().setup(request, *args, **kwargs) + self.themes = get_theme_files(request) + + def get_queryset(self): + return self.themes + + def post(self, request, *args, **kwargs): + theme = request.POST.get("theme") + if theme in self.themes: + request.session["theme"] = theme + messages.success(request, f'Switched theme to "{theme}"') + else: + messages.warning(request, f'Failed to switch to theme "{theme}", no such theme installed') + return HttpResponseRedirect("") diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index 2cb170f2a..bdb576844 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -8,6 +8,7 @@ from .timeslots.urls import urlpatterns as timeslot_urls from .notificationprofiles.urls import urlpatterns as notificationprofile_urls from .destinations.urls import urlpatterns as destination_urls +from .themes.urls import urlpatterns as theme_urls app_name = "htmx" urlpatterns = [ @@ -22,4 +23,5 @@ path("timeslots/", include(timeslot_urls)), path("notificationprofiles/", include(notificationprofile_urls)), path("destinations/", include(destination_urls)), + path("themes/", include(theme_urls)), ] From e5ed22b8069e22dd2c5ed6b2f0f55400ce69b867 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 15 May 2024 15:07:19 +0200 Subject: [PATCH 019/216] Speed up rendering of incident list It was slow because even if we showed only five items, we loaded all incidents available (40k or so) by slicing *in the template itself* and counting the length *in the template itself*. Additionally we now prefetch tags, events and acks to make dynamic columns cheaper. --- src/argus_htmx/incidents/views.py | 18 ++++++++++++++++-- .../templates/htmx/incidents/list.html | 4 ++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 57d895e6b..05c573929 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -18,16 +18,30 @@ LOG = logging.getLogger(__name__) +def prefetch_incident_daughters(): + return ( + Incident.objects + .select_related("source") + .prefetch_related( + "incident_tag_relations", + "incident_tag_relations__tag", + "events", + "events__ack", + ) + ) + + class HtmxHttpRequest(HttpRequest): htmx: HtmxDetails def incidents(request): - qs = Incident.objects.all().order_by("-start_time") + qs = prefetch_incident_daughters().order_by("-start_time") latest = qs.latest("start_time").start_time context = { - "qs": qs, + "qs": qs[:5], "latest": latest, + "count": qs.count(), "page_title": "Incidents", } return render(request, "htmx/incidents/list.html", context=context) diff --git a/src/argus_htmx/templates/htmx/incidents/list.html b/src/argus_htmx/templates/htmx/incidents/list.html index 8946f3124..dda78912b 100644 --- a/src/argus_htmx/templates/htmx/incidents/list.html +++ b/src/argus_htmx/templates/htmx/incidents/list.html @@ -3,7 +3,7 @@ {% block main %} Latest: {{ latest }}
      - {% for incident in qs|slice:5 %} + {% for incident in qs %} {% block incident %} {% include "htmx/incidents/_incident_row.html" %} {% endblock incident %} @@ -11,5 +11,5 @@
    • None found
    • {% endfor %}
    -Total, all time: {{ qs|length }} +Total, all time: {{ count }} {% endblock main %} From fb8c758e5df2799b3e409cc675c6010d9dbee4e5 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Thu, 16 May 2024 08:55:28 +0200 Subject: [PATCH 020/216] Update version for new release --- src/argus_htmx/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/__init__.py b/src/argus_htmx/__init__.py index a4e2017f0..09888577e 100644 --- a/src/argus_htmx/__init__.py +++ b/src/argus_htmx/__init__.py @@ -1 +1 @@ -__version__ = "0.1" +__version__ = "0.2" From 2e809a01f64c5c4c072f9381585f2e79dd35483d Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Thu, 16 May 2024 09:29:40 +0200 Subject: [PATCH 021/216] Use a base.html we control and make
    mandatory --- src/argus_htmx/templates/htmx/base.html | 2 +- .../htmx/incidents/incidents_list.html | 28 +++++++++---------- src/argus_htmx/templates/htmx_base.html | 26 +++++++++++++++++ 3 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 src/argus_htmx/templates/htmx_base.html diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index a1aca8df1..360009778 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "htmx_base.html" %} {% block head %} diff --git a/src/argus_htmx/templates/htmx/incidents/incidents_list.html b/src/argus_htmx/templates/htmx/incidents/incidents_list.html index 560009540..aa9f3d92b 100644 --- a/src/argus_htmx/templates/htmx/incidents/incidents_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incidents_list.html @@ -1,21 +1,19 @@ {% extends base %} {% block main %} -
    -
    -

    - Latest: {{ latest }} -

    -
    +
    +

    + Latest: {{ latest }} +

    +
    -
    - {% include "htmx/incidents/_incidents_table.html" %} -
    +
    + {% include "htmx/incidents/_incidents_table.html" %} +
    -
    -

    - Total, all time: {{ qs|length }} -

    -
    -
    +
    +

    + Total, all time: {{ qs|length }} +

    +
    {% endblock main %} diff --git a/src/argus_htmx/templates/htmx_base.html b/src/argus_htmx/templates/htmx_base.html new file mode 100644 index 000000000..5e067411b --- /dev/null +++ b/src/argus_htmx/templates/htmx_base.html @@ -0,0 +1,26 @@ +{% load static %} + + + + + + {% block title %}Argus Server: {{ page_title }}{% endblock %} + {% block head %} + {% endblock head %} + + + {% block header %} +

    Argus Server: {{ page_title }}

    + {% endblock header %} + +
    + {% block main %} + {% endblock main %} +
    + + {% block footer %} + {% endblock footer %} + + {% block tail %}{% endblock tail %} + + From 90a014c387dddb7048031c9692f7b34a361f12c7 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Thu, 16 May 2024 09:47:22 +0200 Subject: [PATCH 022/216] Add a section about updating --- README.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.rst b/README.rst index 0eed0546c..c99b12103 100644 --- a/README.rst +++ b/README.rst @@ -72,6 +72,11 @@ In your local settings that star-imports from an `argus-server`_ settings file:: MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] +Update +------ + +On every new version, reinstall the dependencies since there might be new ones. + Themes ------ From 976c3997b1aa239952589863c8a747b564ddfda4 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 8 May 2024 16:24:11 +0200 Subject: [PATCH 023/216] Add incidents refresh info block --- src/argus_htmx/incidents/views.py | 4 ++++ .../templates/htmx/incidents/_incidents_refresh_info.html | 4 ++++ src/argus_htmx/templates/htmx/incidents/incidents_list.html | 5 +++++ 3 files changed, 13 insertions(+) create mode 100644 src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 05c573929..7b8b53a29 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -1,5 +1,6 @@ import logging from typing import Optional +from datetime import datetime from django.conf import settings from django.contrib.auth.models import Group @@ -12,6 +13,7 @@ from django_htmx.middleware import HtmxDetails from argus.incident.models import Incident +from argus.util.datetime_utils import make_aware from .forms import AckForm @@ -96,6 +98,7 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: # Load incidents qs = Incident.objects.all().order_by("-start_time") latest = qs.latest("start_time").start_time + last_refreshed = make_aware(datetime.now()) # Standard Django pagination page_num = request.GET.get("page", "1") @@ -115,6 +118,7 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: "page_title": "Incidents", "base": base_template, "page": page, + "last_refreshed": last_refreshed, } return render( diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html new file mode 100644 index 000000000..41e0324a0 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html @@ -0,0 +1,4 @@ +

    + Last refreshed {{ last_refreshed|date:"DATETIME_FORMAT"|default:"?" }}. + Updating every: {{ update_interval|default:"?" }}s. +

    diff --git a/src/argus_htmx/templates/htmx/incidents/incidents_list.html b/src/argus_htmx/templates/htmx/incidents/incidents_list.html index aa9f3d92b..b329f1009 100644 --- a/src/argus_htmx/templates/htmx/incidents/incidents_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incidents_list.html @@ -15,5 +15,10 @@

    Total, all time: {{ qs|length }}

    + + {% block refresh_info %} + {% include "htmx/incidents/_incidents_refresh_info.html" %} + {% endblock refresh_info %} + {% endblock main %} From bda30e625981e5cea4f1e63cd61b9dfdf190e320 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 8 May 2024 16:38:11 +0200 Subject: [PATCH 024/216] Update both table and table refresh info section on page change --- src/argus_htmx/incidents/views.py | 2 +- .../htmx/incidents/_incidents_table.html | 162 +++++++++--------- .../htmx/incidents/incidents_list.html | 4 +- .../responses/_incidents_table_refresh.html | 6 + 4 files changed, 90 insertions(+), 84 deletions(-) create mode 100644 src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 7b8b53a29..c8a2deae0 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -108,7 +108,7 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: # requests, allowing us to skip rendering the unchanging parts of the # template. if request.htmx: - base_template = "htmx/incidents/_incidents_table.html" + base_template = "htmx/incidents/responses/_incidents_table_refresh.html" else: base_template = "htmx/incidents/_base.html" diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_table.html b/src/argus_htmx/templates/htmx/incidents/_incidents_table.html index 9e5ab0697..fc42c0e48 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_table.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_table.html @@ -1,89 +1,87 @@ - {% block table %} - + + + + + + + + + + + + + + + {% for incident in page.object_list %} + {% block incident %} + {% include 'htmx/incidents/_incident_table_row.html' %} + {% endblock incident %} + {% empty %} - - - - - - - - - + - - - {% for incident in page.object_list %} - {% block incident %} - {% include 'htmx/incidents/_incident_table_row.html' %} - {% endblock incident %} - {% empty %} - - - - {% endfor %} - - - - + + - - - {% endblock %} + + +
    actionsidtimestampstatusseveritysourcedescriptionacktag
    actionsidtimestampstatusseveritysourcedescriptionacktag + No incidents on this page. +
    - No incidents on this page. -
    - -
    + + + {% endif %} + + -
    diff --git a/src/argus_htmx/templates/htmx/incidents/incidents_list.html b/src/argus_htmx/templates/htmx/incidents/incidents_list.html index b329f1009..0bdc251a5 100644 --- a/src/argus_htmx/templates/htmx/incidents/incidents_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incidents_list.html @@ -8,7 +8,9 @@
    - {% include "htmx/incidents/_incidents_table.html" %} + {% block table %} + {% include "htmx/incidents/_incidents_table.html" %} + {% endblock table %}
    diff --git a/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html b/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html new file mode 100644 index 000000000..a25763247 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html @@ -0,0 +1,6 @@ +{% block table %} +{% endblock table %} + +{% block refresh_info %} + {% include "htmx/incidents/_incidents_refresh_info.html" with oob='outerHTML' %} +{% endblock refresh_info %} From 41b34ff4120d6ccde48cab452354a39b321a4ad4 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 8 May 2024 16:41:59 +0200 Subject: [PATCH 025/216] Add hardcoded refresh interval --- src/argus_htmx/incidents/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index c8a2deae0..2ee21db5a 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -119,6 +119,7 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: "base": base_template, "page": page, "last_refreshed": last_refreshed, + "update_interval": 30, } return render( From 434a8dcca2fa21385bdec9a235bdd258571140e2 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Mon, 13 May 2024 15:37:19 +0200 Subject: [PATCH 026/216] Enable useTemplateFragments in HTMX config For effective OOB swaps --- src/argus_htmx/templates/htmx/base.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 360009778..d8a2abc21 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -2,6 +2,8 @@ {% block head %} + + {% if theme %} {% else %} From 1d5554896fac13bda46876c2062b647c5ef66b91 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 15 May 2024 13:48:18 +0200 Subject: [PATCH 027/216] Move table rows to a separate component --- .../htmx/incidents/_incident_table_rows.html | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html new file mode 100644 index 000000000..2bbabcbb4 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html @@ -0,0 +1,11 @@ +{% for incident in incident_list %} + {% block incident %} + {% include 'htmx/incidents/_incident_table_row.html' %} + {% endblock incident %} + {% empty %} + + + No incidents on this page. + + +{% endfor %} From 26dac0c7de01550b155981398540a280ef17e80c Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 15 May 2024 13:54:15 +0200 Subject: [PATCH 028/216] Add polling of incidents table Whole contents of is replaced with 's of whatever incidents are returned. Table update info at the tfoot is also refreshed in the same response using out-of-bound swap. --- src/argus_htmx/incidents/views.py | 6 ++++- .../htmx/incidents/_incidents_table.html | 25 +++++++++---------- .../responses/_incidents_table_poll.html | 5 ++++ 3 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_poll.html diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 2ee21db5a..ad3daab5b 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -108,7 +108,11 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: # requests, allowing us to skip rendering the unchanging parts of the # template. if request.htmx: - base_template = "htmx/incidents/responses/_incidents_table_refresh.html" + # HX-Trigger == HTML tag id that iniated the request + if request.headers.get("HX-Trigger", "") == "table": + base_template = "htmx/incidents/responses/_incidents_table_poll.html" + else: + base_template = "htmx/incidents/responses/_incidents_table_refresh.html" else: base_template = "htmx/incidents/_base.html" diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_table.html b/src/argus_htmx/templates/htmx/incidents/_incidents_table.html index fc42c0e48..7b7f6612c 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_table.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_table.html @@ -1,4 +1,9 @@ - +
    @@ -12,18 +17,12 @@ - - {% for incident in page.object_list %} - {% block incident %} - {% include 'htmx/incidents/_incident_table_row.html' %} - {% endblock incident %} - {% empty %} - - - - {% endfor %} + + {% block incident_rows %} + {% include 'htmx/incidents/_incident_table_rows.html' with incident_list=page.object_list %} + {% endblock incident_rows %} diff --git a/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_poll.html b/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_poll.html new file mode 100644 index 000000000..6dee0553f --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_poll.html @@ -0,0 +1,5 @@ +{% block incident_rows %} + {% include 'htmx/incidents/_incident_table_rows.html' with incident_list=page.object_list %} +{% endblock incident_rows %} + +{% include "htmx/incidents/_incidents_refresh_info.html" with oob='outerHTML' %} From d85aa1b1767c213624fed28a4cf31b6e77fa7259 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Thu, 16 May 2024 13:35:37 +0200 Subject: [PATCH 029/216] Remove redundant debug section --- src/argus_htmx/incidents/views.py | 1 - src/argus_htmx/templates/htmx/incidents/incidents_list.html | 6 ------ 2 files changed, 7 deletions(-) diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index ad3daab5b..06c5695aa 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -118,7 +118,6 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: context = { "qs": qs, - "latest": latest, "page_title": "Incidents", "base": base_template, "page": page, diff --git a/src/argus_htmx/templates/htmx/incidents/incidents_list.html b/src/argus_htmx/templates/htmx/incidents/incidents_list.html index 0bdc251a5..b76e64e34 100644 --- a/src/argus_htmx/templates/htmx/incidents/incidents_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incidents_list.html @@ -1,12 +1,6 @@ {% extends base %} {% block main %} -
    -

    - Latest: {{ latest }} -

    -
    -
    {% block table %} {% include "htmx/incidents/_incidents_table.html" %} From 229405d2bb52ff918e529aa41c5d8aae4e7bd4f1 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Thu, 16 May 2024 13:29:05 +0200 Subject: [PATCH 030/216] Speed up rendering of incidents table Same as with lists --- src/argus_htmx/incidents/views.py | 4 ++-- src/argus_htmx/templates/htmx/incidents/incidents_list.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 06c5695aa..3d9d14e3c 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -96,7 +96,7 @@ def incident_add_ack(request, pk: int, group: Optional[str] = None): @require_GET def incidents_table(request: HtmxHttpRequest) -> HttpResponse: # Load incidents - qs = Incident.objects.all().order_by("-start_time") + qs = prefetch_incident_daughters().order_by("-start_time") latest = qs.latest("start_time").start_time last_refreshed = make_aware(datetime.now()) @@ -117,7 +117,7 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: base_template = "htmx/incidents/_base.html" context = { - "qs": qs, + "count": qs.count(), "page_title": "Incidents", "base": base_template, "page": page, diff --git a/src/argus_htmx/templates/htmx/incidents/incidents_list.html b/src/argus_htmx/templates/htmx/incidents/incidents_list.html index b76e64e34..b7f27fea8 100644 --- a/src/argus_htmx/templates/htmx/incidents/incidents_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incidents_list.html @@ -9,7 +9,7 @@

    - Total, all time: {{ qs|length }} + Total, all time: {{ count }}

    {% block refresh_info %} From 5aff8023bd0166a40270970505b0bfe214b92a07 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 28 May 2024 11:12:51 +0200 Subject: [PATCH 031/216] Remove spurious " in template --- src/argus_htmx/templates/htmx/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 360009778..99226c750 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -38,7 +38,7 @@
  • Logo Argus: {{ page_title }}
  • Timeslots
  • Profiles
  • -
  • Theme: {{ theme }}"
  • +
  • Theme: {{ theme }}
  • {% block userlink %} {% if request.user.is_authenticated %} {{ request.user }} From 9d5a961c67474f9f6f4660519699bdea8521caac Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Fri, 31 May 2024 10:03:18 +0200 Subject: [PATCH 032/216] Fix bug in removing file suffix --- src/argus_htmx/themes/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/themes/views.py b/src/argus_htmx/themes/views.py index 613ef83fe..5b6cd0454 100644 --- a/src/argus_htmx/themes/views.py +++ b/src/argus_htmx/themes/views.py @@ -26,7 +26,7 @@ def get_theme_files(request): for f in absolute_filenames: if not f.suffix == '.css': continue - filename = f.name.rstrip('.css') + filename = f.name[:-len('.css')] theme_names.append(filename) return sorted(theme_names) From 351fc554109d78a81176cefc04214acd1a607c9a Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 24 Jun 2024 14:51:00 +0200 Subject: [PATCH 033/216] Replace Incident
      with Incident
  • actionstag
    - No incidents on this page. -
    + rename templates/url-names to cbv standard: * singular model * `_list` for "get multiple instances of model", not how it is rendered --- src/argus_htmx/incidents/urls.py | 3 +-- src/argus_htmx/incidents/views.py | 18 +++--------------- src/argus_htmx/templates/htmx/base.html | 2 +- ...cidents_table.html => _incident_table.html} | 0 ...{incidents_list.html => incident_list.html} | 2 +- .../templates/htmx/incidents/list.html | 15 --------------- 6 files changed, 6 insertions(+), 34 deletions(-) rename src/argus_htmx/templates/htmx/incidents/{_incidents_table.html => _incident_table.html} (100%) rename src/argus_htmx/templates/htmx/incidents/{incidents_list.html => incident_list.html} (81%) delete mode 100644 src/argus_htmx/templates/htmx/incidents/list.html diff --git a/src/argus_htmx/incidents/urls.py b/src/argus_htmx/incidents/urls.py index b0489f092..8c7b55a36 100644 --- a/src/argus_htmx/incidents/urls.py +++ b/src/argus_htmx/incidents/urls.py @@ -5,8 +5,7 @@ app_name = "htmx" urlpatterns = [ - path("", views.incidents, name="incidents"), + path("", views.incident_list, name="incident-list"), path("/", views.incident_detail, name="incident-detail"), path("/ack/", views.incident_add_ack, name="incident-add-ack"), - path("table/", views.incidents_table, name="incidents-table"), ] diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 05c573929..dac35a592 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -35,18 +35,6 @@ class HtmxHttpRequest(HttpRequest): htmx: HtmxDetails -def incidents(request): - qs = prefetch_incident_daughters().order_by("-start_time") - latest = qs.latest("start_time").start_time - context = { - "qs": qs[:5], - "latest": latest, - "count": qs.count(), - "page_title": "Incidents", - } - return render(request, "htmx/incidents/list.html", context=context) - - # fetch with htmx def incident_row(request, pk: int): incident = get_object_or_404(Incident, d=pk) @@ -92,7 +80,7 @@ def incident_add_ack(request, pk: int, group: Optional[str] = None): @require_GET -def incidents_table(request: HtmxHttpRequest) -> HttpResponse: +def incident_list(request: HtmxHttpRequest) -> HttpResponse: # Load incidents qs = Incident.objects.all().order_by("-start_time") latest = qs.latest("start_time").start_time @@ -105,7 +93,7 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: # requests, allowing us to skip rendering the unchanging parts of the # template. if request.htmx: - base_template = "htmx/incidents/_incidents_table.html" + base_template = "htmx/incidents/_incident_table.html" else: base_template = "htmx/incidents/_base.html" @@ -119,6 +107,6 @@ def incidents_table(request: HtmxHttpRequest) -> HttpResponse: return render( request, - "htmx/incidents/incidents_list.html", + "htmx/incidents/incident_list.html", context=context ) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 99226c750..0dbe13e62 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -35,7 +35,7 @@
    - - - - - - - - - - + {% block columns %} + {% for col in columns %} + + {% empty %} + + {% endfor %} + {% endblock columns %} - @@ -31,16 +32,19 @@ diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html index 739d5c4c7..01ab26e4d 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html @@ -1,4 +1,4 @@ - + {% block columns %} {% for col in columns %} - + {% block columns %} {% for col in columns %} - {% empty %} - {% endfor %} @@ -24,6 +24,7 @@ {% block incident_rows %} {% include 'htmx/incidents/_incident_table_rows.html' with incident_list=page.object_list %} @@ -31,7 +32,7 @@ - {% empty %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html index 4dbf55f75..b5b701112 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html @@ -1,22 +1,30 @@ -
    -
    -
    Total, all time
    -
    {{ count }}
    -
    -
    -
    After filtering
    -
    {{ filtered_count }}
    -
    -
    -
    Per page
    -
    {{ per_page }}
    -
    -
    -
    Last refreshed
    -
    {{ last_refreshed|date:datetime_format|default:"?" }}
    -
    -
    -
    Updating every
    -
    {{ update_interval|default:"?" }}s
    -
    -
    + +
    +
    +
    Total, all time
    +
    {{ count }}
    +
    +
    +
    After filtering
    +
    {{ filtered_count }}
    +
    +
    +
    Per page
    +
    + +
    +
    +
    +
    Last refreshed
    +
    {{ last_refreshed|date:datetime_format|default:"?" }}
    +
    +
    +
    Updating every
    +
    {{ update_interval|default:"?" }}s
    +
    +
    + From 6674a17f98130ad465f23905318629101389ddb6 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Fri, 27 Sep 2024 10:23:41 +0200 Subject: [PATCH 119/216] Show different "no hits" text for empty db .. versus no hits after filtering --- .../templates/htmx/incidents/_incident_table_rows.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html index 385f3a9bc..1cd504ec8 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html @@ -5,7 +5,11 @@ {% empty %} {% endfor %} From 5d464656a73bc5b1895438b52307bceaaee32f4f Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Fri, 27 Sep 2024 15:34:39 +0200 Subject: [PATCH 120/216] Officially drop support for Python 3.8 --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index af96692b3..b7c075a11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,11 +7,13 @@ description = "HTTP Frontend as a django app for argus-server using HTMx" name = "argus-htmx-frontend" readme = "README.rst" authors = [{name = "Hanne Moa", email = "hanne.moa@sikt.no"}] -requires-python = ">=3.8" +requires-python = ">=3.9" classifiers = [ "Development Status :: 2 - Pre-Alpha", "Framework :: Django", "Framework :: Django :: 4.2", + "Framework :: Django :: 5.0", + "Framework :: Django :: 5.1", "Programming Language :: Python :: 3 :: Only", "Environment :: Web Environment", ] From 0c8229d377b9b961ae689ba8c52ee96012bde71e Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 1 Oct 2024 13:49:35 +0200 Subject: [PATCH 121/216] Get max possible level correctly --- src/argus_htmx/incidents/filter.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/argus_htmx/incidents/filter.py b/src/argus_htmx/incidents/filter.py index 9a1353c50..28235ed21 100644 --- a/src/argus_htmx/incidents/filter.py +++ b/src/argus_htmx/incidents/filter.py @@ -1,7 +1,7 @@ from django import forms from argus.filter import get_filter_backend -from argus.incident.constants import MAX_INCIDENT_LEVEL +from argus.incident.constants import Level from argus.incident.models import SourceSystem @@ -20,10 +20,10 @@ class IncidentFilterForm(forms.Form): ) maxlevel = forms.IntegerField( widget=forms.NumberInput(attrs={ - 'type': 'range', 'step': '1', 'min': '1', 'max': MAX_INCIDENT_LEVEL + 'type': 'range', 'step': '1', 'min': min(Level).value, 'max': max(Level).value }), label="Level <=", - initial=MAX_INCIDENT_LEVEL, + initial=max(Level).value, required=False, ) From 2ac550dad1bcbf409dce5f666f75be80ad402908 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 7 Oct 2024 10:03:16 +0200 Subject: [PATCH 122/216] Make app settings easily toggleable .. argus can use the (OVERRIDING|EXTRA)_APPS utilities to toggle all the settings for the htmx frontend. --- src/argus_htmx/appconfig.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/argus_htmx/appconfig.py diff --git a/src/argus_htmx/appconfig.py b/src/argus_htmx/appconfig.py new file mode 100644 index 000000000..0473f6e03 --- /dev/null +++ b/src/argus_htmx/appconfig.py @@ -0,0 +1,32 @@ +from argus.site.settings._serializers import ListAppSetting + + +__all__ = ["APP_SETTINGS"] + +_app_settings = [ + { + "app_name": "argus_htmx", + "urls": { + "path": "", + "urlpatterns_module": "argus_htmx.urls", + }, + "context_processors": [ + "argus_htmx.context_processors.theme_via_session", + "argus_htmx.context_processors.datetime_format_via_session", + ], + "middleware": { + "argus_htmx.middleware.LoginRequiredMiddleware": "end", + }, + }, + { + "app_name": "django_htmx", + "middleware": { + "django_htmx.middleware.HtmxMiddleware": "end", + }, + }, + { + "app_name": "widget_tweaks" + }, +] + +APP_SETTINGS = ListAppSetting(_app_settings).root From d3c5e10339a1a8d0a420240ccd86290db1f45985 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 7 Oct 2024 10:08:09 +0200 Subject: [PATCH 123/216] Add modals to bulk buttons This pops up the dialogs on click, but nothing actually happens on submit in the dialogs. --- src/argus_htmx/incidents/views.py | 2 +- src/argus_htmx/templates/htmx/_base_form_modal.html | 5 ++--- .../htmx/incidents/_incident_ticket_edit_modal.html | 4 ++-- .../templates/htmx/incidents/_incidents_update_menu.html | 7 ++++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 0e31d98cf..269420662 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -181,7 +181,7 @@ def _get_page_size(params): pass return DEFAULT_PAGE_SIZE -@require_GET + def incident_list(request: HtmxHttpRequest) -> HttpResponse: columns = get_incident_table_columns() diff --git a/src/argus_htmx/templates/htmx/_base_form_modal.html b/src/argus_htmx/templates/htmx/_base_form_modal.html index b8e99a217..e8112ddc7 100644 --- a/src/argus_htmx/templates/htmx/_base_form_modal.html +++ b/src/argus_htmx/templates/htmx/_base_form_modal.html @@ -1,4 +1,4 @@ - + diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html index fea53772d..e7e11507e 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html @@ -1,6 +1,6 @@ {% extends 'htmx/_base_form_modal.html' %} {% block dialogform %} - {% block incident_rows %} {% include 'htmx/incidents/_incident_table_rows.html' with incident_list=page.object_list %} From 60dc4d6ce54809eda3b9719bc10c8f081c2f09ab Mon Sep 17 00:00:00 2001 From: Johanna England Date: Fri, 18 Oct 2024 14:02:52 +0200 Subject: [PATCH 151/216] Use double quotes in tags --- src/argus_htmx/templates/htmx/base.html | 4 ++-- .../htmx/incidents/_incident_acknowledge_modal.html | 2 +- .../htmx/incidents/_incident_close_modal.html | 2 +- .../htmx/incidents/_incident_reopen_modal.html | 2 +- .../templates/htmx/incidents/_incident_table.html | 2 +- .../templates/htmx/incidents/_incident_table_rows.html | 2 +- .../incidents/_incident_ticket_autocreate_modal.html | 2 +- .../htmx/incidents/_incident_ticket_edit_modal.html | 2 +- .../_incident_ticket_manual_create_modal.html | 2 +- .../htmx/incidents/_incidents_update_menu.html | 8 ++++---- .../templates/htmx/incidents/incident_detail.html | 10 +++++----- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index d04a0fa63..ea9257840 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -39,10 +39,10 @@
  • - {% include 'htmx/themes/theme_dropdown.html' %} + {% include "htmx/themes/theme_dropdown.html" %}
  • - {% include 'htmx/dateformat/_dateformat_dropdown.html' %} + {% include "htmx/dateformat/_dateformat_dropdown.html" %}
  • diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html index 855dc0ab1..e2c16bf73 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html @@ -1,4 +1,4 @@ -{% extends 'htmx/_base_form_modal.html' %} +{% extends "htmx/_base_form_modal.html" %} {% block dialogform %}
  • diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html index 1cd504ec8..93af15b7f 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html @@ -1,6 +1,6 @@ {% for incident in incident_list %} {% block incident %} - {% include 'htmx/incidents/_incident_table_row.html' %} + {% include "htmx/incidents/_incident_table_row.html" %} {% endblock incident %} {% empty %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html index 6cdf3ed1e..95e0ef731 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html @@ -1 +1 @@ -{% extends 'htmx/_base_form_modal.html' %} +{% extends "htmx/_base_form_modal.html" %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html index e7e11507e..0edae9ec3 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html @@ -1,4 +1,4 @@ -{% extends 'htmx/_base_form_modal.html' %} +{% extends "htmx/_base_form_modal.html" %} {% block dialogform %} + class="border border-separate border-spacing-1 border-primary table"> + - {% block columns %} - {% for col in columns %} - - {% empty %} - - {% endfor %} - {% endblock columns %} + {% block columns %} + {% for col in columns %} + + {% empty %} + + {% endfor %} + {% endblock columns %} - - + + {% block incident_rows %} - {% include "htmx/incidents/_incident_table_rows.html" with incident_list=page.object_list %} + {% include "htmx/incidents/_incident_table_rows.html" with incident_list=page.object_list %} {% endblock incident_rows %} - - + + - + « First + + {% endif %} + {% if page.has_previous %} +
  • + {{ page.previous_page_number }} +
  • + {% endif %} + {% if page.paginator.num_pages > 1 %} +
  • + +
  • + {% else %} +
  • + +
  • + {% endif %} + {% if page.has_next %} +
  • + {{ page.next_page_number }} +
  • + {% endif %} + {% if page.number != page.paginator.num_pages %} +
  • + » Last +
  • + {% endif %} + + + - +
    + -
    actionsidtimestampstatusseveritysourcedescriptionacktag + {{ col.label }} + + No columns configured +
    + - -{% if theme %} - -{% else %} - - -{% endif %} - + + + + {% if theme %} + + {% else %} + + + {% endif %} +{# #} {% endblock head %} {% block header %} -
    - -
    +
    + +
    {% endblock header %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_checkbox.html b/src/argus_htmx/templates/htmx/incidents/_incident_checkbox.html index 74c06d253..52f7c40e6 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_checkbox.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_checkbox.html @@ -1 +1 @@ - + diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html index f3b122817..092c9b52f 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html @@ -1,5 +1,6 @@
    diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table.html b/src/argus_htmx/templates/htmx/incidents/_incident_table.html index a5c8aace1..700620a91 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table.html @@ -5,6 +5,7 @@ hx-trigger="every {{ update_interval|default:'30' }}s" hx-push-url="true" hx-include=".filterbox fieldset" + class="table" >
    - - - +
    diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html index f8c6376a4..c6d234f97 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html @@ -1,12 +1,22 @@ -
    -
    Total, all time
    -
    {{ count }}
    -
    After filtering
    -
    {{ filtered_count }}
    -
    Per page
    -
    {{ per_page }}
    -
    Last refreshed
    -
    {{ last_refreshed|date:"DATETIME_FORMAT"|default:"?" }}
    -
    Updating every
    -
    {{ update_interval|default:"?" }}s
    +
    +
    +
    Total, all time
    +
    {{ count }}
    +
    +
    +
    After filtering
    +
    {{ filtered_count }}
    +
    +
    +
    Per page
    +
    {{ per_page }}
    +
    +
    +
    Last refreshed
    +
    {{ last_refreshed|date:"DATETIME_FORMAT"|default:"?" }}
    +
    +
    +
    Updating every
    +
    {{ update_interval|default:"?" }}s
    +
    diff --git a/src/argus_htmx/templates/htmx/incidents/incident_list.html b/src/argus_htmx/templates/htmx/incidents/incident_list.html index 4ea702651..80dd691eb 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_list.html @@ -5,16 +5,10 @@ {% include "htmx/incidents/_incident_filterbox.html" %} -
    +
    {% block table %} {% include "htmx/incidents/_incident_table.html" %} {% endblock table %}
    -
    - {% block refresh_info %} - {% include "htmx/incidents/_incidents_refresh_info.html" %} - {% endblock refresh_info %} -
    - {% endblock main %} diff --git a/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html b/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html index ee78d8990..7dded7ba9 100644 --- a/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html +++ b/src/argus_htmx/templates/htmx/incidents/responses/_incidents_table_refresh.html @@ -1,6 +1,2 @@ {% block table %} {% endblock table %} - -{% block refresh_info %} - {% include "htmx/incidents/_incidents_refresh_info.html" with oob="outerHTML" %} -{% endblock refresh_info %} diff --git a/src/argus_htmx/templates/htmx_base.html b/src/argus_htmx/templates/htmx_base.html index 7c80471e9..9a1c09588 100644 --- a/src/argus_htmx/templates/htmx_base.html +++ b/src/argus_htmx/templates/htmx_base.html @@ -1,5 +1,5 @@ {% load static %} - + @@ -9,18 +9,18 @@ {% endblock head %} - {% block header %} -

    Argus Server: {{ page_title }}

    - {% endblock header %} +{% block header %} +

    Argus Server: {{ page_title }}

    +{% endblock header %} -
    - {% block main %} - {% endblock main %} -
    +
    + {% block main %} + {% endblock main %} +
    - {% block footer %} - {% endblock footer %} +{% block footer %} +{% endblock footer %} - {% block tail %}{% endblock tail %} +{% block tail %}{% endblock tail %} From f654c713501f2aed002fdb46035513ec3d56eec8 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Fri, 9 Aug 2024 15:34:24 +0200 Subject: [PATCH 053/216] Add django-widget-tweaks --- pyproject.toml | 1 + src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html | 1 + 2 files changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 4dcfe964d..a06bfdce0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ dynamic = ["version"] dependencies = [ "argus-server>=1.20.1", "django-htmx", + "django-widget-tweaks==1.5.0", # The next is for python_version < 3.12 but we simplify code by always needing it "importlib_resources>=5.12", ] diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html index 092c9b52f..1c5b4ed06 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html @@ -1,3 +1,4 @@ +{% load widget_tweaks %}
    + {{ col.label }} + No columns configured
    +
    {% block refresh_info %} {% include "htmx/incidents/_incidents_refresh_info.html" %} @@ -53,7 +54,7 @@ page works without JavaScript, and to ensure the link is displayed as clickable. --> - + « First @@ -61,25 +62,25 @@ {% if page.has_previous %}
  • + href="?page={{ page.previous_page_number }}" class="join-item btn btn-neutral"> {{ page.previous_page_number }}
  • {% endif %} {% if page.paginator.num_pages > 1 %}
  • - +
  • {% else %}
  • - +
  • {% endif %} {% if page.has_next %}
  • + href="?page={{ page.next_page_number }}" class="join-item btn btn-neutral"> {{ page.next_page_number }}
  • @@ -87,7 +88,7 @@ {% if page.number != page.paginator.num_pages %}
  • + href="?page={{ page.paginator.num_pages }}" class="join-item btn btn-neutral"> » Last
  • diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html index c6d234f97..501b91d4d 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html @@ -1,22 +1,22 @@ -
    -
    -
    Total, all time
    -
    {{ count }}
    +
    +
    +
    Total, all time
    +
    {{ count }}
    -
    -
    After filtering
    -
    {{ filtered_count }}
    +
    +
    After filtering
    +
    {{ filtered_count }}
    -
    -
    Per page
    -
    {{ per_page }}
    +
    +
    Per page
    +
    {{ per_page }}
    -
    -
    Last refreshed
    -
    {{ last_refreshed|date:"DATETIME_FORMAT"|default:"?" }}
    +
    +
    Last refreshed
    +
    {{ last_refreshed|date:"DATETIME_FORMAT"|default:"?" }}
    -
    -
    Updating every
    -
    {{ update_interval|default:"?" }}s
    +
    +
    Updating every
    +
    {{ update_interval|default:"?" }}s
    diff --git a/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html b/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html index a614c64de..649bb7d71 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html @@ -1,39 +1,54 @@ {% extends "htmx/base.html" %} +{% load widget_tweaks %} {% block main %} -

    Add ack

    +

    Add ack

    -{% block list_of_acks %} -
    -

    Acks

    -{% for ack in incident.acks %} -

    Description: {{ ack.event.description }}

    -

    Expiration: {{ ack.expiration }}

    -

    Acked by: {{ ack.event.actor }} -{% if ack.event.actor.groups.exists %} -

    Groups: -{% for group in ack.event.actor.groups.all %} -{{ group }} -{% endfor %} -

    -{% endif %} -

    -{% endfor %} -
    -{% endblock list_of_acks %} + {% block list_of_acks %} +
    +

    Acks

    + {% for ack in incident.acks %} +

    Description: {{ ack.event.description }}

    +

    Expiration: {{ ack.expiration }}

    +

    Acked by: {{ ack.event.actor }} + {% if ack.event.actor.groups.exists %} +

    Groups: + {% for group in ack.event.actor.groups.all %} + {{ group }} + {% endfor %} +

    + {% endif %} +

    + {% endfor %} +
    + {% endblock list_of_acks %} -{% block add_ack %} -
    -

    Add ack

    -{% if request.user.is_authenticated %} -
    -{% csrf_token %} -{{ form }} - -
    -{% else %} -You need to Log in -{% endif %} -
    -{% endblock add_ack %} + {% block add_ack %} +
    + + {% if request.user.is_authenticated %} +
    + {% csrf_token %} + +
    + {% else %} + You need to Log in + {% endif %} +
    + {% endblock add_ack %} {% endblock main %} diff --git a/src/argus_htmx/templates/htmx/themes/themes_list.html b/src/argus_htmx/templates/htmx/themes/themes_list.html index 42ad97220..e7c993bfa 100644 --- a/src/argus_htmx/templates/htmx/themes/themes_list.html +++ b/src/argus_htmx/templates/htmx/themes/themes_list.html @@ -1,23 +1,23 @@ {% extends "htmx/base.html" %} {% block main %} -
    -

    Switch theme

    -{% if theme %} -

    Theme is set to: {{ theme }}

    -{% else %} -

    No theme set

    -{% endif %} -
      - {% for item in object_list %} -
    • -
      - {% csrf_token %} - - -
      -
    • - {% endfor %} -
    -
    +
    +

    Switch theme

    + {% if theme %} +

    Theme is set to: {{ theme }}

    + {% else %} +

    No theme set

    + {% endif %} +
      + {% for item in object_list %} +
    • +
      + {% csrf_token %} + + +
      +
    • + {% endfor %} +
    +
    {% endblock main %} diff --git a/src/argus_htmx/templates/htmx_base.html b/src/argus_htmx/templates/htmx_base.html index 9a1c09588..94dcd20b0 100644 --- a/src/argus_htmx/templates/htmx_base.html +++ b/src/argus_htmx/templates/htmx_base.html @@ -1,19 +1,22 @@ {% load static %} - + - - - {% block title %}Argus Server: {{ page_title }}{% endblock %} - {% block head %} - {% endblock head %} + + + {% block title %}Argus Server: {{ page_title }}{% endblock %} + + + + {% block head %} + {% endblock head %} - + {% block header %}

    Argus Server: {{ page_title }}

    {% endblock header %} -
    +
    {% block main %} {% endblock main %}
    diff --git a/src/argus_htmx/themes/views.py b/src/argus_htmx/themes/views.py index 5b6cd0454..86dda2b09 100644 --- a/src/argus_htmx/themes/views.py +++ b/src/argus_htmx/themes/views.py @@ -20,14 +20,10 @@ def get_theme_files(request): - theme_files_dir = importlib_resources.files(THEMES_MODULE).joinpath(THEMES_PATH) - absolute_filenames = (path for path in theme_files_dir.iterdir()) theme_names = [] - for f in absolute_filenames: - if not f.suffix == '.css': - continue - filename = f.name[:-len('.css')] - theme_names.append(filename) + TW_THEMES = getattr(settings, "DAISYUI_THEMES", []) + for f in TW_THEMES: + theme_names.append(f) return sorted(theme_names) From dcc381ce93add589573718c84d16e3dfe93d3b25 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Tue, 20 Aug 2024 17:08:41 +0200 Subject: [PATCH 056/216] Use daisyui themes from settings or env --- src/argus_htmx/settings.py | 2 + src/argus_htmx/static/color-schemes/blue.css | 7 - src/argus_htmx/static/color-schemes/dark.css | 7 - src/argus_htmx/static/color-schemes/light.css | 7 - src/argus_htmx/static/themes/Chocolate.css | 816 ------ src/argus_htmx/static/themes/Traditional.css | 816 ------ src/argus_htmx/static/themes/bahunya.css | 559 ---- src/argus_htmx/static/themes/bamboo.css | 307 --- src/argus_htmx/static/themes/default.css | 3 - .../static/themes/default/background.svg | 1 - src/argus_htmx/static/themes/ebmf.css | 19 - .../et-book-bold-line-figures.eot | Bin 40888 -> 0 bytes .../et-book-bold-line-figures.svg | 243 -- .../et-book-bold-line-figures.ttf | Bin 70912 -> 0 bytes .../et-book-bold-line-figures.woff | Bin 45364 -> 0 bytes ...-book-display-italic-old-style-figures.eot | Bin 39297 -> 0 bytes ...-book-display-italic-old-style-figures.svg | 244 -- ...-book-display-italic-old-style-figures.ttf | Bin 74464 -> 0 bytes ...book-display-italic-old-style-figures.woff | Bin 43780 -> 0 bytes .../et-book-roman-line-figures.eot | Bin 39628 -> 0 bytes .../et-book-roman-line-figures.svg | 244 -- .../et-book-roman-line-figures.ttf | Bin 71688 -> 0 bytes .../et-book-roman-line-figures.woff | Bin 44016 -> 0 bytes .../et-book-roman-old-style-figures.eot | Bin 39513 -> 0 bytes .../et-book-roman-old-style-figures.svg | 244 -- .../et-book-roman-old-style-figures.ttf | Bin 71380 -> 0 bytes .../et-book-roman-old-style-figures.woff | Bin 43900 -> 0 bytes .../et-book-semi-bold-old-style-figures.eot | Bin 40769 -> 0 bytes .../et-book-semi-bold-old-style-figures.svg | 243 -- .../et-book-semi-bold-old-style-figures.ttf | Bin 70824 -> 0 bytes .../et-book-semi-bold-old-style-figures.woff | Bin 45108 -> 0 bytes src/argus_htmx/static/themes/kacit.css | 378 --- src/argus_htmx/static/themes/mvp.css | 538 ---- src/argus_htmx/static/themes/no-class.css | 483 ---- .../static/themes/pico.classless.css | 2431 ----------------- src/argus_htmx/static/themes/purehtml.css | 0 src/argus_htmx/static/themes/reset.css | 48 - src/argus_htmx/static/themes/simple.css | 704 ----- src/argus_htmx/static/themes/stylize.css | 278 -- .../static/themes/tacit-css-1.5.0.css | 416 --- src/argus_htmx/static/themes/tufte.css | 486 ---- src/argus_htmx/static/themes/vanilla.css | 187 -- src/argus_htmx/static/themes/water-dark.css | 240 -- src/argus_htmx/static/themes/water-light.css | 240 -- src/argus_htmx/static/themes/writ.css | 187 -- src/argus_htmx/static/themes/yorha.css | 701 ----- src/argus_htmx/themes/utils.py | 20 + src/argus_htmx/themes/views.py | 12 +- 48 files changed, 24 insertions(+), 11087 deletions(-) delete mode 100644 src/argus_htmx/static/color-schemes/blue.css delete mode 100644 src/argus_htmx/static/color-schemes/dark.css delete mode 100644 src/argus_htmx/static/color-schemes/light.css delete mode 100644 src/argus_htmx/static/themes/Chocolate.css delete mode 100644 src/argus_htmx/static/themes/Traditional.css delete mode 100644 src/argus_htmx/static/themes/bahunya.css delete mode 100644 src/argus_htmx/static/themes/bamboo.css delete mode 100644 src/argus_htmx/static/themes/default.css delete mode 100644 src/argus_htmx/static/themes/default/background.svg delete mode 100644 src/argus_htmx/static/themes/ebmf.css delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.eot delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.svg delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.ttf delete mode 100644 src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.woff delete mode 100644 src/argus_htmx/static/themes/kacit.css delete mode 100644 src/argus_htmx/static/themes/mvp.css delete mode 100644 src/argus_htmx/static/themes/no-class.css delete mode 100644 src/argus_htmx/static/themes/pico.classless.css delete mode 100644 src/argus_htmx/static/themes/purehtml.css delete mode 100644 src/argus_htmx/static/themes/reset.css delete mode 100644 src/argus_htmx/static/themes/simple.css delete mode 100644 src/argus_htmx/static/themes/stylize.css delete mode 100644 src/argus_htmx/static/themes/tacit-css-1.5.0.css delete mode 100644 src/argus_htmx/static/themes/tufte.css delete mode 100644 src/argus_htmx/static/themes/vanilla.css delete mode 100644 src/argus_htmx/static/themes/water-dark.css delete mode 100644 src/argus_htmx/static/themes/water-light.css delete mode 100644 src/argus_htmx/static/themes/writ.css delete mode 100644 src/argus_htmx/static/themes/yorha.css create mode 100644 src/argus_htmx/themes/utils.py diff --git a/src/argus_htmx/settings.py b/src/argus_htmx/settings.py index cc067355d..a53b329a6 100644 --- a/src/argus_htmx/settings.py +++ b/src/argus_htmx/settings.py @@ -2,6 +2,8 @@ # items in INCIDENT_TABLE_COLUMNS can be either a `str` referring to a key in # argus_htmx.incidents.customization.BUILTIN_COLUMNS or an instance of # argus_htmx.incidents.customization.IncidentTableColumn +from argus.site.settings import get_json_env + INCIDENT_TABLE_COLUMNS = [ "row_select", "id", diff --git a/src/argus_htmx/static/color-schemes/blue.css b/src/argus_htmx/static/color-schemes/blue.css deleted file mode 100644 index 21dce662d..000000000 --- a/src/argus_htmx/static/color-schemes/blue.css +++ /dev/null @@ -1,7 +0,0 @@ -:root { - --main-bg-color: lightblue; - --main-fg-color: darkblue; - --main-link-color: blue; - --nav-bg-color: darkblue; - --nav-fg-color: cyan; -} diff --git a/src/argus_htmx/static/color-schemes/dark.css b/src/argus_htmx/static/color-schemes/dark.css deleted file mode 100644 index 3afd9bd11..000000000 --- a/src/argus_htmx/static/color-schemes/dark.css +++ /dev/null @@ -1,7 +0,0 @@ -:root { - --main-bg-color: #121212; - --main-fg-color: #eee; - --main-link-color: #809fff; - --nav-bg-color: black; - --nav-fg-color: #eee; -} diff --git a/src/argus_htmx/static/color-schemes/light.css b/src/argus_htmx/static/color-schemes/light.css deleted file mode 100644 index 935cd6647..000000000 --- a/src/argus_htmx/static/color-schemes/light.css +++ /dev/null @@ -1,7 +0,0 @@ -:root { - --main-bg-color: white; - --main-fg-color: black; - --main-link-color: blue; - --nav-bg-color: lightgrey; - --nav-fg-color: black; -} diff --git a/src/argus_htmx/static/themes/Chocolate.css b/src/argus_htmx/static/themes/Chocolate.css deleted file mode 100644 index ee1f63b89..000000000 --- a/src/argus_htmx/static/themes/Chocolate.css +++ /dev/null @@ -1,816 +0,0 @@ -/* The W3C Core Styles Copyright (c) 1998 W3C (mit, inria, Keio), All Rights -Reserved. W3C liability, trademark, document use and software licensing rules -apply. See http://www.w3.org/Consortium/Legal/ipr-notice.html - -This stylesheet has been served in a form to avoid known bugs in your user -agent's css implementation. Copying and serving this stylesheet to other -agents may lead to unexpected results. Please refer to its address rather than -copy it. */ - - - - - - /* begin body type */ /* 1 - humanist sans a */ - -body { - font-size: 1em; - font-weight: normal; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .58; - } - -p, blockquote, ul, ol, dl, dd, li, dir, menu { - /* inherit from body */ - } - -small { - font-size: .92em; - } - -big { - font-size: 1.17em; - } - -pre { - font-family: 'Monotype.com', Courier New, monospace; - } - -ol li { - list-style-type: decimal; - } - -ol ol li { - list-style-type: lower-alpha; - } - -ol ol ol li { - list-style-type: lower-roman; - } - -table, tbody, tr, td { - font-size: 1em; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .58; - } - - /* end body type */ - - - - - /* begin header type */ /* 7 - humanist sans b */ - -h1 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 2em; - font-weight: 400; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h2 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.75em; - font-weight: 400; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h3 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.58em; - font-weight: 400; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h4 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.33em; - font-weight: 500; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h5, dt { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.17em; - font-weight: 600; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h6 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1em; - font-weight: 700; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -tfoot, thead { - font-size: 1em; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - } - -th { - vertical-align: baseline; - font-size: 1em; - font-weight: bold; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - } - -hr { - visibility: hidden; - } - - /* end header type */ - - - - - /* begin affordances */ /* 3 - mint reverse */ - -a, address, blockquote, body, cite, code, dd, del, dfn, -div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, -li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, -applet, big, center, dir, font, hr, menu, pre, -abbr, acronym, bdo, button, fieldset, ins, label { - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - text-decoration: none; - border-color: #ccc; - border-style: none; - } - -body { - color: #D0FFD0; - background: #212121; - } - -em { - font-style: normal; - font-weight: bold; - color: #D0FFD0; - background: #212121; - } - -strong { - font-style: italic; - background: #212121; - font-weight: bold; - color: #D0FFD0; - } - -em strong, strong em { - text-transform: uppercase; - font-style: normal; - font-weight: bolder; - background: #212121; - color: #D0FFD0; - } - -b { - font-weight: bold; - } - -i { - font-style: italic; - } - -.warning { - text-transform: none; - font-style: normal; - font-weight: bolder; - background: yellow; - color: black; - } - -del { - text-decoration: line-through; - background: #900; - } - -ins { - text-decoration: none; - background: #060; - } - -var, cite, dfn, .note { - font-style: italic; - } - -address { - font-style: normal; - letter-spacing: .1em; - } - -acronym { - font-variant: small-caps; - letter-spacing: 0.1em; - } - -h1, h2, h3, h4, h5, h6, dt, th, thead, tfoot { - color: rgb(245,245,245); - background: #212121; - } - -hr { - color: #ccc; - } - -#colophon { - display: none; - } - -col, colgroup, table, tbody, td, tr { - color: #D0FFD0; - text-decoration: none; - border-color: #ccc; - border-style: none; - background: #212121; - } - -a:link { - text-decoration: none; - font-weight: bold; - color: #F60; - background: #212121; - } - -a:visited { - text-decoration: none; - font-weight: bold; - color: #C96; - background: #212121; - } - -a:active { - text-decoration: none; - font-weight: bold; - color: #ffc; - background: #212121; - } - -a:hover { - text-decoration: none; - color: #FC0; - background: #212121; - } - -a.offsite { - text-decoration: none; - font-weight: normal; - color: #F60; - background: #212121; - } - - /* end affordances */ - - - - - /* begin vertical */ /* 1 - pentatonic a */ - -a, address, blockquote, cite, code, dd, del, dfn, -div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, -li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, -applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, -u, abbr, acronym, bdo, button, fieldset, ins, label { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - vertical-align: baseline; - } - -body { - line-height: 1.58em; - } - -div > p:first-child, body > p:first-child, td > p:first-child { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, p.initial { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h1, h2, h3, h4, h5, h6 { - line-height: 1.33em; - } - -h1 { - margin-top: 1.33em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h2 { - margin-top: 1.75em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h3 { - margin-top: 1.58em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h4 { - margin-top: 1.33em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h5 { - margin-top: 1.17em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h6 { - margin-top: 1em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -p { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -blockquote, fieldset, form, ul, ol, dl, dir, menu { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -dt { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -dd { - margin-top: 0; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -li { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -address { - margin-top: 1.58em; - margin-bottom: 1.58em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -pre { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - line-height: 1.25em; - } - -hr { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - height: 1px; - } - -div, center { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -.subhead { - margin-top: .75em; - margin-bottom: .75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -.stb { - margin-top: 2.17em; - margin-bottom: .75em; - padding-top: 2.17em; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - border-style: solid - } - -.mtb { - margin-top: 3.08em; - margin-bottom: .75em; - padding-top: 3.08em; - padding-bottom: 0; - border-top: .1em; - border-bottom: 0; - border-style: solid - } - -.ltb { - margin-top: 4.34em; - margin-bottom: .75em; - padding-top: 4.34em; - padding-bottom: 0; - border-top: .25em; - border-bottom: 0; - border-style: solid - } - -col, colgroup, table, tbody, td, tfoot, th, thead, tr { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -td, th { - line-height: 1.33em; - } - - /* end vertical */ - - - - - /* begin horizontal */ /* 1 - compact */ - -a, address, blockquote, cite, code, dd, del, dfn, -div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, -li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, -applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, -u, abbr, acronym, bdo, button, fieldset, ins, label { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - float: none; - clear: none; - list-style-position: outside; - } - -address, blockquote, dl, fieldset, form, ol, -p, ul, dir, hr, menu, pre { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -div > p:first-child, body > p:first-child, td > p:first-child { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - text-indent: 0; - } - -h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, p.initial { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - text-indent: 0; - } - -h1 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h2 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h3 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h4 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h5 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h6 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -p { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-indent: 0; - } - -blockquote { - margin-left: 1.58em; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -address { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -pre { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -li { - margin-left: 3.16em; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -dt { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -dd { - margin-left: 1.58em; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -hr { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - width: 100%; - } - -center { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -col, colgroup, table, tbody, td, tfoot, th, thead, tr { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - float: none; - clear: none; - } - -table { - text-align: left; - } - -td { - text-align: left; - } - -th { - text-align: left; - } - -caption { - text-align: left; - } - - /* end horizontal */ - - - - - /* begin body box */ /* 5 - 'ninths symmetric' */ - -body { - margin-top: 1.58em; - margin-left: 11%; - margin-right: 8%; - margin-bottom: 1.58em; - padding-top: 0; - padding-left: 0; - padding-right: 0; - padding-bottom: 0; - border-top: 0; - border-left: 0; - border-bottom: 0; - border-right: 0; - width: auto; - } - /* end body box */ - - - - diff --git a/src/argus_htmx/static/themes/Traditional.css b/src/argus_htmx/static/themes/Traditional.css deleted file mode 100644 index 3f5874f24..000000000 --- a/src/argus_htmx/static/themes/Traditional.css +++ /dev/null @@ -1,816 +0,0 @@ -/* The W3C Core Styles Copyright (c) 1998 W3C (mit, inria, Keio), All Rights -Reserved. W3C liability, trademark, document use and software licensing rules -apply. See http://www.w3.org/Consortium/Legal/ipr-notice.html - -This stylesheet has been served in a form to avoid known bugs in your user -agent's css implementation. Copying and serving this stylesheet to other -agents may lead to unexpected results. Please refer to its address rather than -copy it. */ - - - - - - /* begin body type */ /* 2 - serif a */ - -body { - font-size: 1em; - font-weight: normal; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif; - font-size-adjust: .5; - } - -p, blockquote, ul, ol, dl, dd, li, dir, menu { - /* inherit from body */ - } - -small { - font-size: .92em; - } - -big { - font-size: 1.17em; - } - -pre { - font-family: 'Monotype.com', Courier New, monospace; - } - -ol li { - list-style-type: decimal; - } - -ol ol li { - list-style-type: lower-alpha; - } - -ol ol ol li { - list-style-type: lower-roman; - } - -table, tbody, tr, td { - font-size: 1em; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif; - font-size-adjust: .5; - } - - /* end body type */ - - - - - /* begin header type */ /* 7 - humanist sans b */ - -h1 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 2em; - font-weight: 400; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h2 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.75em; - font-weight: 400; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h3 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.58em; - font-weight: 400; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h4 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.33em; - font-weight: 500; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h5, dt { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1.17em; - font-weight: 600; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -h6 { - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - font-size: 1em; - font-weight: 700; - font-style: normal; - text-decoration: none; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - } - -tfoot, thead { - font-size: 1em; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - } - -th { - vertical-align: baseline; - font-size: 1em; - font-weight: bold; - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - font-family: Trebuchet ms, Verdana, Myriad Web, Syntax, sans-serif; - font-size-adjust: .53; - } - -hr { - visibility: hidden; - } - - /* end header type */ - - - - - /* begin affordances */ /* 2 - laid */ - -a, address, blockquote, body, cite, code, dd, del, dfn, -div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, -li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, -applet, big, center, dir, font, hr, menu, pre, -abbr, acronym, bdo, button, fieldset, ins, label { - word-spacing: normal; - letter-spacing: normal; - text-transform: none; - text-decoration: none; - border-color: black; - border-style: none; - } - -body { - color: black; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -em { - font-style: normal; - font-weight: bold; - color: black; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -strong { - font-style: italic; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - font-weight: bold; - color: black; - } - -em strong, strong em { - text-transform: uppercase; - font-style: normal; - font-weight: bolder; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - color: black; - } - -b { - font-weight: bold; - } - -i { - font-style: italic; - } - -.warning { - text-transform: none; - font-style: normal; - font-weight: bolder; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - color: black; - } - -del { - text-decoration: line-through; - background: #F66; - } - -ins { - text-decoration: underline; - background: yellow; - } - -var, cite, dfn, .note { - font-style: italic; - } - -address { - font-style: normal; - letter-spacing: .1em; - } - -acronym { - font-variant: small-caps; - letter-spacing: 0.1em; - } - -h1, h2, h3, h4, h5, h6, dt, th, thead, tfoot { - color: black; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -hr { - color: black; - } - -#colophon { - display: none; - } - -col, colgroup, table, tbody, td, tr { - color: black; - text-decoration: none; - border-color: black; - border-style: none; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -a:link { - text-decoration: none; - font-weight: bold; - color: #C00; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -a:visited { - text-decoration: none; - font-weight: bold; - color: #69C; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -a:active { - text-decoration: none; - font-weight: bold; - color: #C00; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #FF0; - } - -a:hover { - text-decoration: none; - color: #F00; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - -a.offsite { - text-decoration: none; - font-weight: normal; - color: #C66; - background: url(http://www.w3.org/StyleSheets/Core/source/graphics/textura.gif) #fffff5; - } - - /* end affordances */ - - - - - /* begin vertical */ /* 2 - pentatonic b */ - -a, address, blockquote, cite, code, dd, del, dfn, -div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, -li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, -applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, -u, abbr, acronym, bdo, button, fieldset, ins, label { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - vertical-align: baseline; - } - -body { - line-height: 1.75em; - } - -div > p:first-child, body > p:first-child, td > p:first-child { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, p.initial { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h1, h2, h3, h4, h5, h6 { - line-height: 1.33em; - } - -h1 { - margin-top: 1.33em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h2 { - margin-top: 1.75em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h3 { - margin-top: 1.58em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h4 { - margin-top: 1.33em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h5 { - margin-top: 1.17em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -h6 { - margin-top: 1em; - margin-bottom: .33em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -p { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -blockquote, fieldset, form, ul, ol, dl, dir, menu { - margin-top: .83em; - margin-bottom: .83em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -dt { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -dd { - margin-top: 0; - margin-bottom: .83em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -li { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -address { - margin-top: 1.75em; - margin-bottom: 1.75em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -pre { - margin-top: .83em; - margin-bottom: .83em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - line-height: 1.33em; - } - -hr { - margin-top: .83em; - margin-bottom: .83em; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - height: .1em; - } - -div, center { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -.subhead { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -.stb { - margin-top: .83em; - margin-bottom: 0; - padding-top: .83em; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - border-style: solid - } - -.mtb { - margin-top: 2.17em; - margin-bottom: 0; - padding-top: 2.17em; - padding-bottom: 0; - border-top: .1em; - border-bottom: 0; - border-style: solid - } - -.ltb { - margin-top: 3.08em; - margin-bottom: 0; - padding-top: 3.08em; - padding-bottom: 0; - border-top: .25em; - border-bottom: 0; - border-style: solid - } - -col, colgroup, table, tbody, td, tfoot, th, thead, tr { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - border-top: 0; - border-bottom: 0; - } - -td, th { - line-height: 1.58em; - } - - /* end vertical */ - - - - - /* begin horizontal */ /* 3 - indents */ - -a, address, blockquote, cite, code, dd, del, dfn, -div, dl, dt, em, form, h1, h2, h3, h4, h5, h6, iframe, img, kbd, -li, object, ol, p, q, samp, small, span, strong, sub, sup, ul, var, -applet, b, big, center, dir, font, hr, i, menu, pre, s, strike, tt, -u, abbr, acronym, bdo, button, fieldset, ins, label { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - float: none; - clear: none; - list-style-position: outside; - } - -address, blockquote, dl, fieldset, form, ol, -p, ul, dir, hr, menu, pre { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -div > p:first-child, body > p:first-child, td > p:first-child { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - text-indent: 0; - } - -h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, div + p, .initial, .stb, .mtb, .ltb { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - text-indent: 0; - } - -h1 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h2 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h3 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h4 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h5 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -h6 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -p { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-indent: 1.75em; - } - -blockquote { - margin-left: 1.75em; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -address { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -pre { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -li { - margin-left: 1.75em; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -dt { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -dd { - margin-left: 1.75em; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -ul ul, ol ol, li address, li dl, li ol, li p, li ul, li dir, li hr, li menu, li pre, li h1, li h2, li h3, li h4, li h5, li h6, dd address, dd dl, dd ol, dd p, dd ul, dd dir, dd hr, dd menu, dd pre, dd h1, dd h2, dd h3, dd h4, dd h5, dd h6 { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - } - -hr { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: center; - width: .5em; - } - -center { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - text-align: left; - } - -col, colgroup, table, tbody, td, tfoot, th, thead, tr { - margin-left: 0; - margin-right: 0; - padding-left: 0; - padding-right: 0; - border-left: 0; - border-right: 0; - float: none; - clear: none; - } - -table { - text-align: left; - } - -td { - text-align: left; - } - -th { - text-align: left; - } - -caption { - text-align: left; - } - - /* end horizontal */ - - - - - /* begin body box */ /* 3 - 'twelvths asymmetric' */ - -body { - margin-top: 1.58em; - margin-left: 16%; - margin-right: 5%; - margin-bottom: 1.58em; - padding-top: 0; - padding-left: 0; - padding-right: 0; - padding-bottom: 0; - border-top: 0; - border-left: 0; - border-bottom: 0; - border-right: 0; - width: auto; - } - /* end body box */ - - - - diff --git a/src/argus_htmx/static/themes/bahunya.css b/src/argus_htmx/static/themes/bahunya.css deleted file mode 100644 index c83aaa3d5..000000000 --- a/src/argus_htmx/static/themes/bahunya.css +++ /dev/null @@ -1,559 +0,0 @@ -:root { - --background-body: #0d1117; - --background: #161b22; - --background-bright: rgba(240, 246, 252, 0.15); - --background-alt: #1a242f; - --selection: #1c76c5; - --text-main: #c9d1d9; - --text-bright: #e3e9f0; - --text-muted: #8b949e; - --links: #e3bc5e; - --focus: #388bfd; - --focus-background: #0c2d6b; - --border: #21252c; - --border-muted: #21262d; - --border-bright: #8b949e; - --button-hover: #324759; - --form-placeholder: #a9a9a9; - --select-arrow: svg-load("./assets/select-arrow.svg", fill:#efefef); - --monospace: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace; - --sans-serif: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", sans-serif; -} -html { - box-sizing: border-box; -} -*, :after, :before { - box-sizing: inherit; -} -body { - font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Segoe UI Emoji, Apple Color Emoji, Noto Color Emoji, sans-serif; - font-family: var(--sans-serif); - line-height: 1.7; - max-width: 50rem; - margin: 6rem auto; - padding: 0 10px; - word-wrap: break-word; - color: #c9d1d9; - color: var(--text-main); - background: #0d1117; - background: var(--background-body); - text-rendering: optimizeLegibility; -} -h1, h2, h3, h4, h5 { - margin: 3rem 0 1.38rem; - line-height: 1.3; -} -h1 { - font-size: 2.488rem; -} -h2 { - font-size: 2.074rem; -} -h3 { - font-size: 1.728rem; -} -h4 { - font-size: 1.44rem; -} -h5 { - font-size: 1.2rem; -} -h6 { - font-size: 1rem; -} -small { - font-size: .833rem; -} -h1, h2, h3, h4, h5, h6, strong { - color: #e3e9f0; - color: var(--text-bright); -} -blockquote { - border-left: 4px solid #388bfd; - border-left: 4px solid var(--focus); - margin: 1.5em 0; - padding: 0 1em; -} -blockquote>:first-child { - margin-top: 0; -} -blockquote>:last-child { - margin-bottom: 0; -} -blockquote>footer { - border: 0; -} -address { - font-style: normal; -} -a[href^=mailto\:]:before { - content: "📧 "} -a[href^=tel\:]:before { - content: "📞 "} -a[href^=sms\:]:before { - content: "💬 "} -mark { - background-color: #e3bc5e; - background-color: var(--links); - border-radius: 2px; - padding: 0 2px; -} -ol, ul { - padding-left: 2em; -} -aside { - width: 40%; - padding-left: .5rem; - margin-left: .5rem; - float: right; - border-left: 2px solid #388bfd; - border-left: 2px solid var(--focus); - font-style: italic; -} -aside>p { - margin: .5rem; -} -button, input[type=button], input[type=checkbox], input[type=radio], input[type=range], input[type=reset], input[type=submit], select { - cursor: pointer; -} -input:not([type=checkbox]):not([type=radio]), select { - display: block; -} -input, select, textarea { - color: #e3e9f0; - color: var(--text-bright); - background-color: #161b22; - background-color: var(--background); - font-family: inherit; - font-size: inherit; - margin-right: 6px; - margin-bottom: 6px; - padding: 10px; - border-radius: 6px; - outline: none; - border: 1px solid #21262d; - border: 1px solid var(--border-muted); -} -input[type=color] { - min-height: 2rem; - padding: 8px; - cursor: pointer; -} -input[type=checkbox], input[type=radio] { - height: 1.2em; - width: 1em; -} -input[type=radio] { - border-radius: 100%} -input { - vertical-align: top; -} -label { - vertical-align: middle; - margin-bottom: 4px; - display: inline-block; -} -button, input:not([type=checkbox]):not([type=radio]), input[type=range], select, textarea { - -webkit-appearance: none; -} -textarea { - display: block; - margin-right: 0; - resize: vertical; -} -textarea, textarea:not([cols]) { - width: 100%} -textarea:not([rows]) { - min-height: 40px; - height: 140px; -} -select { - background: #161b22 svg-load("./assets/select-arrow.svg", fill:#efefef) calc(100% - 12px) 50%/12px no-repeat; - background: var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat; - padding-right: 35px; -} -select::-ms-expand { - display: none; -} -select[multiple] { - padding-right: 10px; - background-image: none; - overflow-y: auto; -} -input:focus, select:focus, textarea:focus { - border: 1px solid #388bfd; - border: 1px solid var(--focus); - box-shadow: 0 0 0 3px #0c2d6b; - box-shadow: 0 0 0 3px var(--focus-background); -} -button:disabled, input:disabled, select:disabled, textarea:disabled { - cursor: not-allowed; - opacity: .5; -} -::-moz-placeholder { - color: #a9a9a9; - color: var(--form-placeholder); -} -:-ms-input-placeholder { - color: #a9a9a9; - color: var(--form-placeholder); -} -::placeholder { - color: #a9a9a9; - color: var(--form-placeholder); -} -fieldset { - border: 1px solid #21252c; - border: 1px solid var(--border); - border-radius: 6px; - margin: 0 0 12px; - padding: 10px 20px; -} -legend { - font-size: .9em; - font-weight: 600; -} -input[type=range] { - margin: 10px 0; - padding: 10px 0; - background: transparent; -} -input[type=range]:focus { - outline: none; -} -input[type=range]::-webkit-slider-runnable-track { - width: 100%; - height: 9.5px; - -webkit-transition: .2s; - transition: .2s; - background: #161b22; - background: var(--background); - border-radius: 3px; -} -input[type=range]::-webkit-slider-thumb { - box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d; - height: 20px; - width: 20px; - border-radius: 50%; - background: #21252c; - background: var(--border); - -webkit-appearance: none; - margin-top: -7px; -} -input[type=range]:focus::-webkit-slider-runnable-track { - background: #161b22; - background: var(--background); -} -input[type=range]::-moz-range-track { - width: 100%; - height: 9.5px; - -moz-transition: .2s; - transition: .2s; - background: #161b22; - background: var(--background); - border-radius: 3px; -} -input[type=range]::-moz-range-thumb { - box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; - height: 20px; - width: 20px; - border-radius: 50%; - background: #21252c; - background: var(--border); -} -input[type=range]::-ms-track { - width: 100%; - height: 9.5px; - background: transparent; - border-color: transparent; - border-width: 16px 0; - color: transparent; -} -input[type=range]::-ms-fill-lower, input[type=range]::-ms-fill-upper { - background: #161b22; - background: var(--background); - border: .2px solid #010101; - border-radius: 3px; - box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; -} -input[type=range]::-ms-thumb { - box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; - border: 1px solid #000; - height: 20px; - width: 20px; - border-radius: 50%; - background: #21252c; - background: var(--border); -} -input[type=range]:focus::-ms-fill-lower, input[type=range]:focus::-ms-fill-upper { - background: #161b22; - background: var(--background); -} -a { - text-decoration: none; - color: #e3bc5e; - color: var(--links); -} -a:hover { - text-decoration: underline; -} -code, samp, tt, var { - font-size: 85%; - font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace; - font-family: var(--monospace); -} -kbd { - font-size: 85%} -code, kbd, samp, tt { - padding: .2em .4em; - border-radius: .4em; -} -code, samp, tt { - background: rgba(240, 246, 252, .15); - background: var(--background-bright); -} -pre, pre>code { - display: block; - overflow-x: auto; -} -pre>code { - background: #161b22; - background: var(--background); - padding: 1em; -} -var { - color: #388bfd; - color: var(--focus); - font-style: normal; -} -kbd { - border: 1px solid #8b949e; - border: 1px solid var(--border-bright); - font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace; - font-family: var(--monospace); -} -img, video { - max-width: 100%; - height: auto; -} -hr { - border: none; - border-top: 1px solid #8b949e; - border-top: 1px solid var(--border-bright); - margin: 1em 0; -} -table { - border-collapse: collapse; - margin-bottom: 10px; - width: 100%; - table-layout: fixed; - overflow-x: auto; - display: block; -} -table caption, td, th { - text-align: left; -} -td, th { - padding: 6px; - vertical-align: top; - word-wrap: break-word; -} -thead { - border-bottom: 1px solid #8b949e; - border-bottom: 1px solid var(--border-bright); -} -tfoot { - border-top: 1px solid #8b949e; - border-top: 1px solid var(--border-bright); -} -tbody tr:nth-child(2n) { - background-color: #161b22; - background-color: var(--background); -} -tbody tr:nth-child(2n) button { - background-color: #1a242f; - background-color: var(--background-alt); -} -tbody tr:nth-child(2n) button:hover { - background-color: #0d1117; - background-color: var(--background-body); -} -::-moz-selection { - background-color: #1c76c5; - background-color: var(--selection); - color: #e3e9f0; - color: var(--text-bright); -} -::selection { - background-color: #1c76c5; - background-color: var(--selection); - color: #e3e9f0; - color: var(--text-bright); -} -details summary { - padding: .5rem 0; - border-top: 1px solid #21252c; - border-top: 1px solid var(--border); - cursor: pointer; - font-size: 1.2rem; - outline: none; -} -summary:focus, summary:hover { - text-decoration: underline; -} -dialog { - background-color: #0d1117; - background-color: var(--background-body); - color: #c9d1d9; - color: var(--text-main); - border-radius: 6px; - border: 1px solid #21252c; - border: 1px solid var(--border); - padding: 10px 30px; -} -dialog>header:first-child { - border-radius: 6px 6px 0 0; - margin: -10px -30px 10px; - padding: 10px; - text-align: center; - border-bottom: 1px solid #21252c; - border-bottom: 1px solid var(--border); -} -dialog::-webkit-backdrop { - background: rgba(0, 0, 0, .611764705882353); - -webkit-backdrop-filter: blur(4px); - backdrop-filter: blur(4px); -} -dialog::backdrop { - background: rgba(0, 0, 0, .611764705882353); - -webkit-backdrop-filter: blur(4px); - backdrop-filter: blur(4px); -} -footer { - border-top: 1px solid #21252c; - border-top: 1px solid var(--border); - padding-top: 10px; - color: #8b949e; - color: var(--text-muted); -} -body>footer { - margin-top: 40px; -} -@media print { - body, button, code, details, input, pre, summary, textarea { - background-color: #fff; -} -button, input, textarea { - border: 1px solid #000; -} -body, button, code, footer, h1, h2, h3, h4, h5, h6, input, pre, strong, summary, textarea { - color: #000; -} -summary::marker { - color: #000; -} -summary::-webkit-details-marker { - color: #000; -} -tbody tr:nth-child(2n) { - background-color: #f2f2f2; -} -a { - color: #00f; - text-decoration: underline; -} -} -nav:first-of-type { - position: fixed; - top: 0; - left: 0; - background: rgba(0, 0, 0, .5); - padding: 0 calc(50vw - 25rem); - display: flex; - align-items: center; - width: 100%; - z-index: 999; -} -nav:first-of-type:before { - backdrop-filter: saturate(180%) blur(5px); - -webkit-backdrop-filter: saturate(180%) blur(5px); - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -nav:first-of-type #brand { - margin-right: auto; - font-size: 1.1rem; -} -nav:first-of-type a { - margin: 10px; - display: inline-block; -} -nav:first-of-type ul { - list-style-type: none; - margin: 0; - padding: 0; - overflow: hidden; - display: inline; -} -nav:first-of-type>ul>li { - float: left; -} -nav:first-of-type ul li ul { - display: none; - position: absolute; - background: rgba(0, 0, 0, .5); - -webkit-backdrop-filter: saturate(180%) blur(5px); - backdrop-filter: saturate(180%) blur(5px); -} -nav:first-of-type ul li:hover ul { - display: block; -} -section { - margin: 20px 0; -} -article { - border: 1px solid #21252c; - border: 1px solid var(--border); - padding: 20px; - margin: 10px 0; - border-radius: .4em; -} -article>:first-child, article>:first-child>:first-child { - margin-top: 0; -} -article>:last-child, article>:last-child>:last-child { - margin-bottom: 0; -} -button, input[type=button], input[type=reset], input[type=submit] { - background: rgba(240, 246, 252, .15); - background: var(--background-bright); - border: 1px solid #30363d; - color: #e3e9f0; - color: var(--text-bright); - font-family: inherit; - font-size: inherit; - margin-right: .5rem; - margin-bottom: .5rem; - padding: 5px 16px; - border-radius: 6px; - outline: none; - font-size: 87.5%} -button:hover, input[type=button]:hover, input[type=reset]:hover, input[type=submit]:hover { - border-color: #8b949e; - filter: brightness(115%); -} -button:focus, input[type=button]:focus, input[type=reset]:focus, input[type=submit]:focus { - border: 1px solid #8b949e; - box-shadow: none; -} -button:active, input[type=button]:active, input[type=reset]:active, input[type=submit]:active { - background: none; -} -button:disabled, input[type=button]:disabled, input[type=reset]:disabled, input[type=submit]:disabled { - border-color: #30363d; -} diff --git a/src/argus_htmx/static/themes/bamboo.css b/src/argus_htmx/static/themes/bamboo.css deleted file mode 100644 index 71b9abd0f..000000000 --- a/src/argus_htmx/static/themes/bamboo.css +++ /dev/null @@ -1,307 +0,0 @@ -:root { - --b-font-main: system-ui, sans-serif; - --b-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --b-txt: #2e3440; - --b-bg-1: #fff; - --b-bg-2: #eceff4; - --b-line: #eceff4; - --b-link: #bf616a; - --b-btn-bg: #242933; - --b-btn-txt: #fff; - --b-focus: #88c0d0; -} -@media(prefers-color-scheme: dark) { - :root { - --b-txt: #eceff4; - --b-bg-1: #2e3440; - --b-bg-2: #3b4252; - --b-line: #3b4252; -} -}*, ::before, ::after { - box-sizing: border-box; -} -html:focus-within { - scroll-behavior: smooth; -} -body { - max-width: 70ch; - padding: 0 1rem; - margin: auto; - background: var(--b-bg-1); - font-family: var(--b-font-main); - text-rendering: optimizeSpeed; - line-height: 1.5; - color: var(--b-txt); - -moz-tab-size: 4; - tab-size: 4; - word-break: break-word; - overflow-wrap: break-word; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-text-size-adjust: 100%} -h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, details, blockquote, pre, figure, table, address, hr, fieldset, iframe, audio, video { - margin: 0 0 1.5rem; -} -h1, h2, h3, h4, h5, h6 { - line-height: 1.25; - margin-top: 2rem; - text-wrap: balance; -} -h1 { - font-size: 2rem; -} -h2 { - font-size: 1.5rem; -} -h3 { - font-size: 1.25rem; -} -h4 { - font-size: 1rem; -} -h5 { - font-size: .875rem; -} -h6 { - font-size: .75rem; -} -a { - color: var(--b-link); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -img, video, svg { - max-width: 100%; - height: auto; -} -embed, iframe, object { - max-width: 100%} -iframe { - border-style: none; -} -abbr[title] { - text-decoration: underline dotted; -} -b, strong { - font-weight: 700; -} -blockquote { - margin-left: 0; - margin-trim: block; - padding: .5rem 0 .5rem 1.5rem; - border-left: .25rem solid var(--b-txt); -} -small { - font-size: .875rem; -} -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sub { - bottom: -0.25em; -} -sup { - top: -0.5em; -} -hr { - height: 0; - border: 0; - border-bottom: 1px solid var(--b-line); -} -pre, code, kbd, samp, tt, var { - background: var(--b-bg-2); - border-radius: .25rem; - padding: .125rem .25rem; - font-family: var(--b-font-mono); - font-size: .875em; -} -pre { - padding: 1rem; - overflow: auto; - white-space: pre; -} -pre code { - padding: 0; -} -details { - display: block; - padding: .5rem 1rem; - background: var(--b-bg-2); - border: 1px solid var(--b-line); - border-radius: .25rem; - margin-trim: block; -} -details[open]>summary { - margin-bottom: 1.5rem; -} -summary { - display: list-item; - cursor: pointer; - font-weight: bold; -} -summary:focus { - box-shadow: none; -} -table { - border-collapse: collapse; - width: 100%; - text-indent: 0; -} -table caption { - margin-bottom: .5rem; -} -tr { - border-bottom: 1px solid var(--b-line); -} -td, th { - padding: .5rem 0 .5rem 1rem; - word-break: normal; -} -td:first-child, th:first-child { - padding-left: 0; -} -th { - text-align: left; -} -ul, ol, dd { - padding-left: 2rem; -} -li>ul, li>ol { - margin-bottom: 0; -} -fieldset { - padding: .5rem .75rem; - border: 1px solid var(--b-line); - border-radius: .25rem; -} -legend { - padding: 0 .25rem; -} -label { - cursor: pointer; - display: block; - margin-bottom: .25rem; -} -button, input, select, textarea { - margin: 0; - padding: .5rem .75rem; - max-width: 100%; - background: var(--b-bg-2); - border: 0; - border-radius: .25rem; - font: inherit; - line-height: 1.125; - color: var(--b-txt); -} -button, select { - text-transform: none; -} -select, [type=date], [type=datetime-local], [type=datetime], [type=email], [type=month], [type=number], [type=password], [type=search], [type=tel], [type=text], [type=time], [type=url], [type=week] { - width: 100%} -[type=image], [type=checkbox], [type=radio] { - cursor: pointer; -} -[type=color] { - min-height: 2.125rem; -} -select:not([multiple]):not([size]) { - padding-right: 1.5rem; - background-repeat: no-repeat; - background-position: right .5rem center; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; -} -textarea { - width: 100%; - resize: vertical; -} -textarea:not([rows]) { - height: 8rem; -} -button { - touch-action: manipulation; -} -button, [type=button], [type=submit], [type=reset] { - -webkit-appearance: button; - display: inline-block; - text-align: center; - white-space: nowrap; - background: var(--b-btn-bg); - color: var(--b-btn-txt); - border: 0; - cursor: pointer; - transition: opacity .25s; -} -button:hover, [type=button]:hover, [type=submit]:hover, [type=reset]:hover { - opacity: .75; -} -button[disabled], [type=button][disabled], [type=submit][disabled], [type=reset][disabled] { - opacity: .5; -} -progress { - vertical-align: baseline; -} -[type=search] { - -webkit-appearance: none; - outline-offset: -2px; -} -::-webkit-inner-spin-button, ::-webkit-outer-spin-button { - height: auto; -} -::-webkit-input-placeholder { - color: inherit; - opacity: .5; -} -::-webkit-search-decoration { - -webkit-appearance: none; -} -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} -::-moz-focus-inner { - border-style: none; - padding: 0; -} -:-moz-focusring { - outline: 1px dotted ButtonText; -} -:-moz-ui-invalid { - box-shadow: none; -} -[aria-busy=true] { - cursor: progress; -} -[aria-disabled=true], [disabled] { - cursor: not-allowed; -} -:focus, details:focus-within { - outline: none; - box-shadow: 0 0 0 2px var(--b-focus); -} -@media(prefers-reduced-motion: reduce) { - html: focus-within { - scroll-behavior: auto; -} -*, ::before, ::after { - animation-delay: -1ms !important; - animation-duration: 1ms !important; - animation-iteration-count: 1 !important; - background-attachment: initial !important; - scroll-behavior: auto !important; - transition-delay: 0 !important; - transition-duration: 0 !important; -} -}select:not([multiple]):not([size]) { - background-image: url("data:image/svg+xml, %3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%232e3440'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E"); -} -@media(prefers-color-scheme: dark) { - select: not([multiple]):not([size]) { - background-image: url("data:image/svg+xml, %3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23eceff4'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E"); -} -} diff --git a/src/argus_htmx/static/themes/default.css b/src/argus_htmx/static/themes/default.css deleted file mode 100644 index 2cba8ce42..000000000 --- a/src/argus_htmx/static/themes/default.css +++ /dev/null @@ -1,3 +0,0 @@ -body { -background-image: url("/static/themes/default/background.svg"); -} diff --git a/src/argus_htmx/static/themes/default/background.svg b/src/argus_htmx/static/themes/default/background.svg deleted file mode 100644 index 99382a3a4..000000000 --- a/src/argus_htmx/static/themes/default/background.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/argus_htmx/static/themes/ebmf.css b/src/argus_htmx/static/themes/ebmf.css deleted file mode 100644 index 21a2c3810..000000000 --- a/src/argus_htmx/static/themes/ebmf.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - margin: 5% auto; - background: #f2f2f2; - color: #444444; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 1.8; - text-shadow: 0 1px 0 #ffffff; - max-width: 73%; -} -code { - background: white; -} -a { - border-bottom: 1px solid #444444; - color: #444444; - text-decoration: none; -} -a:hover {border-bottom: 0;} diff --git a/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot b/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot deleted file mode 100644 index 3610c74113ad785d89229335f416d10c66842ad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40888 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 *eX)Plr%VO@4(_+QY8>>|7*kf#?>s}k=(4;mZ| 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 KK-MFx=*(Dj84r5^ diff --git a/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg b/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg deleted file mode 100644 index 1b1b7ddaf..000000000 --- a/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf b/src/argus_htmx/static/themes/et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf deleted file mode 100644 index 9798360f56c26b308da44368616b38ba06ebbaf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70912 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�Mc>`u==N`T;PVl=dbH0v&LA$I!i3IY_ue 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 diff --git a/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg b/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg deleted file mode 100644 index 2a82d8a9b..000000000 --- a/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf b/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf deleted file mode 100644 index 9da91de9ab02e3d1eb3bb94e8959026a7deee508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74464 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

    NVbSy0lh2>=GFVEtg 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 diff --git a/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff b/src/argus_htmx/static/themes/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff deleted file mode 100644 index b0e5b68da0a88bb56232c764231d3a5a3a93f2a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43780 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 z zd-={%NV|y2^kG7ydy?|$U)TD$1@0cQ-5ehj9#;_+WXz*xf`xZ(F+c0$5UP=!Sw%{9 z*@i0JTYhp`i0SahMSgt94yTUdL@w4L2inekoHpkeYY7>yso+Fe3g6!lRttw4aDkH) z(?ZV5)FGyXj7%mbd=H3ja2UhhrAH#Br`QUnV|Y;SvEJx(2gQM_JM#@5`;7z!%jv$7 z#d(j82fC`fiUXy+jCa93B4M9rvq=8)P5Peh$!+%cZZ1HW#8em4N#TFcO3~)l6P+0% z&SZg~lcOjzhA9ibLPX)^%WDa{vIu5*tZq7`T1xNddMg^hhE>xjxId`sfM`(KdJ>fB zzAnv0;9%D$KrHjkwgY13_TbwM|Fw73NF1U6^%t2Y z#yVqx#_JL^N76k)*QEzU!ekF6C&)$zObL*aE?}Sby=^ouM0$I#yHz8z08c| z9w-HHkQDb1ls-0`q?o@`@-AXwOj7Vi zMH)|XV8_m)P_eId-LSiX+Q}v!_>RTv!ONG31D7}Vro(T?Fno7Y_r zdB4d%{i!Q_T>H^`zemrAWA%YG~ z=`>?$ST)TvsxV?W+^h;Pt~uUT;SExOFV6&@R0X%QTkog?B^a1#y;!pmXC-Xjw}3fJ z@E97`)Ka2EijTPQ98H$ZA@nou*s2R+ zjHV)u*E!{QP7z+boq&ZSgcA!cE;2xDhlS*_PH=@;V;TPFhWt$6h@S}1bxpK1aHca4 zCYA1GA{x@j#yF-+L|Am!&}TNwRDZxE^`J0sdD{nzZG*Rp2-~JJY1KH!@ytNdcG!oA zX|~ZPT3Y#oVy#OqhxZ9*h{6~jGt)62YY43nC4Uw=MzT;BTh1!%KCYqQET%plZ7)P| z?pjJ5UfscS>>=yL9T{tBn_+gfjlv)su*v>&v+q_NFlj^VKP~dxW5w%z-yq5XPZ@+V zXrp#V0ZOdz6RN;|XN!HO7dkothy*l>HeMk*H!UlM*wkF~$rZKbplpO|qmHp@cDo(PC zbDZ6NSOYaVz|Xp2!Q_jEQinU3HI?020tYy)YF;MZ>v*2G%42htz>9 g33{S1U76 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%0Ao=hCDo6@gE}} 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 diff --git a/src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg b/src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg deleted file mode 100644 index 96ea45f50..000000000 --- a/src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf b/src/argus_htmx/static/themes/et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf deleted file mode 100644 index daceffb22e85823894f33203dbe89a4d5a17d081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71688 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ⅈ?=GwM#l3Oi%mIIS;jO>g^e2gc>{48i4I5b9 zw`2FKcklV)_|aC*(v$|br!0B~!qIqYuy4u>ib&&*A98(u+{c-O09}qDZfcp@)ZWw^ z?h@a9=brH$uNPh-7iYn=MTKdYn`$3_g!6yv4em=nE&ObIVejNrL@|l>&WXoQ5BBt} z+`i@ho6xp`?@Jrs;!g;#!g^&u{}K$|mLdvbJ4%&OviOQ4Wgy6Sm}Ew54|z{mGhfQS zB1I2`7>slo9MN?}uIP0ChW`EyTyXiufq{)efW9dHKlvHb?)tH)m>xG+3@W13=X6C= zO@^7-@Ujt9x9v#_K_lD6bJHP<5ryOOM)n3K85j`}6m9S`p_)vRqgI8)R&I&PHPA+D0tBj6vjM-H zZNcRl0$1Zx1}j8S4KIX@h%iM z7W{ZIh6&di#<(Z=HQW=0k&6!(9^>}%72Mv!p^N`qIP@47{r=!ikJVNtM^K}-1rYrU z!r*Ji{`AbLXLc&3enmO)?sp6S!kysPa=F5A;ky_)U&;Sd;oZU)xGw-~u5kN6RPZma zaphr);&=aB5S43}_%ipmPrmf`4>&D~)%glql4KL~9*r5yj;sTQrwLlhxkiL`T0Iuq zpUgod6L=h0$A=dz@69#f74{3wSIp2~MsVCqlG!rK=_s#>C|VqaTR4IWcz|YFal+d3 zW(OMo1Zx7qN%Ny2Wzfusz@IdfmRCg<6;C5h6zkfGF1MLM0&yeyc;s^#H$@&)JA;$X zFpysda$Xx3|LS1pgwLy3?vc3h?v6DhUT4xamFg%JET)0Z_Q4(DD(_I(+h1#ZVog8| z+_4FnS|H^UW1Wfdb!S>LTp&CQeKfw6>t5!o%edDmCBAB`OQ)fSe-u4g5fcv3-sSM% zY_tI>Mu|*9xU{dd5^_7h^+=>mKtVT`GNv6tBYtxPJGrjTzx~@zv`5>H99_)4$(<~0 z;0t#{i()s@XeiWBUUQt=Ws;2Np$6CjPl|sf&#~wOuj#rp2;})hCJ$z0(ML|8eoU8u zBDrSPQ?_)#9<(19_8d0uIC60>cY*%i%Q{5{Fo+|w{J2s?P)_f>^d`tYzJR$7AVvq7dxZLUfldcD6h6+sx9BSn!VWxMuK1!z0BT{(t@;az*kGF z$cVhD&R>CrByj3*GPjK3n&w)fD4l6VcXChjo4Kb8D=t1*SaAz?fUo0zxA6Ik-}{Ou`W2_``Cu$4S4GWwT1Q?(SsArPRBs(G2kgs6NjnwcjIQ6;b z3cvV^?fdfw4&?U>zN61SfAq);&wp{^z=4U$0|(g8bNtdPCdu?LGVxUuk5rMvi>2}_ zb$zvTGFQcLwpI1mqISxCu>`npxa=^cYT)(EFV?lz7Jx;PakmonC$808|6W!Y%@kOJ3W zfa-;4_Tl@(wQ&v&Y5G1adj0Xz$~6Da98h*nIdtyAzlJgXz>D5_N^L$HDYYR66gk-+ zL}~`xD@>{_=2da=C?3Gn(1aIcA*o62wEJ4{jFMvfSuPL*$DHqEySlu6~<8S!a5kp74^vjw_)ur)9wfQ~bb6QIe%>H-_jDaF>_WLBv?}7D7&b4~XpfNNJ=z>7{w3B0WruY`cOl)h^0amNJ}0?dxWi>z)$c#tQ}1aXA_WWLG~pjup+wZ z5C%L!Fw3FRN-IWHJP)l-SWi-EAgdHqrG&8pTphIuVI8}`dhFCupLIzh zYlRk(GINBf^uiy)VIl05{c2E%g)-wE;b16;K9%KEDm2#S%!uJbBZHfJY)a=1uN)ZK z&p+!4mP!?TU~NyT&+DwQ_=I&`zUW48&@nPO*wK@cMd$6^TmJ~S7tZjm@kM^fGyori zc|v0Q$;-ugLfg!BK{LAKS~Md93N}21$`pdQO#LWt^Zy4A&iG2 z1i*!#H9%X9MV$Fks{!IAxl#tZDFv*TF%TgZWPN%DSkBZm<7^`1bmLqi2uwSg@GA&J z@M}GerQr^s8~V$S&jS=nidM2O0*f+bQlfZWsRqV(JFwJ>fGQ2!Hk8I1-USz1f8R4gF8L9Ja$b z)}HE|=<1r_)mxW##bZnLJ@+~^P;HnR4H)VSupb~gpDB)-&=mKe0M9^^Z zUM_{sXEm3aNut>BR&hg-TdIHkOe-{sEPVUWJ;U*^8}K^8=C?%`xB1ptY=!r@>djP+ zx7^k_yraxgE*mjy-x?lhf?H+Jw~k-OT`)!P)3g~#T@h!11|KBGzA3TjD8zm`=pbwL z_~}IY>39e2bqR<#y$*)MoCJmmNgKLT^rN!kdW!1Y#`-Y40DjPQ_w}G8D!APEV~Xw3 zM-H7qf{K*BKHRY-o0!VH#H}1H3lJ8zFCnAD$^UUzSEB9VIG; zf}nZku!^03#)-My{zFZ>NBSoB4EIeM-~7clzVVBPxFy@azGZatgPZX4j3JKw7UEcw zKB;TH9LHh~_{vZ=he0O#$I*#$7*h@-gbs}ruJNXLZ>kG=Y87q_(V7n`{4dH`F; zJ-|~;TiA+Naowe7O~;{MPz!H0fr*yCF)-phRszkB-*#gJ0U%f?#&O^Vl4z5$H=u7q zTyEAf^72+@OpLd9m^x4l2MpXc_&_YhT?;L5y!2oyhSaVR4rZs4`IY)ryBLEoWAyP# z6qj;i?1CP{ox-MFMEJlQuaNj$b_@()H21O+sa^~4Z&>ErKu9PVUPlTdkr z>8Q~!;w2@7_2CT4OSKtPT!|(q++<#NyjvJ8ar(U#wlfc_oKV{72A1Am6LC9TTdh{( zU!zrN0k(t}EfHH%!cj2owiZladHPdz=@X7kpon)O{6bbL|@+!j{cr z-ifz)v0(!ssIa-YGd5?bB87gv!Y7#~uYzj6Pq}4VnHQ$MYbOF`}C%AMrAJx^1++^Vp+X*CPf?O}VDM`}P2pqG^ zley8`Xk(3{capnplwRJp6i1#|!X@HFY-r7f>{=M39NKNvO}?`=J4z(s25tQmz64MB zLc7+#1s@aN!;`*HbXgCLC*!>9$U|1|L(v^AKh*YSOf1d~iu4u=JN;DeVS6Gx@9a~b zl+L}IVt|=*U*C*vrl73C{EiEf^SB@$M88D% z8lU$BQN*6=N%vMdF}v(6S=;T8+$A|#5Z2iyo1#ZIpH5#)_yp6G%=x7AXH>wjN-)WD z*%>HhYMeO&zU*;@m+vU$r0>8#S)ONi-bjJxseeg&UI(CDLsbl@)1rS#eH9EnlbTlr zO?(+D*kC!-yifr^Hw9HZNJ7#F@`_#>fE1ykXpG`9&U!Ajw~!0&X+fYf`LpRz1S&%2>;;Pf$?DK&Og4r zY<$PtnDEqFrxdFg!ISmA>G#Ys5b_g1fMWW45GO*btwULa=_^IMduR2PGPl)|zLHM4 zKvQA*)E7U9N5sS*coHhTsUCX5+h*mJHqhhY;V3_WAG)f%5^*Z&>L_qI7_3E@NzN<$ z0ac|sbFdz>HaZ^%L7+g{L^W<~Qu+fQDysx<_4C3@MNOqzw=Su)^?%P-RFVsiZ*YTp zS1Nb>q2JP+h?H*ql2CPEH)zP9t)vRq5mu@N;zULm4;`nbjzo1rFn)iqCZYCELva4c|J`uVJLd8X*?T6e;!n2$fv$1C9kc3_0bH) zzd6@9koX)%t^;hBg-3eEV*TRz5q||1pF0p!++xVByyE;U!+?-ZPoK}Mn`f_k;u`LL zC=RTgIX`(b4iL^;Yj$1HG&!qlE4%A|(<6i|0>K?h1MCbTJfz6M?EvBk!(2E?M7=Qg zB&ic#Xmt863zS(VOG%(CqI%O1C}St-WiV3Mol_k%Cu#E=mNHT1W20(%sij%QAVA>^ z9i@k#vN+^DF0c7Xo8ptt|6KJ*cg>oOcj_m~*(MInmnz%bJP^OSp;Z3(|Bh97D?ye4 zl`@k zHJkO=0NxZuCUyf|xhp#;3Rnug%EwjJAI^(tsXmXwrbXg65zym_29!+LwJ zdCgjEhU{kbX=hz5o}Rp|0UylY8=4&#t`I z0|Of(^DO=K{#3euIj;9>Di>be9n8}#ByVtTV}Jj~ZMz)G+$gt&S{! zm1*W(0X&O7QIh|3?f%bu$4B?>9UY&XXZb)6ig`<8@!!<)q9MC?Z+7p+k$INSuj%Po z(?kBBzjWWFUy22Az#WEG!mq*ngSbDp0ateRASg?KdV^qKG<$#rzuK0)0QtL+7iQHI zQ@?Z2>++Ol1MYl*i}JSxeki9Mz4uTHlEkA#ZZp7M#%XUn5YOIoHv45v<)H}(KK*-G zk>{SfkTihp1l&~lF1;4er4Z#-zDob9id`YuiDZ7QULbf7yQq(11aO#l*>f3JH+hJV z3f642{7@_e0SXZc8C$dW+Mn#|TXy@@9@<++)$DS}7vP$TAIfU6S66gM6rT^D7!7bp7Etz zA#JjRdlZ5*mLE4RxFLl(Odh3VjBW_dRIIJ==P7RCzlI`y#jl{HgXRTtKj7=pC6rs& zzaMU18+&YBk3S9#G2UM3;yrxpufHGQ7j-@a_K?CZukF$JK@5A8+5+EsDDE`!J1wf4 zOMoZKdMvE+mcgyY(Q(P<@Hs^c*rB+{dm=AXIZ#IcKy#`uR2T}FAXM+3baVc~w-@@r zWV|lU3+cj{O^Z;waD_X@d33Ao`e`(r1@zV8B~xoKg|{^^Frt`ljbMN)P!Ldudnub)rvb}(sUCc zIqNfyx*0jpejmg@Jy_%GXo0Rdl%7+cw~59%^?C78KuZo6bwa%;eQz38Zz{jGM(A2% zO|wj*mT$A5fGHbAt}Q&kr3A5rtFS>hj{JrpN!pmmlP3%t4bSLxBc_f?>_;Su$s~-} z3zEiM*fm~GWg~I}o7hD8G6Di52^O#cc0v&logvbVTZ{_>$b%OB4NOae%`;!Ee+7kB zOt9pK^kvU%?(+n(`4lhKyPIxg!8cL2}&imvG=E!5t%gAHW2Zb{E)4!Z2 zllkJxxgwc@_#q;h+)j(r@kc(XI~Xb1Sq}E;d4idOFjp{B6y^$Mt}DFH^fDI;-m9r) zif>aQ{>+0|tdu@g4F%kaNGmW`2mLu>A`jc|@spGKvgHACZ{rlCy_&7|%?z|Z9F#WRiEeFCvQ*vzOF z{1MMIg8O;){^(|<*ncrjac<4}yKpA6{~gZn2de@973PiPudD)CK2;l^yjlqWzT2q# zZt*zmOws=T`!Os{S=^ne{9Srscn#7zGtob-4?vu@^KD1B?x!i zibLK7kG|!<&tadLoT#k_PPUjH{Fm&Bo+vX~X0)Uqk=#Isei_u=z z#G~jNwQzH-W2VSWq|=wBL_=ke66LLO*#*=FYu3XS&}wKt zqNpay&EI%ofSxHxoL)m5_B zWqDJ&zdxNS7OBqfo~!+Pt)puCH@$d;VfahGG`$Obu8d*a@cZDjqL`%}lo>VjB8+^I zY7|;O-XYyb8dS)qg&GH%+N;=FLn3XshNw9hIl2Hord-9+)hw?7#T76kNDBzUS(_nt^gt5hC%Qmg zum%Yp4K*_i0@a$ENkJ)ShFBUaJ(G|wPYr8oT*DEjLSXe5gQi+n_+hXOb1nNYg!I@+ zF8vCpZhgP-!yjz=omUH;D=Z3nF`@|Cg2_%JA9}*ei-#%CP?M^>>!m=eIDjc60amF276-3_)>(@27 zgMD1)TcVXy$STc{(%V|o<%VBe*4;tuo?R-kM8T|;gK?eyg-O#qwN(xlE$ zPArbux|C*x@McX690ikcY8q4t(dnt-N$lvsVg~{Anz&^aV`5Tdcw14%(l6HMg*ND^ z;08rojhx~Z{i|CPHbk2Me2lmd2jD=am5kbr4W8X#N7V@Dhd@{s2!3V1%q-65D!r-6WHzi2Cj zt`P4m522=%dI(ZRnj`9olFN*!XGc0I>#Cj*&vEe}L}Q|! zmNFaf`=FwyXn{|>diwy|06vdteIlM9tYv=ORIZ-#Tha+=ReYEfs4;Z8Cq3u6ob0*6=!abGxqvyn ztYTV;?Fr-yl{G@jtfna@P&Fq!@U+!fMg^pg_>}Yd#UJvR`E}IuE#B_&4|`DVUuG`$ znJ#Y8hPcpsrYU3tCJBldt8;{}MOTHOZ@$U( zD37$A0JF_U^bLS{DiC2YQCkZCf(ZYfG?uxmtc~**NozFXl5Sz*3n{oBswlGQH2jL! zmvwF(*Y_mX-yx4*yVLlgtN6WZAAUhU`-pdF9RrA(cV2BJA?4GMBDMjVRIJ0zyI}4T zLi0E8*8>}HO4AaC^{>L0mynnsC^nq7mbvw*k&hw`JQL8&3_4zajow&60R|UjUAYfi z6+X(Mk>z?!!Wn*G_?GaBkOd0fkO8Q)8SGj#lZ@&iu6k^B#(-b|v``mHV%pqd_y>Ui zx6|({oQPIOy_Kima94Vdd{;`C(_UYo@J2k~Wg~4C*E=L<@ZvN+7xvWoD!7gD^!9Th#s^_EY`L^c+>Ke?2B>NE zKw%w{74Xk(sHdl(wM5>zmqD8&NZqk*A-Mw-^Esv*0v2*~PHHimK{N$jve{--T%J%_ zL;WH~fTOB8ARbu=pK3!lS2me#s=LAyYG@RfVxwn`_G~G3HD(g2PL3tPLSUF1aS`@8 zkac*Cxop0P3C}i#jl>9H(7ALBObP=b6~=eb8Zm6)xaYaS_rBwF?^9fgvucmx`C(yM z;hXQg6!iRoTM;crni_aW64kxlO71il@p~Ws$ynckfj^YcKwo8{xNe z|Knb{;)G&D|Ko`2exdLN9M0%g)%TRQOb`K=gf>l1_KAGz-~TM+=gxDzmF@=%XD(Ly zs*e24pPW0NbNhB&Jc=s6w84hE3lGUO6i+5B8J&YG0ghCtL>MZ@<@GNXA` zjT5Yj`5xU{fZCVF=`fU;i?CU`NF6|t7?#$S+Yzk@W@n-U%c)iLz*+clg|vZ}NQ)rT zM%a!KwySA$h7pPC3Z15F33Sf8N@L+1>SsH?0eabYdS zdTIi&`dS6XxTc-{1flgltpyFumWWwy{z;bff6SDC3vWsBPqwB{&D`($6peXiU2(s+ z1Esb0!`F4y+;zRmN)BTsE3lGJVP`_bfe4^K#U;ElH24I|$o(fPwYohsfGfo#eX_;O zUL%Mw>SrH!U%O!$IBQRT*s2oM*gz`Zsb7PA@CFcSy1aXlz2}$e7augf(bUYZ(7#%7 z)xAtKw;ixRRvC>T(*D5@>dE=u^LDP)}htz$?vU&F)&nMP-H6zjZ{b%86Znuftg$q3PXwY0__ z>MqI(n>_&(p@w2Oq>pYPb2W)hmNpi(9_Gn&5{n5Uh34`Ue$k~luW%;tu7b)PJw+m& z2fF8obQ)bb^3L-VIt!cs=VgIT6i1mrCx81oo13+l$hQau8TyYHE~t)pHq6!PY!$_; zNp*_Cj8x~zBTT6CnJe84Y!bfop0M522k(8W;VXvRLf9m`C`E#0*-Vn8#eblWFRSg14P?NxIspEK{#AN?9KQ6&fe6 zZ-e=`DlKG9thTgW`psv5itSoY0!u+qUUsKCH1nC1xr*Uwl9Fyn&>0E*LGP6!i) z>x*3Ee3{PZZ@kL;i5 zKUnzbyQ9Em_N<9Ug;3$Of(qSGQS?nYL1ifgMbMd-R@qDn_kcGXd+4uLbdMYe2V*9` z>f|ioD{+H`rp&!4X7loXck8AnUU*01m6G1kHbIF)Pg8MQq<}lV&N#8NLPZN7c##WV zj+(`n9$tHY5KO@y#3&qW@_j)7$J{XWeTK*)gDK4ji}WS+;#mXGT)oL$Lp4^{(16Gz z8;86Nv^YTuUrO;IsD4qM=?0^3H=F0`rb&O1NeHlBKsQ8jU<5B6BpUrSL<8&~vAJIj zdV0B5g)G;K^To{8jYa`Y@VDBZbd~abqzFHdSp_ zUOlyc-`Dfc9J=`R$)S)SS14u)9EO(wZN$xEhMK}qx1-+h8 z&}?g>m2HE9X09JTj~NRRVwhEjgr=6k7Pg4oJ)uIC%Xl8uIMvGvh6^IVLb`=|~yy6_KWanrlQ=&zn zaM?Tq`Vm6NJ7bV>7-WD>&WcuT81+m2)by?-aw?LfrSr1#n&)MBL?^NOgy-aHoiV+K zpdX!&X^r&LXqD}8xn;;oV=#g0YFn6OEghhbXAB$(D8Dp!MlKa2+f;xq8Net?f7H7R*IEK#UBisS3SAs8*tR zFg@$_?9A&;uDOG}-U>QbH_?&I4uA5~^&z!AT^+IL8b79e-SaAcJICkD7##ehcHT3$ zBKYN1m?p>wZki?#=a^d1{iN_R?7S3N=Pg(Dl)YD2x|dnHmn@A#*qO?Y=(v+Mq)QV- zNvw6CO65dzJ!?oYOCu`Db|_juEID(-X*VG%1pZ9x055Ug$T#(}Sfbyak5?pbpjbn@ z3CC9pL@9u;?Y(SWtpdkZQwON7@(Ir;8$+dF1Otn6&m~w0izt$h>o7+Go*ym5@II7&{KVieuy)}lIgXIA6;4Dx^B-{u(g z1p@ppV|U@;rSF>r<8EkFtv1|lc)Vy)3#`b*OV=Pn?x5hZCzW5MYt_=1+5oWpW08(( zWN2f=NjYIVrfO}nFd2rjQsmbH1 zL9hnzaJmj}y7ln5?AZDBt-w}WEZ#^#N_oAb8?o8;I7Xn5% zbj-VHQkyY4U!h~(MJa)2pD4`d5n20QKW=>AG45i3Sddvq!vEv&2QE^eqTc{+wb$()dmzx2iQPM9prbxQ;Pw z{~B66Fk{zXu04eSJzsCDp~?gp6&WN43#cNfK#2}oHDGDh3{W@IVpLr)0cJxTJi0L) zP3X~~!9lYCK@mi?v}yIF!GI~HJCOILX%Bt#8D|h~l;kA-J^zD#n-}sjm8T1PNa*{( z@$EMIWub50JFD}3)Hi1^yQujcbCs#82m;0{1i!y3mXO{z_jAf(FmP>=0d$*LivhM4 ziw&Evu@=cI*P?@MCagtPWqgtOHa(7_o>3gMJ(>-zqN}Y@lGdpG7H34Z5b9t zC330s+$ABMZOFoRsUMJqzvia7TF5_VAAQ)W?3ihtUk>q?&D~AcUmE_st3~yNNA!I~ zF#|hSi1TU0N6&GaI%zou>Vjd9!z**3^6*BBXs2SIw%yai6M1#bBm3p_Vwo3pU`+cX#Wp~v%J zF-D8cUD*F%u@<7V>#wkJM=>fZj1&)Rh#`V|Fst|Or3>8q@L4i^7Iq(`V4?sfXk}Q# z5SA?-&pOVMpy#xu#(}sA?3`5FE{PKt4_;}Duz(g^#K=jrH3as9IyJN>bCL}ZHXO%U zA4DiyBNO~arL!L8GWhOLGmvO-=8z+1x)x%+O>(NIeNsErzU8gk1l2npEJ{>!rU(Yn zJKc&PKl`7eWb%@~0k9VS=GRXLxy6Ss>r+qIq8CpNRkhX_{eCdrIH{H&!E>HRO(g&& z;AP+-=YWr8_^2@ICT*kMqcCs%FT>l9v9x-0} zF`lWPaZyKrbp34u0A38@T9YJR>P54>)Qxz`B*V0V8gkm?y()?|%HEE%c9)jIN)U=Q zZxpTNq$a9GO)znNs}=`C)O2mAF@ZP1LJUSk&FY~|%onG&KYahr%y)YkTowJ4Yi?jJ z#Bd-*I_wMG*IyLD!6>t7ZFs{P)Z0bV8st#jhP^X42GDSxeVbKb#w}W?-?9}Rn5Uj6r3+QyM~iq=z~m$?DRzY z<)pK4!C7jn`bV3fq;9cPSQIsIV*7W3vQoV>9&KOJ8Q%TCfp31d@Lu-M5AMAG*)MK= zfP3OaPI8H^s#vfaT@dMuf;(W_CHkd6wae!7mqa?JqzaF+#8Vv`80`J~bA?|V*u{xl z*>i>W^7ld6_9?y3cOH|FKQ;^+?xuW{xLxV$AhucPE+Y3QRb)HfB{u;8Y8v+rU$+b` zzwGVt{A#^gbm!{Z;U8BOt3{wHKtrPoOYX!_1MB^XHY;jMT_V2gF5Qb_CYf{`q3<|7 zQQeOB$MpBd;`s^P0d2*{?HEh%vf8WSsov$QR?|egRy~FdONFBjAcP^4>~dFBhnm_u z$u?znV6C;=tMDCn1EXq(L;{8qX{4A4%jSqCgNBk)925;MOD3~yCRj_2sjI6c3+Qsp zD<-*S;`CWQ3!i14igJ9ehB9d>k%n^N_1Fg#l;efBk{;tj#d1<@X{ATlIX-sJSg^=g z;S66Pt1QQ_lvP$eBsB6tQDwjsB;#|}C@L|3qiZeW9xO4q!6|uH@l;_Z_%bMyI=&nP z2pBpKmPOrWV%S%LsKb|CxekLbJozRRZ+NFJ9CB% zXfj`MFlHMRbZ^Ev%Zo2@HvS52=3O)37(QCElL<8!-hbgrnP&d6*^BZ7;!UP0jeC%u zvmTmBdagI`Ilb&Ti-21FIf2laqo9N-X!e{0uT|^dLX6fjKOXb)<9X@vXv~7Sh^su_ zOohKl(Rz&sd~3bUjrx5FZ!COIUUaP|zWL8}wdnauUF})p={!Af zcq~@_74h^q=V@)vn2`VF)h^FM#XSA(qCMfeO7N7;hC{{YY?^sakm_Zt<9Sv0QMGC{ zybMHESw$OzR|ttoel0}uYk67U$TC7_MWfIMdpYZ(aLB8BqZYiEz|!Q5RtoM6S`(lN zw41BR+~5;d?H@Gy^--lC5FnpjsJ++5ou{t8U_ZLX0WYNIt(l;o0pt^O28f#ueBP|$ zG4~V@gw&tPhx81h5>ZAGom@N+C78HE3gMeQ_0tWaioBvoOV@y$f{@FUp5b_ehzDTy zc+B5EbC&?EW>)y9tq)zU=3e7)P)T*pRA1jUkH-&-(LeHpVi^|a6yR#> zplXn7*D}(CBZIvuxPae?RBCUDWzX3sIr*GTeWz>p-1z1xH1JGVd3 zYAG%3m$^q@;w&SeU*8I~T%*nB?6;L1{Pqil_lG3qh@z+#_dcg|fcsM6$6G|s%H?cj zn=fwK{O8B^e#R*mx@C%c8ZP}@h~my8B)}O%u7=_sA0s2qiL{mi{nAFID=@LuqI5;G zW|u(#i_dCSoCc5;ufoFWP5|%KoJ6tM<1s+5~kF zXTw&Rq27r>lM!p?!cgYHxB2W(Tk9JZq?;EnqvftqH6v)Hv;B6~{|Biq5uq?n))bVM z7~KLzpgch^5Yc3iR=S*6d6M5nQSbvg&9ksnx?H28a)oHKq?XL6Hb=&zvSj&yShKQ3 z;7TnsscKZ(Y4kyG@q@a}84KvsjFK3IaI;Vc<>nr+U--f6K3}pq3&~~?B2R`nSM{uY z1{ez9Pd>7JW&r?~?Soi0(gl5$2}910t4HH&!H`>p+}j!k;x?J< zL1F^Ei+poYgc>YOOV1M7I~5{t#OkkHN+lZzT0qYN^H7={FR6Fi3Gb$3#{i$lSS9JQ zUrUD?^jvJ@5=2^hONIJ@GZNGbxy!zZmGvM;9pu`;R>jn)J&zRCs8a)^MxEUaX=%$< zq^QrgCRd174s|~d(6SKKDZDMmNthb#x*28aRAJL)W$JK%l&K|D-~88-rLKD91HMVT zc)|FlDaUH&yNV~Fn>C?`=*ol|;i6==KCUgMRyqpg*0Wk8E^SX63LA|&v3d|+gGEhi zgaiT6;dk1nYwDYt*^O8j8AzbJ1TdPc7lom|n&; zOj4s1E78?W{Z-cGW5E(b#nLBOd=gyb^e74Ok{QFt)qJ|qsf60xfWKP)(O)TAO7q(e zzF7E|Zw`#fmc*!E1*4R;s_^VFA2+yb?}j6PxP9%;f*OzklB^iN%alonT#_P&K!z$X}Z+hLH(tYP2d9m<4pWrQj?dZ*Bo-e^*5h+-|vi-@Ur~Z!hMUDEtL>;mV^EbnW zqgUUVmp5g$AC#1-e2YXWsQmEj7-jA zz@As^Q8NwFXNNF9QoVpG2p`zcSli!pD>oNi!wl^HH`&Wiuh_VJ`OIwFZ@QCzG9wR& zA}YnHdoTUe{H|#j>MUCfFX>uzOn5CfM!`OzMJDORT15RaT!iMwJ0^Ou8SnUI!VCM| z;1CQgo`kx97Q)Ai8Tr9th(U1Ktt>~l9XZ17I>k&EUe+eFD9<5d0MA4|rDw(|oh$4{ z-QjG5^)}v)pw(=Gb_8o>TW`T(Na0ve+As*EFgtE>*lsc13PY>#O`x7P+^%O1D(!!U z9!A3!`yL&TTCsK^M>3*Fp=d}SQ4mG5nEMC)KWM@T89w_V>+|B{B}RN3x(ozFs0-E# z!QxyeoE8dxfm*}fSF`uMI{5WXrDAuOUkTEGg>!(I!V2vsZ)&t~Qu4LGyUFVYcdHL7 zqWBdv|1G11pD3=djf?Ic3PdXaxwE1r%=-jiU|%8hxxT{BmKEM9?0OA~-aA*O{e`#B z70&a=zsrq{L7jjvt$1t{^nX%GWJ5xg3!NU1XN{Xv1b%Cw5c7{G%1aA=$>R!VCPkZB z2(-WIm3asEWv;jIi^9>xk$undz3&!YW;x$lU`x&$ce2i3FJ-Nisb{SzErZHNPcj#U z<+GubMp+=e&X=1FL8K~)C}Bkspq0-ru}7)bzJ!{meazMiVc>;|)&vVu%cm`wb1;aJ z10`C*3bDe57DeR;1QsCU3+v_ZCD04Vml_%tHqqhC*z+bcq&e}rn9%Dk4V7--|G~t_ zTJuYQV}+0sT_p@ILIvGRLrrMUMz`u#yqjkn-va`Y@OMx3ucX$ zvwkC?j7esJDpdS$c=Ri~L@qj-KL^M2DevbS&29pn6& z7>cB#E8rMGteb%_;j)mSYl{f6Rb$uwtA}J}yyML8zxk95_y5c~ zOUx?$##1uCnm@J#EKiT|W&RNB2QDf~(|#)G}!0B-4am29H^eoVBzJt`rAtZawiT&4*buDr+Ci0izmU zx<+}B>i?gHF6Muqzhj8Y2`Bg{RD5d;*-}=`L-mGq86p3LS0v$El=QXG5Ocdg|5agM_NZM3?#$C=o#_s{NN|x;x-50+tyCFFE z@3L2xOJu%J^cW#JX|q`Z_;>F!p5`7g9Ye)(u_5QiJ&?CERWq%`mc+kU$$UHXv(U03 z=WlfaFbe1(=Kl?v9ojFNK`Q z&x8Oy*offt*~Yd*UyT=*L=#K5usw6!_y~TU`wZo%N8)*B#ns&LY}r{2!ehBInr4C> zaII9Z#UNC$IJ+47Oc82On8<6Yr{-w=@xDaQ_@1eN?DL)EEHmhDQw*q!C+A7a>kMOzgz{C*n&k>!F_{FEV`WoF9fxKDb0k z&x@6rX|jp^6hJWIPQw4{k95a7hWDV%Pht->u;EC^GNKeaYaRnL4^nFUAX*S>6|AJS z3PRFbOX96c$~Z*00a!%M8=RGO)Ox0ymLeits8r!g&b1y=-I-6wu0;f4{UiG~cqM1~ zNf)3Xl2Q`Q^unmzclU4b$!f((ml&`_Gg$OngyE^jW0D$_ChnfK^M*lsPYE#FTgdVo z@Vuvuj~EZY?rzxq4g+-CrtSU!xJlUJLuHRqlclb*2}q)>3eOh9<5tD!ajOW_T#;m< zNEOYjRpN<_F4W*er8+kA!1}Yyng}@&EMzF|8gM+*mn7ypv!71)Huc=HZ(TrkdrsR$ z)oG2ia<6cur#VSNLDFl9wDqNWCiboi0Y=02)|t3u^DCpOk*>9&&CddjRq^R z24U1A!M_X8b}r0j0>c&fAebb>&)<}IM(jyEAU&eq6JeXR9*HDAhywPA5AN@Ycdp*I z(dKd7uLxy=B86MH>1FIa5Ln%B!wrJ>GWz~~D1t&QZC_q!jTCpZP~jEF*0Z;8u6A(8 z`1_1mX!YU#G_!M!>yl0ueq-8+xI>|TPH*bJ6%`b*H}zu6jz9d-H@@+sKja_U@r{Rm z_|R#Ck>f9Y-@G4jl>`M@KWbBYTiM~$R}UyP&E`RggP4uzAHo}4wuW7mq8=e(*-Ef= z?5H={6|EdEt59myw$zA ze=M=ME0yT(i>A7|HY~veWn0&VE~H(scf+Ok#2=ad((t>66ZmIx2k^5^_x0a-5IbGl zXFB&JzjWEqZFiCM%GZ!><^5(uJuDih%!_iYIOSM|_yPg{T#wGN@jRSBgC$V6kr9h(mcMeguw%wjvzyAQenoy@} z)*U@gVdahXd>|O>zmr}sQME?Y@eEqYKKSe<;DgUP?YWzF-itq@wTx2hqP*kx={vs$ zMTz#~^jBe6E(jNe?gWkQ0_Mg>d5M*+nWnDUe@h6yi`)#ql9gECPssraA|ZT--qnDE z6V3HV7@8mf zHNmNiK}mHFr@WT&5C*-)GM--(7e%?mzqkLd-WiNU2Xo))^AEe7zQjn!=+`hl?3v*F zBU6ei(y5fny!71vwQ(k!Z9KH^rEyyYZwyUD+>-p>dx~O@hpJ7otG{qQ<`a0d?IhVO zSqrbfC2?ckA3vm&@gmq6NA`|B;IKJ^LUI-EcaIHp^WYv+{UhzezVU6{V|-W4m+2~L z^~P?fiu(7B_2m*^D&qrUNWHjeC=Bnt6obtH#a3cmd_TANBwQ6=DHT>898}5!f><38 zg@reaaHmq3e-7B6YsdCRt#}dk_Y;0QQhZ%<4 z@)aBK=koi_hB}<)17E|=E~TCApq+i1RoAv*TkcC{w<+3MY{x--bv#KOGxTS$-KiC? zeFGnC!_}8_mG7l3wbuTmZ*2UtpTnU;NkPq3`w!FGJ@$M}aPew35QwqndhF9uh+s@d zZ+!`xx@FLzLUPxZdEBss*m*dDCBBP2pq)is&G?p6GI2fp+6U`XA5%suAJ zggdy(Hol@%!CD7*qyF+p`$(hi$w^G5dm zflmPqPpKTq`257mS$O{vH|XB}ufB4=q*Xz1I`o;*2UQz?1N3YAVml`XTZg48qs|6%Uo6t-TxU>J=!1Xm7ZOY(n|3~T@o#P%}yH- z{SDJu%{BlY{6@V6UYEvw(`X_O+1LQrnMmeLjr5gC!dC`X0`}vg2KWPVeA*B;roR!P zn9JV61Q8*oJzc)Ig9e5T+6`0-?trqkRtvH1oYRXkFa>M>e|y&+71eRZzq$AB-RrV0 zu&%qj7Is+?5OLXsbrmE$gcVT{RwYOjQ4!F94-|Y>jnPC+Ffqi$V+#CWWY#@Y(~&E3UgJjwt4!`(Cc&CJfsojc!m=YBKuJ-AbH z%u|kJxHHXTqt(S5ryq6Y#)SrPAa3Ud6H@Kaud%}>CALoZJjTfbX7e!%f`p*g0Jo@$ zWwo#**0R=des^uXBT8?#C=Q1Zzi#@+Nvz$%V*0iTY>_3luiLbBQR8G&nviK1teH_m zQa9x9xty>emfdig+$D)IZqp?uTaajS#(r>iZOST8 z&Y@1cgopl<&lLhC3mzp_vllY@KVd1JD^81-GKTReeny zF4gy~dtSx18*~tKbfZ*$^bvjS>?Myp&flLw87KNZ+K8Dd?v1J}XttCx8d4!9ytBBc z+fndxz|~gxoB*$jeBFt)Al^^I^I?$J4bs5Gfiro=S0SLB&=duEQk>y~gkaqSrZQo+ z!t7<--j@Zh&|8+Babz%HnE{tTgE@HuZx41Cw9EmEXt*feo@yEN#sOO!S~)pImW)Dl z3`_&IBn=hd5mm4x>MQ5lA!nYD3&$stl=Rr^FklKZsNPt;6z!N*X>f>sYo0Ye&w?$~ z=;Pxp$_*U~a_^WHt&Rp*1vE;@@cYREbt*$>bO)>OuEcCsrK)lUU3gK>0sU6-6;mx&+sHG~K6{^>U%nTA0zhr+Ig7 zLW(iHDf1k7ku9x(f>fPi@nm2-KL4SY1?;&CdXFr5EcTLZkHi|y*~LaVYD4X;>R1JD zDP{ChcF-e&|54?U|(mJIr+uGYSnm*rq%-^G2W%L)ug z^NRCp`AbExr1aG;8!O3z2YeKt(_HYkGDh<$O{YfiKRva4M+N7DoPE(30xz(-G6YyM zBfn=Ff7Oh1Vjhzq{hZ<{<5S*zOnD&>y-l3IfjReJDG)Wo9ViVMn5cILlYy&d;Hnf% zP0&)M&Ka*bvnQ(>)5*r573d&%-2tM?#|CSmD<2$Hgi`aP1K?xgjH+QBm^|bhbZB{xJV_uHQ^-`zY3U12gF8tSo1X1iKnPs1OGd6 z996S5R3SV=`-F$#3$>KGHM?jhq)Q(Y*HA5cfwrLRWbp#|5PA?Q5T+yWyk!Ut2qoeX z@&i`FYS>*}j z(fo;$G%rxO&_jPlpZ&rcR4jfC0d8miMWGk>GnKNDjuPuB8*Mnn2672I$svABUde+s zn~l=gzxz|9VU#4qkX>F64SX9ViC3|tm2o1fP=Rog(uD`fCv>8ZrIaTAhv4vlL@ARD z;(3Y|Ct!&t&>5+eeGd46gnI~&{XVga=E-&F<1Ts^eY(NRpg*nXn+N&Tz>ib-mJ0Cy zPCoX?D-ceQQLLhQJWpsOBZ7pyE8<)Im-tvC{yy>=gtI97EmebWZU_el(teD&_4|Uh zs=t%t0XT5q9#kA~Je;Ev#Jw^YaNxklad2k<9epZ)MJ>QX*6jg!utQZYRhmVq>X`F! zzawb!KtI3($HDDEi0QwAu}=rQfN&0N)By)}j)OY`uD@ITA9&!n7zn_FQF4;Zp)!%y z%Gnq{^a*2Cf?ySQ@n;9Cl`s_M*fD2Ftco+!MS*noF&_Up-6JaOD zf14!He&D%V?4>S@_cEmo>pIlc>L^V4@e<&EMrXxl%hu8_-@;hAVz$m2z^Bd(dfJt?qKf4p;)M)Snt$K6vxs&kROG zond#RIjTB3Ir^fpV~B3ZCDXB?Ys_`#Pb@Vt<6@4*ei3&lUWz}MFw&~G1`=l_UP@YO zE3+Hz?<5x{?@fNok>DtItZ^J1Ry*uUO4)FE_{P*>X$fi9)7Pb68}W9=sFCHFw#>Fs z=25-QhAb)TQCG3+nEQ$Bn(WItn>~6@v8QLW4c`{8?EP>|{n%AwyK`%DpUkVv`*K|3 zxbkr=`AhS=^S`)fN5RN~eFdiq@4p;J_6Czv^cY zwPBsiBpl$t0uD$-jWaSJ6^aXp9}UMvT1vg)xI~F;OgOF~8>wijAaas|q)Mrx8;dpWMiQ@p(r)V&`q zhGGN#`EFnR=vOPsEXE$D58ow-tx#bbde3|2#(qN)K#dWuUeV^%tTp4^1fP zL#zq+7wUhgwhQfKQZ@p=2N(3?f4Du~n`&IYO&v$xD;w(YTD&(L-r1YX+j_%mb5Gav z)N$u`WDD1vqTZnm)~+}fcrL#;H@>;#foyIray)8IsE1*Gpzlkx^nITTpgVzypau!_ zD8mz!LJ)YM2-t8K3>u4sPFFN+0SqA%&Kk`)t&PFSd>qA70$CxOlZ0#8VN1gSy{{DL zQl$dV>Chg`z^s*tdv&V!>c*($pkJfO3+V#h%RES3!w(SD|(?ernEySkvKt)))dic`~1m_psqQMyXs&^7ps{}~;p-{E0 zl>K{*d@r4#cVX@C5A+UQz}US{@6jLW=b(wpw3ANLDd=`L~L zi(q;-80LN>Srm(AMmB_**idGs9(sk2&@bpWbeLYH-_pbMQ)Zzz=uH;GV(C#9$KqK6 zv$90Fsb%%jW|y{o@xrXEtdbBc$_m49y4W2`7iWjzSPtE&5Qb`fq}6hOYB|81@c*7L z936(76g2=c>lp__+?34L{#jX%lVE8 zzVQa@;ncH}peRClIKpqSL@ z)X)R~C{Fm+eCG$S{je;?xA-Q%xuNg)=Ql_Z{z5QV*t&Rpa|hq!yME^?Ir!iwwXrw; z)|Kge=NAdzU#lnSOh#4ZeNh-)J(+&na>@HTr(%>XYvn;y?I+EB`lV|2z9ryhXF$ zZNRJuF!=v!njnvLV*?WdgB>s0D24Iu`B zrP1#aa~cPl9uyIj5|k5^6qFUz6O<~{HGm^Zw#477`S}HzJp{Y>JHQav7)gaUI4B?} zBnVEWn@oq7M1gnztL}^Ni~s&>=j;7z%m3@c_hn}_I2iGfclFI+CHN9?nP20v;52aU zBe+eko-eQ?8N6?71h6tR22Pss2OSU`5SkjB8=M@S9iASqFQ6cyA)+FqBcvpyC8j2) zC#Wc?DXJ=~E37Q7Ev_!V-S=l~b!c(w@4)=T`pELkR{z}i+VIl!=HSBQ#^}l{|4#-= z4pJ5x9%3dS7daapA5mgq%dcYV`TO6|7<76aCTmfu)arGbZEhc7vf6C+n?1HqwY=Wg zQA$e8*D3UrV}3em!+-da3o`HM6*~J3GBN&;P@13LHFGb2ekd*ulkOet!gCuV89F zm;u57Zh+MHN-_eB0z3gl-_K2eKOhj`22ch>1BL*LKfc$k$GWa!r<}GR(k472Sm4m= zPtJ9;rp$y9@4_F@LrbwnCfuQiP?qdYiP4TAgaUyg@auKh1%)LN*$_mS55URNSCA(_kLIl#7N>wUjdtZ(-%*+tgSu%z_TV^zk4sXG}rT3*g6)n5w{Ul z0JMmZnCeRy&TKag#DUV=tUyY@;cdKsE>!c?st8Ydiz@=78kCpc#@~OFQJrePXQGAN z?W?RR=BcLN^k#ZS!SV=T2L+A$vuEEvr2=1hXlhw35Wt1K*uB1rTFxS>yD<40DHeJg zwEkPV4kc%w@R*7~KJ_A1?Bqb}VBBE_y# zhfVs`siCjDeB0)unVi``^4|GWCvYHNX%j^C_xvAS173T!%!%d>(f<)Zk9Ru>MD{U-l9CT;{g2fa0AMe*Y8 zGl@mB{k`2Wx-MxJrs^z|P9Aq{7fr0hHd+tyJ0}8ktQo1vIjVfB6f99ZQZRjnrZ&yG z`CV*00k>X|>VP^fH-UeV1`XQ`3YoXx<(hYw=9{yq34eN>KdR}a)VVuE{(GB0N|2^# z)9i`cM)U)!Y;T(~y`T9FcW4Z#Y1czouwZuE-t(PAd7sxIVSSFL2lKBkjSk1h zso>48{I7y9|6aQ~TT!9hoFB^XD${n48~W92M1uszX{)N2r^3ThtO}BKL*pXq=onS# z)Zo;??f8!FMTJVCDv*jx6_0RIrB-C%)};z9>NetL3d~nRe~hg-1d|Q^ z;<%5}NcB;;ly>sG^GcHPM%uANOw>aicPN^3w*u7?byF@tdjYenf|gfv^@3rND!sns zD6oda=7g^$l}WN8uc^&hDW?!cmYitgT0kmmaPNqs@!|TbHHnRC?MN~7z5cu|JzTXz za!qpZWIs+`f1P+1>6DYj0r9ICYywYS=;r%!pL0{z_ik~e4xS)%D~}Cc{3t|YE}_)1 zZnNYd1eBtk^t|cGV3h{F7po`~rWk@q*P$hbvuHzFBu!hxXC$%+zA8vca;$2`V@XyC zN<2*o0&;R&@(b@F;TdH|Dd^BTRun<3$t1a;p%+aUxz}lsQpqrS=`MV}4E3e6b}&`PV1kP#q_$)&}(uP>$kH5%rn+-55m-Rn8zu&BwG<`x@0-QO$p4v=ZPm2+9j4JdyT zLW6+;qPjl_P{`RYG{O;O!f-@c-~tiCULRcTG|u-RZfmSprZ0i?jgz&%<8<9*vFSR+ z>iA&_IErYNXZx)eF8%g-mVRk-|H|?m+g^2?1PK^@WnBp@tgTv$f1SnjUa<{H7TWY0 zvtNux99UD$bx6^iHb6`0RcT&_UX3NRq25%zs#J*vt6&NdQme;L&%httu&RW@fG&em zB+d+g<^4=pirdYlKxUz3j_wFkKx|UOX`Vu&q3Emvi})H3uneu@y%FyNf)SZ*nflAC z=jE0N^5--I>l4h_a2YlfTa>N>lNWJjM<*rg`;HQ7Nq~fs%X~e`G>rSYJ51&RF za+2=p@0;a#f31X-Wt`-o^joTuWd#bA)zqY_x=e_K#gJTo#dt9i@HJR#P;^XPI6h7g zQPGKl6AnFW$Y3Vglxwu|{34Kd4adhcbLUu}Nf7TXi@y?#QU&eZQE7p3=rT8V9JHp%C& ze%;Ey@AKvZ2r)uWsqI0cKC~$cOnn$Hz**!uK z_IiHR-O;SOADr`%k8uCSY8#J!Wb392E^woYex&Q}fka?+82zx3gm6SY|jHintwK1U!LNXE9Dn6hm9!>hHsIAhqiw`zG0qxC3KZ$SKL8 zcybS_d@h&Q6@1@%B0e+jL7xa~FFAV@_E4DIN3!I4%BO}}bXqeUL5FIha^%^%%}W5r z62a%w>*g0 z403+E8ojm#GWzCP^1hMW!;%(kciB9Q<~h)HAL)25y<~^-F5G6Iyb!#iuQH+x$YIk; z#Sc(4%!0DX)6qS53!(8%mfi+R73^L2%S@t+3B(j2+^nGcdH5N5$=fOndjajfZmxUL z^^fs9QFd35JbyfN*L%bD(P8+HH{cyN7I&fPf#pANc*(xgjor)bN(Xgw+WR**GaMmn z{mh9J)t=qx&H>TB>4BSa^WWNXoVx-poA;A74&QBZCqZ89@b&Nz+svYnmB8=G6j2jU;oGkQR4hxA5mgZ-GSQn3agLX8$Jz+8CRsd#>8H2q# z{krUMXeym|LsV?4s+*VTRJN^(dgCDQCiOMJ+Ud}bCnCDkBXQUvfq-FG;g7r_5t`^v z{dP$!p_F5pR_zOM2Ti8D6E7&~Mqn|f3}Kuc4h(ehwTKJJkqj!n_mW1luv*{4dJZiz ze*P~MupnMVxO=FFWFP0wrY#$`aAKI-@fiyl5G_ceJQmb@A(6u#rx8!gT(mq4t&ple zP_(A~f?+VbUA8(p1$u_G0bPP?A6OTDTDyK{Mo<}v0(DFzX2d)7aF|%Mh9_&TW*qDc zJ?7df!)Vm6zD)2(;$co7%*M>}C9LRg4ly#*nF1^+S$(~eG+rW8dvs&b#h}j!(kT7r zm^|-4*2H=UG?K`COe&H=P&D*0B`M5E&Y-;R=*R>t?j4W&2;kS0y#UHaRLO?Ol#E|* z6m{?5_{e(5Xggr=*Yn*t4(^0pVy*GTL_bJPzN#lZ{Vl0(`8l;{5fQKPvuP0PXw${Q zcCYO^oCM$F=k@wjiNN)UREVlDh0*r7NU1k1PdL2^iDJ#j`KpF087491LtEOUrFrF8I_qVXx7e~W34%o^q zpZkR^BdL(woP`&75r7Ff2S71;5hFo6;xV`s5B_lshhj;Bem|HX7_8Hu2x*iagNsFbvj>Pbp zt*M`B!R;(nd0G(d#5b^0-ICKYY3L~=%iOdeUzLpu{UXhPZ_x;NVuo$hvQ{VYOm#d? zK!?gAf~{!Hyh@^MB8OU}@jO2&()+l3{|v^T zS?^{kPeOa16Po+&-_ zSVVn!S()v=8SjDAp8#>T^S?joKmTBkZ?sZbet+&$KU}*}v2wmHo6Za_ zm&b=I9vcWHZ>c#gqFMOc3PlE17ffo3de9DU^W>LcEV@d|;+27C3XBQz zALljr5kw=TwVbAZvgZ+XVYT(Bt3&Ca%$HB~d|<;1XULdSXWmz^5^&&S7~!|3x*0=e z_U=YtvN#f9EMBJYrl15-J%po3M>VfXXl+!w+=1Fxvj&K6L-$Fjqx!z_6b4|%lc1T+dpwI@{DSM zbBh~|KQn@Q4GW62@M<{`0vkVY>Vby|d4B(N2SglQZOEgVXwbXEy~T2xg_>6Yn8 zGLH^q(-p_6MVTG8Le`6!AeQOPzXHHfGE4Rk;Yu|gf%4q^(tfGn!p{5=hS(x=JkB7w zQbpl&h(=bo!9j*dF}zhYb;D^V{e^v@_?!Vd@6v>`rf%Nf-drDT22$8Su%_PiA!4cGjJMAQx8VSWZrbceiRHb6<@)Ai z+EN^++S%X6z7){Zq{Zmp^l3uVP!dW}s;a`$HIbRifj&%sQP1y4)vrF27sTCUL{(8u z$73s$H49rwM15eYJDzS-`7X-g{HtEaK=c?|HNX z3bU#tV)0l$GJuKHLFCHk+c@-`>1>YN8$TMksX~d|%888kDRu0Feb^G~&I5*+Lf}A& zjDH|n7z$L?>%|vd2=%3EL)ZWz2;8=+!&M+8K>T$d85~L1HCzxKh8nZ2T5VSK%=9`E z_MoYY!zbP0r;s`$7m{GTPUu)-z4oGtM)W>sHBpqpA&>2QeeM2j z)kn;EQ^tHQ&`JrwRx@Ao*oGYbHQ98s?2}xfgJ%I zpJ$e`3)@~#l@wdP_n*3*geSjpCB+HsXXI>kQ0=ofcsoC^s@M>!8Mh0s^ZX9iP+bi}DA1euH@y}yci1T)PRg}>sjxIN))9RE$s4tw`w3=Y5;#!uFs z$%6A_2Ii;MiTD5POgp2&rb|?7zf{Y0rNgMOPM}VA(NNFsyHEPO%d)_>lZ-1Z)S8Za zy%dygj(2QUJLek0<_i zczO9eDdf*5g}ULxgR>vYo_FdqMb3BPixs8UULM!xF$}dmcLT-SIg!7brRsV=@SZwH zYu`cfQ6~H5-VIW7iWwg*g46I&YjfN_#?PGA#yYch zY?yoI7Lu9zBY##)tJDj;M+mamFl}2yVOW4;qLdm!pyNKik_XisQ3AollE#19Tl}B! z#?@x2_K0wWX58c{kl-&POS3T#d%dyG)fx-!By*c6@5l3r4dL4vPcKqlu+JG;p(>Kb zM=uQ2z(4%>okEO6p}d03D-m6DO89-kf^JEYr~W_rrcNh#UbInRIpzG6n$OTA1gZ*` zcUnNy_>7rQBHo)z`^xdZ^{#laR6n!d=DL%BpK^afLh51mXhGMWd2=EwJ;}-P_(<<+ z5+H|?MQ6+=W7By{6}qrYa-fxH`<{%OPnz9uy?=2diZ z{7KCQf~>l~I=c{gwJ8%+SgX!GSYjlBQpAmAo|Xt#ANTX!U?70>OPRn0x3WG~NCo-O zO&-{ZMd6>aC#PKa!`Ld!?_qbFh+C4#c+kb}Hyxy8T8o^I{ed7M$g)-T{6E8ep1xG> z#>IfBYI?tG#P`CG|KvG;vN8cj1uz!Ww?@oMFNN?(9W^XWGIL8j^qT@1@xU_S`yJ7m z0JxV1izMl7!I+mKj{T#~-LEk9nE5kIQ9mNxF>#S2b@2^FN^qylLlLJ&t6NGMX{Kb9t4keVLjKv9{jg9cC-{|WPl0pLHqqS{x1B)q_w~T$?kzu`5Qh?d zd7%62N-FYG#Y>}IZ#8x#WCZCiJs6(1bx)6=mW|Eo#K~fqb)bsJZkqH1jIK`m9LZ3> z+!09O7%`Hc$@a+LM7?@D!g9E)8dH@#n40XlD`7-QIOeYlrMauQbH@ULNF!g?96B^j z-}d~%%#EbY{rRN8>-Xwm3+M*v&8*z{%Ot(twJ&eb@Q0wUr^o5nm!auOfk$qz{EtK0 z8gUQ4@vXdT6aL-3yJ01w1lzv7aIVnY76_Uqv+XuJIZ|%rP@_|;FS}hc4N5)RktN>+ zBwi7Jhrwms%nq-2*eweii#+^M_)ahtcK_mSjcTQQgXSTw=Fi;*+6z(x+rRLyw+Q{S ztMJq>H-6Z{p-%DrSb%d4xCt^h6QMK7YSFe=An9)Uj(UF~2N-=QPs&H(A|VJf!|Zlp z+Z>HU;O0zrUEYXDF)3HQy`Rln;>%n7)#f=95n)>PEqiB}gcO?re{AL2s4qlN(XGe~@dZ!}Xdk z??$Cc$3qqBE4Ur=p|EJFL#51kl*pljG}$_cTZd3f?w)f}z63Rau0u~VB!&@cg`7vS z9mP?cwvqp;F`PwR4()t{M2nQB*gKoic0PtY)6RbDZ7PnO8NIUBUX3h<>|scq-?R6s z-_Ln8VS52B&z9))Xacp3TDCE067_X+9SD|GY5#6K4nqVPxsQ!= zFaSCR7^Z}UH;aX1$8H&W8=|;_(=c`NLo4(Hk|gffZTK zHr(x?;n21c)$VzMDC;TeC9pJ)@%njf-eVU38@APIQM=X{$Mgru4` z=qx^eyXP5+`_!4)(Pn7!8$w%ij`Qay%PZ{g>$W^!(`DA`dhHBGOOvT9Lpe}Gdvm_B zRSrS)ag(Ksc|mnX99frMk;z5NhHs;dV1TeO>2zVk>?&TF?70E9{L7j&LIl~@M*ncE zOO~ zq<2Nlmd?N>(I5zlj${#0mz523*h^>$6qlQdo?$rS_JCNdS6%Z$jq?P@pr6e#TH*Sscvh%44YZfweM z#q1*+?>G2D9Z(>8+^<}@ULhFqIsB~7Rnn-XQxiTgY$R+{ zbc&j8(j0_+tfj|1HXa>2^Vg}gZ|3v?1s4J|SO>DM6c6jW!;JM@G>g?cw6`|Js-UXq}{vRv}$44s0j^8#O8=Zw}fu#SXjS%gmH5m1S!(WY`+lwz<6`4(;zsSv3Mdb zU}emeoTf`h2iH#41;Wl8`TN?)=g45!YX!nRP-i7Ju(G8Fpp1Ldq-IZZ%8v6ZF}oe# zt{tQCtgvOH);xDN6{&o-&0Xd7uNFZvb-I;P>1wQJU{li|(Cepq@oBB;F1f}a|4_Lp zP|adZY1f9p_XO^3g-Mew?;?R?6eu-!t6MrR9x1O@p+2Hgtl0dc`!$j!i5E%I8HZ^! ze%slWu}lnZyDmN@TT%?9AuL%!-}#_dyy>mi&w)wFg6tDbHJdT>`RC<(HdQ2NbixCL z$abV`#+XPf6;}43`^>W}JY+mP2+XLexn8`!WRlz;ADu7EA>sop-Vc6 z$J*-Y2NywyR<6`{X+(dltWYglmh3UDAFYZB==!)P?b`zM-opFM)mF|f3%0|Sx&vJg z;pl5B?QGo8VYSW-tEjXb)jR^~H>Sgqc#5E-Xw;Z&IH0OU;e5UY=r9xitlu&hV zX$>eW$-#GU6>r)T#cGSfYeEDu>m`$gJrAXajdkss0m+cfj1$^1KUF=aq$H=MT}R)U zBeB~QJ~X9BbA6n&Not(i?oU+%gx;USmYo}rE4X0D4+dNibuhKXfwVz4i$k0~;kveD zzo=#{m3qAio)xM(6c)h-GIS=qp36?#9T_@weE$fT#0^&MTH@)8xnXd7SJ{-1|1 zaaD{Tqs0aTe29F(yDH=pzBF&u~*VdR(|*?eAVDM**$d zidv6_v8r9V;Qqm0xcd40^<3Z#jpq;2vfp6kE+FQwAMdagsL6553v}*v$-`IjYPm#R zR*Bp(L5Yw_n2`AdLtXNQ_~+z`hwpwHYgVGSD@T6p8zX8*wM1pYV7zi|rYsjDvK-x_ zRJjFSJC}uT60C5m{RmQ7Gm1TNIlHkH{gC_f+M;21b38i@>!4e?ZW{_Afo_>y;LoZ9 z$!s{ApxUU`H2c*(E$;^p~NdI1KHFU&QGcnK+^SM4)FS`$$k(2`q%2sSvdy56xUZH_(s|2=~sS>Jo z!JXhqPKC;T4UD=uA zlmf~u*^?{TLDGW-cv6y_CG>TEzuvocXMIl}z^R@vBYd&50V-Es5sMWkqMVu|Q>C6T(UYWQWv;*coQiivS4~nQVS=4dM#oj2J1Gqg@eWAv>yzZWS8F z5!e zZ#^i@yk0sKDUYMJ!p>7AXNy)}5Rljrb8B%B_dx?7d1IFzBmY1tYGBc#%i8 zJq$?3HGkB7*i`kr(M8AO>M8<{9{VJfXMPMCY!%FENH53E59s8FaPM6KW5*BZRA)TE zxXf*NVBZ`OK-6J84$I{yMY`H#F7=kV66qQ?PI*Bi0vkd|>lbd`T~JsY6hqbgvKc4F z+E0B}fU6^Rmp(0>8&rtoW{;PiYG)c!(l!@g-s}>(8z+6=Z-Q(UQ9OP$#FM9Rd)Gc% zH{cMMq9^X6hY>v76*M-blo!i~qCSo63D&nE%*=19h!J6S-I<)>#wcv|Y($%DEoD<3 zRUVgXviy*BlvI_RbUao^9I0%pRwXwvNExQjQDv2kDOb2oVMc$nytTD3krsI}B7s(e zEWi=vD6fsPFL~38o_H-=kGyu5J4!sWPLqg;KuKJJLkJ&`+>d*=aV14btH*F5z#_DY zYaUA?_5N5~GJc%!KA<^qlxWwqxM$k_0jMnxbjgqjo)(zg;LbP;2%(m~s&;s?1?y%! z+8p=-RbA9P@X*jA{VnaM94=xgu%#H(F@tHM-oml%))9OgiMWPsLi^OKkade&sFJ5OQ? z;%jkp%UG{u6Q>ZV+y3f`5)#50egb7dzGQX%;r1=c6T~yE$72R#&TK#{^#YfqsI`C9fQDxWmMUhl zI<`6e`}8Sr9`2xBVU$(NIEQ|iUg_7=*}eVeX+H+6!##3#788c8b$Ym%X+{qWF0sV4 zhHsy6)lF6(4q)rJnJ|XcMWB-uyJe(I?lo7e1pVqv<=~3qiF)yH?WGy5`x-D>3*v#cC2pq0gKh_pzR7s<9E)^Zh(l|e6|^1^P{ zoc^r-;Am5u@`u3MCm1r-l_0<2yJuyAIXI|cKJMD>vTWJ?e+bNoqXn~ zDjdy4o!OYFo}uA_c6re~c6OfaaYGxP)0GSMU71haPL!RmP(ZCk<|AT3x#-kNQN6$o z@!fYur9UF_=CMDfUj{?c@{W%63DA_ubF2c)KA-Eg7h3PKCLEJ& zJaT<`E=7@ZfT+=G+^w9Y3bqShca(0bq^cyY978!<88rG$7!)AhCaR7drA^kQD$U`q zgtH=E8ZB{8+RpsjlN|qI!145&9Usln|FX8qm;f)1J5h`8QY=pjXCrz)ti%73Q7LP; zSMFy47PV)4&F#1^Q4 zZKa;{tv>I_43QLH^FI_@t4VM`HvYYmnJ+GQYX37`gsc7pjFjJcri!4MZOH@tqHy6O z18CX*fh#WtabR0+o*@m0@erj&xuZ2Tm^S1~-!p%s36VIn`W?%T*ymI?lhk1n!#XgZ zTbl_GHZ&u)5ubHn<~)4Y=Pyt4xvBg;J2P&mdwK4+;dw2h>{EQ#;rwd5_>~?0IoWl0 zR0=y|>I0hE?;^*=|B`yQCaY2SdsZGE=|WN4RnpfyAH^=VfW!i9bs^se^JS(0tz)63 zd@?zW66t<*LST+=2I}?@ zdXW`-b*o3&F#OQ^Bm0nzqqKm?eI-)>BOWN6RuxL;uwjA~+;1HY3%25+e-(Be*#bL~ zO}Z35LQ!|7eE1_01WcR>4QlYK#tgzxzwGq2{S?$HF?b@6aJSp9`T{S*%49R2tkULJ+^*LBABQzX z5m-+vSXvZqxHiJIlhLd#rdc})d2hOx7U8zjeOeP{OH`)oDD{}WFHkK0A#G?5pxM8{ z_14U~NF{+#g&IaQ7h(1M?E8H@Fa2PAtEm_5VGx<`8EDc}6q0Ru02t-k4Ok%}u0iar z&yvTcL2BEp*D`O)eW>d4;L}z;ycmFKgBzMas)n{G@wfe@HY*lD=<;~a9aED~gW)TOX}Dd`^Vv$a00EFg|kcirG7-PztOI#%ig zscl5sTI=rh`p1&YOmz?!4Ata4j2ouT&(}kqwg7^p45$AG)7Si8{BRii9KPmfbrQr> zwC*)4#9~I#5tmWh(;n2$qEabydFjI6A+RLg2=RG#r0~LN#$R^Chx1pqopzJCzc=&z z|Hal|D5co`990}subSt1?k8}6Y~Yj8WNs>Cppx^#xKwFi9M8NwcraL3#I(0<8rpAi za5Su@p8e(Jn{sINj~H=8`$rG<62U`0Mb9Tuy3$%VE1&OdJL)8-R4RgHB|cUoXc;*< zs*eaSwmFKGpyE(wUA9+y{Y1G)KdP5j#-W*G5aU6u;%`xA5j@h@8Tz8~gl&r%%dqq# zpKq^c5gV8!%+oJNI?9nhkA8#VRIwL)5BXbcfee$MaJ(vmBk`Y;s2=0{&1-1GH5td8-_OJrU&mW#Fy+0u6`< zS>dZ(U^?a+8QNK)ESt1-G!ko(O1=Px;fdcv&!VYu9#V|DQbw)mTNAYn);uH~BGfDAMOPa6 zy>=2YZTK{B!6c&I(Be)W z2+^>&LNy^Ke*9h~Bl*1F%Tt4lNW4DPn$#5C?8VB9#gvuP@V?F&tn+W8stU|2%W$V> zuHAFtP@lp3F8W`Y54r3-@St|FTFJ_Y$93<6J+*>zc)TTCI-{Ngt^2z_f05z>g^w-< zIu=`vaaG02rJj$mtUK76`^u{V#CT@m*}F0WrIMS9d%k zgyr43boUO7e%ybeXO4vs17O>()c?d7?mCE*#h8oK0&+n;Z!d|)WO>z_%=ntfM1C*y z*ENuaI^rVX%H5%fGNo733(NeiiO7}MTQnzlelB;Z0v8h)Akkp;xB?`6Q#t*z(>@)8WW#3fMwrc$Yi-SJr~o|xY}C3ldcxgPJR`bn#nbto#IIPX{I zEbTQNhP_aZtV^D6T0+yt;s6m&=U z8_oV@hcy$cW0gDGs)!bRbfccqbtoLM_e&PP(gV(+?|G-rH6UT&Dl$QW*UwdAdSVu- zit?#;skrE5`NxDh-5lEU!)QpX(7ssNuR8#4yuVf)EiZ1vBCyStnq_^Tg6s=*Y|Hd)itT&`6sdqYQ2`Wr zG~wp;n(~x~=Ew{->%boF7e%8@j+H6)B&MDz9-Om*G-)kn*`O$25WIIZLUy@s0J^!N z1YMH{kqXb^U$#VRlhBuYOZjO;nBV5ZMc&|;pWW221G@&w}Do8f8$ zFC1Wv?a{lp!Wv;URTUz$HCqD{aBlCBj6pR0eMRFKH{)=sN3>Szhvoe7&8^iL$7AgS zqzitG^lAkD+%Zy0_l_%1uv7~Yw#_jAs?lyJVIn}3zB++e(S$77Q7MAzjhTYxEYKKT zAr_XS;>Vte&w>!U*^cG!-DY@%8)f6x}E}x0XAFeXwAkikriXekntl4zxu}UxeFiQClg-dQF4}K!No_* zC{_@5tPx^vUTYcr4wFm*|4t5Q_1i9a2GG|`t!(gI{jGLOZvIN{n!<+78WIX2|S@?H`~Vq7>{5`(E?RJB~pk$N*F&Q9uEGziL<= ze#`)!6XC3RzpLgX<*_zpmb^=JPIKJ3ZefvR+r5Txy@#se;?5x~1x(HxgmIvI&v-I` z3gYU%geDX3&tQTtY?iA%1ujJob3N1_v2MssKK_BJk!FN~F@4mgVdVAh>!~iov8Mkq zjD|h-!rXsx_zv!L73u={X?e;n88tl>RaXoCtmkzGX}4&WM^i-ke)E+zO;fSaE*sY~A#f3>e2l;n z+iB{a;+oPC7{|gCZbAOEO1E+w@aN0cpB8uT8fgO`w3&rNh^Mu6G5Rw~;L&FZYmG{$ zs`Vm~vJH2uQ+Uu?_w$NOqY@p|B=p*n`l*<%2ZTt&%la(fM}#YoQ#6&67v=pvFLT!$ z)sRd>VURXzrKG&f40P%vyxf}kjZnXh%dbt!Bx~FA7&U&ehG3fO)^>3_(MIi`h+=W} zQ5$^vo-cPUB!rsB0TNl6Jiia*j)m>8E!cT&EWdD99|7}k+AF*QzeD_6$x~Ou)IStH z^QqTDOC&Bql-kc2a~ROXaugfV+cQO~iRikocW!$|ypSlV(Xrt9$C5wY^UC3bVgno? zcUaR6j9bBt{{-9YoLhZ>k@`mCN_+B+U7o{ zD|pivp1alJ;a2lLkBA?z>5Fo9ae?OxCZFi@>6}Wh8K2YF5Ta9~b?+x#x-DB&J zA@7nmi}*CT<^@3siEHCrEsmjSqv2PkN8k2>?F;PFEaV(urZE9FQc>1zfA;Z>teoXGoc;4WooHG^z(`L>gc-m zP#48!&GuY1I=G_!?`QF5ML7)1VSKB?bLP)G2|rI8y=4)_LaV9+X2yOIerJU=6Ch-= z6AZ3YQxMsVjoGe$2f}Y=ai=ERSY^f*w_O`$<+jJ#ZP zCZiV3yY(}rs?a7IYft7SlGs|pSbH&wMz`M%_w8+x7f!}UKT%Bd0liuzSC~pd$nAO5 zZ=e#K<0jh!?8~$@_Y}irHoj!ha%6P-KgU=o8MI-5KNkpkAPYiSXGwl`rpAP9{3yOk zOoNb+8pi4XA{pT1@oOMENvCu4N%a8EeXQzlszcdZPt6oW+FhgXCVM3fjq*8~^r5S8 zzVE2sJpXR9DY0S#o=VzW>OH}Dy{nS)=SzrpRf)ipMhRA*->%485Jv)&gPEa`Ci%P~;`}AxijwEXxedloHX89mIsL#=0&H9PU*diJA-ZDJ|@2X$GBfYe)2b z=ZVoaZ_vVN77dBGhRdnd0qU_13E0?xLWb3uSU`-&>Qx;aRJhBM)dR+qIRth>{pC*| zrp9IyTAaN>X`d_(i-r`EFpb}HzDlv$NbH+ojN%S#>xpvYsrVlukFt5bt#0}$X3ZJM zIr)Sgyja5x;sZv^(0t|3vio9dP5s0p#&J#B;vpj=N-Pfae${7;$^Wj5HTB$m?}S!&cT@$o~d0J4!~Kt8BP{@}iRYK(wDh?HL# zDDIaoA|yG0waey^ne9Q_i5lfc0_B~{(k@| zK-Rxl`BH7|=w{xpTIFwqGp=77b{h1tWfWXp8W7l0%@4ue&htPz?QiG?+X!o?jpxnO z%2n=wf9ulReh+V1vW;Tt4?iiz;zKy@bOb|5y0m#L%{93^3qTkE(B*OCE`B!fhh2WO zIyfZz4XSwMGiW-Sw3`0xhhMmFQqMeOY1l*jkzK^V#>-#IWJx)#A35~%9k)Aw{r15( z&*H|R-9NhZc;QQFV(qQozGY&^M<>VToOecNGgR>rIV6>KW%6ND@m}|hhhLr!5yk57 zASBX^H7QrS?>Uv`zzy zhjc->Rd`Zpv@>0UP8;nUTiXL*{j*Hfg;ISIOh8!K$1}s-e1>o{sLm=jHuD+6&D+=v z;buNVxC_GZX18sWVBseX31)&<{S*16`u=7K6dc%IDYA<_Mhn+C$r80}ule6GY zd0rG1Thn-{Zrt*R;lcFMtp0~FdU>GDq(K*n+{}Ne)l>#@?{4Sk?#L+9(!2&AXk!;8 zcxi_1*Z?{>+KEeAwOJ+l_GhT1P(baeqf^i3EKw%;DbtIQcJ0in{OL@b1l6$u)k3kt zM0z4oRI(#c$PcIo4vf*Cw>4}_-VZA_81x%IL2lr_)TFO5(^0mVA zbT*d`>0v5`5K6{Ty7%axp1LDhjuPk!7-O9W{+yeSqU2MoLS9`=QdOfQy+SxoG7nifFL8*dHTKwmO zUAYo3ppq4!izFK#x7(MRzbwmKYV}@KfuED33Kzf0wo80??@|W&BQtS-S3aeP%3Cp? zHx4OOVps`d9R1wik7~Qu<_p84`9g$BEl8y06KMaYHd$%HSvpBc`GdwpTQyAl3f4$m z6v>OTgZ=qjALAKUQjUstNPWTzh;=u)Pf}z1pxJ)Et~|@L8=fu}(>#213L>3)kr8nA zq$V}S1fjNg`P}kKm8axAY+osB+O8@vODwQFtZjLcis5x>xxeJjAalrI_Q&`8coJO# zzioEcKgq`8r8R>HjSNxENUPmIgb&_tg|tYlJp1LD188;lXuxoj8ua zFx)OH9wK9sC54>a7QFo0sbfQ9wRto`r)T^6W(VCm&Lu*nSA{*S!y95g>lfJrB^r~= zSBs_kM)1{4?+mN6?O~(}v!?GJcDLBW#Bh7wzUd-+5xjIJ&R>85A z)oXw}EwwF{XL;G#uB+YPbhng6F}3f(l-Co*nYYT@!CHKJrT@qmO!eg9Gviw5cgHfN zLQnxhLFDcKctTf#8}rV4D#mS7VRx+e&L8j8uo4=NVLU<=#YZW|($H$6_4#n>@|R=b z$J0t!4eKfr<4J^X-doZv=U666bPrWzO_GwP($>_2T4Ymhdgx3s;m-NSt){hS#6KDB zf_$3)PDJ+T$2R;$d!-kJch%dN{ESue2M zpU-DxnE7b{lXmO!%*B#umXWW>o~5@0VyrlpT<(%3x>7{9CUbFP#18;=-)9k4JaT+I zg~Mz5`une|wgriyHYujuvyGHvl&F~GJ;@T%bnX4Z_HGp`3XWqeB8A^q$CXR;4)HU> zr-e6#Mhv;*CwD>?KUL)B*Z35>*P*#mseZS(_&n{oX6Dx0cme(dZ~Pu$JD7`&173EU z2R;sW>^*R`2Yf(hwpPC$L~=bJ=)3+VSiN4aZ(&_BSncM;$L<xH^#vN`OtzKBqgn0L-K%O-Wr|^>r#W3#W$C)g{-bQJrOILnu!NF3Eot)jQu)Jn1J`($MspbhWLogMG03D>tCg<) zme28xWmkVWDM~awvVtn(c}TElo|lLsQ5=5d6Qg@95*S;5vU;l0E*EBKgnALLarXZ6 zGbW`(4-T)Q3L4zD>ABp9?!!&;qo0@>F^EB|$?W*rDLXfzNg6MUqFrwt(qvgyn=~?Z z0;L}ES_;JllF37i3LY_y`_bg6rj@d5j*kAFhgL7FDYSvVkO1{Ial2QQY-afWFMjXD zVJE#QuNtaFa8<^m_oIo)Sy-FM5kfkAa4jJmr+!a}c%LvUyx?++g%O^c0wuIZ^m;QJ z9bnc}&D#^DdOv^`?i%L=<0d}qyAkXrRBUYIqY-wf99`UdB`mAtk zN4jsAmtvX?JK|2XEyEGm#4_M9*mBLozhntZM4uI18G`_2r+X~Ee*s`|$r6BNxO?v1 zwosgC>R3*e$1;i%e>SCf+BJD@e7g6a_4o#(8DL6oCOCVxnBLrO`mkRcDN*%HbC2aF zHPY7dk?}&;=6F~nD@-(T3Wd+=Mzaixq~kJ9eT;_bNGju;8Tj4Wd_*;Tnyjdxd^MOv zw0r3Azy0$Or!bL8#4$ohRAk7F+pRQ_c3y zLWNVFYx@1hf);Lz^KEhMkb$(g-9mTro^LD^c|VUE0~=QSL&1pt&&_zQa<+H$L(l#Q zHi>>?I%g!+e3(7;>t~@RQ^)w*cij7Z=hrU`Y*(A|)6p1}6&mcmwl;oSwX->*qVYqA zcc1+7{^|Yd2fqtVo)sqxX;UG7lB7iWycRp2!T7}geeMU&PoqSM{N~}!del%cqm0cG z{{H^w?|ba;XVeyuZ8w$b8^8g}EXnKh2wmW%9lUsNr$LHi zT=#20_iOa}DwMT{itH&IjR1c#Pap!Gw~CL9tzxt2ESX!i#&4WYh^4aoz?6p66zAjk zA@&fbRIT1u2FZ7`vHT7G^Fpyi-KtDO^2i@H9$toFllj!MG~T;ZaabY~OQ2fn>BfIl zjN$AI3~dOB-#v7&V#-!DT zEHhLox$*4kWSP79Rd@G8hnC10vtO29j(1aSI!5&H+<3vO5rxex4Ro|7Dw}AS1dyJM z6mrp#4H#!9a#~X}Zhi8B6!HTK`FV}g?*ltq$vAFTsS#r$ ztTIkD%1iCt#k%QTTqrN?lhW(GD7(3tqP!u#r93Ljar-TVgC4cv-1H zs8?g|V51+*v8}tf{7}f!()L$oTil}9L=s-E1pv@92Vb4!Z8l)9Zm*w>G)d`hJo?om z6FVqwQ~g+*>MaZ%HMb3fM<3r`F5sA~`&vB65DnZC_h+jU*nU+VgEEkAw|H%;6mWt*n0|NO3_NYH=g?1C4Gl6+C0r%r5v z3rND5nKNf*&dmFYT;zfDfaq1@)(n^FX~&0l9t#b%2fZTC4UM(OddKAEn5TbY>j_!H z6-I3P+ARVv88K&lejsHJh1@|oghQDPbgp6=PjFpK2Ktn2V0Ug>QO_n5d7GQ=R)I(n zBug9k3Vyv<(?a_{tB4hn)4571wSRFjz>Ugr(Dum^F}eNF=v5yB$=US&5*qT*K|ZI8 zw`(RvD}bRIUOW8sN(xPoAbSc0=ph*4q&>Z6K`?M60B5mcd_Pde$)f8e!GSY9RdtPVSL9OCrM7=w`~`?|4?0*JC!eXhOUY=1edSo=3m{T4Ky z%S&W8kC#cT`ORUD^T(}DPL++4fyJD(Yac*23C8YKhgyGz6tA4Jh-@Q=6^@GwxZGNF zJicoa&#NZ1Zrqy@I84HVFc%Z5FWujfG5Gw`+FCUL5Q3c8e`~qj; z^qvpl@-+J)dnY+n5=KT*RmMSSeXt<4@5pVWIMHNXm+Qq&r6#}qsus(@O;$n&+u+?f^wF>x_7Y3&y!exTh&v%gL^_^ky4%@!HB_jOMVkZ z5=Z_JVaO%=qwn&9gKS+a^V~o1^7qN71((c8yx~{T<^hpyFdE7XbRtQWeB5I9KkPm& zDk93_F^8XJtNaF*gEw%pa#e9sRLaod7pC*aB`+hbRw9xt#2xMc``iVpTAR#mfpSUT z2+c(H#&Vwr1#Q_ythFDSkokZ?S4kVx zek~fC13gW&%pKrv0g{^><3^d&AU@}`%gffjwZqSy?He4C5F!Ch)2k=!B!1*MwWlxb zmK19=kPfCuGy~7Dh2u`WM1n%Ik+{){v7xSk$vu;SNdGcxnJ|9aq5D(RdwdF) ziY9%rPQW7I1cWwyesENB`w(uNeB=G8M$S;_A^w>Y-1hiAedP*PqtULA%ZVZTG?Tng zv|A;9@v4!Xk9;wbUPOXVkp#0`Yjv3~$ej+^_;h1?O!RnozbtY39vVM5U^2y~YoY`VnpV^7(Q64 zH5l>MXE6r`2kXSBpCu1eM>HTz`%(9xNo5^K_0>a}~o zRHF}*wBrNLW_2!Jc277G^>Kbt;gTYklBLBa6Dm6tsSF5$RQ%C9*d}zJx;?q1)+G2X zXqdPD@8WZRXb$i)ho6v)M7UiCMB;>8$h{akv;=W*kRXct%$#y=$< zhja5pPVW>kn>1vZ4rVQrZH(ojoCW}rKA$a1*)0RK0tOA{aA#{U0%-qz~$bvT|}>wGss}y z-51|HHhAXe6`~jVt3}Sef2?(UPv?X8wt6LH-@8K-V@nI2B6g@E_DrAY*s#4}V3$*~ z8}$C=xA0c}M~s81(a`WHs65i>8!U;O*#wOgI<|b!3V_k+L=}SWXoakK%V`Sl=St+_ zB3$p~51Rm%Ia@~5khLeF(3h=Ez!bCA@|4ohvGgv%Itt=Q0h)-0Qi;+xJ91*V-*1^M9c5JAw@>*?)*{o${8i+ZliB3E5NhkeEkiU0)o{yxVeY zXRDW2`F(GvevmFK#dgUD;!D4o?%UxO+yTzDqc{C_`qa;SoTTl+IQkhk$&N8$V56#t z6)YOws-I%#QM}bfw9~&<+kmwcbsAtZ0Ol+Lz|+8!!dA=zWmo|6*jr2e7hG7fYEIOk z;pk;nqRI$IJ0;M9@=~aQ)!=#?aGZZ~-_}3IQ6ZuPT~%KBL^Wr3NeUJp+q3%|e^<1x zvU^hGJfcOy{P91Z@Nh0(;YIvM9&&2(54||a#U167LmmzrWLjH!tccNZb{}IRmeQ+b zUIjr%`gYFcJ0YpXxY!q0SbLgetn27h~mY*SRkO)eAX2oWCyq-Of&I(>-CJV zlb_Bj@C6+jNFS8i0kAJfUN=$`UrxVqMx3U8FGIfExyA8BnpStbA@WtzaG`aM@n>kS zNT-@t%a_inJJ@K{MYe&FEp^FI$|b1o(rrzjU?X6qb|4!xIHZA;#s+u3>rmhgF}^`i zN$4nYcVTIPUw&FH;zG4k|J`u|;HG*EV znPkpkfcX}R^G8ynArncBhTxOE0E7V?B}2XRW{}BEtRP47vODg9;B~1r#{%$3*kRRf zY-#%@IU?$4j0p~uP5PV2fs$7JGc8C&n9z_$1nNqXT!9=Vfgo?xdMI2atk%@*h2jhV zklxqk`@Qw;aWiL@e&IzD4**Gu8P%v;d=ujzpvdM&V}VFamU{aq`UXc|zE!CZkfp-S z8@WjF>HgKD_l=(%8BF(e_igrj5;d`<7ticn=WFMC)qNu!ck$_CE#CU#Waew(?T4#L zV#+xNMo?v{m z>-dj4>HDooHF(i{68#1a&3E}yTBbi_@b7cHz-|mUYU4w@v4rfB4 z%;AYcL%Uww(RXz4FTZm9wO5Zlh?L(M{oMH2u7M+yM_cPdZAT}M4DBJmVb$+U9BB=O zT94pw6o2&kYsmLEbe~_oaQP!HV|bi-fO&{{OrIFIGnpGAMtF~QftL3+{7y2N%oz>S zc|%PQuv~U+y~Ah*j-A{tBOuQee)IG2AlG_=eC{`m(>X^9V)$>wvK!9l)(F%2H5+L6 zdJnPSaC0I-UXGX|`3>}jX~TB11HO>RJxnCKW`k9I#wf~T4?RewxOIqF^Tteemo@j5 z2Q&0KIGw6XlcUlI$35g_#4V86o!*2}Udcmx<`0o(D1I2CbsZHGDsm^gCwT6 zAg!=vO~a^6BbMT>dF$^(9A`1PR#bbCf<_b;tN$B3FRScMlKwqs7pbcKVQOFrd8Rd0EOPTr*;w+DrbZ+az}55@+ZKG9Vy z{-jXxOnnlcZFLa z!7dC{xKQU2G&E&L{70p%6b5V3%94N4`$vu(iL&Cw4>`DI<+Ywrs9ORfO)F)b&4#NiP zvv!(9wlbJZXO^wex?5=1m`b9_XN?xIre(!#dRd48j26wWLGvL%1KFz#dSb}X!~|em zIG0ny8zG;u@ir%;lQ_*lQEG73+fmJ{(F41hYr+Xm6mj3O{(CJ|-k2xGojv4p7T^7= z&3_d4OAf^$IN82idv@)8}Z6KSDh|avrDS zoM6TSXmYvQ*xI-v)X9JF{(Ymn-YUKdE=~|^V!2@uO}36cj(p#K8-3+x#edyd+&?}U zRt&tgW9+Fj{oOsQcW!&=HaE)=nWxxy@k#CtqCE@K%0L^uoP;pSN~Z(#R|uGa(D{Nv zqJfq{0c{q{^e2d|7-&P#FrsVqUsJssdwVycz{*X1eVaHx{Gk7z(Yd>R!YhWS7=ckq zl=`B^XquCFeR!GWrwgqK0a_zl`RQ{(ffb0$T}&T1bs(ap^gEd}YEhE{VAZ)835R0T zL6eVwQ4r@{sMg}Z8U4paaFj#eaDdIYWZtbNzcj zmav0=4gKvium1hRc0n=OUq?vNV!Rle#!9iL3>3I>>9nN-l-~{61GsJOK1I#h}+78*PEw#Yx)uZO!@o zP(d(O0A{?|Ss7k3%a%rOZFz^wSf}-5I=z_Wb7>dsP)hk!f{<@Vko?8I-rq6i^(ex9 zA{y;#pBVDk6Y^xT-OLGwzK+)ZU7FCYhQ)>E)vx@zJTXnKbf; z2755E2h_FPTbp)GDP`U&xTj;f@e}MWhG!(;-bIMfMjJ?qQ6>Q;8Q4{>4BQSjnnXzt zx>1r%*#a#2#TMv5ogIJsw;c||v^;RE4ZVX-6*uDIz33sdm!#1rw7lj7+G7ye3ygt8 z*?GY9DIgkskk@c9G8}k5p3;M{H2TPMa39mj0noKkryBBG1J)DVzN74}2QKYL7w7X7 zF`tf#h~b!y%kS_m!?#IZVrAAacQPO99K>dgF~zF;>cW77?$N{wa`F#w)49woBtGc4 zl|JlXrwf5fc$vK;nG0|lUM)zG0(nE7ABKscIdw3RUrzhumiLmtpnN%O|GP|Dv&9)qXz6D%WI{>z|+885kvIdO*cIGmrXU6aOG;~eP0qV z6PsvN3#L_F2`@|Y_Yet?sr|Z0gb_jH37SJg(Se@BThVjHRhJ$quDSyq!nNqPi(kC- zgRi;MUU!lN4$kngr@arJd)+R-6o>|-^6@^ktoTmIzD-6Z<>ha=k(-zI9o{h#4B^*M z2E9=1DZW~Kt+)ccfcr1KQ{0b^;4nJ!>nFVmj*Q^oNSL#!3JZmd2X;Qu!`X||@c`xo z(V=pjj7|q%9f*@JEAiy$!jkEp;i0V(*pf;PjTg96jG2irI$FI4j)VlTUwPoDkYhQ9 zsKuo13`>ats}*U?VI-1LBM#i*Qe&6S2Ds3;%WNO>X*ni-6aUh%mDre#S;dej0-|r| zQ&H*PL#HY1)X|8pJB@YUcesJKaL_!mfh z@x|gV{$l6B!l6TjgPix+OD`RJ;N_RTJa*{N*!ZDC^!uE+{JKFjJVr9{H4u+fB06qV zSgj=osYJe#_Ssg}5fin-X5jQ>VGvTaY;~g0rg5z;O61#mOVFR>Sk3pg(aSBTcDuY5 zz$PJyTL!p4B$>!|lJD&zTh-;P4pOO+OqU1H!H`w6u`6lW(lfMdl+r|}Ws9LUq_sK$ zF`Ky}h5s2zZpAJIr!W3nNW=!rd*(5W2rD}_MRN!%Rr+hq* zMNVSxPTK{8AllG3b>_AeE+jiTJR;_-K;1_E;W^ICp=Xscy>6r8&A8nVVLC~6k?n{T z7E_%TS~=>=S}E{pYmo1M6Hx?C97ET2AfBxAkvAdYACz7&b}lIS_zRz7w%L^ zYzO_3d>{$%j%sQ*Zj@q5&|()>?HqM*%f*McZ~nSqa*9DQYD(h1)x0Q)*)E9(mRF~x z)`N(ki$Ocy=j&L9!{)Fv4@8LL3;LTj6S(KiT zktRD1k6|y79ZU_A)dEm(UX0JM4pqhgU>0Q?sl=d)=LYG7v?LVxTvo;uqWjvsjM(>$;OY9(%Rm<)%8lkxia}ZD_o|y*nxK_Pe{b z|3M1Y`T_e29x(I~AG1h9`zc8JJfU1VE~<3bl4B*SM)uMZ8arTF3(1XjMTcr4?Bv7o!UlcL>F8Mn`P{-E*q>Qu;*F}$1mlw=1LCJ`!DQVAd z!*r}tV5nQmGBFq&wLuh2$xHHP+IC|$nlzrGYDT-Krwz;L>L#)`Nyh0S`x3yZZH?r= zE*k`db!2-QAt+RfKSZyr3JiFV==KM2?G|D*{)oLS_~=Wi82i+V?_$mubfe&}MqQ$h zKkN7Ys^2X+*tdKLZ<-pVHgX!hiT2>9NlaZ&y(dd~H1uB(kVv3e+Ej5iY=_F=>5j3^ z&M~asxvVo5U8dRGTg4QX89U==Y8i0r<#1xx&|9D~;&lTM^mqVj3eyo`4@#0?tqLV) z$fVOcP=MBc$Jf1eHk08T4u!m42ToJcTYA!sOeuFu<-z_5ch%h!lNOq|s53emkCgyE?#uf^UayVC$k< zs)Ip0j)r=cNYi|e7T1$d=Vt4)e(AcY2fMi;j&r!kZ&Tza9#@dH)eSwyu6nXh9o&K8 zAzr%ltc!;^ScmH8`7WN59O$fsWrrl;AU!`iNId-niKhi3!#*Z2A$=Mfjx&x~ty9?& zotVgRW|}?DfYH`sB6}0FM!Hee`P7JTpn-tdIRh>oe}edY{@{_uy+b|Y`v!Z)*>`^N zt#AF}QM7dDH@6LMePlCmt&lkO+a!)PXp_38**F$P!mkKr^N0wa>NRa+lQ!06bFfJh z8hPM>_KO#veB+Hyw5<3So6$}!fUQLjV~A;s+exfAb@>Iu2}3VaL%h`(vw`^=h63l& z5@=!cuC-w^MWGla8?G-=u$brrN0MT>nJly;nJRN*EbFH1KvA;6c-l0>o5@-0rj4j> zn+Z6BARNq2CJL*yqqZ%PUp+zxVS30XN9X}P(xgwj@W9W96(FC>j#zURn0r}GQoZIV z74u!AT1DDo&9zTKN0OR10}mpkhq>k%?3x6HrKKSrjq94I?Enxk%}CU`G$Q8())+O7 z0o0D+Vh%X&l2Ca94t3%Mc%zmO)`ik_#5JUO@+XqBJ=AENI?=@qm)U)ua{26ID&ou? zE(v2_b=YNhY&V(MzXp1dVU8q%7gM6zg%6{91Lbz?8U*A+5-9eo1|{wnJ><3hqW2r3 zdY~K&+=0;nVzLDnv0~Xn4A$@Gu{AHlDS>vGvZTvc0w+{1A?J(+P$c~-l`q( zTX%puwr(Jr34=kZ-h>rtygnP?g6Eb zZzW3C+LBv)R+p5#6lpE}L@C5YI7@nlU`iwQ1VsZ7O`5jt5p5D(22)M5OffQ=2`2ct z!Nix8P9?LO5ibE>BAK^2RlZEaP%UW@e=EKFU@)?> zd2f_N9*=C>{B_A(ZHp-_eD4}j*5eL=C2>cPm;l5bE>J%7cK9y6?t+d0tEwA75IroI zMNY7S35>|tFeM?Ibm1|X?e%p{ZcVqg#Ji7*$h`ea_uuJW><`;R<}epq!5c_`V)2WT z{De&Qd*Jf(hB2c5CCpN09kT=WJKzFQ`ucnm=y-C&XcN(KUotmIHvQT}p}`0bat&n1 z8yiY(hSw0o zx@#C--nC3e2^Rqqu|AUxT63XrCX>4hZj;w%vcmup&g3>sS}9I=gEiN?jl2zb56^gm zk>%Yh=XM^Z=fp%BWAIf$kxpp`yPp!nf=z_x?S1$N?0XkKXW!Q~5xbxpzs`aJ;RJ4P0;s8hvQ8JGG+1u84}gY+aWxyhXIr zAgrTBGDMDTJ(Ic=_i~0w33Q1J;Oy|IZS*pPNeQ0@g`NL95!w3AAMlm)^)y36-WQ_$v5BY+1S&QOm**mZDTOtPy17C zc99pP!|VD+1IhJ&c(-MA*Y~-Ies!wVH@%lXGW?EFVpfwAa5GGQ_d|WNrZ%bbD@D3i z%j2d&lfgnNyoj!_BH_sbD2fsPFX-p zgELyX6vlP{^5Vc3^4bQnBop5zxoP&E$^At*VH_H-4}zipJ--vNizi_QOyca&6KX1 zyveaWb2F6VoTnWg!1H}=k|NEkPRio&WVRZ`JwDyV3(y`-Y8 zZwnS)!qH(hwM=M|WKJxeg{}11vw}_9=kOSxkrl6W;peJb+%ls!Y}a;_y@el`uc)m} z*HV;zfvUEiBKt<(TW()xK4^i5i`+ej>+W;fmJ zeX5qOej1Za#+hab3KvFBAlrYRf88K`duZ=aC=if5Zp3}=j-mU9gFd)6;-hD7s=GCu zLiV9_dQjpNv%K^8U@HnYb52n}ehm(a( z+J)p`0%dmq8eZX6?I!Y8CAWc?#a8Vmawp)puCc0}Wo4E$Sc7T(?W3Ud4c2_q#5za< zwyMwBYooE$_+9n1PCVB(a#rHXbAfwqw$EntE7AE%S7+waZ>stq>D}1Zw=q0V)8Fh( zrg~SB+5-JuAWC?xh*6$*b&RE z)pNf!^vs3eZ(a)q;tsK2$3{ zRAk~RC1=NG9Kd=K@9)?`-dc0(@PO7xesi_1>vw)Ig=zE&`NK`s`#=4rk#(cL}Kt@RB(c=?xn(a_BtWxm1un#niA4e>^3 z9y*)^ROb8>T9s#r}h!L7H*-mRd?dSpz5md8vaOFq)LI*J|<7V%-KGWH={O-wpU_r;!?8;1T zQ8N(eiC>2%0ml)5`rQGJqpnG7+}3kMXd+6(eJga4(1K3`n*w?@Ka3+Mb#rTSX||@g zoN#SJ?8JgD)gt`@IXLO!m7u}LXSjM7{7fCj6Pexmcf1X4Q{}v4U6raLdIf>^< z?uTuPs<2XK!$+Z}bcK;liuLn;>fx3j~eqHOcpdC{vPj>qos%at~Pw+Jep>WyG|@!tokGD!7GBFB~E zgQA+ooL}Um?`t*V-9=1!JJ&EzYB6MXaWdyAQFlUbWpgao1%>TFdb3zgQp|FNqN=A% z)7g}gQ;7*_t^D+&ZUxCMpNS=!TW_H^%PDJt^(;<0G;Gj<(O|2ixu}JNm_jv;Ke~ve zWS3^LtF5_I2V6+0xjG6`cRVN%TT$D4r)Co3E;*gdGZ*uiFsbD8&Mz8qmyD%3M2Xgs4*KlN1aeM z0ynUkPLwZ)Mt}sg1#BdGTCYWm>nX8yHjyYaYY&aSj7m{V`mRJD_UCD3_`3BY9Q};eMy=`EX7xIWX`9^ zyow-`)#x!J*P+Lpmyt)stBEr4nP1MM$$Vw?T#`(VzX3@m+AY{^f8Z6n0^zdV&W0-p zGdXT9VJ6SbCCr>Eenj~)8#vEGY?=J`ArXK65t4|XoYk?N=y(hBr=Lj2Td&aZokVR~ zBA(v_a5>DT^(Go0e0+670^hdje~yy%6do#5B!~a+Q1d$*_^RgwNuZaZv74!A!=t6t z9rH7}yRL7NyN{7r|M5?x?;Tg@`{Sz>V*fU>i}Mp3w!ks|KSQ-wRs;S!)Eh2bSp^Vo zs*X=BR05zmzozFC^p0;Q^M5{pra{r`lZ7o>VR#}z1O8df-w6$b_mGpAm;l_{Z6hzY zeG+Sc1mT`LX(LUpZQK8x&0d*-$CjYfN7$?optP2KgpBer5i zEZ*IXCsr(9r^Wx2JM_2_`Xif&El>!&Y#rs=1Ab$R9_#~$s53!_(TKLaMB5}2;JtH* zL$h9`gdLHJQ8vvKV8eu(Xsxv#D*K@lhbX`US+8Ugg+5V^hDdWMM1hKcsB9kS^emNV z(84=tK__ZPVhT5R-bH3lJHjB0Dpqs3CAk{Peg9jAa2@-bXqgHfX}L-i;+cMRi14Gw6PnDsMc81T@Y01 z3wDoCpnmpWiJz@E^OKsKhIJEK33B3X+(f)}h{%Z-h0DxE&%$NY3ty5du98@o{Bb?U z=12^%V2ONA@h2H06K7hPKW6evKtc`4oJd4cpUAsFLKVrJjiL_%f(V~1q_mP50KB&W zvq3H>000C?Ocsd59Eo#4L=q_=t(1mhdVBx5Bz@eh)zkpPTSml9vb+mAvvWxU#RSbY z2T2~}_AYKnwa_AqxCDCXV;UTZDU)@nS$Af3E`a^mrZ`(TNz;J=$H&^HsCi{$s<$_l z)QeOX_I@mL{CBN*g&F4ZFAX0UMwm1+%KR>);heVu9SS8^qAob424H5p8JiHr?3j?iNYFQeuIK2-JODU^C0soOs){^*CBf9s86$0|V~+mq+9 zg&Xf+aqwvmDn$1m|9aoabN8*^`-7dstsY+p1*4+B_)ZY-@AV;`_n^Qdt+Z0qz2@2C zcczQK+2NBgmV_{`Aea0sd`tS2c^G#8gT>TPLdV|iv9o&wg+*D`pTZm z)BG;}d1e)}nfV@*Uj>%FGMVFe3L;JM$zcdBTbs<8*y&t#G?B=T$KcWcZV)C1$BF6o z>o*8ns3&bR5l>3{ZFz}uxYK!|joKNrQOVs(e!4^Z=?;Ys(Z)^F6brGBIFNHnTBXFB z8?D)u&=vknb?u7&nsL|)t~)?&K~S5Cv#JG~eM!0*J}X;ul1g^MxSHLZ$qrhx>xnX* zb@RzOXSq5xoCA%lGYGkWQ{NTDL7A>1>8v&0;Bui)5K9D}XZP#;omi4e1fGwedpHtV znAN?>US2K+uORO%=D&&Fkp6t=H)ih;Mu+wc2YuCMxI+-r;v7;>j+-I%Y)>U5jn$JE z6bH788mXsXk+Jt`Mo(TKK5^me1MNPEa($9`0=PcwfV*e`w$IQ)Y@hWy+vhpfx$+iQUn@D+VXcd=p~L7xI&7HL z;o{m)vbrmecUWRKS>j2u#8=1?C+9DbqZg=lmz0-fzW_(Nc*Ax6(>2nene{$T*W1i| zd4ct27sm?KnyXq;y_mSFO5Iguu2i`eL%^wv}Bu=y-h@y}b$o3>2WZayOC+ zj?idir52MQ=7-F;x!1WYvxs5R&{h^gbS4>20*b#*rw17$uM;IvZf-vGL%$#G_IZmZ zBUKSk#hJHV6`lvaC&rB_kJn#(JLdPI`$JXHfV=o;BtG>)F!;XLhd$@?p=}Xw#N#>n zz8yOc{#2Iun5W8Dd?VtnEIt@=*Lus*rdVp{bTFXV`nJn^_`QacOg)ogx|#c#yaP1U zLKKsXtVwA9xvNo!^FykM4S z2%l`Rs-2R-D66h=cd&jjzl;{ktywcsQ3axPav~BR6#$8gh`MT^k&bNt2HZ%AXB$H- zAVM%2mJUOyFf>+kA}(edLNB5I55H@79Z(#Ky>g%8{!wvx@z36WHQ@d|m%d}OS-LG8F57KT{a12!j=Z8Xb^=}E)r_5v;Rr_mIg^2(oRO!U$g_{xdt-Ut zGFP5$M4r8xJbM?ECtzW#GlxG@owr*ZjL~MGbLi0n|~US{;yIAxcIIZ z`*bpW_R7Rvmn%8nTbThsSG|#3*UXjc0+JlmS!16img$QR^xRw#UR8?yxW!K=%(Oy?t=AlXRLM4Q$fMEcdU9G#J2I`9d%z!jB^gF_nZK+anOGIm2PT2koj zNu@Pgt%063xwr)>I%(Rt5Itw@Tyjp0n)3>0LS)9N=-6o>={(dmhoqBrR*n8<$odS&yQ-rN)FZ8_*4j#M zw`RR`fV449)M5nQhX|sm1VjO8N`a#h6U|_eI~~p$mC&+|hB{jps0-1F0AzQ~Fc{I2 zO~{K*?C~K1i;k{Ef{ffs*W(ArdJh+W_Q5c5Al(y@2p25ASyUAwLEbxQmytyb@M=IZ zSIPzjJ?sfZAN{LUT|jRhJwHi-|? zif8r4>FkO`zP<{sY3qr1$;M*2CXRx_n;|}2ORFN%#M%QDu2@VAcfOTuwhJ7u9R1qC zP1`>g=(S6jm)?Cw7F{kA=E9?c*z}8+MjrakS2mwbaYhdNZ{PLAlNTaEZ^Uc=)&VpU z6^Tw&*@V^82M>I+@cfZW-y9zZa#Fcs6fxOFGC5O#uP|!pW}3*EG6=o7GYp#G-m(#L zpcu8+B?irwMv!bvh-jo2>$uGJ^DwI}iPO2XNOLSG4fAUflt{DCuiZ+39?}4BxgwL5 ztl92Nwq1RW#pMl+EnRTSmhA^}O`!XTz)=E-j&Vw{8ICqA(I_^b1&Yn~4k)_iddtZN z20jVX=6s$_4ILz%YJ|+lHa9T65#wf+vH;_z8e6}UrO~O-86wf?$Kl@Oqb26eZ84zU z^a-wTl(PcG>Dk9sK{~1BQ<{$YsE&r1r$3pFR#F|^x`2+lXYNF^gH&TB;?rTGs6jiF zScqmo@a@)f4dsbtIvLBy(#}fI&f1%#9Xh`~+X(Tg^|NUM?|XKp+u>7d2*XqYHtCHG z!Wd;47V^l9oDoK*J&k3ru&*72^MBMbMOx!l3piia} z_897vDBG}F{A)K7q_^KzWd7pxtfuDdAMPhaH@A^o()1%^g%XcM#o>3>rX= zyh@IvWmlwCx%Hs39FtCHN*f`5?pAFx5#5c?=nhIuon)i+Xg+X?Xmb44k_I!a zw`dy7N7^a(dZ(K818e0SWb@5v(Mq*AK5-B1t5vYCZi6kE9sKk?#)$|I`G}(k5 z$-8@aaN&v@$!=U}?G)LDL`z3^dH>oG(AF?G;pmLdt?9mcpRQa*^*yqdyw%*+p8hPZ zcXkehovT@OW=!A{D)yK@2(WoZv1^vcqFr6lPk0uxAJLZoi~l}HsV_sr|8nYY`!By| z;Ml!P4|6MXH}jOPQ2{th;l%{WklR7E-O0idt#|=H=K74&g^_T36-moR0F`=@7VUvx z47MK-e*mFaKLSK4Knc%B`e_bbM`HYYh~oMI;fpQr>K@W@R4XbwmeI5 zqjTBHehL6KV$B8N8dgxBmF*RtN`H;6s3sj-j;Cl07F1G{tHd!!{zvj@KP1|eYP?iz zhq-?e*3U#Qy0&D5c-IWUa{rFgljA3n{TwguvOA7$zVqm)WZV7C?MG51t@VV9V$$O| zKHN3cA$WLMR)CbHWlwd;wVk!eryKkccREf80hf!780sUL$L?}_HE*LVoBuil_<}!Q($bE2O zdhc0wZ+32y6aSCG4|`>g!f_R6iu-`*`_PGUlK*NnL=hl?}-mrBhQ3Gi$S5L#YE3x7?4EEMwd^H}1qE0tZPtMl0q zfB9TNU0*c#!-b;y;^UgYAZDO4B5_^~6J;_?H}h3pO3hbDDXvK=&Q61nB1s73A-1ba z&>KiiYUctfVCBPIq)G|Na-F5SNMc{-bB=1ZSwo`FHqH}poC>)469{;2 z%r-}`w%L&FMlwFE$7s>Hg8fe#YmqmuFJX3<9+ee`^vxQi9l_lUzWl-Ei|8Zbvm~-l ziS=<%KwTWmS%?gSL~OBG)^;8UJS5aTi&h4^g>vZl;ou)e2Q13E=DGK4V>cDNKy zdf~r#(cl4pb2<Sp>7-|>%2hxk)Me%%b9!- z*6GtIDa#X-1DHP#^oiLT=&Oxtiv#9gTa+xW3P68hauiu34O-xE!==oC&>0=XvxKj+ zmfcg5X9l3obN#ijZ(fOChc8cGzKA2lhp0>=6JoN7Sk6I~6-iJiUibN2ou~os*15rf z#wm~&y8t}F4VUD)I+tI5oprJAE|{;pR3wE(a=;N5y#hTQ+SPLv~asr!ZE&^?=b(vhu1N@l5#c>*< z7)2Nic7qY)Qse3kB~+U4_Rw}!?mEIjLD~nR!(m_Sy1r02+YDYdW+pDb$MJ>aBtxG#XdmldZ zXWuJ+nEms^yB~Vt%iAADPrrgh2k)qi2D&;VllW!M<(K#HKG9$0kiEXLaL1%r?pBt% ztD=4VEB=1E_=`h(5RWV`7C$UJ_zL2l)$aK&aG3iE)6d)s`6yt!!qK6#BDZU-$W}mn zC2nG6GM55Y)uL_GpL9YllgRV*?vIyEk#nm%dGe_( zniuU&78B4BMx#m`wXwOxRShd1YdkWqw zbGXW@f{m>m+OTQXoypx@Nj`CJCVQ(jyAeiMkVca`mo#}H%4D4|x%QfD$y}%=G_RQC zxT=`s73Q%h$L4Y<1D6tTC>P&~Ud5msE54g>vybZKq#ARDo7+7)a^FZmuO`_;SI{a; zu`6knRW}fgTurJ>oTbRVc#WcxRx_kr%j6s^V_Zxvvqj%k4nQF+wVPGa%@ovH%e0y; zG?VFw^3`-YIL8Yb++;u^8^*+19Kh_6Q>%4_0WWiw$>b^_T&*eXA;x$W8}q#B6iUsE zWPAlT^PW<3433oTrbNxfk6yl#rWrpub5Nd~S!W+zXB{)S&^kSIouRqwEGO%nWl$=u z6WVLlTH2av@ll6STAqj1$1JY3yi$cW)E!{YLJ{M-6EiSH^St88M9=<94Ot+T-} zovn%$RLw`#s8s?bS*1QIO_vY!YeAr2D@b}dI|dyJaZMaq2ZTc&%^Sf4R-Cf*nyP3^ zUSor%?kZNp6IQKPEB!{5=W7XS|F!$hlM4&%$Jf~4#ne2Rak|W2qk90b>2@u!3!sJ6 zmn;Oe45A`2)19nuh%(w5koC^&hI942O7aRFmabm!T!!?FY>(igx!dE~+rm0S&J~a?Z_iaXD+{E8?Fxm1LbQYD9#mW>d7=~DC zV$f7u&S`G1;(XSs-ElY))W`WMs1wsL-IIP$G)aR1lA;s`1!~w?OudsG>{~&*$wO2X zth^|xG4x)tFCGsDQmLL~G7wDRN0UL!yIVbSWpRYO)0brbEU-8p2qv58cb>R>niJU5 z#BU{-rOaVnYjMyTK#Z8-Kjomm6nRub*=IVa(&~vJ*DGMZ1&2scusg}uuLo1E^w(-5 z!q4#K9=2gA9H9=C9A3va2b|_YtXx*lW zhyOH%ojlqnNu&4g42AHAJx5rGK`cZis9mkqeR_6IuXFZA8pm_X-g6 z8tXHXx60Q-hiuh;$hRxftLfg5NUWI;CDZURuk|@oUHzg|Q`>UA6^aF7mR>8p|5xj- z!PtyTjLl8J*GweuyarD*ntQlLc;yPxW>GCGu{MWCBa$dwMb@k=<&aq@rK%BeH|vcq z#M_)EhZ1H*KElNWuJ+RX9o;So`vUk1%I0jqFYs23nK?)GjDGrP7r-BVZ2inM0L}d!{S52+fhNChYqo_bWsoREs`90^l5PH${sHRhKZbf%T4@8oXID?qHZM5%vW15>KIsZoof{6qdB27{UlYp>lk*-f6Z^VBcP-S_o%2e*Dh+@vPu$$c z+(tJ;e{;%>LA@aHX%+a&iY4(CE7mV3amKpk%h&bX6z!qR6(I>`)JyNvyrh#^!;CR` zADryCCYj7tlHA)AS_)j?-B7fP#|lk43H4wsyX-uGy_fKqRxg8+&0@-D(L`Qa$xFDq z?I7Mw>m9R^b2@lk9%^8rz9t2A1Df?sw5+G{fdFdp8#Fd*_v1Pnb+QlGsIz+m92OR! zqP~zxtl~{*_mt#*PLM<>{7Eq&rpEjXGj+1Kd6tj;AHT{s@s}>L z?-=s5X1+(?30<^Q4nS81b~?Kxk*$m6+Kk$Wj_G`EG4Vm}mP8`ESOZoMh+1uYu}Oo& z@35Y$u4`pB+%o*{c@0 zskE;!=$l~5O;@zte->MQZWVOS>$7d2)slZYk0B5<`!D~@_<>=NnP9dtuWDR$lz1&a z0>M6Xi;TmIbtLMSpz`S>PYm#4D|zCR;0oL4GDQl(w(-U0NG?d;ZlmA_ZB5XOx1Ht) zcat39ZVh6llf0}+KzWX24B17ALQ;#Jk{YheTFv3?0N}~Hi90tM#%V8?hVh(BHfw1^ zzcp{MYS=Pua4HO}$x!Hd=5GDcC|&9vPWlttba6jRdoQEU=i`Y3Z&uP{RfEAw^0=(de&X_P>#R@Qwa&ZZ`8>A-vk9U+<6J#XWDL@H@L#r+mflPZuxX6W>E4BRv9-&E-!HyD=8a!W-kNRP1oO-4iaPaCm#M z81;?Do#vuXbUQ-nab7lZ{?<1<61JhQq7}to6pyuq54?a^d{BIi?!R@H-!oibchj4{ z6_B+;&X+YMb7_*JcPH`@IJ|>Nngzn^g44(Z$e|vOP)c(TQTtMB1g-^_!sTfX)pY|= zaD$R-gzFu0z_%pwHrirjlT8um6{3ZWT!f_n7UvAckX8;~8nLPcGgIHt2%9r)Ef|bt z5N@#5hdb_qTzH5x7&#Hkj-eGD=!hg8LE=Z*;)SQqyz>8ko9D|o@6cu{ zXFBV`pJY~&^Y?b<4vn3sq_5R^DgIBM>>VsVWU`KwRS19mOj2s zdpv(81|q4*D&iPlJ+YNgH| zt9jIFNPa4z8&9Q}JwVgs&g3vpbZatOwBDc_Tt3WnqtfexInAi-tJkUj-wa;N|2cog z0LpVGafGoj)lAk*t9dmVFQfJfD13FQUK_FYS_AL}^2S<2P2B+I>}Vf8C0ViW(#yqq zUPj+rsTw3nHQk~TE49I&e-@qQz1YRrh*#FDh4cRWES~^!M%d9zj+Kc*MQe#xuGRn{ zo`VE=2A+h2b!S~p{3PDz$ATnTFS#y#M{;2v{fFd{q%sNj@NQNl-b)tz?Ybe=z*_cbwT%rsDBNz!-1#8o=yOf zPpR3g?!hBFC71OivSS056d}^w9q%6FMyJk(IlEUL+37e4cU z8@>s!X00WUX1@&V{0gf7^!#s;YBa+1Cixx@bj8{S_fN?t&UBod(RR)fO0`CpuIrn4 zEW}s%@aTFk;&6uEM?cPH%g$HY(o;#YxpMCU_Bj4G0;6|^cmY;I)ej$=3LcfC>oO~)OssVBA-Wfe_?1yKHpXy$qPsn=D zu#dBch~8a9@AoiSN9>%{=dZ1GC3Op+&}7L4i~uOgD#_ZSoFrb9sV>B9$<+ zRsjQQ4y$^OSE{13v_tb$R6{L=(XFNifV1>rH2q^|Ry20sabU_Xx!h;0ylOXvGw5|> zK7&M&oFN_|+|rZm9@{?^6m{D=8xv)pGQ5+VH(XosC7&?7(=KDow?*mOPem1ltoxzj zTWlY(Hy6?KojS@xxFK1xxvVEa&5q9eQGLrZwkJ~=$hr(d8df8`5u!7Jp>py@AOVV> zZNmc&IzpaqEFivfK8M!dW;)3^k*3%jq*g;U1F72|}KwHT!)u z%*6#TU(98~xk7Tn*1U1 z-Oly&u0KpHJ$Jw`{S02VeBiDv0OJ1*=;QQhByTauydcMlL5{`57MUWnA*Ikfd?*IJ z-k&3DZl>)OxuXw|K(Y+#Yj(Jh{XOWKfbH;k5|w|GSkvce%C4@7&{!|SDLZgC5QA!P@M&tBR^K54h+Z`*x8fV?*k!_|ee z{deJ$->~MJT2H_q<%3~h=(b4fZ9;UEm(Bttbp%inUy%b)`>)=@3?7$+FC?39DpmcO zAgu?UxkeI>>5UskNaQJ)s7^LWl6eY6W33C-RRhs4w5OL43SoXYy%aYB4IKq2B^yOl zU4u!FFd8HwEN{VhBF6JlnQwpZU%lTSj`Zih+v6K_*}d_h_Tg{XW#k@1zM)CQ5$;gT z5*AZgMLq)O1f>j2|(ObL_^>R4gmlP$VXez$-u82lF zKY3KKU_LHJhV~CXY?JK)F0qE3?`~Q2@thH>zMnX!D^5ShSNVCa;g%tEI!R(< zE?nfg7qJ}iE+Ts*j7bbp?uqiJMqQCUw11?P(eV{N5S#uA7;+Ug^lV*1v+ILfzffh44(EO_ zsdd(8yd$HZ|H5H9FstUPd`IDNx3y3mXuI_`eXO~T*r|C9vB}6S$_3fZAxfDLreTdLpa!uu?q6rYZynYp4e9cENbz zx7r$sq47q|UaJuBVbJ&JpFx}C7Qvl1d;lgVnsn2omZ<^aLgN@UO#}G|a1_vbUrH2h ze2i}mRNNEfc>z1dUZt@H?I?y zWfT&e4t#F-5mm;wII2)jboY3FW>BmoX&=UotI;q0a!|x&ihrmz)lAHGxHDj#6yvVo zh3Wno8?@XrDi3x~FILd04$bl2EX8R4Ok zmoOGw*$MKNXanKZqp>EVcJCkoJ!K~<1peyd&Kt@I_uNw6DFq7~CZsL!(JhCQ!lNGJ zaWBWCHoyw%w4D&mbM#EaJa0coP^{~&ZgSLI-Fawdc)}4|WpC-` zg%U?O8E;w$5}TxgUMp_?4E#5C3M+OKNr7oJ)JgV`*W+QTBCm6od|<{>nY?vChHc5> zAO8@SVPgyBh|EIvkpqhDpNtL0qJySDrO^G|rnoM_gUF6)1|`xWFr^fW_KT8018sVA z`BKUXwTMPJ4qKZx9u^wE%QRkwIT;ldx%K;fQjFExw=J5oDAM+>MW#^6FHG-b%-VP` zh7E7yibw=x<1tjpPsQ{Y$Tp)pr#C(|qBJ*79#3be$e3T#;KMsM{?`1gmFAfcHbqMF z2O5#_49vo!YAbxdRwFF2{3uyfz*25pqo;*fgQC^&5Il0c(f3*LOAl@6+X}8lYiJi;5*+@?1PA*`r7uQOW9hz zcVr49iTm@sLkOrU6Sh;rMA(>!VQBtU4hS{JoshUTo8U(|-2xcOV{n~7kEx242lwJ; zWq6tsd=<32v21P&7u5ZfGs4%pLvB0x{{YrxrEq4Mk;0tN$Ts%TWGnQTR&3hS!;6_V6U)o0{RcdtsrboZ4Qm!NhULO~6{6LarPDHLf|qb;jL%ag3jsPH1lI zdCrT&V4+^@cdG|6r#K8x&4g<3z!r@+)+whrg7&n7$8EEV^p!NU5zk;s(K~RHft_yi zL^+^i1_Ocsho7MoQ-p2DV9ztwHmhjYuiQqg(Onke zFGwN47gQGS{~{^@L2OggR$7v2y0JE)1qx$wivlo2h}M=%I_VaJI_>}PvSAAdA10Y@ zNE_D>kL=`aorn+yiG^G&UY_=rD-e z(*Lf=8-?Y_2jk;!`8IvDO&@L3N89w#Hhr}JlaKZvuh&G#004N}V_;-pU|?i$+^=!v zL_ELER|a_w1`s&!qSFMU|EvDpz|qOB4dik#Fo8q?QH~3(004N}V_;-pVAuZJ!N9<= z;lJvCK8{WXpa=?h2>^q71|4|XZIe$(R8bhk&-?CucODT^E@BjH{F68$`equ$MT>!$ z8B0oYh#^EIY;qAvsI)N%B19wx8AJ?97uupCLR?6zh*ly&&>y5lgv21CwJ=Po#dO~2 zfQXA9=e_TJ@80j8^PX%X<^YgqfVE9+#8cIWQF{tK>J!@REV@iNQr0lq9O6lFS& z8G9005sa&0bXjv4VebXCjs#gC?c_4?Y6B!qVrmgd>Ln?`V`~NXxW+hnKr)g;%J&k# z?Rk{hQ8XAohK$R-ej%iv-W&+)u zxmK5B$R0$(jKDP~(B#ac!nC5<{(yizhc;QjXU?3I*Ep+wph>&=OJ@04L1bR&mXPm@)&h*#o;XM7Et(o-{dtBK; z)bro-p0%hfqf~XGw~$F6N{MD|OTEee^t|TvN7mA^%HAEM>{m$dQN#NrJ+C+nUuQn! z<-iP1@28M~M-DM+i|GcKLBh-6ApDNLnGM`z4x#-phbp~@I^B)Bg6D@|pW*kz9J~zn zBmVpry|1UPlN{IRVFp!R1_$B(4-3!ZyIB-r4yD?K@zgnwJ0?Q^I1{~!kqR{l_!@ws z$~FEU%Ot!Da@1SY>+E3;Mf57#%?h3~rwqx`|1qucggMWsB}~xo0cX$>?_J*!1kEZ! z-n#rR94CTm<_JBAr0zht`20T^8O?kE004N}V_;y=fx;|?D@<2dWLUPbE@OSdCdC%O zZo$5R{TqiGM-WE^#~Dr|&TCvzTpzgmco=vBc&_kz@wV_j;1lAD@zujIV*Al@)Ytu0IZ?z)Ky~`1=yNUEwY+*p$7QHjNBas_ptYZEuN`8-ovH5CWM!ba&pEe8 zzF&=gRyW@L_M98FMW2#gjM+7Pw?*(@sAK9>bxyb$VqN@G&$;Pwl6&8o?+|%aE#zG{ z)gARCCj;ri z_xI*pKKV^DlgSW8Tm5Ol$N%axNR&hqjfEJj*oY+#JMkotND|4UkV+cqWROV~+2oK* z9{ChdND=L5PX{{EiOzJPE8XZ$4|>vz-t?g_{m{@caNxv6F(s5zMt=q{kU zp_~dT@iL6zj9?_A7|j^QGLG>~U?P*4%oL_Fjp@u_CbO8$9Og2Q`BaI8V{BqGH#xv3 zwy=kt9OMMYC59b*U?cm*DmHerjXQjlSPpTLU;N}ZM>)+y?sJ9(EMza$Jf?;RJmNV| zc*?WLk9@r11ur>^pC9bwEw6b)fG>PwJBtXim?hLw$6@MON&_Jp3A2plte}OJtfGn4 ztYr_eOR*lGjQdb&E zhtjEZDT|dQ%2MUOeQr}-?bUU=FX#`4YO1Rm17^$cn!3D}%5bQ@Ex5ept$ID?9T5$s zL+ShrC<~n$004N}+rjw1bpvBBgZBoGfQXHZjD3+C-Pp7v6gLP&dT$U30x}vRWjC;C z$3!q}U{-M5z^v`EfknY}6LS}nHkiW-;w*!5*nk|?OelvP$YIlha2PjmKs9p#MLATM zv^O%ll>xb&KrWX6oXf4?x{HCM{yzg;ga@dA+XBXo+#sS203nhzApigYQyzQ+002Be Brr`hp diff --git a/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot b/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot deleted file mode 100644 index 4ef997345aec1ef087931d195002c3617c175a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39513 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

    %^Z>OEKzK%rDc+Gaf}dg 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 kLxSp;4J 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 diff --git a/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg b/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg deleted file mode 100644 index df40333a8..000000000 --- a/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf b/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf deleted file mode 100644 index 5ae5198ff63e0f4ab6dc79a02748687070fa9b0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71380 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 diff --git a/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff b/src/argus_htmx/static/themes/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff deleted file mode 100644 index 10eb3366f263fc36780047ffde837a3bd7b2d485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43900 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.ttf b/src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.ttf deleted file mode 100644 index 725af42b197fba982441285b840cebe5b0cae0e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70824 zcmb@ueRvz?nKwGmqtR$I9*st$FH5p4$+DypxRlv1{vmeQUs%VGPnBxPw&p`!8UV$-e-w|?s(?+>uA z%ig~g2b|494*Pdtzjf=bPu%fVtmgpsAHipy*|~euhOPPZmpCFX!T0~qT^sJWm0B%B z98vHcT=bR=yEeDmSC3$SA-?~XTX*mM#9f`A{~AZsGuVIq*4sAU+Wg&3_jAO3H{Rc} zfAhvI2TRv9bHs!5oPhsKI@~{XJ@yKFex-l@=jzYdY4ePNy+(F~qu3|hJNOT2VGr-L zl<6dA<#=n+`Y?7Q^=Hc^Zi?d9QO;&zZ{)a7aojh0Ic|t;vp=I-mQQg}&ha5HY^g!k zwq2B6z4=Sb7qIuS|4nnpeuF)Bwh7<;&v;&lcSD=la&VvIzQ#>+v*a3b2mJy4X;g}O zqQPi$v?ZF1=Aw(EH$|U{wInWo$j{E=_3Rx{?hN-g+%sfs?j2lIjW$M`=H5~H_#FiA zAhZ89`^(wy&3o5P}3e2zi|MEbfgO4tpFsZWtfB6R|Exc8*iFT<$b|_BOrMW#`pT98>3^j$DBhgq( zyfu+b%}dYEEXcOy7Um1Z_EJZAQDt%GlCJKa-lcuZVC5?YR}QTjzG`Ik=+$G_j9)u( z-Q@LaZdiNcx|`N-;68Ko*zr>jKJwKwk3Igizxn$Ac;d;w{kx~meZx3koqp!&=f3sr z=ea#oo43Ak`(N+g{)>IvxX+&EZsRzpjs4ki7kBpALz{N7?VSgHy75y-9=Pz`SO4WF zufKNjo7_Kqk9+I?`uV@T&F#PRuiU5aIeg-C_uhB%^Y?#=`{Ki2d5C-A`?umvOz|8y zd)YE!Epn6G6gSST<3_oy+?Yt6aa;#bINC z&be3V!=sb>(CydjT)d}I7c!Gw*PF)$5t)fW0*qkKHx-v(U@ehw!?|E1}FaubdR|=R^MY^DAj+R8d78Ul7 zZJD)`(ddf!z=rM7$>`L^`bV(WIoLPjtE2ZsSKKqOA%0Kvp1ApSah)5R)O+ztTp#;d zy>~O)!Fv?*o4PJG#$uu9#d{zIylEwV+qHAQ4ZjaBb1sNSFV1~=JUY4Rnovw9*H7Mq z3tAb!Cmy|L&a;{)*x+t>f)m9V$E7vLi9 zImW~`G!?(crbkC7mxM0hjAy}lu9x)o^^sN2s@x{dd}J@a7QZ}t&)8&qBYu6nFN7x& z?}Oxf$0n!4RxJT~f7BY;uN$9k#N=RhtmJyrfFl@uDl{O2k~Tej2T{lGC-V z)@wib+kXCKd_LtKpM8s*v>wH$y16u0wQ*c#+9GippCP&@r<04iSTL;a8TMay77Q=R za0~Mt?HvW5M`*DmJ32|hXR|0I_4u+)%a?De@PXXQvR@bwi%MckU*DE~YhON}=(;@N zv4!w`$LP=KJJu;g(Pr)@PM34jRN`!WMt2v89?9w4MZ+r3oL8)zn3c^XM(*bkKh~l)QxHO$sID^XAkSYuF?)GBA=k?eGn?*<^Q2Ts^C`YpKhzsnitNJj4nKG*%+A69YRjHKwNR6TgXIO_eA z-g4o&?xXLHvcviwRnK2AcKZILcV2j|XX$&r=F!_!eg6ex8;;(50dG7no(j4%=k4ZW zfIaF*)${SAE!fzjp3m&b<80P^Y%?Eo=Ho*4sP9zIckS%N3r5Vx)$H-Po*Ul#1HP$2 z-=?15y6t9n#@KeV$X>e5Jl*}oyYI5o=eL{h*})#!H|=GgXza<0`fb>`Z9hJ#`)~h1 z%}>JVeSdj+U;Xq~-hI~mq}$mp``Mo{e>N`aiyvLcLmyqpUzWWS+bjC& ziat`&yDC-u796VL!vFlqTyI>o2ZAl}Ot!OYWc9Y~d-m@8%+XU{eCV&wJjD{?&0BZu zynTP$|N9^E|JMiUy+Ohm`~$H60~K9%>5rIRP;Q5lc9h*68Pbw0C(G^S4u7GWl-=FL zU+^~*_=CTLFXM<-ZtoU~IL(|!@cRlyoW+(co;1Cv=qoR#%~bF?i9&5cYCe0iC=?%D z?r?YDBiaaFio?XC;ByteB`&1eJ4)tvw~++C$nV21F<;gaZ^4U(r1E2$gYV(hS7XhT zDy7ESIQ&*Z=;Em;z3>pv%XX2Hhs8=pbVEk&fVeD1d7Nw@TVg8D^RCv~6B^+K zN+l-|dZ?dQZ4!?2`Pd(_X^r5j{IOzyr%j@(_V0eYl@}zZ)am!&r|@>cC)A$vxYaHX zaj8y4mMo%Z!EcnL+B1q*#)V}?RUrK#UVB)z3IYw2grW%e7#Tp>$_>pXEO%P_0giTa z2e~hBU*TTns`DwA(VL3(=W_ruEX<~rmwB&LoR)OMSoB`pYQA&Z1p2r-&=NRPq%k%-Tk@a*w^E( z^Ns#|fo;y$j6kje3of^J6bsG7@ALaQO0Hz8%~ERbD0h?rH+_C!QeP4F+(kOdEZo~X zuxPJGh_|%SRMP9hF2yd)*W>qONV12tr-W3Cw+WvIvo3cLq=uyC!Dn}oWGY0kRmRt} z$CD|+!rpCutG7Lsw6zFcw}+j@j^G_C#S_^CRW-rJ+q%-DO}DI537_*z6o1kgjYdL} zM!oCy=HmXemg4=w_@*^qxLYDL8j0{!NaQr0`b&PBaI~Z6xe~0{b`#ao30cmhWvVEF zuq;S&HZBX_x5(?)iT2kM<=jqNSmoU^`I#VO6ToR}PbGxVTFuJ)$6-o5FO8`UZe=7a zL^f6u`9^OiABoiTkhM7ah4H=T=28D-1?P_Of*^?UreH`CL%|~rnM%Lq~f3LC6O^2qp&>ZWh(Q0=iZ3{L2)1#TDghYeb$6E#7UeN z2xkGeh`W>1=jV)tmKnVxXSCu;%oz%vJUPR{46$M+dl`l(*Ymp-n@IIBm`@g)S=A_F zGv%2v7US84tbU$a#3)R|C}v$+wRL`|Qh^0^EJVDERSXXU0Gt`|fKF@*iMJ#>JicN9 z`bx%IETkhsd^Q3oK$t%2hA7UIsMTK#x0K@JNML)qvy{3uOHuf>yE9vKg?R!gi$jkJ~)?fsATNuxhHY< zsiRx>?Ag9`H%b@_H#YmaAo1^_=9uDcMIBj<0XgW|qLHx8RBhOK5MqE+2DtTn|q*$r16T2-kSi7}Tp?O(cj<5u>PTU_TwW%CYfG9(3e>qsTx zcXN=6IU{ov(-~MaF9Qi;-w(W{SZo5~AWIR2tv<}wd+Lpv(^2IYyDtnshbR+ zxg|5KI1YaD&MzLk`P4o^j!liORpr539xh4nOl5&b5cx7h_7VGA@WV;T>{mdiST+49Qz|t?w3`$EbJjlp+t@F*w!->^?%@A$ee3H#f-X zj*pP8iK`jRt%K_Gk_mOyI;2%|bD)<2ZA0Z?(JlsQ9oVp&ieLy9A}08kLWHvWOqe!oYx(yX8V(IddBsdDGgYgp)#Od1mFa7Do z+RN2lquH1e`wsaH`<_s(OnzrQ&H2pl@#l2@qT#~#G}gZdK%vx**qlnjdi*}ks{%?S zL&r7_jcpvrC{)YEpM2q^YGR~z{1L*xbosla{pmaNYSERL|J_>fa;;XAz8mgk*F#>m zJP-Nq;J(ULo0t#Ti@GJJw-l$hNt_Rr!@PoiQ%(o=z8-N2`xPMVojF~-s1Kr)fxj#( zoDX_cloWDZ{&G$qE=~vQJG}*C7qlRQ`#7%+Y`&RA9&Zpk?xyT=>~O|53zCNIGOIgioH_5-t~0HlD?r;qu7B5F_Qa1F1=SLi?*!Qb{G+=QB8ilr=5 zEah(GIJg7cMMxsgb+jjueBdU24_?t`gQMUR;9X2n%-0n1Xg(gvdjfr{d4czZ^J96D zR{~TS?(>9lO^IBww9%C>Awv}N%BE5=UCj3k4Dt$X4CTghVZTM`AEm13l2pYl7Bi)? zGUOj>QY3nGv{IsPgi9e`WIRt5erj+umhS8vb8GRwopNqG91IjA>5|*SD>3Sz0hRZ8 zOQ}$0WGqLiFfuVY)Y+K`uU|W;is?1HTU70`z*j=Wtdm#8fYKn+l1H9z*1D&-ZB~JQ zk1K<-(@UlvZD#D#gD7ZA3~Sijb`++Ia{9uHdPBiTB2V}W)#O5UE*Y_Bstc2Bb0KHX z7?rxYmD)?~-J}>p8gMP4-INuqUY8FCd|?8d5NiQQKzITuXd}q`NgPR@qFx{Q2B4Sd zlt%*!4U)$qN-$R2sJY^NQS`VeFW0ULEA+uGUQivPAd$y;ucSh;@!GJcg?b{c=Gs`y zNvT8elJ7`7Xd~tuCu=k0DE9;xz*ScLbJezoRolUwu3elK>HtdmEuyPAR(Ye~ceBXPCm6m0+DWvmiK%2S z5tINg`fER`J>enG3~F9U3Md0%3(u%peE!kdH^`mb4}l4CT-E+(X5lZliQZtwAwixo z*niplIur4+Yivm#9VnOj`nC^_mil^2#eNo7$7f%&JZ8NWzZ*hC&B00-R2=b^RC1g? zB6`Ns9*25my&A}bmHv=5pr!=}pALTT%eVxxfpR0WzqCwS9_Jc3Ki60PWrkCl(Y-(> zb|luuIx=yX$V5W~5D>fqc-DYH47-Ja4zKfLg}B?bVnOqIXuO5~C7Kv{@A>b%_g~+A z?!71OJ#gsM$s_wul4oBd{@QO}{c-I*;&|<;Z-474{kiYdWp(H5`}BFs=fS}gxT=?> z`k;vKN4%P!)0;0EqGP5iHZ$86H5f$(zea3EQs660I|vXgt^n*J925(FpC{gmz=80J zT>aM2+S@8toX4LF3amQRFOhVNr z`e2t*F0gu)T{WuL42ktiFMjpx#?f83Dc#E2CvM*V^{c+LbIiZ^m!(8N2{&uKLcdg2 zuWS|aj^p<}cy7tr8-Cym6BQMJT@K|&H8oKCb;7jW-L;eS16jUoh>p6d;i8d873GOubQ!G;GsYrlrUBJY6|^{mU9Bz<3!LE; zfvq^&pypX_&|JDw(fwMrskIF+TA25@cbLK4%mNG&)!iBevW0ng{jzxzQNb->Y02Gd z(x@AUbH#z-u8m<;eYdZi>T6B;J$`Zf-*5T6;>f6dlB}lv2Y>hYp` z9VmsxA?d+q239nu6O!z2y!7DqcxR&I?h>86;@5;`f#}&rKG#vw!|*cEbk2XRO*^Wv5t~AdyYC$ z0aIR)_G%%jHPmkYGIb07i*`YwqQaM*ma9b+--2`nsRnxGCGYaANM(BDaq5<28}&;5 z|IG7_hj@|az4C5?f&#WYS$mNF-triFJkWPrj&Y!V7M1fkUAkz@hxbYISxA;xNG{Zw zy7#wU_ym|LFm(}CZ@yr7{eRMZ7r66YUvq@9KIG%AIx%BuL(C9tOy6z>q=BDVZNid1 zv*ZXt90RZuY^fHcbmqzcVPImQ?a5p`(7Y=)a>t6#d}1UPKK*Ic`-`woaY6M!X{Ig)a@HPw^TYd6`S95{*2qn&T}xE| z?blB|``(Z4+%j4oy?b}p>K^jqBSiWB@vNLo51%=}9QN($=RPFv$DaIldGzn~=M!gO zve4s1?Ud!PI zC?Y{T&Dk8@M5c~G8Ef+AA`SooF~_7z<|;C{;GfH}IpqjPc29-f`ZHfRRvllbsQafb zJ^bK5pWU}+WXt+Pe)VAJXQD6R$Zi}RUQ6OzPV}kHd!IY{#9tqpJk~3@rXE>;@*kc) zIrX`lN5+q=)x=4fId(>n1C9L~x8F4ZeNk?(cG_~nau&9i=GJr7Bs6ANU~~;R!wI4I zbIcOWB#4qJ$fAsD#Bs?2?2jeEATHf-IAMKYj#P_Z!0}?#3{)tdPqHG%@^RaYMoa9Oq-GHkY#ir13+w zxgUDCKi@NU=lW2v@h}x5V!BLw*DYPTZY1Bgd3gP~v^Xe_ty6_QdJFsQJ@DU?+&Qbn zf0qk!oSQM#T%v=)bQ^~d;^(bwJJm{(Cj}uw?d`-4FX@nHwBejRGOoZv9 zo>*Ka@kf+&E)w_E-dW1K#CPsg7Gy?4N6BJLVL(PF$U&=Yc^?ov#Sm93>~7jyFE*UH zX{*EqnNH^ASdc?Vv*Kzk72WGH+#sFmc-U9uQA4okfQq4wxDni7P)N`Cr;wI-Oh~3q z_#+D8EV3tpDBw$7rv65^AhyLUYwnN13>(G3haZGBE2;Jde3bVF7e{p3rnT&XClCU?~Rj}$x(^QwO?L&lXvkl zwNV<2K|=qL7I-c4?&UuYQ=(*?&pyF>`2#hWw`dFx-*cue#AmEE;(#U{is zlhwrR&*;O}wOky$-hQsSfZ0<@Vy!te9u4zdPrdXiT!f{_O*%t<21(g`ZpR=T>oR zxU*cf9oNh#Onqg}SS-#|7q4W%cJWdGTUQPg#Pn*3YeM^P0Ra3&&Inj%^e9AggBjP$ z2;ybc@Zi#i!9NVEM*d^j7;D*4U`KF1dfxR-i`^M$U%c`fCKEw3y1JR;tzLkD*U*K4 zH{t4S5ICnNk;<35WkyKo0nKQNoA#-4u_)(Kxp+&t-G&ScpDeY5;4x7La&ocY6)cRX z0|a4FkBgfxkHLhy!9@Ut*#!0x3C3G|oTupw`88QXLS%dG$1j~GJa0Swnc*$l*Pr<8 zL{6rlO2=ZtJ}DrgXvn2^W*(`%^6T2A+In)3G`vN|){BB0NRGxFmut_~mQiOe zy#Cg`l~m7?;jOepwvzX1e_wlVmaEsR$X3k88EHsgb6*w~s7s zfBv1Hkw~pjtJdDCo%+S=ie$G4iT7%6lIMS%t$g|P%lXa~Yij>(>MuC^zV(=OJ-3?M zz>RU$L55>nibjtxGfn;TGRs;)Av7>U?id?vaNtSenwj@+%o&@Q_xB7!l2Rw~~Nml|@TaTiNJh9lk zhfd#hJYMp2NCm}4#GX}Ry!MJ;i?5Y3;jq)G`2*A?{Es&Z{s?VQy7z(wvXIhZXwTjs zAmL?WJT0J85v={b*7d8*_ToUQQI;jSQQ(W$;|#Y{~PNd*T$`Yw7-sw&hSk;T!9vXP1mG|7z-#%yoIY{^9P(iQzW*ZFzL_Fm=*WlaymA6(U@<_H1^XY{ornnYsoA@p=zMpHAM6?B-ctETcc{)6P0{@<(@83*TZTL)+WS?N1#VyD#OJBub#ZnDZ%75ePvImAUVe0|kjEHWuj_e%>|v zy7eLJ7;wrqu8Qg)V>BVeu`qA=c&Mh`jA9VH9x$WWw5uNIOHhL+0H|QMG-b>h*X628 zu@+PIO=z?m8I;4i&o!-Z?$#7jkwr6X(nrAxzG5~C;0YcZoFPRMEi8WFV7<;aPYAZU ztfSm6@^v!u;Im1;W|um6H@dEl?X{PGU;7=&|91MmR4OGjHfm0?Xl+dEx^eRU+Vi!| z^f-L-z5zu9TX*e%Q#lY)Jiz(2|Fiaf?cLg$L-F!5w6;W>!(ypEEH;P1(@`#j*zrT_ z08m0FcQaQ7iwE+BpV1p(m`o@gmYFKgHqhZR>*2^nW1f4a8kxteHsXWT&Qr}yC&O4- zecU$B4Dg(habd&97y?5E3t;da*iSNW0sAWeoECV$58{PwSz&smc96obDln8V(NYIN zWJb(}4KfyxF+9ZE%savIkq5u?A`y0fP<#9555Hdv=R~1d>5Zo(G5ra*kC3mI){rzA z-?py**e8~*$ShC-R+>ght&;wc>Dr6$)IQsjp+UDZ3Q9`5=a^K;qH!}mcGcPM=M4!0@L%aVG*Eb04K|padvWnOYdNX!TCT_p#)=O zQ5?y!yG{T@+SqB0vgruwhcPD0b20{L;qoBLGt_}F?-4veAvg!rixWO`&H^7)&$Avz zRK=6=sEuiFp*5roj+Kk+icU!r6J(J5!yQ>GQYEE1m!Eig_wO2L3rnHIt9!EwA5Vd9 zOQ)%t+xtVmC%*U8?&X1ONbrfaRy$@OoIF4Ai+`;B_yZ}N%i@)NdueUYRRIsUUmEG# zKB+2p8y~#0Y(a-vsqKuAmTi)x269IqE@_H9m82o1_PxEWYPh&P#1oeg>0G=elLG3r z#;s-?7@z&XQiEPcxxeMAS24Zz3uX-0Sm<^XjTqFaux)n{l;}*=j$m@W*B-C~8+Ki# zL9;2Q*{gH9^`f!VHKWH1RqImr8Y`m!m#RiPG@C6<=S}tLVFdJPe_fRrI53t1avLs| zblY9$wRrZ(>(56`PX+KKO{KLg<7=^kN5e$oeBJc9(!R zNsG+_zws3q>;ZG^V#;OS6Bk-ia3E8MbEFH)$K$^7_C=$LB-&h*{Dgetk{YIh=9e9+ zFm(7GzepQx&HLBvDhYI$@&mlRDY(IIUvx`Z^_Rx|ej?iJgns?QYlR8Sf(%)X4?|Zu zp9e8GqQ2E&5quN5Xzj4zrZl`PBsA9U*Q|kcJ}*on=&0=(&ha^yB2x-K+k?3L6YB&w zfN8TTh5<81ln1BEB2N&`G%wpPK;-kFBi7?uVMggNqI6irSZK!RfdX8GYELUuKo1+( z=uxK|>ymHG8H0EUqiv>xLZ+>s1?NVWVHY9%9?g(VdC!YN%3VE>cM!bZdCu)K3qk== z-l4#y7^kH{qzqs(@WP%Q z{a0s>yc|dT7P34hZ!C0_@2maOd$r#Z*IWBeXqCwk#q02GCcdf%_=kGM{x*m#u(kH; zA;8Te^vG%AyLoC&mqeVBq#VsAuWFBwMlx7?ruOsNd$nh~#r(@dP(>z3Ef!Uhtb!8a zi$mqxmXsRGL*xkLy>RveA#GjE-Ob&@RS!Vk`VFvii2Rxj``GA9Ba?g=APeJes%mMN zO~<5m9BBN=@DJv6`J!MqM-2(alT?qt~GX`XmH@8=F@|9@y-9 z#vfYLbJHDnK>?g$KLCMKz!Rg95&dNrqs$~geRFY&SuUU>Y?(D{*>sA_Q?#-?3Ty)S zQNqh1ZRQF^xI(eOvr|k#CS0+>*x3#%s!+k=vsm~lxzNp@Pokin=iH$KwN|X9WVK=L zB*OP+7cTV+7+*U4E`B(svLfT1AY`VNAGga1LIzi4G>0fhp_S%g($F7*-$ZS;sNm@A zroE#XnYY>lS6+w+q87-H_RyF-`SL6`h;f(V7>00^(3M(T(G-_M0^!1E`z^-@i#&CD zN)+Fzrc`U^K<)7qY$BlX!^!g3`GFF`U(Ve~M3T;+lFbcV-rv*iv%^K3gZ^S}fb5r4 zQFGKD9Lmyck%w-#qt|j0v8~AZ7AD5wk`lcB`1^OTvt4e5Gm!mo0_UY=qcra@}rdA5#%%nn}B=@x4{SHUboHO8*93D?5NjK=v4^c`WQUu@+da!2I39%I#)?p_)2& ztA}1(D{4*rGmXxyWANbhAPD2CSwd_{K3hqv;VgA~Kv}w6t)7TRX?dJ?Q%$vtK1xGc z;L(x$dRw&KHOu<;KRNk{S|!t~q^MIx$>fM+|LQf%%VU}0oRC8!7Lay+k{5-2mzUgI z``+efht2#o54i1H)-rdPF&0>alF`SD44PDj*WJeaS7jo|x5IydMXHVSDmX~=Pn+GU z-Ei7ap}Lzf6}`J}hoXIjs<4~w37^6q$hjks%5DML)*zDxih$VMvvE5MoT|&nn&M$7 zz+b4tHPZ#*Y-I>y4l1zI8pwZ`2izFo&h%t9DT6!&EXS%t8)^`WGQ{*!=Hig66|aV9 zyD_WQ#v=mExhZ=I^J7#fCRR-IVKsEJGLiPUBq8?lmv*mC)icdQ`b%F!y-}_-<-Jhf!e=^L>X3C$_TQ$AwNEv z3AKt1bjf%EGhkxmVC|3hrNo9p6piKmNO474c6zLqOfElCyBV*O;-jQ?gp;9h~-3vJre*XCg4PIi87C=wHvg|MWY3-Y;R#& zv@b#E?STqg?678U2QzHC2-;jyF_Z)jWq`+Zw+lRs2@F|Q`v`fPz`|6e$w9HQZw~nN z5U9{(sDyYcD+!revmoGn{4pnAxvo)j$Wml{*Vld$6GSzX4y-G6bw9axV);n{LJ8bD3&eJ7|-$wbMKZjYQSm)&}?o$LThiUUGiiQp8se9D4c`TmERD&>lJzX?B2zhzP=CIkq+znc4 zSHbu+k`zYJdoF&sjWxD-eOH^J@4R3*q(ABEh377`eE3$q;dPU$PhKzBedJFhrY430b5<8v3HmqqjVP3rmUZ<@sM8_dVG=Hrd#<2v?O#k>AISFJlMRh;~b z1M4bmcJv0!)Ks`$r(<#FO*?mCNz&x?Y$?(IHeXG874rrE59e7Y&e+|6O2E~8msyrkJ$wjcdFw2fGt zuMfN_JcvrS>AnTbO_)U*D=p^CsXeuXU?vVM0frJ=QpnSS*J6(Km>HTmyA4CEWvd_s zWoc2c*{sLZ#8M1x3f4voKQytpCnsa@1cRB6YMK5M0|Bi;P^Gjxf^L0TY#(Q3oe&@T z%D%@^Y+N{`ZV9+B3{6o$pjS$3qr#wATOo*IhA)oBL{a8r`}R&u@S515$>1LlTQy&I zx_uqFg~X4fVU}vZA0a#qUS2Kgq|smhLHuO13eDqe0>Rm)qltwFicKjtoFg;2!9OIFk=bsJtj`zv9ObrCng-Op7k z%wWypW1vnTF_unGnMQ5I^31ibGpEb?JgCC^m}~QP1n54M&6*h{94$4nqooWSeiDcJ zczCySHN3mg^|ULV>RQF>3caN1ECvj)N}_Zv&e~khSUukMu3k2ztT$+eJ7XFFG9H^i z2AlVh-u-OqkwtmLVl$Y-0P2C>#8qZ^U`a2PIT`k!(Go9hN^t_*@F~9&NgeR;nn{&rWp7Dgp?_%sf^~@){-^GkZR~l;DZ_6g~4S zn7%84saVNIF$>UTu{Jh18o+yO!HjAa^#+@f>Hla(2I#b^~b+|_=UFwD*0&wQ`H)xx8#L@@&~EZhN|$1w$Q6T0V2Y&oQf0H(l1hzzq3Xu>9- z@r25zcG$pHRan48Ctxm*jYSv>kUpQbTO6TS1M?h|hl(>`iY*7a>%72)=HWPs#kx6w z-9lfFQLP`R&X$BZ1=-4JCjAGH#O!2}JO#$2hkT*-->;*!wegE<53f@-kGC`XM(w>w zcdH||wDwBv`1>R`bK;-Z*53a8%k(g!F*BYw-l^R?#;bhp;3zn6#Tg6>@>`)&L<%&9 z$N{<%orvGn?tg}G_W{eUgB)6C-?H8gn;J#;^ii%l!lDpsdKpPT<`LBpP-XWOs$M3a zbug>N6AQdBtHsQ$Hkj$O3ubjSnhIS^HVqVJ)ukFYKs-T6EO-Mu8k`4-ZN#B2BqMzo z>CI&nS0MBR8FS4U!Uzt}tLTey*zERb)o@b@lGN9^&N~A^)fA&y5h5tTin<63LUr!C znX+!6-^WHuKB~i+WwMFkB#TCItY2UYC0JF+Y7&6Z7O+%|Q-nn_B+q(k-Xyh(ofbM? z${Y*Rz~kiVE#Ex5apxM%Qz`C=r}Nn^pX{r=v}0&W2}c|J>d1)OEnzgWvFTb$0w|U*RFFZ5slO$(@uQ)JZ;ZEi0Fh)`m<7ZxfzFmr}8F{jpNyKFh zVZ(W7{EWY})SaOMjR?tg-GpQw=j6Ed;`kV}t0cb9(Ti&J~QJIx}sp(;r21@r%)`&YW-Sb%0%*UnikP zp_?Kjp_Z>i4c^A)T;iR}m;&az5D_>-0@1XjDydrW2s|Hvth*twGKr{7Fz)JhQikh}XdP*Z>yFRI9VnfmE#eub3 zO0Rr%V5;oIy8r_y@^3s&*H^QjmL`vdwnQbF?^q#$xQ9LpR z0sjLs9zZ=+wr=EBa!0soj>))$$dEue%p|-N)05$X8EAD^k?2D?eemLRe_g=+CW&jb zpqV{p_t(j-O~e>t>w`ZiXeD4F}rO; zj-3P#v7Fn^RXZV5Hk*Nkqb9A#U`{`Ds&fzS0Y=y+5mil~js-cJ-F`BV)!f)QL$qYycf<{mjDdNq#(^gTVa9H#P8kI^h&eHhK!iEnnfL} z%GsJ0GmHYOr;>S#RX}z=P8tqpMNQ_zlc_+XXje#92#X}3h!Qe#S4dJd$zv53{puS5 zL`2CsHd3r@*TOEB-yd+)R%ccXhWOvelG4zK)mwq6;sBQs%7G~ag51Hx)B3pT2o=ss_SlNX`6RdJG*YFOREExVde-n z3x}jZd}zqIyGaV>0B?f}VrQ`d?Y`-&w?z3!Cia8k zld=*SU7O~GQTV@_2F%V)zUK*Dd0S|ZEb*~egVhI;IYlkjOr~@1hp)y2tj)0dsN!i7 z#F~`CyTk-9mJ1~(X7=TP^M`tIm+m{z@O(NfbqKI&%**^&h@EixRE~2_0TGg*F z8n+=f&}%or+^apz1A;|knPq0$l}MK>rfxr(GY&D`-nJhRmaFK?T*ktk@Pr;Voy#an za7dW-U`tC%%$`je3SysA7#px*954tDxP}`=4$}y;e&n%exfwl``e>x-IKUcUwm?3a z{=tZ37)U!)Gm2Udi^Ox~PO=;sTbC*C`(j2EYj3X~+9x7~5kYD``k99wjDtcFJx+DL z4@2&nUwKiMpDVZ)^)$#{V2HF|)x3KjSoOAUclWQ>p1zE$$4 zGZ~(ui%z%*a^)r5SL8<4J6OTI@M=^fU4?23Q{V*L62oh(~~>OY%Lb+i`D5`)=PjM712hTuxb{SYF)4OLKP-} zt|v1a=G~^v#6Z$F5&Au%46A-6vb{twm?vJUh}o>qPiYIG6F>cII2@Rt3dgjt91&`l z`g%%sCH|Y!n|ouD43$aYv`|d*R!i;F&@~e={#~1Dk6A3)OgMgZ?G{mVkewSNic1#f zB`ub8mWrAyrsdpaI8gS$L8T9?{Y2IS_4%=i34=#;QF(l{YccKG(}j$|^f5I1fi(bq zlo1)L8K#e@G{+HQtlwNt%erkW;6y(zM#EKz|;bfu(35P^@0dv^@PF(yxF28h!pF= z;AbtU9g{80!OHDJvZar$J*;iK|0?jHX;BgvTAptOEpz#4e_nBuOOH;e%GH9O7TsO7 z&Vw6YIl_BYC&_3oeppcDu9H%O=|B@9!l?hk&kNRU8Snb+A@%aDhy$G8?2LmdpWYHThqXHZtP#mz2t6K1Zl z(#+b#oX_fn^Py5;-P0zN0cL}Tq6y08Krvw5V8Z+ktVq}Di4d@;)b0n~H<ub}IoAb$E8IX^MCig_Iv#ovW=2D{?4JKd_YJ8uU#=kpMv;3P&%iSHv6^ zX`At+lRkxYjyjka&aJtNn!A4Gl<`S|1%Wk{?0oBm#czEt(wPc1I`97iZp!GS*Us*&0=YB2ozj^N9yQ z_;>-B1-DLV<^85^Va_E_aSJ(z37ld$d%1tIb|65k)Y^o59Hi=Yb;|N%@*3_*AY*lq zi9e?85{qC2UxGC=(_-Df6qccQu<&(xCOe7@YcObOJyY zNLF9K7ck!E9ZTM_7btKgcLG!NY;N3+s;`5k$6V3qLKlE-Pshz+%xYH$Q)*X=HMdZm zVA9%CFcxEeUd9wAVk|fxcHI$-m9w&>7aY$wQ5rQCJGxdfmyWp1t{2!JHloj=)uwJ|`#0Q@JVQi|k(=8um}V1?(vczMmfk#PZUEj4J)T5H9oX;yss4R+E9BC5GpS6jdq0IJ8zPu^86js%hQYd zo9@AwL#P?DRcGI_JYjtW6Zwm|y;zOLW~1BdJwk6g6QkFP9K{x`S23oIi6%x4b>?)8 zK4GDZZYxwH=31Eu8}yiOPPiJ4SQ@nig3V){m*K?>HD|PiAjt@u?=YeWrMg$cDk~N> zwRYe?45+$%Gs_Dk1TR-!esjj^;wHCXDaXx?LP*&o74L->$DmMPTCtj=l zJSC<+pgm-u)9JDC621K3vwH`s51xK{T*|52>bBhl+e=yYaWQU5eT|9X05j^aKs1~K z{Bt$Jq~ew!l@^mSQ(;x;k#mLvjnpdVWA`m!Bmr1ZSb+(dOdfziWn_nsOe5JvA}>#U zDHpE{l{(hmduq>#2{q!!>dmA7_SkFW#LFZ++#6rGqV$jVJ^0PL6QURptcr5!_ojbj zXW!yE+#9Y7@$NHozj6@%VV0Ro>&h(RXIA|z7KSjB8S*pLhOmg1=&Q`1-HqiI-Kw!1 zYIBqd2!#zZ)z;ZR%WuLZcWhZQrtbqXhW@~54z5`a`V}+ z-`v%rrtGFz>a~QH>Rc2nv+7Jb>!PvCpSyatngGCr;mNth8HKV7+7_}zda-|kE#9IS zTbDBJqTj+tPwkLI*(N)i{FsZyjbZkGF&@MnRQM;ioqFlH&rOZ*m-vl$Zv8Yl@d^or zsKjHX8;w7O@n4J;AmGLmLN3kQouLm02O}8J_p7oWw|kLF&5E0+`#<>o!xzR{$(K%^ zGi6(XfAm;(BWJduPhqYyGP2;An^?TTy`M1rJ>9A_S-=UJQ-Qg<5nv6O$}t;JVIyoA z4`(Q>vCjD*D#*@;yAWZe3U1cGq@^*ksBQ^S+^(c99E1?$)fRNlu?6(NfLIAqDgA!> z)rm->FmF}ugXdC@9XPs84XB#<;`5Kc{*u+^5{L&;BXj5+dGv=w`et9Vro=HFy6p7# z4q|{NrM!))Q1Xxf48~h97y1}-?mWzY9kKqHyBZTP)dY(Gx%#rdRRuPNOL4hNn3Z>c z3te8QhG0e0ia9rJPEinjj8Q-=q!wUB(L%K_$PA}YfqM)V*ybRBu5k@)sK6*735Ju% zVPiqX2%(>DNPbfeunrS;;-(GEPU;f*h&f}f@Ab3t0{3|FW8D^rA5iMJ5rrRK1xC~C z)39k6S39^4R$->8I9ybbWQESr`@c~+jx{MtBIH?jLuIWeM17x^72c)_;j@bBA72(0 zJ<{n9rb4`w=!rVFh6KctMnMgWVL2xse01V$F)O*%p#W|)HQZlWz13zrlE5+ox+z3x zqPFF*FGP!K$ZE}CPLTB9O}>!g6}y6atXa5H4folE4fS!?fNTG!dXzP8w9K6Mdv62@ znW#$}LvxINp01b+QmUx)GkR~%7?5VB+pZg7taF=yFteVm9XG}id^wEK8OyLSt{Q6~ zT--iI&lL2OYOKUw7Z#0e!1Fjj+ta+z;Iy*gM}3X!n{CBP@4)b=m+huNvoX$OWu507 z!Q79MV|&(rXYzpfIwsA8{^F(; z{gYFJeUr7B&YLnRl`n7h%vUsz!zoRC_5S~3+{4S^B`rMC37W2{{E71oN=$KjRrEah zO!3s2OGh3VSbJz$Pmd^wZl7(4zPInQw{G5Z@0|><&YS%cpRiuS1oabKHNud|AnJ{X z=>QQlN~)Wg8Vi_50cDl$nlS6Y?Ir}h2F`-j2-jGdhg`D;ueDyoHmzHcO0Q9kWl&xc zs3q2lx<6?S$|e`Wk9OerHH@rYzX3W~=3;}gH!+={PHC^tH*Ch)g==sYQQ6Y6jNO(( zkD!Xda;~`{hmxzFUD=2OoQ?UKtBH|fOnW|dZvz&EK#zJ*BSMF)sa2{^jj=#v@@9$^ zFEc|qRw9G+NhMp*+eTRfbI1#st_V#lCD~*3Z$FKj#GtU2#N(f;=0bKpF(SKAg$ITv zGTGzl48`PQAN<7=&J3!dCRei~!E3QDRQFB1HMr@4o0}<-okOC)ci&}sWEjU$`}IoM z3?-7%a^*>}p%E+g9vrW|wPqq0(Rhzdvs&YXWR*y)c;`b$ZjR+>gP>uxmDFEbJJ=HP z+gex{3~4@wFVnMsA|IG@@ZGq-NHxsBPJL7iJs{BDWft(d=5CbOlhd6SjVMEsg=*Bv z6c)v_SQR7G*mSbCqQ9U=RigwByp%H=j84X8+ptPjkGjr>7nZxA4-`>l+^wS6ZCk>o zSm8MJ(J@m2h-?fyLKSR=2y(TV%j`aa5b1!wxyh}d>ay`sepn;UBeyuDd5Cn4=z6tS zo2^3b2M>zwss3ECf1sF;3)Unm4g~=%84f2^8eVnAlV{UY@Q%0{4WA%TnL1apiG9YYM>G(#{8 z3VO3@q;dV}oY^RBW}`Rr&C${v8>9-s3NcZ}lAhViT0%P7ERX=ZNeoZ{YzhSxOMXeN zzP2#l@DXO;m7yszAPj6=x^yFEYncx>W3Jt5{YP#eTcd0GZ~&`P zF`dp>RlTcdTnGNGePAnmSHBHq695#wjcJ?O7=XGxr|-CEjNrm?my-Q(&XFCsTpl+< zJ_` ztK^YFGz@q}6Xkop98y(PIJCEXN|xUHL@Jl{t2_Y{d;RN&Bu(=#nm2=KW?pi59G#NO zC7ph`M2J(cNn*G!Na>P5qu)9baK>l?J z)hA~$Fv~JiJ)|*?llff{)W5?wnDB4(So|mVQR0wg66neDkuUvYSqOL>4T_}D>%)GG&c>_a=d(6DC=MI)P_OPq89!BihqnfLv zRznP{H?gCu$8mIZ9TLpPJF|uAd~*@wd`yNLpMkmVVT=dvfw{?bK6Jy{1I$oYYt>lv zdY1ZEx~5x_OM0(kN9SvLCv5uGPoNH%pIHay%Ag;kU zO}A!w1@sW&T1S~-J9F)!2@6=N=`i7M-F9*NFfeJbWxTIm_RS?3SUqY$_HlKsVNVg_ z>?GdquloeUA|-KQXPlRMLGU{^J^?ecA+ysL4-IVhi^^cvp~}fc5ixaj$n7LvdC{9^ z8)V$sQI))%DG>BS17AyYC8*~7@*SgnF*Mf$Ly7*15)Y+48ApyL21SnyLT~EgZK^2t zz$1F^CXr)yO%#M)A(NqYM`#@tZO6$_pCaee?S}?mExlUI_yt)E3N{tJG&R)dj(3i| z`0W1OwemnRt>6xUbU@;}ju5~y!R`^mLabIEY(<*u2m)j_D4@g4Idxvc{SI#6o~o~6 zHnB#4Sr04q^s%DRi%2Cb7%@@CTGJs`Augd^yUO&5RcwWhwCW?D&{wI(07DtDmgE3C z$^b@nAjvidx?mqS;_NCo&3SKN+_ZrKS2bQ9W0nE5k;aSyXY`^5WOq{?#FUk@B^}E$ zQ)tzyo@RI56qutiDz6@jKC*{;;IpA4&LBv^joxHkk!-Zpgb_BzkhbHUEK0I|#M~6S z$Ckv@I?lygiWc7Hmikh5ereicab=FCJ$6x(R51PYyE|uyD_jYwqAI%6U(6>~;g+NG zs7sc676|gO$@>#4L1DG5Ox&0liVFeRF3FC@WrvCTxECFAzE4ovG3;h{1SWa4fgU5Z zdpm#Mox&7^yjZ}nTt*EGsmk8pyt=2hbTG=W2mzMpL%sO6We@Hh;$yQ^?5-4s2hb1A z9jvcsvs7%!{Y4PXNEdVWLd4`X8)0*?Nkt3AN(>0~FK%#%J2rU*up-=F-f*aoNaQ$C zY3;wh`@`D1KRCC4>a$PnpZXkm@xfBN2cYX41yTJ=AlKk>v{Pcn@2e-rmM;BA#x zx~TTn)|R}zy|uOVXIYkIS&93Cd4Eepz_6iOL}!!TSfheH^q(}%-!IvqM~PcOr87@8>eUEh`+ zCj=5`pL6+1WZ7}NzqP*gt#7S&y>HFw7tF7j|IE}2X`5ptdbT!2$dDYzfHfLbSmB4q*eQAMJd~ zLuq^C>)4Hf>Oof3>e7Z|a!^j9^9qXRAG=(VkFP$l_2Bd6Up>(=VKYaE0}*2S69Wrw zX^cFX^r1O<<<9M!{;%7&4sWw@Wj?s_PV@3~NJTAy7g~^|-llLuXlG>KM}PKw`ON_D zw8=lY0~|_Gn`-7{kh$_tZ!I3W_o*?J_%L}>_vx3+ADFj;TVT2APYjzEsxx{Y_F@Yy zYYt()0p)gFpBG?R`<4G46)8Mnp<+Tot%!M zrP>&7_0WV!n4l;$2Ae}-MZ=bT4(j`1%ul>gLQ(@3~2~_!~s0#p1W2ZPDrS;X<(Mf8Ln#$^F9%kTr;h z58nHNe&3F-^d^vpf5bm&-ftQvL>gmhKqV4nE=50iXdf+QCk}fH)^H6Q z*vMfMH2{`E!whUnLm$Dy8<2~)m6B=Qq^U~?rmI*)x_D~iI~F95P+oM zgw0V3QS>k6q?pOZ3-mhiAFJG2*>#8ToNUw^NRu!XZrv20nq#7B?`uYHOcaJRFYgUq zwlM_6W(~$10{(ogM-yuJI$ljg6ET0Ti{~2#5?-{lmA5vwt~Fy;+lB(KUFhAdo|c@;6b zFV(Z_;4Xgu^pV)Aj>QpBkGe)i+hW1x(OzNK;ho>cLP<)M;M;qHY6lGG(f(A&&f$Yt zpM_`M58-9XhWWQIPo? zu6S%54h0iqnt)PymhG_WC_4&K8piz)TN0r!E;@Gh3P7SX@n*B{<*->$%TL#&!t3bYRo~&*6{-`SKqh6Em{3GDcFoAt)P`3d|=CzCdgt`c=qnyW86`Y z{|X*W!Wu=-{8CtKK8iXZdZ)Di3f4?b0|fiQ=aaA@CqFF z;BRDiLhLZwm~g=c5;L9_@t~=rJe94%m2`>{bFQ z-=_)gw^o5vj7!$WHKI1KIHzw?h|h%S1-%n(e+>1oSplp%qmot6XT9DE)NgpL%$-C)Zh#BmhsEaXLX zqSxAxxOzp~s-(^CkTi6O{zh~PJA19WQ7y-kN$R@dl%Er{e0%N#*=wz~063vmmrsE- zR1meAkS!s2%qh&~;a`8FPm-#`<+QC%=9I77Yg%nMY}KWhX^seD|AEu5_|2%chz zw#ZYZcxnJ@HrHEN+|thc9E=hhOgEx?QEbB6=wdJKK=pvy)+CmV?8FtQNV6=3jer_X zC-pBMvFz8;sOuZ6x-k^Sn9(KOC?39UHz9^1hc~`n62`NL-l1| z1;4#wTj;NPMXE~N2hf*oF_PF15~;yzb7M88t!0|$hzdbpIjwRQ?v8O>q%qd5g0z@l z&@Ay$--_~nUs(Fy(@B3APA87gsGL@fNh}X9`Mk^bo-TV)9>Oii#r?wP++055qg%h= z=QmC#;iSwK3hE$U*y0bti&s?1Phkle)sDIt)Gg9Q6g=aF^%?z(Q~+6PKw9?GNm9B& zHUWNGyn(emZrF_s=Bx1G8*pmOnB^K5O9#KW7f!s6qzd$=YiZLnR1)?x-Mx)k1@l{^ zd+=+bDKY z8M%>grC?z%Eo0osTwyRtJpxR@pr@zTB1NynU|hCBz;9LHe>l2n7a2ytOcai5TKmed z3yUojgpJ^he39(v62z)HA2$|I98x?ccmvs9H?SQyC#7Vo>Tz~`KN}E%G?(&&`S-)A z;G)Q2tbe+Hqs#eWHa;Mm8zozHwHA#5scctM-M2rQu~{u#*Zwey(&7Nzx5@^G5+;wG z-aK{lP$t#NtU+daWg9LNxYgmR$(w4UPTuOp)DG0+0VMl6QW!vY0`9;{Uxf5>P) z*|?x*mL_mUsrMl7(Tw9z7B%#lILEvhvLT) z;b>5dg?V$-B?QgpNNwufzmYw_f-5hTPl;0Xn;nT*#3o1l{Fu#qdbbVySE@tc54gnq zUZu*diRNEkR>jGnF2)%zN-+o6PY&2ntQwd6RTfpS{G&!Q(r=b|a|W1`PGUV_lMV{- zGAZz(QLfmPEVMEL<|wjll(wT4`Zy~-v?dEnK_7=#;k3RC%VecXOI0vL3!?kMPXjR) zlOChN8sNM^sU}r?4eLRJ2MDOZ5s^=2ai$~lX3oWmo%opAMtFyi-GC!w4Wra}coXjA zoV=md#r@GpBkuhY1f(A^VUJNpycCWjyV zO`WCzx+JFx`78HyAK8`nN%Foo`fpgj?9mRKdsd%E6a2q=u=iw1Yl+$s0dGq3a4 zi|>Ft4%ik{VNmaNl2no|q1jfG2K_6<4vW8OolR08h=1gyuMRN*vXah=|@y*&!V!;{ZY*V^W zjc#87d@4(@+L3f2rRpmF(ij>Av(Z$Fb=n@EO0JhAuL*al}JVw5X zK|{tti;!t_=HR1nOnit|{9C->+_E$NrCg^?u)Px-o*2L!&55^?&qP9-wj^IY?h2Ko z0AJvy^X0MJ-{)@Io%bWp+4p+pt)(MVp(sl7JeDx`YWA+QEgTnJJ9=~fBm13qLjstN zIa7-J7hyAER1h~6tYitK-{4*aAvUoV&Li#&7+a4KcUq})?gcko!R#=^p6K$%vY=%E zoiQd=q=J~Ar0pg)r^HA1O+WJR%7X#kEqhciFFmw(`bmCsWR<_`3Q1VctG9h`V&i=j zRDle=?-@_ezjf?QEe+GH_JE|o<5^iadYEQqdx<$Tk1=?UJlvb;;*CavHb_K?8!bqZD z;#yp`{42+gUMql1A?qdeN#J$MK`{%xf@^`-rGe6GGNnNSH8!|`?lObxaF@9%srP{c zT1w*LqdQTyNh0hebw4^@Q9pfEG(?S`t;xb_bmB3Pv3i`|T|I)t=Q^zQ_-d?f2+MpG z;10$9D>qZ3+UF>CnZc=&2U-aJoF&jq)B!ROwoz$&=18=OEh~0Skj)7^R!0=HR!k=>Wx>qQ1*l3lfUh za6^xGs(mW+K9}77a5kDuDK&$=qeG*Y6|S+Ro=qus-eyaepGyvaj-z|c{WDuagUbf4 z%4cKQp7Mixw*-v+C7(aa^j^5)b%=_mp z$4!S#_nH3GRJ?*xPq4DAgE6+Gi!xe~#rh?GLM(Cu>KuF|h6Jay`-Uqp^I2Gx(Ragq z%hRQ=?xQ#K&b#q-UzOg~oq#rRh5Mm`gt{gu0!Fsc4jNero9EMbaXGfqHdf}`HjVdg zN$cN&IY+kP3NP5?iTl{zxnUiwdwssJ+fg_I)Q}MUBLDN=>U!lmVdJ24Jh9w z71Z->X~!&$E&a^+Q!>Jf&(-@RW@EC(?u#0Svp!`6<;3lAtxe)YH`ggc333*pWI zlB#HZ+omy)mDr;R`LI|eNcCxS2dhTQ$M)tT^-#r9REOxPQN+xCZg{i8#gk!9sN#hK zu2>>+95Zlra{20_Xc20P$j+(3#J4R{jBmGvs5 zy)7w=BjYgRf9|IT4<1aIJ*R$w3U2MGe_`=yXujHh{6e8^9OGs%KH$jGUs=W1>`v zF-}qz9&O&qHNH6VYG*W=gh)+(U`h$rC4C9u;r#(GSN?|=xBf*oB6}Sko0lJ0-M4l3 z8=G#vcl1z><5Ec#N_X5np@-tbQOUgX9d2m-aI~{kR)!{)X~~ZC@<@;Pn|HprarYbL z7bfsQ6@XKIVR#}t_8^xz{w8{QbhK zu#f|M*uWbX#7wE09j=5tM*_f(S&$0Z5%g>t#+C6m#Jkzr593Ij8ideb(7@AcwD zO*7K6^wO&MOvGl!UBI=Nea?llv)?G)b0=q|DkYU6uW=bT6!pfsK;Y+>pf-4;U&P724NG8WUP3sm5VRE~8H@cFb@} zBjpkW7jA2)!Xl+m(H6qcbR(XN{ck3ODf0#9{ZRP_+>N}An=T(c{oxy2;Ell>v>M!o69L}N`+^$KHkSUU4}AOEw{P0D z5~ntXv+%zA?w>thexJLapTaj8Ex&@9>^0_JoPNK2gxk%_-0stdU*e>Qs04z-a|zY! z;9bHK-1i@T@|o^Ypxt>%3O&c+=E|FrP!7z~XOgSFz6 z;H2;iv7^@#O?WTc+(34xvANSKWx)k(^#JyGADkwQ{YPExrH;q>YI|)WNy~?k-59o< z6*bxK;q(5c1!+RF(x$`li|Yt6E7s#!WOX0BhqxW!T@20Urn(W!dGKq6M4c$kkO3)N z^6vh&RW5*Xt^6*Pm$;1s9g`a%X=SUH1!;3KN3j6)6o729<`3Zs={CTW8Sp?>v(rNeNk=n{_Td1bH{dJu zY|&x0mh(wU0!8!}o>prU7{>9vA@g$5EAPKW^2TwG#27L6g13pA!js#|`^twxoQK<` zg}JFQ5ftOHh{*UUOPn$DYU1eFH3^hNiHy_(0lFx#bXEX@ zO1HAz?#zZ9VaHKn@3+mHA2_{_`&WFAvpP1W&!JNzpilCq=(Rizes(9&(wCe5cO@d! zz{iO0kOF&Y(93px3soWqt?%mD0VEe4YuK9|s7yvKqnCvSsJPKY$$GZ*XJ?8q_N;fK zy|)_UdJKQk-H*JYuA3gZ4%s^R_*mO?A#QRY48=8WHdbuFpR7aKykz4W!;Frk8%iU@ z6fmkiu0?9vq=_p4O!x$@#gKZ31MOw}nKjysWl`KjUv(L% z`&5v65rz|#1Mr5q_<=|gq6iXd#MnAgOIAjw)WYi_4Io^@4Q2rv?LkHoMJ|ag!KOo4 zhQeWcph861X*c&hemnQQ@~YGKmRIfM_Mk^?PgfIE%5h=*k+opF<4TpXFOJD9^p+RjeNlG#T44X8;%V?qY2@PmxD-poZKzp6GLG>h+2u{;L7pwRfCfT z=L`xS{8PdMm{p0JAUr^a4yLftQ>;k#(#(o(f<`{J+SBa&3nej_6UL7e)OZ; z4nO~+uaDh)^Vs;8zs&NNqi0^WNS22XPy107tntE}PLH zbN2fBqg=811L6R;2CVNC=9p|8PkQ8Vpgucr~NMoDj2#9K%ExTAhPy29@jYPn-U z545;;M}bhR3yHX~t5xNzgI?Yl%<^w=wty!V{n=?#)Nk&~WkTEmQ5Eu>H&njL@ACD8 z6fRJn41@I%WWPS1J0^LYr+$_Q_%V~_31q_>5Bw)*()ewBmnDw={T@@HC8>vixLzok zaM>hhaFYQuOt8ytobPrOwVt?Mi?(2`T8N`AQyC#d5H7`y!UYIVA(R8-THJv~X53H< zmW#_57CH(IC=lQ?D$`k@MZ?K#F}4sUh^V*$(-RolDk417#gL*jKB5KFa?|{vH|O#8 zq_)Szap|6&+rAkXS+F$UFM99GR|DGTi~BeYIwa+sR>R*K?wjPh0By?o;`v)-L7hIZ zXH#-`Wgr^qsJ4nJt@aLU7=m3`hX6mpXR!_m%vnLqiMUUSVw|#GLU@7%NN=PO$|Vfw zxe!n9CIEUEuAIcvhH0{kxH4)1@htko6m6Iv<7wt1gvh#ivyX~=ggvTtR+=ObZwT*f zNR4Dd!N$1HCRHDeg@&{K<+kX-vEiNl-9!KF!0@g7^T7op>w6Miwf>kK5jVB_nkFMj z-}t7H-hrI!>i+3J&EawIJnxzRnjf(YnQBl`V+=RMeppSF9EC+}W4Mv+N2H!W=rSH7 zGseO6Dn?cfp_mR1v_4>|=EUarCe`30gx@OvtK4V)CD#=ql0tlVLZdqfcjniqqrQc| zZxM0SF-9HgF;}OHK6bMCFm6-OkVQf#s|j6Y>@qZu5s63=9m>4*DwU8*a5CH>igq{c zH#?1w5d98VRjI3tSOnl~4*U(YU2tgAmcnmYCk@a;u@=9wMrfE4Kdt;W_f*8?PYkJQ zAe`WRn^iuZ@Bt3>;16?2^TW^o1pCPg4MzWe+#FD1;%#2%f9wdmJ?59tNxp8|My%oe z&;i>EeG!{!Aw@L`9l-xqe&eA2#d3A%hgk4Gb_ISwmZT$eHQm2_qQ8HFKYHbgR7 zhE3imX90eM4k#YqRB6wvrktB!q3a`$2lC^Gksnt<3$ifMhh;Wm#|xx#+0B6MNU`H_jxQDW-x|4b zsO$3Sp{{ZBo4@|VF5ZAf&>zhZWz6R27{5%t;e*Oe7ZZ6XTQeGkeA_qh`K}v9q z3m6AyGyeVnoc3{Rjki zVnW~@*+bc9i}v=5&nmuzqH+PPzWlB%Cw&LF_1wmw%$v)Psgd%Fs@cOG;`RpJ+&! zgtff_8xm4{$V+Vu>;Z)_l$>m|DeH;p-KJ8XzOW&!_hTdH(#8HY^tpaQP0}!qtscuQ zI01S`BIYP*m!;C$0?p0$FJQsR z|H-$qn42ZnLiP>+BkUwrl$OpK=CagC0)7PVP~rx)HMh4O$?r&v_El|GC70y+weCQ6DsLp(MMWr3mBdFe7d!`8ej$!P}jA@(c2PW41*EgW3 zO(=lUBs-Q_rMnm-GrHxiFd=5e4u=NJeDi&BcyNN?1lUK?v}^{bEJCS(ID0h~i%Y4H?P6Cr6i7 z^D{QtAq+&^uw#{v&&B!2ay$7hXV%?N(?_YpWzxM!9XflL$|75HjZI(y}kRi6D#`zA* zVamq^QyBK1fV~%ivEd5SB&mpy_%)+$p!)n^MxS8&lk}NbLb7l!A@L;j21-aE`-{nw z2u$gugd~I)Agvq6?z}3kug30N2K+Ns=zCVjhK>KjAbhw$I@ zE7wJv)Q~>_zBM;cOOkTy){%*D=F0mvDx0Axg~r_=T6Tl99%kSUKD7L?RYnzS4bDi+ z5)o$=Xo(S;Kvq2CZHgd@ROE*eqxB>|gymxLLlBHweX=xY#2u1`8bk}J)X+FKemR|- zI#1+Q0h|i-yh)rNCokAKQa^X~bp8@X1BxRN!AXk6yS@;matr!9Bt6IPplZQcr_tUHYQifC8V@^Mw2 zTW>Rb{xZ{M)YCrI=hvU(^H(Q{6Z1m8y?$=N5q&RZ!7t+5XiXzB7&#{<$Empcd-m{e z7NKvx*A-B7S0JqXuYdG5xQ@&>#iyBIg|L;N>3$ZjrW`C>;gY=_ zJL+vk=Sy|T}t z^+;987TDN2yoS!B!bV5oGLX}1Pc%dqtz9=}6u9P$tykl;Dh66XuKoMiy_f+;s)dVn z(>YeeNzRH#c>hwu=0z-e=SVg;I-1Mo=38(7NG?A-oX?GXuI($T(<39(t53rz=8h=- z=G@3gE;|CE^NRhfJ1h3P+Vo#Oll}B7kr!`H>iv`gLq)IeWa$cH!(O54lSqCW)1{Th zp1lTUyaHx?Jl|QhdYG}GPdXm&U$tTFIxCrTrB-ZcT6EryT{E|1VMl%Ql}MEP23Atn z^7jyt&)U>He`oS6SED@oci*G`v~T11zJ22xhvr)})ECP|xQ65*^J5iNRuVOFLbjkfzvas`H;qJ6P z3<;BDy0~+g{>08}kyk@$6jITpPQ&^S!1}piMC^flq0=!F^Yjwj3+kePwGf8&OOBak zEBbCGN4S%|NKdcAC%%!_6GQg84mxs470`qFk(erVXkL*EMDk6Ywnerr78awA6x9yN!C zTnl-PcLi-V=voS{CDDBOxoG1rC%sSv>b8aU>CKIt3ZN$5;YD40;+Tn4DoFFm)xaN|7D+VCJM3W z0@E(;&q*e-&jXQ2uLUBJJInvie38gxM95u55|M-3T{R6=;l$G2BZ+8;R1`&TKni68 z?%-<4UiB5F2_gjd^0%Qke*1vW2?@zNumHjD{ZG@w0l!0HVjtvYyLX-7DoNbWxFO zCeWDgg!x-iWDr~}Sx0XXUm4XvG?*1sL?nnd5mXehfDKU6ZpZa}R#6dUN}74Y{zsHx zkpi09ZZX_wiK0<>_F5X3psF~TNNy3F*h`W?(u({Yzo`f-##OJY|7P{&6xg||_rZFPA4uGKwbA>nu+r7sE^p_@fl%w* zZ#M1k<-y3Sg+UC^(09WXssi$v`kR*$6PeFe-X;&FSb%rf z3nre~yTJh;VB(oKFdyiL4@A=ikgYes2aLMPOuMfER_`*b-jyu18&+S#-d<-|eJ89= zVv5Dk)mv#ZLU166;aJ^AcU}+l=fLQ;61L8FjIN`d4e3m1ATQ8nYW)x*Ki}5Ci@@-| zCqp~iyqIYNAp;vX=Gdnau zrSScatBm(!cF$L#vboEon~GPGy;sA!?8V%kUpRlyx2(95_IwNN`7beh55nFc_8L5A zmoH=6x!16FFGhO|d#__}UvAiYH|*U@sF0oc!ZJs3LF@Ij*NvThC0Tm~%1kp|-K@$) z6Xl&KdeY8bYE(HdWoM%$!C2)D!j4Pc*dM==&sqFaw)Zn5pLKVGZqBRhbqD04(;u<_ z>TNIBy)UxK0V@4Wd)!juIyEAd=4;D;i+j5LZ~n$*r?G6*M_9}kkAfe18~8QB{gR`s zaDv=m2u5cwF6;)${)rsiAc-vhx@6%?nbOrpY4rwN)^1{MvC?phFHq5Yi*a$Imc=w) zPM_l{UCbwX3|Hw%R)WOLD0{misk;Y%a?2OsD*btVdOLpa&Fft~2n!2PZLGKq7{#D3 zFa($BTy`1jW+feT+CzZ5omIbljd+A^zHey|<<2SFBq?B`kWc8ZsK6p=Y`~05!LkikYId$g)VKronjt-hlD~2IeJxGJXjjbZzb?DTS zfmofLHjy%lu>+6zI*!ew-^YyWU4KF6rm;2)u{K?pPiLwmpR_hm05sO-+=XExfFZ2K zjB5#N=Y9Ug04^j=^+Ygy((unx5F-@wGz@meBlgeQ{77gfP(ELTQX!a=GtL-){nmavXiP|ys#UaFU zNy4blw6QljQ7j|WF$Op=@{C3;k|oHHVLj7%y)%l^i$9o5`IQ+z^F9VoM%9Izf;;6VT(M3MV6`ozg*7N*deZu z$xE7BB$2k|`-+=evbrrdJehTjC`0ao}kFqhz1x|HAB^kMX4A* zfC7wONAlGUU|t}f(2{ZxK`C7@2(gW+0lG4V(wLzD?G4G2LARZ8cP~Q_L^C1R=4iE} zS0D5LB+78$;&bF_< zS{@ow;OC0u6*p$V`|?K!qe;1&Y$da0k~O1fN2A$7IYE!Y+RD{@)Iz zQf!3Wsg%c*0G}KV@kGwfLl5CyahLdW;D)X>{SQM;ywJz`k)RzaE`hmNGpx{L2rV{X zj;b(`ER7glfyt2x+$q2lg%$yucN0$PIf804#vP`=m@{A%*BHsgHLAW2SCS3JM;jQT zO-}%hbREpKGKX|RRbZcM*d216R!a8`^|0Ri21hZ_gzSM)gFApF1xg>ygU21(;&hhy zGSTX!4#I?{U%LfgHR8}$USlL1^JE%fy9;SFM$&GSo!IWd@%1rn#s!3GKHEQN^#I0}(kN&nw$6q6BI7t1;g5;0g49aigYKZ#<)m zJ!3Q24=(hKQC9D&Jmai_ z0W{FOCDP-#%Ij^YgOM6Ug&@O_v1Gqud}2=3)MV#tx(GcmqvqsQl`M&iYm@}vDn)?~QEpo;@}p|bs(tMgniB|u`A zdP{6iApar1X@uu|=|U^om@F*J&^l7q6UJG5jweBiNN+$;0GBUn)dn!<>>`qXH4s3@ zoiBtO#VWg*ox+!}fspC2eqK|Aus8^`P0gRSM&DoChMw6p=Nq|k1pi%RRrm-?W^P4_ zvNStFISPk!PZ!=0o&?g@q_s6e1`DS=zyLInip&#nQp^AcfHsD3LxiBt zwV5ze$u++YrT{DGBb_1TksqmU@2xK@IjJ=o^_SmBx-{+vxrW!O;hMqnBaz6|ueD%Q z@|v2$0gSdl z)!Shq%%4S0Kg1EumDSI0v!PIC6h+lN9g}( zxJH_|DegsX_=6uR-rZ0&4Mev1phr;dDL?ho7k&OaV3V-_&XD)lAMGX)u;U*_o%jFr zwetIK@Z$Y{{hNck#GP8OTr58V8NM9%@J&*~ZD8N^F5DfGUo5``LE*6*l*UKAoEE5m zD5Sm2UH6+uRI!#j#o43Ek@B;r0}I6cKRC|)w?_lf@`3UWIy*3X2wlbroR5ST`l@kD zD7jc*VFzTPF+-e##j5%!a6^owYw1bdfos81(A&)PEai}uI#g01tTbDxeU2cc$B`z* znILsM0?;9GdJQ>X1gk64gC*5#QD;T^Z_+zmh%|Aq0Wef{uFV4e9W>AoJgBUu&1y9o z48`~)%A+ik!F&kitsvc@!aEA==bW}l#WBjg?vgb_wDGB*a$%Be#6Y+I9S-NhJi*4@ z5NvF_5mZW@N`v>?D1eRJX(xZUCbE!7B^#6NAZ@A^bIVw#?}#*LnA*{`q-jEXzqfGii!A7 zS<@m*4L~3x0PubcGkdeXi`<|K6#($or)gc!^W6^SyUlD}(eld~zMEsdo2&RPdFvvq z>muf@ixyyAsr6S2Z!KAa=~0?PH0d4Wri%bjzXUf8efpxFUt5^xtK&I=pYN;Ozg^H( zx%Y}x)%E(7qQf7y|F3^^gt_}i^*hKVedT81;5rZ^4#DetT0Hm3ZrwFn$_^+%RnFkPlk?b zJM-lBiYHU0U;sgSz@X(G!Amge`tj}(*kK7#jPxu4(EwqX^#K4kK>kWY9AM+tv(QQ@ zjA(kWi9+@=FRZcz#EKQGFlWbbZzXzQ*1ID0O5x*NZ>O>4`QZZvRYp>C_Eetl@Z+h9 z^6SUKh&(zvEBl&86yg5s8ajcwTSljcho?s^65h0o`yL0ac1s{JcifWb_4n^!>J3K<_T{v6J|Igv$NB608hxWFRaHu1-> z2|OtDPQ5I`J5P~>^3!)I@4&L{1kwqc$7}&fnps-lJ`N4Ap7Hy&-u*i>3X@O!! zF8_nvFTAH{VHVQQ7h4>~yPqhwC<^n$7Vr8RlUjTU^++&3#t?~S>ygnj9|+UXQSZl2 zIbvc18YIm|D(Y<*Go^YY_>c=S2<=xTiEhD9lheiq31f6jT>)5bm`P!VQEHp%3CCfk zu*#IDYLUgzRtUGl1_H=t3&V~Xi_=etaFgClTt-Xs1wWP3^gcAT_1d-gnpv_aK%Y@T z!?+xc?=xW&RJjRG0Qnh6(=hQ%=qkADQP6>Lz+prQJuHNCl~BAW8E{BxP!=M-GJJz* zl-qi5%)!gs?Xp(=&c1^WL4$r%M$B!DXI$R$oBvyJfN{+g1c4t{V+*KTz^CzF)JXLH zr}l4uC~R>#gBYO?dIM%~`Ce&r@xjoK4!!U*DX2PRaU>)7Wxr;V1l196)wvc=nTMx6 zGH6x=@zn8`K!ic6EWXVw*Z3mq)(+cV{E3Grk703 zO(>`3$qF?<6|^p?uYn0#2?zoX6Y-?pZGX4eEz&*ECbkPQFadp0*NaNN!P;o=o)?b&c>lB{Du*6?>sV?*?=K4Al$nI<3kDB03Bho0)!L61cD|tJR|mJf~pD ziqeZg(uh_dy`EJt9LUg;4nV=M*bbvr;5sB@2)QRFW4PQnI>cTKV?)TW(*0!z_j2U= zdK*q^eHCgOJyj%a*plfRU>Kfd4t)t`(m+-S^)2u}QYjkT{b5I85vZLFeZy75^rd=x zEj~x>0E4~o;yQ;USVp#>g9U@#^PwBYlp*1{2+wmdxx*T1p4#CtWTp3o<^E8+y!Tcn zd?<<8!L64ddzf@oG!KO*w1vF)={ti~^}$o?4gEtG?{5G`it0zCFPX&LZWfdKW5Dix z+&=m9?2~8q$&-CnGW#Hq88VY?75lWQB!M_9GfBa#bDlBsePeXEptP_U#xUvm3z?y_ zn+SpQm1Kr>pW6(EXu#~sqrgLbKENzk@#-@f;>6j-U%OdqE`aQux0L@$?)xmJn4Y)# z{F~fR*iPwzP<~jm&$C4uwiraU@~#Wmf)G>l_sTG{#V~Ba(ZHBthE)|a049Z)G;4;9 zFvBYBj>2GGUpvnn{lg5^JZFyK3z=i>7=6*_-3=G0tQksYvzGZxrf4t9F8LaFKq=V0 zLFZ53z_`I5p0&xm(k<3Y9zb*;wTcsAa=kP_v_`Hq$n4!lw9$tJH+4cZPpqrxwzg#QtBvhcTAb`)8m=ZiOf!5G(;Q5*b>gbcw3$|6GwGK>zogLR z(A(Bg-uyYE+u42r#&_7N;$hjiqx%+Ycc)@4dn`1*; zhw$H~v!?ntKuHD%vzejKv@t)*3=#5V<*C1zXC?Chy$fIp)p(6_Ygffy8%(c!HhV2g z>gxb5TA$Q$ym5t%vzxJEq?ud~ZN{}mF};Ubtg;zr#)AX+R0Ust1q`(q_}E}Pdu_yQ@j6s`NZBQa*3f$qAk@w zn&V!v$q<34=W8I9er4{^vB{~ZKefM*nm8-f{2iNQwm-z3!3AdjE4aYi|DWcq%TQ%q#y<19&`Nyb zqh~(Dqod$OHwvQ}euWndG`Fd zK2d5l+@Y1+f$1ITa0jMKPijWE^v-*H=+cuUcm89N+!wO@g;M#muJ9>K@QtGEmZ#3i z+E>nVh)-S!2z6f|NiRRlT!Z$BVC)m*ZnRI*=w^MRvMQP!|Q86t)Q z>uMp0$OBL*A`ez+CZOQx*PD>JVf$ndd-6!o2us?8y;G8dkyr{_r;u^z4zzt~-JGb( z&0kPV4q!o3m$aZrwOEOViUwyF67SBY)ENdh#Nd6n*lZCm000D(51)RQo4l8HGdb1*Bh1SK1BLMS9(bzyAm zrPx-W&3_HBGIV9vaAgm=zzB9R3nO@4VCSD2x>RGszUDJ;Jq85DbGez1U!>fXkGp3O2ioPY; za-+QBmsD->T|1tPL+Zt?hI~!c0sk$V_uO;n@mI03(*!nJK59ECqGEyLATmJimSL5rH?nQ#!+rJ(< zwl*gp&6MBG+PrtqW2Oj6wZcuC#`nxJQ^>BC<$uh%jyPnnJ9pbeZxED-O2>rk77lae z+dAHdx~<(u>bCgDkqVIK3+fhwdKBaxJU9&<|HYO|dr5g)rS$zI_MhCSlGZs1h2x2CQsn0h#seJYihbx(p)&aJm55`FVg-h^a(jzy&DLmZ|{K zI}134$f;hBrGfHfwBD^mKlDx&@!|bY~AvY8HRO(>*&S zhl-j{;LC3#!@l6daW`_qA%np5K`Oq_+HVD(tpT|Yrb<}UTR3Y!@F&e81krJ#f-Lc3 zig+x-0tP9m2C;1fSim~M0upPQ2M@Nei9Oi4=DJW0%_=lTOgs0fo|vCEYyU*m?piXV z{$&UrKk@=6ls|m_neu;dg4xR@G%NY3*C=K`|2&G>r%x6C?Zlx+|6j0{Ri05eg=dVR zZg#ZtjG5VIOaM$5OqQHRXbL-n2rl+YwYrT3e9}-~q!ywmv6N&ZGRetO)OfW>CE_xu zv(vJa>Wo+fDh9m;s{@p=Gl)=wQ3dK)!`4CAT91J!x8QW>GSd!YclBAHo>yZ=$e9fm zi1}x0%okd(yQqZx<&hAv(@+Wdrg;_Q_^kgM3-`aF6io|fI&eD*#47v28%F!Kz?Qh&Ms=-4V0`un=E2|frT|FOG4-iskrW7&q2?hDY61Hp}`@1u;hi(-P z+$ub(UT^r$%tEoga@By&#zN#1#3kH>D>;_SXDnBcV5X+?x5RmMTVo-NffyE5&u)$P zA(8#>Cstjz3jcZLo=J7|%Gr@Xt zA7J)MV6-q{ zQ(ijyRY9C^xit*xD@q2^PPdldd;X4FY~oH|txGglD}GN1nurHqN%D~Eo>Fb&H*Edd zwy~XCZ%>O-`2mGH{vs!hNjqGc(*~Ljb(t($4nF;S`GXO`cF^b5M7zt~;EO2u79Snl zj3bY`SCyu?N6VQh?k^8dZ&&5=6s{7;c@{!1cM;CJ0r1TIMWt#RfHr2B7F3{LI(WscS7egAPLr|}q%Is!R5dS*=en7l8a3Ta@*}Gqtd$Jn zSV~bmY?KKlt@G7(+h(EG2J z0FW7-{R&p~bJ}Cil-gLN&VKoAwdeO_jyG7M0qTr0B^tA~SOHsHVY>B_Y{7boXSd8e zGf>x%Hi<4=VeAGn1ncHQ=wcnt+KbxY_p>!$J|_Na!LOz-*clv|MyJ(3wEsJ464s z5{9fUH^Z{}?aqsc0n3gHO968Xy2>Ka|3oB`W06l51&+l&K@j+L09EY}T}9~mQ$nip zCh_zs^PA8E>o={XOel&|y0peVAuB+2$xQ0qCU61IjxQKI0c#X)u`*Bawt2XyAsJ7zmzf2Jabb&k>lFw<~q# zR9KUPVo-KVBCqhae;DLM{)wFjUo5}-)X;id=HtUb)D+}!`MKL65iAJY#Lh2G{?XlA zH(g&2iyBW9quTg&mS{Gpg5Mo8N^S-GO1yB`*MIsszf-*BjOqA`<-e;3y}R)0p^M0L$P6%qv%P{fJb4iHq#J_8`Xh1SEhLWJGpRW z5%Qj&+o{Ojcy+Sxg_VoFO2)~bNVvprTMqvTa9lr0$-j!^KfsUS>1Omi>(Wyni(Si=>^Y2k}V@y|^B5;ArQ>5;RVuc(0R@9dx!4 zm=0W1C~#f{dw>C!m_U1+r1M+=6l5v#pvCD@#<=xnn7K+L#&wrCrmnpTiKx{wK}PCv z=v5mKVKTHMaD7bBuj;MP0e2CK`<+{X0- zHj#JMh2C~xmS1)>Pc0T5QhA%Iy1W}hq5U7mV`K4DP5EjipoRN3_~ZFky&x}ha^K)q zls_ncCm-4U1mCfHSNTm=huRFx$VcYgU|w&>xqWYCuT^DO&{~l$E~XgPoYB)TKD{p0 zvs*~1+p(CMd_+-bA#{m*Z&b44QMAQ%uOLFB)6{rcN{wL#zb#MHG% zHw$~8f2sVNmrB!{Zn$T9@-Y7h52;bkrrOr$4{*ny;T-!VW#3ELa2V?9HsQoCZubR3 z{)vum?w}wXHXxcol%Vfqp+Bv+INmL`^wFZWw4z`=*3yT1#~SRa zHAzZ^W-e!MOd!^gFhSoMAmE_Yo@-xw8Lj7-qp&=$w_FY@Y```tOgJ9*)YYapZen)m z!Jg7nL<{eMz?(wAk3t=d6=LmaFr{t&V9GMCIgb5<*>$@4q42C&tpLEdUAZ=x21g4G zv$T0K*fwk?1qb`A&gQ&P-LMegQoo|vl-gj=3XJ zR4BiBa4=ln^)U2?q?oi&+zbWS@;3)3HriYc?)cfM-r?aJM=ahDhYLbHUhmsn-fYtx z+zmSuni!AZ&041t`CZnnV;kfz{m!0uc>I8)3mzR>O>XM5Sn9JNBE2VM&$G}C9#rXM9v`W zFZp3nvy&2EuM;m#erz$b6|W>zQDD}2H9<6vnH{l(P$!|9U_jhP^W>=f5qMM(fF1oJ z!;XSz!u;w5L7@1#e>Y9V|NsB|2v-#D=i^Y7tuv7}uLY<^Ynp!JNP*9gj&*iYS7rg` zJ&CwQh%_~i@Nlz-`Hg5Q$I3rB9g*GK>q688xp>J{)9n)kFV^NU?mL*<_Tzg8O{50L zLq!_@&wXQ^N6WuZ#Wq|y)T97eKCzG;bh6d9JMIW{HRH&#u)*bDU+_)@b_ET z->>1X&$d=>1(o#4D&8U34`UE2-aeS>U%z`(&|Hkm<5zjjw(ewRVB5&1hm#8a?!)ER zxkILhu?El!b3b70zL}(&4 zH6QLzc8%=b?32v${wh_n$FkW}&vh#&kHw^DP#)cg$Hy2U@~PwIW9EaF!}$9X#J@(8 zvj8oZnv5SpRw8Vq(5PoKVJN0#Vk1jH4T=P}8Zo}v=%t^mk;XTvlTK3fY#gmEb2iUJ&PkEZIcLA)`?p3y{yPMX_x*qEU3qj9N1Cs0wc3p= z%dM7dSr)P+3tJdj$dYV)2p{+mj_ep?93j9V;22{F<}fz*5kfc<2n-}4EMZB8$FkWh z+cJdZ&EzqYW3ov$FSFTPlVg&XOb$pgdD+Y)lgSJ6{;DJh$l`Mb%f`U8=77 zx{j~D@Arwmx@bjf4|j3v;v(7VzK6>c3wG*9SS@Tk|&B6ls+NrFK8bf6tMI&+D+ z^HxP-8FRwv@~GFv!c;XQ8n00e%~Y5?35d*We{PV1C%gEF=H+| zj-l6%w@r!6-_lniTS_90S#F)Lmb=KC4vCUrGT^=2D252t zaJu^BOGSpxg*qxMPczkNzd>RBdMNp_CJMf?pkHBs4%=z(s3~V6oX1lJqfTmULB?ZD z7n7Y>7_Kpzfi-|3-2lMBIhR7&9W5@P{ag(9n5>_Rso5JnSJpsHGeOW8KVZldKLW#x z?w7A^EO1;*`4j-S$UW2=YK(2|v$$+~L;+5+6z^2-B+a|M&yt68d0w%5r-F6+qCF={ zq^2xzuE^JWS;oU2sU@>xt}NE#J37i;;QKVY;4co}5k12@C+WyId`H)%IXK^g>%MbZ zJ-w2S5}9lwWE&uMhH`Yr<9l{3n9tWgv1`x#1-prc<}3o9g=OB4XnTKMLv<+9-rqo- z^6(@$_Ot{GPb)h=1pQ=yazry*NW>9b8Ow{DvN5cZAY z<@0TI4g9<%>w$1PT1q!dg-~cHWp3b0@p-F-vO1nV3uJa?e9Wo$Qtbu6#3j~1wtq)Z zT_Y#39a8rO6LDk&f}`<4Fik^z0rp{oahe=ljDq5Fq62LaW=BM$9btN*V>%e?KIE>U zlYj2*SlJC4&)F7j-g>rEecib{HQkaF({rqv{Q6IAx>{vDrpE7N+{!CgW)L zsv){mujs-MB2rx&NghrMdcG2_@*h)8kJ8lObX~jKuSb+YAN_`b{!6`a2Y4_bop+2N>`jn+*0;^$T&$J}o9H1Nr9WeemWu9+Sn!^`5Af3oG7+Vh3n z)-QcHMk;Em%v2;rpM2vbu2WWjV*nm_P%4TJckTs#=k#o`q@DX%GMOFuLME?Rp9;i= z>Ss3=St=Vc!w#?Q21n;eSLH7~yiU(ML~rhup;jmKpgTo4!jp3hd}tq6)!G7dP$4fl zYjcyqsK_=!Eb-`Y;XVMrL#M)#gi0GP`Ae|$&}?_>Wmh$SWUiqovbrmby+|2&_>A^# zvWff*CcH^nJ2iK;aK{ICH$ILY5} z%P`G^^TQ}Gi4$9aI6In^11_&t_Z!ut)d?51^{z(g*W-()8I!5tfHhN$NoPr_m(BPP ztXIIZ`O^(%V}|zF(qO-DDhG$*$dL*MD6dkdSj-tMWpO4A5aInDS5q396vq-4p?ssbvBNI8e`k2(H9n6)XKNxyPFc*#2>PA?`KgI5tP0e7D0Pt-i+`vjmDP zVL2oK;s-9oBvEfV|DFwQtR$NR7%N3%O@3Ty&}Dd<4SFkY+nW5XPN&o7M)d{_ugiIT zg+(jqb@mEnvaFL0$#1@vxqfrUH%hk1>#6}muK1$ijy)zl-;|Zl)w#HVcyp-T?t^fy zB*J}aG5hpl2CxHdzo>}~HO3lk;}+=rdY$##?^?&x!#MpoYo3BynXT*-5yIQKV@2@s z&KoRADKe2lXTT?c90YgEHI^CNUKbo0*pmwee6o@$NRrnLmfdK>3RjnXa)ZsHlf5=@ z?MXSy&aH3drVqd`ZgT7on$5yxc&PynXA7M#DzT4-2O2Q228`$nVx_5;gc4aGAYgL( z6GnOx-NsDQ4cK2Nyf}k)mt$h_G9z^_wKprnq)pc$4WbSd394Q>VF!!W1k;)qSB;|E z!K`+yzRsGBmFzSW2o5<7jo>wsxB(Jypk61ObQy00v%v{^m@BSDM*}L7YI0H81!b<> z9B31z7$EHl90OoFMF%m4=ztNe7%YO>+ym*7yN8d4+eTi+x~-C5G6`8E}tu?U9@Tsh6+wS#MTIvY{{)w%83A4 z(gt}(fI*Z5CZXN2g*9SPl-j~lb#bVPpWB&Qq&MuO-P2Hm+ggL_PB}4x=X-%9&^tme z^v=bFCBe}V<_l$HIVQZrxFJBh#KZ6$phAvuK`La*QU)XTS!#olXgi2eVy97UuU1Et zb2rXfcGo=^OGu*BgFfE4`F1uzLJOgDX4kq6chX^|oO<3)v{B^yj2W}g@l*y+J@jJB zHU-KE*e_Ahh`Z38mMtaBb5?%0BV$H`v$`ZE?4uM5`u|9eW z906w=tktmo)au0IyB>F$&7v5{sf@Q8e2Qj!@F^KidI{!)o+XKd!fHW^q2CilHAK_9E; z_1RZGYK4;#z!K^dJ8WEa?8>9LMZ7!8z18XF^|HwV*Xn#x52g8M0oFB^uVN_^0X7&=Ul# zSE&H|9MMsy*w?2yRbZQ74f8I1E)^xTY~>g*x{S1d@0dP2N4mzo5z4d|NH4V?Ux@KW ztp?&L6f>qY&BGTkT1aQWJP1Y$DdG_+EP#`piJc1zAr}P@KL_1ZKw_w-U}84xhb9Eo z*)kJ_20__^Y)+g_7yGxsf0^;Iyu#Xsp81r?g34KE>0}C=PZFKbhgT~YCc2ynZY>1D z1;t$e<5fb#H^n{-(u>Y5?ELKNUXR)n;SdPC!w!T1j|?UO+8P^K=#+*hf>#-E5+vIO z&G&b}HBOhIu*|3EP1EH}7_te0THkX=2aeS_eWs2DFN=a}V=qi&T(XqoE3pZd`a4c2 zR!K70UG&LP*qV{MS&caiB}M>&t>Aucm3ipn8blK>Tc5ap;7o6; zKj7Y$^cLwAh%y9Bf3_n7$+LrgINNE|L2zfY0N~rZitFhHe6?05XD4r7;fL(D6>B4m zRX*qp*JwY)E@C#>O-4KDs-_0Za$PW`HVh+IY)8>`7`)v62HJJqwCgNsb5)6TQZ3de z?LoDc8LFr=gH%H}L2XiNsZ_!Y)fw2SjQSX2kLpz5p_e3TX!pQ*Xa~cT?N-z-;4o9? zy=<{TC7}3HF@j@BjFY!Y97h0zgsm~4pN<692p$(bouke++3EoTIDFakBC`*}qv#5( z9$dl7)H1=NHz|z7WXJ@pkX}A^s@cZXxVU;7KQJp2j5@r6Xto{Z{=p*n42sqZ&y2PcM>(Azz%k!m zZp6gh#haBY8rJp86GWP$ve2{I=P5?rJ<%bVZf+z*{5-J1(AGW^1R6!7IB7k<_uG zF@v-xwVFy_rO_q+Gtx{;PrUIX{+^Ld1nV4iVOo zE@1}oUA>N9DNX@oA$Xh!CkP{s$+Bx$a+Q#vJmF)ljpg04oVW=_sL zocV!%nf{%u+^pfO(*|OwGhEC*E_WNtjgKqsrYbWrU&uL?>&!i3*_)?Whx4oQ@3sYP z=g052H`qTZxYGd~W#?YKIB+6#44>rU3aT_34mUO(C(HFP$doVKNLO;dN% z+s(&YVv)S*=IMWKeLFfn`dQoO?H}FvQO9>P_I4_r56_Hs70)W3b);MD-f&alO{Zh} z*!kH5adZ6XIs50%ooAkRsprDYTjob^nYzHd;G2c-_wKw^x%EI_e&4SbRV_NxKe7MG z#d8OG23}k;b;+5f?Mq+0ZQ^aOEPG^d{(?VQih&feQNdF!&U#wUwnAo z@R8wXhQA%D8`(7S_?ogcr`I~ycC0j107DzD{ zO{cZQ$*oMMMdTkyr=KOc-1&6+Iq={Mqy>5`jqm|7h+Xjt=tA@%y&C+zm@G%C4>|qF zA41$h){=!t(Y$Ulg8X6J;Us>9>BwIQyPp9(c`KfG!b)t2l|<7MkynB^h;zj<{O^R8 zS}#{Sl3y&hnCWa`Yl7PW&rUag1;3gXPCu9 zcney?Ahe;%5Z565unZ@j`C%zeltW8fjWX6FMW2tb_83XOQL3B(O7y{Q+Q;510Gsju ztK?MuVkmKlwJ@!xleI{I)vpZb?LV%c?|;-URmyCX(#v{=zN-^Y(l@-3y}J`J?I)T` z-#Um|)*w}m|7j1T`hnJ%av=Mc`~+qFt$&xmn>?oh#|YqApy6YU0X+kfN%SNOJef^o zXh0~idNM;ZAQva8dBjTci4AxYc32BK@M|to2xR&Ru>6FF74Sj{YzVy=*?g!o=1+15^5Qnqj<@VUUv)w^y$h|> zO>P1%;A|3yj?G+HX7}I(dpE+7jz0e)}qBs-uDcZuu-0>)kBLHN`@$!W=6@+K?| z4sjxvLH3c|3=5Ak$(f?Suc3_0QlnH(elrd=W){c0&uln zB$v^0FXJ10iTn$=?F(2Az6QSnui{Ji6tl%1vJ|{?8~Ah?diw9{p zK7qFJ25{O&vKi+%7sx}f!`}kL`EBGg@;Sb972Y9#Nq$G(;Kp$}E|UXtEcAJ@;nCR0 zDV&Kjb2(ft^w7?d^W6kqan%#$(-G{h5eZ3+bPf5p>>9{H# zUoCH1iVmd94Fq)kOBRm|E$UmidLVTv7)iwy5us&dXayrGB26@oG?uY?AZGPI%<6%d zvi1dTY=_G2BW0co6djWmH&8m^IMkfv+DJ4ZEp N(Ma5^g3V~G{|3&_P$K{U diff --git a/src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.woff b/src/argus_htmx/static/themes/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.woff deleted file mode 100644 index 5753ca47854db534b81ee4321b09c6e37e956bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45108 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 diff --git a/src/argus_htmx/static/themes/kacit.css b/src/argus_htmx/static/themes/kacit.css deleted file mode 100644 index 71782722c..000000000 --- a/src/argus_htmx/static/themes/kacit.css +++ /dev/null @@ -1,378 +0,0 @@ -input, textarea, select, button, option, html, body { - font-family: Georgia, serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -input, textarea, select, button, option, html, body { - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -th { - font-weight: 600; -} -td, th { - border-bottom: 1.08px solid #595959; - overflow: auto; - padding: 14.85px 18px; - text-align: left; - vertical-align: top; -} -thead th { - border-bottom-width: 2.16px; - padding-bottom: 6.3px; -} -table { - display: table; - overflow-x: auto; -} -input, textarea, select, button, option, html, body { - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -fieldset { - display: flex; - flex-direction: row; - flex-wrap: wrap; -} -fieldset legend { - margin: 18px 0; -} -input, textarea, select, button { - border-radius: 3.6px; - display: inline-block; - padding: 9.9px; -} -input+label, input+input[type="checkbox"], input+input[type="radio"], textarea+label, textarea+input[type="checkbox"], textarea+input[type="radio"], select+label, select+input[type="checkbox"], select+input[type="radio"], button+label, button+input[type="checkbox"], button+input[type="radio"] { - page-break-before: always; -} -input, select, label { - margin-right: 3.6px; -} -textarea { - min-height: 90px; - min-width: 360px; -} -label { - display: inline-block; - margin-bottom: 12.6px; -} -label+* { - page-break-before: always; -} -label>input { - margin-bottom: 0; -} -input[type="submit"], input[type="reset"], button { - background: #f2f2f2; - color: #191919; - cursor: pointer; - display: inline; - margin-bottom: 18px; - margin-right: 7.2px; - padding: 6.525px 23.4px; - text-align: center; -} -input[type="submit"]:hover, input[type="reset"]:hover, button:hover { - background: #d9d9d9; - color: #000; -} -input[type="submit"][disabled], input[type="reset"][disabled], button[disabled] { - background: #e6e5e5; - color: #403f3f; - cursor: not-allowed; -} -input[type="submit"], button[type="submit"] { - background: #b58d20; - color: #fff; -} -input[type="submit"]:hover, button[type="submit"]:hover { - background: #6d5513; - color: #bfbfbf; -} -input, select, textarea { - margin-bottom: 18px; -} -input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="phone"], input[type="tel"], input[type="number"], input[type="datetime"], input[type="date"], input[type="month"], input[type="week"], input[type="color"], input[type="time"], input[type="search"], input[type="range"], input[type="file"], input[type="datetime-local"], select, textarea { - border: 1px solid #595959; - padding: 5.4px 6.3px; -} -input[type="checkbox"], input[type="radio"] { - flex-grow: 0; - height: 29.7px; - margin-left: 0; - margin-right: 9px; - vertical-align: middle; -} -input[type="checkbox"]+label, input[type="radio"]+label { - page-break-before: avoid; -} -select[multiple] { - min-width: 270px; -} -input, textarea, select, button, option, html, body { - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -pre, code, kbd, samp, var, output { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14.4px; -} -pre { - border-left: 1.8px solid #59c072; - line-height: 25.2px; - overflow: auto; - padding-left: 18px; -} -pre code { - background: none; - border: 0; - line-height: 29.7px; - padding: 0; -} -code, kbd { - background: #daf1e0; - border-radius: 3.6px; - color: #2a6f3b; - display: inline-block; - line-height: 18px; - padding: 3.6px 6.3px 2.7px; -} -kbd { - background: #2a6f3b; - color: #fff; -} -mark { - background: #ffc; - padding: 0 3.6px; -} -input, textarea, select, button, option, html, body { - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -h1, h2, h3, h4, h5, h6 { - color: #000; - margin-bottom: 18px; -} -h1 { - font-size: 36px; - font-weight: 500; - line-height: 41.4px; - margin-top: 72px; -} -h2 { - font-size: 25.2px; - font-weight: 400; - line-height: 30.6px; - margin-top: 54px; -} -h3 { - font-size: 21.6px; - line-height: 27px; - margin-top: 36px; -} -h4 { - font-size: 18px; - line-height: 23.4px; - margin-top: 18px; -} -h5 { - font-size: 14.4px; - font-weight: bold; - line-height: 21.6px; - text-transform: uppercase; -} -h6 { - color: #595959; - font-size: 14.4px; - font-weight: bold; - line-height: 18px; - text-transform: uppercase; -} -input, textarea, select, button, option, html, body { - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -a { - color: #b58d20; - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -hr { - border-bottom: 1px solid #595959; -} -figcaption, small { - font-size: 15.3px; -} -figcaption { - color: #595959; -} -var, em, i { - font-style: italic; -} -dt, strong, b { - font-weight: 600; -} -del, s { - text-decoration: line-through; -} -ins, u { - text-decoration: underline; -} -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -* { - border: 0; - border-collapse: separate; - border-spacing: 0; - box-sizing: border-box; - margin: 0; - max-width: 100%; - outline: 0; - padding: 0; - vertical-align: baseline; -} -html, body { - width: 100%} -html { - height: 100%} -body { - background: #f5f5f5; - color: #1a1919; - padding: 36px; -} -p, ul, ol, dl, blockquote, hr, pre, table, form, fieldset, figure, address { - margin-bottom: 29.7px; -} -section { - margin-left: auto; - margin-right: auto; - width: 900px; -} -article, header, footer { - padding: 43.2px; -} -article { - background: #fff; - border: 1px solid #d9d9d9; - border-radius: 7.2px; -} -nav { - text-align: center; -} -nav ul { - list-style: none; - margin-left: 0; - text-align: center; -} -nav ul li { - display: inline-block; - margin-left: 9px; - margin-right: 9px; - vertical-align: middle; -} -nav ul li:first-child { - margin-left: 0; -} -nav ul li:last-child { - margin-right: 0; -} -ol, ul { - margin-left: 31.5px; -} -li dl, li ol, li ul { - margin-bottom: 0; -} -dl { - display: inline-block; -} -dt { - padding: 0 18px; -} -dd { - padding: 0 18px 4.5px; -} -dd:last-of-type { - border-bottom: 1.08px solid #595959; -} -dd+dt { - border-top: 1.08px solid #595959; - padding-top: 9px; -} -blockquote { - border-left: 2.16px solid #595959; - padding: 4.5px 18px 4.5px 15.84px; -} -blockquote footer { - color: #595959; - font-size: 13.5px; - margin: 0; -} -blockquote p { - margin-bottom: 0; -} -img { - height: auto; - margin: 0 auto; -} -figure img { - display: block; -} -@media (max-width: 767px) { - body { - padding: 18px 0; -} -article { - border: 0; - padding: 18px; -} -header, footer { - padding: 18px; -} -textarea, input, select { - min-width: 0; -} -fieldset { - min-width: 0; -} -fieldset * { - flex-grow: 1; - page-break-before: auto; -} -section { - width: auto; -} -x:-moz-any-link { - display: table-cell; -} -} - diff --git a/src/argus_htmx/static/themes/mvp.css b/src/argus_htmx/static/themes/mvp.css deleted file mode 100644 index a44c50bcf..000000000 --- a/src/argus_htmx/static/themes/mvp.css +++ /dev/null @@ -1,538 +0,0 @@ -/* MVP.css v1.15 - https://github.com/andybrewer/mvp */ - -:root { - --active-brightness: 0.85; - --border-radius: 5px; - --box-shadow: 2px 2px 10px; - --color-accent: #118bee15; - --color-bg: #fff; - --color-bg-secondary: #e9e9e9; - --color-link: #118bee; - --color-secondary: #920de9; - --color-secondary-accent: #920de90b; - --color-shadow: #f4f4f4; - --color-table: #118bee; - --color-text: #000; - --color-text-secondary: #999; - --color-scrollbar: #cacae8; - --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - --hover-brightness: 1.2; - --justify-important: center; - --justify-normal: left; - --line-height: 1.5; - --width-card: 285px; - --width-card-medium: 460px; - --width-card-wide: 800px; - --width-content: 1080px; -} - -@media (prefers-color-scheme: dark) { - :root[color-mode="user"] { - --color-accent: #0097fc4f; - --color-bg: #333; - --color-bg-secondary: #555; - --color-link: #0097fc; - --color-secondary: #e20de9; - --color-secondary-accent: #e20de94f; - --color-shadow: #bbbbbb20; - --color-table: #0097fc; - --color-text: #f7f7f7; - --color-text-secondary: #aaa; - } -} - -html { - scroll-behavior: smooth; -} - -@media (prefers-reduced-motion: reduce) { - html { - scroll-behavior: auto; - } -} - -/* Layout */ -article aside { - background: var(--color-secondary-accent); - border-left: 4px solid var(--color-secondary); - padding: 0.01rem 0.8rem; -} - -body { - background: var(--color-bg); - color: var(--color-text); - font-family: var(--font-family); - line-height: var(--line-height); - margin: 0; - overflow-x: hidden; - padding: 0; -} - -footer, -header, -main { - margin: 0 auto; - max-width: var(--width-content); - padding: 3rem 1rem; -} - -hr { - background-color: var(--color-bg-secondary); - border: none; - height: 1px; - margin: 4rem 0; - width: 100%; -} - -section { - display: flex; - flex-wrap: wrap; - justify-content: var(--justify-important); -} - -section img, -article img { - max-width: 100%; -} - -section pre { - overflow: auto; -} - -section aside { - border: 1px solid var(--color-bg-secondary); - border-radius: var(--border-radius); - box-shadow: var(--box-shadow) var(--color-shadow); - margin: 1rem; - padding: 1.25rem; - width: var(--width-card); -} - -section aside:hover { - box-shadow: var(--box-shadow) var(--color-bg-secondary); -} - -[hidden] { - display: none; -} - -/* Headers */ -article header, -div header, -main header { - padding-top: 0; -} - -header { - text-align: var(--justify-important); -} - -header a b, -header a em, -header a i, -header a strong { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -header nav img { - margin: 1rem 0; -} - -section header { - padding-top: 0; - width: 100%; -} - -/* Nav */ -nav { - align-items: center; - display: flex; - font-weight: bold; - justify-content: space-between; - margin-bottom: 7rem; -} - -nav ul { - list-style: none; - padding: 0; -} - -nav ul li { - display: inline-block; - margin: 0 0.5rem; - position: relative; - text-align: left; -} - -/* Nav Dropdown */ -nav ul li:hover ul { - display: block; -} - -nav ul li ul { - background: var(--color-bg); - border: 1px solid var(--color-bg-secondary); - border-radius: var(--border-radius); - box-shadow: var(--box-shadow) var(--color-shadow); - display: none; - height: auto; - left: -2px; - padding: .5rem 1rem; - position: absolute; - top: 1.7rem; - white-space: nowrap; - width: auto; - z-index: 1; -} - -nav ul li ul::before { - /* fill gap above to make mousing over them easier */ - content: ""; - position: absolute; - left: 0; - right: 0; - top: -0.5rem; - height: 0.5rem; -} - -nav ul li ul li, -nav ul li ul li a { - display: block; -} - -/* Typography */ -code, -samp { - background-color: var(--color-accent); - border-radius: var(--border-radius); - color: var(--color-text); - display: inline-block; - margin: 0 0.1rem; - padding: 0 0.5rem; -} - -details { - margin: 1.3rem 0; -} - -details summary { - font-weight: bold; - cursor: pointer; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - line-height: var(--line-height); - text-wrap: balance; -} - -mark { - padding: 0.1rem; -} - -ol li, -ul li { - padding: 0.2rem 0; -} - -p { - margin: 0.75rem 0; - padding: 0; - width: 100%; -} - -pre { - margin: 1rem 0; - max-width: var(--width-card-wide); - padding: 1rem 0; -} - -pre code, -pre samp { - display: block; - max-width: var(--width-card-wide); - padding: 0.5rem 2rem; - white-space: pre-wrap; -} - -small { - color: var(--color-text-secondary); -} - -sup { - background-color: var(--color-secondary); - border-radius: var(--border-radius); - color: var(--color-bg); - font-size: xx-small; - font-weight: bold; - margin: 0.2rem; - padding: 0.2rem 0.3rem; - position: relative; - top: -2px; -} - -/* Links */ -a { - color: var(--color-link); - display: inline-block; - font-weight: bold; - text-decoration: underline; -} - -a:hover { - filter: brightness(var(--hover-brightness)); -} - -a:active { - filter: brightness(var(--active-brightness)); -} - -a b, -a em, -a i, -a strong, -button, -input[type="submit"] { - border-radius: var(--border-radius); - display: inline-block; - font-size: medium; - font-weight: bold; - line-height: var(--line-height); - margin: 0.5rem 0; - padding: 1rem 2rem; -} - -button, -input[type="submit"] { - font-family: var(--font-family); -} - -button:hover, -input[type="submit"]:hover { - cursor: pointer; - filter: brightness(var(--hover-brightness)); -} - -button:active, -input[type="submit"]:active { - filter: brightness(var(--active-brightness)); -} - -a b, -a strong, -button, -input[type="submit"] { - background-color: var(--color-link); - border: 2px solid var(--color-link); - color: var(--color-bg); -} - -a em, -a i { - border: 2px solid var(--color-link); - border-radius: var(--border-radius); - color: var(--color-link); - display: inline-block; - padding: 1rem 2rem; -} - -article aside a { - color: var(--color-secondary); -} - -/* Images */ -figure { - margin: 0; - padding: 0; -} - -figure img { - max-width: 100%; -} - -figure figcaption { - color: var(--color-text-secondary); -} - -/* Forms */ -button:disabled, -input:disabled { - background: var(--color-bg-secondary); - border-color: var(--color-bg-secondary); - color: var(--color-text-secondary); - cursor: not-allowed; -} - -button[disabled]:hover, -input[type="submit"][disabled]:hover { - filter: none; -} - -form { - border: 1px solid var(--color-bg-secondary); - border-radius: var(--border-radius); - box-shadow: var(--box-shadow) var(--color-shadow); - display: block; - max-width: var(--width-card-wide); - min-width: var(--width-card); - padding: 1.5rem; - text-align: var(--justify-normal); -} - -form header { - margin: 1.5rem 0; - padding: 1.5rem 0; -} - -input, -label, -select, -textarea { - display: block; - font-size: inherit; - max-width: var(--width-card-wide); -} - -input[type="checkbox"], -input[type="radio"] { - display: inline-block; -} - -input[type="checkbox"]+label, -input[type="radio"]+label { - display: inline-block; - font-weight: normal; - position: relative; - top: 1px; -} - -input[type="range"] { - padding: 0.4rem 0; -} - -input, -select, -textarea { - border: 1px solid var(--color-bg-secondary); - border-radius: var(--border-radius); - margin-bottom: 1rem; - padding: 0.4rem 0.8rem; -} - -input[type="text"], -input[type="password"] -textarea { - width: calc(100% - 1.6rem); -} - -input[readonly], -textarea[readonly] { - background-color: var(--color-bg-secondary); -} - -label { - font-weight: bold; - margin-bottom: 0.2rem; -} - -/* Popups */ -dialog { - border: 1px solid var(--color-bg-secondary); - border-radius: var(--border-radius); - box-shadow: var(--box-shadow) var(--color-shadow); - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 50%; - z-index: 999; -} - -/* Tables */ -table { - border: 1px solid var(--color-bg-secondary); - border-radius: var(--border-radius); - border-spacing: 0; - display: inline-block; - max-width: 100%; - overflow-x: auto; - padding: 0; - white-space: nowrap; -} - -table td, -table th, -table tr { - padding: 0.4rem 0.8rem; - text-align: var(--justify-important); -} - -table thead { - background-color: var(--color-table); - border-collapse: collapse; - border-radius: var(--border-radius); - color: var(--color-bg); - margin: 0; - padding: 0; -} - -table thead tr:first-child th:first-child { - border-top-left-radius: var(--border-radius); -} - -table thead tr:first-child th:last-child { - border-top-right-radius: var(--border-radius); -} - -table thead th:first-child, -table tr td:first-child { - text-align: var(--justify-normal); -} - -table tr:nth-child(even) { - background-color: var(--color-accent); -} - -/* Quotes */ -blockquote { - display: block; - font-size: x-large; - line-height: var(--line-height); - margin: 1rem auto; - max-width: var(--width-card-medium); - padding: 1.5rem 1rem; - text-align: var(--justify-important); -} - -blockquote footer { - color: var(--color-text-secondary); - display: block; - font-size: small; - line-height: var(--line-height); - padding: 1.5rem 0; -} - -/* Scrollbars */ -* { - scrollbar-width: thin; - scrollbar-color: var(--color-scrollbar) transparent; -} - -*::-webkit-scrollbar { - width: 5px; - height: 5px; -} - -*::-webkit-scrollbar-track { - background: transparent; -} - -*::-webkit-scrollbar-thumb { - background-color: var(--color-scrollbar); - border-radius: 10px; -} diff --git a/src/argus_htmx/static/themes/no-class.css b/src/argus_htmx/static/themes/no-class.css deleted file mode 100644 index a1856d91e..000000000 --- a/src/argus_htmx/static/themes/no-class.css +++ /dev/null @@ -1,483 +0,0 @@ -/*! sanitize.css v5.0.0 | CC0 License | github.com/jonathantneal/sanitize.css */ -*, ::after, ::before { - background-repeat: no-repeat; - box-sizing: inherit; -} -::after, ::before { - text-decoration: inherit; - vertical-align: inherit; -} -html { - box-sizing: border-box; - cursor: default; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%} -article, aside, footer, header, nav, section { - display: block; -} -body { - margin: 0; -} -h1 { - font-size: 2em; - margin: .67em 0; -} -figcaption, figure, main { - display: block; -} -figure { - margin: 1em 40px; -} -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} -nav ol, nav ul { - list-style: none; -} -pre { - font-family: monospace, monospace; - font-size: 1em; -} -a { - background-color: transparent; - -webkit-text-decoration-skip: objects; -} -abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted; -} -b, strong { - font-weight: inherit; -} -b, strong { - font-weight: bolder; -} -code, kbd, samp { - font-family: monospace, monospace; - font-size: 1em; -} -dfn { - font-style: italic; -} -mark { - background-color: #ff0; - color: #000; -} -small { - font-size: 80%} -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sub { - bottom: -.25em; -} -sup { - top: -.5em; -} -::-moz-selection { - background-color: #b3d4fc; - color: #000; - text-shadow: none; -} -::selection { - background-color: #b3d4fc; - color: #000; - text-shadow: none; -} -audio, canvas, iframe, img, svg, video { - vertical-align: middle; -} -audio, video { - display: inline-block; -} -audio:not([controls]) { - display: none; - height: 0; -} -img { - border-style: none; -} -svg { - fill: currentColor; -} -svg:not(:root) { - overflow: hidden; -} -table { - border-collapse: collapse; -} -button, input, optgroup, select, textarea { - margin: 0; -} -button, input, select, textarea { - background-color: transparent; - color: inherit; - font-size: inherit; - line-height: inherit; -} -button, input { - overflow: visible; -} -button, select { - text-transform: none; -} -[type=reset], [type=submit], button, html [type=button] { - -webkit-appearance: button; -} -[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner { - border-style: none; - padding: 0; -} -[type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring { - outline: 1px dotted ButtonText; -} -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; -} -progress { - display: inline-block; - vertical-align: baseline; -} -textarea { - overflow: auto; - resize: vertical; -} -[type=checkbox], [type=radio] { - box-sizing: border-box; - padding: 0; -} -[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button { - height: auto; -} -[type=search] { - -webkit-appearance: textfield; - outline-offset: -2px; -} -[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} -details, menu { - display: block; -} -summary { - display: list-item; -} -canvas { - display: inline-block; -} -template { - display: none; -} -[tabindex], a, area, button, input, label, select, summary, textarea { - -ms-touch-action: manipulation; - touch-action: manipulation; -} -[hidden] { - display: none; -} -[aria-busy=true] { - cursor: progress; -} -[aria-controls] { - cursor: pointer; -} -[aria-hidden=false][hidden]:not(:focus) { - clip: rect(0, 0, 0, 0); - display: inherit; - position: absolute; -} -[aria-disabled] { - cursor: default; -} -/*! no-class.css v1.0.0 | MIT License | https://github.com/davidpaulsson/no-class */html { - font-size: 62.5%; - -webkit-font-kerning: normal; - font-kerning: normal; - font-synthesis: none; - text-rendering: optimizeLegibility; -} -body { - font-family: HelveticaNeue-Light, "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; - font-weight: 300; - line-height: 1.6; - font-size: 16px; - font-size: 1.6rem; -} -h1 { - font-weight: 300; - line-height: 1; - margin-top: 1em; - margin-bottom: 1em; - font-size: 36px; - font-size: 3.6rem; -} -h2 { - font-weight: 300; - line-height: 1; - margin-top: 1em; - margin-bottom: 1em; - font-size: 30px; - font-size: 3rem; -} -h3 { - font-weight: 300; - line-height: 1; - margin-top: 1em; - margin-bottom: 1em; - font-size: 24px; - font-size: 2.4rem; -} -h4 { - font-weight: 300; - line-height: 1; - margin-top: 1em; - margin-bottom: 1em; - font-size: 20px; - font-size: 2rem; -} -h5 { - font-weight: 300; - line-height: 1; - margin-top: 1em; - margin-bottom: 1em; - font-size: 16px; - font-size: 1.6rem; -} -h6 { - font-weight: 300; - line-height: 1; - margin-top: 1em; - margin-bottom: 1em; - font-size: 14px; - font-size: 1.4rem; -} -p { - margin-bottom: 1em; -} -code { - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 80%; - vertical-align: baseline; -} -pre { - overflow: auto; - margin: .5em 0; - padding: 0 1em!important; - background: #f5f2f0; -} -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -cite { - font-style: italic; -} -abbr, acronym { - cursor: help; - border-bottom: .1em dotted; -} -blockquote, q { - margin-bottom: 1em; - padding-left: 1em; - quotes: none; - border-left: 3px solid rgba(0, 0, 0, .1); -} -ol, ul { - margin-bottom: 1em; - padding-left: 1.5em; -} -ol ol, ol ul, ul ol, ul ul { - margin-bottom: 0; -} -a { - text-decoration: none; - color: #3498db; - border-bottom: 1px solid #3498db; -} -a:hover { - cursor: pointer; - color: #217dbb; - border-bottom: 0; -} -::-moz-selection { - color: #000; - background: rgba(0, 0, 0, .1); - text-shadow: none; -} -::selection { - color: #000; - background: rgba(0, 0, 0, .1); - text-shadow: none; -} -table { - width: 100%} -td, th { - padding: .25em; - text-align: left; -} -td:first-child, th:first-child { - padding-left: 0; -} -td:last-child, th:last-child { - padding-right: 0; -} -tbody tr:nth-of-type(odd) { - background-color: #f7f7f7; -} -[colspan] { - text-align: center; -} -[colspan='1'] { - text-align: left; -} -[rowspan] { - vertical-align: middle; -} -[rowspan='1'] { - vertical-align: top; -} -hr { - height: 1px; - margin: 1em 0; - border: none; - background-color: #ddd; -} -fieldset { - min-width: 0; - margin: 0; - padding: 1em; - border: 1px solid #ddd; - border-radius: 4px; -} -fieldset legend { - font-weight: 700; - line-height: inherit; - display: block; - padding: 0 .5em; - border: 0; - background-color: #fff; - font-size: 16px; - font-size: 1.6rem; -} -label { - font-weight: 700; - display: inline-block; - display: block; - max-width: 100%; - margin-bottom: 5px; -} -input, textarea { - width: 100%; - margin-bottom: 1em; - padding: .25em .5em; - border: 1px solid #ddd; - border-radius: 4px; -} -input:hover, textarea:hover { - border: 1px solid #c4c4c4; -} -input:focus, textarea:focus { - border: 1px solid #3498db; - outline: 0; -} -button { - font-weight: 700; - line-height: 1.4; - display: inline-block; - padding: .25em .55em; - cursor: pointer; - white-space: nowrap; - text-decoration: none; - color: inherit; - border: 1px solid #d5d5d5; - border-radius: 4px; - background-color: #eee; - background-image: linear-gradient(#fcfcfc, #eee); - background-repeat: no-repeat; - text-shadow: 0 1px 0 #fff; -} -button:hover { - text-decoration: none; - color: inherit; - border: 1px solid #ccc; - background-color: #ddd; - background-image: linear-gradient(#eee, #ddd); -} -button:focus { - text-decoration: none; - border-color: #3498db; - outline: 0; -} -button:active { - border-color: #b5b5b5; - background-color: #dcdcdc; - background-image: none; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15); -} -button:disabled { - color: #999; - background-color: #efefef; - background-image: none; -} -button:disabled:hover { - cursor: not-allowed; -} -aside { - background-color: #eee; - padding: 0 .5em; - border-radius: 4px; -} -main { - max-width: 960px; - margin: 0 auto; - padding: 20px; -} -header ul { - padding-left: 0; - list-style-type: none; -} -header li { - text-align: center; - border-bottom: 1px solid #ddd; -} -@media (min-width:40em) { - header li { - display: inline-block; - text-align: left; - border-bottom: none; -} -header li:first-child a { - padding-left: 0; -} -header li:last-child a { - padding-right: 0; -} -}header li a { - display: block; - width: 100%; - padding: .25em .5em; - border-bottom: none; -} diff --git a/src/argus_htmx/static/themes/pico.classless.css b/src/argus_htmx/static/themes/pico.classless.css deleted file mode 100644 index d19f0f9b6..000000000 --- a/src/argus_htmx/static/themes/pico.classless.css +++ /dev/null @@ -1,2431 +0,0 @@ -@charset "UTF-8"; -/*! - * Pico CSS ✨ v2.0.6 (https://picocss.com) - * Copyright 2019-2024 - Licensed under MIT - */ -/** - * Styles - */ -:root { - --pico-font-family-emoji: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --pico-font-family-sans-serif: system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial, "Helvetica Neue", sans-serif, var(--pico-font-family-emoji); - --pico-font-family-monospace: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace, var(--pico-font-family-emoji); - --pico-font-family: var(--pico-font-family-sans-serif); - --pico-line-height: 1.5; - --pico-font-weight: 400; - --pico-font-size: 100%; - --pico-text-underline-offset: 0.1rem; - --pico-border-radius: 0.25rem; - --pico-border-width: 0.0625rem; - --pico-outline-width: 0.125rem; - --pico-transition: 0.2s ease-in-out; - --pico-spacing: 1rem; - --pico-typography-spacing-vertical: 1rem; - --pico-block-spacing-vertical: var(--pico-spacing); - --pico-block-spacing-horizontal: var(--pico-spacing); - --pico-form-element-spacing-vertical: 0.75rem; - --pico-form-element-spacing-horizontal: 1rem; - --pico-group-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus); - --pico-group-box-shadow-focus-with-input: 0 0 0 0.0625rem var(--pico-form-element-border-color); - --pico-modal-overlay-backdrop-filter: blur(0.375rem); - --pico-nav-element-spacing-vertical: 1rem; - --pico-nav-element-spacing-horizontal: 0.5rem; - --pico-nav-link-spacing-vertical: 0.5rem; - --pico-nav-link-spacing-horizontal: 0.5rem; - --pico-nav-breadcrumb-divider: ">"; - --pico-icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); - --pico-icon-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E"); - --pico-icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); - --pico-icon-date: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); - --pico-icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E"); - --pico-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); - --pico-icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E"); - --pico-icon-loading: url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E"); -} -@media (min-width: 576px) { - :root { - --pico-font-size: 106.25%; - } -} -@media (min-width: 768px) { - :root { - --pico-font-size: 112.5%; - } -} -@media (min-width: 1024px) { - :root { - --pico-font-size: 118.75%; - } -} -@media (min-width: 1280px) { - :root { - --pico-font-size: 125%; - } -} -@media (min-width: 1536px) { - :root { - --pico-font-size: 131.25%; - } -} - -a { - --pico-text-decoration: underline; -} - -small { - --pico-font-size: 0.875em; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - --pico-font-weight: 700; -} - -h1 { - --pico-font-size: 2rem; - --pico-line-height: 1.125; - --pico-typography-spacing-top: 3rem; -} - -h2 { - --pico-font-size: 1.75rem; - --pico-line-height: 1.15; - --pico-typography-spacing-top: 2.625rem; -} - -h3 { - --pico-font-size: 1.5rem; - --pico-line-height: 1.175; - --pico-typography-spacing-top: 2.25rem; -} - -h4 { - --pico-font-size: 1.25rem; - --pico-line-height: 1.2; - --pico-typography-spacing-top: 1.874rem; -} - -h5 { - --pico-font-size: 1.125rem; - --pico-line-height: 1.225; - --pico-typography-spacing-top: 1.6875rem; -} - -h6 { - --pico-font-size: 1rem; - --pico-line-height: 1.25; - --pico-typography-spacing-top: 1.5rem; -} - -thead th, -thead td, -tfoot th, -tfoot td { - --pico-font-weight: 600; - --pico-border-width: 0.1875rem; -} - -pre, -code, -kbd, -samp { - --pico-font-family: var(--pico-font-family-monospace); -} - -kbd { - --pico-font-weight: bolder; -} - -input:not([type=submit], -[type=button], -[type=reset], -[type=checkbox], -[type=radio], -[type=file]), -:where(select, textarea) { - --pico-outline-width: 0.0625rem; -} - -[type=search] { - --pico-border-radius: 5rem; -} - -[type=checkbox], -[type=radio] { - --pico-border-width: 0.125rem; -} - -[type=checkbox][role=switch] { - --pico-border-width: 0.1875rem; -} - -[role=search] { - --pico-border-radius: 5rem; -} - -[role=search] button, -[role=search] [type=submit], -[role=search] [type=button], -[role=search] [role=button], -[role=group] button, -[role=group] [type=submit], -[role=group] [type=button], -[role=group] [role=button] { - --pico-form-element-spacing-horizontal: 2rem; -} - -details summary[role=button]::after { - filter: brightness(0) invert(1); -} - -[aria-busy=true]:not(input, select, textarea):is(button, [type=submit], [type=button], [type=reset], [role=button])::before { - filter: brightness(0) invert(1); -} - -/** - * Color schemes - */ -[data-theme=light], -:root:not([data-theme=dark]) { - --pico-background-color: #fff; - --pico-color: #373c44; - --pico-text-selection-color: rgba(2, 154, 232, 0.25); - --pico-muted-color: #646b79; - --pico-muted-border-color: #e7eaf0; - --pico-primary: #0172ad; - --pico-primary-background: #0172ad; - --pico-primary-border: var(--pico-primary-background); - --pico-primary-underline: rgba(1, 114, 173, 0.5); - --pico-primary-hover: #015887; - --pico-primary-hover-background: #02659a; - --pico-primary-hover-border: var(--pico-primary-hover-background); - --pico-primary-hover-underline: var(--pico-primary-hover); - --pico-primary-focus: rgba(2, 154, 232, 0.5); - --pico-primary-inverse: #fff; - --pico-secondary: #5d6b89; - --pico-secondary-background: #525f7a; - --pico-secondary-border: var(--pico-secondary-background); - --pico-secondary-underline: rgba(93, 107, 137, 0.5); - --pico-secondary-hover: #48536b; - --pico-secondary-hover-background: #48536b; - --pico-secondary-hover-border: var(--pico-secondary-hover-background); - --pico-secondary-hover-underline: var(--pico-secondary-hover); - --pico-secondary-focus: rgba(93, 107, 137, 0.25); - --pico-secondary-inverse: #fff; - --pico-contrast: #181c25; - --pico-contrast-background: #181c25; - --pico-contrast-border: var(--pico-contrast-background); - --pico-contrast-underline: rgba(24, 28, 37, 0.5); - --pico-contrast-hover: #000; - --pico-contrast-hover-background: #000; - --pico-contrast-hover-border: var(--pico-contrast-hover-background); - --pico-contrast-hover-underline: var(--pico-secondary-hover); - --pico-contrast-focus: rgba(93, 107, 137, 0.25); - --pico-contrast-inverse: #fff; - --pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024), 0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03), 0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036), 0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302), 0.5rem 1rem 6rem rgba(129, 145, 181, 0.06), 0 0 0 0.0625rem rgba(129, 145, 181, 0.015); - --pico-h1-color: #2d3138; - --pico-h2-color: #373c44; - --pico-h3-color: #424751; - --pico-h4-color: #4d535e; - --pico-h5-color: #5c6370; - --pico-h6-color: #646b79; - --pico-mark-background-color: #fde7c0; - --pico-mark-color: #0f1114; - --pico-ins-color: #1d6a54; - --pico-del-color: #883935; - --pico-blockquote-border-color: var(--pico-muted-border-color); - --pico-blockquote-footer-color: var(--pico-muted-color); - --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-table-border-color: var(--pico-muted-border-color); - --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375); - --pico-code-background-color: #f3f5f7; - --pico-code-color: #646b79; - --pico-code-kbd-background-color: var(--pico-color); - --pico-code-kbd-color: var(--pico-background-color); - --pico-form-element-background-color: #fbfcfc; - --pico-form-element-selected-background-color: #dfe3eb; - --pico-form-element-border-color: #cfd5e2; - --pico-form-element-color: #23262c; - --pico-form-element-placeholder-color: var(--pico-muted-color); - --pico-form-element-active-background-color: #fff; - --pico-form-element-active-border-color: var(--pico-primary-border); - --pico-form-element-focus-color: var(--pico-primary-border); - --pico-form-element-disabled-opacity: 0.5; - --pico-form-element-invalid-border-color: #b86a6b; - --pico-form-element-invalid-active-border-color: #c84f48; - --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color); - --pico-form-element-valid-border-color: #4c9b8a; - --pico-form-element-valid-active-border-color: #279977; - --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color); - --pico-switch-background-color: #bfc7d9; - --pico-switch-checked-background-color: var(--pico-primary-background); - --pico-switch-color: #fff; - --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-range-border-color: #dfe3eb; - --pico-range-active-border-color: #bfc7d9; - --pico-range-thumb-border-color: var(--pico-background-color); - --pico-range-thumb-color: var(--pico-secondary-background); - --pico-range-thumb-active-color: var(--pico-primary-background); - --pico-accordion-border-color: var(--pico-muted-border-color); - --pico-accordion-active-summary-color: var(--pico-primary-hover); - --pico-accordion-close-summary-color: var(--pico-color); - --pico-accordion-open-summary-color: var(--pico-muted-color); - --pico-card-background-color: var(--pico-background-color); - --pico-card-border-color: var(--pico-muted-border-color); - --pico-card-box-shadow: var(--pico-box-shadow); - --pico-card-sectioning-background-color: #fbfcfc; - --pico-loading-spinner-opacity: 0.5; - --pico-modal-overlay-background-color: rgba(232, 234, 237, 0.75); - --pico-progress-background-color: #dfe3eb; - --pico-progress-color: var(--pico-primary-background); - --pico-tooltip-background-color: var(--pico-contrast-background); - --pico-tooltip-color: var(--pico-contrast-inverse); - --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 155, 138)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); - --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200, 79, 72)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E"); - color-scheme: light; -} -[data-theme=light] input:is([type=submit], -[type=button], -[type=reset], -[type=checkbox], -[type=radio], -[type=file]), -:root:not([data-theme=dark]) input:is([type=submit], -[type=button], -[type=reset], -[type=checkbox], -[type=radio], -[type=file]) { - --pico-form-element-focus-color: var(--pico-primary-focus); -} - -@media only screen and (prefers-color-scheme: dark) { - :root:not([data-theme]) { - --pico-background-color: #13171f; - --pico-color: #c2c7d0; - --pico-text-selection-color: rgba(1, 170, 255, 0.1875); - --pico-muted-color: #7b8495; - --pico-muted-border-color: #202632; - --pico-primary: #01aaff; - --pico-primary-background: #0172ad; - --pico-primary-border: var(--pico-primary-background); - --pico-primary-underline: rgba(1, 170, 255, 0.5); - --pico-primary-hover: #79c0ff; - --pico-primary-hover-background: #017fc0; - --pico-primary-hover-border: var(--pico-primary-hover-background); - --pico-primary-hover-underline: var(--pico-primary-hover); - --pico-primary-focus: rgba(1, 170, 255, 0.375); - --pico-primary-inverse: #fff; - --pico-secondary: #969eaf; - --pico-secondary-background: #525f7a; - --pico-secondary-border: var(--pico-secondary-background); - --pico-secondary-underline: rgba(150, 158, 175, 0.5); - --pico-secondary-hover: #b3b9c5; - --pico-secondary-hover-background: #5d6b89; - --pico-secondary-hover-border: var(--pico-secondary-hover-background); - --pico-secondary-hover-underline: var(--pico-secondary-hover); - --pico-secondary-focus: rgba(144, 158, 190, 0.25); - --pico-secondary-inverse: #fff; - --pico-contrast: #dfe3eb; - --pico-contrast-background: #eff1f4; - --pico-contrast-border: var(--pico-contrast-background); - --pico-contrast-underline: rgba(223, 227, 235, 0.5); - --pico-contrast-hover: #fff; - --pico-contrast-hover-background: #fff; - --pico-contrast-hover-border: var(--pico-contrast-hover-background); - --pico-contrast-hover-underline: var(--pico-contrast-hover); - --pico-contrast-focus: rgba(207, 213, 226, 0.25); - --pico-contrast-inverse: #000; - --pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 9, 12, 0.06), 0 0 0 0.0625rem rgba(7, 9, 12, 0.015); - --pico-h1-color: #f0f1f3; - --pico-h2-color: #e0e3e7; - --pico-h3-color: #c2c7d0; - --pico-h4-color: #b3b9c5; - --pico-h5-color: #a4acba; - --pico-h6-color: #8891a4; - --pico-mark-background-color: #014063; - --pico-mark-color: #fff; - --pico-ins-color: #62af9a; - --pico-del-color: #ce7e7b; - --pico-blockquote-border-color: var(--pico-muted-border-color); - --pico-blockquote-footer-color: var(--pico-muted-color); - --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-table-border-color: var(--pico-muted-border-color); - --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375); - --pico-code-background-color: #1a1f28; - --pico-code-color: #8891a4; - --pico-code-kbd-background-color: var(--pico-color); - --pico-code-kbd-color: var(--pico-background-color); - --pico-form-element-background-color: #1c212c; - --pico-form-element-selected-background-color: #2a3140; - --pico-form-element-border-color: #2a3140; - --pico-form-element-color: #e0e3e7; - --pico-form-element-placeholder-color: #8891a4; - --pico-form-element-active-background-color: #1a1f28; - --pico-form-element-active-border-color: var(--pico-primary-border); - --pico-form-element-focus-color: var(--pico-primary-border); - --pico-form-element-disabled-opacity: 0.5; - --pico-form-element-invalid-border-color: #964a50; - --pico-form-element-invalid-active-border-color: #b7403b; - --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color); - --pico-form-element-valid-border-color: #2a7b6f; - --pico-form-element-valid-active-border-color: #16896a; - --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color); - --pico-switch-background-color: #333c4e; - --pico-switch-checked-background-color: var(--pico-primary-background); - --pico-switch-color: #fff; - --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-range-border-color: #202632; - --pico-range-active-border-color: #2a3140; - --pico-range-thumb-border-color: var(--pico-background-color); - --pico-range-thumb-color: var(--pico-secondary-background); - --pico-range-thumb-active-color: var(--pico-primary-background); - --pico-accordion-border-color: var(--pico-muted-border-color); - --pico-accordion-active-summary-color: var(--pico-primary-hover); - --pico-accordion-close-summary-color: var(--pico-color); - --pico-accordion-open-summary-color: var(--pico-muted-color); - --pico-card-background-color: #181c25; - --pico-card-border-color: var(--pico-card-background-color); - --pico-card-box-shadow: var(--pico-box-shadow); - --pico-card-sectioning-background-color: #1a1f28; - --pico-loading-spinner-opacity: 0.5; - --pico-modal-overlay-background-color: rgba(8, 9, 10, 0.75); - --pico-progress-background-color: #202632; - --pico-progress-color: var(--pico-primary-background); - --pico-tooltip-background-color: var(--pico-contrast-background); - --pico-tooltip-color: var(--pico-contrast-inverse); - --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); - --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E"); - color-scheme: dark; - } - :root:not([data-theme]) input:is([type=submit], - [type=button], - [type=reset], - [type=checkbox], - [type=radio], - [type=file]) { - --pico-form-element-focus-color: var(--pico-primary-focus); - } -} -[data-theme=dark] { - --pico-background-color: #13171f; - --pico-color: #c2c7d0; - --pico-text-selection-color: rgba(1, 170, 255, 0.1875); - --pico-muted-color: #7b8495; - --pico-muted-border-color: #202632; - --pico-primary: #01aaff; - --pico-primary-background: #0172ad; - --pico-primary-border: var(--pico-primary-background); - --pico-primary-underline: rgba(1, 170, 255, 0.5); - --pico-primary-hover: #79c0ff; - --pico-primary-hover-background: #017fc0; - --pico-primary-hover-border: var(--pico-primary-hover-background); - --pico-primary-hover-underline: var(--pico-primary-hover); - --pico-primary-focus: rgba(1, 170, 255, 0.375); - --pico-primary-inverse: #fff; - --pico-secondary: #969eaf; - --pico-secondary-background: #525f7a; - --pico-secondary-border: var(--pico-secondary-background); - --pico-secondary-underline: rgba(150, 158, 175, 0.5); - --pico-secondary-hover: #b3b9c5; - --pico-secondary-hover-background: #5d6b89; - --pico-secondary-hover-border: var(--pico-secondary-hover-background); - --pico-secondary-hover-underline: var(--pico-secondary-hover); - --pico-secondary-focus: rgba(144, 158, 190, 0.25); - --pico-secondary-inverse: #fff; - --pico-contrast: #dfe3eb; - --pico-contrast-background: #eff1f4; - --pico-contrast-border: var(--pico-contrast-background); - --pico-contrast-underline: rgba(223, 227, 235, 0.5); - --pico-contrast-hover: #fff; - --pico-contrast-hover-background: #fff; - --pico-contrast-hover-border: var(--pico-contrast-hover-background); - --pico-contrast-hover-underline: var(--pico-contrast-hover); - --pico-contrast-focus: rgba(207, 213, 226, 0.25); - --pico-contrast-inverse: #000; - --pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 9, 12, 0.06), 0 0 0 0.0625rem rgba(7, 9, 12, 0.015); - --pico-h1-color: #f0f1f3; - --pico-h2-color: #e0e3e7; - --pico-h3-color: #c2c7d0; - --pico-h4-color: #b3b9c5; - --pico-h5-color: #a4acba; - --pico-h6-color: #8891a4; - --pico-mark-background-color: #014063; - --pico-mark-color: #fff; - --pico-ins-color: #62af9a; - --pico-del-color: #ce7e7b; - --pico-blockquote-border-color: var(--pico-muted-border-color); - --pico-blockquote-footer-color: var(--pico-muted-color); - --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-table-border-color: var(--pico-muted-border-color); - --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375); - --pico-code-background-color: #1a1f28; - --pico-code-color: #8891a4; - --pico-code-kbd-background-color: var(--pico-color); - --pico-code-kbd-color: var(--pico-background-color); - --pico-form-element-background-color: #1c212c; - --pico-form-element-selected-background-color: #2a3140; - --pico-form-element-border-color: #2a3140; - --pico-form-element-color: #e0e3e7; - --pico-form-element-placeholder-color: #8891a4; - --pico-form-element-active-background-color: #1a1f28; - --pico-form-element-active-border-color: var(--pico-primary-border); - --pico-form-element-focus-color: var(--pico-primary-border); - --pico-form-element-disabled-opacity: 0.5; - --pico-form-element-invalid-border-color: #964a50; - --pico-form-element-invalid-active-border-color: #b7403b; - --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color); - --pico-form-element-valid-border-color: #2a7b6f; - --pico-form-element-valid-active-border-color: #16896a; - --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color); - --pico-switch-background-color: #333c4e; - --pico-switch-checked-background-color: var(--pico-primary-background); - --pico-switch-color: #fff; - --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - --pico-range-border-color: #202632; - --pico-range-active-border-color: #2a3140; - --pico-range-thumb-border-color: var(--pico-background-color); - --pico-range-thumb-color: var(--pico-secondary-background); - --pico-range-thumb-active-color: var(--pico-primary-background); - --pico-accordion-border-color: var(--pico-muted-border-color); - --pico-accordion-active-summary-color: var(--pico-primary-hover); - --pico-accordion-close-summary-color: var(--pico-color); - --pico-accordion-open-summary-color: var(--pico-muted-color); - --pico-card-background-color: #181c25; - --pico-card-border-color: var(--pico-card-background-color); - --pico-card-box-shadow: var(--pico-box-shadow); - --pico-card-sectioning-background-color: #1a1f28; - --pico-loading-spinner-opacity: 0.5; - --pico-modal-overlay-background-color: rgba(8, 9, 10, 0.75); - --pico-progress-background-color: #202632; - --pico-progress-color: var(--pico-primary-background); - --pico-tooltip-background-color: var(--pico-contrast-background); - --pico-tooltip-color: var(--pico-contrast-inverse); - --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); - --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E"); - color-scheme: dark; -} -[data-theme=dark] input:is([type=submit], -[type=button], -[type=reset], -[type=checkbox], -[type=radio], -[type=file]) { - --pico-form-element-focus-color: var(--pico-primary-focus); -} - -progress, -[type=checkbox], -[type=radio], -[type=range] { - accent-color: var(--pico-primary); -} - -/** - * Document - * Content-box & Responsive typography - */ -*, -*::before, -*::after { - box-sizing: border-box; - background-repeat: no-repeat; -} - -::before, -::after { - text-decoration: inherit; - vertical-align: inherit; -} - -:where(:root) { - -webkit-tap-highlight-color: transparent; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - text-size-adjust: 100%; - background-color: var(--pico-background-color); - color: var(--pico-color); - font-weight: var(--pico-font-weight); - font-size: var(--pico-font-size); - line-height: var(--pico-line-height); - font-family: var(--pico-font-family); - text-underline-offset: var(--pico-text-underline-offset); - text-rendering: optimizeLegibility; - overflow-wrap: break-word; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; -} - -/** - * Landmarks - */ -body { - width: 100%; - margin: 0; -} - -main { - display: block; -} - -body > header, -body > main, -body > footer { - width: 100%; - margin-right: auto; - margin-left: auto; - padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal); -} -@media (min-width: 576px) { - body > header, - body > main, - body > footer { - max-width: 510px; - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 768px) { - body > header, - body > main, - body > footer { - max-width: 700px; - } -} -@media (min-width: 1024px) { - body > header, - body > main, - body > footer { - max-width: 950px; - } -} -@media (min-width: 1280px) { - body > header, - body > main, - body > footer { - max-width: 1200px; - } -} -@media (min-width: 1536px) { - body > header, - body > main, - body > footer { - max-width: 1450px; - } -} - -/** - * Section - */ -section { - margin-bottom: var(--pico-block-spacing-vertical); -} - -/** - * Typography - */ -b, -strong { - font-weight: bolder; -} - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -address, -blockquote, -dl, -ol, -p, -pre, -table, -ul { - margin-top: 0; - margin-bottom: var(--pico-typography-spacing-vertical); - color: var(--pico-color); - font-style: normal; - font-weight: var(--pico-font-weight); -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin-top: 0; - margin-bottom: var(--pico-typography-spacing-vertical); - color: var(--pico-color); - font-weight: var(--pico-font-weight); - font-size: var(--pico-font-size); - line-height: var(--pico-line-height); - font-family: var(--pico-font-family); -} - -h1 { - --pico-color: var(--pico-h1-color); -} - -h2 { - --pico-color: var(--pico-h2-color); -} - -h3 { - --pico-color: var(--pico-h3-color); -} - -h4 { - --pico-color: var(--pico-h4-color); -} - -h5 { - --pico-color: var(--pico-h5-color); -} - -h6 { - --pico-color: var(--pico-h6-color); -} - -:where(article, address, blockquote, dl, figure, form, ol, p, pre, table, ul) ~ :is(h1, h2, h3, h4, h5, h6) { - margin-top: var(--pico-typography-spacing-top); -} - -p { - margin-bottom: var(--pico-typography-spacing-vertical); -} - -hgroup { - margin-bottom: var(--pico-typography-spacing-vertical); -} -hgroup > * { - margin-top: 0; - margin-bottom: 0; -} -hgroup > *:not(:first-child):last-child { - --pico-color: var(--pico-muted-color); - --pico-font-weight: unset; - font-size: 1rem; -} - -:where(ol, ul) li { - margin-bottom: calc(var(--pico-typography-spacing-vertical) * 0.25); -} - -:where(dl, ol, ul) :where(dl, ol, ul) { - margin: 0; - margin-top: calc(var(--pico-typography-spacing-vertical) * 0.25); -} - -ul li { - list-style: square; -} - -mark { - padding: 0.125rem 0.25rem; - background-color: var(--pico-mark-background-color); - color: var(--pico-mark-color); - vertical-align: baseline; -} - -blockquote { - display: block; - margin: var(--pico-typography-spacing-vertical) 0; - padding: var(--pico-spacing); - border-right: none; - border-left: 0.25rem solid var(--pico-blockquote-border-color); - border-inline-start: 0.25rem solid var(--pico-blockquote-border-color); - border-inline-end: none; -} -blockquote footer { - margin-top: calc(var(--pico-typography-spacing-vertical) * 0.5); - color: var(--pico-blockquote-footer-color); -} - -abbr[title] { - border-bottom: 1px dotted; - text-decoration: none; - cursor: help; -} - -ins { - color: var(--pico-ins-color); - text-decoration: none; -} - -del { - color: var(--pico-del-color); -} - -::-moz-selection { - background-color: var(--pico-text-selection-color); -} - -::selection { - background-color: var(--pico-text-selection-color); -} - -/** - * Link - */ -:where(a:not([role=button])), -[role=link] { - --pico-color: var(--pico-primary); - --pico-background-color: transparent; - --pico-underline: var(--pico-primary-underline); - outline: none; - background-color: var(--pico-background-color); - color: var(--pico-color); - -webkit-text-decoration: var(--pico-text-decoration); - text-decoration: var(--pico-text-decoration); - text-decoration-color: var(--pico-underline); - text-underline-offset: 0.125em; - transition: background-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition); - transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition); - transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition); -} -:where(a:not([role=button])):is([aria-current]:not([aria-current=false]), :hover, :active, :focus), -[role=link]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) { - --pico-color: var(--pico-primary-hover); - --pico-underline: var(--pico-primary-hover-underline); - --pico-text-decoration: underline; -} -:where(a:not([role=button])):focus-visible, -[role=link]:focus-visible { - box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus); -} - -a[role=button] { - display: inline-block; -} - -/** - * Button - */ -button { - margin: 0; - overflow: visible; - font-family: inherit; - text-transform: none; -} - -button, -[type=submit], -[type=reset], -[type=button] { - -webkit-appearance: button; -} - -button, -[type=submit], -[type=reset], -[type=button], -[type=file]::file-selector-button, -[role=button] { - --pico-background-color: var(--pico-primary-background); - --pico-border-color: var(--pico-primary-border); - --pico-color: var(--pico-primary-inverse); - --pico-box-shadow: var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); - padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal); - border: var(--pico-border-width) solid var(--pico-border-color); - border-radius: var(--pico-border-radius); - outline: none; - background-color: var(--pico-background-color); - box-shadow: var(--pico-box-shadow); - color: var(--pico-color); - font-weight: var(--pico-font-weight); - font-size: 1rem; - line-height: var(--pico-line-height); - text-align: center; - text-decoration: none; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition); -} -button:is([aria-current]:not([aria-current=false])), button:is(:hover, :active, :focus), -[type=submit]:is([aria-current]:not([aria-current=false])), -[type=submit]:is(:hover, :active, :focus), -[type=reset]:is([aria-current]:not([aria-current=false])), -[type=reset]:is(:hover, :active, :focus), -[type=button]:is([aria-current]:not([aria-current=false])), -[type=button]:is(:hover, :active, :focus), -[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])), -[type=file]::file-selector-button:is(:hover, :active, :focus), -[role=button]:is([aria-current]:not([aria-current=false])), -[role=button]:is(:hover, :active, :focus) { - --pico-background-color: var(--pico-primary-hover-background); - --pico-border-color: var(--pico-primary-hover-border); - --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); - --pico-color: var(--pico-primary-inverse); -} -button:focus, button:is([aria-current]:not([aria-current=false])):focus, -[type=submit]:focus, -[type=submit]:is([aria-current]:not([aria-current=false])):focus, -[type=reset]:focus, -[type=reset]:is([aria-current]:not([aria-current=false])):focus, -[type=button]:focus, -[type=button]:is([aria-current]:not([aria-current=false])):focus, -[type=file]::file-selector-button:focus, -[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus, -[role=button]:focus, -[role=button]:is([aria-current]:not([aria-current=false])):focus { - --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-primary-focus); -} - -[type=submit], -[type=reset], -[type=button] { - margin-bottom: var(--pico-spacing); -} - -[type=reset], -[type=file]::file-selector-button { - --pico-background-color: var(--pico-secondary-background); - --pico-border-color: var(--pico-secondary-border); - --pico-color: var(--pico-secondary-inverse); - cursor: pointer; -} -[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus), -[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) { - --pico-background-color: var(--pico-secondary-hover-background); - --pico-border-color: var(--pico-secondary-hover-border); - --pico-color: var(--pico-secondary-inverse); -} -[type=reset]:focus, -[type=file]::file-selector-button:focus { - --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus); -} - -:where(button, [type=submit], [type=reset], [type=button], [role=button])[disabled], -:where(fieldset[disabled]) :is(button, [type=submit], [type=button], [type=reset], [role=button]) { - opacity: 0.5; - pointer-events: none; -} - -/** - * Table - */ -:where(table) { - width: 100%; - border-collapse: collapse; - border-spacing: 0; - text-indent: 0; -} - -th, -td { - padding: calc(var(--pico-spacing) / 2) var(--pico-spacing); - border-bottom: var(--pico-border-width) solid var(--pico-table-border-color); - background-color: var(--pico-background-color); - color: var(--pico-color); - font-weight: var(--pico-font-weight); - text-align: left; - text-align: start; -} - -tfoot th, -tfoot td { - border-top: var(--pico-border-width) solid var(--pico-table-border-color); - border-bottom: 0; -} - -table.striped tbody tr:nth-child(odd) th, -table.striped tbody tr:nth-child(odd) td { - background-color: var(--pico-table-row-stripped-background-color); -} - -/** - * Embedded content - */ -:where(audio, canvas, iframe, img, svg, video) { - vertical-align: middle; -} - -audio, -video { - display: inline-block; -} - -audio:not([controls]) { - display: none; - height: 0; -} - -:where(iframe) { - border-style: none; -} - -img { - max-width: 100%; - height: auto; - border-style: none; -} - -:where(svg:not([fill])) { - fill: currentColor; -} - -svg:not(:root) { - overflow: hidden; -} - -/** - * Code - */ -pre, -code, -kbd, -samp { - font-size: 0.875em; - font-family: var(--pico-font-family); -} - -pre code { - font-size: inherit; - font-family: inherit; -} - -pre { - -ms-overflow-style: scrollbar; - overflow: auto; -} - -pre, -code, -kbd { - border-radius: var(--pico-border-radius); - background: var(--pico-code-background-color); - color: var(--pico-code-color); - font-weight: var(--pico-font-weight); - line-height: initial; -} - -code, -kbd { - display: inline-block; - padding: 0.375rem; -} - -pre { - display: block; - margin-bottom: var(--pico-spacing); - overflow-x: auto; -} -pre > code { - display: block; - padding: var(--pico-spacing); - background: none; - line-height: var(--pico-line-height); -} - -kbd { - background-color: var(--pico-code-kbd-background-color); - color: var(--pico-code-kbd-color); - vertical-align: baseline; -} - -/** - * Figure - */ -figure { - display: block; - margin: 0; - padding: 0; -} -figure figcaption { - padding: calc(var(--pico-spacing) * 0.5) 0; - color: var(--pico-muted-color); -} - -/** - * Miscs - */ -hr { - height: 0; - margin: var(--pico-typography-spacing-vertical) 0; - border: 0; - border-top: 1px solid var(--pico-muted-border-color); - color: inherit; -} - -[hidden], -template { - display: none !important; -} - -canvas { - display: inline-block; -} - -/** - * Basics form elements - */ -input, -optgroup, -select, -textarea { - margin: 0; - font-size: 1rem; - line-height: var(--pico-line-height); - font-family: inherit; - letter-spacing: inherit; -} - -input { - overflow: visible; -} - -select { - text-transform: none; -} - -legend { - max-width: 100%; - padding: 0; - color: inherit; - white-space: normal; -} - -textarea { - overflow: auto; -} - -[type=checkbox], -[type=radio] { - padding: 0; -} - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -[type=search] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} - -::-moz-focus-inner { - padding: 0; - border-style: none; -} - -:-moz-focusring { - outline: none; -} - -:-moz-ui-invalid { - box-shadow: none; -} - -::-ms-expand { - display: none; -} - -[type=file], -[type=range] { - padding: 0; - border-width: 0; -} - -input:not([type=checkbox], [type=radio], [type=range]) { - height: calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2); -} - -fieldset { - width: 100%; - margin: 0; - margin-bottom: var(--pico-spacing); - padding: 0; - border: 0; -} - -label, -fieldset legend { - display: block; - margin-bottom: calc(var(--pico-spacing) * 0.375); - color: var(--pico-color); - font-weight: var(--pico-form-label-font-weight, var(--pico-font-weight)); -} - -fieldset legend { - margin-bottom: calc(var(--pico-spacing) * 0.5); -} - -input:not([type=checkbox], [type=radio]), -button[type=submit], -select, -textarea { - width: 100%; -} - -input:not([type=checkbox], [type=radio], [type=range], [type=file]), -select, -textarea { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal); -} - -input, -select, -textarea { - --pico-background-color: var(--pico-form-element-background-color); - --pico-border-color: var(--pico-form-element-border-color); - --pico-color: var(--pico-form-element-color); - --pico-box-shadow: none; - border: var(--pico-border-width) solid var(--pico-border-color); - border-radius: var(--pico-border-radius); - outline: none; - background-color: var(--pico-background-color); - box-shadow: var(--pico-box-shadow); - color: var(--pico-color); - font-weight: var(--pico-font-weight); - transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition); -} - -input:not([type=submit], -[type=button], -[type=reset], -[type=checkbox], -[type=radio], -[readonly]):is(:active, :focus), -:where(select, textarea):not([readonly]):is(:active, :focus) { - --pico-background-color: var(--pico-form-element-active-background-color); -} - -input:not([type=submit], [type=button], [type=reset], [role=switch], [readonly]):is(:active, :focus), -:where(select, textarea):not([readonly]):is(:active, :focus) { - --pico-border-color: var(--pico-form-element-active-border-color); -} - -input:not([type=submit], -[type=button], -[type=reset], -[type=range], -[type=file], -[readonly]):focus, -:where(select, textarea):not([readonly]):focus { - --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color); -} - -input:not([type=submit], [type=button], [type=reset])[disabled], -select[disabled], -textarea[disabled], -label[aria-disabled=true], -:where(fieldset[disabled]) :is(input:not([type=submit], [type=button], [type=reset]), select, textarea) { - opacity: var(--pico-form-element-disabled-opacity); - pointer-events: none; -} - -label[aria-disabled=true] input[disabled] { - opacity: 1; -} - -:where(input, select, textarea):not([type=checkbox], -[type=radio], -[type=date], -[type=datetime-local], -[type=month], -[type=time], -[type=week], -[type=range])[aria-invalid] { - padding-right: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem) !important; - padding-left: var(--pico-form-element-spacing-horizontal); - padding-inline-start: var(--pico-form-element-spacing-horizontal) !important; - padding-inline-end: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem) !important; - background-position: center right 0.75rem; - background-size: 1rem auto; - background-repeat: no-repeat; -} -:where(input, select, textarea):not([type=checkbox], -[type=radio], -[type=date], -[type=datetime-local], -[type=month], -[type=time], -[type=week], -[type=range])[aria-invalid=false]:not(select) { - background-image: var(--pico-icon-valid); -} -:where(input, select, textarea):not([type=checkbox], -[type=radio], -[type=date], -[type=datetime-local], -[type=month], -[type=time], -[type=week], -[type=range])[aria-invalid=true]:not(select) { - background-image: var(--pico-icon-invalid); -} -:where(input, select, textarea)[aria-invalid=false] { - --pico-border-color: var(--pico-form-element-valid-border-color); -} -:where(input, select, textarea)[aria-invalid=false]:is(:active, :focus) { - --pico-border-color: var(--pico-form-element-valid-active-border-color) !important; -} -:where(input, select, textarea)[aria-invalid=false]:is(:active, :focus):not([type=checkbox], [type=radio]) { - --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color) !important; -} -:where(input, select, textarea)[aria-invalid=true] { - --pico-border-color: var(--pico-form-element-invalid-border-color); -} -:where(input, select, textarea)[aria-invalid=true]:is(:active, :focus) { - --pico-border-color: var(--pico-form-element-invalid-active-border-color) !important; -} -:where(input, select, textarea)[aria-invalid=true]:is(:active, :focus):not([type=checkbox], [type=radio]) { - --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color) !important; -} - -[dir=rtl] :where(input, select, textarea):not([type=checkbox], [type=radio]):is([aria-invalid], [aria-invalid=true], [aria-invalid=false]) { - background-position: center left 0.75rem; -} - -input::placeholder, -input::-webkit-input-placeholder, -textarea::placeholder, -textarea::-webkit-input-placeholder, -select:invalid { - color: var(--pico-form-element-placeholder-color); - opacity: 1; -} - -input:not([type=checkbox], [type=radio]), -select, -textarea { - margin-bottom: var(--pico-spacing); -} - -select::-ms-expand { - border: 0; - background-color: transparent; -} -select:not([multiple], [size]) { - padding-right: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem); - padding-left: var(--pico-form-element-spacing-horizontal); - padding-inline-start: var(--pico-form-element-spacing-horizontal); - padding-inline-end: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem); - background-image: var(--pico-icon-chevron); - background-position: center right 0.75rem; - background-size: 1rem auto; - background-repeat: no-repeat; -} -select[multiple] option:checked { - background: var(--pico-form-element-selected-background-color); - color: var(--pico-form-element-color); -} - -[dir=rtl] select:not([multiple], [size]) { - background-position: center left 0.75rem; -} - -textarea { - display: block; - resize: vertical; -} -textarea[aria-invalid] { - --pico-icon-height: calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2); - background-position: top right 0.75rem !important; - background-size: 1rem var(--pico-icon-height) !important; -} - -:where(input, select, textarea, fieldset) + small { - display: block; - width: 100%; - margin-top: calc(var(--pico-spacing) * -0.75); - margin-bottom: var(--pico-spacing); - color: var(--pico-muted-color); -} -:where(input, select, textarea, fieldset)[aria-invalid=false] + small { - color: var(--pico-ins-color); -} -:where(input, select, textarea, fieldset)[aria-invalid=true] + small { - color: var(--pico-del-color); -} - -label > :where(input, select, textarea) { - margin-top: calc(var(--pico-spacing) * 0.25); -} - -/** - * Checkboxes, Radios and Switches - */ -label:has([type=checkbox], [type=radio]) { - width: -moz-fit-content; - width: fit-content; - cursor: pointer; -} - -[type=checkbox], -[type=radio] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - width: 1.25em; - height: 1.25em; - margin-top: -0.125em; - margin-inline-end: 0.5em; - border-width: var(--pico-border-width); - vertical-align: middle; - cursor: pointer; -} -[type=checkbox]::-ms-check, -[type=radio]::-ms-check { - display: none; -} -[type=checkbox]:checked, [type=checkbox]:checked:active, [type=checkbox]:checked:focus, -[type=radio]:checked, -[type=radio]:checked:active, -[type=radio]:checked:focus { - --pico-background-color: var(--pico-primary-background); - --pico-border-color: var(--pico-primary-border); - background-image: var(--pico-icon-checkbox); - background-position: center; - background-size: 0.75em auto; - background-repeat: no-repeat; -} -[type=checkbox] ~ label, -[type=radio] ~ label { - display: inline-block; - margin-bottom: 0; - cursor: pointer; -} -[type=checkbox] ~ label:not(:last-of-type), -[type=radio] ~ label:not(:last-of-type) { - margin-inline-end: 1em; -} - -[type=checkbox]:indeterminate { - --pico-background-color: var(--pico-primary-background); - --pico-border-color: var(--pico-primary-border); - background-image: var(--pico-icon-minus); - background-position: center; - background-size: 0.75em auto; - background-repeat: no-repeat; -} - -[type=radio] { - border-radius: 50%; -} -[type=radio]:checked, [type=radio]:checked:active, [type=radio]:checked:focus { - --pico-background-color: var(--pico-primary-inverse); - border-width: 0.35em; - background-image: none; -} - -[type=checkbox][role=switch] { - --pico-background-color: var(--pico-switch-background-color); - --pico-color: var(--pico-switch-color); - width: 2.25em; - height: 1.25em; - border: var(--pico-border-width) solid var(--pico-border-color); - border-radius: 1.25em; - background-color: var(--pico-background-color); - line-height: 1.25em; -} -[type=checkbox][role=switch]:not([aria-invalid]) { - --pico-border-color: var(--pico-switch-background-color); -} -[type=checkbox][role=switch]:before { - display: block; - aspect-ratio: 1; - height: 100%; - border-radius: 50%; - background-color: var(--pico-color); - box-shadow: var(--pico-switch-thumb-box-shadow); - content: ""; - transition: margin 0.1s ease-in-out; -} -[type=checkbox][role=switch]:focus { - --pico-background-color: var(--pico-switch-background-color); - --pico-border-color: var(--pico-switch-background-color); -} -[type=checkbox][role=switch]:checked { - --pico-background-color: var(--pico-switch-checked-background-color); - --pico-border-color: var(--pico-switch-checked-background-color); - background-image: none; -} -[type=checkbox][role=switch]:checked::before { - margin-inline-start: calc(2.25em - 1.25em); -} -[type=checkbox][role=switch][disabled] { - --pico-background-color: var(--pico-border-color); -} - -[type=checkbox][aria-invalid=false]:checked, [type=checkbox][aria-invalid=false]:checked:active, [type=checkbox][aria-invalid=false]:checked:focus, -[type=checkbox][role=switch][aria-invalid=false]:checked, -[type=checkbox][role=switch][aria-invalid=false]:checked:active, -[type=checkbox][role=switch][aria-invalid=false]:checked:focus { - --pico-background-color: var(--pico-form-element-valid-border-color); -} -[type=checkbox]:checked[aria-invalid=true], [type=checkbox]:checked:active[aria-invalid=true], [type=checkbox]:checked:focus[aria-invalid=true], -[type=checkbox][role=switch]:checked[aria-invalid=true], -[type=checkbox][role=switch]:checked:active[aria-invalid=true], -[type=checkbox][role=switch]:checked:focus[aria-invalid=true] { - --pico-background-color: var(--pico-form-element-invalid-border-color); -} - -[type=checkbox][aria-invalid=false]:checked, [type=checkbox][aria-invalid=false]:checked:active, [type=checkbox][aria-invalid=false]:checked:focus, -[type=radio][aria-invalid=false]:checked, -[type=radio][aria-invalid=false]:checked:active, -[type=radio][aria-invalid=false]:checked:focus, -[type=checkbox][role=switch][aria-invalid=false]:checked, -[type=checkbox][role=switch][aria-invalid=false]:checked:active, -[type=checkbox][role=switch][aria-invalid=false]:checked:focus { - --pico-border-color: var(--pico-form-element-valid-border-color); -} -[type=checkbox]:checked[aria-invalid=true], [type=checkbox]:checked:active[aria-invalid=true], [type=checkbox]:checked:focus[aria-invalid=true], -[type=radio]:checked[aria-invalid=true], -[type=radio]:checked:active[aria-invalid=true], -[type=radio]:checked:focus[aria-invalid=true], -[type=checkbox][role=switch]:checked[aria-invalid=true], -[type=checkbox][role=switch]:checked:active[aria-invalid=true], -[type=checkbox][role=switch]:checked:focus[aria-invalid=true] { - --pico-border-color: var(--pico-form-element-invalid-border-color); -} - -/** - * Input type color - */ -[type=color]::-webkit-color-swatch-wrapper { - padding: 0; -} -[type=color]::-moz-focus-inner { - padding: 0; -} -[type=color]::-webkit-color-swatch { - border: 0; - border-radius: calc(var(--pico-border-radius) * 0.5); -} -[type=color]::-moz-color-swatch { - border: 0; - border-radius: calc(var(--pico-border-radius) * 0.5); -} - -/** - * Input type datetime - */ -input:not([type=checkbox], [type=radio], [type=range], [type=file]):is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) { - --pico-icon-position: 0.75rem; - --pico-icon-width: 1rem; - padding-right: calc(var(--pico-icon-width) + var(--pico-icon-position)); - background-image: var(--pico-icon-date); - background-position: center right var(--pico-icon-position); - background-size: var(--pico-icon-width) auto; - background-repeat: no-repeat; -} -input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=time] { - background-image: var(--pico-icon-time); -} - -[type=date]::-webkit-calendar-picker-indicator, -[type=datetime-local]::-webkit-calendar-picker-indicator, -[type=month]::-webkit-calendar-picker-indicator, -[type=time]::-webkit-calendar-picker-indicator, -[type=week]::-webkit-calendar-picker-indicator { - width: var(--pico-icon-width); - margin-right: calc(var(--pico-icon-width) * -1); - margin-left: var(--pico-icon-position); - opacity: 0; -} - -@-moz-document url-prefix() { - [type=date], - [type=datetime-local], - [type=month], - [type=time], - [type=week] { - padding-right: var(--pico-form-element-spacing-horizontal) !important; - background-image: none !important; - } -} -[dir=rtl] :is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) { - text-align: right; -} - -/** - * Input type file - */ -[type=file] { - --pico-color: var(--pico-muted-color); - margin-left: calc(var(--pico-outline-width) * -1); - padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) 0; - padding-left: var(--pico-outline-width); - border: 0; - border-radius: 0; - background: none; -} -[type=file]::file-selector-button { - margin-right: calc(var(--pico-spacing) / 2); - padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) var(--pico-form-element-spacing-horizontal); -} -[type=file]:is(:hover, :active, :focus)::file-selector-button { - --pico-background-color: var(--pico-secondary-hover-background); - --pico-border-color: var(--pico-secondary-hover-border); -} -[type=file]:focus::file-selector-button { - --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus); -} - -/** - * Input type range - */ -[type=range] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - width: 100%; - height: 1.25rem; - background: none; -} -[type=range]::-webkit-slider-runnable-track { - width: 100%; - height: 0.375rem; - border-radius: var(--pico-border-radius); - background-color: var(--pico-range-border-color); - -webkit-transition: background-color var(--pico-transition), box-shadow var(--pico-transition); - transition: background-color var(--pico-transition), box-shadow var(--pico-transition); -} -[type=range]::-moz-range-track { - width: 100%; - height: 0.375rem; - border-radius: var(--pico-border-radius); - background-color: var(--pico-range-border-color); - -moz-transition: background-color var(--pico-transition), box-shadow var(--pico-transition); - transition: background-color var(--pico-transition), box-shadow var(--pico-transition); -} -[type=range]::-ms-track { - width: 100%; - height: 0.375rem; - border-radius: var(--pico-border-radius); - background-color: var(--pico-range-border-color); - -ms-transition: background-color var(--pico-transition), box-shadow var(--pico-transition); - transition: background-color var(--pico-transition), box-shadow var(--pico-transition); -} -[type=range]::-webkit-slider-thumb { - -webkit-appearance: none; - width: 1.25rem; - height: 1.25rem; - margin-top: -0.4375rem; - border: 2px solid var(--pico-range-thumb-border-color); - border-radius: 50%; - background-color: var(--pico-range-thumb-color); - cursor: pointer; - -webkit-transition: background-color var(--pico-transition), transform var(--pico-transition); - transition: background-color var(--pico-transition), transform var(--pico-transition); -} -[type=range]::-moz-range-thumb { - -webkit-appearance: none; - width: 1.25rem; - height: 1.25rem; - margin-top: -0.4375rem; - border: 2px solid var(--pico-range-thumb-border-color); - border-radius: 50%; - background-color: var(--pico-range-thumb-color); - cursor: pointer; - -moz-transition: background-color var(--pico-transition), transform var(--pico-transition); - transition: background-color var(--pico-transition), transform var(--pico-transition); -} -[type=range]::-ms-thumb { - -webkit-appearance: none; - width: 1.25rem; - height: 1.25rem; - margin-top: -0.4375rem; - border: 2px solid var(--pico-range-thumb-border-color); - border-radius: 50%; - background-color: var(--pico-range-thumb-color); - cursor: pointer; - -ms-transition: background-color var(--pico-transition), transform var(--pico-transition); - transition: background-color var(--pico-transition), transform var(--pico-transition); -} -[type=range]:active, [type=range]:focus-within { - --pico-range-border-color: var(--pico-range-active-border-color); - --pico-range-thumb-color: var(--pico-range-thumb-active-color); -} -[type=range]:active::-webkit-slider-thumb { - transform: scale(1.25); -} -[type=range]:active::-moz-range-thumb { - transform: scale(1.25); -} -[type=range]:active::-ms-thumb { - transform: scale(1.25); -} - -/** - * Input type search - */ -input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search] { - padding-inline-start: calc(var(--pico-form-element-spacing-horizontal) + 1.75rem); - background-image: var(--pico-icon-search); - background-position: center left calc(var(--pico-form-element-spacing-horizontal) + 0.125rem); - background-size: 1rem auto; - background-repeat: no-repeat; -} -input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid] { - padding-inline-start: calc(var(--pico-form-element-spacing-horizontal) + 1.75rem) !important; - background-position: center left 1.125rem, center right 0.75rem; -} -input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid=false] { - background-image: var(--pico-icon-search), var(--pico-icon-valid); -} -input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid=true] { - background-image: var(--pico-icon-search), var(--pico-icon-invalid); -} - -[dir=rtl] :where(input):not([type=checkbox], [type=radio], [type=range], [type=file])[type=search] { - background-position: center right 1.125rem; -} -[dir=rtl] :where(input):not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid] { - background-position: center right 1.125rem, center left 0.75rem; -} - -/** - * Accordion (

    ) - */ -details { - display: block; - margin-bottom: var(--pico-spacing); -} -details summary { - line-height: 1rem; - list-style-type: none; - cursor: pointer; - transition: color var(--pico-transition); -} -details summary:not([role]) { - color: var(--pico-accordion-close-summary-color); -} -details summary::-webkit-details-marker { - display: none; -} -details summary::marker { - display: none; -} -details summary::-moz-list-bullet { - list-style-type: none; -} -details summary::after { - display: block; - width: 1rem; - height: 1rem; - margin-inline-start: calc(var(--pico-spacing, 1rem) * 0.5); - float: right; - transform: rotate(-90deg); - background-image: var(--pico-icon-chevron); - background-position: right center; - background-size: 1rem auto; - background-repeat: no-repeat; - content: ""; - transition: transform var(--pico-transition); -} -details summary:focus { - outline: none; -} -details summary:focus:not([role]) { - color: var(--pico-accordion-active-summary-color); -} -details summary:focus-visible:not([role]) { - outline: var(--pico-outline-width) solid var(--pico-primary-focus); - outline-offset: calc(var(--pico-spacing, 1rem) * 0.5); - color: var(--pico-primary); -} -details summary[role=button] { - width: 100%; - text-align: left; -} -details summary[role=button]::after { - height: calc(1rem * var(--pico-line-height, 1.5)); -} -details[open] > summary { - margin-bottom: var(--pico-spacing); -} -details[open] > summary:not([role]):not(:focus) { - color: var(--pico-accordion-open-summary-color); -} -details[open] > summary::after { - transform: rotate(0); -} - -[dir=rtl] details summary { - text-align: right; -} -[dir=rtl] details summary::after { - float: left; - background-position: left center; -} - -/** - * Card (
    ) - */ -article { - margin-bottom: var(--pico-block-spacing-vertical); - padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal); - border-radius: var(--pico-border-radius); - background: var(--pico-card-background-color); - box-shadow: var(--pico-card-box-shadow); -} -article > header, -article > footer { - margin-right: calc(var(--pico-block-spacing-horizontal) * -1); - margin-left: calc(var(--pico-block-spacing-horizontal) * -1); - padding: calc(var(--pico-block-spacing-vertical) * 0.66) var(--pico-block-spacing-horizontal); - background-color: var(--pico-card-sectioning-background-color); -} -article > header { - margin-top: calc(var(--pico-block-spacing-vertical) * -1); - margin-bottom: var(--pico-block-spacing-vertical); - border-bottom: var(--pico-border-width) solid var(--pico-card-border-color); - border-top-right-radius: var(--pico-border-radius); - border-top-left-radius: var(--pico-border-radius); -} -article > footer { - margin-top: var(--pico-block-spacing-vertical); - margin-bottom: calc(var(--pico-block-spacing-vertical) * -1); - border-top: var(--pico-border-width) solid var(--pico-card-border-color); - border-bottom-right-radius: var(--pico-border-radius); - border-bottom-left-radius: var(--pico-border-radius); -} - -/** - * Group ([role="group"], [role="search"]) - */ -[role=search], -[role=group] { - display: inline-flex; - position: relative; - width: 100%; - margin-bottom: var(--pico-spacing); - border-radius: var(--pico-border-radius); - box-shadow: var(--pico-group-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); - vertical-align: middle; - transition: box-shadow var(--pico-transition); -} -[role=search] > *, -[role=search] input:not([type=checkbox], [type=radio]), -[role=search] select, -[role=group] > *, -[role=group] input:not([type=checkbox], [type=radio]), -[role=group] select { - position: relative; - flex: 1 1 auto; - margin-bottom: 0; -} -[role=search] > *:not(:first-child), -[role=search] input:not([type=checkbox], [type=radio]):not(:first-child), -[role=search] select:not(:first-child), -[role=group] > *:not(:first-child), -[role=group] input:not([type=checkbox], [type=radio]):not(:first-child), -[role=group] select:not(:first-child) { - margin-left: 0; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -[role=search] > *:not(:last-child), -[role=search] input:not([type=checkbox], [type=radio]):not(:last-child), -[role=search] select:not(:last-child), -[role=group] > *:not(:last-child), -[role=group] input:not([type=checkbox], [type=radio]):not(:last-child), -[role=group] select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -[role=search] > *:focus, -[role=search] input:not([type=checkbox], [type=radio]):focus, -[role=search] select:focus, -[role=group] > *:focus, -[role=group] input:not([type=checkbox], [type=radio]):focus, -[role=group] select:focus { - z-index: 2; -} -[role=search] button:not(:first-child), -[role=search] [type=submit]:not(:first-child), -[role=search] [type=reset]:not(:first-child), -[role=search] [type=button]:not(:first-child), -[role=search] [role=button]:not(:first-child), -[role=search] input:not([type=checkbox], [type=radio]):not(:first-child), -[role=search] select:not(:first-child), -[role=group] button:not(:first-child), -[role=group] [type=submit]:not(:first-child), -[role=group] [type=reset]:not(:first-child), -[role=group] [type=button]:not(:first-child), -[role=group] [role=button]:not(:first-child), -[role=group] input:not([type=checkbox], [type=radio]):not(:first-child), -[role=group] select:not(:first-child) { - margin-left: calc(var(--pico-border-width) * -1); -} -[role=search] button, -[role=search] [type=submit], -[role=search] [type=reset], -[role=search] [type=button], -[role=search] [role=button], -[role=group] button, -[role=group] [type=submit], -[role=group] [type=reset], -[role=group] [type=button], -[role=group] [role=button] { - width: auto; -} -@supports selector(:has(*)) { - [role=search]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus), - [role=group]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) { - --pico-group-box-shadow: var(--pico-group-box-shadow-focus-with-button); - } - [role=search]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) input:not([type=checkbox], [type=radio]), - [role=search]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) select, - [role=group]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) input:not([type=checkbox], [type=radio]), - [role=group]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) select { - border-color: transparent; - } - [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus), - [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) { - --pico-group-box-shadow: var(--pico-group-box-shadow-focus-with-input); - } - [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) button, - [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=submit], - [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=button], - [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) [role=button], - [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) button, - [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=submit], - [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=button], - [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) [role=button] { - --pico-button-box-shadow: 0 0 0 var(--pico-border-width) var(--pico-primary-border); - --pico-button-hover-box-shadow: 0 0 0 var(--pico-border-width) var(--pico-primary-hover-border); - } - [role=search] button:focus, - [role=search] [type=submit]:focus, - [role=search] [type=reset]:focus, - [role=search] [type=button]:focus, - [role=search] [role=button]:focus, - [role=group] button:focus, - [role=group] [type=submit]:focus, - [role=group] [type=reset]:focus, - [role=group] [type=button]:focus, - [role=group] [role=button]:focus { - box-shadow: none; - } -} - -[role=search] > *:first-child { - border-top-left-radius: 5rem; - border-bottom-left-radius: 5rem; -} -[role=search] > *:last-child { - border-top-right-radius: 5rem; - border-bottom-right-radius: 5rem; -} - -/** - * Loading ([aria-busy=true]) - */ -[aria-busy=true]:not(input, select, textarea, html) { - white-space: nowrap; -} -[aria-busy=true]:not(input, select, textarea, html)::before { - display: inline-block; - width: 1em; - height: 1em; - background-image: var(--pico-icon-loading); - background-size: 1em auto; - background-repeat: no-repeat; - content: ""; - vertical-align: -0.125em; -} -[aria-busy=true]:not(input, select, textarea, html):not(:empty)::before { - margin-inline-end: calc(var(--pico-spacing) * 0.5); -} -[aria-busy=true]:not(input, select, textarea, html):empty { - text-align: center; -} - -button[aria-busy=true], -[type=submit][aria-busy=true], -[type=button][aria-busy=true], -[type=reset][aria-busy=true], -[role=button][aria-busy=true], -a[aria-busy=true] { - pointer-events: none; -} - -/** - * Modal () - */ -:root { - --pico-scrollbar-width: 0px; -} - -dialog { - display: flex; - z-index: 999; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - align-items: center; - justify-content: center; - width: inherit; - min-width: 100%; - height: inherit; - min-height: 100%; - padding: 0; - border: 0; - -webkit-backdrop-filter: var(--pico-modal-overlay-backdrop-filter); - backdrop-filter: var(--pico-modal-overlay-backdrop-filter); - background-color: var(--pico-modal-overlay-background-color); - color: var(--pico-color); -} -dialog article { - width: 100%; - max-height: calc(100vh - var(--pico-spacing) * 2); - margin: var(--pico-spacing); - overflow: auto; -} -@media (min-width: 576px) { - dialog article { - max-width: 510px; - } -} -@media (min-width: 768px) { - dialog article { - max-width: 700px; - } -} -dialog article > header > * { - margin-bottom: 0; -} -dialog article > header :is(a, button)[rel=prev] { - margin: 0; - margin-left: var(--pico-spacing); - padding: 0; - float: right; -} -dialog article > footer { - text-align: right; -} -dialog article > footer button, -dialog article > footer [role=button] { - margin-bottom: 0; -} -dialog article > footer button:not(:first-of-type), -dialog article > footer [role=button]:not(:first-of-type) { - margin-left: calc(var(--pico-spacing) * 0.5); -} -dialog article :is(a, button)[rel=prev] { - display: block; - width: 1rem; - height: 1rem; - margin-top: calc(var(--pico-spacing) * -1); - margin-bottom: var(--pico-spacing); - margin-left: auto; - border: none; - background-image: var(--pico-icon-close); - background-position: center; - background-size: auto 1rem; - background-repeat: no-repeat; - background-color: transparent; - opacity: 0.5; - transition: opacity var(--pico-transition); -} -dialog article :is(a, button)[rel=prev]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) { - opacity: 1; -} -dialog:not([open]), dialog[open=false] { - display: none; -} - -/** - * Nav - */ -:where(nav li)::before { - float: left; - content: "​"; -} - -nav, -nav ul { - display: flex; -} - -nav { - justify-content: space-between; - overflow: visible; -} -nav ol, -nav ul { - align-items: center; - margin-bottom: 0; - padding: 0; - list-style: none; -} -nav ol:first-of-type, -nav ul:first-of-type { - margin-left: calc(var(--pico-nav-element-spacing-horizontal) * -1); -} -nav ol:last-of-type, -nav ul:last-of-type { - margin-right: calc(var(--pico-nav-element-spacing-horizontal) * -1); -} -nav li { - display: inline-block; - margin: 0; - padding: var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal); -} -nav li :where(a, [role=link]) { - display: inline-block; - margin: calc(var(--pico-nav-link-spacing-vertical) * -1) calc(var(--pico-nav-link-spacing-horizontal) * -1); - padding: var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal); - border-radius: var(--pico-border-radius); -} -nav li :where(a, [role=link]):not(:hover) { - text-decoration: none; -} -nav li button, -nav li [role=button], -nav li [type=button], -nav li input:not([type=checkbox], [type=radio], [type=range], [type=file]), -nav li select { - height: auto; - margin-right: inherit; - margin-bottom: 0; - margin-left: inherit; - padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal); -} -nav[aria-label=breadcrumb] { - align-items: center; - justify-content: start; -} -nav[aria-label=breadcrumb] ul li:not(:first-child) { - margin-inline-start: var(--pico-nav-link-spacing-horizontal); -} -nav[aria-label=breadcrumb] ul li a { - margin: calc(var(--pico-nav-link-spacing-vertical) * -1) 0; - margin-inline-start: calc(var(--pico-nav-link-spacing-horizontal) * -1); -} -nav[aria-label=breadcrumb] ul li:not(:last-child)::after { - display: inline-block; - position: absolute; - width: calc(var(--pico-nav-link-spacing-horizontal) * 4); - margin: 0 calc(var(--pico-nav-link-spacing-horizontal) * -1); - content: var(--pico-nav-breadcrumb-divider); - color: var(--pico-muted-color); - text-align: center; - text-decoration: none; - white-space: nowrap; -} -nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]) { - background-color: transparent; - color: inherit; - text-decoration: none; - pointer-events: none; -} - -aside nav, -aside ol, -aside ul, -aside li { - display: block; -} -aside li { - padding: calc(var(--pico-nav-element-spacing-vertical) * 0.5) var(--pico-nav-element-spacing-horizontal); -} -aside li a { - display: block; -} -aside li [role=button] { - margin: inherit; -} - -[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after { - content: "\\"; -} - -/** - * Progress - */ -progress { - display: inline-block; - vertical-align: baseline; -} - -progress { - -webkit-appearance: none; - -moz-appearance: none; - display: inline-block; - appearance: none; - width: 100%; - height: 0.5rem; - margin-bottom: calc(var(--pico-spacing) * 0.5); - overflow: hidden; - border: 0; - border-radius: var(--pico-border-radius); - background-color: var(--pico-progress-background-color); - color: var(--pico-progress-color); -} -progress::-webkit-progress-bar { - border-radius: var(--pico-border-radius); - background: none; -} -progress[value]::-webkit-progress-value { - background-color: var(--pico-progress-color); - -webkit-transition: inline-size var(--pico-transition); - transition: inline-size var(--pico-transition); -} -progress::-moz-progress-bar { - background-color: var(--pico-progress-color); -} -@media (prefers-reduced-motion: no-preference) { - progress:indeterminate { - background: var(--pico-progress-background-color) linear-gradient(to right, var(--pico-progress-color) 30%, var(--pico-progress-background-color) 30%) top left/150% 150% no-repeat; - animation: progress-indeterminate 1s linear infinite; - } - progress:indeterminate[value]::-webkit-progress-value { - background-color: transparent; - } - progress:indeterminate::-moz-progress-bar { - background-color: transparent; - } -} - -@media (prefers-reduced-motion: no-preference) { - [dir=rtl] progress:indeterminate { - animation-direction: reverse; - } -} - -@keyframes progress-indeterminate { - 0% { - background-position: 200% 0; - } - 100% { - background-position: -200% 0; - } -} -/** - * Tooltip ([data-tooltip]) - */ -[data-tooltip] { - position: relative; -} -[data-tooltip]:not(a, button, input) { - border-bottom: 1px dotted; - text-decoration: none; - cursor: help; -} -[data-tooltip][data-placement=top]::before, [data-tooltip][data-placement=top]::after, [data-tooltip]::before, [data-tooltip]::after { - display: block; - z-index: 99; - position: absolute; - bottom: 100%; - left: 50%; - padding: 0.25rem 0.5rem; - overflow: hidden; - transform: translate(-50%, -0.25rem); - border-radius: var(--pico-border-radius); - background: var(--pico-tooltip-background-color); - content: attr(data-tooltip); - color: var(--pico-tooltip-color); - font-style: normal; - font-weight: var(--pico-font-weight); - font-size: 0.875rem; - text-decoration: none; - text-overflow: ellipsis; - white-space: nowrap; - opacity: 0; - pointer-events: none; -} -[data-tooltip][data-placement=top]::after, [data-tooltip]::after { - padding: 0; - transform: translate(-50%, 0rem); - border-top: 0.3rem solid; - border-right: 0.3rem solid transparent; - border-left: 0.3rem solid transparent; - border-radius: 0; - background-color: transparent; - content: ""; - color: var(--pico-tooltip-background-color); -} -[data-tooltip][data-placement=bottom]::before, [data-tooltip][data-placement=bottom]::after { - top: 100%; - bottom: auto; - transform: translate(-50%, 0.25rem); -} -[data-tooltip][data-placement=bottom]:after { - transform: translate(-50%, -0.3rem); - border: 0.3rem solid transparent; - border-bottom: 0.3rem solid; -} -[data-tooltip][data-placement=left]::before, [data-tooltip][data-placement=left]::after { - top: 50%; - right: 100%; - bottom: auto; - left: auto; - transform: translate(-0.25rem, -50%); -} -[data-tooltip][data-placement=left]:after { - transform: translate(0.3rem, -50%); - border: 0.3rem solid transparent; - border-left: 0.3rem solid; -} -[data-tooltip][data-placement=right]::before, [data-tooltip][data-placement=right]::after { - top: 50%; - right: auto; - bottom: auto; - left: 100%; - transform: translate(0.25rem, -50%); -} -[data-tooltip][data-placement=right]:after { - transform: translate(-0.3rem, -50%); - border: 0.3rem solid transparent; - border-right: 0.3rem solid; -} -[data-tooltip]:focus::before, [data-tooltip]:focus::after, [data-tooltip]:hover::before, [data-tooltip]:hover::after { - opacity: 1; -} -@media (hover: hover) and (pointer: fine) { - [data-tooltip]:focus::before, [data-tooltip]:focus::after, [data-tooltip]:hover::before, [data-tooltip]:hover::after { - --pico-tooltip-slide-to: translate(-50%, -0.25rem); - transform: translate(-50%, 0.75rem); - animation-duration: 0.2s; - animation-fill-mode: forwards; - animation-name: tooltip-slide; - opacity: 0; - } - [data-tooltip]:focus::after, [data-tooltip]:hover::after { - --pico-tooltip-caret-slide-to: translate(-50%, 0rem); - transform: translate(-50%, -0.25rem); - animation-name: tooltip-caret-slide; - } - [data-tooltip][data-placement=bottom]:focus::before, [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover::before, [data-tooltip][data-placement=bottom]:hover::after { - --pico-tooltip-slide-to: translate(-50%, 0.25rem); - transform: translate(-50%, -0.75rem); - animation-name: tooltip-slide; - } - [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover::after { - --pico-tooltip-caret-slide-to: translate(-50%, -0.3rem); - transform: translate(-50%, -0.5rem); - animation-name: tooltip-caret-slide; - } - [data-tooltip][data-placement=left]:focus::before, [data-tooltip][data-placement=left]:focus::after, [data-tooltip][data-placement=left]:hover::before, [data-tooltip][data-placement=left]:hover::after { - --pico-tooltip-slide-to: translate(-0.25rem, -50%); - transform: translate(0.75rem, -50%); - animation-name: tooltip-slide; - } - [data-tooltip][data-placement=left]:focus::after, [data-tooltip][data-placement=left]:hover::after { - --pico-tooltip-caret-slide-to: translate(0.3rem, -50%); - transform: translate(0.05rem, -50%); - animation-name: tooltip-caret-slide; - } - [data-tooltip][data-placement=right]:focus::before, [data-tooltip][data-placement=right]:focus::after, [data-tooltip][data-placement=right]:hover::before, [data-tooltip][data-placement=right]:hover::after { - --pico-tooltip-slide-to: translate(0.25rem, -50%); - transform: translate(-0.75rem, -50%); - animation-name: tooltip-slide; - } - [data-tooltip][data-placement=right]:focus::after, [data-tooltip][data-placement=right]:hover::after { - --pico-tooltip-caret-slide-to: translate(-0.3rem, -50%); - transform: translate(-0.05rem, -50%); - animation-name: tooltip-caret-slide; - } -} -@keyframes tooltip-slide { - to { - transform: var(--pico-tooltip-slide-to); - opacity: 1; - } -} -@keyframes tooltip-caret-slide { - 50% { - opacity: 0; - } - to { - transform: var(--pico-tooltip-caret-slide-to); - opacity: 1; - } -} - -/** - * Accessibility & User interaction - */ -[aria-controls] { - cursor: pointer; -} - -[aria-disabled=true], -[disabled] { - cursor: not-allowed; -} - -[aria-hidden=false][hidden] { - display: initial; -} - -[aria-hidden=false][hidden]:not(:focus) { - clip: rect(0, 0, 0, 0); - position: absolute; -} - -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; -} - -[dir=rtl] { - direction: rtl; -} - -/** - * Reduce Motion Features - */ -@media (prefers-reduced-motion: reduce) { - *:not([aria-busy=true]), - :not([aria-busy=true])::before, - :not([aria-busy=true])::after { - background-attachment: initial !important; - animation-duration: 1ms !important; - animation-delay: -1ms !important; - animation-iteration-count: 1 !important; - scroll-behavior: auto !important; - transition-delay: 0s !important; - transition-duration: 0s !important; - } -} diff --git a/src/argus_htmx/static/themes/purehtml.css b/src/argus_htmx/static/themes/purehtml.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/argus_htmx/static/themes/reset.css b/src/argus_htmx/static/themes/reset.css deleted file mode 100644 index e29c0f5f4..000000000 --- a/src/argus_htmx/static/themes/reset.css +++ /dev/null @@ -1,48 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} diff --git a/src/argus_htmx/static/themes/simple.css b/src/argus_htmx/static/themes/simple.css deleted file mode 100644 index 984203c0d..000000000 --- a/src/argus_htmx/static/themes/simple.css +++ /dev/null @@ -1,704 +0,0 @@ -/* Global variables. */ -:root, -::backdrop { - /* Set sans-serif & mono fonts */ - --sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir, - "Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica, - "Helvetica Neue", sans-serif; - --mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace; - --standard-border-radius: 5px; - - /* Default (light) theme */ - --bg: #fff; - --accent-bg: #f5f7ff; - --text: #212121; - --text-light: #585858; - --border: #898EA4; - --accent: #0d47a1; - --accent-hover: #1266e2; - --accent-text: var(--bg); - --code: #d81b60; - --preformatted: #444; - --marked: #ffdd33; - --disabled: #efefef; -} - -/* Dark theme */ -@media (prefers-color-scheme: dark) { - :root, - ::backdrop { - color-scheme: dark; - --bg: #212121; - --accent-bg: #2b2b2b; - --text: #dcdcdc; - --text-light: #ababab; - --accent: #ffb300; - --accent-hover: #ffe099; - --accent-text: var(--bg); - --code: #f06292; - --preformatted: #ccc; - --disabled: #111; - } - /* Add a bit of transparency so light media isn't so glaring in dark mode */ - img, - video { - opacity: 0.8; - } -} - -/* Reset box-sizing */ -*, *::before, *::after { - box-sizing: border-box; -} - -/* Reset default appearance */ -textarea, -select, -input, -progress { - appearance: none; - -webkit-appearance: none; - -moz-appearance: none; -} - -html { - /* Set the font globally */ - font-family: var(--sans-font); - scroll-behavior: smooth; -} - -/* Make the body a nice central block */ -body { - color: var(--text); - background-color: var(--bg); - font-size: 1.15rem; - line-height: 1.5; - display: grid; - grid-template-columns: 1fr min(45rem, 90%) 1fr; - margin: 0; -} -body > * { - grid-column: 2; -} - -/* Make the header bg full width, but the content inline with body */ -body > header { - background-color: var(--accent-bg); - border-bottom: 1px solid var(--border); - text-align: center; - padding: 0 0.5rem 2rem 0.5rem; - grid-column: 1 / -1; -} - -body > header > *:only-child { - margin-block-start: 2rem; -} - -body > header h1 { - max-width: 1200px; - margin: 1rem auto; -} - -body > header p { - max-width: 40rem; - margin: 1rem auto; -} - -/* Add a little padding to ensure spacing is correct between content and header > nav */ -main { - padding-top: 1.5rem; -} - -body > footer { - margin-top: 4rem; - padding: 2rem 1rem 1.5rem 1rem; - color: var(--text-light); - font-size: 0.9rem; - text-align: center; - border-top: 1px solid var(--border); -} - -/* Format headers */ -h1 { - font-size: 3rem; -} - -h2 { - font-size: 2.6rem; - margin-top: 3rem; -} - -h3 { - font-size: 2rem; - margin-top: 3rem; -} - -h4 { - font-size: 1.44rem; -} - -h5 { - font-size: 1.15rem; -} - -h6 { - font-size: 0.96rem; -} - -p { - margin: 1.5rem 0; -} - -/* Prevent long strings from overflowing container */ -p, h1, h2, h3, h4, h5, h6 { - overflow-wrap: break-word; -} - -/* Fix line height when title wraps */ -h1, -h2, -h3 { - line-height: 1.1; -} - -/* Reduce header size on mobile */ -@media only screen and (max-width: 720px) { - h1 { - font-size: 2.5rem; - } - - h2 { - font-size: 2.1rem; - } - - h3 { - font-size: 1.75rem; - } - - h4 { - font-size: 1.25rem; - } -} - -/* Format links & buttons */ -a, -a:visited { - color: var(--accent); -} - -a:hover { - text-decoration: none; -} - -button, -.button, -a.button, /* extra specificity to override a */ -input[type="submit"], -input[type="reset"], -input[type="button"], -label[type="button"] { - border: 1px solid var(--accent); - background-color: var(--accent); - color: var(--accent-text); - padding: 0.5rem 0.9rem; - text-decoration: none; - line-height: normal; -} - -.button[aria-disabled="true"], -input:disabled, -textarea:disabled, -select:disabled, -button[disabled] { - cursor: not-allowed; - background-color: var(--disabled); - border-color: var(--disabled); - color: var(--text-light); -} - -input[type="range"] { - padding: 0; -} - -/* Set the cursor to '?' on an abbreviation and style the abbreviation to show that there is more information underneath */ -abbr[title] { - cursor: help; - text-decoration-line: underline; - text-decoration-style: dotted; -} - -button:enabled:hover, -.button:not([aria-disabled="true"]):hover, -input[type="submit"]:enabled:hover, -input[type="reset"]:enabled:hover, -input[type="button"]:enabled:hover, -label[type="button"]:hover { - background-color: var(--accent-hover); - border-color: var(--accent-hover); - cursor: pointer; -} - -.button:focus-visible, -button:focus-visible:where(:enabled), -input:enabled:focus-visible:where( - [type="submit"], - [type="reset"], - [type="button"] -) { - outline: 2px solid var(--accent); - outline-offset: 1px; -} - -/* Format navigation */ -header > nav { - font-size: 1rem; - line-height: 2; - padding: 1rem 0 0 0; -} - -/* Use flexbox to allow items to wrap, as needed */ -header > nav ul, -header > nav ol { - align-content: space-around; - align-items: center; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: center; - list-style-type: none; - margin: 0; - padding: 0; -} - -/* List items are inline elements, make them behave more like blocks */ -header > nav ul li, -header > nav ol li { - display: inline-block; -} - -header > nav a, -header > nav a:visited { - margin: 0 0.5rem 1rem 0.5rem; - border: 1px solid var(--border); - border-radius: var(--standard-border-radius); - color: var(--text); - display: inline-block; - padding: 0.1rem 1rem; - text-decoration: none; -} - -header > nav a:hover, -header > nav a.current, -header > nav a[aria-current="page"] { - border-color: var(--accent); - color: var(--accent); - cursor: pointer; -} - -/* Reduce nav side on mobile */ -@media only screen and (max-width: 720px) { - header > nav a { - border: none; - padding: 0; - text-decoration: underline; - line-height: 1; - } -} - -/* Consolidate box styling */ -aside, details, pre, progress { - background-color: var(--accent-bg); - border: 1px solid var(--border); - border-radius: var(--standard-border-radius); - margin-bottom: 1rem; -} - -aside { - font-size: 1rem; - width: 30%; - padding: 0 15px; - margin-inline-start: 15px; - float: right; -} -*[dir="rtl"] aside { - float: left; -} - -/* Make aside full-width on mobile */ -@media only screen and (max-width: 720px) { - aside { - width: 100%; - float: none; - margin-inline-start: 0; - } -} - -article, fieldset, dialog { - border: 1px solid var(--border); - padding: 1rem; - border-radius: var(--standard-border-radius); - margin-bottom: 1rem; -} - -article h2:first-child, -section h2:first-child { - margin-top: 1rem; -} - -section { - border-top: 1px solid var(--border); - border-bottom: 1px solid var(--border); - padding: 2rem 1rem; - margin: 3rem 0; -} - -/* Don't double separators when chaining sections */ -section + section, -section:first-child { - border-top: 0; - padding-top: 0; -} - -section:last-child { - border-bottom: 0; - padding-bottom: 0; -} - -details { - padding: 0.7rem 1rem; -} - -summary { - cursor: pointer; - font-weight: bold; - padding: 0.7rem 1rem; - margin: -0.7rem -1rem; - word-break: break-all; -} - -details[open] > summary + * { - margin-top: 0; -} - -details[open] > summary { - margin-bottom: 0.5rem; -} - -details[open] > :last-child { - margin-bottom: 0; -} - -/* Format tables */ -table { - border-collapse: collapse; - margin: 1.5rem 0; -} - -figure > table { - width: max-content; -} - -td, -th { - border: 1px solid var(--border); - text-align: start; - padding: 0.5rem; -} - -th { - background-color: var(--accent-bg); - font-weight: bold; -} - -tr:nth-child(even) { - /* Set every other cell slightly darker. Improves readability. */ - background-color: var(--accent-bg); -} - -table caption { - font-weight: bold; - margin-bottom: 0.5rem; -} - -/* Format forms */ -textarea, -select, -input, -button, -.button { - font-size: inherit; - font-family: inherit; - padding: 0.5rem; - margin-bottom: 0.5rem; - border-radius: var(--standard-border-radius); - box-shadow: none; - max-width: 100%; - display: inline-block; -} -textarea, -select, -input { - color: var(--text); - background-color: var(--bg); - border: 1px solid var(--border); -} -label { - display: block; -} -textarea:not([cols]) { - width: 100%; -} - -/* Add arrow to drop-down */ -select:not([multiple]) { - background-image: linear-gradient(45deg, transparent 49%, var(--text) 51%), - linear-gradient(135deg, var(--text) 51%, transparent 49%); - background-position: calc(100% - 15px), calc(100% - 10px); - background-size: 5px 5px, 5px 5px; - background-repeat: no-repeat; - padding-inline-end: 25px; -} -*[dir="rtl"] select:not([multiple]) { - background-position: 10px, 15px; -} - -/* checkbox and radio button style */ -input[type="checkbox"], -input[type="radio"] { - vertical-align: middle; - position: relative; - width: min-content; -} - -input[type="checkbox"] + label, -input[type="radio"] + label { - display: inline-block; -} - -input[type="radio"] { - border-radius: 100%; -} - -input[type="checkbox"]:checked, -input[type="radio"]:checked { - background-color: var(--accent); -} - -input[type="checkbox"]:checked::after { - /* Creates a rectangle with colored right and bottom borders which is rotated to look like a check mark */ - content: " "; - width: 0.18em; - height: 0.32em; - border-radius: 0; - position: absolute; - top: 0.05em; - left: 0.17em; - background-color: transparent; - border-right: solid var(--bg) 0.08em; - border-bottom: solid var(--bg) 0.08em; - font-size: 1.8em; - transform: rotate(45deg); -} -input[type="radio"]:checked::after { - /* creates a colored circle for the checked radio button */ - content: " "; - width: 0.25em; - height: 0.25em; - border-radius: 100%; - position: absolute; - top: 0.125em; - background-color: var(--bg); - left: 0.125em; - font-size: 32px; -} - -/* Makes input fields wider on smaller screens */ -@media only screen and (max-width: 720px) { - textarea, - select, - input { - width: 100%; - } -} - -/* Set a height for color input */ -input[type="color"] { - height: 2.5rem; - padding: 0.2rem; -} - -/* do not show border around file selector button */ -input[type="file"] { - border: 0; -} - -/* Misc body elements */ -hr { - border: none; - height: 1px; - background: var(--border); - margin: 1rem auto; -} - -mark { - padding: 2px 5px; - border-radius: var(--standard-border-radius); - background-color: var(--marked); - color: black; -} - -mark a { - color: #0d47a1; -} - -img, -video { - max-width: 100%; - height: auto; - border-radius: var(--standard-border-radius); -} - -figure { - margin: 0; - display: block; - overflow-x: auto; -} - -figure > img, -figure > picture > img { - display: block; - margin-inline: auto; -} - -figcaption { - text-align: center; - font-size: 0.9rem; - color: var(--text-light); - margin-block: 1rem; -} - -blockquote { - margin-inline-start: 2rem; - margin-inline-end: 0; - margin-block: 2rem; - padding: 0.4rem 0.8rem; - border-inline-start: 0.35rem solid var(--accent); - color: var(--text-light); - font-style: italic; -} - -cite { - font-size: 0.9rem; - color: var(--text-light); - font-style: normal; -} - -dt { - color: var(--text-light); -} - -/* Use mono font for code elements */ -code, -pre, -pre span, -kbd, -samp { - font-family: var(--mono-font); - color: var(--code); -} - -kbd { - color: var(--preformatted); - border: 1px solid var(--preformatted); - border-bottom: 3px solid var(--preformatted); - border-radius: var(--standard-border-radius); - padding: 0.1rem 0.4rem; -} - -pre { - padding: 1rem 1.4rem; - max-width: 100%; - overflow: auto; - color: var(--preformatted); -} - -/* Fix embedded code within pre */ -pre code { - color: var(--preformatted); - background: none; - margin: 0; - padding: 0; -} - -/* Progress bars */ -/* Declarations are repeated because you */ -/* cannot combine vendor-specific selectors */ -progress { - width: 100%; -} - -progress:indeterminate { - background-color: var(--accent-bg); -} - -progress::-webkit-progress-bar { - border-radius: var(--standard-border-radius); - background-color: var(--accent-bg); -} - -progress::-webkit-progress-value { - border-radius: var(--standard-border-radius); - background-color: var(--accent); -} - -progress::-moz-progress-bar { - border-radius: var(--standard-border-radius); - background-color: var(--accent); - transition-property: width; - transition-duration: 0.3s; -} - -progress:indeterminate::-moz-progress-bar { - background-color: var(--accent-bg); -} - -dialog { - max-width: 40rem; - margin: auto; -} - -dialog::backdrop { - background-color: var(--bg); - opacity: 0.8; -} - -@media only screen and (max-width: 720px) { - dialog { - max-width: 100%; - margin: auto 1em; - } -} - -/* Superscript & Subscript */ -/* Prevent scripts from affecting line-height. */ -sup, sub { - vertical-align: baseline; - position: relative; -} - -sup { - top: -0.4em; -} - -sub { - top: 0.3em; -} - -/* Classes for notices */ -.notice { - background: var(--accent-bg); - border: 2px solid var(--border); - border-radius: var(--standard-border-radius); - padding: 1.5rem; - margin: 2rem 0; -} diff --git a/src/argus_htmx/static/themes/stylize.css b/src/argus_htmx/static/themes/stylize.css deleted file mode 100644 index 54023153a..000000000 --- a/src/argus_htmx/static/themes/stylize.css +++ /dev/null @@ -1,278 +0,0 @@ -/*! stylize.css v1.0.0 | License MIT | https://github.com/vasanthv/stylize.css */ -:root{ - --text: #333333; - --text-med: #888888; - --text-light: #cccccc; - --text-lighter: #eeeeee; - --blue: #3498db; - --dark-blue: #2980b9; - --yellow: #ffeaa7; - --red: #c0392b; - --border-radius: 3px; -} - -body{ - font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; /* To use the system default font. */ - line-height: 1.5; - font-size: 1em; - color:var(--text); - margin: 10px; - -webkit-text-size-adjust: 100%; -} - -/* Headings */ -h1{ - font-size: 2em; /* h1 inside section is treated different in some browsers */ - margin: 0.67em 0; -} -h2{ - font-size: 1.5em; - margin: 0.83em 0; -} -h3{ - font-size: 1.17em; - margin: 1em 0; -} -h4{ - font-size: 1em; - margin: 1.17em 0; -} -h5{ - font-size: 0.83em; - margin: 1.5em 0; -} -h6{ - font-size: 0.67em; - margin: 2em 0; -} - -/* Links */ -a{ - color:var(--blue); - background-color: transparent; -} -a:visited{ - color:var(--dark-blue); -} - -/* Navigation Links*/ -nav{ - background-color: var(--text-lighter); - padding: 1em; - margin:-10px; -} -nav a{ - padding:0.5em; - border-radius: var(--border-radius); - text-decoration: none; -} -nav a:hover{ - background-color: var(--text-light); - color: var(--text) -} - -/* Horizontal Line */ -hr{ - border: 1px solid var(--text-med); - border-bottom: 0px; - height:0px; -} - -/* Text formatting tags */ -p{ - margin:1em 0; -} -mark{ - background-color: var(--yellow); - color:#333333; -} -small{ - font-size: 80%; -} -sub, -sup{ - font-size: 75%; -} - -/* Quotation and Citation tags*/ -blockquote{ - border-left: 4px solid var(--text-light); - margin:1em 0; - padding:0.6em 1em; -} -pre{ - font-family: monospace; - border:1px solid var(--text-light); - background-color: var(--text-lighter); - padding: 0.8em; - border-radius: var(--border-radius); - font-size: 1em; - white-space: pre-wrap; - word-wrap: break-word; -} -code, -kbd, -samp{ - font-family: monospace; - font-size: 1em; -} -code, -kbd{ - border-radius: var(--border-radius); - padding:0px 2px; -} -code{ - border:1px solid var(--text-light); - background-color: var(--text-lighter); - color:var(--red); -} -kbd{ - border:1px solid var(--text); - background-color: var(--text); - color:var(--text-lighter); -} - -/* List items */ -ul, ol{ - padding-left: 2em; -} - -/* Form elements */ - -fieldset{ - border: 1px solid var(--text); - border-radius: var(--border-radius); -} -select { - -webkit-appearance: none; - -moz-appearance : none; - appearance : none; - background: transparent; - background-image: url("data:image/svg+xml;utf8,"); - background-repeat: no-repeat; - background-position-x: 100%; - background-position-y: 50%; -} -button, -input, -select, -textarea, -a[role="button"] { - font-family: inherit; - font-size: 100%; - line-height: 1.5; - margin: 0; - padding: 0.33em; - border: 1px solid var(--text-light); - border-radius: var(--border-radius); - box-sizing: border-box; -} -input[type="checkbox"], -input[type="radio"]{ - border:none; - border:0; -} - -button, -input[type="button"], -input[type="submit"], -a[role="button"] { - padding: 0.33em 0.66em; - cursor: pointer; - background-color: var(--text-lighter); - color: var(--text); - text-decoration: none; -} -button:hover, -input[type="button"]:hover, -input[type="submit"]:hover, -a[role="button"]:hover { - background-color: var(--text-light); -} -a[role="button"]{ - padding:0.5em 0.66em; -} -button:disabled, -input[type="button"]:disabled, -input[type="submit"]:disabled, -a[role="button"]:disabled { - background-color: var(--text-lighter); - color: var(--text-light); - cursor: not-allowed; -} - /* Progress Bar */ - -progress[value] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - vertical-align: middle; - border: none; - width: 15em; - height: 0.75em; - background-color: var(--text-light); - color: var(--blue); -} -progress[value]::-webkit-progress-bar { - background-color: var(--text-light); -} -progress[value]::-webkit-progress-value{ - background-color: var(--blue); -} - -/* Table Elements */ -table{ - border-collapse: collapse; -} -table, -table th, -table td { - border-bottom: 1px solid var(--text-light); - padding:0.33em 0.66em; - text-align: left; - vertical-align: middle; -} -table[border="1"], -table[border="1"] th, -table[border="1"] td { - border: 1px solid var(--text-light); -} - -/* Utility classes */ -.left{ - float: left; -} -.right{ - float: right; -} -.center{ - text-align: center; -} -.clear{ - clear: both; -} -.hide{ - display: none; -} -.spacer{ - display: block; - height:1em; - border:none; - clear: both; -} -.wrap{ - width: 100%; - max-width: 40em; - margin: auto; -} -.reset{ - font: inherit; - font-size: 100%; - margin: 0; - padding: 0; - border: 0; - text-decoration: none; -} -ol.reset, ul.reset { - list-style: none; -} diff --git a/src/argus_htmx/static/themes/tacit-css-1.5.0.css b/src/argus_htmx/static/themes/tacit-css-1.5.0.css deleted file mode 100644 index d6693fafd..000000000 --- a/src/argus_htmx/static/themes/tacit-css-1.5.0.css +++ /dev/null @@ -1,416 +0,0 @@ -input, textarea, select, button, option, html, body { - font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -input, textarea, select, button, option, html, body { - font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -th { - font-weight: 600; -} -td, th { - border-bottom: 1.08px solid #595959; - padding: 14.85px 18px; - text-align: left; - vertical-align: top; -} -thead th { - border-bottom-width: 2.16px; - padding-bottom: 6.3px; -} -table { - display: table; - width: 100%} -@media all and (max-width: 1024px) { - table { - display: none; -} -}@media all and (max-width: 1024px) { - table thead { - display: none; -} -}table tr { - border-bottom-width: 2.16px; -} -table tr th { - border-bottom-width: 2.16px; -} -table tr td, table tr th { - overflow: hidden; - padding: 5.4px 3.6px; -} -@media all and (max-width: 1024px) { - table tr td, table tr th { - border: 0; - display: inline-block; -} -}@media all and (max-width: 1024px) { - table tr { - display: inline-block; - margin: 10.8px 0; -} -}@media all and (max-width: 1024px) { - table { - display: inline-block; -} -}input, textarea, select, button, option, html, body { - font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -fieldset { - display: flex; - flex-direction: row; - flex-wrap: wrap; -} -fieldset legend { - margin: 18px 0; -} -input, textarea, select, button { - border-radius: 3.6px; - display: inline-block; - padding: 9.9px; -} -input+label, input+input[type="checkbox"], input+input[type="radio"], textarea+label, textarea+input[type="checkbox"], textarea+input[type="radio"], select+label, select+input[type="checkbox"], select+input[type="radio"], button+label, button+input[type="checkbox"], button+input[type="radio"] { - page-break-before: always; -} -input, select, label { - margin-right: 3.6px; -} -textarea { - min-height: 90px; - min-width: 360px; -} -label { - display: inline-block; - margin-bottom: 12.6px; -} -label+* { - page-break-before: always; -} -label>input { - margin-bottom: 0; -} -input[type="submit"], input[type="reset"], button { - background: #f2f2f2; - color: #191919; - cursor: pointer; - display: inline; - margin-bottom: 18px; - margin-right: 7.2px; - padding: 6.525px 23.4px; - text-align: center; -} -input[type="submit"]:hover, input[type="reset"]:hover, button:hover { - background: #d9d9d9; - color: #000; -} -input[type="submit"][disabled], input[type="reset"][disabled], button[disabled] { - background: #e6e5e5; - color: #403f3f; - cursor: not-allowed; -} -input[type="submit"], button[type="submit"] { - background: #275a90; - color: #fff; -} -input[type="submit"]:hover, button[type="submit"]:hover { - background: #173454; - color: #bfbfbf; -} -input, select, textarea { - margin-bottom: 18px; -} -input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="phone"], input[type="tel"], input[type="number"], input[type="datetime"], input[type="date"], input[type="month"], input[type="week"], input[type="color"], input[type="time"], input[type="search"], input[type="range"], input[type="file"], input[type="datetime-local"], select, textarea { - border: 1px solid #595959; - padding: 5.4px 6.3px; -} -input[type="checkbox"], input[type="radio"] { - flex-grow: 0; - height: 29.7px; - margin-left: 0; - margin-right: 9px; - vertical-align: middle; -} -input[type="checkbox"]+label, input[type="radio"]+label { - page-break-before: avoid; -} -select[multiple] { - min-width: 270px; -} -input, textarea, select, button, option, html, body { - font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -pre, code, kbd, samp, var, output { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14.4px; -} -pre { - border-left: 1.8px solid #59c072; - line-height: 25.2px; - overflow: auto; - padding-left: 18px; -} -pre code { - background: none; - border: 0; - line-height: 29.7px; - padding: 0; -} -code, kbd { - background: #daf1e0; - border-radius: 3.6px; - color: #2a6f3b; - display: inline-block; - line-height: 18px; - padding: 3.6px 6.3px 2.7px; -} -kbd { - background: #2a6f3b; - color: #fff; -} -mark { - background: #ffc; - padding: 0 3.6px; -} -input, textarea, select, button, option, html, body { - font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -h1, h2, h3, h4, h5, h6 { - color: #000; - margin-bottom: 18px; -} -h1 { - font-size: 36px; - font-weight: 500; - line-height: 41.4px; - margin-top: 72px; -} -h2 { - font-size: 25.2px; - font-weight: 400; - line-height: 30.6px; - margin-top: 54px; -} -h3 { - font-size: 21.6px; - line-height: 27px; - margin-top: 36px; -} -h4 { - font-size: 18px; - line-height: 23.4px; - margin-top: 18px; -} -h5 { - font-size: 14.4px; - font-weight: bold; - line-height: 21.6px; - text-transform: uppercase; -} -h6 { - color: #595959; - font-size: 14.4px; - font-weight: bold; - line-height: 18px; - text-transform: uppercase; -} -input, textarea, select, button, option, html, body { - font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - font-stretch: normal; - font-style: normal; - font-weight: 400; - line-height: 29.7px; -} -a { - color: #275a90; - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -hr { - border-bottom: 1px solid #595959; -} -figcaption, small { - font-size: 15.3px; -} -figcaption { - color: #595959; -} -var, em, i { - font-style: italic; -} -dt, strong, b { - font-weight: 600; -} -del, s { - text-decoration: line-through; -} -ins, u { - text-decoration: underline; -} -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -* { - border: 0; - border-collapse: separate; - border-spacing: 0; - box-sizing: border-box; - margin: 0; - max-width: 100%; - padding: 0; - vertical-align: baseline; -} -html, body { - width: 100%} -html { - height: 100%} -body { - background: #fff; - color: #1a1919; - padding: 36px; -} -p, ul, ol, dl, blockquote, hr, pre, table, form, fieldset, figure, address { - margin-bottom: 29.7px; -} -section { - margin-left: auto; - margin-right: auto; - width: 900px; -} -aside { - float: right; - width: 285px; -} -article, header, footer { - padding: 43.2px; -} -article { - background: #fff; - border: 1px solid #d9d9d9; - border-radius: 7.2px; -} -nav { - text-align: center; -} -nav ul { - list-style: none; - margin-left: 0; - text-align: center; -} -nav ul li { - display: inline-block; - margin-left: 9px; - margin-right: 9px; - vertical-align: middle; -} -nav ul li:first-child { - margin-left: 0; -} -nav ul li:last-child { - margin-right: 0; -} -ol, ul { - margin-left: 31.5px; -} -li dl, li ol, li ul { - margin-bottom: 0; -} -dl { - display: inline-block; -} -dt { - padding: 0 18px; -} -dd { - padding: 0 18px 4.5px; -} -dd:last-of-type { - border-bottom: 1.08px solid #595959; -} -dd+dt { - border-top: 1.08px solid #595959; - padding-top: 9px; -} -blockquote { - border-left: 2.16px solid #595959; - padding: 4.5px 18px 4.5px 15.84px; -} -blockquote footer { - color: #595959; - font-size: 13.5px; - margin: 0; -} -blockquote p { - margin-bottom: 0; -} -img { - height: auto; - margin: 0 auto; -} -figure img { - display: block; -} -@media (max-width: 767px) { - body { - padding: 18px 0; -} -article { - border: 0; - padding: 18px; -} -header, footer { - padding: 18px; -} -textarea, input, select { - min-width: 0; -} -fieldset { - min-width: 0; -} -fieldset * { - flex-grow: 1; - page-break-before: auto; -} -section { - width: auto; -} -x:-moz-any-link { - display: table-cell; -} -} - diff --git a/src/argus_htmx/static/themes/tufte.css b/src/argus_htmx/static/themes/tufte.css deleted file mode 100644 index 834848ef7..000000000 --- a/src/argus_htmx/static/themes/tufte.css +++ /dev/null @@ -1,486 +0,0 @@ -@charset "UTF-8"; - -/* Import ET Book styles - adapted from https://github.com/edwardtufte/et-book/blob/gh-pages/et-book.css */ - -@font-face { - font-family: "et-book"; - src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot"); - src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff") format("woff"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf") format("truetype"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg#etbookromanosf") format("svg"); - font-weight: normal; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "et-book"; - src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot"); - src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff") format("woff"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf") format("truetype"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg#etbookromanosf") format("svg"); - font-weight: normal; - font-style: italic; - font-display: swap; -} - -@font-face { - font-family: "et-book"; - src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot"); - src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff") format("woff"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf") format("truetype"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg#etbookromanosf") format("svg"); - font-weight: bold; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "et-book-roman-old-style"; - src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot"); - src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff") format("woff"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf") format("truetype"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg#etbookromanosf") format("svg"); - font-weight: normal; - font-style: normal; - font-display: swap; -} - -/* Tufte CSS styles */ -html { - font-size: 15px; -} - -body { - width: 87.5%; - margin-left: auto; - margin-right: auto; - padding-left: 12.5%; - font-family: et-book, Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; - background-color: #fffff8; - color: #111; - max-width: 1400px; - counter-reset: sidenote-counter; -} - -/* Adds dark mode */ -@media (prefers-color-scheme: dark) { - body { - background-color: #151515; - color: #ddd; - } -} - -h1 { - font-weight: 400; - margin-top: 4rem; - margin-bottom: 1.5rem; - font-size: 3.2rem; - line-height: 1; -} - -h2 { - font-style: italic; - font-weight: 400; - margin-top: 2.1rem; - margin-bottom: 1.4rem; - font-size: 2.2rem; - line-height: 1; -} - -h3 { - font-style: italic; - font-weight: 400; - font-size: 1.7rem; - margin-top: 2rem; - margin-bottom: 1.4rem; - line-height: 1; -} - -hr { - display: block; - height: 1px; - width: 55%; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; -} - -p.subtitle { - font-style: italic; - margin-top: 1rem; - margin-bottom: 1rem; - font-size: 1.8rem; - display: block; - line-height: 1; -} - -.numeral { - font-family: et-book-roman-old-style; -} - -.danger { - color: red; -} - -article { - padding: 5rem 0rem; -} - -section { - padding-top: 1rem; - padding-bottom: 1rem; -} - -p, -dl, -ol, -ul { - font-size: 1.4rem; - line-height: 2rem; -} - -p { - margin-top: 1.4rem; - margin-bottom: 1.4rem; - padding-right: 0; - vertical-align: baseline; -} - -/* Chapter Epigraphs */ -div.epigraph { - margin: 5em 0; -} - -div.epigraph > blockquote { - margin-top: 3em; - margin-bottom: 3em; -} - -div.epigraph > blockquote, -div.epigraph > blockquote > p { - font-style: italic; -} - -div.epigraph > blockquote > footer { - font-style: normal; -} - -div.epigraph > blockquote > footer > cite { - font-style: italic; -} -/* end chapter epigraphs styles */ - -blockquote { - font-size: 1.4rem; -} - -blockquote p { - width: 55%; - margin-right: 40px; -} - -blockquote footer { - width: 55%; - font-size: 1.1rem; - text-align: right; -} - -section > p, -section > footer, -section > table { - width: 55%; -} - -/* 50 + 5 == 55, to be the same width as paragraph */ -section > dl, -section > ol, -section > ul { - width: 50%; - -webkit-padding-start: 5%; -} - -dt:not(:first-child), -li:not(:first-child) { - margin-top: 0.25rem; -} - -figure { - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - max-width: 55%; - -webkit-margin-start: 0; - -webkit-margin-end: 0; - margin: 0 0 3em 0; -} - -figcaption { - float: right; - clear: right; - margin-top: 0; - margin-bottom: 0; - font-size: 1.1rem; - line-height: 1.6; - vertical-align: baseline; - position: relative; - max-width: 40%; -} - -figure.fullwidth figcaption { - margin-right: 24%; -} - -/* Links: replicate underline that clears descenders */ -a:link, -a:visited { - color: inherit; -} - -.no-tufte-underline:link { - background: unset; - text-shadow: unset; -} - -a:link, .tufte-underline, .hover-tufte-underline:hover { - text-decoration: none; - background: -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(currentColor, currentColor); - background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(currentColor, currentColor); - -webkit-background-size: 0.05em 1px, 0.05em 1px, 1px 1px; - -moz-background-size: 0.05em 1px, 0.05em 1px, 1px 1px; - background-size: 0.05em 1px, 0.05em 1px, 1px 1px; - background-repeat: no-repeat, no-repeat, repeat-x; - text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8; - background-position: 0% 93%, 100% 93%, 0% 93%; -} - -@media screen and (-webkit-min-device-pixel-ratio: 0) { - a:link, .tufte-underline, .hover-tufte-underline:hover { - background-position-y: 87%, 87%, 87%; - } -} - -/* Adds dark mode */ -@media (prefers-color-scheme: dark) { - a:link, .tufte-underline, .hover-tufte-underline:hover { - text-shadow: 0.03em 0 #151515, -0.03em 0 #151515, 0 0.03em #151515, 0 -0.03em #151515, 0.06em 0 #151515, -0.06em 0 #151515, 0.09em 0 #151515, -0.09em 0 #151515, 0.12em 0 #151515, -0.12em 0 #151515, 0.15em 0 #151515, -0.15em 0 #151515; - } -} - -a:link::selection, -a:link::-moz-selection { - text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe; - background: #b4d5fe; -} - -/* Sidenotes, margin notes, figures, captions */ -img { - max-width: 100%; -} - -.sidenote, -.marginnote { - float: right; - clear: right; - margin-right: -60%; - width: 50%; - margin-top: 0.3rem; - margin-bottom: 0; - font-size: 1.1rem; - line-height: 1.3; - vertical-align: baseline; - position: relative; -} - -.sidenote-number { - counter-increment: sidenote-counter; -} - -.sidenote-number:after, -.sidenote:before { - font-family: et-book-roman-old-style; - position: relative; - vertical-align: baseline; -} - -.sidenote-number:after { - content: counter(sidenote-counter); - font-size: 1rem; - top: -0.5rem; - left: 0.1rem; -} - -.sidenote:before { - content: counter(sidenote-counter) " "; - font-size: 1rem; - top: -0.5rem; -} - -blockquote .sidenote, -blockquote .marginnote { - margin-right: -82%; - min-width: 59%; - text-align: left; -} - -div.fullwidth, -table.fullwidth { - width: 100%; -} - -div.table-wrapper { - overflow-x: auto; - font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif; -} - -.sans { - font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif; - letter-spacing: .03em; -} - -code, pre > code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 1.0rem; - line-height: 1.42; - -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. See https://github.com/edwardtufte/tufte-css/issues/81#issuecomment-261953409 */ -} - -.sans > code { - font-size: 1.2rem; -} - -h1 > code, -h2 > code, -h3 > code { - font-size: 0.80em; -} - -.marginnote > code, -.sidenote > code { - font-size: 1rem; -} - -pre > code { - font-size: 0.9rem; - width: 52.5%; - margin-left: 2.5%; - overflow-x: auto; - display: block; -} - -pre.fullwidth > code { - width: 90%; -} - -.fullwidth { - max-width: 90%; - clear:both; -} - -span.newthought { - font-variant: small-caps; - font-size: 1.2em; -} - -input.margin-toggle { - display: none; -} - -label.sidenote-number { - display: inline-block; - max-height: 2rem; /* should be less than or equal to paragraph line-height */ -} - -label.margin-toggle:not(.sidenote-number) { - display: none; -} - -.iframe-wrapper { - position: relative; - padding-bottom: 56.25%; /* 16:9 */ - padding-top: 25px; - height: 0; -} - -.iframe-wrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -@media (max-width: 760px) { - body { - width: 84%; - padding-left: 8%; - padding-right: 8%; - } - - hr, - section > p, - section > footer, - section > table { - width: 100%; - } - - pre > code { - width: 97%; - } - - section > dl, - section > ol, - section > ul { - width: 90%; - } - - figure { - max-width: 90%; - } - - figcaption, - figure.fullwidth figcaption { - margin-right: 0%; - max-width: none; - } - - blockquote { - margin-left: 1.5em; - margin-right: 0em; - } - - blockquote p, - blockquote footer { - width: 100%; - } - - label.margin-toggle:not(.sidenote-number) { - display: inline; - } - - .sidenote, - .marginnote { - display: none; - } - - .margin-toggle:checked + .sidenote, - .margin-toggle:checked + .marginnote { - display: block; - float: left; - left: 1rem; - clear: both; - width: 95%; - margin: 1rem 2.5%; - vertical-align: baseline; - position: relative; - } - - label { - cursor: pointer; - } - - div.table-wrapper, - table { - width: 85%; - } - - img { - width: 100%; - } -} diff --git a/src/argus_htmx/static/themes/vanilla.css b/src/argus_htmx/static/themes/vanilla.css deleted file mode 100644 index 4765d61e0..000000000 --- a/src/argus_htmx/static/themes/vanilla.css +++ /dev/null @@ -1,187 +0,0 @@ -/* Reset */ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} - -* { - box-sizing: border-box; -} - -/* Variables */ -:root { - --desktop-font-size: 1.2rem/1.55; - --mobile-font-size: 1rem/1.45; - --text-color: #2d2d2d; - --link-color: blue; - --link-color-alt: darkblue; - --primary-color: lightsteelblue; - --secondary-color: aliceblue; - --tertiary-color: whitesmoke; -} - -/* Typography */ -body { - color: var(--text-color); - margin: 0 auto; - max-width: 75ch; - padding: 0 0.5rem; -} -body, input { - font: var(--desktop-font-size) -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto, Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol"; -} - -h1,h2,h3,h4,h5,h6,p,blockquote,dl,img,figure { - margin: 2rem 0; -} - -h1,h2,h3,h4,h5,h6 { font-weight: bold; line-height: 1.2; } -h1 { font-size: 200%; } -h2 { font-size: 150%; } -h3 { font-size: 120%; } -h4,h5,h6 { font-size: 100%; } -h5, h6 { text-transform: uppercase; } - -header h1 { border-bottom: 1px solid; } - -a,a:visited { color: var(--link-color); } -a:hover,a:focus { color: var(--link-color-alt); } - -strong, time, b { font-weight: bold; } -em, dfn, i { font-style: italic; } -sub { font-size: 60%; vertical-align: bottom; } -small { font-size: 80%; } - -blockquote, q { - background: var(--secondary-color); - border-left: 10px solid var(--primary-color); - display: block; - font-family: "Georgia", serif; - padding: 1rem; -} -blockquote p:first-child { margin-top: 0; } -blockquote p:last-child { margin-bottom: 0; } -cite { - font-family: "Georgia", serif; - font-style: italic; - font-weight: bold; - margin-top: 1rem; -} - -kbd,code,samp,pre,var { font: var(--mobile-font-size) monospace; } -code, pre { - background: var(--tertiary-color); - border: 1px solid; - overflow: auto; - padding: 0.25rem 0.5rem; -} -code pre , pre code { border: 0; padding: 0; } - -/* Elements */ -hr { - background: var(--text-color); - border: 0; - height: 1px; - margin: 4rem 0; -} - -img { - display: block; - height: auto; - max-width: 100%; -} - -figure { - border: 1px solid var(--primary-color); - display: inline-block; - padding: 1rem; - width: 100%; -} -figure img { margin: 0 auto; } -figure figcaption { font-size: 80%; margin-top: 0.5rem; text-align: center; } - -ul, ol { margin: 2rem 0; padding: 0 0 0 2rem; } -ul li, ol li { margin-bottom: 1rem; } -li > ul, li > ol { margin: 0.25rem 0 0.5rem; padding: 0 0 0 2rem; } -li > ul li, li > ol li { margin-bottom: 0.5rem; } - -dl dd { padding-left: 2rem; } - -table { - border: 1px solid var(--primary-color); - border-collapse: collapse; - table-layout: fixed; - text-align: left; - width: 100%; -} -table caption { margin: 2rem 0; } -table tr { border-bottom: 1px solid var(--primary-color); } -table thead { position: sticky; top: 0; } -table tbody tr:nth-child(even) { background: var(--tertiary-color); } -table th { background: var(--secondary-color); font-weight: bold; } -table th, table td { padding: 0.5rem; } - -input { - appearance: none; - border: 1px solid var(--text-color); - display: block; - margin: 0.5rem 0; - padding: 0.8rem; -} -input:focus, input:active { background-color: var(--secondary-color); border-color: var(--link-color); } - -sup { font-size: 80%; vertical-align: top; } - -/* Mobile Styling */ -@media screen and (max-width: 75ch) { - body, input { - font: var(--mobile-font-size) -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto, Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol"; - } - table { table-layout: auto; } -} - -/* Dark mode support */ -@media (prefers-color-scheme: dark) { - body { - background: #191919; - } - input:focus, input:active { - background-color: var(--text-color); - color: var(--secondary-color); - } - table, - table tr, - table th:not(:last-of-type), - table td:not(:last-of-type) { - border-color: var(--text-color); - } - table thead th, - table tfoot th { - background-color: var(--primary-color-light); - } - :root { - --text-color: #fff; - --link-color: orange; - --link-color-alt: yellow; - --primary-color: orange; - --primary-color-light: dimgrey; - --secondary-color: black; - --tertiary-color: #2d2d2d; - } -} diff --git a/src/argus_htmx/static/themes/water-dark.css b/src/argus_htmx/static/themes/water-dark.css deleted file mode 100644 index da07440c8..000000000 --- a/src/argus_htmx/static/themes/water-dark.css +++ /dev/null @@ -1,240 +0,0 @@ -@charset "UTF-8"; -body { - font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; - line-height: 1.4; - max-width: 800px; - margin: 20px auto; - padding: 0 10px; - color: #dbdbdb; - background: #202b38; - text-rendering: optimizeLegibility; -} - -button, input, textarea { - transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; -} - -h1 { - font-size: 2.2em; - margin-top: 0; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin-bottom: 12px; -} - -h1, -h2, -h3, -h4, -h5, -h6, -strong { - color: #ffffff; -} - -h1, -h2, -h3, -h4, -h5, -h6, -b, -strong, -th { - font-weight: 600; -} - -blockquote { - border-left: 4px solid #0096bfab; - margin: 1.5em 0em; - padding: 0.5em 1em; - font-style: italic; -} - -blockquote > footer { - margin-top: 10px; - font-style: normal; -} - -blockquote cite { - font-style: normal; -} - -address { - font-style: normal; -} - -a[href^='mailto']::before { - content: '📧 '; -} - -a[href^='tel']::before { - content: '📞 '; -} - -a[href^='sms']::before { - content: '💬 '; -} - -button, -input[type='submit'], -input[type='button'], -input[type='checkbox'] { - cursor: pointer; -} - -input:not([type='checkbox']):not([type='radio']), -select { - display: block; -} - -input, select, button, textarea { - color: #ffffff; - background-color: #161f27; - font-family: inherit; - font-size: inherit; - margin-right: 6px; - margin-bottom: 6px; - padding: 10px; - border: none; - border-radius: 6px; - outline: none; -} - -input:not([type='checkbox']):not([type='radio']), -select, button, textarea { - -webkit-appearance: none; -} - -textarea { - margin-right: 0; - width: 100%; - box-sizing: border-box; - resize: vertical; -} - -button, input[type='submit'], input[type='button'] { - padding-right: 30px; - padding-left: 30px; -} - -button:hover, -input[type='submit']:hover, -input[type='button']:hover { - background: #324759; -} - -input:focus, -select:focus, -button:focus, -textarea:focus { - box-shadow: 0 0 0 2px #0096bfab; -} - -input[type='checkbox']:active, -input[type='radio']:active, -input[type='submit']:active, -input[type='button']:active, -button:active { - transform: translateY(2px); -} - -input:disabled, -select:disabled, -button:disabled, -textarea:disabled { - cursor: not-allowed; - opacity: .5; -} - -::-webkit-input-placeholder { - color: #a9a9a9; -} - -:-ms-input-placeholder { - color: #a9a9a9; -} - -::-ms-input-placeholder { - color: #a9a9a9; -} - -::placeholder { - color: #a9a9a9; -} - -a { - text-decoration: none; - color: #41adff; -} - -a:hover { - text-decoration: underline; -} - -code, kbd { - background: #161f27; - color: #ffbe85; - padding: 5px; - border-radius: 6px; -} - -pre > code { - padding: 10px; - display: block; - overflow-x: auto; -} - -img { - max-width: 100%; -} - -hr { - border: none; - border-top: 1px solid #dbdbdb; -} - -table { - border-collapse: collapse; - margin-bottom: 10px; - width: 100%; -} - -td, th { - padding: 6px; - text-align: left; -} - -th { - border-bottom: 1px solid #dbdbdb; -} - -tbody tr:nth-child(even) { - background-color: #161f27; -} - -::-webkit-scrollbar { - height: 10px; - width: 10px; -} - -::-webkit-scrollbar-track { - background: #161f27; - border-radius: 6px; -} - -::-webkit-scrollbar-thumb { - background: #324759; - border-radius: 6px; -} - -::-webkit-scrollbar-thumb:hover { - background: #415c73; -} - diff --git a/src/argus_htmx/static/themes/water-light.css b/src/argus_htmx/static/themes/water-light.css deleted file mode 100644 index c26aaef83..000000000 --- a/src/argus_htmx/static/themes/water-light.css +++ /dev/null @@ -1,240 +0,0 @@ -@charset "UTF-8"; -body { - font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; - line-height: 1.4; - max-width: 800px; - margin: 20px auto; - padding: 0 10px; - color: #363636; - background: #ffffff; - text-rendering: optimizeLegibility; -} - -button, input, textarea { - transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; -} - -h1 { - font-size: 2.2em; - margin-top: 0; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin-bottom: 12px; -} - -h1, -h2, -h3, -h4, -h5, -h6, -strong { - color: #000000; -} - -h1, -h2, -h3, -h4, -h5, -h6, -b, -strong, -th { - font-weight: 600; -} - -blockquote { - border-left: 4px solid #0096bfab; - margin: 1.5em 0em; - padding: 0.5em 1em; - font-style: italic; -} - -blockquote > footer { - margin-top: 10px; - font-style: normal; -} - -blockquote cite { - font-style: normal; -} - -address { - font-style: normal; -} - -a[href^='mailto']::before { - content: '📧 '; -} - -a[href^='tel']::before { - content: '📞 '; -} - -a[href^='sms']::before { - content: '💬 '; -} - -button, -input[type='submit'], -input[type='button'], -input[type='checkbox'] { - cursor: pointer; -} - -input:not([type='checkbox']):not([type='radio']), -select { - display: block; -} - -input, select, button, textarea { - color: #000000; - background-color: #efefef; - font-family: inherit; - font-size: inherit; - margin-right: 6px; - margin-bottom: 6px; - padding: 10px; - border: none; - border-radius: 6px; - outline: none; -} - -input:not([type='checkbox']):not([type='radio']), -select, button, textarea { - -webkit-appearance: none; -} - -textarea { - margin-right: 0; - width: 100%; - box-sizing: border-box; - resize: vertical; -} - -button, input[type='submit'], input[type='button'] { - padding-right: 30px; - padding-left: 30px; -} - -button:hover, -input[type='submit']:hover, -input[type='button']:hover { - background: #dddddd; -} - -input:focus, -select:focus, -button:focus, -textarea:focus { - box-shadow: 0 0 0 2px #0096bfab; -} - -input[type='checkbox']:active, -input[type='radio']:active, -input[type='submit']:active, -input[type='button']:active, -button:active { - transform: translateY(2px); -} - -input:disabled, -select:disabled, -button:disabled, -textarea:disabled { - cursor: not-allowed; - opacity: .5; -} - -::-webkit-input-placeholder { - color: #949494; -} - -:-ms-input-placeholder { - color: #949494; -} - -::-ms-input-placeholder { - color: #949494; -} - -::placeholder { - color: #949494; -} - -a { - text-decoration: none; - color: #0076d1; -} - -a:hover { - text-decoration: underline; -} - -code, kbd { - background: #efefef; - color: #000000; - padding: 5px; - border-radius: 6px; -} - -pre > code { - padding: 10px; - display: block; - overflow-x: auto; -} - -img { - max-width: 100%; -} - -hr { - border: none; - border-top: 1px solid #dbdbdb; -} - -table { - border-collapse: collapse; - margin-bottom: 10px; - width: 100%; -} - -td, th { - padding: 6px; - text-align: left; -} - -th { - border-bottom: 1px solid #dbdbdb; -} - -tbody tr:nth-child(even) { - background-color: #efefef; -} - -::-webkit-scrollbar { - height: 10px; - width: 10px; -} - -::-webkit-scrollbar-track { - background: #efefef; - border-radius: 6px; -} - -::-webkit-scrollbar-thumb { - background: #d5d5d5; - border-radius: 6px; -} - -::-webkit-scrollbar-thumb:hover { - background: #c4c4c4; -} - diff --git a/src/argus_htmx/static/themes/writ.css b/src/argus_htmx/static/themes/writ.css deleted file mode 100644 index ec15800d6..000000000 --- a/src/argus_htmx/static/themes/writ.css +++ /dev/null @@ -1,187 +0,0 @@ -/*! - * Writ v1.0.4 - * - * Copyright © 2015, Curtis McEnroe - * - * https://cmcenroe.me/writ/LICENSE (ISC) - */dd, hr, ol ol, ol ul, ul ol, ul ul { - margin: 0; -} -pre, table { - overflow-x: auto; -} -a, ins { - text-decoration: none; -} -html { - font-family: Palatino, Georgia, Lucida Bright, Book Antiqua, serif; - font-size: 16px; - line-height: 1.5rem; -} -code, kbd, pre, samp { - font-family: Consolas, Liberation Mono, Menlo, Courier, monospace; - font-size: .833rem; - color: #111; -} -kbd { - font-weight: 700; -} -h1, h2, h3, h4, h5, h6, th { - font-weight: 400; -} -h1 { - font-size: 2.488em; -} -h2 { - font-size: 2.074em; -} -h3 { - font-size: 1.728em; -} -h4 { - font-size: 1.44em; -} -h5 { - font-size: 1.2em; -} -h6 { - font-size: 1em; -} -small { - font-size: .833em; -} -h1, h2, h3 { - line-height: 3rem; -} -blockquote, dl, h1, h2, h3, h4, h5, h6, ol, p, pre, table, ul { - margin: 1.5rem 0 0; -} -pre, table { - margin-bottom: -1px; -} -hr { - border: none; - padding: 1.5rem 0 0; -} -table { - line-height: calc(1.5rem - 1px); - width: 100%; - border-collapse: collapse; -} -pre { - margin-top: calc(1.5rem - 1px); -} -body { - color: #222; - margin: 1.5rem 1ch; -} -a, a code, header nav a:visited { - color: #00e; -} -a:visited, a:visited code { - color: #60b; -} -mark { - color: inherit; - background-color: #fe0; -} -code, pre, samp, tfoot, thead { - background-color: rgba(0, 0, 0, .05); -} -blockquote, ins, main aside { - border: rgba(0, 0, 0, .05) solid; -} -blockquote, main aside { - border-width: 0 0 0 .5ch; -} -code, pre, samp { - border: rgba(0, 0, 0, .1) solid; -} -td, th { - border: solid #dbdbdb; -} -body>header { - text-align: center; -} -body>footer, main { - display: block; - max-width: 78ch; - margin: auto; -} -main aside, main figure { - float: right; - margin: 1.5rem 0 0 1ch; -} -main aside { - max-width: 26ch; - padding: 0 0 0 .5ch; -} -blockquote { - margin-right: 3ch; - margin-left: 1.5ch; - padding: 0 0 0 1ch; -} -pre { - border-width: 1px; - border-radius: 2px; - padding: 0 .5ch; -} -pre code { - border: none; - padding: 0; - background-color: transparent; - white-space: inherit; -} -code, ins, samp, td, th { - border-width: 1px; -} -img { - max-width: 100%} -dd, ol, ul { - padding: 0 0 0 3ch; -} -ul>li { - list-style-type: disc; -} -li ul>li { - list-style-type: circle; -} -li li ul>li { - list-style-type: square; -} -ol>li { - list-style-type: decimal; -} -li ol>li { - list-style-type: lower-roman; -} -li li ol>li { - list-style-type: lower-alpha; -} -nav ul { - padding: 0; - list-style-type: none; -} -nav ul li { - display: inline; - padding-left: 1ch; - white-space: nowrap; -} -nav ul li:first-child { - padding-left: 0; -} -ins, mark { - padding: 1px; -} -td, th { - padding: 0 .5ch; -} -sub, sup { - font-size: .75em; - line-height: 1em; -} -code, samp { - border-radius: 2px; - padding: .1em .2em; - white-space: nowrap; -} diff --git a/src/argus_htmx/static/themes/yorha.css b/src/argus_htmx/static/themes/yorha.css deleted file mode 100644 index 178fb717e..000000000 --- a/src/argus_htmx/static/themes/yorha.css +++ /dev/null @@ -1,701 +0,0 @@ -::selection { - background-color: #bab5a1; -} -a { - color: inherit; -} -p { - margin: 0 0 1rem 0; -} -mark { - background-color: #454138; - color: #dcd8c0; -} -h1 { - font-weight: normal; - text-transform: uppercase; - letter-spacing: .5rem; - text-shadow: .3rem .3rem 0 #bab5a1; -} -h2 { - font-weight: lighter; - border: solid #454138; - border-width: .1rem 0; - padding: .1rem 1rem; -} -h3 { - font-weight: lighter; - letter-spacing: .1rem; -} -h4 { - font-weight: lighter; - letter-spacing: .1rem; -} -h5 { - font-weight: lighter; - letter-spacing: .1rem; -} -h6 { - font-weight: lighter; - letter-spacing: .1rem; -} -blockquote { - padding: .5rem; -} -blockquote { - position: relative; -} -blockquote:before { - content: ''; - position: absolute; - top: 0; - left: -1.5rem; - bottom: 0; - height: 100%; - width: .3rem; - border: solid #bab5a1; - border-width: 0 .2rem 0 .6rem; -} -cite { - padding-left: 2rem; -} -cite { - position: relative; -} -cite:before { - content: ''; - position: absolute; - width: .7rem; - height: .7rem; - background-color: #454138; - margin-left: -1rem; - top: .25em; -} -hr { - margin: 1rem 0; - border-top: solid #bab5a1; - border-width: .1rem 0 0 0; -} -table { - border-collapse: collapse; - font-weight: inherit; -} -th { - font-weight: normal; -} -td, th { - padding: .5rem; -} -th { - text-align: left; - border-bottom: .1rem solid #454138; -} -pre { - background-color: #dcd8c0; - padding: 1rem; -} -body { - background-color: #d1cdb7; - font-family: helvetica, sans-serif; - letter-spacing: .03rem; - font-weight: lighter; - color: #454138; -} -body { - -webkit-background-size: .3rem .3rem; - -moz-background-size: .3rem .3rem; - background-size: .3rem .3rem; - background-image: -webkit-linear-gradient(left, #ccc8b1 1px, transparent 1px), -webkit-linear-gradient(top, #ccc8b1 1px, transparent 1px); - background-image: -moz-linear-gradient(left, #ccc8b1 1px, transparent 1px), -moz-linear-gradient(top, #ccc8b1 1px, transparent 1px); - background-image: -o-linear-gradient(left, #ccc8b1 1px, transparent 1px), -o-linear-gradient(top, #ccc8b1 1px, transparent 1px); - background-image: -ms-linear-gradient(left, #ccc8b1 1px, transparent 1px), -ms-linear-gradient(top, #ccc8b1 1px, transparent 1px); - background-image: linear-gradient(to right, #ccc8b1 1px, transparent 1px), linear-gradient(to bottom, #ccc8b1 1px, transparent 1px); -} -::selection { - background-color: #bab5a1; -} -a { - color: inherit; -} -p { - margin: 0 0 1rem 0; -} -mark { - background-color: #454138; - color: #dcd8c0; -} -h1 { - font-weight: normal; - text-transform: uppercase; - letter-spacing: .5rem; - text-shadow: .3rem .3rem 0 #bab5a1; -} -h2 { - font-weight: lighter; - border: solid #454138; - border-width: .1rem 0; - padding: .1rem 1rem; -} -h3 { - font-weight: lighter; - letter-spacing: .1rem; -} -h4 { - font-weight: lighter; - letter-spacing: .1rem; -} -h5 { - font-weight: lighter; - letter-spacing: .1rem; -} -h6 { - font-weight: lighter; - letter-spacing: .1rem; -} -blockquote { - padding: .5rem; -} -blockquote { - position: relative; -} -blockquote:before { - content: ''; - position: absolute; - top: 0; - left: -1.5rem; - bottom: 0; - height: 100%; - width: .3rem; - border: solid #bab5a1; - border-width: 0 .2rem 0 .6rem; -} -cite { - padding-left: 2rem; -} -cite { - position: relative; -} -cite:before { - content: ''; - position: absolute; - width: .7rem; - height: .7rem; - background-color: #454138; - margin-left: -1rem; - top: .25em; -} -hr { - margin: 1rem 0; - border-top: solid #bab5a1; - border-width: .1rem 0 0 0; -} -table { - border-collapse: collapse; - font-weight: inherit; -} -th { - font-weight: normal; -} -td, th { - padding: .5rem; -} -th { - text-align: left; - border-bottom: .1rem solid #454138; -} -pre { - background-color: #dcd8c0; - padding: 1rem; -} -figure { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin: 0; - margin-bottom: 1rem; - background-color: #dcd8c0; - padding: .5rem; -} -figure > :not(figcaption) { - margin: .5rem; -} -figure > figcaption { - -webkit-box-ordinal-group: -1; - -moz-box-ordinal-group: -1; - -o-box-ordinal-group: -1; - -ms-flex-order: -1; - -webkit-order: -1; - order: -1; - margin: -.5rem; - margin-bottom: .5rem; - padding: .5rem 1rem; - font-size: 1.2rem; - background-color: #454138; - color: #bab5a1; -} -iframe { - border: .1rem solid #bab5a1; -} -fieldset { - padding: 1rem; - padding-top: .5rem; - border: .1rem solid #bab5a1; -} -legend { - padding: 0 .5rem; -} -label { - display: inline-block; - margin: .5rem 0; -} -input[type=text] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=password] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=url] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=email] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=tel] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=search] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=number] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=color] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=date] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=month] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=week] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=datetime] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=datetime-local] { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -textarea { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -select { - background: url("data:image/svg+xml; - base64, PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIwLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0LjkgMTAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQuOSAxMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiM0NDQ0NDQ7fQo8L3N0eWxlPgo8dGl0bGU+YXJyb3dzPC90aXRsZT4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxLjQsNC43IDIuNSwzLjIgMy41LDQuNyAiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIzLjUsNS4zIDIuNSw2LjggMS40LDUuMyAiLz4KPC9zdmc+Cg==") no-repeat right; - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; -} -input[type=submit]:not(:disabled) { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #bab5a1; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; - cursor: pointer; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - -ms-transition: all 0.2s; - transition: all 0.2s; -} -input[type=submit]:not(:disabled):hover { - -webkit-box-shadow: .2em .2em .1em 0 #bab5a1; - box-shadow: .2em .2em .1em 0 #bab5a1; -} -input[type=submit]:not(:disabled):hover { - background-color: #454138; - color: #dcd8c0; -} -input[type=submit]:not(:disabled):active { - background-color: #dcd8c0; - color: #454138; -} -input[type=button]:not(:disabled) { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #bab5a1; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; - cursor: pointer; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - -ms-transition: all 0.2s; - transition: all 0.2s; -} -input[type=button]:not(:disabled):hover { - -webkit-box-shadow: .2em .2em .1em 0 #bab5a1; - box-shadow: .2em .2em .1em 0 #bab5a1; -} -input[type=button]:not(:disabled):hover { - background-color: #454138; - color: #dcd8c0; -} -input[type=button]:not(:disabled):active { - background-color: #dcd8c0; - color: #454138; -} -input[type=reset]:not(:disabled) { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #bab5a1; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; - cursor: pointer; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - -ms-transition: all 0.2s; - transition: all 0.2s; -} -input[type=reset]:not(:disabled):hover { - -webkit-box-shadow: .2em .2em .1em 0 #bab5a1; - box-shadow: .2em .2em .1em 0 #bab5a1; -} -input[type=reset]:not(:disabled):hover { - background-color: #454138; - color: #dcd8c0; -} -input[type=reset]:not(:disabled):active { - background-color: #dcd8c0; - color: #454138; -} -input:disabled, button:disabled, .button-disabled { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #dcd8c0; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; - color: #bab5a1; - cursor: not-allowed; -} -button:not(:disabled), .button { - padding: .5rem; - font-size: 1em; - border: none; - outline: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 0; - background-color: #bab5a1; - color: inherit; - font-family: inherit; - letter-spacing: inherit; - font-weight: inherit; - cursor: pointer; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - -ms-transition: all 0.2s; - transition: all 0.2s; - position: relative; -} -button:not(:disabled):hover, .button:hover { - -webkit-box-shadow: .2em .2em .1em 0 #bab5a1; - box-shadow: .2em .2em .1em 0 #bab5a1; -} -button:not(:disabled):before, .button:before { - content: ''; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - -ms-transition: all 0.2s; - transition: all 0.2s; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -button:not(:disabled):after, .button:after { - content: ''; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - -ms-transition: all 0.2s; - transition: all 0.2s; - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - transition-timing-function: ease-out; - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 0; - background-color: #454138; - z-index: -1; -} -button:not(:disabled):hover, .button:hover { - background-color: transparent; - color: #dcd8c0; -} -button:not(:disabled):hover:before, .button:hover:before { - top: -.2rem; - bottom: -.2rem; - border: solid #454138; - border-width: .1rem 0; -} -button:not(:disabled):hover:after, .button:hover:after { - width: 100%} -button:not(:disabled):active, .button:active { - color: #454138; -} -button:not(:disabled):active:after, .button:active:after { - background-color: #dcd8c0; -} -::-webkit-input-placeholder { - opacity: 1; - -ms-filter: none; - filter: none; - color: #bab5a1; - font-weight: lighter; -} -::-moz-placeholder { - opacity: 1; - -ms-filter: none; - filter: none; - color: #bab5a1; - font-weight: lighter; -} -::-ms-input-placeholder { - opacity: 1; - -ms-filter: none; - filter: none; - color: #bab5a1; - font-weight: lighter; -} - diff --git a/src/argus_htmx/themes/utils.py b/src/argus_htmx/themes/utils.py new file mode 100644 index 000000000..2be4a6827 --- /dev/null +++ b/src/argus_htmx/themes/utils.py @@ -0,0 +1,20 @@ +from argus.site.settings import get_json_env, validate_app_setting +from django.conf import settings +from argus_htmx import settings as argus_htmx_settings + + +def get_themes(): + return getattr( + settings, "DAISYUI_THEMES", argus_htmx_settings.DAISYUI_THEMES + ) + + +def get_theme_names(): + themes = get_themes() + theme_names = [] + for theme in themes: + if isinstance(theme, str): + theme_names.append(theme) + elif isinstance(theme, dict): + theme_names.extend(theme.keys()) + return theme_names diff --git a/src/argus_htmx/themes/views.py b/src/argus_htmx/themes/views.py index 86dda2b09..948ac972e 100644 --- a/src/argus_htmx/themes/views.py +++ b/src/argus_htmx/themes/views.py @@ -13,18 +13,10 @@ from django.views.decorators.http import require_GET from django.http import HttpResponseRedirect +from argus_htmx.themes.utils import get_theme_names LOG = logging.getLogger(__name__) THEMES_MODULE = 'argus_htmx' -THEMES_PATH = "static/themes/" - - -def get_theme_files(request): - theme_names = [] - TW_THEMES = getattr(settings, "DAISYUI_THEMES", []) - for f in TW_THEMES: - theme_names.append(f) - return sorted(theme_names) class ThemeListView(ListView): @@ -33,7 +25,7 @@ class ThemeListView(ListView): def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) - self.themes = get_theme_files(request) + self.themes = sorted(get_theme_names()) def get_queryset(self): return self.themes From d2208aa854a81129f3fd8f3086b804ba469175b9 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Tue, 20 Aug 2024 17:37:46 +0200 Subject: [PATCH 057/216] Add management command for injecting daisythemes list into tailwind conf Basis of implementation is copied from https://github.com/GEANT/geant-argus/pull/15. --- .../management/commands/__init__.py | 0 .../management/commands/tailwind_config.py | 45 +++++++++++++++++++ .../tailwindtheme/tailwind.config.template.js | 24 ++++++++++ 3 files changed, 69 insertions(+) create mode 100644 src/argus_htmx/management/commands/__init__.py create mode 100644 src/argus_htmx/management/commands/tailwind_config.py create mode 100644 src/argus_htmx/tailwindtheme/tailwind.config.template.js diff --git a/src/argus_htmx/management/commands/__init__.py b/src/argus_htmx/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/management/commands/tailwind_config.py b/src/argus_htmx/management/commands/tailwind_config.py new file mode 100644 index 000000000..3f1bdf64a --- /dev/null +++ b/src/argus_htmx/management/commands/tailwind_config.py @@ -0,0 +1,45 @@ +import pathlib +from django.core.management.base import BaseCommand +from django.conf import settings +from django.template import engines +from django.template.context import make_context +from django.template import Template + +from argus_htmx.themes.utils import get_themes + + +# Copied from https://github.com/GEANT/geant-argus/pull/15 with minor modifications +class Command(BaseCommand): + help = """\ + +Uses the +template specified in the TAILWIND_CONFIG_TEMPLATE setting (default: tailwind.config.js) +to dynamically build a tailwind.config.js. The template should contain a +'{{ daisyuithemes }}' section without square brackets that will be popuplated by the +daisyUI theme list specified in the DAISYUI_THEMES setting (default: ["dark", "light", {"argus"": {...}} ]) +""" + DEFAULT_TEMPLATE_PATH = "src/argus_htmx/tailwindtheme/tailwind.config.template.js" + DEFAULT_TARGET = "src/argus_htmx/tailwindtheme/tailwind.config.base.js" + + def handle(self, *args, **options): + template_loc = getattr(settings, "TAILWIND_CONFIG_TEMPLATE", self.DEFAULT_TEMPLATE_PATH) + target_path = getattr(settings, "TAILWIND_CONFIG_TARGET", self.DEFAULT_TARGET) + + context = { + "daisyuithemes": get_themes(), + } + template_path = pathlib.Path(template_loc) + if not template_path.is_file(): + self.stdout.write(f"{template_loc} is not a file") + return + + pathlib.Path(target_path).write_text( + self.render_config(template_path=template_path, context=context) + ) + + self.stdout.write(f"Wrote tailwind config to '{target_path}'") + + @staticmethod + def render_config(template_path: pathlib.Path, context): + template = Template(template_path.read_text()) + return template.render(make_context(context, autoescape=False)) diff --git a/src/argus_htmx/tailwindtheme/tailwind.config.template.js b/src/argus_htmx/tailwindtheme/tailwind.config.template.js new file mode 100644 index 000000000..23b7009e7 --- /dev/null +++ b/src/argus_htmx/tailwindtheme/tailwind.config.template.js @@ -0,0 +1,24 @@ +const projectPaths = [ + '../templates/**/*.html', +]; + +const contentPaths = [...projectPaths]; +console.log(`tailwindcss will scan ${contentPaths}`); + + +module.exports = { + content: contentPaths, + theme: { + borderWidth: { + DEFAULT: '2px', + } + }, + daisyui: { + themes: {{ daisyuithemes }}, + }, + plugins: [ + require('@tailwindcss/forms'), + require('@tailwindcss/typography'), + require("daisyui"), + ] +} \ No newline at end of file From 3d80cf54388ed228a927c70de0a7aa59b169e3fb Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 21 Aug 2024 10:44:57 +0200 Subject: [PATCH 058/216] Make default tailwind theme values overridable via env or settings --- src/argus_htmx/management/commands/tailwind_config.py | 10 +++++++--- .../tailwindtheme/tailwind.config.template.js | 6 +++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/argus_htmx/management/commands/tailwind_config.py b/src/argus_htmx/management/commands/tailwind_config.py index 3f1bdf64a..018ef0f7e 100644 --- a/src/argus_htmx/management/commands/tailwind_config.py +++ b/src/argus_htmx/management/commands/tailwind_config.py @@ -6,6 +6,7 @@ from django.template import Template from argus_htmx.themes.utils import get_themes +from argus_htmx import settings as argus_htmx_settings # Copied from https://github.com/GEANT/geant-argus/pull/15 with minor modifications @@ -14,18 +15,21 @@ class Command(BaseCommand): Uses the template specified in the TAILWIND_CONFIG_TEMPLATE setting (default: tailwind.config.js) -to dynamically build a tailwind.config.js. The template should contain a -'{{ daisyuithemes }}' section without square brackets that will be popuplated by the +to dynamically build a tailwind.config.js. The template should contain: + - a'{{ daisyuithemes }}' section without square brackets that will be popuplated by the daisyUI theme list specified in the DAISYUI_THEMES setting (default: ["dark", "light", {"argus"": {...}} ]) + - a '{{ themeoverride }}' section that will be popuplated by a dict containing tailwind theme options + specified in TAILWIND_THEME_OVERRIDE setting (default: {}) """ DEFAULT_TEMPLATE_PATH = "src/argus_htmx/tailwindtheme/tailwind.config.template.js" - DEFAULT_TARGET = "src/argus_htmx/tailwindtheme/tailwind.config.base.js" + DEFAULT_TARGET = "src/argus_htmx/tailwindtheme/tailwind.config.js" def handle(self, *args, **options): template_loc = getattr(settings, "TAILWIND_CONFIG_TEMPLATE", self.DEFAULT_TEMPLATE_PATH) target_path = getattr(settings, "TAILWIND_CONFIG_TARGET", self.DEFAULT_TARGET) context = { + "themeoverride": getattr(settings, "TAILWIND_THEME_OVERRIDE", argus_htmx_settings.TAILWIND_THEME_OVERRIDE), "daisyuithemes": get_themes(), } template_path = pathlib.Path(template_loc) diff --git a/src/argus_htmx/tailwindtheme/tailwind.config.template.js b/src/argus_htmx/tailwindtheme/tailwind.config.template.js index 23b7009e7..f6e2091bc 100644 --- a/src/argus_htmx/tailwindtheme/tailwind.config.template.js +++ b/src/argus_htmx/tailwindtheme/tailwind.config.template.js @@ -5,13 +5,13 @@ const projectPaths = [ const contentPaths = [...projectPaths]; console.log(`tailwindcss will scan ${contentPaths}`); - module.exports = { content: contentPaths, theme: { borderWidth: { DEFAULT: '2px', - } + }, + ...{{ themeoverride }}, }, daisyui: { themes: {{ daisyuithemes }}, @@ -21,4 +21,4 @@ module.exports = { require('@tailwindcss/typography'), require("daisyui"), ] -} \ No newline at end of file +} From 619bdd2ac6c435d9d9eb38cb49ad7b6d3e106d1c Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 21 Aug 2024 13:59:39 +0200 Subject: [PATCH 059/216] Document new deps --- README.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 78603d73a..0d02efe68 100644 --- a/README.rst +++ b/README.rst @@ -41,6 +41,7 @@ In your local settings that star-imports from an `argus-server`_ settings file:: INSTALLED_APPS += [ "django_htmx", "argus_htmx", + "widget_tweaks", ] ROOT_URLCONF = "urls.py" MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] @@ -66,7 +67,7 @@ by "theme_via_GET" below. In your environment variables:: - ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"}, {"app_name": "argus_htmx", "urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}, "context_processors": ["argus_htmx.context_processor.theme_via_GET"]}]' + ARGUS_EXTRA_APPS = '[{"app_name": "django_htmx"}, {"app_name": "argus_htmx", "urls": {"path": "", "urlpatterns_module": "argus_htmx.urls"}, "context_processors": ["argus_htmx.context_processor.theme_via_GET"]}, {"app_name": "widget_tweaks"}]' In your local settings that star-imports from an `argus-server`_ settings file:: From 76aec1e8b24c59d7242a5d790c18550fa27ae81b Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Wed, 21 Aug 2024 15:36:15 +0200 Subject: [PATCH 060/216] Document themes and styling --- README.rst | 99 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 90 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index 0d02efe68..24704bbfe 100644 --- a/README.rst +++ b/README.rst @@ -78,21 +78,99 @@ Update On every new version, reinstall the dependencies since there might be new ones. -Themes ------- +Themes and styling +------------------ To try out class-less themes use the context processor ``argus_htmx.context_processor.theme_via_session`` instead of ``argus_htmx.context_processor.theme_via_GET``. -There are plenty of themes copied from `CSS Bed`_ to play with. Your own themes -can be added by copying one css-file per theme to the static path ``themes/``, -either in an app or in a directory mentioned in ``STATICFILES_DIRS``. +Default included themes are: `light`, `dark` and `argus`. + +This project supports Tailwind CSS utility classes and daisyUI components for styling. +Below is an overview of the stack, installation and build instructions, and configuration details for themes and styles. + +Overview +~~~~~~~~ +* Tailwind CSS: A utility-first CSS framework for rapidly building custom user interfaces. +* daisyUI: A component library for Tailwind CSS that provides a set of ready-to-use components as well as color themes. + +Installation and build instructions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Recommended but open for tweaks and adaptations steps: + +1. Install Tailwind standalone CLI bundled with daisyUI from https://github.com/dobicinaitis/tailwind-cli-extra as ``tailwindcss`` executable. Optionally you can compile tailwind+daisyUI standalone cli bundle yourself as described here: https://github.com/tailwindlabs/tailwindcss/discussions/12294#discussioncomment-8268378. +2. Generate Tailwind config file by running ``tailwind_config`` management command. By default the generated file will be based on ``src/argus_htmx/tailwindtheme/tailwind.config.template.js`` and expected values will be injected with reasonable defaults. For customization options see `Customization`_. +3. Build main stylesheet file using ``tailwindcss`` executable from step 1 and pointing to config file from step 2:: + + ./tailwindcss -c tailwind.config.js -i ./styles.css --output ../static/styles.css + optional ``--watch`` flag may be included if you want the ``--output`` CSS file being rebuild on changes in template files. + + +Customization +~~~~~~~~~~~~~ +Following are a subject to customization: + +1. Override Argus' Tailwind CSS theme defaults and/or choose which daisyUI color themes to include. You can do so by updating the default ``TAILWIND_THEME_OVERRIDE`` and ``DAISYUI_THEMES`` values respectively before running a ``tailwind_config`` management command:: + Via environment variables, for example:: + + TAILWIND_THEME_OVERRIDE = ' + { + "borderWidth": { + "DEFAULT": "1px" + }, + "extend": { + "borderRadius": { + "4xl": "2rem" + } + } + } + ' + DAISYUI_THEMES = ' + [ + "light", + "dark", + "cyberpunk", + "dim", + "autumn", + { "mytheme": { + "primary": "#009eb6", + "primary-content": "#00090c", + "secondary": "#00ac00", + "secondary-content": "#000b00", + "accent": "#ff0000", + "accent-content": "#160000", + "neutral": "#262c0e", + "neutral-content": "#cfd1ca", + "base-100": "#292129", + "base-200": "#221b22", + "base-300": "#1c161c", + "base-content": "#d0cdd0", + "info": "#00feff", + "info-content": "#001616", + "success": "#b1ea50", + "success-content": "#0c1302", + "warning": "#d86d00", + "warning-content": "#110400", + "error": "#ff6280", + "error-content": "#160306" + } + } + ] + ' + + Or by providing corresponding values in your local settings that star-imports from an `argus-server`_ settings file:: + + TAILWIND_THEME_OVERRIDE = {...} + DAISYUI_THEMES = [...] -Icons, pictures, etc. used by the theme MUST be in a subdirectory named the -same as the theme (minus the ".css") in the same directory as the theme so -update the paths accordingly. See the included theme "default.css". + Some links that may be relevant for the customization values mentioned above: + * `daisyUI themes`_ + * `list of daisyUI color names`_ + * `Tailwind CSS theme customization`_ +2. Override the default main stylesheet path by providing a ``path_to_stylesheet`` value in a template ``context``. +3. Include additional styles/stylesheets using ``head`` block in your templates. UI Settings ----------- @@ -125,7 +203,10 @@ example:: For inbuilt support for other types of columns see the howtos in `the local docs `_. -.. _CSS Bed: https://www.cssbed.com/ .. _django-htmx: https://github.com/adamchainz/django-htmx .. _argus-server: https://github.com/Uninett/Argus .. _documentation for django-htmx: https://django-htmx.readthedocs.io/en/latest/ +.. _daisyUI themes: https://daisyui.com/docs/themes/ +.. _list of daisyUI color names: https://daisyui.com/docs/colors/#-2 +.. _tailwind-cli-extra: https://github.com/dobicinaitis/tailwind-cli-extra +.. _Tailwind CSS theme customization: https://tailwindcss.com/docs/theme From e68a2a908547b8d0d9ae250afcc2139c9266d984 Mon Sep 17 00:00:00 2001 From: Ilona Podliashanyk Date: Thu, 22 Aug 2024 10:31:47 +0200 Subject: [PATCH 061/216] Include tailwind.config.js file --- .../tailwindtheme/tailwind.config.js | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/argus_htmx/tailwindtheme/tailwind.config.js diff --git a/src/argus_htmx/tailwindtheme/tailwind.config.js b/src/argus_htmx/tailwindtheme/tailwind.config.js new file mode 100644 index 000000000..9f24c623d --- /dev/null +++ b/src/argus_htmx/tailwindtheme/tailwind.config.js @@ -0,0 +1,47 @@ +const projectPaths = [ + '../templates/**/*.html', +]; + +const contentPaths = [...projectPaths]; +console.log(`tailwindcss will scan ${contentPaths}`); + +module.exports = { + content: contentPaths, + theme: { + borderWidth: { + DEFAULT: '2px', + }, + ...{}, + }, + daisyui: { + themes: ['dark', 'light', { + 'argus': { + 'primary': '#006d91', + 'primary-content': '#d1e1e9', + 'secondary': '#f3b61f', + 'secondary-content': '#140c00', + 'accent': '#c84700', + 'accent-content': '#f8dbd1', + 'neutral': '#006d91', + 'neutral-content': '#d1e1e9', + 'base-100': '#edfaff', + 'base-200': '#ced9de', + 'base-300': '#b0babd', + 'base-content': '#141516', + 'info': '#0073e5', + 'info-content': '#000512', + 'success': '#008700', + 'success-content': '#d3e7d1', + 'warning': '#ee4900', + 'warning-content': '#140200', + 'error': '#e5545a', + 'error-content': '#120203' + } + }], + }, + plugins: [ + require('@tailwindcss/forms'), + require('@tailwindcss/typography'), + require("daisyui"), + ] +} From 5f4a7e5206d39900f0014d5149f5c9484d40c46e Mon Sep 17 00:00:00 2001 From: PelleK Date: Thu, 22 Aug 2024 11:39:09 +0200 Subject: [PATCH 062/216] Support charfield in filterbox --- .../templates/htmx/incidents/_incident_filterbox.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html index 1339ce967..bb4adf2a5 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html @@ -21,6 +21,8 @@ {{ field|add_class:"select select-accent border" }} {% elif field|field_type == "multiplechoicefield" %} {{ field|attr:"size:1"|add_class:"select select-accent border" }} + {% elif field|field_type == "charfield" %} + {{ field|add_class:"input input-accent input-bordered" }} {% endif %} From 409db8bd045bb97854ec63988e2a9a618a058f53 Mon Sep 17 00:00:00 2001 From: PelleK Date: Thu, 22 Aug 2024 11:39:57 +0200 Subject: [PATCH 063/216] Support overriding navbar links --- src/argus_htmx/templates/htmx/base.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 57ea3630e..2281b37fe 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -16,9 +16,11 @@

    - {{ col.label }} + {% if col.header_template %} + {% include col.header_template with label=col.label %} + {% else %} + {{ col.label }} + {% endif %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html b/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html new file mode 100644 index 000000000..7c1eef37a --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html @@ -0,0 +1,26 @@ +
    + {% block menu_tabs %} + +
    + {% include "htmx/incidents/_incident_filterbox.html" %} +
    + +
    + {% include "htmx/incidents/_incidents_update_menu.html" %} +
    + {% endblock menu_tabs %} +
    diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html b/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html new file mode 100644 index 000000000..8110a38ef --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html @@ -0,0 +1,7 @@ + diff --git a/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html b/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html new file mode 100644 index 000000000..a92b061eb --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html @@ -0,0 +1,9 @@ +

    + {{ label }} +

    + + diff --git a/src/argus_htmx/templates/htmx/incidents/incident_list.html b/src/argus_htmx/templates/htmx/incidents/incident_list.html index 80dd691eb..feba4ba42 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_list.html @@ -1,8 +1,8 @@ {% extends base %} {% block main %} -
    - {% include "htmx/incidents/_incident_filterbox.html" %} +
    + {% include "htmx/incidents/_incidents_menubar.html" %}
    From 9835b836c2424b4aa6a77ab7b4a8c7488d4a7494 Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Mon, 26 Aug 2024 14:32:15 +0200 Subject: [PATCH 073/216] Fix issues with getting started-examples in README.md * Make `ROOT_URLCONF` a valid module name, urls.py -> urls * Fix syntax error in `urls.py` example * Add missing imports to `urls.py` example --- README.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index acde08453..e1a3860cc 100644 --- a/README.rst +++ b/README.rst @@ -43,7 +43,7 @@ In your local settings that star-imports from an `argus-server`_ settings file:: "argus_htmx", "widget_tweaks", ] - ROOT_URLCONF = "urls.py" + ROOT_URLCONF = "urls" MIDDLEWARE += ["django_htmx.middleware.HtmxMiddleware"] In the same file, add a copy of the entirety of ``TEMPLATES``. Choose one of @@ -53,10 +53,12 @@ path to the end of the ``context_processors`` list. Next to ``localsettings.py`` create an ``urls.py`` containing:: + from django.urls import path, include + from argus.site.urls import urlpatterns urlpatterns += [ - path("", include("argus_htmx.urls") + path("", include("argus_htmx.urls")) ] With EXTRA_APPS From 44244d986cbbd01be0393b5cf14249be8423db78 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 26 Aug 2024 15:25:17 +0200 Subject: [PATCH 074/216] Improve classic details page * Show all fields that are in classic * Style with daisyUI and tailwind * Make a template for modals, for the buttons The modals are noop, just for show. --- src/argus_htmx/static/styles.css | 386 ++++++++++++++++++ .../templates/htmx/_base_form_modal.html | 17 + .../_incident_acknowledge_modal.html | 5 + .../htmx/incidents/_incident_close_modal.html | 4 + .../_incident_ticket_autocreate_modal.html | 1 + .../_incident_ticket_edit_modal.html | 4 + .../htmx/incidents/incident_detail.html | 131 ++++-- 7 files changed, 525 insertions(+), 23 deletions(-) create mode 100644 src/argus_htmx/templates/htmx/_base_form_modal.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_close_modal.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html diff --git a/src/argus_htmx/static/styles.css b/src/argus_htmx/static/styles.css index 5524d92ec..dae5733ab 100644 --- a/src/argus_htmx/static/styles.css +++ b/src/argus_htmx/static/styles.css @@ -908,6 +908,76 @@ html { content: var(--tw-content); } +.card { + position: relative; + display: flex; + flex-direction: column; + border-radius: var(--rounded-box, 1rem); +} + +.card:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.card-body { + display: flex; + flex: 1 1 auto; + flex-direction: column; + padding: var(--padding-card, 2rem); + gap: 0.5rem; +} + +.card-body :where(p) { + flex-grow: 1; +} + +.card-actions { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + gap: 0.5rem; +} + +.card figure { + display: flex; + align-items: center; + justify-content: center; +} + +.card.image-full { + display: grid; +} + +.card.image-full:before { + position: relative; + content: ""; + z-index: 10; + border-radius: var(--rounded-box, 1rem); + --tw-bg-opacity: 1; + background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity))); + opacity: 0.75; +} + +.card.image-full:before, + .card.image-full > * { + grid-column-start: 1; + grid-row-start: 1; +} + +.card.image-full > figure img { + height: 100%; + -o-object-fit: cover; + object-fit: cover; +} + +.card.image-full > .card-body { + position: relative; + z-index: 20; + --tw-text-opacity: 1; + color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity))); +} + .checkbox { flex-shrink: 0; --chkbg: var(--fallback-bc,oklch(var(--bc)/1)); @@ -1061,6 +1131,18 @@ html { --glass-border-opacity: 15%; } + .btn-outline.btn-primary:hover { + --tw-text-opacity: 1; + color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); + } + + @supports (color: color-mix(in oklab, black, black)) { + .btn-outline.btn-primary:hover { + background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black); + border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black); + } + } + .btn-outline.btn-secondary:hover { --tw-text-opacity: 1; color: var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity))); @@ -1324,6 +1406,90 @@ html { justify-self: end; } +.modal { + pointer-events: none; + position: fixed; + inset: 0px; + margin: 0px; + display: grid; + height: 100%; + max-height: none; + width: 100%; + max-width: none; + justify-items: center; + padding: 0px; + opacity: 0; + overscroll-behavior: contain; + z-index: 999; + background-color: transparent; + color: inherit; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + transition-property: transform, opacity, visibility; + overflow-y: hidden; +} + +:where(.modal) { + align-items: center; +} + +.modal-box { + max-height: calc(100vh - 5em); + grid-column-start: 1; + grid-row-start: 1; + width: 91.666667%; + max-width: 32rem; + --tw-scale-x: .9; + --tw-scale-y: .9; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-bottom-right-radius: var(--rounded-box, 1rem); + border-bottom-left-radius: var(--rounded-box, 1rem); + border-top-left-radius: var(--rounded-box, 1rem); + border-top-right-radius: var(--rounded-box, 1rem); + --tw-bg-opacity: 1; + background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity))); + padding: 1.5rem; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + transition-duration: 200ms; + box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px; + overflow-y: auto; + overscroll-behavior: contain; +} + +.modal-open, +.modal:target, +.modal-toggle:checked + .modal, +.modal[open] { + pointer-events: auto; + visibility: visible; + opacity: 1; +} + +.modal-action { + display: flex; + margin-top: 1.5rem; + justify-content: flex-end; +} + +.modal-toggle { + position: fixed; + height: 0px; + width: 0px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + opacity: 0; +} + +:root:has(:is(.modal-open, .modal:target, .modal-toggle:checked + .modal, .modal[open])) { + overflow: hidden; + scrollbar-gutter: stable; +} + .navbar { display: flex; align-items: center; @@ -1601,6 +1767,15 @@ input.tab:checked + .tab-content, border-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-border-opacity))); } +.badge-neutral { + --tw-border-opacity: 1; + border-color: var(--fallback-n,oklch(var(--n)/var(--tw-border-opacity))); + --tw-bg-opacity: 1; + background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity))); + --tw-text-opacity: 1; + color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity))); +} + .badge-primary { --tw-border-opacity: 1; border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity))); @@ -1610,11 +1785,30 @@ input.tab:checked + .tab-content, color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); } +.badge-accent { + --tw-border-opacity: 1; + border-color: var(--fallback-a,oklch(var(--a)/var(--tw-border-opacity))); + --tw-bg-opacity: 1; + background-color: var(--fallback-a,oklch(var(--a)/var(--tw-bg-opacity))); + --tw-text-opacity: 1; + color: var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity))); +} + +.badge-outline.badge-neutral { + --tw-text-opacity: 1; + color: var(--fallback-n,oklch(var(--n)/var(--tw-text-opacity))); +} + .badge-outline.badge-primary { --tw-text-opacity: 1; color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity))); } +.badge-outline.badge-accent { + --tw-text-opacity: 1; + color: var(--fallback-a,oklch(var(--a)/var(--tw-text-opacity))); +} + .btm-nav > * .label { font-size: 1rem; line-height: 1.5rem; @@ -1638,6 +1832,10 @@ input.tab:checked + .tab-content, border-color: var(--btn-color, var(--fallback-b2)); } + .btn-primary { + --btn-color: var(--fallback-p); + } + .btn-secondary { --btn-color: var(--fallback-s); } @@ -1707,7 +1905,17 @@ input.tab:checked + .tab-content, outline-offset: 2px; } +.btn-primary { + --tw-text-opacity: 1; + color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); + outline-color: var(--fallback-p,oklch(var(--p)/1)); +} + @supports (color: oklch(0% 0 0)) { + .btn-primary { + --btn-color: var(--p); + } + .btn-secondary { --btn-color: var(--s); } @@ -1771,6 +1979,11 @@ input.tab:checked + .tab-content, color: var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity))); } +.btn-outline.btn-primary { + --tw-text-opacity: 1; + color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity))); +} + .btn-outline.btn-primary.btn-active { --tw-text-opacity: 1; color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); @@ -1854,6 +2067,53 @@ input.tab:checked + .tab-content, } } +.card :where(figure:first-child) { + overflow: hidden; + border-start-start-radius: inherit; + border-start-end-radius: inherit; + border-end-start-radius: unset; + border-end-end-radius: unset; +} + +.card :where(figure:last-child) { + overflow: hidden; + border-start-start-radius: unset; + border-start-end-radius: unset; + border-end-start-radius: inherit; + border-end-end-radius: inherit; +} + +.card:focus-visible { + outline: 2px solid currentColor; + outline-offset: 2px; +} + +.card.bordered { + border-width: 1px; + --tw-border-opacity: 1; + border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity))); +} + +.card.compact .card-body { + padding: 1rem; + font-size: 0.875rem; + line-height: 1.25rem; +} + +.card-title { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 1.25rem; + line-height: 1.75rem; + font-weight: 600; +} + +.card.image-full :where(figure) { + overflow: hidden; + border-radius: inherit; +} + .checkbox:focus { box-shadow: none; } @@ -2199,6 +2459,28 @@ input.tab:checked + .tab-content, opacity: 0.6; } +.modal:not(dialog:not(.modal-open)), + .modal::backdrop { + background-color: #0006; + animation: modal-pop 0.2s ease-out; +} + +.modal-open .modal-box, +.modal-toggle:checked + .modal .modal-box, +.modal:target .modal-box, +.modal[open] .modal-box { + --tw-translate-y: 0px; + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.modal-action > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} + @keyframes modal-pop { 0% { opacity: 0; @@ -2710,6 +2992,26 @@ input.tab:checked + .tab-content, right: 7%; } +.card-compact .card-body { + padding: 1rem; + font-size: 0.875rem; + line-height: 1.25rem; +} + +.card-compact .card-title { + margin-bottom: 0.25rem; +} + +.card-normal .card-body { + padding: var(--padding-card, 2rem); + font-size: 1rem; + line-height: 1.5rem; +} + +.card-normal .card-title { + margin-bottom: 0.75rem; +} + .join.join-vertical > :where(*:not(:first-child)) { margin-left: 0px; margin-right: 0px; @@ -2799,6 +3101,45 @@ input.tab:checked + .tab-content, padding-bottom: 0.75rem; } +.modal-top :where(.modal-box) { + width: 100%; + max-width: none; + --tw-translate-y: -2.5rem; + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-bottom-right-radius: var(--rounded-box, 1rem); + border-bottom-left-radius: var(--rounded-box, 1rem); + border-top-left-radius: 0px; + border-top-right-radius: 0px; +} + +.modal-middle :where(.modal-box) { + width: 91.666667%; + max-width: 32rem; + --tw-translate-y: 0px; + --tw-scale-x: .9; + --tw-scale-y: .9; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-top-left-radius: var(--rounded-box, 1rem); + border-top-right-radius: var(--rounded-box, 1rem); + border-bottom-right-radius: var(--rounded-box, 1rem); + border-bottom-left-radius: var(--rounded-box, 1rem); +} + +.modal-bottom :where(.modal-box) { + width: 100%; + max-width: none; + --tw-translate-y: 2.5rem; + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-top-left-radius: var(--rounded-box, 1rem); + border-top-right-radius: var(--rounded-box, 1rem); + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + .stats-horizontal > :not([hidden]) ~ :not([hidden]) { --tw-divide-x-reverse: 0; border-right-width: calc(1px * var(--tw-divide-x-reverse)); @@ -2840,6 +3181,10 @@ input.tab:checked + .tab-content, z-index: 1; } +.m-4 { + margin: 1rem; +} + .my-0 { margin-top: 0px; margin-bottom: 0px; @@ -2882,6 +3227,10 @@ input.tab:checked + .tab-content, flex: 1 1 0%; } +.flex-none { + flex: none; +} + .grow { flex-grow: 1; } @@ -2906,6 +3255,10 @@ input.tab:checked + .tab-content, appearance: none; } +.flex-col { + flex-direction: column; +} + .items-center { align-items: center; } @@ -2928,6 +3281,20 @@ input.tab:checked + .tab-content, margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); } +.divide-y > :not([hidden]) ~ :not([hidden]) { + --tw-divide-y-reverse: 0; + border-top-width: calc(2px * calc(1 - var(--tw-divide-y-reverse))); + border-bottom-width: calc(2px * var(--tw-divide-y-reverse)); +} + +.divide-solid > :not([hidden]) ~ :not([hidden]) { + border-style: solid; +} + +.divide-none > :not([hidden]) ~ :not([hidden]) { + border-style: none; +} + .overflow-x-auto { overflow-x: auto; } @@ -3009,6 +3376,11 @@ input.tab:checked + .tab-content, padding-bottom: 0.5rem; } +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + .text-start { text-align: start; } @@ -3023,6 +3395,20 @@ input.tab:checked + .tab-content, line-height: 1.5rem; } +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.font-bold { + font-weight: 700; +} + .font-medium { font-weight: 500; } diff --git a/src/argus_htmx/templates/htmx/_base_form_modal.html b/src/argus_htmx/templates/htmx/_base_form_modal.html new file mode 100644 index 000000000..8771ae896 --- /dev/null +++ b/src/argus_htmx/templates/htmx/_base_form_modal.html @@ -0,0 +1,17 @@ + + + diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html new file mode 100644 index 000000000..a6d3aa8d0 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_acknowledge_modal.html @@ -0,0 +1,5 @@ +{% extends 'htmx/_base_form_modal.html' %} +{% block dialogform %} + + +{% endblock dialogform %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_close_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_close_modal.html new file mode 100644 index 000000000..a8e0faf43 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_close_modal.html @@ -0,0 +1,4 @@ +{% extends 'htmx/_base_form_modal.html' %} +{% block dialogform %} + +{% endblock dialogform %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html new file mode 100644 index 000000000..6cdf3ed1e --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_autocreate_modal.html @@ -0,0 +1 @@ +{% extends 'htmx/_base_form_modal.html' %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html new file mode 100644 index 000000000..f772e37d9 --- /dev/null +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html @@ -0,0 +1,4 @@ +{% extends 'htmx/_base_form_modal.html' %} +{% block dialogform %} + +{% endblock dialogform %} diff --git a/src/argus_htmx/templates/htmx/incidents/incident_detail.html b/src/argus_htmx/templates/htmx/incidents/incident_detail.html index 67bbdb4a8..838041712 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_detail.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_detail.html @@ -1,49 +1,134 @@ {% extends "htmx/base.html" %} {% block main %} -

    {{ incident.pk }}: {{ incident.description }}

    - +
    {% block incident_detail %} -
    -

    Status

    -

    -{% if incident.open %}Open{% else %}Closed{% endif %} +

    {{ incident.pk }}: {{ incident.description }}

    + +
    +
    + +
    +

    Level

    +

    +{{ incident.level }}

    -
    -

    Level

    -

    -{{ incident.level }} +

    +

    Status

    +

    +{% if incident.open %} +Open{% else %} +Closed{% endif %} +{% if incident.acked %} +Acknowledged{% else %} +Unanacknowledged{% endif %} +{% if incident.ticket_url %} +Acknowledged{% else %} +No ticket{% endif %}

    -
    -

    Tags

    -

    +

    +

    Tags

    +

    {% for tag in incident.deprecated_tags %} -{{ tag }} +{{ tag }} {% endfor %}

    -
    -

    Primary details #{{ incident.pk }}

    +
    +

    Primary details (#{{ incident.pk }})

    -

    Description

    +
    +

    Description

    {{ incident.description }}

    -

    Start time

    +

    Start time

    {{ incident.start_time }}

    -

    Source id

    +

    Duration

    +

    {{ incident.end_time }}

    + +

    Source

    +

    {{ incident.source.name }}

    + +

    Incident id in {{ incident.source.name }}

    {{ incident.source_incident_id }}

    -

    Details url

    -

    {{ incident.details_url }}

    +

    More details at

    +

    +{% if incident.details_url %}{{ incident.details_url }}{% else %}—{% endif %} +

    + +

    Ticket

    +

    +{% if incident.ticket_url %}{{ incident.ticket_url }}{% else %}—{% endif %} +

    + +
    + +{% include 'htmx/incidents/_incident_close_modal.html' with dialog_id="close-incident-dialog" button_title="Close" header="Manually close incident" explanation="Write a message describing why the incident was manually closed" cancel_text="Cancel" submit_text="Close now" %} -

    Ticket url

    -

    {{ incident.ticket_url }}

    +{% if incident.ticket_url %} +{% include 'htmx/incidents/_incident_ticket_edit_modal.html' with dialog_id="edit-ticket-dialog" button_title="Edit ticket url" header="Edit ticket" explanation="" cancel_text="Cancel" submit_text="Update" %} +{% else %} +{% include 'htmx/incidents/_incident_ticket_autocreate_modal.html' with dialog_id="create-ticket-dialog" button_title="Create ticket url" header="Create ticket" explanation="Are you sure you want to automatically generate a ticket from this incident?" cancel_text="No" submit_text="Yes" %} +{% endif %} + +
    +
    +
    +
    + +
    +

    Acknowledgements

    +
    + {% for ack in incident.acks %} +
    +

    + {{ ack.event.description }} +

    +

    + {{ ack.event.actor }} + {{ ack.event.timestamp }} +

    + {% if ack.expiration%}

    Expires: {{ ack.expiration }}

    {% endif %} +
    + {% endfor %} +
    + +{% include 'htmx/incidents/_incident_acknowledge_modal.html' with dialog_id="create-acknowledgment-dialog" button_title="Create acknowledgment" header="Submit acknowledgment" explanation="Write a message describing why this incident was acknowledged" cancel_text="Cancel" submit_text="Submit" %} + +
    +
    +
    + +
    +

    Related events

    +
    +{% for event in incident.events.all %} +{% if not event.ack %} +
    +

    +{{ event.type }} +

    +

    +{{ event.description }} +

    +

    +{{ event.actor }} +{{ event.timestamp }} +

    +
    +{% endif %} +{% endfor %} +
    +
    + {% endblock incident_detail %} +
    {% endblock main %} From 4f7e3e5b73725fd8734653c1eb4e5b7a19ba4a4d Mon Sep 17 00:00:00 2001 From: PelleK Date: Mon, 26 Aug 2024 15:34:24 +0200 Subject: [PATCH 075/216] Fix filterbox text input border --- .../templates/htmx/incidents/_incident_filterbox.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html index e9e564957..2f4015724 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html @@ -21,7 +21,7 @@ {% elif field|field_type == "multiplechoicefield" %} {{ field|attr:"size:1"|add_class:"select select-accent border" }} {% elif field|field_type == "charfield" %} - {{ field|add_class:"input input-accent input-bordered" }} + {{ field|add_class:"input input-accent input-bordered border" }} {% endif %} From d0766b8074c1f7c0e6b8e60c36406ebc3cca806f Mon Sep 17 00:00:00 2001 From: PelleK Date: Tue, 27 Aug 2024 08:18:24 +0200 Subject: [PATCH 076/216] Allow logo customization through context --- src/argus_htmx/templates/htmx/base.html | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index 1cf7ac092..53fc3499d 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -13,9 +13,13 @@
    - No incidents on this page. + {% if count %} + No incidents found that fit all the filter criteria + {% else %} + No incidents on record + {% endif %}
    - {% if col.header_template %} - {% include col.header_template with label=col.label %} - {% else %} - {{ col.label }} - {% endif %} - - No columns configured - + {% if col.header_template %} + {% include col.header_template with label=col.label %} + {% else %} + {{ col.label }} + {% endif %} + No columns configured
    -
    - {% block refresh_info %} - {% include "htmx/incidents/_incidents_refresh_info.html" %} - {% endblock refresh_info %} - - -
    -
    diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html index 01ab26e4d..366395466 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_row.html @@ -1,13 +1,13 @@ - {% block columns %} - {% for col in columns %} - - {% if col.cell_template %} - {% include col.cell_template with column=col %} - {% else %} - UNDEFINED - {% endif %} - - {% endfor %} - {% endblock columns %} + {% block columns %} + {% for col in columns %} + + {% if col.cell_template %} + {% include col.cell_template with column=col %} + {% else %} + UNDEFINED + {% endif %} + + {% endfor %} + {% endblock columns %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html index 93af15b7f..792b0f298 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table_rows.html @@ -1,15 +1,15 @@ {% for incident in incident_list %} - {% block incident %} - {% include "htmx/incidents/_incident_table_row.html" %} - {% endblock incident %} - {% empty %} - - - {% if count %} - No incidents found that fit all the filter criteria - {% else %} - No incidents on record - {% endif %} - - + {% block incident %} + {% include "htmx/incidents/_incident_table_row.html" %} + {% endblock incident %} +{% empty %} + + + {% if count %} + No incidents found that fit all the filter criteria + {% else %} + No incidents on record + {% endif %} + + {% endfor %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket.html index ec7c05b6d..a50190274 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ticket.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket.html @@ -1,5 +1,11 @@ {% if incident.ticket_url %} - - - + + + {% endif %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html index 4d5354cbb..e6787a56c 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_edit_modal.html @@ -1,6 +1,10 @@ {% extends "htmx/incidents/_base_incident_update_modal.html" %} {% block dialogform %} - + {% endblock dialogform %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_manual_create_modal.html b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_manual_create_modal.html index ee224a254..d2155c45c 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_ticket_manual_create_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_ticket_manual_create_modal.html @@ -1,6 +1,10 @@ {% extends "htmx/incidents/_base_incident_update_modal.html" %} {% block dialogform %} - + {% endblock dialogform %} diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html b/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html index b0907b69b..1a0132f07 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_menubar.html @@ -1,26 +1,23 @@
    - {% block menu_tabs %} - -
    - {% include "htmx/incidents/_incident_filterbox.html" %} -
    - -
    - {% include "htmx/incidents/_incidents_update_menu.html" %} -
    - {% endblock menu_tabs %} + {% block menu_tabs %} + +
    + {% include "htmx/incidents/_incident_filterbox.html" %} +
    + +
    + {% include "htmx/incidents/_incidents_update_menu.html" %} +
    + {% endblock menu_tabs %}
    diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html index 95db2e52c..09610ac29 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_refresh_info.html @@ -4,32 +4,43 @@ hx-target="#table" hx-swap="outerHTML" hx-indicator="#incident-list .htmx-indicator"> -
    -
    -
    Total, all time
    -
    {{ count }}
    -
    -
    -
    After filtering
    -
    {{ filtered_count }}
    -
    -
    -
    Per page
    -
    - -
    -
    -
    -
    Last refreshed
    -
    {{ last_refreshed|date:datetime_format|default:"?" }}
    -
    -
    -
    Updating every
    -
    {{ update_interval|default:"?" }}s
    -
    -
    +
    +
    +
    Total, all time
    +
    + {{ count }} +
    +
    +
    +
    After filtering
    +
    + {{ filtered_count }} +
    +
    +
    +
    Per page
    +
    + +
    +
    +
    +
    Last refreshed
    +
    + {{ last_refreshed|date:datetime_format|default:"?" }} +
    +
    +
    +
    Updating every
    +
    + {{ update_interval|default:"?" }}s +
    +
    +
    diff --git a/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html b/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html index dcf9d29bd..2dbaed15f 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html +++ b/src/argus_htmx/templates/htmx/incidents/_incidents_update_menu.html @@ -1,10 +1,10 @@ diff --git a/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html b/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html index a92b061eb..b233b0239 100644 --- a/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html +++ b/src/argus_htmx/templates/htmx/incidents/_selected_incidents_header.html @@ -1,9 +1,7 @@ -

    - {{ label }} -

    +

    {{ label }}

    - + diff --git a/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html b/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html index 649bb7d71..52d3466db 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_add_ack.html @@ -1,54 +1,46 @@ {% extends "htmx/base.html" %} {% load widget_tweaks %} - {% block main %} -

    Add ack

    - - {% block list_of_acks %} -
    -

    Acks

    - {% for ack in incident.acks %} -

    Description: {{ ack.event.description }}

    -

    Expiration: {{ ack.expiration }}

    -

    Acked by: {{ ack.event.actor }} - {% if ack.event.actor.groups.exists %} -

    Groups: - {% for group in ack.event.actor.groups.all %} - {{ group }} - {% endfor %} -

    - {% endif %} -

    +

    Add ack

    + {% block list_of_acks %} +
    +

    Acks

    + {% for ack in incident.acks %} +

    Description: {{ ack.event.description }}

    +

    Expiration: {{ ack.expiration }}

    +

    + Acked by: {{ ack.event.actor }} + {% if ack.event.actor.groups.exists %} +

    + Groups: + {% for group in ack.event.actor.groups.all %}{{ group }}{% endfor %} +

    + {% endif %} +

    + {% endfor %} +
    + {% endblock list_of_acks %} + {% block add_ack %} +
    + {% if request.user.is_authenticated %} +
    + {% csrf_token %} +
    - {% endblock list_of_acks %} - - {% block add_ack %} -
    - - {% if request.user.is_authenticated %} - - {% csrf_token %} - - - {% else %} - You need to Log in - {% endif %} -
    - {% endblock add_ack %} + + + + {% else %} + You need to Log in + {% endif %} +
    + {% endblock add_ack %} {% endblock main %} diff --git a/src/argus_htmx/templates/htmx/incidents/incident_detail.html b/src/argus_htmx/templates/htmx/incidents/incident_detail.html index 4fac97fe6..1a27af3d9 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_detail.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_detail.html @@ -1,141 +1,123 @@ {% extends "htmx/base.html" %} - {% block main %} -
    -{% block incident_detail %} -

    {{ incident.pk }}: {{ incident.description }}

    - -
    -
    - -
    -

    Level

    -

    -{{ incident.level }} -

    -
    - -
    -

    Status

    -

    -{% if incident.open %} -Open{% else %} -Closed{% endif %} -{% if incident.acked %} -Acknowledged{% else %} -Unacknowledged{% endif %} -{% if incident.ticket_url %} -Ticket {{ incident.ticket_url }}{% else %} -No ticket{% endif %} -

    -
    - -
    -

    Tags

    -

    -{% for tag in incident.deprecated_tags %} -{{ tag }} -{% endfor %} -

    -
    - -
    -

    Primary details (#{{ incident.pk }})

    - -
    -

    Description

    -

    {{ incident.description }}

    - -

    Start time

    -

    {{ incident.start_time|date:datetime_format }}

    - -

    Duration

    -

    {{ incident.end_time|date:datetime_format }}

    - -

    Source

    -

    {{ incident.source.name }}

    - -

    Incident id in {{ incident.source.name }}

    -

    {{ incident.source_incident_id }}

    - -

    More details at

    -

    -{% if incident.details_url %}{{ incident.details_url }}{% else %}—{% endif %} -

    - -

    Ticket

    -

    -{% if incident.ticket_url %}{{ incident.ticket_url }}{% else %}—{% endif %} -

    - -
    - -{% if incident.stateful %} -{% if incident.open %} -{% include "htmx/incidents/_incident_close_modal.html" with dialog_id="close-incident-dialog" button_title="Close" header="Manually close incident" explanation="Write a message describing why the incident was manually closed" endpoint=endpoints.close cancel_text="Cancel" submit_text="Close now" %} -{% else %} -{% include "htmx/incidents/_incident_reopen_modal.html" with dialog_id="reopen-incident-dialog" button_title="Reopen" header="Manually reopen incident" explanation="Write a message describing why the incident was manually reopend" endpoint=endpoints.reopen cancel_text="Cancel" submit_text="Reopen now" %} -{% endif %} -{% endif %} - -{% if incident.ticket_url %} -{% include "htmx/incidents/_incident_ticket_edit_modal.html" with dialog_id="edit-ticket-dialog" button_title="Edit ticket url" header="Edit ticket" explanation="" endpoint=endpoints.edit_ticket cancel_text="Cancel" submit_text="Update" %} -{% else %} - -{% include "htmx/incidents/_incident_ticket_edit_modal.html" with dialog_id="manual-create-ticket-dialog" button_title="Add ticket url" header="Add url to existing ticket" explanation="Are you sure you want to store this url to an existing ticket on this incident?" endpoint=endpoints.add_ticket cancel_text="Cancel" submit_text="Add ticket" %} -{% endif %} - -
    -
    -
    -
    - -
    -

    Acknowledgements

    -
    - {% for ack in incident.acks %} -
    -

    - {{ ack.event.description }} -

    -

    - {{ ack.event.actor }} - {{ ack.event.timestamp|date:datetime_format }} -

    - {% if ack.expiration %}

    Expires: {{ ack.expiration|date:datetime_format }}

    {% endif %} -
    - {% endfor %} -
    - -{% include "htmx/incidents/_incident_acknowledge_modal.html" with dialog_id="create-acknowledgment-dialog" button_title="Create acknowledgment" header="Submit acknowledgment" explanation="Write a message describing why this incident was acknowledged" endpoint=endpoints.ack cancel_text="Cancel" submit_text="Submit" %} - +
    + {% block incident_detail %} +

    {{ incident.pk }}: {{ incident.description }}

    +
    +
    +
    +

    Level

    +

    {{ incident.level }}

    +
    +
    +

    Status

    +

    + {% if incident.open %} + Open + {% else %} + Closed + {% endif %} + {% if incident.acked %} + Acknowledged + {% else %} + Unacknowledged + {% endif %} + {% if incident.ticket_url %} + Ticket {{ incident.ticket_url }} + {% else %} + No ticket + {% endif %} +

    +
    +
    +

    Tags

    +

    + {% for tag in incident.deprecated_tags %}{{ tag }}{% endfor %} +

    +
    +
    +

    Primary details (#{{ incident.pk }})

    +
    +

    Description

    +

    {{ incident.description }}

    +

    Start time

    +

    {{ incident.start_time|date:datetime_format }}

    +

    Duration

    +

    {{ incident.end_time|date:datetime_format }}

    +

    Source

    +

    {{ incident.source.name }}

    +

    Incident id in {{ incident.source.name }}

    +

    {{ incident.source_incident_id }}

    +

    More details at

    +

    + {% if incident.details_url %} + {{ incident.details_url }} + {% else %} + — + {% endif %} +

    +

    Ticket

    +

    + {% if incident.ticket_url %} + {{ incident.ticket_url }} + {% else %} + — + {% endif %} +

    +
    + {% if incident.stateful %} + {% if incident.open %} + {% include "htmx/incidents/_incident_close_modal.html" with dialog_id="close-incident-dialog" button_title="Close" header="Manually close incident" explanation="Write a message describing why the incident was manually closed" endpoint=endpoints.close cancel_text="Cancel" submit_text="Close now" %} + {% else %} + {% include "htmx/incidents/_incident_reopen_modal.html" with dialog_id="reopen-incident-dialog" button_title="Reopen" header="Manually reopen incident" explanation="Write a message describing why the incident was manually reopend" endpoint=endpoints.reopen cancel_text="Cancel" submit_text="Reopen now" %} + {% endif %} + {% endif %} + {% if incident.ticket_url %} + {% include "htmx/incidents/_incident_ticket_edit_modal.html" with dialog_id="edit-ticket-dialog" button_title="Edit ticket url" header="Edit ticket" explanation="" endpoint=endpoints.edit_ticket cancel_text="Cancel" submit_text="Update" %} + {% else %} + + {% include "htmx/incidents/_incident_ticket_edit_modal.html" with dialog_id="manual-create-ticket-dialog" button_title="Add ticket url" header="Add url to existing ticket" explanation="Are you sure you want to store this url to an existing ticket on this incident?" endpoint=endpoints.add_ticket cancel_text="Cancel" submit_text="Add ticket" %} + {% endif %} +
    +
    +
    +
    +
    +

    Acknowledgements

    +
    + {% for ack in incident.acks %} +
    +

    {{ ack.event.description }}

    +

    + {{ ack.event.actor }} + {{ ack.event.timestamp|date:datetime_format }} +

    + {% if ack.expiration %}

    Expires: {{ ack.expiration|date:datetime_format }}

    {% endif %} +
    + {% endfor %} +
    + {% include "htmx/incidents/_incident_acknowledge_modal.html" with dialog_id="create-acknowledgment-dialog" button_title="Create acknowledgment" header="Submit acknowledgment" explanation="Write a message describing why this incident was acknowledged" endpoint=endpoints.ack cancel_text="Cancel" submit_text="Submit" %} +
    +
    +
    +
    +

    Related events

    +
    + {% for event in incident.events.all %} + {% if not event.ack %} +
    +

    {{ event.get_type_display }}

    +

    {{ event.description }}

    +

    + {{ event.actor }} + {{ event.timestamp|date:datetime_format }} +

    +
    + {% endif %} + {% endfor %} +
    +
    +
    + {% endblock incident_detail %}
    -
    -
    - -
    -

    Related events

    -
    -{% for event in incident.events.all %} -{% if not event.ack %} -
    -

    -{{ event.get_type_display }} -

    -

    -{{ event.description }} -

    -

    -{{ event.actor }} -{{ event.timestamp|date:datetime_format }} -

    -
    -{% endif %} -{% endfor %} -
    -
    -
    - -{% endblock incident_detail %} -
    {% endblock main %} diff --git a/src/argus_htmx/templates/htmx/incidents/incident_list.html b/src/argus_htmx/templates/htmx/incidents/incident_list.html index 51be0ed7f..2133b9fdc 100644 --- a/src/argus_htmx/templates/htmx/incidents/incident_list.html +++ b/src/argus_htmx/templates/htmx/incidents/incident_list.html @@ -1,21 +1,21 @@ {% extends base %} {% block main %} -
    - {% if incidents_extra_widget %} -
    -
    {% include "htmx/incidents/_incidents_menubar.html" %}
    -
    {% include incidents_extra_widget %}
    -
    - {% else %} - {% include "htmx/incidents/_incidents_menubar.html" %} - {% endif %} -
    -
    - {% block table %} - {% include "htmx/incidents/_incident_table.html" %} - {% endblock table %} -
    -
    -
    -
    +
    + {% if incidents_extra_widget %} +
    +
    {% include "htmx/incidents/_incidents_menubar.html" %}
    +
    {% include incidents_extra_widget %}
    +
    + {% else %} + {% include "htmx/incidents/_incidents_menubar.html" %} + {% endif %} +
    +
    + {% block table %} + {% include "htmx/incidents/_incident_table.html" %} + {% endblock table %} +
    +
    +
    +
    {% endblock main %} diff --git a/src/argus_htmx/templates/htmx/themes/theme_dropdown.html b/src/argus_htmx/templates/htmx/themes/theme_dropdown.html index 5ca464dc3..33016464c 100644 --- a/src/argus_htmx/templates/htmx/themes/theme_dropdown.html +++ b/src/argus_htmx/templates/htmx/themes/theme_dropdown.html @@ -1,14 +1,14 @@
    - - Theme - {{ theme }} - -
      -
    • loading...

    • -
    + + Theme + {{ theme }} + +
      +
    • +

      loading...

      +
    • +
    diff --git a/src/argus_htmx/templates/htmx/themes/theme_list.html b/src/argus_htmx/templates/htmx/themes/theme_list.html index 849d865ec..0443e40ec 100644 --- a/src/argus_htmx/templates/htmx/themes/theme_list.html +++ b/src/argus_htmx/templates/htmx/themes/theme_list.html @@ -1,17 +1,18 @@ {% for item in theme_list %} -
  • - -
  • +
  • + +
  • {% empty %} -
  • empty

  • +
  • +

    empty

    +
  • {% endfor %} diff --git a/src/argus_htmx/templates/htmx/themes/themes_list.html b/src/argus_htmx/templates/htmx/themes/themes_list.html index 6a07c692b..260961245 100644 --- a/src/argus_htmx/templates/htmx/themes/themes_list.html +++ b/src/argus_htmx/templates/htmx/themes/themes_list.html @@ -1,23 +1,22 @@ {% extends "htmx/base.html" %} - {% block main %} -
    -

    Switch theme

    - {% if theme %} -

    Theme is set to: {{ theme }}

    - {% else %} -

    No theme set

    - {% endif %} -
      - {% for item in object_list %} -
    • -
      - {% csrf_token %} - - -
      -
    • - {% endfor %} -
    -
    +
    +

    Switch theme

    + {% if theme %} +

    Theme is set to: {{ theme }}

    + {% else %} +

    No theme set

    + {% endif %} +
      + {% for item in object_list %} +
    • +
      + {% csrf_token %} + + +
      +
    • + {% endfor %} +
    +
    {% endblock main %} diff --git a/src/argus_htmx/templates/htmx_base.html b/src/argus_htmx/templates/htmx_base.html index 6a006372b..788d08d83 100644 --- a/src/argus_htmx/templates/htmx_base.html +++ b/src/argus_htmx/templates/htmx_base.html @@ -1,30 +1,33 @@ -{% load static %} + +{% load static %} - - - + + + - {% block title %}Argus Server: {{ page_title }}{% endblock title %} + {% block title %} + Argus Server: {{ page_title }} + {% endblock title %} - - + {% block head %} {% endblock head %} - - -{% block header %} -

    Argus Server: {{ page_title }}

    -{% endblock header %} - -
    - {% block main %} - {% endblock main %} -
    - -{% block footer %} -{% endblock footer %} - -{% block tail %}{% endblock tail %} - + + + {% block header %} +

    Argus Server: {{ page_title }}

    + {% endblock header %} +
    + {% block main %} + {% endblock main %} +
    + {% block footer %} + {% endblock footer %} + {% block tail %} + {% endblock tail %} + diff --git a/src/argus_htmx/templates/registration/login.html b/src/argus_htmx/templates/registration/login.html index e8d722293..7ca3885b2 100644 --- a/src/argus_htmx/templates/registration/login.html +++ b/src/argus_htmx/templates/registration/login.html @@ -1,26 +1,24 @@ {% extends "htmx/base.html" %} {% load widget_tweaks %} - {% block main %} -
    -
    -

    Log In

    - -
    -
    - {% csrf_token %} - {% for field in form %} - - {% endfor %} - -
    -
    +
    +
    +

    Log In

    +
    +
    + {% csrf_token %} + {% for field in form %} + + {% endfor %} + +
    +
    +
    -
    {% endblock main %} From bb3d603bb99c8e39db3a8558faea00b16b60226c Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 12:16:44 +0100 Subject: [PATCH 160/216] Ignore "Format all HTML with djLint" when blaming --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 165b443e2..2e1e8cebc 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1,2 +1,4 @@ # Format all python with ruff 47f713ddce20e3c751e3cbd05a8671dda8f9a054 +# Format all HTML with djLint +0cd2a6561291dabccf435f19aca3f96323097e8b From 9780b6bc8fc0603d9ece9dc49d7cfb4a1e060cfd Mon Sep 17 00:00:00 2001 From: Johanna England Date: Fri, 18 Oct 2024 11:42:31 +0200 Subject: [PATCH 161/216] Add config for djLint --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 40f5b5398..5630a9fd9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,3 +41,7 @@ output-format = "full" [tool.ruff.lint] select = ["E9", "F63", "F7", "F82"] + +[tool.djlint] +profile="django" +indent = 2 From 81d3a50c72888237a60cc8b00fe94f6000b9dd65 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Fri, 18 Oct 2024 11:59:55 +0200 Subject: [PATCH 162/216] Add formatting with djLint to pre-commit --- .pre-commit-config.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6db4dd573..e6edf54fe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,3 +13,7 @@ repos: - id: ruff # Run the formatter. - id: ruff-format +- repo: https://github.com/djlint/djLint + rev: v1.35.2 + hooks: + - id: djlint-reformat-django From bf89a4ca991a2b466187dbd5dd19896a6090cd95 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Fri, 18 Oct 2024 12:02:32 +0200 Subject: [PATCH 163/216] Add workflow to check formatting of HTML --- .github/workflows/format.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index b189c3e6b..f88184ad9 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -16,3 +16,20 @@ jobs: with: args: "format --check" changed-files: 'true' + + djlint: + runs-on: ubuntu-latest + name: Check HTML formatting + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + + - name: Install dependencies + run: | + pip install -U pip + pip install djlint + + - name: Format HTML + run: djlint . --check From 428d528413025681e9756875e2b9fb01f0762677 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Tue, 22 Oct 2024 15:12:45 +0200 Subject: [PATCH 164/216] Rewrite assigned lambda functions as def --- tests/test_middleware.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/test_middleware.py b/tests/test_middleware.py index cac5c9cf0..3947d2ec4 100644 --- a/tests/test_middleware.py +++ b/tests/test_middleware.py @@ -16,26 +16,34 @@ def setUp(self): self.request = request def test_process_view_login_required_false(self): - view_func = lambda: None + def view_func(): + return None + view_func.login_required = False result = LoginRequiredMiddleware(lambda x: x).process_view(self.request, view_func, None, {}) self.assertIsNone(result) @test.override_settings(PUBLIC_URLS=("/foo",)) def test_process_view_public_urls(self): - view_func = lambda: None + def view_func(): + return None + result = LoginRequiredMiddleware(lambda x: x).process_view(self.request, view_func, None, {}) self.assertIsNone(result) def test_process_view_authenticated(self): - view_func = lambda: None + def view_func(): + return None + self.request.user.is_authenticated = True result = LoginRequiredMiddleware(lambda x: x).process_view(self.request, view_func, None, {}) self.assertIsNone(result) delattr(self.request.user, "is_authenticated") def test_process_view_redirect(self): - view_func = lambda: None + def view_func(): + return None + self.request.user.is_authenticated = False result = LoginRequiredMiddleware(lambda x: x).process_view(self.request, view_func, None, {}) self.assertIsNotNone(result) From bdabdbe3b8f56f23a8e69844139b238fe58cc3f6 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Tue, 22 Oct 2024 15:12:58 +0200 Subject: [PATCH 165/216] Add E7 rules to ruff --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5630a9fd9..aaf2007a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ line-length = 120 output-format = "full" [tool.ruff.lint] -select = ["E9", "F63", "F7", "F82"] +select = ["E7", "E9", "F63", "F7", "F82"] [tool.djlint] profile="django" From 01ebb33d746eb40dd583e4d606bd44a6aa52b4d4 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 12:37:09 +0100 Subject: [PATCH 166/216] Use percentage syntax for log messages --- src/argus_htmx/incidents/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 38542ff6b..3650f7bb8 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -147,7 +147,7 @@ def incidents_update(request: HtmxHttpRequest, action: str): def incident_detail_close(request, pk: int): incident = get_object_or_404(Incident, id=pk) if not incident.stateful: - LOG.warning(f"Attempt at closing the uncloseable {incident}") + LOG.warning("Attempt at closing the uncloseable %s", incident) messages.warning(request, f"Did not close {incident}, stateless incidents cannot be closed.") return redirect("htmx:incident-detail", pk=pk) form = DescriptionOptionalForm(request.POST or None) @@ -156,7 +156,7 @@ def incident_detail_close(request, pk: int): request.user, description=form.cleaned_data.get("description", ""), ) - LOG.info(f"{{ incident }} manually closed by {{ request.user }}") + LOG.info("%s manually closed by %s", incident, request.user) return redirect("htmx:incident-detail", pk=pk) @@ -164,7 +164,7 @@ def incident_detail_close(request, pk: int): def incident_detail_reopen(request, pk: int): incident = get_object_or_404(Incident, id=pk) if not incident.stateful: - LOG.warning(f"Attempt at reopening the unopenable {incident}") + LOG.warning("Attempt at reopening the unopenable %s", incident) messages.warning(request, f"Did not reopen {incident}, stateless incidents cannot be reopened.") return redirect("htmx:incident-detail", pk=pk) form = DescriptionOptionalForm(request.POST or None) @@ -173,7 +173,7 @@ def incident_detail_reopen(request, pk: int): request.user, description=form.cleaned_data.get("description", ""), ) - LOG.info(f"{{ incident }} manually reopened by {{ request.user }}") + LOG.info("%s manually reopened by %s", incident, request.user) return redirect("htmx:incident-detail", pk=pk) From 82ba3d92d89edf5876a4b5e9ac2d4b4036e7a052 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Tue, 22 Oct 2024 15:01:54 +0200 Subject: [PATCH 167/216] Add F5, F6, F8 and F9 rules to ruff --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index aaf2007a1..572d3aa63 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ line-length = 120 output-format = "full" [tool.ruff.lint] -select = ["E7", "E9", "F63", "F7", "F82"] +select = ["E7", "E9", "F5", "F6", "F7", "F8", "F9"] [tool.djlint] profile="django" From 936f44c400e67bc6386ba36308fd01c65406e08f Mon Sep 17 00:00:00 2001 From: Johanna England Date: Tue, 22 Oct 2024 15:08:20 +0200 Subject: [PATCH 168/216] Add E4 rules to ruff --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 572d3aa63..5dddd73dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ line-length = 120 output-format = "full" [tool.ruff.lint] -select = ["E7", "E9", "F5", "F6", "F7", "F8", "F9"] +select = ["E4", "E7", "E9", "F5", "F6", "F7", "F8", "F9"] [tool.djlint] profile="django" From 76e2d551795abf74bfa2d61319fe1738929b5976 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 13:15:21 +0100 Subject: [PATCH 169/216] Delete unused autogenerated files --- src/argus_htmx/admin.py | 3 --- src/argus_htmx/tests.py | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 src/argus_htmx/admin.py delete mode 100644 src/argus_htmx/tests.py diff --git a/src/argus_htmx/admin.py b/src/argus_htmx/admin.py deleted file mode 100644 index 8c38f3f3d..000000000 --- a/src/argus_htmx/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/src/argus_htmx/tests.py b/src/argus_htmx/tests.py deleted file mode 100644 index 7ce503c2d..000000000 --- a/src/argus_htmx/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. From c0837503a753666ca7fc0c8e5e65e7cb02d387b5 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 13:15:59 +0100 Subject: [PATCH 170/216] Add noqa to unused import that will be used in upcoming PR --- src/argus_htmx/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/models.py b/src/argus_htmx/models.py index 71a836239..077164309 100644 --- a/src/argus_htmx/models.py +++ b/src/argus_htmx/models.py @@ -1,3 +1,3 @@ -from django.db import models +from django.db import models # noqa: F401 - unused-import # Create your models here. From 1b8f652e6b94ab3504777168514364ff984ae100 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 13:16:24 +0100 Subject: [PATCH 171/216] Remove unused imports --- src/argus_htmx/incidents/urls.py | 2 +- src/argus_htmx/incidents/views.py | 2 +- src/argus_htmx/themes/utils.py | 1 - src/argus_htmx/themes/views.py | 8 +------- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/argus_htmx/incidents/urls.py b/src/argus_htmx/incidents/urls.py index 2939e8b0f..ec32f8b8e 100644 --- a/src/argus_htmx/incidents/urls.py +++ b/src/argus_htmx/incidents/urls.py @@ -1,4 +1,4 @@ -from django.urls import path, include +from django.urls import path from . import views diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 3650f7bb8..13e4f6b2e 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -13,7 +13,7 @@ from django.shortcuts import redirect, render, get_object_or_404 from django.urls import reverse -from django.views.decorators.http import require_GET, require_POST +from django.views.decorators.http import require_POST from django.core.paginator import Paginator from django.http import HttpRequest, HttpResponse, HttpResponseBadRequest from django_htmx.middleware import HtmxDetails diff --git a/src/argus_htmx/themes/utils.py b/src/argus_htmx/themes/utils.py index 28728a986..dd6016685 100644 --- a/src/argus_htmx/themes/utils.py +++ b/src/argus_htmx/themes/utils.py @@ -1,4 +1,3 @@ -from argus.site.settings import get_json_env, validate_app_setting from django.conf import settings from argus_htmx import settings as argus_htmx_settings diff --git a/src/argus_htmx/themes/views.py b/src/argus_htmx/themes/views.py index 59e04f5c2..2409416f1 100644 --- a/src/argus_htmx/themes/views.py +++ b/src/argus_htmx/themes/views.py @@ -1,13 +1,7 @@ -import importlib_resources import logging -from pathlib import Path -from typing import Optional -from django.conf import settings from django.contrib import messages -from django.contrib.auth.models import Group -from django.core.exceptions import PermissionDenied -from django.shortcuts import render, reverse, get_object_or_404 +from django.shortcuts import render from django.views.generic import ListView from django.views.decorators.http import require_GET, require_POST From 895f02fe2c9d60c326c45fde9a6b2a8f50137037 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 13:16:39 +0100 Subject: [PATCH 172/216] Remove unused dependency --- pyproject.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5dddd73dc..3d51ac374 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,8 +22,6 @@ dependencies = [ "argus-server>=1.25.0", "django-htmx", "django-widget-tweaks==1.5.0", - # The next is for python_version < 3.12 but we simplify code by always needing it - "importlib_resources>=5.12", ] [project.urls] From cd0518599b61f604fb0be9a960821a61c522cb67 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 13:16:47 +0100 Subject: [PATCH 173/216] Add F4 rules to ruff --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3d51ac374..a12aa2923 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ line-length = 120 output-format = "full" [tool.ruff.lint] -select = ["E4", "E7", "E9", "F5", "F6", "F7", "F8", "F9"] +select = ["E4", "E7", "E9", "F4", "F5", "F6", "F7", "F8", "F9"] [tool.djlint] profile="django" From e7c1b65d9c763c7b817468507d8bbb21defca8c2 Mon Sep 17 00:00:00 2001 From: podliashanyk <60876078+podliashanyk@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:32:31 +0100 Subject: [PATCH 174/216] Use glyphs instead of name references for characters (#209) Both should actually be replaced with icons --- src/argus_htmx/templates/htmx/incidents/_incident_table.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_table.html b/src/argus_htmx/templates/htmx/incidents/_incident_table.html index 780c979b6..f1e8c3442 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_table.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_table.html @@ -58,7 +58,7 @@ « First + class="join-item btn btn-neutral">« First {% endif %} {% if page.has_previous %} @@ -91,7 +91,7 @@ » Last + class="join-item btn btn-neutral">» Last {% endif %} From 3d3f544dd8f91182ec9c0ddec078bb85aa39f95b Mon Sep 17 00:00:00 2001 From: podliashanyk <60876078+podliashanyk@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:41:22 +0100 Subject: [PATCH 175/216] Add meta description and keywords (#208) * Add meta description * Add meta keywords Apparently as of now it isn't used by SEs anymore --- src/argus_htmx/templates/htmx_base.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/argus_htmx/templates/htmx_base.html b/src/argus_htmx/templates/htmx_base.html index 788d08d83..bd2b8a1e3 100644 --- a/src/argus_htmx/templates/htmx_base.html +++ b/src/argus_htmx/templates/htmx_base.html @@ -3,6 +3,10 @@ + + {% block title %} From 02815c0b77586e8cecb2f710b1f7482931dab1a2 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 14:33:12 +0100 Subject: [PATCH 176/216] Use double quotes in tags --- .../templates/htmx/incidents/_base_incident_update_modal.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html b/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html index 851d5aed8..134639347 100644 --- a/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html @@ -1,4 +1,4 @@ -{% extends 'htmx/_base_form_modal.html' %} +{% extends "htmx/_base_form_modal.html" %} {% block form_control %} {% if action_type == "bulk-update" %} hx-post="{% url endpoint|default:'htmx:incident-list' action=action %}" From 0e383af872c43800842eb8c0f0118f9055e69d03 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 14:34:53 +0100 Subject: [PATCH 177/216] Give endblock name --- .../templates/htmx/incidents/_base_incident_update_modal.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html b/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html index 134639347..29bff287d 100644 --- a/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html +++ b/src/argus_htmx/templates/htmx/incidents/_base_incident_update_modal.html @@ -6,4 +6,4 @@ {% else %} {{ block.super }} {% endif %} -{% endblock %} +{% endblock form_control %} From 1897ce49c48eeab1483bcf93827c5a696d62bc88 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Fri, 18 Oct 2024 10:20:04 +0200 Subject: [PATCH 178/216] Add djLint to pre-commit --- .pre-commit-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e6edf54fe..e829ce984 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,3 +17,4 @@ repos: rev: v1.35.2 hooks: - id: djlint-reformat-django + - id: djlint-django From 899696c1dcb270001aec9b210095b8404fcde6bb Mon Sep 17 00:00:00 2001 From: Johanna England Date: Fri, 18 Oct 2024 10:21:02 +0200 Subject: [PATCH 179/216] Add djLint to linting workflow --- .github/workflows/lint.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3c8a387cb..2de9f42e8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,3 +14,20 @@ jobs: - uses: astral-sh/ruff-action@v1 with: changed-files: 'true' + + djlint: + runs-on: ubuntu-latest + name: Lint HTML + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + + - name: Install dependencies + run: | + pip install -U pip + pip install djlint + + - name: Lint + run: djlint --lint . From 1a6f887ae4deb56bd2b8f9066cfe52da7b7532a0 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 14:06:55 +0100 Subject: [PATCH 180/216] Ignore H006 file Not necessary due to our use of Tailwind CSS --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index a12aa2923..e023cd038 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,3 +43,4 @@ select = ["E4", "E7", "E9", "F4", "F5", "F6", "F7", "F8", "F9"] [tool.djlint] profile="django" indent = 2 +ignore="H006" From da2529c4aceac69350ff8bbc32fd2b04f5c87f64 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Mon, 28 Oct 2024 14:44:18 +0100 Subject: [PATCH 181/216] Temporarily ignore D018 (Internal links urlpattern) This is until #186 is merged. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e023cd038..eacb0d2ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,4 +43,4 @@ select = ["E4", "E7", "E9", "F4", "F5", "F6", "F7", "F8", "F9"] [tool.djlint] profile="django" indent = 2 -ignore="H006" +ignore="H006,D018" From e6b1ad52ed794b8d7ba295b2fe5f815b73d0bf4f Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 28 Oct 2024 15:06:51 +0100 Subject: [PATCH 182/216] Add support for a menu of SSO login options * Show all installed login methods * Update README with login settings * Explicitly add dependencies to psa --- README.rst | 20 ++++++- pyproject.toml | 2 + src/argus_htmx/auth/__init__.py | 0 src/argus_htmx/auth/views.py | 53 +++++++++++++++++++ .../templates/registration/login.html | 48 ++++++++++------- src/argus_htmx/urls.py | 5 +- 6 files changed, 105 insertions(+), 23 deletions(-) create mode 100644 src/argus_htmx/auth/__init__.py create mode 100644 src/argus_htmx/auth/views.py diff --git a/README.rst b/README.rst index 7c1cd823c..c149ab657 100644 --- a/README.rst +++ b/README.rst @@ -53,16 +53,18 @@ file) at minimum add:: "django_htmx.middleware.HtmxMiddleware", "argus_htmx.middleware.LoginRequiredMiddleware", ] - LOGIN_URL = "/accounts/login" + LOGIN_URL = "/accounts/login/" + LOGIN_REDIRECT_URL = "/incidents/" LOGIN_REDIRECT_URL = "/incidents/" + LOGOUT_REDIRECT_URL = "/" PUBLIC_URLS = [ "/accounts/login/", "/api/", + "/oidc/", ] TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [str(SITE_DIR / "templates")], "APP_DIRS": True, "OPTIONS": { "debug": get_bool_env("TEMPLATE_DEBUG", False), @@ -146,6 +148,20 @@ In the file ``extra.json``, (which can be syntax checked with for instance } ] +Optional authentication backend settings +---------------------------------------- + +If using ``django.contrib.auth.backends.RemoteUserBackend`` (which depends on +the middleware ``django.contrib.auth.middleware.RemoteUserMiddleware``) there's +an optional setting ``ARGUS_REMOTE_USER_METHOD_NAME`` to choose what to show on +the button. + +If using ``social_core.backends.open_id_connect.OpenIdConnectAuth`` there's an +optional setting ``ARGUS_OIDC_METHOD_NAME`` to choose what to show on the +button. + +Both can be set via environment variables. + Update ====== diff --git a/pyproject.toml b/pyproject.toml index eacb0d2ff..1eda1dffc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,6 +22,8 @@ dependencies = [ "argus-server>=1.25.0", "django-htmx", "django-widget-tweaks==1.5.0", + "social-auth-core>=4.1", + "social-auth-app-django>=5.0", ] [project.urls] diff --git a/src/argus_htmx/auth/__init__.py b/src/argus_htmx/auth/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/argus_htmx/auth/views.py b/src/argus_htmx/auth/views.py new file mode 100644 index 000000000..09a62baa0 --- /dev/null +++ b/src/argus_htmx/auth/views.py @@ -0,0 +1,53 @@ +from django.conf import settings +from django.contrib.auth.views import LoginView as DjangoLoginView +from django.urls import reverse + +from argus.auth.utils import ( + has_model_backend, + has_remote_user_backend, + get_psa_authentication_backends, + get_authentication_backend_classes, +) + + +REMOTE_USER_METHOD_NAME = getattr(settings, "ARGUS_REMOTE_USER_METHOD_NAME", "REMOTE_USER") +OIDC_METHOD_NAME = getattr(settings, "ARGUS_OIDC_METHOD_NAME", "OIDC") + + +def get_htmx_authentication_backend_name_and_type(): + # Needed for HTMX LoginView + backends = get_authentication_backend_classes() + + data = {} + if has_model_backend(backends): + data["local"] = { + "url": reverse("htmx:login"), + "display_name": "Log In", + } + + if has_remote_user_backend(backends): + remote_user_data = { + "url": "/", # Should probably also be a setting + "display_name": REMOTE_USER_METHOD_NAME, + } + data.setdefault("external", []).append(remote_user_data) + + for backend in get_psa_authentication_backends(backends): + display_name = backend.name + if backend.name == "oidc": + display_name = OIDC_METHOD_NAME + psa_backend_data = { + "url": reverse("social:begin", kwargs={"backend": backend.name}), + "display_name": display_name, + } + data.setdefault("external", []).append(psa_backend_data) + + return data + + +class LoginView(DjangoLoginView): + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + backends = get_htmx_authentication_backend_name_and_type() + context["backends"] = backends + return context diff --git a/src/argus_htmx/templates/registration/login.html b/src/argus_htmx/templates/registration/login.html index 7ca3885b2..25c732c2d 100644 --- a/src/argus_htmx/templates/registration/login.html +++ b/src/argus_htmx/templates/registration/login.html @@ -1,24 +1,34 @@ {% extends "htmx/base.html" %} {% load widget_tweaks %} {% block main %} -
    -
    -

    Log In

    -
    -
    - {% csrf_token %} - {% for field in form %} - - {% endfor %} - -
    -
    -
    +
    +
    +

    Log In

    + +
    + {% if "local" in backends %} +
    + {% csrf_token %} + {% for field in form %} + + {% endfor %} + +
    + {% endif %} + + {% if backends.external %} +

    Login with

    + {% for backend in backends.external %} + {{ backend.display_name }} + {% endfor %} + {% endif %} +
    +
    {% endblock main %} diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index a8c6d2684..d9a34a92a 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -1,6 +1,7 @@ +from django.contrib.auth import views as django_auth_views from django.urls import path, include -from django.contrib.auth import views as auth_views +from .auth import views as auth_views from .incidents.urls import urlpatterns as incident_urls from .timeslots.urls import urlpatterns as timeslot_urls from .notificationprofiles.urls import urlpatterns as notificationprofile_urls @@ -11,7 +12,7 @@ app_name = "htmx" urlpatterns = [ path("accounts/login/", auth_views.LoginView.as_view(), name="login"), - path("accounts/logout/", auth_views.LogoutView.as_view(), name="logout"), + path("accounts/logout/", django_auth_views.LogoutView.as_view(), name="logout"), # path("accounts/", include("django.contrib.auth.urls")), path("incidents/", include(incident_urls)), path("timeslots/", include(timeslot_urls)), From 799897d04f278683292d7d2ae0db81bdb2fceec8 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Mon, 28 Oct 2024 15:11:00 +0100 Subject: [PATCH 183/216] Update README with new "How to play"-instructions --- README.rst | 164 +++++++++++++++++++---------------------------------- 1 file changed, 59 insertions(+), 105 deletions(-) diff --git a/README.rst b/README.rst index c149ab657..ccbb285b1 100644 --- a/README.rst +++ b/README.rst @@ -33,120 +33,74 @@ Configure Do this in your workdir, which could be the checked out `argus-server`_ repo. -Django-style -~~~~~~~~~~~~ - This assumes that you have a local settings file (we recommend calling it "localsettings.py" since that is hidden by .gitignore) as a sibling of ``src/``. -In this local settings file (that star-imports from an `argus-server`_ settings -file) at minimum add:: - - INSTALLED_APPS += [ - "django_htmx", - "argus_htmx", - "widget_tweaks", - ] - ROOT_URLCONF = "urls" - MIDDLEWARE += [ - "django_htmx.middleware.HtmxMiddleware", - "argus_htmx.middleware.LoginRequiredMiddleware", - ] - LOGIN_URL = "/accounts/login/" - LOGIN_REDIRECT_URL = "/incidents/" - LOGIN_REDIRECT_URL = "/incidents/" - LOGOUT_REDIRECT_URL = "/" - PUBLIC_URLS = [ - "/accounts/login/", - "/api/", - "/oidc/", - ] - TEMPLATES = [ - { - "BACKEND": "django.template.backends.django.DjangoTemplates", - "APP_DIRS": True, - "OPTIONS": { - "debug": get_bool_env("TEMPLATE_DEBUG", False), - "context_processors": [ - "django.template.context_processors.debug", - "django.template.context_processors.request", - "django.contrib.auth.context_processors.auth", - "django.contrib.messages.context_processors.messages", - "social_django.context_processors.backends", - "social_django.context_processors.login_redirect", - "argus_htmx.context_processors.theme_via_session", - "argus_htmx.context_processors.datetime_format_via_session", - ], - }, - } - ] - -As a sibling to ``localsettings.py`` create an ``urls.py`` containing:: - - from django.urls import path, include - - from argus.site.urls import urlpatterns - - urlpatterns += [ - path("", include("argus_htmx.urls")) - ] - -With EXTRA_APPS -~~~~~~~~~~~~~~~ - -It is necessary to override some settings. - -In for instance your ``localsettings.py``, add:: +At the top of this local settings file, copy the contents of +``argus.htmx.settings``. This will base the settings-file on +``argus.site.settings.backend`` and automatically use +``argus.site.utils.update_settings`` with +``argus_htmx.app_config.APP_SETTINGS`` to set/overwrite some settings and +mutate others. Note the usage of ``globals()``; due to this, inheriting from +``argus.htmx.settings`` will probably not work as expected. + +While developing you will probably prefer to swap out +``argus.site.settings.backend`` with ``argus.site.settings.dev``, as the former +is almost production-ready while the latter is tuned for development and +depends on the optional dependencies you can install via ``pip install +argus-server[dev]``. + +The ``argus.site.utils.update_settings`` function will add or change the settings + +* INSTALLED_APPS +* LOGIN_REDIRECT_URL +* LOGIN_URL +* LOGOUT_REDIRECT_URL +* LOGOUT_URL +* MIDDLEWARE +* PUBLIC_URLS +* ROOT_URLCONF +* TEMPLATES + +See ``argus_htmx.appconfig._app_settings`` for what is being set. The +management command ``printsettings`` (which depends on the app +``django-extensions``, a ``dev``-dependency) will print out the complete +settings used. + +Customizing +----------- + +If you add more pages and endpoints you will have to write your own root +urls.py and set ROOT_URLCONF appropriately. + +If you have some other apps you want installed and configured, you could either +add the necessary settings to your ``localsettings.py`` or use the extra-apps +machinery. The later is especially useful during the development phase when you +haven't settled on which apps to use yet. + +With extra-apps machinery +~~~~~~~~~~~~~~~~~~~~~~~~~ + +You make a JSON-file which is read into your settings via one of two +environment variables. + +In order to add apps and settings that *extend* ``argus-server`` and this +``app`` you use the environment variable ``ARGUS_EXTRA_APPS``:: - LOGIN_URL = "/accounts/login" - LOGIN_REDIRECT_URL = "/incidents/" - PUBLIC_URLS = [ - "/accounts/login/", - "/api/", - ] + export ARGUS_EXTRA_APPS=`cat extra.json` -If you use a shell script to control ``manage.py``, add the following -environment variable:: +If you want to *override* existing apps the environment variable to use is +``ARGUS_OVERRIDING_APPS``:: - export ARGUS_EXTRA_APPS=`cat extra.json` + export ARGUS_OVERRIDING_APPS=`cat overriding.json` -In the file ``extra.json``, (which can be syntax checked with for instance -``jq``), a sibling to ``localsettings.py``:: +Have a look at the contents of ``argus_htmx.appconfig._app_settings`` for an +example of what you can set this way. - [ - { - "app_name": "django_htmx", - "middleware": { - "django_htmx.middleware.HtmxMiddleware": "end" - } - }, - { - "app_name": "argus_htmx", - "urls": { - "path": "", - "urlpatterns_module": "argus_htmx.urls" - }, - "context_processors": [ - "argus_htmx.context_processors.theme_via_session", - "argus_htmx.context_processors.datetime_format_via_session" - ], - "middleware": { - "argus_htmx.middleware.LoginRequiredMiddleware": "end" - } - }, - { - "app_name": "template_partials" - }, - {"app_name": "widget_tweaks"}, - { - "app_name": "debug_toolbar", - "urls": { - "path": "__debug__/", - "urlpatterns_module": "debug_toolbar.urls" - } - } - ] +You can merge your urlpatterns with the apps' urlpatterns via the +``argus.site.utils.get_urlpatterns`` function, see ``argus.htmx.urls`` for an +example. Optional authentication backend settings ---------------------------------------- From 3bd143af6885ecffbf88ebe459e6431102e6c00f Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 29 Oct 2024 07:49:46 +0100 Subject: [PATCH 184/216] Update version for new release --- src/argus_htmx/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/argus_htmx/__init__.py b/src/argus_htmx/__init__.py index 9306ea7c6..f37928101 100644 --- a/src/argus_htmx/__init__.py +++ b/src/argus_htmx/__init__.py @@ -1 +1 @@ -__version__ = "0.14" +__version__ = "0.15" From 07313f9fbb9384489c6aa57885f3fecba358f288 Mon Sep 17 00:00:00 2001 From: Johanna England Date: Tue, 29 Oct 2024 09:30:45 +0100 Subject: [PATCH 185/216] Format login form with djLint --- .../templates/registration/login.html | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/src/argus_htmx/templates/registration/login.html b/src/argus_htmx/templates/registration/login.html index 25c732c2d..b433199d6 100644 --- a/src/argus_htmx/templates/registration/login.html +++ b/src/argus_htmx/templates/registration/login.html @@ -1,34 +1,37 @@ {% extends "htmx/base.html" %} {% load widget_tweaks %} {% block main %} -
    -
    -

    Log In

    - -
    - {% if "local" in backends %} -
    - {% csrf_token %} - {% for field in form %} - - {% endfor %} - -
    - {% endif %} - - {% if backends.external %} -

    Login with

    - {% for backend in backends.external %} - {{ backend.display_name }} - {% endfor %} - {% endif %} -
    +
    +
    +

    Log In

    +
    + {% if "local" in backends %} +
    + {% csrf_token %} + {% for field in form %} + + {% endfor %} + +
    + {% endif %} + {% if backends.external %} +

    Login with

    + {% for backend in backends.external %} + {{ backend.display_name }} + {% endfor %} + {% endif %} +
    +
    -
    {% endblock main %} From 2d832d45bd7197080028d7f3e773424e1f623eab Mon Sep 17 00:00:00 2001 From: Johanna England Date: Tue, 29 Oct 2024 09:31:44 +0100 Subject: [PATCH 186/216] Ignore "Format login form with djLint" when blaming --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 2e1e8cebc..81fdef45c 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -2,3 +2,5 @@ 47f713ddce20e3c751e3cbd05a8671dda8f9a054 # Format all HTML with djLint 0cd2a6561291dabccf435f19aca3f96323097e8b +# Format login form with djLint +07313f9fbb9384489c6aa57885f3fecba358f288 From 7f6e67f69c2988811a0b93888a6ec0d40482f14f Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Mon, 21 Oct 2024 14:53:34 +0200 Subject: [PATCH 187/216] Make a placeholder user settings page --- src/argus_htmx/templates/htmx/user/settings.html | 7 +++++++ src/argus_htmx/urls.py | 2 ++ src/argus_htmx/user/__init__.py | 1 + src/argus_htmx/user/urls.py | 9 +++++++++ src/argus_htmx/user/views.py | 7 +++++++ 5 files changed, 26 insertions(+) create mode 100644 src/argus_htmx/templates/htmx/user/settings.html create mode 100644 src/argus_htmx/user/__init__.py create mode 100644 src/argus_htmx/user/urls.py create mode 100644 src/argus_htmx/user/views.py diff --git a/src/argus_htmx/templates/htmx/user/settings.html b/src/argus_htmx/templates/htmx/user/settings.html new file mode 100644 index 000000000..d2a2b70ad --- /dev/null +++ b/src/argus_htmx/templates/htmx/user/settings.html @@ -0,0 +1,7 @@ +{% extends "htmx/base.html" %} + +{% block main %} +
    +

    {{ page_title }} placeholder

    +
    +{% endblock main %} diff --git a/src/argus_htmx/urls.py b/src/argus_htmx/urls.py index d9a34a92a..3b0e3715a 100644 --- a/src/argus_htmx/urls.py +++ b/src/argus_htmx/urls.py @@ -8,6 +8,7 @@ from .destinations.urls import urlpatterns as destination_urls from .themes.urls import urlpatterns as theme_urls from .dateformat.urls import urlpatterns as dateformat_urls +from .user.urls import urlpatterns as user_urls app_name = "htmx" urlpatterns = [ @@ -20,4 +21,5 @@ path("destinations/", include(destination_urls)), path("themes/", include(theme_urls)), path("dateformat/", include(dateformat_urls)), + path("user/", include(user_urls)), ] diff --git a/src/argus_htmx/user/__init__.py b/src/argus_htmx/user/__init__.py new file mode 100644 index 000000000..8b49193d3 --- /dev/null +++ b/src/argus_htmx/user/__init__.py @@ -0,0 +1 @@ +"""User settings pages""" diff --git a/src/argus_htmx/user/urls.py b/src/argus_htmx/user/urls.py new file mode 100644 index 000000000..362fd6902 --- /dev/null +++ b/src/argus_htmx/user/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from . import views + + +app_name = "htmx" +urlpatterns = [ + path("", views.user_settings, name="user-settings"), +] diff --git a/src/argus_htmx/user/views.py b/src/argus_htmx/user/views.py new file mode 100644 index 000000000..f67e4107d --- /dev/null +++ b/src/argus_htmx/user/views.py @@ -0,0 +1,7 @@ +from django.shortcuts import render + + +def user_settings(request): + """Renders the main settings page for a user""" + context = {"page_title": "User settings"} + return render(request, "htmx/user/settings.html", context=context) From f736f6a66333484d2aa166d2518cee2acc837991 Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Mon, 21 Oct 2024 15:30:12 +0200 Subject: [PATCH 188/216] Copy user settings from dropdown This copies the current user settings menu from the user dropdown to the new user settings page, but leaves out the logout link and styling. Further styling work is needed. --- src/argus_htmx/templates/htmx/user/settings.html | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/argus_htmx/templates/htmx/user/settings.html b/src/argus_htmx/templates/htmx/user/settings.html index d2a2b70ad..c2334a01d 100644 --- a/src/argus_htmx/templates/htmx/user/settings.html +++ b/src/argus_htmx/templates/htmx/user/settings.html @@ -2,6 +2,20 @@ {% block main %}
    -

    {{ page_title }} placeholder

    +

    {{ page_title }}

    + + +
    {% endblock main %} From 2686cd575bee3d54dc6d163bd0702216c02538a3 Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Mon, 21 Oct 2024 15:56:41 +0000 Subject: [PATCH 189/216] Add link to user settings page from dropdown --- src/argus_htmx/templates/htmx/base.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/argus_htmx/templates/htmx/base.html b/src/argus_htmx/templates/htmx/base.html index ed40c2764..e3b428178 100644 --- a/src/argus_htmx/templates/htmx/base.html +++ b/src/argus_htmx/templates/htmx/base.html @@ -45,6 +45,7 @@
  • {% include "htmx/themes/theme_dropdown.html" %}
  • {% include "htmx/dateformat/_dateformat_dropdown.html" %}
  • +
  • Settings…
  • {% csrf_token %} From 73eea67f6d1b161ce61627b6eb998021b3d10852 Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Wed, 23 Oct 2024 13:39:04 +0200 Subject: [PATCH 190/216] Restyle user settings to daisyUI card As per review suggestions. --- src/argus_htmx/templates/htmx/user/settings.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/argus_htmx/templates/htmx/user/settings.html b/src/argus_htmx/templates/htmx/user/settings.html index c2334a01d..7716c666a 100644 --- a/src/argus_htmx/templates/htmx/user/settings.html +++ b/src/argus_htmx/templates/htmx/user/settings.html @@ -1,10 +1,10 @@ {% extends "htmx/base.html" %} {% block main %} -
    -

    {{ page_title }}

    - -
  • @@ -96,7 +96,7 @@

    Acknowledgements

    {% endfor %}
    - {% include "htmx/incidents/_incident_acknowledge_modal.html" with dialog_id="create-acknowledgment-dialog" button_title="Create acknowledgment" header="Submit acknowledgment" explanation="Write a message describing why this incident was acknowledged" endpoint=endpoints.ack cancel_text="Cancel" submit_text="Submit" %} + {% include "htmx/incidents/_incident_acknowledge_modal.html" with action="ack" dialog_id="create-acknowledgment-dialog" button_title="Create acknowledgment" header="Submit acknowledgment" explanation="Write a message describing why this incident was acknowledged" cancel_text="Cancel" submit_text="Submit" %}
    From 8bb815b74f46e8a4adb3689b046c400d71e05bbb Mon Sep 17 00:00:00 2001 From: podliashanyk <60876078+podliashanyk@users.noreply.github.com> Date: Thu, 31 Oct 2024 15:31:11 +0100 Subject: [PATCH 194/216] Add reusable multi-select with dropdown (#213) Also converts source selector to multi-select with dropdown and displays selected sources as badges --- src/argus_htmx/incidents/filter.py | 7 ++ src/argus_htmx/incidents/urls.py | 1 + src/argus_htmx/incidents/views.py | 10 +- src/argus_htmx/static/styles.css | 93 +++++++++++++++++++ .../htmx/forms/checkbox_select_multiple.html | 12 +++ .../htmx/forms/dropdown_select_multiple.html | 28 ++++++ .../htmx/incidents/_incident_filterbox.html | 45 +++++---- .../incidents/_incident_source_select.html | 8 ++ 8 files changed, 185 insertions(+), 19 deletions(-) create mode 100644 src/argus_htmx/templates/htmx/forms/checkbox_select_multiple.html create mode 100644 src/argus_htmx/templates/htmx/forms/dropdown_select_multiple.html create mode 100644 src/argus_htmx/templates/htmx/incidents/_incident_source_select.html diff --git a/src/argus_htmx/incidents/filter.py b/src/argus_htmx/incidents/filter.py index 6cb761f49..c0d47ac5c 100644 --- a/src/argus_htmx/incidents/filter.py +++ b/src/argus_htmx/incidents/filter.py @@ -9,14 +9,21 @@ QuerySetFilter = filter_backend.QuerySetFilter +class DropdownMultiSelect(forms.CheckboxSelectMultiple): + template_name = "htmx/incidents/_incident_source_select.html" + option_template_name = "htmx/forms/checkbox_select_multiple.html" + + class IncidentFilterForm(forms.Form): open = forms.BooleanField(required=False) closed = forms.BooleanField(required=False) acked = forms.BooleanField(required=False) unacked = forms.BooleanField(required=False) source = forms.MultipleChoiceField( + widget=DropdownMultiSelect(attrs={"placeholder": "select sources..."}), choices=tuple(SourceSystem.objects.values_list("id", "name")), required=False, + label="Sources", ) maxlevel = forms.IntegerField( widget=forms.NumberInput( diff --git a/src/argus_htmx/incidents/urls.py b/src/argus_htmx/incidents/urls.py index fd58b237c..338e5c069 100644 --- a/src/argus_htmx/incidents/urls.py +++ b/src/argus_htmx/incidents/urls.py @@ -8,4 +8,5 @@ path("", views.incident_list, name="incident-list"), path("/", views.incident_detail, name="incident-detail"), path("update//", views.incidents_update, name="incidents-update"), + path("filter/", views.filter_form, name="incidents-filter"), ] diff --git a/src/argus_htmx/incidents/views.py b/src/argus_htmx/incidents/views.py index 8e2af41cc..86d18724e 100644 --- a/src/argus_htmx/incidents/views.py +++ b/src/argus_htmx/incidents/views.py @@ -8,7 +8,7 @@ from django.contrib.auth import get_user_model from django.shortcuts import render, get_object_or_404 -from django.views.decorators.http import require_POST +from django.views.decorators.http import require_POST, require_GET from django.core.paginator import Paginator from django.http import HttpRequest, HttpResponse, HttpResponseBadRequest from django_htmx.middleware import HtmxDetails @@ -100,6 +100,14 @@ def _get_page_size(params): return DEFAULT_PAGE_SIZE +@require_GET +def filter_form(request: HtmxHttpRequest): + incident_list_filter = get_filter_function() + filter_form, _ = incident_list_filter(request, None) + context = {"filter_form": filter_form} + return render(request, "htmx/incidents/_incident_filterbox.html", context=context) + + def incident_list(request: HtmxHttpRequest) -> HttpResponse: columns = get_incident_table_columns() diff --git a/src/argus_htmx/static/styles.css b/src/argus_htmx/static/styles.css index 4cf828ff4..28baab3cc 100644 --- a/src/argus_htmx/static/styles.css +++ b/src/argus_htmx/static/styles.css @@ -905,6 +905,11 @@ html { } @media (hover:hover) { + .checkbox-primary:hover { + --tw-border-opacity: 1; + border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity))); + } + .checkbox-accent:hover { --tw-border-opacity: 1; border-color: var(--fallback-a,oklch(var(--a)/var(--tw-border-opacity))); @@ -2288,6 +2293,27 @@ input.tab:checked + .tab-content, linear-gradient(0deg, var(--chkbg) 43%, var(--chkfg) 43%, var(--chkfg) 57%, var(--chkbg) 57%); } +.checkbox-primary { + --chkbg: var(--fallback-p,oklch(var(--p)/1)); + --chkfg: var(--fallback-pc,oklch(var(--pc)/1)); + --tw-border-opacity: 1; + border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity))); +} + +.checkbox-primary:focus-visible { + outline-color: var(--fallback-p,oklch(var(--p)/1)); +} + +.checkbox-primary:checked, + .checkbox-primary[aria-checked="true"] { + --tw-border-opacity: 1; + border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity))); + --tw-bg-opacity: 1; + background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity))); + --tw-text-opacity: 1; + color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity))); +} + .checkbox-accent { --chkbg: var(--fallback-a,oklch(var(--a)/1)); --chkfg: var(--fallback-ac,oklch(var(--ac)/1)); @@ -3194,6 +3220,15 @@ input.tab:checked + .tab-content, transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.input-md { + height: 3rem; + padding-left: 1rem; + padding-right: 1rem; + font-size: 0.875rem; + line-height: 1.25rem; + line-height: 2; +} + .join.join-vertical { flex-direction: column; } @@ -3602,6 +3637,11 @@ input.tab:checked + .tab-content, margin-bottom: 0px; } +.my-1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + .-ml-2 { margin-left: -0.5rem; } @@ -3610,6 +3650,10 @@ input.tab:checked + .tab-content, margin-left: 0.5rem; } +.mt-0\.5 { + margin-top: 0.125rem; +} + .mt-3 { margin-top: 0.75rem; } @@ -3644,14 +3688,30 @@ input.tab:checked + .tab-content, height: 3.5rem; } +.h-auto { + height: auto; +} + +.max-h-16 { + max-height: 4rem; +} + .max-h-64 { max-height: 16rem; } +.max-h-80 { + max-height: 20rem; +} + .max-h-svh { max-height: 100svh; } +.min-h-8 { + min-height: 2rem; +} + .min-h-fit { min-height: -moz-fit-content; min-height: fit-content; @@ -3681,6 +3741,11 @@ input.tab:checked + .tab-content, min-width: 12rem; } +.min-w-fit { + min-width: -moz-fit-content; + min-width: fit-content; +} + .max-w-xs { max-width: 20rem; } @@ -3725,6 +3790,14 @@ input.tab:checked + .tab-content, flex-direction: column; } +.flex-wrap { + flex-wrap: wrap; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + .items-center { align-items: center; } @@ -3741,6 +3814,10 @@ input.tab:checked + .tab-content, justify-content: space-between; } +.gap-0\.5 { + gap: 0.125rem; +} + .gap-2 { gap: 0.5rem; } @@ -3777,6 +3854,10 @@ input.tab:checked + .tab-content, overflow-x: auto; } +.overflow-y-auto { + overflow-y: auto; +} + .overflow-y-scroll { overflow-y: scroll; } @@ -3915,6 +3996,10 @@ input.tab:checked + .tab-content, text-transform: capitalize; } +.italic { + font-style: italic; +} + .leading-9 { line-height: 2.25rem; } @@ -3923,11 +4008,19 @@ input.tab:checked + .tab-content, line-height: 1; } +.leading-tight { + line-height: 1.25; +} + .text-base-content { --tw-text-opacity: 1; color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity))); } +.text-base-content\/50 { + color: var(--fallback-bc,oklch(var(--bc)/0.5)); +} + .text-info { --tw-text-opacity: 1; color: var(--fallback-in,oklch(var(--in)/var(--tw-text-opacity))); diff --git a/src/argus_htmx/templates/htmx/forms/checkbox_select_multiple.html b/src/argus_htmx/templates/htmx/forms/checkbox_select_multiple.html new file mode 100644 index 000000000..36a57eb10 --- /dev/null +++ b/src/argus_htmx/templates/htmx/forms/checkbox_select_multiple.html @@ -0,0 +1,12 @@ +{% if widget.wrap_label %} + +{% endif %} diff --git a/src/argus_htmx/templates/htmx/forms/dropdown_select_multiple.html b/src/argus_htmx/templates/htmx/forms/dropdown_select_multiple.html new file mode 100644 index 000000000..747276902 --- /dev/null +++ b/src/argus_htmx/templates/htmx/forms/dropdown_select_multiple.html @@ -0,0 +1,28 @@ + diff --git a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html index affc78af3..b3146e5a9 100644 --- a/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html +++ b/src/argus_htmx/templates/htmx/incidents/_incident_filterbox.html @@ -13,25 +13,34 @@