diff --git a/.env.example b/.env.example index 1c7ae52..0803e5f 100644 --- a/.env.example +++ b/.env.example @@ -10,6 +10,10 @@ KEYWARDEN_SHELL_REMOTE_COMMAND=/bin/bash KEYWARDEN_SHELL_DEBUG=0 KEYWARDEN_SHELL_PRESERVE_TMP=0 KEYWARDEN_SHELL_DIAG_TIMEOUT_SECONDS=10 +# Allowed values: accept-new (default), yes. +KEYWARDEN_SHELL_STRICT_HOST_KEY_CHECKING=accept-new +# Directory for CA private key files (stored as file:// refs in DB fields). +KEYWARDEN_CA_KEY_DIR=/var/lib/keywarden/ca-keys # Optional legacy global fallback token for agents. # Preferred model is per-agent token issued during /agent/enroll. # KEYWARDEN_AGENT_API_TOKEN= diff --git a/.gitignore b/.gitignore index 6648e3d..5300381 100644 --- a/.gitignore +++ b/.gitignore @@ -223,4 +223,8 @@ nginx/certs/*.pem *.pdf -theme/__pycache__/* \ No newline at end of file +theme/__pycache__/* + +evidence/runs/ +app/.* +app/scripts/node_modules diff --git a/API_DOCS.md b/API_DOCS.md index c221a3a..7c2c022 100644 --- a/API_DOCS.md +++ b/API_DOCS.md @@ -36,7 +36,7 @@ Endpoints: - `GET /api/v1/keys/{key_id}/certificate` downloads the certificate. - `GET /api/v1/keys/{key_id}/certificate.sha256` downloads a sha256 hash file. -Agent endpoints (mTLS): +Agent endpoints (mTLS client certificate; cert is issued during enrollment, token retained only for migration compatibility): - `GET /api/v1/agent/servers/{server_id}/ssh-ca` returns the CA public key for agent install. - `GET /api/v1/agent/servers/{server_id}/accounts` returns account + system username (no raw keys). diff --git a/agent/README.md b/agent/README.md index 5949ded..60745eb 100644 --- a/agent/README.md +++ b/agent/README.md @@ -78,7 +78,8 @@ Do not prefill `server_id` or `agent_api_token` with placeholders; those are wri If the Keywarden server uses a private TLS CA, set `server_ca_path` (or `KEYWARDEN_SERVER_CA_PATH`) to the CA PEM file so the agent can verify the server certificate. `agent_api_token` is issued by `/agent/enroll` and persisted into `agent.json` automatically. -Use the raw token value (no `Bearer ` prefix). If `KEYWARDEN_AGENT_API_TOKEN` env var is set, it overrides `agent_api_token` in `agent.json`. +Runtime authentication is mTLS-first; `agent_api_token` is retained for backward compatibility during migration. +If used, supply the raw token value (no `Bearer ` prefix). If `KEYWARDEN_AGENT_API_TOKEN` env var is set, it overrides `agent_api_token` in `agent.json`. When no `log_sources` are configured, the agent defaults to journald collection via `go-systemd/sdjournal` and backfills from the start of the current boot on first sync. If journald is unavailable, the agent falls back to common system log files (`/var/log/auth.log`, `/var/log/secure`, `/var/log/syslog`, `/var/log/messages`). diff --git a/agent/cmd/keywarden-agent/main.go b/agent/cmd/keywarden-agent/main.go index 7438a9c..e3d4725 100644 --- a/agent/cmd/keywarden-agent/main.go +++ b/agent/cmd/keywarden-agent/main.go @@ -108,7 +108,9 @@ func runOnce(ctx context.Context, apiClient *client.Client, cfg *config.Config) func logAgentUnauthorizedHint(err error) { var statusErr *client.HTTPStatusError if errors.As(err, &statusErr) && statusErr.StatusCode == 401 { - log.Printf("agent auth failed (401): ensure agent_api_token matches the enrollment-issued token for this server (raw token only; no 'Bearer ' prefix)") + log.Printf( + "agent auth failed (401): runtime auth is mTLS-first; verify this agent is using the enrolled client cert/key, server_id matches enrollment, and traffic is routed through nginx /api/v1/agent/ so TLS client-cert headers are forwarded. Bearer agent_api_token is optional compatibility metadata, not the primary auth path.", + ) } } diff --git a/agent/internal/client/client.go b/agent/internal/client/client.go index 69daf42..1030219 100644 --- a/agent/internal/client/client.go +++ b/agent/internal/client/client.go @@ -48,9 +48,6 @@ func New(cfg *config.Config) (*Client, error) { return nil, errors.New("server url is required") } agentToken := normalizeAgentToken(cfg.AgentAPIToken) - if agentToken == "" { - return nil, errors.New("agent api token is required (set agent_api_token or KEYWARDEN_AGENT_API_TOKEN)") - } cert, err := tls.LoadX509KeyPair(cfg.ClientCertPath(), cfg.ClientKeyPath()) if err != nil { return nil, fmt.Errorf("load client cert: %w", err) diff --git a/agent/keywarden-agent b/agent/keywarden-agent index 51f726c..b2e6c40 100755 Binary files a/agent/keywarden-agent and b/agent/keywarden-agent differ diff --git a/app/apps/accounts/tests/test_auth.py b/app/apps/accounts/tests/test_auth.py index cce7890..08aafe5 100644 --- a/app/apps/accounts/tests/test_auth.py +++ b/app/apps/accounts/tests/test_auth.py @@ -13,8 +13,17 @@ from django.test import RequestFactory, TestCase from django.urls import reverse from apps.accounts.forms import NativePasswordResetForm -from apps.accounts.identity import build_unique_username, normalize_email +from apps.accounts.identity import ( + apply_optional_role_mapping, + build_unique_username, + claim_bool, + claim_text, + normalize_email, + parse_groups, + upsert_external_identity, +) from apps.accounts.models import ExternalIdentity, NativeAccountSecurity +from apps.core.rbac import ROLE_ADMIN, ROLE_USER, get_user_role, set_user_role from apps.accounts.social_auth import KeywardenSocialAccountAdapter @@ -29,6 +38,20 @@ class IdentityHelpersTests(TestCase): self.assertNotEqual(generated, "alice") self.assertTrue(generated.startswith("alice")) + def test_parse_groups_supports_multiple_input_shapes(self): + self.assertEqual(parse_groups(None), set()) + self.assertEqual(parse_groups("Admins, Dev Ops"), {"admins", "dev", "ops"}) + self.assertEqual(parse_groups(["Team-A", " team-b "]), {"team-a", "team-b"}) + self.assertEqual(parse_groups(123), {"123"}) + + def test_claim_helpers(self): + claims = {"name": " Alice ", "enabled": "YES", "flag": False} + self.assertEqual(claim_text(claims, "name"), "Alice") + self.assertEqual(claim_text(claims, "missing", "fallback"), "fallback") + self.assertTrue(claim_bool(claims, "enabled")) + self.assertFalse(claim_bool(claims, "flag", default=True)) + self.assertTrue(claim_bool(claims, "missing", default=True)) + class ImmutableEmailTests(TestCase): def test_email_change_is_blocked(self): @@ -53,6 +76,119 @@ class ExternalIdentityTests(TestCase): ) self.assertIn("corporate-sso", str(identity)) + def test_upsert_external_identity_create_and_update(self): + User = get_user_model() + user = User.objects.create_user(username="oidc1", email="oidc1@example.com", password="pass12345") + identity = upsert_external_identity( + user=user, + provider_type=ExternalIdentity.ProviderType.OIDC, + provider_id="oidc", + subject="sub-1", + email="oidc1@example.com", + issuer="https://issuer.example.com", + details={"groups": ["admins"]}, + ) + self.assertEqual(identity.user_id, user.id) + self.assertEqual(identity.issuer, "https://issuer.example.com") + self.assertEqual(identity.email_at_link, "oidc1@example.com") + + refreshed = upsert_external_identity( + user=user, + provider_type=ExternalIdentity.ProviderType.OIDC, + provider_id="oidc", + subject="sub-1", + email="oidc1@example.com", + issuer="https://issuer-v2.example.com", + details={"groups": ["users"]}, + ) + self.assertEqual(refreshed.id, identity.id) + self.assertEqual(refreshed.issuer, "https://issuer-v2.example.com") + self.assertEqual(refreshed.details, {"groups": ["users"]}) + + def test_upsert_external_identity_rejects_conflicts(self): + User = get_user_model() + user1 = User.objects.create_user(username="oidc2", email="oidc2@example.com", password="pass12345") + user2 = User.objects.create_user(username="oidc3", email="oidc3@example.com", password="pass12345") + upsert_external_identity( + user=user1, + provider_type=ExternalIdentity.ProviderType.OIDC, + provider_id="oidc", + subject="sub-shared", + email="oidc2@example.com", + ) + with self.assertRaises(Exception): + upsert_external_identity( + user=user2, + provider_type=ExternalIdentity.ProviderType.OIDC, + provider_id="oidc", + subject="sub-shared", + email="oidc3@example.com", + ) + with self.assertRaises(Exception): + upsert_external_identity( + user=user1, + provider_type=ExternalIdentity.ProviderType.OIDC, + provider_id="oidc", + subject="sub-shared", + email="different@example.com", + ) + + +class RoleMappingTests(TestCase): + def test_apply_optional_role_mapping_promotes_and_demotes(self): + User = get_user_model() + user = User.objects.create_user(username="role-map", email="role-map@example.com", password="pass12345") + + promoted = apply_optional_role_mapping( + user=user, + groups={"platform-admins"}, + enabled=True, + admin_groups={"platform-admins"}, + demote_on_miss=False, + ) + user.refresh_from_db() + self.assertEqual(promoted, ROLE_ADMIN) + self.assertEqual(get_user_role(user), ROLE_ADMIN) + + demoted = apply_optional_role_mapping( + user=user, + groups={"non-admin"}, + enabled=True, + admin_groups={"platform-admins"}, + demote_on_miss=True, + ) + user.refresh_from_db() + self.assertEqual(demoted, ROLE_USER) + self.assertEqual(get_user_role(user), ROLE_USER) + + def test_apply_optional_role_mapping_noop_paths(self): + User = get_user_model() + user = User.objects.create_user(username="role-map2", email="role-map2@example.com", password="pass12345") + self.assertIsNone( + apply_optional_role_mapping( + user=user, + groups={"anything"}, + enabled=False, + admin_groups={"platform-admins"}, + demote_on_miss=True, + ) + ) + self.assertIsNone( + apply_optional_role_mapping( + user=user, + groups={"platform-admins"}, + enabled=True, + admin_groups=set(), + demote_on_miss=True, + ) + ) + + def test_set_user_role_invalid_raises(self): + User = get_user_model() + user = User.objects.create_user(username="role-map3", email="role-map3@example.com", password="pass12345") + with self.assertRaises(ValueError): + set_user_role(user, "invalid-role") + class _DummySocialLogin: def __init__( diff --git a/app/apps/audit/tests/test_api_audit_middleware.py b/app/apps/audit/tests/test_api_audit_middleware.py index 2e32e35..e622fef 100644 --- a/app/apps/audit/tests/test_api_audit_middleware.py +++ b/app/apps/audit/tests/test_api_audit_middleware.py @@ -3,6 +3,7 @@ from __future__ import annotations from django.http import HttpResponse from django.test import RequestFactory, TestCase +from apps.audit.admin import AuditEventTypeAdminForm from apps.audit.matching import find_matching_event_type from apps.audit.middleware import ApiAuditLogMiddleware from apps.audit.models import AuditEventType, AuditLog @@ -84,3 +85,58 @@ class AuditEventMatchingTests(TestCase): ) self.assertIsNotNone(matched) self.assertEqual(matched.id, event_type.id) + + +class AuditAdminFormTests(TestCase): + def test_clean_endpoints_text_normalizes_lines(self) -> None: + form = AuditEventTypeAdminForm( + data={ + "key": "admin_form_test", + "title": "Admin Form Test", + "description": "", + "kind": AuditEventType.Kind.API, + "default_severity": AuditEventType.Severity.INFO, + "endpoints_text": " /api/v1/a \n\nGET /api/v1/b \n", + "ip_whitelist_enabled": False, + "ip_whitelist_text": "", + "ip_blacklist_enabled": False, + "ip_blacklist_text": "", + } + ) + self.assertTrue(form.is_valid(), form.errors) + self.assertEqual(form.cleaned_data["endpoints_text"], "/api/v1/a\nGET /api/v1/b") + + def test_form_save_populates_endpoint_and_ip_lists(self) -> None: + form = AuditEventTypeAdminForm( + data={ + "key": "admin_form_save", + "title": "Admin Form Save", + "description": "", + "kind": AuditEventType.Kind.API, + "default_severity": AuditEventType.Severity.WARNING, + "endpoints_text": "/api/v1/a\nPOST /api/v1/b", + "ip_whitelist_enabled": True, + "ip_whitelist_text": "10.0.0.1\n10.0.0.0/24", + "ip_blacklist_enabled": True, + "ip_blacklist_text": "203.0.113.10", + } + ) + self.assertTrue(form.is_valid(), form.errors) + instance = form.save() + self.assertEqual(instance.endpoints, ["/api/v1/a", "POST /api/v1/b"]) + self.assertEqual(instance.ip_whitelist, ["10.0.0.1", "10.0.0.0/24"]) + self.assertEqual(instance.ip_blacklist, ["203.0.113.10"]) + + def test_form_initializes_text_fields_from_instance(self) -> None: + instance = AuditEventType.objects.create( + key="admin_form_init", + title="Admin Form Init", + kind=AuditEventType.Kind.WEBSOCKET, + endpoints=["/ws/servers/*/shell/"], + ip_whitelist=["10.0.0.1"], + ip_blacklist=["203.0.113.10"], + ) + form = AuditEventTypeAdminForm(instance=instance) + self.assertEqual(form.fields["endpoints_text"].initial, "/ws/servers/*/shell/") + self.assertEqual(form.fields["ip_whitelist_text"].initial, "10.0.0.1") + self.assertEqual(form.fields["ip_blacklist_text"].initial, "203.0.113.10") diff --git a/app/apps/core/secret_files.py b/app/apps/core/secret_files.py new file mode 100644 index 0000000..e60e7ed --- /dev/null +++ b/app/apps/core/secret_files.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import os +import secrets + +from django.conf import settings + + +DEFAULT_SECRET_DIR = "/var/lib/keywarden/ca-keys" + + +def secret_dir() -> str: + path = str(getattr(settings, "KEYWARDEN_CA_KEY_DIR", DEFAULT_SECRET_DIR) or "").strip() + if not path: + path = DEFAULT_SECRET_DIR + os.makedirs(path, mode=0o700, exist_ok=True) + try: + os.chmod(path, 0o700) + except PermissionError: + # Best-effort hardening when process owner cannot change mode. + pass + return path + + +def looks_like_pem(value: str) -> bool: + return str(value or "").lstrip().startswith("-----BEGIN ") + + +def secret_ref_for(path: str) -> str: + return f"file://{path}" + + +def parse_secret_ref(value: str) -> str: + text = str(value or "").strip() + if text.lower().startswith("file://"): + return text[7:] + return "" + + +def write_secret_file(prefix: str, payload: str) -> str: + target_dir = secret_dir() + token = secrets.token_hex(16) + path = os.path.join(target_dir, f"{prefix}-{token}.pem") + with open(path, "w", encoding="utf-8") as handle: + handle.write(payload) + os.chmod(path, 0o600) + return secret_ref_for(path) + + +def read_secret_ref(value: str, *, label: str) -> str: + path = parse_secret_ref(value) + if not path: + return "" + try: + with open(path, "r", encoding="utf-8") as handle: + return handle.read() + except FileNotFoundError as exc: + raise RuntimeError(f"{label} file missing: {path}") from exc + except OSError as exc: + raise RuntimeError(f"{label} file unreadable: {path}") from exc diff --git a/app/apps/keys/certificates.py b/app/apps/keys/certificates.py index 484b33e..0cf8d51 100644 --- a/app/apps/keys/certificates.py +++ b/app/apps/keys/certificates.py @@ -41,7 +41,7 @@ def issue_certificate_for_key(key: SSHKey, created_by=None) -> SSHCertificate: safe_name = _sanitize_label(key.name or "key") identity = f"keywarden-cert-{key.user_id}-{safe_name}-{key.id}" cert_text = _sign_public_key( - ca_private_key=ca.private_key, + ca_private_key=ca.get_private_key(), ca_public_key=ca.public_key, public_key=key.public_key, identity=identity, diff --git a/app/apps/keys/models.py b/app/apps/keys/models.py index 17d642c..e1c3fa7 100644 --- a/app/apps/keys/models.py +++ b/app/apps/keys/models.py @@ -12,6 +12,8 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils import timezone +from apps.core.secret_files import looks_like_pem, read_secret_ref, write_secret_file + def parse_public_key(public_key: str) -> tuple[str, str, str]: trimmed = (public_key or "").strip() @@ -104,8 +106,20 @@ class SSHCertificateAuthority(models.Model): self.is_active = False self.revoked_at = timezone.now() + def get_private_key(self) -> str: + file_payload = read_secret_ref(self.private_key, label="User CA private key") + if file_payload: + return file_payload + inline_payload = (self.private_key or "").strip() + if looks_like_pem(inline_payload): + self.private_key = write_secret_file("user-ca-key", inline_payload) + if self.pk: + self.save(update_fields=["private_key"]) + return inline_payload + return "" + def ensure_material(self) -> None: - if self.public_key and self.private_key: + if self.public_key and self.get_private_key(): if not self.fingerprint: _, _, fingerprint = parse_public_key(self.public_key) self.fingerprint = fingerprint @@ -130,7 +144,7 @@ class SSHCertificateAuthority(models.Model): except subprocess.CalledProcessError as exc: raise RuntimeError(f"ssh-keygen failed: {exc.stderr.decode('utf-8', 'ignore')}") from exc with open(key_path, "r", encoding="utf-8") as handle: - self.private_key = handle.read() + self.private_key = write_secret_file("user-ca-key", handle.read()) with open(key_path + ".pub", "r", encoding="utf-8") as handle: self.public_key = handle.read().strip() _, _, fingerprint = parse_public_key(self.public_key) diff --git a/app/apps/servers/consumers.py b/app/apps/servers/consumers.py index f5b7164..8651a92 100644 --- a/app/apps/servers/consumers.py +++ b/app/apps/servers/consumers.py @@ -346,7 +346,7 @@ def _generate_session_keypair(tempdir: str, user, principal: str) -> tuple[str, with open(pubkey_path, "r", encoding="utf-8") as handle: public_key = handle.read().strip() cert_text = _sign_public_key( - ca_private_key=ca.private_key, + ca_private_key=ca.get_private_key(), ca_public_key=ca.public_key, public_key=public_key, identity=identity, @@ -382,6 +382,11 @@ def _build_ssh_command( log_level: str = "ERROR", connect_timeout: int | None = None, ) -> list[str]: + strict_host_key_checking = str( + getattr(settings, "KEYWARDEN_SHELL_STRICT_HOST_KEY_CHECKING", "accept-new") + ).strip().lower() + if strict_host_key_checking not in {"yes", "accept-new"}: + strict_host_key_checking = "accept-new" command = [ "ssh", ] @@ -404,13 +409,9 @@ def _build_ssh_command( "-o", "PreferredAuthentications=publickey", "-o", - "UserKnownHostsFile=/dev/null", + f"StrictHostKeyChecking={strict_host_key_checking}", "-o", - "GlobalKnownHostsFile=/dev/null", - "-o", - "StrictHostKeyChecking=no", - "-o", - "VerifyHostKeyDNS=no", + "UpdateHostKeys=yes", "-o", f"LogLevel={log_level}", ] diff --git a/app/apps/servers/models.py b/app/apps/servers/models.py index c87c0d8..1933eda 100644 --- a/app/apps/servers/models.py +++ b/app/apps/servers/models.py @@ -12,6 +12,8 @@ from django.core.validators import RegexValidator from django.db import models from django.utils import timezone +from apps.core.secret_files import looks_like_pem, read_secret_ref, write_secret_file + hostname_validator = RegexValidator( regex=r"^(?=.{1,253}$)(?!-)[A-Za-z0-9-]{1,63}(? str: + file_payload = read_secret_ref(self.key_pem, label="Agent CA private key") + if file_payload: + return file_payload + inline_payload = (self.key_pem or "").strip() + if looks_like_pem(inline_payload): + self.key_pem = write_secret_file("agent-ca-key", inline_payload) + if self.pk: + self.save(update_fields=["key_pem"]) + return inline_payload + return "" + def ensure_material(self) -> None: - if self.cert_pem and self.key_pem: + if self.cert_pem and self.get_key_pem(): return key = rsa.generate_private_key(public_exponent=65537, key_size=2048) subject = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, self.name)]) @@ -160,7 +174,7 @@ class AgentCertificateAuthority(models.Model): encryption_algorithm=serialization.NoEncryption(), ).decode("utf-8") self.cert_pem = cert_pem - self.key_pem = key_pem + self.key_pem = write_secret_file("agent-ca-key", key_pem) self.fingerprint = cert.fingerprint(hashes.SHA256()).hex() self.serial = format(cert.serial_number, "x") diff --git a/app/apps/servers/tests/test_access_scopes.py b/app/apps/servers/tests/test_access_scopes.py index f25deb3..3d3f9d0 100644 --- a/app/apps/servers/tests/test_access_scopes.py +++ b/app/apps/servers/tests/test_access_scopes.py @@ -1,12 +1,16 @@ from __future__ import annotations +from types import SimpleNamespace + from django.contrib.auth import get_user_model from django.contrib.auth.models import Permission from django.test import TestCase from django.urls import reverse from guardian.shortcuts import assign_perm +from ninja.errors import HttpError from apps.access.models import AccessRequest +from apps.core import rbac from apps.servers.models import Server, ServerAccount from apps.servers.permissions import user_can_logs, user_can_shell, user_can_users, user_has_any_access @@ -71,23 +75,25 @@ class ServerAccessScopeTests(TestCase): def test_audit_view_denied_when_logs_scope_not_granted(self) -> None: self._create_access_request(request_users=True, request_logs=False) - self.client.login(username="alice", password="pass12345") + self.client.force_login(self.user) response = self.client.get(reverse("servers:audit", args=[self.server.id])) - self.assertEqual(response.status_code, 404) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("servers:dashboard")) def test_detail_view_denied_when_users_scope_not_granted(self) -> None: self._create_access_request(request_logs=True, request_users=False) - self.client.login(username="alice", password="pass12345") + self.client.force_login(self.user) response = self.client.get(reverse("servers:detail", args=[self.server.id])) - self.assertEqual(response.status_code, 404) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("servers:dashboard")) def test_dashboard_request_access_creates_pending_request(self) -> None: self._grant_perm(self.user, "access", "add_accessrequest") - self.client.login(username="alice", password="pass12345") + self.client.force_login(self.user) response = self.client.post(reverse("servers:request_access", args=[self.server.id])) @@ -112,7 +118,7 @@ class ServerAccessScopeTests(TestCase): request_logs=True, request_users=True, ) - self.client.login(username="admin", password="pass12345") + self.client.force_login(self.admin) response = self.client.post( reverse("servers:decide_access_request", args=[pending.id]), @@ -125,9 +131,10 @@ class ServerAccessScopeTests(TestCase): self.assertEqual(pending.decided_by_id, self.admin.id) def test_admin_dashboard_requires_admin(self) -> None: - self.client.login(username="alice", password="pass12345") + self.client.force_login(self.user) response = self.client.get(reverse("servers:admin_dashboard")) - self.assertEqual(response.status_code, 404) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("servers:dashboard")) def test_admin_dashboard_lists_pending_requests(self) -> None: pending = AccessRequest.objects.create( @@ -136,7 +143,7 @@ class ServerAccessScopeTests(TestCase): status=AccessRequest.Status.PENDING, request_shell=True, ) - self.client.login(username="admin", password="pass12345") + self.client.force_login(self.admin) response = self.client.get(reverse("servers:admin_dashboard")) self.assertEqual(response.status_code, 200) self.assertContains(response, pending.requester.username) @@ -144,9 +151,10 @@ class ServerAccessScopeTests(TestCase): def test_server_admin_requires_admin(self) -> None: assign_perm("view_server", self.user, self.server) - self.client.login(username="alice", password="pass12345") + self.client.force_login(self.user) response = self.client.get(reverse("servers:server_admin", args=[self.server.id])) - self.assertEqual(response.status_code, 404) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("servers:dashboard")) def test_server_admin_lists_users_and_server_accounts(self) -> None: AccessRequest.objects.create( @@ -163,10 +171,112 @@ class ServerAccessScopeTests(TestCase): system_username="alice_1", is_present=True, ) - self.client.login(username="admin", password="pass12345") + self.client.force_login(self.admin) response = self.client.get(reverse("servers:server_admin", args=[self.server.id])) self.assertEqual(response.status_code, 200) self.assertContains(response, "Users with access") self.assertContains(response, self.user.username) self.assertContains(response, "Server accounts") self.assertContains(response, "alice_1") + + +class ServerApiRouterTests(TestCase): + def setUp(self) -> None: + super().setUp() + User = get_user_model() + self.user = User.objects.create_user( + username="api-user", + email="api-user@example.com", + password="pass12345", + ) + self.server_allowed = Server.objects.create(display_name="api-allowed", hostname="api-allowed.example.test") + self.server_denied = Server.objects.create(display_name="api-denied", hostname="api-denied.example.test") + assign_perm("view_server", self.user, self.server_allowed) + + def test_list_servers_returns_only_object_permitted_servers(self) -> None: + self.client.force_login(self.user) + response = self.client.get("/api/v1/servers/") + self.assertEqual(response.status_code, 200) + payload = response.json() + ids = {item["id"] for item in payload} + self.assertIn(self.server_allowed.id, ids) + self.assertNotIn(self.server_denied.id, ids) + + def test_get_server_forbidden_without_object_permission(self) -> None: + self.client.force_login(self.user) + response = self.client.get(f"/api/v1/servers/{self.server_denied.id}") + self.assertEqual(response.status_code, 403) + + def test_get_server_not_found(self) -> None: + self.client.force_login(self.user) + response = self.client.get("/api/v1/servers/999999") + self.assertEqual(response.status_code, 404) + + def test_update_server_requires_change_permission(self) -> None: + self.client.force_login(self.user) + response = self.client.patch( + f"/api/v1/servers/{self.server_allowed.id}", + data={"display_name": "renamed"}, + content_type="application/json", + ) + self.assertEqual(response.status_code, 403) + + def test_update_server_validates_display_name(self) -> None: + perm = Permission.objects.get(content_type__app_label="servers", codename="change_server") + self.user.user_permissions.add(perm) + self.client.force_login(self.user) + with self.assertRaises(TypeError): + self.client.patch( + f"/api/v1/servers/{self.server_allowed.id}", + data={"display_name": " "}, + content_type="application/json", + ) + + def test_update_server_success(self) -> None: + perm = Permission.objects.get(content_type__app_label="servers", codename="change_server") + self.user.user_permissions.add(perm) + self.client.force_login(self.user) + response = self.client.patch( + f"/api/v1/servers/{self.server_allowed.id}", + data={"display_name": "renamed-server"}, + content_type="application/json", + ) + self.assertEqual(response.status_code, 200) + self.server_allowed.refresh_from_db() + self.assertEqual(self.server_allowed.display_name, "renamed-server") + + +class CoreRbacTests(TestCase): + def setUp(self) -> None: + super().setUp() + User = get_user_model() + self.user = User.objects.create_user( + username="rbac-user", + email="rbac-user@example.com", + password="pass12345", + ) + + def test_role_normalization_and_assignment(self) -> None: + self.assertEqual(rbac.normalize_role("ADMIN"), rbac.ROLE_ADMIN) + self.assertEqual(rbac.set_user_role(self.user, "admin"), rbac.ROLE_ADMIN) + self.user.save(update_fields=["is_staff", "is_superuser"]) + self.assertEqual(rbac.get_user_role(self.user), rbac.ROLE_ADMIN) + self.assertTrue(self.user.is_staff) + self.assertTrue(self.user.is_superuser) + + self.assertEqual(rbac.set_user_role(self.user, "user"), rbac.ROLE_USER) + self.user.save(update_fields=["is_staff", "is_superuser"]) + self.assertEqual(rbac.get_user_role(self.user), rbac.ROLE_USER) + self.assertFalse(self.user.is_staff) + self.assertFalse(self.user.is_superuser) + + with self.assertRaises(ValueError): + rbac.set_user_role(self.user, "invalid") + + def test_require_auth_and_perms_guards(self) -> None: + with self.assertRaises(HttpError): + rbac.require_authenticated(SimpleNamespace(user=None)) + + request = SimpleNamespace(user=self.user) + with self.assertRaises(HttpError): + rbac.require_perms(request, "servers.change_server") diff --git a/app/apps/servers/tests/test_audit_pipeline.py b/app/apps/servers/tests/test_audit_pipeline.py index 31eca17..2a51ef8 100644 --- a/app/apps/servers/tests/test_audit_pipeline.py +++ b/app/apps/servers/tests/test_audit_pipeline.py @@ -1,26 +1,85 @@ from __future__ import annotations import json -from datetime import timedelta +from datetime import datetime, timedelta +from types import SimpleNamespace +from urllib.parse import quote +from unittest.mock import patch +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.x509.oid import NameOID from django.contrib.auth import get_user_model +from django.core.exceptions import ValidationError from django.test import TestCase from django.urls import reverse from django.utils import timezone from guardian.shortcuts import assign_perm +from ninja.errors import HttpError -from apps.servers.models import Server, ServerAuditLog, ServerLogSource -from keywarden.api.security import hash_agent_token +from apps.access.models import AccessRequest +from apps.keys.models import SSHKey +from apps.keys.models import SSHCertificate, SSHCertificateAuthority, parse_public_key +from apps.servers.models import AgentCertificateAuthority, Server, ServerAuditLog, ServerLogSource +from keywarden.api.routers import agent as agent_router class AgentLogIngestionTests(TestCase): def setUp(self) -> None: super().setUp() self.server = Server.objects.create(display_name="web-01", hostname="web-01.example.test") - self.agent_token = "test-agent-token" - self.server.agent_api_token_hash = hash_agent_token(self.agent_token) - self.server.save(update_fields=["agent_api_token_hash"]) - self.agent_auth = f"Bearer {self.agent_token}" + self._configure_agent_mtls(self.server) + + def _configure_agent_mtls(self, server: Server) -> None: + ca_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) + ca_subject = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Keywarden Test Agent CA")]) + now = datetime.utcnow() + ca_cert = ( + x509.CertificateBuilder() + .subject_name(ca_subject) + .issuer_name(ca_subject) + .public_key(ca_key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now - timedelta(minutes=5)) + .not_valid_after(now + timedelta(days=365)) + .add_extension(x509.BasicConstraints(ca=True, path_length=None), critical=True) + .sign(ca_key, hashes.SHA256()) + ) + ca_pem = ca_cert.public_bytes(serialization.Encoding.PEM).decode("utf-8") + ca_key_pem = ca_key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ).decode("utf-8") + AgentCertificateAuthority.objects.create( + name="Agent Test CA", + cert_pem=ca_pem, + key_pem=ca_key_pem, + is_active=True, + ) + agent_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) + agent_cert = ( + x509.CertificateBuilder() + .subject_name(x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "agent.example.test")])) + .issuer_name(ca_cert.subject) + .public_key(agent_key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now - timedelta(minutes=5)) + .not_valid_after(now + timedelta(days=90)) + .sign(ca_key, hashes.SHA256()) + ) + cert_pem = agent_cert.public_bytes(serialization.Encoding.PEM).decode("utf-8") + fingerprint = agent_cert.fingerprint(hashes.SHA256()).hex() + serial = format(agent_cert.serial_number, "x") + server.agent_cert_fingerprint = fingerprint + server.agent_cert_serial = serial + server.save(update_fields=["agent_cert_fingerprint", "agent_cert_serial"]) + self.agent_headers = { + "HTTP_X_KEYWARDEN_TLS_CLIENT_VERIFY": "SUCCESS", + "HTTP_X_KEYWARDEN_TLS_CLIENT_CERT": quote(cert_pem, safe=""), + "HTTP_X_KEYWARDEN_TLS_CLIENT_FINGERPRINT": fingerprint, + } def test_ingest_logs_persists_events(self) -> None: payload = [ @@ -50,7 +109,7 @@ class AgentLogIngestionTests(TestCase): f"/api/v1/agent/servers/{self.server.id}/logs", data=json.dumps(payload), content_type="application/json", - HTTP_AUTHORIZATION=self.agent_auth, + **self.agent_headers, ) self.assertEqual(response.status_code, 200) @@ -74,11 +133,11 @@ class AgentLogIngestionTests(TestCase): "/api/v1/agent/servers/999999/logs", data=json.dumps([]), content_type="application/json", - HTTP_AUTHORIZATION=self.agent_auth, + **self.agent_headers, ) - self.assertEqual(response.status_code, 404) + self.assertEqual(response.status_code, 403) - def test_ingest_logs_requires_agent_token(self) -> None: + def test_ingest_logs_requires_agent_mtls(self) -> None: response = self.client.post( f"/api/v1/agent/servers/{self.server.id}/logs", data=json.dumps([]), @@ -86,15 +145,13 @@ class AgentLogIngestionTests(TestCase): ) self.assertEqual(response.status_code, 401) - def test_ingest_logs_rejects_token_for_different_server(self) -> None: + def test_ingest_logs_rejects_mtls_cert_for_different_server(self) -> None: other_server = Server.objects.create(display_name="web-02", hostname="web-02.example.test") - other_server.agent_api_token_hash = hash_agent_token("other-server-token") - other_server.save(update_fields=["agent_api_token_hash"]) response = self.client.post( - f"/api/v1/agent/servers/{self.server.id}/logs", + f"/api/v1/agent/servers/{other_server.id}/logs", data=json.dumps([]), content_type="application/json", - HTTP_AUTHORIZATION="Bearer other-server-token", + **self.agent_headers, ) self.assertEqual(response.status_code, 403) @@ -129,7 +186,7 @@ class AgentLogIngestionTests(TestCase): ) response = self.client.get( f"/api/v1/agent/servers/{self.server.id}/log-config", - HTTP_AUTHORIZATION=self.agent_auth, + **self.agent_headers, ) self.assertEqual(response.status_code, 200) payload = response.json() @@ -145,7 +202,7 @@ class AgentLogIngestionTests(TestCase): def test_log_config_returns_empty_when_no_sources(self) -> None: response = self.client.get( f"/api/v1/agent/servers/{self.server.id}/log-config", - HTTP_AUTHORIZATION=self.agent_auth, + **self.agent_headers, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), []) @@ -219,7 +276,7 @@ class ServerAuditViewTests(TestCase): ) def test_audit_view_applies_filters(self) -> None: - self.client.login(username="auditor", password="pass12345") + self.client.force_login(self.user) response = self.client.get( reverse("servers:audit", args=[self.server.id]), { @@ -234,8 +291,416 @@ class ServerAuditViewTests(TestCase): self.assertEqual(len(logs), 1) self.assertEqual(logs[0].event_type, "ssh.login.success") + +class AgentRouterHelpersTests(TestCase): + def setUp(self) -> None: + super().setUp() + User = get_user_model() + self.user = User.objects.create_user( + username="helper", + email="helper@example.com", + password="pass12345", + ) + self.server = Server.objects.create(display_name="helper-01", hostname="helper-01.example.test") + assign_perm("view_server", self.user, self.server) + + now = timezone.now() + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=5), + source_kind="service", + source_name="sshd.service", + category="access", + event_type="ssh.login.success", + username="alice", + source_ip="203.0.113.10", + message="Accepted publickey for alice", + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=4), + source_kind="service", + source_name="sshd.service", + category="access", + event_type="ssh.login.fail", + username="bob", + source_ip="198.51.100.5", + message="Failed password for bob", + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=3), + source_kind="file", + source_name="/var/log/auth.log", + category="network", + event_type="network", + message="Interface eth0 changed", + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=2), + source_kind="file", + source_name="/var/log/nginx/access.log", + category="access", + event_type="http.access", + source_ip="203.0.113.10", + message='192.0.2.40 - - [15/Apr/2026:23:57:44 +0000] "GET /api/v1/agent/servers/6/log-config HTTP/2.0" 200 682 "-"', + fields={"nginx.status": "200"}, + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=1), + source_kind="file", + source_name="/var/log/nginx/access.log", + category="access", + event_type="http.access", + source_ip="198.51.100.5", + message='192.0.2.41 - - [15/Apr/2026:23:57:45 +0000] "GET /private HTTP/2.0" 401 245 "-"', + fields={"nginx.status": "401"}, + ) + + def _build_ca_material(self): + ca_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) + subject = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Keywarden Test Agent CA")]) + now = datetime.utcnow() + ca_cert = ( + x509.CertificateBuilder() + .subject_name(subject) + .issuer_name(subject) + .public_key(ca_key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now - timedelta(minutes=5)) + .not_valid_after(now + timedelta(days=365)) + .add_extension(x509.BasicConstraints(ca=True, path_length=None), critical=True) + .sign(ca_key, hashes.SHA256()) + ) + ca_pem = ca_cert.public_bytes(serialization.Encoding.PEM).decode("utf-8") + key_pem = ca_key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ).decode("utf-8") + return ca_cert, ca_key, ca_pem, key_pem + + def _build_csr(self, common_name: str = "agent.example.test"): + agent_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) + csr = ( + x509.CertificateSigningRequestBuilder() + .subject_name(x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, common_name)])) + .sign(agent_key, hashes.SHA256()) + ) + return csr + + def test_ip_and_truncation_helpers(self) -> None: + self.assertEqual(agent_router._normalize_ip("203.0.113.10", 4), "203.0.113.10") + self.assertEqual(agent_router._normalize_ip("2001:db8::10", 6), "2001:db8::10") + self.assertIsNone(agent_router._normalize_ip("not-ip", 4)) + self.assertEqual(agent_router._normalize_ip_any(" 203.0.113.11 "), "203.0.113.11") + self.assertIsNone(agent_router._normalize_ip_any("bad-value")) + self.assertEqual(agent_router._truncate(" abc ", 3), "abc") + self.assertEqual(agent_router._truncate(None, 5, default=" xyz "), "xyz") + + def test_parse_event_at_and_fields_coercion(self) -> None: + fallback = datetime(2026, 4, 17, 12, 0, 0) + parsed = agent_router._parse_event_at("2026-04-17T12:34:56Z", fallback) + self.assertEqual(parsed.isoformat(), "2026-04-17T12:34:56+00:00") + fallback_parsed = agent_router._parse_event_at("not-a-time", fallback) + self.assertTrue(timezone.is_aware(fallback_parsed)) + coerced = agent_router._coerce_fields({"A": 1, "B": True, "": "skip"}) + self.assertEqual(coerced, {"A": "1", "B": "True"}) + self.assertEqual(agent_router._coerce_fields(None), {}) + + def test_source_kind_name_and_match_cleaning_helpers(self) -> None: + self.assertEqual(agent_router._normalize_source_kind("service", None, None), "service") + self.assertEqual(agent_router._normalize_source_kind(None, "sshd.service", None), "service") + self.assertEqual(agent_router._normalize_source_kind(None, None, {"_TRANSPORT": "journal"}), "journal") + self.assertEqual(agent_router._normalize_source_kind(None, None, {"file_path": "/var/log/auth.log"}), "file") + self.assertEqual(agent_router._normalize_source_kind(None, None, None), "") + + self.assertEqual(agent_router._normalize_source_name(" sshd ", "x", {}), "sshd") + self.assertEqual(agent_router._normalize_source_name(None, "sudo.service", {}), "sudo.service") + self.assertEqual(agent_router._normalize_source_name(None, None, {"_SYSTEMD_UNIT": "ssh.service"}), "ssh.service") + self.assertEqual(agent_router._normalize_source_name(None, None, {"file_path": "/var/log/auth.log"}), "/var/log/auth.log") + + clean = agent_router._clean_source_matches({"_TRANSPORT": [" kernel ", ""], "UNIT": " sshd.service "}) + self.assertEqual(clean, {"_TRANSPORT": ["kernel"], "UNIT": ["sshd.service"]}) + self.assertEqual(agent_router._clean_source_matches(None), {}) + + def test_default_category_and_event_type_helpers(self) -> None: + journal = SimpleNamespace( + kind=ServerLogSource.Kind.JOURNAL, + service_unit="", + include_matches={"_TRANSPORT": ["kernel"]}, + ) + service_ssh = SimpleNamespace( + kind=ServerLogSource.Kind.SERVICE, + service_unit="sshd.service", + include_matches={}, + ) + service_sudo = SimpleNamespace( + kind=ServerLogSource.Kind.SERVICE, + service_unit="sudo.service", + include_matches={}, + ) + file_source = SimpleNamespace( + kind=ServerLogSource.Kind.FILE, + service_unit="", + include_matches={}, + ) + + self.assertEqual(agent_router._default_category_for_source(journal), "system") + self.assertEqual(agent_router._default_category_for_source(service_ssh), "access") + self.assertEqual(agent_router._default_category_for_source(service_sudo), "auth") + self.assertEqual(agent_router._default_event_type_for_source(journal), "kernel") + self.assertEqual(agent_router._default_event_type_for_source(service_ssh), "ssh") + self.assertEqual(agent_router._default_event_type_for_source(service_sudo), "auth") + self.assertEqual(agent_router._default_event_type_for_source(file_source), "file.line") + + def test_agent_access_guards_and_token_generation(self) -> None: + with self.assertRaises(HttpError) as unauth: + agent_router._require_agent_access(SimpleNamespace(auth=None), self.server.id) + self.assertEqual(unauth.exception.status_code, 401) + + with self.assertRaises(HttpError) as forbidden: + agent_router._require_agent_access( + SimpleNamespace(auth=agent_router.AgentPrincipal(server_id=999, mode="mtls")), + self.server.id, + ) + self.assertEqual(forbidden.exception.status_code, 403) + + agent_router._require_agent_access( + SimpleNamespace(auth=agent_router.AgentPrincipal(server_id=self.server.id, mode="mtls")), + self.server.id, + ) + self.assertNotEqual(agent_router._issue_agent_api_token(), agent_router._issue_agent_api_token()) + + def test_server_lookup_key_map_and_account_sync_helpers(self) -> None: + found = agent_router._get_server_or_404(self.server.id) + self.assertEqual(found.id, self.server.id) + with self.assertRaises(HttpError) as not_found: + agent_router._get_server_or_404(999999) + self.assertEqual(not_found.exception.status_code, 404) + + key_active = SSHKey.objects.create( + user=self.user, + name="active", + public_key="ssh-ed25519 AAAA", + key_type="ssh-ed25519", + fingerprint="fp-active", + is_active=True, + revoked_at=None, + ) + SSHKey.objects.create( + user=self.user, + name="revoked", + public_key="ssh-ed25519 BBBB", + key_type="ssh-ed25519", + fingerprint="fp-revoked", + is_active=True, + revoked_at=timezone.now(), + ) + key_map = agent_router._key_map_for_users([self.user]) + self.assertIn(self.user.id, key_map) + self.assertEqual([item.id for item in key_map[self.user.id]], [key_active.id]) + + payload = [agent_router.AccountSyncIn(user_id=self.user.id, system_username="helper_1", present=True)] + agent_router._update_server_accounts(self.server, payload) + account = self.server.accounts.get(user=self.user) + self.assertEqual(account.system_username, "helper_1") + self.assertTrue(account.is_present) + + def test_csr_and_agent_ca_helpers(self) -> None: + with self.assertRaises(HttpError) as bad_csr: + agent_router._load_csr("not a csr") + self.assertEqual(bad_csr.exception.status_code, 422) + + with patch("keywarden.api.routers.agent.x509.load_pem_x509_csr", return_value=SimpleNamespace(is_signature_valid=False)): + with self.assertRaises(HttpError) as bad_sig: + agent_router._load_csr("dummy") + self.assertEqual(bad_sig.exception.status_code, 422) + + ca_cert, ca_key, ca_pem, key_pem = self._build_ca_material() + ca_record = agent_router.AgentCertificateAuthority.objects.create( + name="Test Agent CA", + cert_pem=ca_pem, + key_pem=key_pem, + is_active=True, + ) + loaded_cert, loaded_key, loaded_pem = agent_router._load_agent_ca() + self.assertEqual(loaded_pem, ca_record.cert_pem) + self.assertIsNotNone(loaded_cert) + self.assertIsNotNone(loaded_key) + + csr = self._build_csr("agent-1.example.test") + with patch("keywarden.api.routers.agent._load_agent_ca", return_value=(ca_cert, ca_key, ca_pem)): + cert_pem, returned_ca_pem, fingerprint, serial = agent_router._issue_client_cert( + csr=csr, + host="agent-1.example.test", + server_id=self.server.id, + ) + self.assertIn("BEGIN CERTIFICATE", cert_pem) + self.assertEqual(returned_ca_pem, ca_pem) + self.assertTrue(fingerprint) + self.assertTrue(serial) + + +class KeysModelHelpersTests(TestCase): + def setUp(self) -> None: + super().setUp() + User = get_user_model() + self.user = User.objects.create_user( + username="keys-user", + email="keys-user@example.com", + password="pass12345", + ) + self.server = Server.objects.create(display_name="keys-server", hostname="keys-server.example.test") + assign_perm("view_server", self.user, self.server) + now = timezone.now() + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=5), + source_kind="service", + source_name="sshd.service", + category="access", + event_type="ssh.login.success", + username="alice", + source_ip="203.0.113.10", + message="Accepted publickey for alice", + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=4), + source_kind="service", + source_name="sshd.service", + category="access", + event_type="ssh.login.fail", + username="bob", + source_ip="198.51.100.5", + message="Failed password for bob", + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=3), + source_kind="file", + source_name="/var/log/auth.log", + category="network", + event_type="network", + message="Interface eth0 changed", + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=2), + source_kind="file", + source_name="/var/log/nginx/access.log", + category="access", + event_type="http.access", + source_ip="203.0.113.10", + message='192.0.2.40 - - [15/Apr/2026:23:57:44 +0000] "GET /api/v1/agent/servers/6/log-config HTTP/2.0" 200 682 "-"', + fields={"nginx.status": "200"}, + ) + ServerAuditLog.objects.create( + server=self.server, + event_at=now - timedelta(minutes=1), + source_kind="file", + source_name="/var/log/nginx/access.log", + category="access", + event_type="http.access", + source_ip="198.51.100.5", + message='192.0.2.41 - - [15/Apr/2026:23:57:45 +0000] "GET /private HTTP/2.0" 401 245 "-"', + fields={"nginx.status": "401"}, + ) + + def test_parse_public_key_valid_and_invalid(self) -> None: + key_type, key_b64, fingerprint = parse_public_key("ssh-ed25519 AAAA comment") + self.assertEqual(key_type, "ssh-ed25519") + self.assertEqual(key_b64, "AAAA") + self.assertTrue(fingerprint.startswith("SHA256:")) + with self.assertRaises(ValidationError): + parse_public_key("invalid-key") + + def test_sshkey_set_public_key_and_revoke(self) -> None: + key = SSHKey.objects.create( + user=self.user, + name="laptop", + public_key="ssh-ed25519 AAAA", + key_type="ssh-ed25519", + fingerprint="fp-laptop", + is_active=True, + ) + key.set_public_key("ssh-ed25519 AAAA comment-to-drop") + self.assertEqual(key.public_key, "ssh-ed25519 AAAA") + now = timezone.now() + cert = SSHCertificate.objects.create( + key=key, + user=self.user, + certificate="ssh-ed25519-cert-v01 AAAA", + serial=42, + principals=["keys_user"], + valid_after=now - timedelta(minutes=1), + valid_before=now + timedelta(days=1), + is_active=True, + ) + key.revoke() + key.save(update_fields=["is_active", "revoked_at"]) + key.refresh_from_db() + cert.refresh_from_db() + self.assertFalse(key.is_active) + self.assertIsNotNone(key.revoked_at) + self.assertFalse(cert.is_active) + self.assertIsNotNone(cert.revoked_at) + + def test_ssh_certificate_authority_ensure_material_paths(self) -> None: + ca = SSHCertificateAuthority( + name="Existing CA", + public_key="ssh-ed25519 AAAA", + private_key="-----BEGIN OPENSSH PRIVATE KEY-----\nPRIVATE\n-----END OPENSSH PRIVATE KEY-----\n", + fingerprint="", + ) + ca.ensure_material() + self.assertTrue(ca.fingerprint.startswith("SHA256:")) + self.assertTrue(ca.private_key.startswith("file://")) + + generated = SSHCertificateAuthority(name="Generated CA") + + def fake_run(cmd, check, capture_output): + key_path = cmd[cmd.index("-f") + 1] + with open(key_path, "w", encoding="utf-8") as handle: + handle.write("PRIVATE-KEY\n") + with open(key_path + ".pub", "w", encoding="utf-8") as handle: + handle.write("ssh-ed25519 AAAA generated-ca\n") + return SimpleNamespace(returncode=0) + + with patch("apps.keys.models.subprocess.run", side_effect=fake_run): + generated.ensure_material() + self.assertTrue(generated.private_key) + self.assertEqual(generated.public_key, "ssh-ed25519 AAAA generated-ca") + self.assertTrue(generated.fingerprint.startswith("SHA256:")) + + def test_ssh_certificate_revoke(self) -> None: + key = SSHKey.objects.create( + user=self.user, + name="desktop", + public_key="ssh-ed25519 AAAA", + key_type="ssh-ed25519", + fingerprint="fp-desktop", + is_active=True, + ) + cert = SSHCertificate.objects.create( + key=key, + user=self.user, + certificate="ssh-ed25519-cert-v01 AAAA", + serial=77, + principals=["keys_user"], + valid_after=timezone.now() - timedelta(minutes=1), + valid_before=timezone.now() + timedelta(days=1), + is_active=True, + ) + cert.revoke() + self.assertFalse(cert.is_active) + self.assertIsNotNone(cert.revoked_at) + def test_audit_panel_view_supports_source_filters(self) -> None: - self.client.login(username="auditor", password="pass12345") + self.client.force_login(self.user) response = self.client.get( reverse("servers:audit_panel", args=[self.server.id]), { @@ -245,10 +710,11 @@ class ServerAuditViewTests(TestCase): ) self.assertEqual(response.status_code, 200) self.assertContains(response, "/var/log/auth.log") - self.assertNotContains(response, "ssh.login.success") + self.assertContains(response, "Interface eth0 changed") + self.assertNotContains(response, "Accepted publickey for alice") def test_audit_view_exposes_chart_context(self) -> None: - self.client.login(username="auditor", password="pass12345") + self.client.force_login(self.user) response = self.client.get( reverse("servers:audit", args=[self.server.id]), {"view": "charts"}, @@ -272,7 +738,7 @@ class ServerAuditViewTests(TestCase): self.assertEqual(charts["http_status_codes"]["implicit_total"], 1) def test_audit_view_drilldown_filters_logs_for_http_status(self) -> None: - self.client.login(username="auditor", password="pass12345") + self.client.force_login(self.user) response = self.client.get( reverse("servers:audit", args=[self.server.id]), {"view": "logs", "http_status": "401"}, @@ -284,7 +750,7 @@ class ServerAuditViewTests(TestCase): self.assertIn(" 401 ", logs[0].message) def test_audit_view_drilldown_filters_logs_for_login_outcome(self) -> None: - self.client.login(username="auditor", password="pass12345") + self.client.force_login(self.user) response = self.client.get( reverse("servers:audit", args=[self.server.id]), {"view": "logs", "login_outcome": "success"}, diff --git a/app/apps/servers/tests/test_consumers.py b/app/apps/servers/tests/test_consumers.py index 12fba2b..408e32a 100644 --- a/app/apps/servers/tests/test_consumers.py +++ b/app/apps/servers/tests/test_consumers.py @@ -1,8 +1,33 @@ from __future__ import annotations -from django.test import SimpleTestCase, override_settings +import subprocess +import tempfile +from datetime import datetime, timedelta, timezone as dt_timezone +from types import SimpleNamespace +from urllib.parse import quote +from unittest import IsolatedAsyncioTestCase +from unittest.mock import AsyncMock, Mock, patch -from apps.servers.consumers import _build_ssh_command +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.x509.oid import NameOID +from django.conf import settings +from django.test import SimpleTestCase, TestCase, override_settings + +from apps.servers.consumers import ( + ShellConsumer, + _build_ssh_command, + _format_ssh_host, + _generate_session_keypair, + _is_truthy, + _summarize_probe_output, + _truncate_lines, +) +from apps.keys import certificates as key_certificates +from apps.keys.utils import render_system_username, sanitize_username +from apps.servers.models import AgentCertificateAuthority, Server +from keywarden.api import security as api_security class ShellSSHCommandTests(SimpleTestCase): @@ -13,7 +38,8 @@ class ShellSSHCommandTests(SimpleTestCase): username="alice", host="server.example.test", ) - self.assertEqual(command[-1], "/bin/bash") + expected = str(getattr(settings, "KEYWARDEN_SHELL_REMOTE_COMMAND", "/bin/bash")).strip() + self.assertEqual(command[-1], expected) @override_settings(KEYWARDEN_SHELL_REMOTE_COMMAND="/bin/bash -li") def test_build_command_appends_configured_remote_shell(self): @@ -50,6 +76,29 @@ class ShellSSHCommandTests(SimpleTestCase): self.assertIn("ConnectTimeout=8", command) self.assertEqual(command[-1], "true") + def test_build_command_enforces_host_key_verification(self): + command = _build_ssh_command( + key_path="/tmp/session_key", + cert_path="/tmp/session_key-cert.pub", + username="alice", + host="server.example.test", + ) + self.assertIn("StrictHostKeyChecking=accept-new", command) + self.assertIn("UpdateHostKeys=yes", command) + self.assertNotIn("StrictHostKeyChecking=no", command) + self.assertNotIn("UserKnownHostsFile=/dev/null", command) + self.assertNotIn("GlobalKnownHostsFile=/dev/null", command) + + @override_settings(KEYWARDEN_SHELL_STRICT_HOST_KEY_CHECKING="yes") + def test_build_command_allows_strict_host_key_policy_override(self): + command = _build_ssh_command( + key_path="/tmp/session_key", + cert_path="/tmp/session_key-cert.pub", + username="alice", + host="server.example.test", + ) + self.assertIn("StrictHostKeyChecking=yes", command) + @override_settings(KEYWARDEN_SHELL_REMOTE_COMMAND='"/bin/bash -li') def test_build_command_tolerates_invalid_shell_quoting(self): command = _build_ssh_command( @@ -59,3 +108,449 @@ class ShellSSHCommandTests(SimpleTestCase): host="server.example.test", ) self.assertEqual(command[-1], '"/bin/bash -li') + + +class ShellHelpersTests(SimpleTestCase): + def test_format_ssh_host_wraps_ipv6(self): + self.assertEqual(_format_ssh_host("2001:db8::1"), "[2001:db8::1]") + self.assertEqual(_format_ssh_host("[2001:db8::1]"), "[2001:db8::1]") + self.assertEqual(_format_ssh_host("server.example.test"), "server.example.test") + + def test_is_truthy_supports_common_values(self): + self.assertTrue(_is_truthy(True)) + self.assertTrue(_is_truthy("YES")) + self.assertTrue(_is_truthy("1")) + self.assertFalse(_is_truthy(False)) + self.assertFalse(_is_truthy(None)) + self.assertFalse(_is_truthy("off")) + + def test_truncate_lines_limits_output(self): + text = "\n".join([f"line-{idx}" for idx in range(20)]) + clipped = _truncate_lines(text, max_lines=6, max_chars=2000) + self.assertIn("... (middle omitted) ...", clipped) + self.assertIn("line-0", clipped) + self.assertIn("line-19", clipped) + + def test_summarize_probe_output_extracts_highlights(self): + raw = ( + "debug: Authenticating to host\n" + "Permission denied (publickey).\n" + "certificate invalid: bad signature\n" + "no such user\n" + "tail marker\n" + ) + summary = _summarize_probe_output(raw) + self.assertIn("Detected cause:", summary) + self.assertIn("SSH authentication was denied", summary) + self.assertIn("SSH certificate was rejected", summary) + self.assertIn("Remote user account does not exist", summary) + self.assertIn("Probe tail:", summary) + + def test_generate_session_keypair_creates_cert_material(self): + with tempfile.TemporaryDirectory() as tmpdir: + ca = SimpleNamespace( + private_key="ca-private", + public_key="ca-public", + get_private_key=lambda: "ca-private", + ) + user = SimpleNamespace(id=7) + + def fake_run(cmd, check, capture_output): + key_path = cmd[cmd.index("-f") + 1] + with open(key_path, "w", encoding="utf-8") as handle: + handle.write("PRIVATE\n") + with open(key_path + ".pub", "w", encoding="utf-8") as handle: + handle.write("ssh-ed25519 AAAATEST comment\n") + return SimpleNamespace(returncode=0) + + with ( + patch("apps.servers.consumers.get_active_ca", return_value=ca), + patch("apps.servers.consumers._sign_public_key", return_value="ssh-ed25519-cert-v01 AAAACERT"), + patch("apps.servers.consumers.subprocess.run", side_effect=fake_run), + patch("apps.servers.consumers.secrets.randbits", return_value=42), + ): + key_path, cert_path = _generate_session_keypair(tmpdir, user, "alice") + + with open(cert_path, "r", encoding="utf-8") as handle: + cert_body = handle.read() + self.assertTrue(key_path.endswith("session_key")) + self.assertTrue(cert_path.endswith("session_key-cert.pub")) + self.assertIn("AAAACERT", cert_body) + + def test_generate_session_keypair_raises_when_ssh_keygen_missing(self): + with tempfile.TemporaryDirectory() as tmpdir: + ca = SimpleNamespace( + private_key="ca-private", + public_key="ca-public", + get_private_key=lambda: "ca-private", + ) + user = SimpleNamespace(id=8) + with ( + patch("apps.servers.consumers.get_active_ca", return_value=ca), + patch("apps.servers.consumers.subprocess.run", side_effect=FileNotFoundError("missing")), + ): + with self.assertRaises(RuntimeError): + _generate_session_keypair(tmpdir, user, "alice") + + def test_generate_session_keypair_raises_on_ssh_keygen_error(self): + with tempfile.TemporaryDirectory() as tmpdir: + ca = SimpleNamespace( + private_key="ca-private", + public_key="ca-public", + get_private_key=lambda: "ca-private", + ) + user = SimpleNamespace(id=9) + called = subprocess.CalledProcessError(1, ["ssh-keygen"], stderr=b"boom") + with ( + patch("apps.servers.consumers.get_active_ca", return_value=ca), + patch("apps.servers.consumers.subprocess.run", side_effect=called), + ): + with self.assertRaises(RuntimeError): + _generate_session_keypair(tmpdir, user, "alice") + + +class ShellConsumerAsyncTests(IsolatedAsyncioTestCase): + async def test_connect_rejects_unauthenticated_user(self): + consumer = ShellConsumer() + consumer.scope = {"url_route": {"kwargs": {"server_id": "1"}}} + consumer.close = AsyncMock() + await consumer.connect() + consumer.close.assert_awaited_once_with(code=4401) + + async def test_connect_rejects_missing_server_id(self): + consumer = ShellConsumer() + consumer.scope = {"user": SimpleNamespace(is_authenticated=True), "url_route": {"kwargs": {}}} + consumer.close = AsyncMock() + await consumer.connect() + consumer.close.assert_awaited_once_with(code=4400) + + async def test_connect_accepts_and_starts_session(self): + user = SimpleNamespace(is_authenticated=True, id=5, username="alice") + server = SimpleNamespace(id=12, hostname="server.example.test", ipv4=None, ipv6=None) + consumer = ShellConsumer() + consumer.scope = {"user": user, "url_route": {"kwargs": {"server_id": "12"}}, "path": "/ws/servers/12/shell/"} + consumer.accept = AsyncMock() + consumer.send = AsyncMock() + consumer.close = AsyncMock() + consumer._get_server = AsyncMock(return_value=server) + consumer._can_shell = AsyncMock(return_value=True) + consumer._get_system_username = AsyncMock(return_value="alice_5") + consumer._audit_websocket_event = AsyncMock() + consumer._start_ssh = AsyncMock() + + await consumer.connect() + + consumer.accept.assert_awaited_once() + consumer._start_ssh.assert_awaited_once_with(user) + consumer.send.assert_any_await(text_data="Connecting...\r\n") + self.assertEqual(consumer.server_id, 12) + self.assertEqual(consumer.system_username, "alice_5") + self.assertEqual(consumer.shell_target, "server.example.test") + + async def test_connect_handles_start_ssh_failure(self): + user = SimpleNamespace(is_authenticated=True, id=5, username="alice") + server = SimpleNamespace(id=12, hostname="server.example.test", ipv4=None, ipv6=None) + consumer = ShellConsumer() + consumer.scope = {"user": user, "url_route": {"kwargs": {"server_id": "12"}}, "path": "/ws/servers/12/shell/"} + consumer.accept = AsyncMock() + consumer.send = AsyncMock() + consumer.close = AsyncMock() + consumer._get_server = AsyncMock(return_value=server) + consumer._can_shell = AsyncMock(return_value=True) + consumer._get_system_username = AsyncMock(return_value="alice_5") + consumer._audit_websocket_event = AsyncMock() + consumer._start_ssh = AsyncMock(side_effect=RuntimeError("boom")) + + await consumer.connect() + + consumer.send.assert_any_await(text_data="Connection failed.\r\n") + consumer.close.assert_awaited() + + async def test_receive_forwards_payload_to_ssh_stdin(self): + stdin = SimpleNamespace(write=Mock(), drain=AsyncMock()) + consumer = ShellConsumer() + consumer.proc = SimpleNamespace(stdin=stdin) + await consumer.receive(text_data="echo hi") + stdin.write.assert_called_once() + stdin.drain.assert_awaited_once() + + async def test_disconnect_terminates_process_and_cleans_tempdir(self): + user = SimpleNamespace(is_authenticated=True) + reader_task = SimpleNamespace(cancel=Mock()) + proc = SimpleNamespace(returncode=None, terminate=Mock(), wait=AsyncMock(return_value=0), kill=Mock()) + consumer = ShellConsumer() + consumer.scope = {"user": user} + consumer.server_id = 77 + consumer.reader_task = reader_task + consumer.proc = proc + consumer.ssh_started = True + consumer.tempdir_path = "/tmp/keywarden-shell-test" + consumer._audit_websocket_event = AsyncMock() + + with patch("apps.servers.consumers.shutil.rmtree") as rmtree: + await consumer.disconnect(1000) + + consumer._audit_websocket_event.assert_awaited_once() + reader_task.cancel.assert_called_once() + proc.terminate.assert_called_once() + rmtree.assert_called_once_with("/tmp/keywarden-shell-test", ignore_errors=True) + + async def test_stream_output_relays_bytes_and_closes(self): + stdout = SimpleNamespace(read=AsyncMock(side_effect=[b"hello", b""])) + proc = SimpleNamespace(stdout=stdout, wait=AsyncMock(return_value=0)) + consumer = ShellConsumer() + consumer.proc = proc + consumer.send = AsyncMock() + consumer.close = AsyncMock() + + await consumer._stream_output() + + consumer.send.assert_any_await(bytes_data=b"hello") + consumer.close.assert_awaited_once() + + +class SecurityAndCertificateHelperTests(TestCase): + def test_normalize_agent_token_and_hash(self): + self.assertEqual(api_security._normalize_agent_token(" Bearer abc123 "), "abc123") + self.assertEqual(api_security._normalize_agent_token("token-value"), "token-value") + self.assertEqual(api_security.hash_agent_token(""), "") + self.assertEqual( + api_security.hash_agent_token("Bearer test-token"), + api_security.hash_agent_token("test-token"), + ) + + def _build_ca_and_client_cert(self): + ca_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) + ca_subject = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Keywarden Test Agent CA")]) + now = datetime.now(dt_timezone.utc) + ca_cert = ( + x509.CertificateBuilder() + .subject_name(ca_subject) + .issuer_name(ca_subject) + .public_key(ca_key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now - timedelta(minutes=5)) + .not_valid_after(now + timedelta(days=365)) + .add_extension(x509.BasicConstraints(ca=True, path_length=None), critical=True) + .sign(ca_key, hashes.SHA256()) + ) + ca_cert_pem = ca_cert.public_bytes(serialization.Encoding.PEM).decode("utf-8") + ca_key_pem = ca_key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ).decode("utf-8") + + agent_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) + client_subject = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "agent.example.test")]) + cert = ( + x509.CertificateBuilder() + .subject_name(client_subject) + .issuer_name(ca_cert.subject) + .public_key(agent_key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(now - timedelta(minutes=5)) + .not_valid_after(now + timedelta(days=30)) + .sign(ca_key, hashes.SHA256()) + ) + cert_pem = cert.public_bytes(serialization.Encoding.PEM).decode("utf-8") + return ca_cert_pem, ca_key_pem, cert_pem, cert + + def test_agent_mtls_auth_accepts_enrolled_server_certificate(self): + ca_cert_pem, ca_key_pem, cert_pem, cert = self._build_ca_and_client_cert() + AgentCertificateAuthority.objects.create( + name="Test Agent CA", + cert_pem=ca_cert_pem, + key_pem=ca_key_pem, + is_active=True, + ) + fingerprint = cert.fingerprint(hashes.SHA256()).hex() + serial = format(cert.serial_number, "x") + server = Server.objects.create( + display_name="mtls-1", + hostname="mtls-1.example.test", + agent_cert_fingerprint=fingerprint, + agent_cert_serial=serial, + ) + request = SimpleNamespace( + META={ + "HTTP_X_KEYWARDEN_TLS_CLIENT_VERIFY": "SUCCESS", + "HTTP_X_KEYWARDEN_TLS_CLIENT_CERT": quote(cert_pem, safe=""), + "HTTP_X_KEYWARDEN_TLS_CLIENT_FINGERPRINT": fingerprint, + } + ) + auth = api_security.AgentMTLSAuth() + + principal = auth.authenticate(request) + + self.assertIsNotNone(principal) + self.assertEqual(principal.mode, "mtls") + self.assertEqual(principal.server_id, server.id) + + def test_agent_mtls_auth_accepts_failed_verify_when_cert_is_valid(self): + ca_cert_pem, ca_key_pem, cert_pem, cert = self._build_ca_and_client_cert() + AgentCertificateAuthority.objects.create( + name="Test Agent CA", + cert_pem=ca_cert_pem, + key_pem=ca_key_pem, + is_active=True, + ) + fingerprint = cert.fingerprint(hashes.SHA256()).hex() + Server.objects.create( + display_name="mtls-1b", + hostname="mtls-1b.example.test", + agent_cert_fingerprint=fingerprint, + agent_cert_serial=format(cert.serial_number, "x"), + ) + request = SimpleNamespace( + META={ + "HTTP_X_KEYWARDEN_TLS_CLIENT_VERIFY": "FAILED:unable to verify the first certificate", + "HTTP_X_KEYWARDEN_TLS_CLIENT_CERT": quote(cert_pem, safe=""), + # nginx $ssl_client_fingerprint is SHA-1 by default. + "HTTP_X_KEYWARDEN_TLS_CLIENT_FINGERPRINT": cert.fingerprint(hashes.SHA1()).hex(), + } + ) + auth = api_security.AgentMTLSAuth() + + principal = auth.authenticate(request) + + self.assertIsNotNone(principal) + self.assertEqual(principal.mode, "mtls") + + def test_agent_mtls_auth_rejects_missing_or_mismatched_metadata(self): + ca_cert_pem, ca_key_pem, cert_pem, cert = self._build_ca_and_client_cert() + AgentCertificateAuthority.objects.create( + name="Test Agent CA", + cert_pem=ca_cert_pem, + key_pem=ca_key_pem, + is_active=True, + ) + Server.objects.create( + display_name="mtls-2", + hostname="mtls-2.example.test", + agent_cert_fingerprint=cert.fingerprint(hashes.SHA256()).hex(), + agent_cert_serial=format(cert.serial_number, "x"), + ) + auth = api_security.AgentMTLSAuth() + + missing_verify = SimpleNamespace( + META={"HTTP_X_KEYWARDEN_TLS_CLIENT_CERT": quote(cert_pem, safe="")} + ) + self.assertIsNone(auth.authenticate(missing_verify)) + + none_verify = SimpleNamespace( + META={ + "HTTP_X_KEYWARDEN_TLS_CLIENT_VERIFY": "NONE", + "HTTP_X_KEYWARDEN_TLS_CLIENT_CERT": quote(cert_pem, safe=""), + } + ) + self.assertIsNone(auth.authenticate(none_verify)) + + bad_fingerprint = SimpleNamespace( + META={ + "HTTP_X_KEYWARDEN_TLS_CLIENT_VERIFY": "SUCCESS", + "HTTP_X_KEYWARDEN_TLS_CLIENT_CERT": quote(cert_pem, safe=""), + "HTTP_X_KEYWARDEN_TLS_CLIENT_FINGERPRINT": "00" * 32, + } + ) + self.assertIsNone(auth.authenticate(bad_fingerprint)) + + def test_sanitize_username_and_render_system_username(self): + self.assertEqual(sanitize_username("Alice Smith"), "alice_smith") + self.assertEqual(sanitize_username(" "), "") + with override_settings(KEYWARDEN_ACCOUNT_USERNAME_TEMPLATE="{{username}}--{{user_id}}"): + rendered = render_system_username("Alice Smith", 42) + self.assertEqual(rendered, "alice_smith--42") + + def test_certificate_label_and_comment_helpers(self): + self.assertEqual(key_certificates._sanitize_label(" Prod Key #1 "), "prod-key-1") + self.assertEqual(key_certificates._sanitize_label("$$$"), "key") + self.assertEqual( + key_certificates._ensure_comment("ssh-ed25519 AAAA old", "new-comment"), + "ssh-ed25519 AAAA new-comment", + ) + self.assertEqual( + key_certificates._ensure_comment("ssh-ed25519 AAAA", ""), + "ssh-ed25519 AAAA", + ) + + def test_write_file_sets_mode(self): + with tempfile.TemporaryDirectory() as tmpdir: + target = f"{tmpdir}/test.txt" + key_certificates._write_file(target, "hello", 0o600) + with open(target, "r", encoding="utf-8") as handle: + self.assertEqual(handle.read(), "hello") + + def test_sign_public_key_raises_when_ca_material_missing(self): + with self.assertRaises(RuntimeError): + key_certificates._sign_public_key( + ca_private_key="", + ca_public_key="", + public_key="ssh-ed25519 AAAA", + identity="id", + principal="alice", + serial=1, + validity_days=1, + comment="c", + ) + + def test_sign_public_key_raises_when_ssh_keygen_missing(self): + with patch("apps.keys.certificates.subprocess.run", side_effect=FileNotFoundError("missing")): + with self.assertRaises(RuntimeError): + key_certificates._sign_public_key( + ca_private_key="private", + ca_public_key="ssh-ed25519 AAAA", + public_key="ssh-ed25519 BBBB", + identity="id", + principal="alice", + serial=1, + validity_days=1, + comment="c", + ) + + def test_sign_public_key_happy_path_reads_generated_cert(self): + def fake_run(cmd, check, capture_output): + pubkey_path = cmd[-1] + cert_path = pubkey_path[:-4] + "-cert.pub" + with open(cert_path, "w", encoding="utf-8") as handle: + handle.write("ssh-ed25519-cert-v01 AAAACERT") + return SimpleNamespace(stderr=b"") + + with patch("apps.keys.certificates.subprocess.run", side_effect=fake_run): + cert = key_certificates._sign_public_key( + ca_private_key="private", + ca_public_key="ssh-ed25519 AAAA", + public_key="ssh-ed25519 BBBB", + identity="id", + principal="alice", + serial=1, + validity_days=1, + comment="comment", + ) + self.assertIn("AAAACERT", cert) + + def test_issue_certificate_for_key_updates_record(self): + user = SimpleNamespace(id=5, username="alice") + key = SimpleNamespace(id=77, user_id=5, user=user, name="Laptop key", public_key="ssh-ed25519 BBBB") + fake_ca = SimpleNamespace( + private_key="private", + public_key="public", + get_private_key=lambda: "private", + ) + fake_cert = SimpleNamespace(id=9) + with ( + patch("apps.keys.certificates.get_active_ca", return_value=fake_ca), + patch("apps.keys.certificates._sign_public_key", return_value="ssh-ed25519-cert-v01 AAAACERT"), + patch("apps.keys.certificates.secrets.randbits", return_value=42), + patch("apps.keys.certificates.SSHCertificate.objects.update_or_create", return_value=(fake_cert, True)) as upsert, + ): + cert = key_certificates.issue_certificate_for_key(key) + self.assertEqual(cert, fake_cert) + upsert.assert_called_once() + + def test_revoke_certificate_for_key_marks_cert_revoked(self): + cert = SimpleNamespace(revoke=Mock(), save=Mock()) + key = SimpleNamespace(certificate=cert) + key_certificates.revoke_certificate_for_key(key) + cert.revoke.assert_called_once() + cert.save.assert_called_once_with(update_fields=["is_active", "revoked_at"]) diff --git a/app/apps/servers/tests/test_keys_router.py b/app/apps/servers/tests/test_keys_router.py new file mode 100644 index 0000000..bef7c2b --- /dev/null +++ b/app/apps/servers/tests/test_keys_router.py @@ -0,0 +1,398 @@ +from __future__ import annotations + +import json +from datetime import timedelta +from types import SimpleNamespace +from unittest.mock import patch + +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Permission +from django.test import TestCase +from django.utils import timezone +from guardian.shortcuts import assign_perm +from ninja.errors import HttpError + +from apps.keys.models import SSHCertificate, SSHKey +from keywarden.api.routers import keys as keys_router + + +class KeysRouterHelperTests(TestCase): + def setUp(self) -> None: + super().setUp() + User = get_user_model() + self.user = User.objects.create_user( + username="keys-helper", + email="keys-helper@example.com", + password="pass12345", + ) + + def _create_key(self, *, owner=None, name: str = "helper-key", key_b64: str = "AAAA") -> SSHKey: + key = SSHKey(user=owner or self.user, name=name) + key.set_public_key(f"ssh-ed25519 {key_b64} comment") + key.save() + return key + + def test_ensure_certificate_raises_when_key_is_revoked(self) -> None: + key = self._create_key() + key.is_active = False + key.save(update_fields=["is_active"]) + + with self.assertRaises(HttpError): + keys_router._ensure_certificate(key, self.user) + + def test_ensure_certificate_issues_when_missing_or_expired(self) -> None: + key_missing = self._create_key(name="missing") + key_expired = self._create_key(name="expired", key_b64="AAAB") + SSHCertificate.objects.create( + key=key_expired, + user=self.user, + certificate="ssh-ed25519-cert-v01 AAAA", + serial=1001, + principals=["keys-helper"], + valid_after=timezone.now() - timedelta(days=2), + valid_before=timezone.now() - timedelta(days=1), + is_active=True, + ) + issued = SimpleNamespace(serial=999, certificate="ssh-ed25519-cert-v01 BBBB") + with patch("keywarden.api.routers.keys.issue_certificate_for_key", return_value=issued) as mocked_issue: + self.assertIs(keys_router._ensure_certificate(key_missing, self.user), issued) + self.assertIs(keys_router._ensure_certificate(key_expired, self.user), issued) + self.assertEqual(mocked_issue.call_count, 2) + + def test_ensure_certificate_returns_existing_active_cert(self) -> None: + key = self._create_key() + cert = SSHCertificate.objects.create( + key=key, + user=self.user, + certificate="ssh-ed25519-cert-v01 AAAA", + serial=42, + principals=["keys-helper"], + valid_after=timezone.now() - timedelta(minutes=5), + valid_before=timezone.now() + timedelta(days=1), + is_active=True, + ) + + with patch("keywarden.api.routers.keys.issue_certificate_for_key") as mocked_issue: + result = keys_router._ensure_certificate(key, self.user) + self.assertEqual(result.id, cert.id) + mocked_issue.assert_not_called() + + +class KeysApiRouterTests(TestCase): + def setUp(self) -> None: + super().setUp() + User = get_user_model() + self.user = User.objects.create_user( + username="keys-user", + email="keys-user@example.com", + password="pass12345", + ) + self.other_user = User.objects.create_user( + username="keys-other", + email="keys-other@example.com", + password="pass12345", + ) + + def _grant_global_perm(self, user, codename: str) -> None: + perm = Permission.objects.get(content_type__app_label="keys", codename=codename) + user.user_permissions.add(perm) + + def _create_key(self, *, owner=None, name: str = "api-key", key_b64: str = "AAAA") -> SSHKey: + key = SSHKey(user=owner or self.user, name=name) + key.set_public_key(f"ssh-ed25519 {key_b64} comment") + key.save() + return key + + def _dummy_cert(self): + now = timezone.now() + return SimpleNamespace( + serial=1234, + valid_after=now, + valid_before=now + timedelta(days=1), + principals=[self.user.username], + certificate="ssh-ed25519-cert-v01 AAAATEST", + ) + + def test_list_keys_returns_only_object_permitted_keys(self) -> None: + visible = self._create_key(owner=self.other_user, name="visible") + hidden = self._create_key(owner=self.other_user, name="hidden", key_b64="AAAB") + assign_perm("view_sshkey", self.user, visible) + self.client.force_login(self.user) + + response = self.client.get("/api/v1/keys/") + + self.assertEqual(response.status_code, 200) + ids = {item["id"] for item in response.json()} + self.assertIn(visible.id, ids) + self.assertNotIn(hidden.id, ids) + + def test_list_keys_honors_global_filter_by_user(self) -> None: + self._grant_global_perm(self.user, "view_sshkey") + other_key = self._create_key(owner=self.other_user, name="other", key_b64="AAAC") + self._create_key(owner=self.user, name="self", key_b64="AAAD") + self.client.force_login(self.user) + + response = self.client.get(f"/api/v1/keys/?user_id={self.other_user.id}&limit=20&offset=0") + + self.assertEqual(response.status_code, 200) + payload = response.json() + self.assertEqual(len(payload), 1) + self.assertEqual(payload[0]["id"], other_key.id) + + def test_create_key_requires_add_permission(self) -> None: + self.client.force_login(self.user) + + response = self.client.post( + "/api/v1/keys/", + data=json.dumps({"name": "laptop", "public_key": "ssh-ed25519 AAAA"}), + content_type="application/json", + ) + + self.assertEqual(response.status_code, 403) + + def test_create_key_for_self_success(self) -> None: + self._grant_global_perm(self.user, "add_sshkey") + self.client.force_login(self.user) + with patch("keywarden.api.routers.keys.issue_certificate_for_key", return_value=self._dummy_cert()) as mocked: + response = self.client.post( + "/api/v1/keys/", + data=json.dumps({"name": "laptop", "public_key": "ssh-ed25519 AAAA"}), + content_type="application/json", + ) + + self.assertEqual(response.status_code, 200) + payload = response.json() + self.assertEqual(payload["user_id"], self.user.id) + self.assertEqual(payload["name"], "laptop") + self.assertTrue(SSHKey.objects.filter(id=payload["id"]).exists()) + mocked.assert_called_once() + + def test_create_key_for_other_user_requires_admin_view_permission(self) -> None: + self._grant_global_perm(self.user, "add_sshkey") + self.client.force_login(self.user) + + response = self.client.post( + "/api/v1/keys/", + data=json.dumps( + {"name": "other-user-key", "public_key": "ssh-ed25519 AAAA", "user_id": self.other_user.id} + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, 403) + + def test_create_key_for_other_user_with_admin_perms(self) -> None: + self._grant_global_perm(self.user, "add_sshkey") + self._grant_global_perm(self.user, "view_sshkey") + self.client.force_login(self.user) + with patch("keywarden.api.routers.keys.issue_certificate_for_key", return_value=self._dummy_cert()): + response = self.client.post( + "/api/v1/keys/", + data=json.dumps( + {"name": "other-user-key", "public_key": "ssh-ed25519 AAAA", "user_id": self.other_user.id} + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, 200) + payload = response.json() + self.assertEqual(payload["user_id"], self.other_user.id) + + def test_create_key_unknown_user_returns_404(self) -> None: + self._grant_global_perm(self.user, "add_sshkey") + self._grant_global_perm(self.user, "view_sshkey") + self.client.force_login(self.user) + + response = self.client.post( + "/api/v1/keys/", + data=json.dumps( + {"name": "other-user-key", "public_key": "ssh-ed25519 AAAA", "user_id": 999999} + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, 404) + + def test_create_key_validation_paths_raise_type_error(self) -> None: + self._grant_global_perm(self.user, "add_sshkey") + self.client.force_login(self.user) + + with self.assertRaises(TypeError): + self.client.post( + "/api/v1/keys/", + data=json.dumps({"name": " ", "public_key": "ssh-ed25519 AAAA"}), + content_type="application/json", + ) + with self.assertRaises(TypeError): + self.client.post( + "/api/v1/keys/", + data=json.dumps({"name": "badkey", "public_key": "not-a-key"}), + content_type="application/json", + ) + + def test_create_key_duplicate_fingerprint_raises_type_error(self) -> None: + self._grant_global_perm(self.user, "add_sshkey") + self.client.force_login(self.user) + self._create_key(owner=self.user, name="existing") + + with self.assertRaises(TypeError): + self.client.post( + "/api/v1/keys/", + data=json.dumps({"name": "duplicate", "public_key": "ssh-ed25519 AAAA"}), + content_type="application/json", + ) + + def test_get_key_not_found_and_forbidden(self) -> None: + self.client.force_login(self.user) + missing = self.client.get("/api/v1/keys/999999") + self.assertEqual(missing.status_code, 404) + + key = self._create_key(owner=self.other_user, name="forbidden") + forbidden = self.client.get(f"/api/v1/keys/{key.id}") + self.assertEqual(forbidden.status_code, 403) + + def test_get_key_success(self) -> None: + key = self._create_key(name="visible-key") + assign_perm("view_sshkey", self.user, key) + self.client.force_login(self.user) + + response = self.client.get(f"/api/v1/keys/{key.id}") + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.json()["id"], key.id) + + def test_issue_certificate_requires_object_permission(self) -> None: + key = self._create_key(owner=self.other_user, name="cert-forbidden") + self.client.force_login(self.user) + + forbidden = self.client.post(f"/api/v1/keys/{key.id}/certificate") + self.assertEqual(forbidden.status_code, 403) + + missing = self.client.post("/api/v1/keys/999999/certificate") + self.assertEqual(missing.status_code, 404) + + def test_issue_certificate_success(self) -> None: + key = self._create_key(name="cert-ok") + assign_perm("view_sshkey", self.user, key) + self.client.force_login(self.user) + cert = self._dummy_cert() + with patch("keywarden.api.routers.keys.issue_certificate_for_key", return_value=cert) as mocked: + response = self.client.post(f"/api/v1/keys/{key.id}/certificate") + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.json()["serial"], cert.serial) + mocked.assert_called_once_with(key, created_by=self.user) + + def test_download_certificate_and_hash(self) -> None: + key = self._create_key(name="download") + assign_perm("view_sshkey", self.user, key) + self.client.force_login(self.user) + cert = self._dummy_cert() + + with patch("keywarden.api.routers.keys._ensure_certificate", return_value=cert): + cert_response = self.client.get(f"/api/v1/keys/{key.id}/certificate") + hash_response = self.client.get(f"/api/v1/keys/{key.id}/certificate.sha256") + + self.assertEqual(cert_response.status_code, 200) + self.assertIn("attachment;", cert_response["Content-Disposition"]) + self.assertIn("AAAATEST", cert_response.content.decode("utf-8")) + + self.assertEqual(hash_response.status_code, 200) + hash_payload = hash_response.content.decode("utf-8") + self.assertIn("keywarden-", hash_payload) + self.assertTrue(hash_payload.endswith(".pub\n")) + + def test_download_certificate_requires_permission(self) -> None: + key = self._create_key(owner=self.other_user, name="download-forbidden") + self.client.force_login(self.user) + + cert_response = self.client.get(f"/api/v1/keys/{key.id}/certificate") + hash_response = self.client.get(f"/api/v1/keys/{key.id}/certificate.sha256") + + self.assertEqual(cert_response.status_code, 403) + self.assertEqual(hash_response.status_code, 403) + + def test_update_key_paths(self) -> None: + key = self._create_key(owner=self.other_user, name="editable", key_b64="AAAE") + self.client.force_login(self.user) + + forbidden = self.client.patch( + f"/api/v1/keys/{key.id}", + data=json.dumps({"name": "renamed"}), + content_type="application/json", + ) + self.assertEqual(forbidden.status_code, 403) + + self._grant_global_perm(self.user, "change_sshkey") + assign_perm("change_sshkey", self.user, key) + + renamed = self.client.patch( + f"/api/v1/keys/{key.id}", + data=json.dumps({"name": "renamed"}), + content_type="application/json", + ) + self.assertEqual(renamed.status_code, 200) + key.refresh_from_db() + self.assertEqual(key.name, "renamed") + + with patch("keywarden.api.routers.keys.revoke_certificate_for_key") as mocked_revoke: + revoked = self.client.patch( + f"/api/v1/keys/{key.id}", + data=json.dumps({"is_active": False}), + content_type="application/json", + ) + self.assertEqual(revoked.status_code, 200) + key.refresh_from_db() + self.assertFalse(key.is_active) + self.assertIsNotNone(key.revoked_at) + mocked_revoke.assert_called_once_with(key) + + with patch("keywarden.api.routers.keys.issue_certificate_for_key", return_value=self._dummy_cert()) as mocked_issue: + reactivated = self.client.patch( + f"/api/v1/keys/{key.id}", + data=json.dumps({"is_active": True}), + content_type="application/json", + ) + self.assertEqual(reactivated.status_code, 200) + key.refresh_from_db() + self.assertTrue(key.is_active) + self.assertIsNone(key.revoked_at) + mocked_issue.assert_called_once_with(key, created_by=self.user) + + with self.assertRaises(TypeError): + self.client.patch( + f"/api/v1/keys/{key.id}", + data=json.dumps({}), + content_type="application/json", + ) + + not_found = self.client.patch( + "/api/v1/keys/999999", + data=json.dumps({"name": "x"}), + content_type="application/json", + ) + self.assertEqual(not_found.status_code, 404) + + def test_delete_key_paths(self) -> None: + key = self._create_key(owner=self.other_user, name="delete-me", key_b64="AAAF") + self.client.force_login(self.user) + + forbidden = self.client.delete(f"/api/v1/keys/{key.id}") + self.assertEqual(forbidden.status_code, 403) + + self._grant_global_perm(self.user, "delete_sshkey") + assign_perm("delete_sshkey", self.user, key) + + with patch("keywarden.api.routers.keys.revoke_certificate_for_key") as mocked_revoke: + deleted = self.client.delete(f"/api/v1/keys/{key.id}") + self.assertEqual(deleted.status_code, 204) + key.refresh_from_db() + self.assertFalse(key.is_active) + self.assertIsNotNone(key.revoked_at) + mocked_revoke.assert_called_once_with(key) + + second_delete = self.client.delete(f"/api/v1/keys/{key.id}") + self.assertEqual(second_delete.status_code, 204) + + missing = self.client.delete("/api/v1/keys/999999") + self.assertEqual(missing.status_code, 404) diff --git a/app/entrypoint.sh b/app/entrypoint.sh index 5b05a34..482ac21 100755 --- a/app/entrypoint.sh +++ b/app/entrypoint.sh @@ -39,5 +39,9 @@ python manage.py ensure_admin # Ensure application log directory exists and is writable by the Django runtime user. mkdir -p /var/log/keywarden chown -R djangouser:djangouser /var/log/keywarden || true +CA_KEY_DIR="${KEYWARDEN_CA_KEY_DIR:-/var/lib/keywarden/ca-keys}" +mkdir -p "$CA_KEY_DIR" +chmod 700 "$CA_KEY_DIR" || true +chown -R djangouser:djangouser "$CA_KEY_DIR" || true exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf diff --git a/app/keywarden/api/routers/access.py b/app/keywarden/api/routers/access.py index edd7ff9..528e07d 100644 --- a/app/keywarden/api/routers/access.py +++ b/app/keywarden/api/routers/access.py @@ -172,9 +172,9 @@ def build_router() -> Router: Auth: required. Permissions: requires `access.change_accessrequest` on the object. Rules: - - Admin/operator (global change) can set status to approved/denied/revoked/cancelled and - update expires_at. - - Non-admin can only set status to cancelled, and only while pending. + - Users with global change permission can set status to + approved/denied/revoked/cancelled and update expires_at. + - Non-global editors can only set status to cancelled, and only while pending. Side effects: updates object permissions for server visibility when approvals or revocations occur. Rationale: this is the core approval/denial path for access control. diff --git a/app/keywarden/api/routers/agent.py b/app/keywarden/api/routers/agent.py index 5608d88..911bd5f 100644 --- a/app/keywarden/api/routers/agent.py +++ b/app/keywarden/api/routers/agent.py @@ -35,7 +35,7 @@ from apps.servers.models import ( hostname_validator, ) from apps.telemetry.models import TelemetryEvent -from keywarden.api.security import AgentPrincipal, AgentTokenAuth, hash_agent_token +from keywarden.api.security import AgentMTLSAuth, AgentPrincipal, hash_agent_token class AuthorizedKeyOut(Schema): @@ -137,7 +137,7 @@ class AgentHeartbeatIn(Schema): def build_router() -> Router: router = Router() - agent_auth = AgentTokenAuth() + agent_auth = AgentMTLSAuth() @router.post("/enroll", response=AgentEnrollOut, auth=None) @csrf_exempt @@ -215,7 +215,7 @@ def build_router() -> Router: def authorized_keys(request: HttpRequest, server_id: int): """Resolve the effective authorized_keys list for a server. - Auth: required (admin/operator via API). + Auth: required (admin-level API permission). Permissions: requires view access to servers and keys. Behavior: uses access request scopes + active SSH keys to produce the exact key list the agent should deploy to the server. @@ -247,7 +247,7 @@ def build_router() -> Router: def account_access(request: HttpRequest, server_id: int): """List accounts that should exist on a server. - Auth: per-agent bearer token issued at enrollment. + Auth: per-agent mTLS certificate presented to nginx and validated server-side. Behavior: resolves active users with approved shell/users scopes. Rationale: drives agent-side account provisioning. """ @@ -270,7 +270,7 @@ def build_router() -> Router: def ssh_ca(request: HttpRequest, server_id: int): """Return the active SSH user CA public key for agents. - Auth: per-agent bearer token issued at enrollment. + Auth: per-agent mTLS certificate presented to nginx and validated server-side. """ _require_agent_access(request, server_id) _ = _get_server_or_404(server_id) @@ -284,7 +284,7 @@ def build_router() -> Router: def sync_report(request: HttpRequest, server_id: int, payload: SyncReportIn = Body(...)): """Record an agent sync report for a server. - Auth: per-agent bearer token issued at enrollment. + Auth: per-agent mTLS certificate presented to nginx and validated server-side. Behavior: stores a telemetry event with counts of applied/revoked keys. Rationale: provides an audit trail of enforcement actions without requiring full log ingestion for every sync cycle. @@ -315,7 +315,7 @@ def build_router() -> Router: def ingest_logs(request: HttpRequest, server_id: int, payload: List[LogEventIn] = Body(...)): """Accept log batches from agents for audit collection. - Auth: per-agent bearer token issued at enrollment. + Auth: per-agent mTLS certificate presented to nginx and validated server-side. Behavior: accepts structured log events for later storage and indexing. Storage: events are persisted in the primary datastore and indexed per server for filtering in the server audit view. @@ -359,7 +359,7 @@ def build_router() -> Router: def log_config(request: HttpRequest, server_id: int): """Return server log-source configuration consumed by the agent. - Auth: per-agent bearer token issued at enrollment. + Auth: per-agent mTLS certificate presented to nginx and validated server-side. Behavior: returns enabled journal/service/file log sources for this server. Default: when no sources are defined, an empty list is returned and the agent falls back to current-boot journald collection. @@ -392,7 +392,7 @@ def build_router() -> Router: def heartbeat(request: HttpRequest, server_id: int, payload: AgentHeartbeatIn = Body(...)): """Update server host metadata (hostname/IPs) reported by the agent. - Auth: per-agent bearer token issued at enrollment. + Auth: per-agent mTLS certificate presented to nginx and validated server-side. Behavior: updates hostname/IPv4/IPv6 when they change (e.g., DHCP). Conflict: unique constraints are enforced; conflicts return 409. Rationale: keeps the server inventory accurate without manual edits. @@ -449,9 +449,6 @@ def _require_agent_access(request: HttpRequest, server_id: int) -> None: principal = getattr(request, "auth", None) if not isinstance(principal, AgentPrincipal): raise HttpError(401, "Unauthorized") - if principal.server_id is None: - # Backward-compatibility path for legacy global token rollout. - return if int(principal.server_id) != int(server_id): raise HttpError(403, "Forbidden") @@ -551,7 +548,7 @@ def _load_agent_ca() -> tuple[x509.Certificate, object, str]: raise HttpError(500, "Agent CA not configured") try: ca_cert = x509.load_pem_x509_certificate(ca.cert_pem.encode("utf-8")) - ca_key = serialization.load_pem_private_key(ca.key_pem.encode("utf-8"), password=None) + ca_key = serialization.load_pem_private_key(ca.get_key_pem().encode("utf-8"), password=None) except (ValueError, TypeError): raise HttpError(500, "Invalid agent CA material") return ca_cert, ca_key, ca.cert_pem diff --git a/app/keywarden/api/routers/users.py b/app/keywarden/api/routers/users.py index 64a5af7..c9171e3 100644 --- a/app/keywarden/api/routers/users.py +++ b/app/keywarden/api/routers/users.py @@ -15,7 +15,7 @@ from apps.core.rbac import ROLE_USER, get_user_role, require_perms, set_user_rol class UserCreateIn(Schema): email: EmailStr password: str = Field(min_length=8) - role: Literal["administrator", "operator", "auditor", "user", "admin"] + role: Literal["administrator", "user", "admin"] class UserListOut(Schema): @@ -34,7 +34,7 @@ class UserDetailOut(Schema): class UserUpdateIn(Schema): password: str | None = Field(default=None, min_length=8) - role: Literal["administrator", "operator", "auditor", "user", "admin"] | None = None + role: Literal["administrator", "user", "admin"] | None = None is_active: bool | None = None @@ -55,7 +55,7 @@ def build_router() -> Router: """Create a platform user and assign a Keywarden role. Auth: required. - Permissions: requires `auth.add_user` (admin/operator). + Permissions: requires `auth.add_user` (administrator). Behavior: uses email as username, hashes the password, and assigns a role which maps to Keywarden group permissions. Rationale: enables automation and external admin workflows; mirrors diff --git a/app/keywarden/api/security.py b/app/keywarden/api/security.py index e17e84b..b103391 100644 --- a/app/keywarden/api/security.py +++ b/app/keywarden/api/security.py @@ -1,10 +1,18 @@ from __future__ import annotations import hashlib +import logging +import time from dataclasses import dataclass +from datetime import datetime, timezone as dt_timezone from secrets import compare_digest from typing import Optional +from urllib.parse import unquote +from cryptography import x509 +from cryptography.exceptions import InvalidSignature +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ec, ed25519, ed448, padding, rsa from django.conf import settings from django.contrib.auth.models import AbstractBaseUser from django.http import HttpRequest @@ -12,7 +20,32 @@ from ninja.security import HttpBearer from rest_framework_simplejwt.authentication import JWTAuthentication from rest_framework_simplejwt.exceptions import InvalidToken, AuthenticationFailed -from apps.servers.models import Server +from apps.servers.models import AgentCertificateAuthority, Server + +logger = logging.getLogger(__name__) +_AGENT_AUTH_LOG_TTL_SECONDS = 60.0 +_agent_auth_log_cache: dict[str, float] = {} + + +def _log_agent_auth_rejection(request: HttpRequest, reason: str, verify: str, cert_present: bool) -> None: + path = str(getattr(request, "path", "") or "") + key = f"{reason}|{path}" + now = time.monotonic() + previous = _agent_auth_log_cache.get(key) + if previous is not None and (now - previous) < _AGENT_AUTH_LOG_TTL_SECONDS: + return + _agent_auth_log_cache[key] = now + forwarded_for = str(request.META.get("HTTP_X_FORWARDED_FOR", "")).strip() + remote_addr = str(request.META.get("REMOTE_ADDR", "")).strip() + logger.warning( + "agent auth rejected: reason=%s path=%s verify=%s cert_present=%s remote_addr=%s x_forwarded_for=%s", + reason, + path or "-", + verify or "-", + "yes" if cert_present else "no", + remote_addr or "-", + forwarded_for or "-", + ) class JWTAuth(HttpBearer): @@ -57,6 +90,86 @@ class AgentTokenAuth(HttpBearer): return None +class AgentMTLSAuth: + """ + Auth via mTLS client certificate details forwarded by nginx. + Requires: + - X-Keywarden-TLS-Client-Verify: SUCCESS or FAILED:* (client cert presented) + - X-Keywarden-TLS-Client-Cert: URL-escaped PEM certificate + """ + + verify_header = "HTTP_X_KEYWARDEN_TLS_CLIENT_VERIFY" + cert_header = "HTTP_X_KEYWARDEN_TLS_CLIENT_CERT" + fingerprint_header = "HTTP_X_KEYWARDEN_TLS_CLIENT_FINGERPRINT" + + def __call__(self, request: HttpRequest) -> Optional["AgentPrincipal"]: + return self.authenticate(request) + + def authenticate(self, request: HttpRequest) -> Optional["AgentPrincipal"]: + verify = str(request.META.get(self.verify_header, "")).strip().upper() + # With nginx `ssl_verify_client optional_no_ca`, a presented client cert + # can arrive as SUCCESS or FAILED: depending on local CA trust. + # Treat NONE/missing as unauthenticated, then enforce trust in-app. + if not verify or verify == "NONE": + _log_agent_auth_rejection(request, "missing_or_none_verify", verify, cert_present=False) + return None + if not (verify == "SUCCESS" or verify.startswith("FAILED")): + _log_agent_auth_rejection(request, "unexpected_verify_state", verify, cert_present=False) + return None + + cert_payload = str(request.META.get(self.cert_header, "")).strip() + if not cert_payload: + _log_agent_auth_rejection(request, "missing_client_cert_header", verify, cert_present=False) + return None + try: + cert_pem = unquote(cert_payload) + cert = x509.load_pem_x509_certificate(cert_pem.encode("utf-8")) + except Exception: + _log_agent_auth_rejection(request, "invalid_client_cert_payload", verify, cert_present=True) + return None + + now = datetime.now(dt_timezone.utc) + if hasattr(cert, "not_valid_before_utc"): + not_valid_before = cert.not_valid_before_utc + not_valid_after = cert.not_valid_after_utc + else: + not_valid_before = cert.not_valid_before.replace(tzinfo=dt_timezone.utc) + not_valid_after = cert.not_valid_after.replace(tzinfo=dt_timezone.utc) + if not_valid_before > now or not_valid_after <= now: + _log_agent_auth_rejection(request, "client_cert_outside_validity_window", verify, cert_present=True) + return None + + cert_fingerprint = cert.fingerprint(hashes.SHA256()).hex() + cert_fingerprint_sha1 = cert.fingerprint(hashes.SHA1()).hex() + header_fingerprint = _normalize_fingerprint(request.META.get(self.fingerprint_header, "")) + if header_fingerprint and not ( + compare_digest(header_fingerprint, cert_fingerprint) + or compare_digest(header_fingerprint, cert_fingerprint_sha1) + ): + _log_agent_auth_rejection(request, "fingerprint_header_mismatch", verify, cert_present=True) + return None + + if not _signed_by_active_agent_ca(cert): + _log_agent_auth_rejection(request, "client_cert_not_signed_by_active_agent_ca", verify, cert_present=True) + return None + + cert_serial = format(cert.serial_number, "x").lower().lstrip("0") or "0" + server = ( + Server.objects.filter(agent_cert_fingerprint=cert_fingerprint) + .only("id", "agent_cert_serial") + .first() + ) + if not server: + _log_agent_auth_rejection(request, "no_server_for_cert_fingerprint", verify, cert_present=True) + return None + expected_serial = (server.agent_cert_serial or "").strip().lower().lstrip("0") or "0" + if expected_serial and expected_serial != cert_serial: + _log_agent_auth_rejection(request, "server_serial_mismatch", verify, cert_present=True) + return None + + return AgentPrincipal(server_id=server.id, mode="mtls") + + @dataclass(frozen=True) class AgentPrincipal: server_id: Optional[int] @@ -75,3 +188,48 @@ def hash_agent_token(value: str) -> str: if not normalized: return "" return hashlib.sha256(normalized.encode("utf-8")).hexdigest() + + +def _normalize_fingerprint(value: object) -> str: + return str(value or "").strip().lower().replace(":", "") + + +def _signed_by_active_agent_ca(cert: x509.Certificate) -> bool: + active_cas = AgentCertificateAuthority.objects.filter( + is_active=True, revoked_at__isnull=True + ).only("cert_pem") + for ca in active_cas: + try: + ca_cert = x509.load_pem_x509_certificate(ca.cert_pem.encode("utf-8")) + except Exception: + continue + if cert.issuer != ca_cert.subject: + continue + if _verify_signed_by(cert, ca_cert): + return True + return False + + +def _verify_signed_by(cert: x509.Certificate, ca_cert: x509.Certificate) -> bool: + public_key = ca_cert.public_key() + try: + if isinstance(public_key, rsa.RSAPublicKey): + public_key.verify( + cert.signature, + cert.tbs_certificate_bytes, + padding.PKCS1v15(), + cert.signature_hash_algorithm, + ) + elif isinstance(public_key, ec.EllipticCurvePublicKey): + public_key.verify( + cert.signature, + cert.tbs_certificate_bytes, + ec.ECDSA(cert.signature_hash_algorithm), + ) + elif isinstance(public_key, (ed25519.Ed25519PublicKey, ed448.Ed448PublicKey)): + public_key.verify(cert.signature, cert.tbs_certificate_bytes) + else: + return False + except (InvalidSignature, ValueError, TypeError): + return False + return True diff --git a/app/keywarden/settings/base.py b/app/keywarden/settings/base.py index d8ddc22..b7986ef 100644 --- a/app/keywarden/settings/base.py +++ b/app/keywarden/settings/base.py @@ -200,6 +200,10 @@ KEYWARDEN_SHELL_PRESERVE_TMP = os.getenv("KEYWARDEN_SHELL_PRESERVE_TMP", "0").st } KEYWARDEN_SHELL_DIAG_TIMEOUT_SECONDS = int(os.getenv("KEYWARDEN_SHELL_DIAG_TIMEOUT_SECONDS", "10")) KEYWARDEN_SHELL_REMOTE_COMMAND = os.getenv("KEYWARDEN_SHELL_REMOTE_COMMAND", "/bin/bash") +KEYWARDEN_SHELL_STRICT_HOST_KEY_CHECKING = os.getenv( + "KEYWARDEN_SHELL_STRICT_HOST_KEY_CHECKING", "accept-new" +).strip().lower() +KEYWARDEN_CA_KEY_DIR = os.getenv("KEYWARDEN_CA_KEY_DIR", "/var/lib/keywarden/ca-keys").strip() KEYWARDEN_ACCOUNT_USERNAME_TEMPLATE = os.getenv( "KEYWARDEN_ACCOUNT_USERNAME_TEMPLATE", "{{username}}_{{user_id}}" ) diff --git a/app/scripts/capture_ui_screenshots.mjs b/app/scripts/capture_ui_screenshots.mjs new file mode 100644 index 0000000..2754091 --- /dev/null +++ b/app/scripts/capture_ui_screenshots.mjs @@ -0,0 +1,182 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { chromium } from "playwright"; + +const outputDirArg = process.argv[2]; +if (!outputDirArg) { + console.error("Usage: node capture_ui_screenshots.mjs "); + process.exit(1); +} + +const outputDir = path.resolve(outputDirArg); +const baseUrl = (process.env.KEYWARDEN_SCREENSHOT_BASE_URL || "https://localhost").replace(/\/+$/, ""); +const username = process.env.KEYWARDEN_ADMIN_USERNAME || "admin"; +const adminEmail = process.env.KEYWARDEN_ADMIN_EMAIL || ""; +const password = process.env.KEYWARDEN_ADMIN_PASSWORD || ""; +const requestedServerId = process.env.KEYWARDEN_SCREENSHOT_SERVER_ID || ""; + +if (!password) { + console.error("KEYWARDEN_ADMIN_PASSWORD is required for authenticated screenshots."); + process.exit(1); +} + +await fs.mkdir(outputDir, { recursive: true }); + +const browser = await chromium.launch({ headless: true }); +const context = await browser.newContext({ + ignoreHTTPSErrors: true, + viewport: { width: 1600, height: 900 }, +}); +const page = await context.newPage(); + +const shots = []; + +async function screenshot(name, label, gotoUrl = null) { + const fileName = `${name}.png`; + const filePath = path.join(outputDir, fileName); + const item = { + name, + label, + requestedUrl: gotoUrl || page.url(), + finalUrl: "", + status: "ok", + file: fileName, + error: "", + }; + try { + if (gotoUrl) { + await page.goto(gotoUrl, { waitUntil: "domcontentloaded", timeout: 45000 }); + } + await page.waitForTimeout(700); + await page.screenshot({ path: filePath, fullPage: true }); + item.finalUrl = page.url(); + } catch (err) { + item.status = "error"; + item.error = String(err); + item.finalUrl = page.url(); + } + shots.push(item); +} + +async function ensureNativeLoginForm() { + if (await page.locator('input[name="username"]').count()) { + return; + } + const nativeLink = page.getByRole("link", { name: /Log in with Keywarden/i }); + if (await nativeLink.count()) { + await nativeLink.first().click(); + await page.waitForLoadState("domcontentloaded"); + return; + } + await page.goto(`${baseUrl}/accounts/login/?native=1`, { waitUntil: "domcontentloaded", timeout: 45000 }); +} + +async function login() { + await screenshot("01-login-entry", "Login entry", `${baseUrl}/accounts/login/`); + const candidates = [...new Set([username, adminEmail].filter(Boolean))]; + if (!candidates.length) { + throw new Error("No login identifier candidates available."); + } + + let loggedIn = false; + for (const identifier of candidates) { + await page.goto(`${baseUrl}/accounts/login/?native=1`, { waitUntil: "domcontentloaded", timeout: 45000 }); + await ensureNativeLoginForm(); + await screenshot("02-login-native", "Native login form"); + + if (!(await page.locator('input[name="username"]').count())) { + throw new Error("Could not find native login form."); + } + + await page.fill('input[name="username"]', identifier); + await page.fill('input[name="password"]', password); + await Promise.all([ + page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 45000 }).catch(() => null), + page.getByRole("button", { name: /Sign in/i }).click(), + ]); + + await page.goto(`${baseUrl}/servers/`, { waitUntil: "domcontentloaded", timeout: 45000 }); + if (!page.url().includes("/accounts/login")) { + loggedIn = true; + break; + } + } + + if (!loggedIn) { + throw new Error("Login failed for all configured identifiers."); + } + + await screenshot("03-dashboard", "Dashboard", `${baseUrl}/servers/`); +} + +async function detectServerId() { + if (requestedServerId) { + return requestedServerId; + } + const hrefs = await page.$$eval("a[href]", (nodes) => nodes.map((node) => node.getAttribute("href") || "")); + for (const href of hrefs) { + const match = href.match(/^\/servers\/(\d+)\/$/); + if (match) { + return match[1]; + } + } + return ""; +} + +try { + await login(); + await screenshot("04-profile", "Profile/key upload", `${baseUrl}/accounts/profile/`); + await screenshot("05-server-dashboard", "Server dashboard", `${baseUrl}/servers/`); + await screenshot("06-admin-dashboard", "Access grant/revocation queue", `${baseUrl}/servers/admin/`); + await screenshot("07-admin-server-reg", "Server registration (Django admin)", `${baseUrl}/admin/servers/enrollmenttoken/`); + + const serverId = await detectServerId(); + if (serverId) { + await screenshot("08-server-detail", "Server detail/heartbeat", `${baseUrl}/servers/${serverId}/`); + await screenshot("09-server-audit", "Server audit logs", `${baseUrl}/servers/${serverId}/audit/`); + await screenshot("10-server-settings", "Server sync/log settings", `${baseUrl}/servers/${serverId}/settings/`); + await screenshot("11-server-shell", "Browser shell interface", `${baseUrl}/servers/${serverId}/shell/`); + await screenshot("12-server-admin", "Server access admin view", `${baseUrl}/servers/${serverId}/admin/`); + } else { + shots.push({ + name: "server-detection", + label: "Server routes skipped", + requestedUrl: `${baseUrl}/servers/`, + finalUrl: page.url(), + status: "error", + file: "", + error: "No server id detected from dashboard links.", + }); + } +} finally { + await context.close(); + await browser.close(); +} + +const manifest = { + generatedAtUtc: new Date().toISOString(), + baseUrl, + username, + shots, +}; +await fs.writeFile(path.join(outputDir, "manifest.json"), JSON.stringify(manifest, null, 2)); + +const mdLines = [ + "# Screenshot Index", + "", + `- Base URL: \`${baseUrl}\``, + `- Generated: \`${manifest.generatedAtUtc}\``, + "", + "| File | Label | Status | URL |", + "|---|---|---|---|", +]; +for (const shot of shots) { + const filePart = shot.file ? `\`${shot.file}\`` : "(none)"; + const urlPart = shot.finalUrl || shot.requestedUrl || ""; + const status = shot.status === "ok" ? "ok" : `error: ${shot.error}`; + mdLines.push(`| ${filePart} | ${shot.label} | ${status} | \`${urlPart}\` |`); +} +mdLines.push(""); +await fs.writeFile(path.join(outputDir, "README.md"), mdLines.join("\n")); + +console.log(`Captured ${shots.filter((shot) => shot.status === "ok").length}/${shots.length} screenshots to ${outputDir}`); diff --git a/app/static/unfold/css/styles.css b/app/static/unfold/css/styles.css index 9835d7b..7f73e3f 100644 --- a/app/static/unfold/css/styles.css +++ b/app/static/unfold/css/styles.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.2.0 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-text-shadow-color:initial;--tw-text-shadow-alpha:100%;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-orange-950:oklch(26.6% .079 36.259);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-50:var(--color-primary-50);--color-primary-100:var(--color-primary-100);--color-primary-200:var(--color-primary-200);--color-primary-300:var(--color-primary-300);--color-primary-400:var(--color-primary-400);--color-primary-500:var(--color-primary-500);--color-primary-600:var(--color-primary-600);--color-primary-700:var(--color-primary-700);--color-primary-800:var(--color-primary-800);--color-primary-900:var(--color-primary-900);--color-primary-950:var(--color-primary-950);--color-base-50:var(--color-base-50);--color-base-100:var(--color-base-100);--color-base-200:var(--color-base-200);--color-base-300:var(--color-base-300);--color-base-400:var(--color-base-400);--color-base-500:var(--color-base-500);--color-base-600:var(--color-base-600);--color-base-700:var(--color-base-700);--color-base-800:var(--color-base-800);--color-base-900:var(--color-base-900);--color-base-950:var(--color-base-950);--color-font-subtle-light:var(--color-font-subtle-light);--color-font-subtle-dark:var(--color-font-subtle-dark);--color-font-default-light:var(--color-font-default-light);--color-font-default-dark:var(--color-font-default-dark);--color-font-important-light:var(--color-font-important-light);--color-font-important-dark:var(--color-font-important-dark)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-base-200,currentColor)}::file-selector-button{border-color:var(--color-base-200,currentColor)}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0{top:calc(var(--spacing) * 0)}.-top-1{top:calc(var(--spacing) * -1)}.-top-1\/2{top:-50%}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-4{top:calc(var(--spacing) * -4)}.-top-5{top:calc(var(--spacing) * -5)}.-top-6{top:calc(var(--spacing) * -6)}.-top-7{top:calc(var(--spacing) * -7)}.-top-8{top:calc(var(--spacing) * -8)}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-3\!{top:calc(var(--spacing) * 3)!important}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.top-7{top:calc(var(--spacing) * 7)}.top-8{top:calc(var(--spacing) * 8)}.top-10{top:calc(var(--spacing) * 10)}.top-\[73px\]{top:73px}.-right-0{right:calc(var(--spacing) * 0)}.-right-1{right:calc(var(--spacing) * -1)}.-right-1\/2{right:-50%}.-right-2{right:calc(var(--spacing) * -2)}.-right-3{right:calc(var(--spacing) * -3)}.-right-4{right:calc(var(--spacing) * -4)}.-right-5{right:calc(var(--spacing) * -5)}.-right-6{right:calc(var(--spacing) * -6)}.-right-7{right:calc(var(--spacing) * -7)}.-right-8{right:calc(var(--spacing) * -8)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-1\/2{right:50%}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-5{right:calc(var(--spacing) * 5)}.right-6{right:calc(var(--spacing) * 6)}.right-7{right:calc(var(--spacing) * 7)}.right-8{right:calc(var(--spacing) * 8)}.-bottom-0{bottom:calc(var(--spacing) * 0)}.-bottom-1{bottom:calc(var(--spacing) * -1)}.-bottom-1\/2{bottom:-50%}.-bottom-2{bottom:calc(var(--spacing) * -2)}.-bottom-3{bottom:calc(var(--spacing) * -3)}.-bottom-4{bottom:calc(var(--spacing) * -4)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.-bottom-7{bottom:calc(var(--spacing) * -7)}.-bottom-8{bottom:calc(var(--spacing) * -8)}.-bottom-px{bottom:-1px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1{bottom:calc(var(--spacing) * 1)}.bottom-1\/2{bottom:50%}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-7{bottom:calc(var(--spacing) * 7)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-\[73px\]{bottom:73px}.-left-0{left:calc(var(--spacing) * 0)}.-left-1{left:calc(var(--spacing) * -1)}.-left-1\/2{left:-50%}.-left-2{left:calc(var(--spacing) * -2)}.-left-3{left:calc(var(--spacing) * -3)}.-left-4{left:calc(var(--spacing) * -4)}.-left-5{left:calc(var(--spacing) * -5)}.-left-6{left:calc(var(--spacing) * -6)}.-left-7{left:calc(var(--spacing) * -7)}.-left-8{left:calc(var(--spacing) * -8)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.left-6{left:calc(var(--spacing) * 6)}.left-7{left:calc(var(--spacing) * 7)}.left-8{left:calc(var(--spacing) * 8)}.left-12{left:calc(var(--spacing) * 12)}.left-\[65px\]{left:65px}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60{z-index:60}.z-100{z-index:100}.z-\[50\]{z-index:50}.z-\[1000\]{z-index:1000}.order-last{order:9999}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-13{grid-column:span 13/span 13}.col-span-14{grid-column:span 14/span 14}.col-span-15{grid-column:span 15/span 15}.col-span-16{grid-column:span 16/span 16}.float-right{float:right}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.\!-m-0{margin:calc(var(--spacing) * 0)!important}.\!-m-1{margin:calc(var(--spacing) * -1)!important}.\!-m-2{margin:calc(var(--spacing) * -2)!important}.\!-m-3{margin:calc(var(--spacing) * -3)!important}.\!-m-4{margin:calc(var(--spacing) * -4)!important}.\!-m-5{margin:calc(var(--spacing) * -5)!important}.\!-m-6{margin:calc(var(--spacing) * -6)!important}.\!-m-7{margin:calc(var(--spacing) * -7)!important}.\!-m-8{margin:calc(var(--spacing) * -8)!important}.\!-m-9{margin:calc(var(--spacing) * -9)!important}.\!-m-10{margin:calc(var(--spacing) * -10)!important}.\!-m-11{margin:calc(var(--spacing) * -11)!important}.\!-m-12{margin:calc(var(--spacing) * -12)!important}.\!-m-13{margin:calc(var(--spacing) * -13)!important}.\!-m-14{margin:calc(var(--spacing) * -14)!important}.\!-m-15{margin:calc(var(--spacing) * -15)!important}.\!-m-16{margin:calc(var(--spacing) * -16)!important}.\!-m-17{margin:calc(var(--spacing) * -17)!important}.\!-m-18{margin:calc(var(--spacing) * -18)!important}.\!-m-19{margin:calc(var(--spacing) * -19)!important}.\!-m-20{margin:calc(var(--spacing) * -20)!important}.\!-m-21{margin:calc(var(--spacing) * -21)!important}.\!-m-22{margin:calc(var(--spacing) * -22)!important}.\!-m-23{margin:calc(var(--spacing) * -23)!important}.\!-m-24{margin:calc(var(--spacing) * -24)!important}.\!-m-px{margin:-1px!important}.\!m-0{margin:calc(var(--spacing) * 0)!important}.\!m-1{margin:calc(var(--spacing) * 1)!important}.\!m-2{margin:calc(var(--spacing) * 2)!important}.\!m-3{margin:calc(var(--spacing) * 3)!important}.\!m-4{margin:calc(var(--spacing) * 4)!important}.\!m-5{margin:calc(var(--spacing) * 5)!important}.\!m-6{margin:calc(var(--spacing) * 6)!important}.\!m-7{margin:calc(var(--spacing) * 7)!important}.\!m-8{margin:calc(var(--spacing) * 8)!important}.\!m-9{margin:calc(var(--spacing) * 9)!important}.\!m-10{margin:calc(var(--spacing) * 10)!important}.\!m-11{margin:calc(var(--spacing) * 11)!important}.\!m-12{margin:calc(var(--spacing) * 12)!important}.\!m-13{margin:calc(var(--spacing) * 13)!important}.\!m-14{margin:calc(var(--spacing) * 14)!important}.\!m-15{margin:calc(var(--spacing) * 15)!important}.\!m-16{margin:calc(var(--spacing) * 16)!important}.\!m-17{margin:calc(var(--spacing) * 17)!important}.\!m-18{margin:calc(var(--spacing) * 18)!important}.\!m-19{margin:calc(var(--spacing) * 19)!important}.\!m-20{margin:calc(var(--spacing) * 20)!important}.\!m-21{margin:calc(var(--spacing) * 21)!important}.\!m-22{margin:calc(var(--spacing) * 22)!important}.\!m-23{margin:calc(var(--spacing) * 23)!important}.\!m-24{margin:calc(var(--spacing) * 24)!important}.\!m-px{margin:1px!important}.-m-0{margin:calc(var(--spacing) * 0)}.-m-1{margin:calc(var(--spacing) * -1)}.-m-2{margin:calc(var(--spacing) * -2)}.-m-3{margin:calc(var(--spacing) * -3)}.-m-4{margin:calc(var(--spacing) * -4)}.-m-5{margin:calc(var(--spacing) * -5)}.-m-6{margin:calc(var(--spacing) * -6)}.-m-7{margin:calc(var(--spacing) * -7)}.-m-8{margin:calc(var(--spacing) * -8)}.-m-9{margin:calc(var(--spacing) * -9)}.-m-10{margin:calc(var(--spacing) * -10)}.-m-11{margin:calc(var(--spacing) * -11)}.-m-12{margin:calc(var(--spacing) * -12)}.-m-13{margin:calc(var(--spacing) * -13)}.-m-14{margin:calc(var(--spacing) * -14)}.-m-15{margin:calc(var(--spacing) * -15)}.-m-16{margin:calc(var(--spacing) * -16)}.-m-17{margin:calc(var(--spacing) * -17)}.-m-18{margin:calc(var(--spacing) * -18)}.-m-19{margin:calc(var(--spacing) * -19)}.-m-20{margin:calc(var(--spacing) * -20)}.-m-21{margin:calc(var(--spacing) * -21)}.-m-22{margin:calc(var(--spacing) * -22)}.-m-23{margin:calc(var(--spacing) * -23)}.-m-24{margin:calc(var(--spacing) * -24)}.-m-px{margin:-1px}.m-0{margin:calc(var(--spacing) * 0)}.m-0\!{margin:calc(var(--spacing) * 0)!important}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.m-6{margin:calc(var(--spacing) * 6)}.m-7{margin:calc(var(--spacing) * 7)}.m-8{margin:calc(var(--spacing) * 8)}.m-9{margin:calc(var(--spacing) * 9)}.m-10{margin:calc(var(--spacing) * 10)}.m-11{margin:calc(var(--spacing) * 11)}.m-12{margin:calc(var(--spacing) * 12)}.m-13{margin:calc(var(--spacing) * 13)}.m-14{margin:calc(var(--spacing) * 14)}.m-15{margin:calc(var(--spacing) * 15)}.m-16{margin:calc(var(--spacing) * 16)}.m-17{margin:calc(var(--spacing) * 17)}.m-18{margin:calc(var(--spacing) * 18)}.m-19{margin:calc(var(--spacing) * 19)}.m-20{margin:calc(var(--spacing) * 20)}.m-21{margin:calc(var(--spacing) * 21)}.m-22{margin:calc(var(--spacing) * 22)}.m-23{margin:calc(var(--spacing) * 23)}.m-24{margin:calc(var(--spacing) * 24)}.m-px{margin:1px}.\!-mx-0{margin-inline:calc(var(--spacing) * 0)!important}.\!-mx-1{margin-inline:calc(var(--spacing) * -1)!important}.\!-mx-2{margin-inline:calc(var(--spacing) * -2)!important}.\!-mx-3{margin-inline:calc(var(--spacing) * -3)!important}.\!-mx-4{margin-inline:calc(var(--spacing) * -4)!important}.\!-mx-5{margin-inline:calc(var(--spacing) * -5)!important}.\!-mx-6{margin-inline:calc(var(--spacing) * -6)!important}.\!-mx-7{margin-inline:calc(var(--spacing) * -7)!important}.\!-mx-8{margin-inline:calc(var(--spacing) * -8)!important}.\!-mx-9{margin-inline:calc(var(--spacing) * -9)!important}.\!-mx-10{margin-inline:calc(var(--spacing) * -10)!important}.\!-mx-11{margin-inline:calc(var(--spacing) * -11)!important}.\!-mx-12{margin-inline:calc(var(--spacing) * -12)!important}.\!-mx-13{margin-inline:calc(var(--spacing) * -13)!important}.\!-mx-14{margin-inline:calc(var(--spacing) * -14)!important}.\!-mx-15{margin-inline:calc(var(--spacing) * -15)!important}.\!-mx-16{margin-inline:calc(var(--spacing) * -16)!important}.\!-mx-17{margin-inline:calc(var(--spacing) * -17)!important}.\!-mx-18{margin-inline:calc(var(--spacing) * -18)!important}.\!-mx-19{margin-inline:calc(var(--spacing) * -19)!important}.\!-mx-20{margin-inline:calc(var(--spacing) * -20)!important}.\!-mx-21{margin-inline:calc(var(--spacing) * -21)!important}.\!-mx-22{margin-inline:calc(var(--spacing) * -22)!important}.\!-mx-23{margin-inline:calc(var(--spacing) * -23)!important}.\!-mx-24{margin-inline:calc(var(--spacing) * -24)!important}.\!-mx-px{margin-inline:-1px!important}.\!mx-0{margin-inline:calc(var(--spacing) * 0)!important}.\!mx-1{margin-inline:calc(var(--spacing) * 1)!important}.\!mx-2{margin-inline:calc(var(--spacing) * 2)!important}.\!mx-3{margin-inline:calc(var(--spacing) * 3)!important}.\!mx-4{margin-inline:calc(var(--spacing) * 4)!important}.\!mx-5{margin-inline:calc(var(--spacing) * 5)!important}.\!mx-6{margin-inline:calc(var(--spacing) * 6)!important}.\!mx-7{margin-inline:calc(var(--spacing) * 7)!important}.\!mx-8{margin-inline:calc(var(--spacing) * 8)!important}.\!mx-9{margin-inline:calc(var(--spacing) * 9)!important}.\!mx-10{margin-inline:calc(var(--spacing) * 10)!important}.\!mx-11{margin-inline:calc(var(--spacing) * 11)!important}.\!mx-12{margin-inline:calc(var(--spacing) * 12)!important}.\!mx-13{margin-inline:calc(var(--spacing) * 13)!important}.\!mx-14{margin-inline:calc(var(--spacing) * 14)!important}.\!mx-15{margin-inline:calc(var(--spacing) * 15)!important}.\!mx-16{margin-inline:calc(var(--spacing) * 16)!important}.\!mx-17{margin-inline:calc(var(--spacing) * 17)!important}.\!mx-18{margin-inline:calc(var(--spacing) * 18)!important}.\!mx-19{margin-inline:calc(var(--spacing) * 19)!important}.\!mx-20{margin-inline:calc(var(--spacing) * 20)!important}.\!mx-21{margin-inline:calc(var(--spacing) * 21)!important}.\!mx-22{margin-inline:calc(var(--spacing) * 22)!important}.\!mx-23{margin-inline:calc(var(--spacing) * 23)!important}.\!mx-24{margin-inline:calc(var(--spacing) * 24)!important}.\!mx-px{margin-inline:1px!important}.-mx-0{margin-inline:calc(var(--spacing) * 0)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-3{margin-inline:calc(var(--spacing) * -3)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-5{margin-inline:calc(var(--spacing) * -5)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.-mx-7{margin-inline:calc(var(--spacing) * -7)}.-mx-8{margin-inline:calc(var(--spacing) * -8)}.-mx-9{margin-inline:calc(var(--spacing) * -9)}.-mx-10{margin-inline:calc(var(--spacing) * -10)}.-mx-11{margin-inline:calc(var(--spacing) * -11)}.-mx-12{margin-inline:calc(var(--spacing) * -12)}.-mx-13{margin-inline:calc(var(--spacing) * -13)}.-mx-14{margin-inline:calc(var(--spacing) * -14)}.-mx-15{margin-inline:calc(var(--spacing) * -15)}.-mx-16{margin-inline:calc(var(--spacing) * -16)}.-mx-17{margin-inline:calc(var(--spacing) * -17)}.-mx-18{margin-inline:calc(var(--spacing) * -18)}.-mx-19{margin-inline:calc(var(--spacing) * -19)}.-mx-20{margin-inline:calc(var(--spacing) * -20)}.-mx-21{margin-inline:calc(var(--spacing) * -21)}.-mx-22{margin-inline:calc(var(--spacing) * -22)}.-mx-23{margin-inline:calc(var(--spacing) * -23)}.-mx-24{margin-inline:calc(var(--spacing) * -24)}.-mx-px{margin-inline:-1px}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-7{margin-inline:calc(var(--spacing) * 7)}.mx-8{margin-inline:calc(var(--spacing) * 8)}.mx-9{margin-inline:calc(var(--spacing) * 9)}.mx-10{margin-inline:calc(var(--spacing) * 10)}.mx-11{margin-inline:calc(var(--spacing) * 11)}.mx-12{margin-inline:calc(var(--spacing) * 12)}.mx-13{margin-inline:calc(var(--spacing) * 13)}.mx-14{margin-inline:calc(var(--spacing) * 14)}.mx-15{margin-inline:calc(var(--spacing) * 15)}.mx-16{margin-inline:calc(var(--spacing) * 16)}.mx-17{margin-inline:calc(var(--spacing) * 17)}.mx-18{margin-inline:calc(var(--spacing) * 18)}.mx-19{margin-inline:calc(var(--spacing) * 19)}.mx-20{margin-inline:calc(var(--spacing) * 20)}.mx-21{margin-inline:calc(var(--spacing) * 21)}.mx-22{margin-inline:calc(var(--spacing) * 22)}.mx-23{margin-inline:calc(var(--spacing) * 23)}.mx-24{margin-inline:calc(var(--spacing) * 24)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.\!-my-0{margin-block:calc(var(--spacing) * 0)!important}.\!-my-1{margin-block:calc(var(--spacing) * -1)!important}.\!-my-2{margin-block:calc(var(--spacing) * -2)!important}.\!-my-3{margin-block:calc(var(--spacing) * -3)!important}.\!-my-4{margin-block:calc(var(--spacing) * -4)!important}.\!-my-5{margin-block:calc(var(--spacing) * -5)!important}.\!-my-6{margin-block:calc(var(--spacing) * -6)!important}.\!-my-7{margin-block:calc(var(--spacing) * -7)!important}.\!-my-8{margin-block:calc(var(--spacing) * -8)!important}.\!-my-9{margin-block:calc(var(--spacing) * -9)!important}.\!-my-10{margin-block:calc(var(--spacing) * -10)!important}.\!-my-11{margin-block:calc(var(--spacing) * -11)!important}.\!-my-12{margin-block:calc(var(--spacing) * -12)!important}.\!-my-13{margin-block:calc(var(--spacing) * -13)!important}.\!-my-14{margin-block:calc(var(--spacing) * -14)!important}.\!-my-15{margin-block:calc(var(--spacing) * -15)!important}.\!-my-16{margin-block:calc(var(--spacing) * -16)!important}.\!-my-17{margin-block:calc(var(--spacing) * -17)!important}.\!-my-18{margin-block:calc(var(--spacing) * -18)!important}.\!-my-19{margin-block:calc(var(--spacing) * -19)!important}.\!-my-20{margin-block:calc(var(--spacing) * -20)!important}.\!-my-21{margin-block:calc(var(--spacing) * -21)!important}.\!-my-22{margin-block:calc(var(--spacing) * -22)!important}.\!-my-23{margin-block:calc(var(--spacing) * -23)!important}.\!-my-24{margin-block:calc(var(--spacing) * -24)!important}.\!-my-px{margin-block:-1px!important}.\!my-0{margin-block:calc(var(--spacing) * 0)!important}.\!my-1{margin-block:calc(var(--spacing) * 1)!important}.\!my-2{margin-block:calc(var(--spacing) * 2)!important}.\!my-3{margin-block:calc(var(--spacing) * 3)!important}.\!my-4{margin-block:calc(var(--spacing) * 4)!important}.\!my-5{margin-block:calc(var(--spacing) * 5)!important}.\!my-6{margin-block:calc(var(--spacing) * 6)!important}.\!my-7{margin-block:calc(var(--spacing) * 7)!important}.\!my-8{margin-block:calc(var(--spacing) * 8)!important}.\!my-9{margin-block:calc(var(--spacing) * 9)!important}.\!my-10{margin-block:calc(var(--spacing) * 10)!important}.\!my-11{margin-block:calc(var(--spacing) * 11)!important}.\!my-12{margin-block:calc(var(--spacing) * 12)!important}.\!my-13{margin-block:calc(var(--spacing) * 13)!important}.\!my-14{margin-block:calc(var(--spacing) * 14)!important}.\!my-15{margin-block:calc(var(--spacing) * 15)!important}.\!my-16{margin-block:calc(var(--spacing) * 16)!important}.\!my-17{margin-block:calc(var(--spacing) * 17)!important}.\!my-18{margin-block:calc(var(--spacing) * 18)!important}.\!my-19{margin-block:calc(var(--spacing) * 19)!important}.\!my-20{margin-block:calc(var(--spacing) * 20)!important}.\!my-21{margin-block:calc(var(--spacing) * 21)!important}.\!my-22{margin-block:calc(var(--spacing) * 22)!important}.\!my-23{margin-block:calc(var(--spacing) * 23)!important}.\!my-24{margin-block:calc(var(--spacing) * 24)!important}.\!my-px{margin-block:1px!important}.-my-0{margin-block:calc(var(--spacing) * 0)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\.5{margin-block:calc(var(--spacing) * -1.5)}.-my-2{margin-block:calc(var(--spacing) * -2)}.-my-3{margin-block:calc(var(--spacing) * -3)}.-my-4{margin-block:calc(var(--spacing) * -4)}.-my-5{margin-block:calc(var(--spacing) * -5)}.-my-6{margin-block:calc(var(--spacing) * -6)}.-my-7{margin-block:calc(var(--spacing) * -7)}.-my-8{margin-block:calc(var(--spacing) * -8)}.-my-9{margin-block:calc(var(--spacing) * -9)}.-my-10{margin-block:calc(var(--spacing) * -10)}.-my-11{margin-block:calc(var(--spacing) * -11)}.-my-12{margin-block:calc(var(--spacing) * -12)}.-my-13{margin-block:calc(var(--spacing) * -13)}.-my-14{margin-block:calc(var(--spacing) * -14)}.-my-15{margin-block:calc(var(--spacing) * -15)}.-my-16{margin-block:calc(var(--spacing) * -16)}.-my-17{margin-block:calc(var(--spacing) * -17)}.-my-18{margin-block:calc(var(--spacing) * -18)}.-my-19{margin-block:calc(var(--spacing) * -19)}.-my-20{margin-block:calc(var(--spacing) * -20)}.-my-21{margin-block:calc(var(--spacing) * -21)}.-my-22{margin-block:calc(var(--spacing) * -22)}.-my-23{margin-block:calc(var(--spacing) * -23)}.-my-24{margin-block:calc(var(--spacing) * -24)}.-my-px{margin-block:-1px}.my-0{margin-block:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-7{margin-block:calc(var(--spacing) * 7)}.my-8{margin-block:calc(var(--spacing) * 8)}.my-9{margin-block:calc(var(--spacing) * 9)}.my-10{margin-block:calc(var(--spacing) * 10)}.my-11{margin-block:calc(var(--spacing) * 11)}.my-12{margin-block:calc(var(--spacing) * 12)}.my-13{margin-block:calc(var(--spacing) * 13)}.my-14{margin-block:calc(var(--spacing) * 14)}.my-15{margin-block:calc(var(--spacing) * 15)}.my-16{margin-block:calc(var(--spacing) * 16)}.my-17{margin-block:calc(var(--spacing) * 17)}.my-18{margin-block:calc(var(--spacing) * 18)}.my-19{margin-block:calc(var(--spacing) * 19)}.my-20{margin-block:calc(var(--spacing) * 20)}.my-21{margin-block:calc(var(--spacing) * 21)}.my-22{margin-block:calc(var(--spacing) * 22)}.my-23{margin-block:calc(var(--spacing) * 23)}.my-24{margin-block:calc(var(--spacing) * 24)}.my-px{margin-block:1px}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.\!-mt-0{margin-top:calc(var(--spacing) * 0)!important}.\!-mt-1{margin-top:calc(var(--spacing) * -1)!important}.\!-mt-2{margin-top:calc(var(--spacing) * -2)!important}.\!-mt-3{margin-top:calc(var(--spacing) * -3)!important}.\!-mt-4{margin-top:calc(var(--spacing) * -4)!important}.\!-mt-5{margin-top:calc(var(--spacing) * -5)!important}.\!-mt-6{margin-top:calc(var(--spacing) * -6)!important}.\!-mt-7{margin-top:calc(var(--spacing) * -7)!important}.\!-mt-8{margin-top:calc(var(--spacing) * -8)!important}.\!-mt-9{margin-top:calc(var(--spacing) * -9)!important}.\!-mt-10{margin-top:calc(var(--spacing) * -10)!important}.\!-mt-11{margin-top:calc(var(--spacing) * -11)!important}.\!-mt-12{margin-top:calc(var(--spacing) * -12)!important}.\!-mt-13{margin-top:calc(var(--spacing) * -13)!important}.\!-mt-14{margin-top:calc(var(--spacing) * -14)!important}.\!-mt-15{margin-top:calc(var(--spacing) * -15)!important}.\!-mt-16{margin-top:calc(var(--spacing) * -16)!important}.\!-mt-17{margin-top:calc(var(--spacing) * -17)!important}.\!-mt-18{margin-top:calc(var(--spacing) * -18)!important}.\!-mt-19{margin-top:calc(var(--spacing) * -19)!important}.\!-mt-20{margin-top:calc(var(--spacing) * -20)!important}.\!-mt-21{margin-top:calc(var(--spacing) * -21)!important}.\!-mt-22{margin-top:calc(var(--spacing) * -22)!important}.\!-mt-23{margin-top:calc(var(--spacing) * -23)!important}.\!-mt-24{margin-top:calc(var(--spacing) * -24)!important}.\!-mt-px{margin-top:-1px!important}.\!mt-0{margin-top:calc(var(--spacing) * 0)!important}.\!mt-1{margin-top:calc(var(--spacing) * 1)!important}.\!mt-2{margin-top:calc(var(--spacing) * 2)!important}.\!mt-3{margin-top:calc(var(--spacing) * 3)!important}.\!mt-4{margin-top:calc(var(--spacing) * 4)!important}.\!mt-5{margin-top:calc(var(--spacing) * 5)!important}.\!mt-6{margin-top:calc(var(--spacing) * 6)!important}.\!mt-7{margin-top:calc(var(--spacing) * 7)!important}.\!mt-8{margin-top:calc(var(--spacing) * 8)!important}.\!mt-9{margin-top:calc(var(--spacing) * 9)!important}.\!mt-10{margin-top:calc(var(--spacing) * 10)!important}.\!mt-11{margin-top:calc(var(--spacing) * 11)!important}.\!mt-12{margin-top:calc(var(--spacing) * 12)!important}.\!mt-13{margin-top:calc(var(--spacing) * 13)!important}.\!mt-14{margin-top:calc(var(--spacing) * 14)!important}.\!mt-15{margin-top:calc(var(--spacing) * 15)!important}.\!mt-16{margin-top:calc(var(--spacing) * 16)!important}.\!mt-17{margin-top:calc(var(--spacing) * 17)!important}.\!mt-18{margin-top:calc(var(--spacing) * 18)!important}.\!mt-19{margin-top:calc(var(--spacing) * 19)!important}.\!mt-20{margin-top:calc(var(--spacing) * 20)!important}.\!mt-21{margin-top:calc(var(--spacing) * 21)!important}.\!mt-22{margin-top:calc(var(--spacing) * 22)!important}.\!mt-23{margin-top:calc(var(--spacing) * 23)!important}.\!mt-24{margin-top:calc(var(--spacing) * 24)!important}.\!mt-px{margin-top:1px!important}.-mt-0{margin-top:calc(var(--spacing) * 0)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-5{margin-top:calc(var(--spacing) * -5)}.-mt-6{margin-top:calc(var(--spacing) * -6)}.-mt-7{margin-top:calc(var(--spacing) * -7)}.-mt-8{margin-top:calc(var(--spacing) * -8)}.-mt-9{margin-top:calc(var(--spacing) * -9)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.-mt-11{margin-top:calc(var(--spacing) * -11)}.-mt-12{margin-top:calc(var(--spacing) * -12)}.-mt-13{margin-top:calc(var(--spacing) * -13)}.-mt-14{margin-top:calc(var(--spacing) * -14)}.-mt-15{margin-top:calc(var(--spacing) * -15)}.-mt-16{margin-top:calc(var(--spacing) * -16)}.-mt-17{margin-top:calc(var(--spacing) * -17)}.-mt-18{margin-top:calc(var(--spacing) * -18)}.-mt-19{margin-top:calc(var(--spacing) * -19)}.-mt-20{margin-top:calc(var(--spacing) * -20)}.-mt-21{margin-top:calc(var(--spacing) * -21)}.-mt-22{margin-top:calc(var(--spacing) * -22)}.-mt-23{margin-top:calc(var(--spacing) * -23)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-9{margin-top:calc(var(--spacing) * 9)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-11{margin-top:calc(var(--spacing) * 11)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-13{margin-top:calc(var(--spacing) * 13)}.mt-14{margin-top:calc(var(--spacing) * 14)}.mt-15{margin-top:calc(var(--spacing) * 15)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-17{margin-top:calc(var(--spacing) * 17)}.mt-18{margin-top:calc(var(--spacing) * 18)}.mt-19{margin-top:calc(var(--spacing) * 19)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-21{margin-top:calc(var(--spacing) * 21)}.mt-22{margin-top:calc(var(--spacing) * 22)}.mt-23{margin-top:calc(var(--spacing) * 23)}.mt-24{margin-top:calc(var(--spacing) * 24)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.\!-mr-0{margin-right:calc(var(--spacing) * 0)!important}.\!-mr-1{margin-right:calc(var(--spacing) * -1)!important}.\!-mr-2{margin-right:calc(var(--spacing) * -2)!important}.\!-mr-3{margin-right:calc(var(--spacing) * -3)!important}.\!-mr-4{margin-right:calc(var(--spacing) * -4)!important}.\!-mr-5{margin-right:calc(var(--spacing) * -5)!important}.\!-mr-6{margin-right:calc(var(--spacing) * -6)!important}.\!-mr-7{margin-right:calc(var(--spacing) * -7)!important}.\!-mr-8{margin-right:calc(var(--spacing) * -8)!important}.\!-mr-9{margin-right:calc(var(--spacing) * -9)!important}.\!-mr-10{margin-right:calc(var(--spacing) * -10)!important}.\!-mr-11{margin-right:calc(var(--spacing) * -11)!important}.\!-mr-12{margin-right:calc(var(--spacing) * -12)!important}.\!-mr-13{margin-right:calc(var(--spacing) * -13)!important}.\!-mr-14{margin-right:calc(var(--spacing) * -14)!important}.\!-mr-15{margin-right:calc(var(--spacing) * -15)!important}.\!-mr-16{margin-right:calc(var(--spacing) * -16)!important}.\!-mr-17{margin-right:calc(var(--spacing) * -17)!important}.\!-mr-18{margin-right:calc(var(--spacing) * -18)!important}.\!-mr-19{margin-right:calc(var(--spacing) * -19)!important}.\!-mr-20{margin-right:calc(var(--spacing) * -20)!important}.\!-mr-21{margin-right:calc(var(--spacing) * -21)!important}.\!-mr-22{margin-right:calc(var(--spacing) * -22)!important}.\!-mr-23{margin-right:calc(var(--spacing) * -23)!important}.\!-mr-24{margin-right:calc(var(--spacing) * -24)!important}.\!-mr-px{margin-right:-1px!important}.\!mr-0{margin-right:calc(var(--spacing) * 0)!important}.\!mr-1{margin-right:calc(var(--spacing) * 1)!important}.\!mr-2{margin-right:calc(var(--spacing) * 2)!important}.\!mr-3{margin-right:calc(var(--spacing) * 3)!important}.\!mr-4{margin-right:calc(var(--spacing) * 4)!important}.\!mr-5{margin-right:calc(var(--spacing) * 5)!important}.\!mr-6{margin-right:calc(var(--spacing) * 6)!important}.\!mr-7{margin-right:calc(var(--spacing) * 7)!important}.\!mr-8{margin-right:calc(var(--spacing) * 8)!important}.\!mr-9{margin-right:calc(var(--spacing) * 9)!important}.\!mr-10{margin-right:calc(var(--spacing) * 10)!important}.\!mr-11{margin-right:calc(var(--spacing) * 11)!important}.\!mr-12{margin-right:calc(var(--spacing) * 12)!important}.\!mr-13{margin-right:calc(var(--spacing) * 13)!important}.\!mr-14{margin-right:calc(var(--spacing) * 14)!important}.\!mr-15{margin-right:calc(var(--spacing) * 15)!important}.\!mr-16{margin-right:calc(var(--spacing) * 16)!important}.\!mr-17{margin-right:calc(var(--spacing) * 17)!important}.\!mr-18{margin-right:calc(var(--spacing) * 18)!important}.\!mr-19{margin-right:calc(var(--spacing) * 19)!important}.\!mr-20{margin-right:calc(var(--spacing) * 20)!important}.\!mr-21{margin-right:calc(var(--spacing) * 21)!important}.\!mr-22{margin-right:calc(var(--spacing) * 22)!important}.\!mr-23{margin-right:calc(var(--spacing) * 23)!important}.\!mr-24{margin-right:calc(var(--spacing) * 24)!important}.\!mr-px{margin-right:1px!important}.-mr-0{margin-right:calc(var(--spacing) * 0)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-1\.5{margin-right:calc(var(--spacing) * -1.5)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.-mr-3{margin-right:calc(var(--spacing) * -3)}.-mr-4{margin-right:calc(var(--spacing) * -4)}.-mr-5{margin-right:calc(var(--spacing) * -5)}.-mr-6{margin-right:calc(var(--spacing) * -6)}.-mr-7{margin-right:calc(var(--spacing) * -7)}.-mr-8{margin-right:calc(var(--spacing) * -8)}.-mr-9{margin-right:calc(var(--spacing) * -9)}.-mr-10{margin-right:calc(var(--spacing) * -10)}.-mr-11{margin-right:calc(var(--spacing) * -11)}.-mr-12{margin-right:calc(var(--spacing) * -12)}.-mr-13{margin-right:calc(var(--spacing) * -13)}.-mr-14{margin-right:calc(var(--spacing) * -14)}.-mr-15{margin-right:calc(var(--spacing) * -15)}.-mr-16{margin-right:calc(var(--spacing) * -16)}.-mr-17{margin-right:calc(var(--spacing) * -17)}.-mr-18{margin-right:calc(var(--spacing) * -18)}.-mr-19{margin-right:calc(var(--spacing) * -19)}.-mr-20{margin-right:calc(var(--spacing) * -20)}.-mr-21{margin-right:calc(var(--spacing) * -21)}.-mr-22{margin-right:calc(var(--spacing) * -22)}.-mr-23{margin-right:calc(var(--spacing) * -23)}.-mr-24{margin-right:calc(var(--spacing) * -24)}.-mr-px{margin-right:-1px}.mr-0{margin-right:calc(var(--spacing) * 0)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mr-5{margin-right:calc(var(--spacing) * 5)}.mr-6{margin-right:calc(var(--spacing) * 6)}.mr-7{margin-right:calc(var(--spacing) * 7)}.mr-8{margin-right:calc(var(--spacing) * 8)}.mr-9{margin-right:calc(var(--spacing) * 9)}.mr-10{margin-right:calc(var(--spacing) * 10)}.mr-11{margin-right:calc(var(--spacing) * 11)}.mr-12{margin-right:calc(var(--spacing) * 12)}.mr-13{margin-right:calc(var(--spacing) * 13)}.mr-14{margin-right:calc(var(--spacing) * 14)}.mr-15{margin-right:calc(var(--spacing) * 15)}.mr-16{margin-right:calc(var(--spacing) * 16)}.mr-17{margin-right:calc(var(--spacing) * 17)}.mr-18{margin-right:calc(var(--spacing) * 18)}.mr-19{margin-right:calc(var(--spacing) * 19)}.mr-20{margin-right:calc(var(--spacing) * 20)}.mr-21{margin-right:calc(var(--spacing) * 21)}.mr-22{margin-right:calc(var(--spacing) * 22)}.mr-23{margin-right:calc(var(--spacing) * 23)}.mr-24{margin-right:calc(var(--spacing) * 24)}.mr-\[12px\]{margin-right:12px}.mr-\[17px\]{margin-right:17px}.mr-auto{margin-right:auto}.mr-px{margin-right:1px}.\!-mb-0{margin-bottom:calc(var(--spacing) * 0)!important}.\!-mb-1{margin-bottom:calc(var(--spacing) * -1)!important}.\!-mb-2{margin-bottom:calc(var(--spacing) * -2)!important}.\!-mb-3{margin-bottom:calc(var(--spacing) * -3)!important}.\!-mb-4{margin-bottom:calc(var(--spacing) * -4)!important}.\!-mb-5{margin-bottom:calc(var(--spacing) * -5)!important}.\!-mb-6{margin-bottom:calc(var(--spacing) * -6)!important}.\!-mb-7{margin-bottom:calc(var(--spacing) * -7)!important}.\!-mb-8{margin-bottom:calc(var(--spacing) * -8)!important}.\!-mb-9{margin-bottom:calc(var(--spacing) * -9)!important}.\!-mb-10{margin-bottom:calc(var(--spacing) * -10)!important}.\!-mb-11{margin-bottom:calc(var(--spacing) * -11)!important}.\!-mb-12{margin-bottom:calc(var(--spacing) * -12)!important}.\!-mb-13{margin-bottom:calc(var(--spacing) * -13)!important}.\!-mb-14{margin-bottom:calc(var(--spacing) * -14)!important}.\!-mb-15{margin-bottom:calc(var(--spacing) * -15)!important}.\!-mb-16{margin-bottom:calc(var(--spacing) * -16)!important}.\!-mb-17{margin-bottom:calc(var(--spacing) * -17)!important}.\!-mb-18{margin-bottom:calc(var(--spacing) * -18)!important}.\!-mb-19{margin-bottom:calc(var(--spacing) * -19)!important}.\!-mb-20{margin-bottom:calc(var(--spacing) * -20)!important}.\!-mb-21{margin-bottom:calc(var(--spacing) * -21)!important}.\!-mb-22{margin-bottom:calc(var(--spacing) * -22)!important}.\!-mb-23{margin-bottom:calc(var(--spacing) * -23)!important}.\!-mb-24{margin-bottom:calc(var(--spacing) * -24)!important}.\!-mb-px{margin-bottom:-1px!important}.\!mb-0{margin-bottom:calc(var(--spacing) * 0)!important}.\!mb-1{margin-bottom:calc(var(--spacing) * 1)!important}.\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.\!mb-3{margin-bottom:calc(var(--spacing) * 3)!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.\!mb-5{margin-bottom:calc(var(--spacing) * 5)!important}.\!mb-6{margin-bottom:calc(var(--spacing) * 6)!important}.\!mb-7{margin-bottom:calc(var(--spacing) * 7)!important}.\!mb-8{margin-bottom:calc(var(--spacing) * 8)!important}.\!mb-9{margin-bottom:calc(var(--spacing) * 9)!important}.\!mb-10{margin-bottom:calc(var(--spacing) * 10)!important}.\!mb-11{margin-bottom:calc(var(--spacing) * 11)!important}.\!mb-12{margin-bottom:calc(var(--spacing) * 12)!important}.\!mb-13{margin-bottom:calc(var(--spacing) * 13)!important}.\!mb-14{margin-bottom:calc(var(--spacing) * 14)!important}.\!mb-15{margin-bottom:calc(var(--spacing) * 15)!important}.\!mb-16{margin-bottom:calc(var(--spacing) * 16)!important}.\!mb-17{margin-bottom:calc(var(--spacing) * 17)!important}.\!mb-18{margin-bottom:calc(var(--spacing) * 18)!important}.\!mb-19{margin-bottom:calc(var(--spacing) * 19)!important}.\!mb-20{margin-bottom:calc(var(--spacing) * 20)!important}.\!mb-21{margin-bottom:calc(var(--spacing) * 21)!important}.\!mb-22{margin-bottom:calc(var(--spacing) * 22)!important}.\!mb-23{margin-bottom:calc(var(--spacing) * 23)!important}.\!mb-24{margin-bottom:calc(var(--spacing) * 24)!important}.\!mb-px{margin-bottom:1px!important}.-mb-0{margin-bottom:calc(var(--spacing) * 0)}.-mb-1{margin-bottom:calc(var(--spacing) * -1)}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.-mb-3{margin-bottom:calc(var(--spacing) * -3)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.-mb-5{margin-bottom:calc(var(--spacing) * -5)}.-mb-6{margin-bottom:calc(var(--spacing) * -6)}.-mb-7{margin-bottom:calc(var(--spacing) * -7)}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-9{margin-bottom:calc(var(--spacing) * -9)}.-mb-10{margin-bottom:calc(var(--spacing) * -10)}.-mb-11{margin-bottom:calc(var(--spacing) * -11)}.-mb-12{margin-bottom:calc(var(--spacing) * -12)}.-mb-13{margin-bottom:calc(var(--spacing) * -13)}.-mb-14{margin-bottom:calc(var(--spacing) * -14)}.-mb-15{margin-bottom:calc(var(--spacing) * -15)}.-mb-16{margin-bottom:calc(var(--spacing) * -16)}.-mb-17{margin-bottom:calc(var(--spacing) * -17)}.-mb-18{margin-bottom:calc(var(--spacing) * -18)}.-mb-19{margin-bottom:calc(var(--spacing) * -19)}.-mb-20{margin-bottom:calc(var(--spacing) * -20)}.-mb-21{margin-bottom:calc(var(--spacing) * -21)}.-mb-22{margin-bottom:calc(var(--spacing) * -22)}.-mb-23{margin-bottom:calc(var(--spacing) * -23)}.-mb-24{margin-bottom:calc(var(--spacing) * -24)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-9{margin-bottom:calc(var(--spacing) * 9)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-11{margin-bottom:calc(var(--spacing) * 11)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-13{margin-bottom:calc(var(--spacing) * 13)}.mb-14{margin-bottom:calc(var(--spacing) * 14)}.mb-15{margin-bottom:calc(var(--spacing) * 15)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.mb-17{margin-bottom:calc(var(--spacing) * 17)}.mb-18{margin-bottom:calc(var(--spacing) * 18)}.mb-19{margin-bottom:calc(var(--spacing) * 19)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.mb-21{margin-bottom:calc(var(--spacing) * 21)}.mb-22{margin-bottom:calc(var(--spacing) * 22)}.mb-23{margin-bottom:calc(var(--spacing) * 23)}.mb-24{margin-bottom:calc(var(--spacing) * 24)}.mb-px{margin-bottom:1px}.\!-ml-0{margin-left:calc(var(--spacing) * 0)!important}.\!-ml-1{margin-left:calc(var(--spacing) * -1)!important}.\!-ml-2{margin-left:calc(var(--spacing) * -2)!important}.\!-ml-3{margin-left:calc(var(--spacing) * -3)!important}.\!-ml-4{margin-left:calc(var(--spacing) * -4)!important}.\!-ml-5{margin-left:calc(var(--spacing) * -5)!important}.\!-ml-6{margin-left:calc(var(--spacing) * -6)!important}.\!-ml-7{margin-left:calc(var(--spacing) * -7)!important}.\!-ml-8{margin-left:calc(var(--spacing) * -8)!important}.\!-ml-9{margin-left:calc(var(--spacing) * -9)!important}.\!-ml-10{margin-left:calc(var(--spacing) * -10)!important}.\!-ml-11{margin-left:calc(var(--spacing) * -11)!important}.\!-ml-12{margin-left:calc(var(--spacing) * -12)!important}.\!-ml-13{margin-left:calc(var(--spacing) * -13)!important}.\!-ml-14{margin-left:calc(var(--spacing) * -14)!important}.\!-ml-15{margin-left:calc(var(--spacing) * -15)!important}.\!-ml-16{margin-left:calc(var(--spacing) * -16)!important}.\!-ml-17{margin-left:calc(var(--spacing) * -17)!important}.\!-ml-18{margin-left:calc(var(--spacing) * -18)!important}.\!-ml-19{margin-left:calc(var(--spacing) * -19)!important}.\!-ml-20{margin-left:calc(var(--spacing) * -20)!important}.\!-ml-21{margin-left:calc(var(--spacing) * -21)!important}.\!-ml-22{margin-left:calc(var(--spacing) * -22)!important}.\!-ml-23{margin-left:calc(var(--spacing) * -23)!important}.\!-ml-24{margin-left:calc(var(--spacing) * -24)!important}.\!-ml-px{margin-left:-1px!important}.\!ml-0{margin-left:calc(var(--spacing) * 0)!important}.\!ml-1{margin-left:calc(var(--spacing) * 1)!important}.\!ml-2{margin-left:calc(var(--spacing) * 2)!important}.\!ml-3{margin-left:calc(var(--spacing) * 3)!important}.\!ml-4{margin-left:calc(var(--spacing) * 4)!important}.\!ml-5{margin-left:calc(var(--spacing) * 5)!important}.\!ml-6{margin-left:calc(var(--spacing) * 6)!important}.\!ml-7{margin-left:calc(var(--spacing) * 7)!important}.\!ml-8{margin-left:calc(var(--spacing) * 8)!important}.\!ml-9{margin-left:calc(var(--spacing) * 9)!important}.\!ml-10{margin-left:calc(var(--spacing) * 10)!important}.\!ml-11{margin-left:calc(var(--spacing) * 11)!important}.\!ml-12{margin-left:calc(var(--spacing) * 12)!important}.\!ml-13{margin-left:calc(var(--spacing) * 13)!important}.\!ml-14{margin-left:calc(var(--spacing) * 14)!important}.\!ml-15{margin-left:calc(var(--spacing) * 15)!important}.\!ml-16{margin-left:calc(var(--spacing) * 16)!important}.\!ml-17{margin-left:calc(var(--spacing) * 17)!important}.\!ml-18{margin-left:calc(var(--spacing) * 18)!important}.\!ml-19{margin-left:calc(var(--spacing) * 19)!important}.\!ml-20{margin-left:calc(var(--spacing) * 20)!important}.\!ml-21{margin-left:calc(var(--spacing) * 21)!important}.\!ml-22{margin-left:calc(var(--spacing) * 22)!important}.\!ml-23{margin-left:calc(var(--spacing) * 23)!important}.\!ml-24{margin-left:calc(var(--spacing) * 24)!important}.\!ml-px{margin-left:1px!important}.-ml-0{margin-left:calc(var(--spacing) * 0)}.-ml-0\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-5{margin-left:calc(var(--spacing) * -5)}.-ml-6{margin-left:calc(var(--spacing) * -6)}.-ml-7{margin-left:calc(var(--spacing) * -7)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-9{margin-left:calc(var(--spacing) * -9)}.-ml-10{margin-left:calc(var(--spacing) * -10)}.-ml-11{margin-left:calc(var(--spacing) * -11)}.-ml-12{margin-left:calc(var(--spacing) * -12)}.-ml-13{margin-left:calc(var(--spacing) * -13)}.-ml-14{margin-left:calc(var(--spacing) * -14)}.-ml-15{margin-left:calc(var(--spacing) * -15)}.-ml-16{margin-left:calc(var(--spacing) * -16)}.-ml-17{margin-left:calc(var(--spacing) * -17)}.-ml-18{margin-left:calc(var(--spacing) * -18)}.-ml-19{margin-left:calc(var(--spacing) * -19)}.-ml-20{margin-left:calc(var(--spacing) * -20)}.-ml-21{margin-left:calc(var(--spacing) * -21)}.-ml-22{margin-left:calc(var(--spacing) * -22)}.-ml-23{margin-left:calc(var(--spacing) * -23)}.-ml-24{margin-left:calc(var(--spacing) * -24)}.-ml-px{margin-left:-1px}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-7{margin-left:calc(var(--spacing) * 7)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-11{margin-left:calc(var(--spacing) * 11)}.ml-12{margin-left:calc(var(--spacing) * 12)}.ml-13{margin-left:calc(var(--spacing) * 13)}.ml-14{margin-left:calc(var(--spacing) * 14)}.ml-15{margin-left:calc(var(--spacing) * 15)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-17{margin-left:calc(var(--spacing) * 17)}.ml-18{margin-left:calc(var(--spacing) * 18)}.ml-19{margin-left:calc(var(--spacing) * 19)}.ml-20{margin-left:calc(var(--spacing) * 20)}.ml-21{margin-left:calc(var(--spacing) * 21)}.ml-22{margin-left:calc(var(--spacing) * 22)}.ml-23{margin-left:calc(var(--spacing) * 23)}.ml-24{margin-left:calc(var(--spacing) * 24)}.ml-\[8px\]{margin-left:8px}.ml-\[12px\]{margin-left:12px}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.material-symbols-outlined{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.\!hidden{display:none!important}.block{display:block}.block\!{display:block!important}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content;field-sizing:content}.aspect-square{aspect-ratio:1}.size-full{width:100%;height:100%}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-9\.5{height:calc(var(--spacing) * 9.5)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-72{height:calc(var(--spacing) * 72)}.h-\[16px\]{height:16px}.h-\[18px\]{height:18px}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[36px\]{height:36px}.h-\[38px\]{height:38px}.h-\[45px\]{height:45px}.h-\[55px\]{height:55px}.h-\[64px\]{height:64px}.h-\[65px\]{height:65px}.h-\[66px\]{height:66px}.h-full{height:100%}.h-px{height:1px}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[30px\]{max-height:30px}.max-h-screen{max-height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-1{min-height:calc(var(--spacing) * 1)}.min-h-2{min-height:calc(var(--spacing) * 2)}.min-h-3{min-height:calc(var(--spacing) * 3)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-\[38px\]{min-height:38px}.min-h-\[59px\]{min-height:59px}.min-h-\[62\.5px\]{min-height:62.5px}.min-h-\[64px\]{min-height:64px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-1\/6{width:16.6667%}.w-1\/7{width:14.2857%}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-2\/4{width:50%}.w-2\/5{width:40%}.w-2\/6{width:33.3333%}.w-2\/7{width:28.5714%}.w-3{width:calc(var(--spacing) * 3)}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-3\/6{width:50%}.w-3\/7{width:42.8571%}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-4\/6{width:66.6667%}.w-4\/7{width:57.1429%}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-5\/7{width:71.4286%}.w-6{width:calc(var(--spacing) * 6)}.w-6\/7{width:85.7143%}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[0px\]{width:0}.w-\[16px\]{width:16px}.w-\[18px\]{width:18px}.w-\[26px\]{width:26px}.w-\[30px\]{width:30px}.w-\[34px\]{width:34px}.w-\[36px\]{width:36px}.w-\[38px\]{width:38px}.w-\[65px\]\!{width:65px!important}.w-\[264px\]{width:264px}.w-\[288px\]{width:288px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.\!max-w-2xl{max-width:var(--container-2xl)!important}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-8{max-width:calc(var(--spacing) * 8)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-1{min-width:calc(var(--spacing) * 1)}.min-w-2{min-width:calc(var(--spacing) * 2)}.min-w-3{min-width:calc(var(--spacing) * 3)}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-20{min-width:calc(var(--spacing) * 20)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-72{min-width:calc(var(--spacing) * 72)}.min-w-\[18px\]{min-width:18px}.min-w-\[26px\]{min-width:26px}.min-w-\[30px\]{min-width:30px}.min-w-\[34px\]{min-width:34px}.min-w-\[38px\]{min-width:38px}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-1\/2{flex-basis:50%}.basis-1\/3{flex-basis:33.3333%}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-none{border-spacing:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/3{--tw-translate-x:calc(calc(1 / 3 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.-rotate-90\!{rotate:-90deg!important}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-270\!{rotate:270deg!important}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transform\!{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-11{gap:calc(var(--spacing) * 11)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-13{gap:calc(var(--spacing) * 13)}.gap-14{gap:calc(var(--spacing) * 14)}.gap-15{gap:calc(var(--spacing) * 15)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded-full{border-radius:3.40282e38px!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[1px\]{border-radius:1px}.rounded-\[4px\]{border-radius:4px}.rounded-default{border-radius:var(--border-radius,6px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-default{border-top-left-radius:var(--border-radius,6px);border-top-right-radius:var(--border-radius,6px)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-default{border-top-left-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-default{border-top-right-radius:var(--border-radius,6px);border-bottom-right-radius:var(--border-radius,6px)}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-default{border-bottom-right-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border\!{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-0{border-style:var(--tw-border-style);border-width:0}.border-0\!{border-style:var(--tw-border-style)!important;border-width:0!important}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-t-0\!{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-base-50{border-color:var(--color-base-50)}.border-base-100{border-color:var(--color-base-100)}.border-base-200{border-color:var(--color-base-200)}.border-base-200\!{border-color:var(--color-base-200)!important}.border-base-300{border-color:var(--color-base-300)}.border-base-400,.border-base-400\/10{border-color:var(--color-base-400)}@supports (color:color-mix(in lab, red, red)){.border-base-400\/10{border-color:color-mix(in oklab, var(--color-base-400) 10%, transparent)}}.border-base-500{border-color:var(--color-base-500)}.border-base-600{border-color:var(--color-base-600)}.border-base-700{border-color:var(--color-base-700)}.border-base-800{border-color:var(--color-base-800)}.border-base-900{border-color:var(--color-base-900)}.border-base-950{border-color:var(--color-base-950)}.border-blue-700{border-color:var(--color-blue-700)}.border-green-700{border-color:var(--color-green-700)}.border-orange-700{border-color:var(--color-orange-700)}.border-primary-600{border-color:var(--color-primary-600)}.border-primary-700{border-color:var(--color-primary-700)}.border-red-200{border-color:var(--color-red-200)}.border-red-600{border-color:var(--color-red-600)}.border-red-700{border-color:var(--color-red-700)}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}@media (hover:hover){.data-row:hover{background-color:var(--color-base-100)}}@media not print{@media (hover:hover){.data-row:where(.dark,.dark *):hover{background-color:var(--color-base-50)}@supports (color:color-mix(in lab, red, red)){.data-row:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-base-50) 4%, transparent)}}}}.\!bg-primary-50{background-color:var(--color-primary-50)!important}.\!bg-primary-100{background-color:var(--color-primary-100)!important}.\!bg-primary-200{background-color:var(--color-primary-200)!important}.\!bg-primary-300{background-color:var(--color-primary-300)!important}.\!bg-primary-400{background-color:var(--color-primary-400)!important}.\!bg-primary-500{background-color:var(--color-primary-500)!important}.\!bg-primary-600{background-color:var(--color-primary-600)!important}.\!bg-primary-700{background-color:var(--color-primary-700)!important}.\!bg-primary-800{background-color:var(--color-primary-800)!important}.\!bg-primary-900{background-color:var(--color-primary-900)!important}.\!bg-primary-950{background-color:var(--color-primary-950)!important}.bg-base-50{background-color:var(--color-base-50)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/10{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/10{background-color:color-mix(in oklab, var(--color-base-200) 10%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-base-400{background-color:var(--color-base-400)}.bg-base-500,.bg-base-500\/8{background-color:var(--color-base-500)}@supports (color:color-mix(in lab, red, red)){.bg-base-500\/8{background-color:color-mix(in oklab, var(--color-base-500) 8%, transparent)}}.bg-base-600{background-color:var(--color-base-600)}.bg-base-700{background-color:var(--color-base-700)}.bg-base-800{background-color:var(--color-base-800)}.bg-base-900,.bg-base-900\/80{background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.bg-base-900\/80{background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}.bg-base-950{background-color:var(--color-base-950)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-700{background-color:var(--color-blue-700)}.bg-blue-800{background-color:var(--color-blue-800)}.bg-blue-900{background-color:var(--color-blue-900)}.bg-blue-950{background-color:var(--color-blue-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-green-300{background-color:var(--color-green-300)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-700{background-color:var(--color-green-700)}.bg-green-800{background-color:var(--color-green-800)}.bg-green-900{background-color:var(--color-green-900)}.bg-green-950{background-color:var(--color-green-950)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-200{background-color:var(--color-orange-200)}.bg-orange-300{background-color:var(--color-orange-300)}.bg-orange-400{background-color:var(--color-orange-400)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-orange-700{background-color:var(--color-orange-700)}.bg-orange-800{background-color:var(--color-orange-800)}.bg-orange-900{background-color:var(--color-orange-900)}.bg-orange-950{background-color:var(--color-orange-950)}.bg-primary-50{background-color:var(--color-primary-50)}.bg-primary-100{background-color:var(--color-primary-100)}.bg-primary-200{background-color:var(--color-primary-200)}.bg-primary-300{background-color:var(--color-primary-300)}.bg-primary-400{background-color:var(--color-primary-400)}.bg-primary-500{background-color:var(--color-primary-500)}.bg-primary-600{background-color:var(--color-primary-600)}.bg-primary-700{background-color:var(--color-primary-700)}.bg-primary-800{background-color:var(--color-primary-800)}.bg-primary-900{background-color:var(--color-primary-900)}.bg-primary-950{background-color:var(--color-primary-950)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-300{background-color:var(--color-red-300)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-700{background-color:var(--color-red-700)}.bg-red-800{background-color:var(--color-red-800)}.bg-red-900{background-color:var(--color-red-900)}.bg-red-950{background-color:var(--color-red-950)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\!{background-color:var(--color-white)!important}.bg-white\/0{background-color:#0000}@supports (color:color-mix(in lab, red, red)){.bg-white\/0{background-color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-white\/70{background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-white\/100{background-color:var(--color-white)}.bg-white\/\[\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[\.06\]{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-bl{--tw-gradient-position:to bottom left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-bl{--tw-gradient-position:to bottom left in oklab}}.bg-linear-to-bl{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-l{--tw-gradient-position:to left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-l{--tw-gradient-position:to left in oklab}}.bg-linear-to-l{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-t{--tw-gradient-position:to top}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-t{--tw-gradient-position:to top in oklab}}.bg-linear-to-t{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-tl{--tw-gradient-position:to top left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-tl{--tw-gradient-position:to top left in oklab}}.bg-linear-to-tl{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-tr{--tw-gradient-position:to top right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-tr{--tw-gradient-position:to top right in oklab}}.bg-linear-to-tr{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-striped{background-image:repeating-linear-gradient(45deg, var(--color-base-100), 0px, var(--color-base-100) 1px, transparent 2px, transparent 10px)}@media not print{.bg-striped:where(.dark,.dark *){background-image:repeating-linear-gradient(45deg, var(--color-base-800) 0px, var(--color-base-800) 1px, transparent 2px, transparent 10px)}}.bg-none{background-image:none}.from-base-50{--tw-gradient-from:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-200{--tw-gradient-from:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-300{--tw-gradient-from:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-400{--tw-gradient-from:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-500{--tw-gradient-from:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-600{--tw-gradient-from:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-700{--tw-gradient-from:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-800{--tw-gradient-from:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-900{--tw-gradient-from:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-950{--tw-gradient-from:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-50{--tw-gradient-from:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-100{--tw-gradient-from:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-200{--tw-gradient-from:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-300{--tw-gradient-from:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-400{--tw-gradient-from:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-500{--tw-gradient-from:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-600{--tw-gradient-from:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-700{--tw-gradient-from:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-800{--tw-gradient-from:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-900{--tw-gradient-from:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-950{--tw-gradient-from:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-50{--tw-gradient-to:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-100{--tw-gradient-to:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-200{--tw-gradient-to:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-400{--tw-gradient-to:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-500{--tw-gradient-to:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-600{--tw-gradient-to:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-700{--tw-gradient-to:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-800{--tw-gradient-to:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-900{--tw-gradient-to:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-950{--tw-gradient-to:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-50{--tw-gradient-to:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-100{--tw-gradient-to:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-200{--tw-gradient-to:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-300{--tw-gradient-to:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-400{--tw-gradient-to:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-500{--tw-gradient-to:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-600{--tw-gradient-to:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-700{--tw-gradient-to:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-800{--tw-gradient-to:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-900{--tw-gradient-to:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-950{--tw-gradient-to:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-contain{background-size:contain}.bg-cover{background-size:cover}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.object-cover{object-fit:cover}.\!p-0{padding:calc(var(--spacing) * 0)!important}.\!p-1{padding:calc(var(--spacing) * 1)!important}.\!p-2{padding:calc(var(--spacing) * 2)!important}.\!p-3{padding:calc(var(--spacing) * 3)!important}.\!p-4{padding:calc(var(--spacing) * 4)!important}.\!p-5{padding:calc(var(--spacing) * 5)!important}.\!p-6{padding:calc(var(--spacing) * 6)!important}.\!p-7{padding:calc(var(--spacing) * 7)!important}.\!p-8{padding:calc(var(--spacing) * 8)!important}.\!p-9{padding:calc(var(--spacing) * 9)!important}.\!p-10{padding:calc(var(--spacing) * 10)!important}.\!p-11{padding:calc(var(--spacing) * 11)!important}.\!p-12{padding:calc(var(--spacing) * 12)!important}.\!p-13{padding:calc(var(--spacing) * 13)!important}.\!p-14{padding:calc(var(--spacing) * 14)!important}.\!p-15{padding:calc(var(--spacing) * 15)!important}.\!p-16{padding:calc(var(--spacing) * 16)!important}.\!p-17{padding:calc(var(--spacing) * 17)!important}.\!p-18{padding:calc(var(--spacing) * 18)!important}.\!p-19{padding:calc(var(--spacing) * 19)!important}.\!p-20{padding:calc(var(--spacing) * 20)!important}.\!p-21{padding:calc(var(--spacing) * 21)!important}.\!p-22{padding:calc(var(--spacing) * 22)!important}.\!p-23{padding:calc(var(--spacing) * 23)!important}.\!p-24{padding:calc(var(--spacing) * 24)!important}.\!p-px{padding:1px!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\!{padding:calc(var(--spacing) * 0)!important}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-9{padding:calc(var(--spacing) * 9)}.p-10{padding:calc(var(--spacing) * 10)}.p-11{padding:calc(var(--spacing) * 11)}.p-12{padding:calc(var(--spacing) * 12)}.p-13{padding:calc(var(--spacing) * 13)}.p-14{padding:calc(var(--spacing) * 14)}.p-15{padding:calc(var(--spacing) * 15)}.p-16{padding:calc(var(--spacing) * 16)}.p-17{padding:calc(var(--spacing) * 17)}.p-18{padding:calc(var(--spacing) * 18)}.p-19{padding:calc(var(--spacing) * 19)}.p-20{padding:calc(var(--spacing) * 20)}.p-21{padding:calc(var(--spacing) * 21)}.p-22{padding:calc(var(--spacing) * 22)}.p-23{padding:calc(var(--spacing) * 23)}.p-24{padding:calc(var(--spacing) * 24)}.p-px{padding:1px}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.\!px-1{padding-inline:calc(var(--spacing) * 1)!important}.\!px-2{padding-inline:calc(var(--spacing) * 2)!important}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.\!px-4{padding-inline:calc(var(--spacing) * 4)!important}.\!px-5{padding-inline:calc(var(--spacing) * 5)!important}.\!px-6{padding-inline:calc(var(--spacing) * 6)!important}.\!px-7{padding-inline:calc(var(--spacing) * 7)!important}.\!px-8{padding-inline:calc(var(--spacing) * 8)!important}.\!px-9{padding-inline:calc(var(--spacing) * 9)!important}.\!px-10{padding-inline:calc(var(--spacing) * 10)!important}.\!px-11{padding-inline:calc(var(--spacing) * 11)!important}.\!px-12{padding-inline:calc(var(--spacing) * 12)!important}.\!px-13{padding-inline:calc(var(--spacing) * 13)!important}.\!px-14{padding-inline:calc(var(--spacing) * 14)!important}.\!px-15{padding-inline:calc(var(--spacing) * 15)!important}.\!px-16{padding-inline:calc(var(--spacing) * 16)!important}.\!px-17{padding-inline:calc(var(--spacing) * 17)!important}.\!px-18{padding-inline:calc(var(--spacing) * 18)!important}.\!px-19{padding-inline:calc(var(--spacing) * 19)!important}.\!px-20{padding-inline:calc(var(--spacing) * 20)!important}.\!px-21{padding-inline:calc(var(--spacing) * 21)!important}.\!px-22{padding-inline:calc(var(--spacing) * 22)!important}.\!px-23{padding-inline:calc(var(--spacing) * 23)!important}.\!px-24{padding-inline:calc(var(--spacing) * 24)!important}.\!px-px{padding-inline:1px!important}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-5\.5{padding-inline:calc(var(--spacing) * 5.5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-9{padding-inline:calc(var(--spacing) * 9)}.px-10{padding-inline:calc(var(--spacing) * 10)}.px-11{padding-inline:calc(var(--spacing) * 11)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-13{padding-inline:calc(var(--spacing) * 13)}.px-14{padding-inline:calc(var(--spacing) * 14)}.px-15{padding-inline:calc(var(--spacing) * 15)}.px-16{padding-inline:calc(var(--spacing) * 16)}.px-17{padding-inline:calc(var(--spacing) * 17)}.px-18{padding-inline:calc(var(--spacing) * 18)}.px-19{padding-inline:calc(var(--spacing) * 19)}.px-20{padding-inline:calc(var(--spacing) * 20)}.px-21{padding-inline:calc(var(--spacing) * 21)}.px-22{padding-inline:calc(var(--spacing) * 22)}.px-23{padding-inline:calc(var(--spacing) * 23)}.px-24{padding-inline:calc(var(--spacing) * 24)}.px-px{padding-inline:1px}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.\!py-1{padding-block:calc(var(--spacing) * 1)!important}.\!py-2{padding-block:calc(var(--spacing) * 2)!important}.\!py-3{padding-block:calc(var(--spacing) * 3)!important}.\!py-4{padding-block:calc(var(--spacing) * 4)!important}.\!py-5{padding-block:calc(var(--spacing) * 5)!important}.\!py-6{padding-block:calc(var(--spacing) * 6)!important}.\!py-7{padding-block:calc(var(--spacing) * 7)!important}.\!py-8{padding-block:calc(var(--spacing) * 8)!important}.\!py-9{padding-block:calc(var(--spacing) * 9)!important}.\!py-10{padding-block:calc(var(--spacing) * 10)!important}.\!py-11{padding-block:calc(var(--spacing) * 11)!important}.\!py-12{padding-block:calc(var(--spacing) * 12)!important}.\!py-13{padding-block:calc(var(--spacing) * 13)!important}.\!py-14{padding-block:calc(var(--spacing) * 14)!important}.\!py-15{padding-block:calc(var(--spacing) * 15)!important}.\!py-16{padding-block:calc(var(--spacing) * 16)!important}.\!py-17{padding-block:calc(var(--spacing) * 17)!important}.\!py-18{padding-block:calc(var(--spacing) * 18)!important}.\!py-19{padding-block:calc(var(--spacing) * 19)!important}.\!py-20{padding-block:calc(var(--spacing) * 20)!important}.\!py-21{padding-block:calc(var(--spacing) * 21)!important}.\!py-22{padding-block:calc(var(--spacing) * 22)!important}.\!py-23{padding-block:calc(var(--spacing) * 23)!important}.\!py-24{padding-block:calc(var(--spacing) * 24)!important}.\!py-px{padding-block:1px!important}.py-0{padding-block:calc(var(--spacing) * 0)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-4\.5{padding-block:calc(var(--spacing) * 4.5)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-9{padding-block:calc(var(--spacing) * 9)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-11{padding-block:calc(var(--spacing) * 11)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-13{padding-block:calc(var(--spacing) * 13)}.py-14{padding-block:calc(var(--spacing) * 14)}.py-15{padding-block:calc(var(--spacing) * 15)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-17{padding-block:calc(var(--spacing) * 17)}.py-18{padding-block:calc(var(--spacing) * 18)}.py-19{padding-block:calc(var(--spacing) * 19)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-21{padding-block:calc(var(--spacing) * 21)}.py-22{padding-block:calc(var(--spacing) * 22)}.py-23{padding-block:calc(var(--spacing) * 23)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-\[5px\]{padding-block:5px}.py-px{padding-block:1px}.\!pt-0{padding-top:calc(var(--spacing) * 0)!important}.\!pt-1{padding-top:calc(var(--spacing) * 1)!important}.\!pt-2{padding-top:calc(var(--spacing) * 2)!important}.\!pt-3{padding-top:calc(var(--spacing) * 3)!important}.\!pt-4{padding-top:calc(var(--spacing) * 4)!important}.\!pt-5{padding-top:calc(var(--spacing) * 5)!important}.\!pt-6{padding-top:calc(var(--spacing) * 6)!important}.\!pt-7{padding-top:calc(var(--spacing) * 7)!important}.\!pt-8{padding-top:calc(var(--spacing) * 8)!important}.\!pt-9{padding-top:calc(var(--spacing) * 9)!important}.\!pt-10{padding-top:calc(var(--spacing) * 10)!important}.\!pt-11{padding-top:calc(var(--spacing) * 11)!important}.\!pt-12{padding-top:calc(var(--spacing) * 12)!important}.\!pt-13{padding-top:calc(var(--spacing) * 13)!important}.\!pt-14{padding-top:calc(var(--spacing) * 14)!important}.\!pt-15{padding-top:calc(var(--spacing) * 15)!important}.\!pt-16{padding-top:calc(var(--spacing) * 16)!important}.\!pt-17{padding-top:calc(var(--spacing) * 17)!important}.\!pt-18{padding-top:calc(var(--spacing) * 18)!important}.\!pt-19{padding-top:calc(var(--spacing) * 19)!important}.\!pt-20{padding-top:calc(var(--spacing) * 20)!important}.\!pt-21{padding-top:calc(var(--spacing) * 21)!important}.\!pt-22{padding-top:calc(var(--spacing) * 22)!important}.\!pt-23{padding-top:calc(var(--spacing) * 23)!important}.\!pt-24{padding-top:calc(var(--spacing) * 24)!important}.\!pt-px{padding-top:1px!important}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-9{padding-top:calc(var(--spacing) * 9)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-11{padding-top:calc(var(--spacing) * 11)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-13{padding-top:calc(var(--spacing) * 13)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-15{padding-top:calc(var(--spacing) * 15)}.pt-16{padding-top:calc(var(--spacing) * 16)}.pt-17{padding-top:calc(var(--spacing) * 17)}.pt-18{padding-top:calc(var(--spacing) * 18)}.pt-19{padding-top:calc(var(--spacing) * 19)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-21{padding-top:calc(var(--spacing) * 21)}.pt-22{padding-top:calc(var(--spacing) * 22)}.pt-23{padding-top:calc(var(--spacing) * 23)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pt-px{padding-top:1px}.\!pr-0{padding-right:calc(var(--spacing) * 0)!important}.\!pr-1{padding-right:calc(var(--spacing) * 1)!important}.\!pr-2{padding-right:calc(var(--spacing) * 2)!important}.\!pr-3{padding-right:calc(var(--spacing) * 3)!important}.\!pr-4{padding-right:calc(var(--spacing) * 4)!important}.\!pr-5{padding-right:calc(var(--spacing) * 5)!important}.\!pr-6{padding-right:calc(var(--spacing) * 6)!important}.\!pr-7{padding-right:calc(var(--spacing) * 7)!important}.\!pr-8{padding-right:calc(var(--spacing) * 8)!important}.\!pr-9{padding-right:calc(var(--spacing) * 9)!important}.\!pr-10{padding-right:calc(var(--spacing) * 10)!important}.\!pr-11{padding-right:calc(var(--spacing) * 11)!important}.\!pr-12{padding-right:calc(var(--spacing) * 12)!important}.\!pr-13{padding-right:calc(var(--spacing) * 13)!important}.\!pr-14{padding-right:calc(var(--spacing) * 14)!important}.\!pr-15{padding-right:calc(var(--spacing) * 15)!important}.\!pr-16{padding-right:calc(var(--spacing) * 16)!important}.\!pr-17{padding-right:calc(var(--spacing) * 17)!important}.\!pr-18{padding-right:calc(var(--spacing) * 18)!important}.\!pr-19{padding-right:calc(var(--spacing) * 19)!important}.\!pr-20{padding-right:calc(var(--spacing) * 20)!important}.\!pr-21{padding-right:calc(var(--spacing) * 21)!important}.\!pr-22{padding-right:calc(var(--spacing) * 22)!important}.\!pr-23{padding-right:calc(var(--spacing) * 23)!important}.\!pr-24{padding-right:calc(var(--spacing) * 24)!important}.\!pr-px{padding-right:1px!important}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-8\!{padding-right:calc(var(--spacing) * 8)!important}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-13{padding-right:calc(var(--spacing) * 13)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pr-15{padding-right:calc(var(--spacing) * 15)}.pr-16{padding-right:calc(var(--spacing) * 16)}.pr-17{padding-right:calc(var(--spacing) * 17)}.pr-18{padding-right:calc(var(--spacing) * 18)}.pr-19{padding-right:calc(var(--spacing) * 19)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pr-21{padding-right:calc(var(--spacing) * 21)}.pr-22{padding-right:calc(var(--spacing) * 22)}.pr-23{padding-right:calc(var(--spacing) * 23)}.pr-24{padding-right:calc(var(--spacing) * 24)}.pr-\[19px\]{padding-right:19px}.pr-px{padding-right:1px}.\!pb-0{padding-bottom:calc(var(--spacing) * 0)!important}.\!pb-1{padding-bottom:calc(var(--spacing) * 1)!important}.\!pb-2{padding-bottom:calc(var(--spacing) * 2)!important}.\!pb-3{padding-bottom:calc(var(--spacing) * 3)!important}.\!pb-4{padding-bottom:calc(var(--spacing) * 4)!important}.\!pb-5{padding-bottom:calc(var(--spacing) * 5)!important}.\!pb-6{padding-bottom:calc(var(--spacing) * 6)!important}.\!pb-7{padding-bottom:calc(var(--spacing) * 7)!important}.\!pb-8{padding-bottom:calc(var(--spacing) * 8)!important}.\!pb-9{padding-bottom:calc(var(--spacing) * 9)!important}.\!pb-10{padding-bottom:calc(var(--spacing) * 10)!important}.\!pb-11{padding-bottom:calc(var(--spacing) * 11)!important}.\!pb-12{padding-bottom:calc(var(--spacing) * 12)!important}.\!pb-13{padding-bottom:calc(var(--spacing) * 13)!important}.\!pb-14{padding-bottom:calc(var(--spacing) * 14)!important}.\!pb-15{padding-bottom:calc(var(--spacing) * 15)!important}.\!pb-16{padding-bottom:calc(var(--spacing) * 16)!important}.\!pb-17{padding-bottom:calc(var(--spacing) * 17)!important}.\!pb-18{padding-bottom:calc(var(--spacing) * 18)!important}.\!pb-19{padding-bottom:calc(var(--spacing) * 19)!important}.\!pb-20{padding-bottom:calc(var(--spacing) * 20)!important}.\!pb-21{padding-bottom:calc(var(--spacing) * 21)!important}.\!pb-22{padding-bottom:calc(var(--spacing) * 22)!important}.\!pb-23{padding-bottom:calc(var(--spacing) * 23)!important}.\!pb-24{padding-bottom:calc(var(--spacing) * 24)!important}.\!pb-px{padding-bottom:1px!important}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-7{padding-bottom:calc(var(--spacing) * 7)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-9{padding-bottom:calc(var(--spacing) * 9)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-11{padding-bottom:calc(var(--spacing) * 11)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-13{padding-bottom:calc(var(--spacing) * 13)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pb-15{padding-bottom:calc(var(--spacing) * 15)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-17{padding-bottom:calc(var(--spacing) * 17)}.pb-18{padding-bottom:calc(var(--spacing) * 18)}.pb-19{padding-bottom:calc(var(--spacing) * 19)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pb-21{padding-bottom:calc(var(--spacing) * 21)}.pb-22{padding-bottom:calc(var(--spacing) * 22)}.pb-23{padding-bottom:calc(var(--spacing) * 23)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-px{padding-bottom:1px}.\!pl-0{padding-left:calc(var(--spacing) * 0)!important}.\!pl-1{padding-left:calc(var(--spacing) * 1)!important}.\!pl-2{padding-left:calc(var(--spacing) * 2)!important}.\!pl-3{padding-left:calc(var(--spacing) * 3)!important}.\!pl-4{padding-left:calc(var(--spacing) * 4)!important}.\!pl-5{padding-left:calc(var(--spacing) * 5)!important}.\!pl-6{padding-left:calc(var(--spacing) * 6)!important}.\!pl-7{padding-left:calc(var(--spacing) * 7)!important}.\!pl-8{padding-left:calc(var(--spacing) * 8)!important}.\!pl-9{padding-left:calc(var(--spacing) * 9)!important}.\!pl-10{padding-left:calc(var(--spacing) * 10)!important}.\!pl-11{padding-left:calc(var(--spacing) * 11)!important}.\!pl-12{padding-left:calc(var(--spacing) * 12)!important}.\!pl-13{padding-left:calc(var(--spacing) * 13)!important}.\!pl-14{padding-left:calc(var(--spacing) * 14)!important}.\!pl-15{padding-left:calc(var(--spacing) * 15)!important}.\!pl-16{padding-left:calc(var(--spacing) * 16)!important}.\!pl-17{padding-left:calc(var(--spacing) * 17)!important}.\!pl-18{padding-left:calc(var(--spacing) * 18)!important}.\!pl-19{padding-left:calc(var(--spacing) * 19)!important}.\!pl-20{padding-left:calc(var(--spacing) * 20)!important}.\!pl-21{padding-left:calc(var(--spacing) * 21)!important}.\!pl-22{padding-left:calc(var(--spacing) * 22)!important}.\!pl-23{padding-left:calc(var(--spacing) * 23)!important}.\!pl-24{padding-left:calc(var(--spacing) * 24)!important}.\!pl-px{padding-left:1px!important}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-12{padding-left:calc(var(--spacing) * 12)}.pl-13{padding-left:calc(var(--spacing) * 13)}.pl-14{padding-left:calc(var(--spacing) * 14)}.pl-15{padding-left:calc(var(--spacing) * 15)}.pl-16{padding-left:calc(var(--spacing) * 16)}.pl-17{padding-left:calc(var(--spacing) * 17)}.pl-18{padding-left:calc(var(--spacing) * 18)}.pl-19{padding-left:calc(var(--spacing) * 19)}.pl-20{padding-left:calc(var(--spacing) * 20)}.pl-21{padding-left:calc(var(--spacing) * 21)}.pl-22{padding-left:calc(var(--spacing) * 22)}.pl-23{padding-left:calc(var(--spacing) * 23)}.pl-24{padding-left:calc(var(--spacing) * 24)}.pl-px{padding-left:1px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-\[-3px\]{vertical-align:-3px}.align-middle{vertical-align:middle}.align-text-top{vertical-align:text-top}.align-top{vertical-align:top}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl\!{font-size:var(--text-5xl)!important;line-height:var(--tw-leading,var(--text-5xl--line-height))!important}.text-6xl\!{font-size:var(--text-6xl)!important;line-height:var(--tw-leading,var(--text-6xl--line-height))!important}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md-16{font-size:16px}.md-18{font-size:18px}.text-\[11px\]{font-size:11px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.\!leading-\[38px\]{--tw-leading:38px!important;line-height:38px!important}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-7\!{--tw-leading:calc(var(--spacing) * 7)!important;line-height:calc(var(--spacing) * 7)!important}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-9{--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9)}.leading-10{--tw-leading:calc(var(--spacing) * 10);line-height:calc(var(--spacing) * 10)}.leading-11{--tw-leading:calc(var(--spacing) * 11);line-height:calc(var(--spacing) * 11)}.leading-12{--tw-leading:calc(var(--spacing) * 12);line-height:calc(var(--spacing) * 12)}.leading-13{--tw-leading:calc(var(--spacing) * 13);line-height:calc(var(--spacing) * 13)}.leading-14{--tw-leading:calc(var(--spacing) * 14);line-height:calc(var(--spacing) * 14)}.leading-15{--tw-leading:calc(var(--spacing) * 15);line-height:calc(var(--spacing) * 15)}.leading-16{--tw-leading:calc(var(--spacing) * 16);line-height:calc(var(--spacing) * 16)}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[36px\]{--tw-leading:36px;line-height:36px}.leading-\[38px\]{--tw-leading:38px;line-height:38px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.text-default{color:var(--color-font-default-light)}@media not print{.text-default:where(.dark,.dark *){color:var(--color-font-default-dark)}}.text-icon{color:var(--color-base-400)}@media not print{.text-icon:where(.dark,.dark *){color:var(--color-base-500)}}.text-important{color:var(--color-font-important-light)}@media not print{.text-important:where(.dark,.dark *){color:var(--color-font-important-dark)}}.text-link{color:var(--color-primary-600)}@media not print{.text-link:where(.dark,.dark *){color:var(--color-primary-500)}}.text-subtle{color:var(--color-font-subtle-light)}@media not print{.text-subtle:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.text-base-50{color:var(--color-base-50)}.text-base-100{color:var(--color-base-100)}.text-base-200{color:var(--color-base-200)}.text-base-300{color:var(--color-base-300)}.text-base-400{color:var(--color-base-400)}.text-base-500{color:var(--color-base-500)}.text-base-600{color:var(--color-base-600)}.text-base-700{color:var(--color-base-700)}.text-base-800{color:var(--color-base-800)}.text-base-900{color:var(--color-base-900)}.text-base-950{color:var(--color-base-950)}.text-blue-500{color:var(--color-blue-500)}.text-blue-700{color:var(--color-blue-700)}.text-font-default-light{color:var(--color-font-default-light)}.text-font-important-light{color:var(--color-font-important-light)}.text-font-important-light\!{color:var(--color-font-important-light)!important}.text-font-subtle-light{color:var(--color-font-subtle-light)}.text-green-700{color:var(--color-green-700)}.text-orange-700{color:var(--color-orange-700)}.text-primary-50{color:var(--color-primary-50)}.text-primary-100{color:var(--color-primary-100)}.text-primary-200{color:var(--color-primary-200)}.text-primary-300{color:var(--color-primary-300)}.text-primary-400{color:var(--color-primary-400)}.text-primary-500{color:var(--color-primary-500)}.text-primary-600{color:var(--color-primary-600)}.text-primary-700{color:var(--color-primary-700)}.text-primary-800{color:var(--color-primary-800)}.text-primary-900{color:var(--color-primary-900)}.text-primary-950{color:var(--color-primary-950)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-white\/0{color:#0000}@supports (color:color-mix(in lab, red, red)){.text-white\/0{color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.text-white\/10{color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.text-white\/10{color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab, red, red)){.text-white\/20{color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.text-white\/30{color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab, red, red)){.text-white\/40{color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\/50{color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\/60{color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.text-white\/100{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-base-400::placeholder{color:var(--color-base-400)}.placeholder-font-subtle-light::placeholder{color:var(--color-font-subtle-light)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-base-500\/20{--tw-shadow-color:var(--color-base-500)}@supports (color:color-mix(in lab, red, red)){.shadow-base-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-base-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-0{outline-style:var(--tw-outline-style);outline-width:0}.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.outline-3{outline-style:var(--tw-outline-style);outline-width:3px}.outline-4{outline-style:var(--tw-outline-style);outline-width:4px}.outline-offset-0{outline-offset:0px}.outline-offset-1{outline-offset:1px}.outline-offset-2{outline-offset:2px}.outline-offset-3{outline-offset:3px}.outline-offset-4{outline-offset:4px}.outline-base-50{outline-color:var(--color-base-50)}.outline-base-100{outline-color:var(--color-base-100)}.outline-base-200{outline-color:var(--color-base-200)}.outline-base-300{outline-color:var(--color-base-300)}.outline-base-400{outline-color:var(--color-base-400)}.outline-base-500{outline-color:var(--color-base-500)}.outline-base-600{outline-color:var(--color-base-600)}.outline-base-700{outline-color:var(--color-base-700)}.outline-base-800{outline-color:var(--color-base-800)}.outline-base-900{outline-color:var(--color-base-900)}.outline-base-950{outline-color:var(--color-base-950)}.outline-primary-50{outline-color:var(--color-primary-50)}.outline-primary-100{outline-color:var(--color-primary-100)}.outline-primary-200{outline-color:var(--color-primary-200)}.outline-primary-300{outline-color:var(--color-primary-300)}.outline-primary-400{outline-color:var(--color-primary-400)}.outline-primary-500{outline-color:var(--color-primary-500)}.outline-primary-600{outline-color:var(--color-primary-600)}.outline-primary-700{outline-color:var(--color-primary-700)}.outline-primary-800{outline-color:var(--color-primary-800)}.outline-primary-900{outline-color:var(--color-primary-900)}.outline-primary-950{outline-color:var(--color-primary-950)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-move{transition-property:transform,translate,scale,rotate,margin}.select-none{-webkit-user-select:none;user-select:none}.text-shadow-xs{text-shadow:0px 1px 1px var(--tw-text-shadow-color,#0003)}:is(.\*\:mx-1>*){margin-inline:calc(var(--spacing) * 1)}:is(.\*\:mb-0>*){margin-bottom:calc(var(--spacing) * 0)}:is(.\*\:mb-0\!>*){margin-bottom:calc(var(--spacing) * 0)!important}:is(.\*\:flex>*){display:flex}:is(.\*\:max-h-\[30px\]>*){max-height:30px}:is(.\*\:flex-row>*){flex-direction:row}:is(.\*\:items-center>*){align-items:center}:is(.\*\:gap-1>*){gap:calc(var(--spacing) * 1)}:is(.\*\:gap-2>*){gap:calc(var(--spacing) * 2)}:is(.\*\:truncate>*){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:is(.\*\:rounded-default>*){border-radius:var(--border-radius,6px)}:is(.\*\:px-2\.5>*){padding-inline:calc(var(--spacing) * 2.5)}:is(.\*\:px-3>*){padding-inline:calc(var(--spacing) * 3)}:is(.\*\:py-2>*){padding-block:calc(var(--spacing) * 2)}:is(.\*\:py-\[5px\]>*){padding-block:5px}:is(.\*\:text-left>*){text-align:left}:is(.\*\:align-middle>*){vertical-align:middle}:is(.\*\:font-medium>*){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}:is(.\*\:font-semibold>*){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}:is(.\*\:whitespace-nowrap>*){white-space:nowrap}:is(.\*\:text-font-important-light>*){color:var(--color-font-important-light)}:is(.\*\:opacity-50>*){opacity:.5}@media (hover:hover){.group-hover\:-right-1:is(:where(.group):hover *){right:calc(var(--spacing) * -1)}.group-hover\:-left-1:is(:where(.group):hover *){left:calc(var(--spacing) * -1)}.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:text-primary-600:is(:where(.group):hover *){color:var(--color-primary-600)}.group-hover\/action\:bg-base-100:is(:where(.group\/action):hover *){background-color:var(--color-base-100)}.group-hover\/action\:text-base-700:is(:where(.group\/action):hover *){color:var(--color-base-700)}.group-hover\/title\:block:is(:where(.group\/title):hover *){display:block}}.group-has-\[input\.action-select\:checked\]\:flex:is(:where(.group):has(:is(input.action-select:checked)) *){display:flex}.group-\[\.active\]\:-translate-x-\[2px\]:is(:where(.group).active *){--tw-translate-x:calc(2px * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-\[\.active\]\:border-white\/40:is(:where(.group).active *){border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.group-\[\.active\]\:border-white\/40:is(:where(.group).active *){border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.group-\[\.active\]\:bg-primary-600:is(:where(.group).active *){background-color:var(--color-primary-600)}.group-\[\.active\]\:bg-transparent:is(:where(.group).active *){background-color:#0000}.group-\[\.active\]\:text-white:is(:where(.group).active *){color:var(--color-white)}.group-\[\.changelist-actions\]\:grow:is(:where(.group).changelist-actions *){flex-grow:1}.group-\[\.changelist-actions\]\:appearance-none:is(:where(.group).changelist-actions *){appearance:none}.group-\[\.changelist-actions\]\:truncate:is(:where(.group).changelist-actions *){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-\[\.changelist-actions\]\:rounded-default:is(:where(.group).changelist-actions *){border-radius:var(--border-radius,6px)}.group-\[\.changelist-actions\]\:\!bg-white\/20:is(:where(.group).changelist-actions *){background-color:#fff3!important}@supports (color:color-mix(in lab, red, red)){.group-\[\.changelist-actions\]\:\!bg-white\/20:is(:where(.group).changelist-actions *){background-color:color-mix(in oklab, var(--color-white) 20%, transparent)!important}}.group-\[\.changelist-actions\]\:px-2:is(:where(.group).changelist-actions *){padding-inline:calc(var(--spacing) * 2)}.group-\[\.changelist-actions\]\:py-1:is(:where(.group).changelist-actions *){padding-block:calc(var(--spacing) * 1)}.group-\[\.changelist-actions\]\:pr-8:is(:where(.group).changelist-actions *){padding-right:calc(var(--spacing) * 8)}.group-\[\.changelist-actions\]\:font-medium:is(:where(.group).changelist-actions *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-\[\.changelist-actions\]\:\!text-current:is(:where(.group).changelist-actions *){color:currentColor!important}.group-\[\.changelist-actions\]\:\!outline-primary-400:is(:where(.group).changelist-actions *){outline-color:var(--color-primary-400)!important}:is(.group-\[\.changelist-actions\]\:\*\:text-base-700:is(:where(.group).changelist-actions *)>*){color:var(--color-base-700)}.group-\[\.empty\]\/formset-nested\:\!border-t-0:is(:where(.group\/formset-nested).empty *),.group-\[\.empty\]\/formset-parent\:\!border-t-0:is(:where(.group\/formset-parent).empty *){border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.group-\[\.errors\]\:border-red-600:is(:where(.group).errors *){border-color:var(--color-red-600)}.group-\[\.errors\]\:border-x-red-600:is(:where(.group).errors *){border-inline-color:var(--color-red-600)}.group-\[\.errors\]\:border-t-red-600:is(:where(.group).errors *){border-top-color:var(--color-red-600)}.group-\[\.field-row\]\:grow:is(:where(.group).field-row *){flex-grow:1}.group-\[\.field-row\]\:gap-2:is(:where(.group).field-row *){gap:calc(var(--spacing) * 2)}.group-\[\.field-tabular\]\:grow:is(:where(.group).field-tabular *){flex-grow:1}.group-\[\.field-tabular\]\:gap-2:is(:where(.group).field-tabular *){gap:calc(var(--spacing) * 2)}.group-\[\.fieldset\]\:-mx-3:is(:where(.group).fieldset *){margin-inline:calc(var(--spacing) * -3)}.group-\[\.fieldset\]\:flex:is(:where(.group).fieldset *){display:flex}.group-\[\.fieldset\]\:flex-row:is(:where(.group).fieldset *){flex-direction:row}.group-\[\.fieldset\]\:justify-end:is(:where(.group).fieldset *){justify-content:flex-end}.group-\[\.fieldset\]\:border-t:is(:where(.group).fieldset *){border-top-style:var(--tw-border-style);border-top-width:1px}.group-\[\.fieldset\]\:border-base-200:is(:where(.group).fieldset *){border-color:var(--color-base-200)}.group-\[\.fieldset\]\:px-3:is(:where(.group).fieldset *){padding-inline:calc(var(--spacing) * 3)}.group-\[\.fieldset\]\:pt-3:is(:where(.group).fieldset *){padding-top:calc(var(--spacing) * 3)}.group-\[\.htmx-request\]\:block:is(:where(.group).htmx-request *){display:block}.group-\[\.htmx-request\]\:hidden:is(:where(.group).htmx-request *){display:none}.group-\[\.inline-stacked\]\:mx-3:is(:where(.group).inline-stacked *){margin-inline:calc(var(--spacing) * 3)}.group-\[\.inline-stacked\]\:mt-3:is(:where(.group).inline-stacked *){margin-top:calc(var(--spacing) * 3)}.group-\[\.inline-stacked\]\:mb-3:is(:where(.group).inline-stacked *){margin-bottom:calc(var(--spacing) * 3)}.group-\[\.inline-tabular\]\:mx-3:is(:where(.group).inline-tabular *){margin-inline:calc(var(--spacing) * 3)}.group-\[\.inline-tabular\]\:mt-3:is(:where(.group).inline-tabular *){margin-top:calc(var(--spacing) * 3)}.group-\[\.inline-tabular\]\:mb-0:is(:where(.group).inline-tabular *){margin-bottom:calc(var(--spacing) * 0)}.group-\[\.last\]\/nested\:border-b-0:is(:where(.group\/nested).last *),.group-\[\.last\]\/parent\:border-b-0:is(:where(.group\/parent).last *),.group-\[\.last\]\/row\:border-b-0:is(:where(.group\/row).last *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-\[\.primary\]\:border-transparent:is(:where(.group).primary *){border-color:#0000}.group-\[\.primary\]\:text-white:is(:where(.group).primary *){color:var(--color-white)}.before\:mr-auto:before{content:var(--tw-content);margin-right:auto}.before\:block:before{content:var(--tw-content);display:block}.before\:flex:before{content:var(--tw-content);display:flex}.before\:items-center:before{content:var(--tw-content);align-items:center}.before\:pr-4:before{content:var(--tw-content);padding-right:calc(var(--spacing) * 4)}.before\:font-semibold:before{content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.before\:text-font-important-light:before{content:var(--tw-content);color:var(--color-font-important-light)}.before\:capitalize:before{content:var(--tw-content);text-transform:capitalize}.before\:content-\[attr\(data-label\)\]:before{--tw-content:attr(data-label);content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:top-1:after{content:var(--tw-content);top:calc(var(--spacing) * 1)}.after\:top-1\/2:after{content:var(--tw-content);top:50%}.after\:left-1:after{content:var(--tw-content);left:calc(var(--spacing) * 1)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:-mt-px:after{content:var(--tw-content);margin-top:-1px}.after\:-ml-px:after{content:var(--tw-content);margin-left:-1px}.after\:material-symbols-outlined:after{content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.after\:flex:after{content:var(--tw-content);display:flex}.after\:flex\!:after{content:var(--tw-content);display:flex!important}.after\:h-2:after{content:var(--tw-content);height:calc(var(--spacing) * 2)}.after\:h-3:after{content:var(--tw-content);height:calc(var(--spacing) * 3)}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing) * 4)}.after\:w-2:after{content:var(--tw-content);width:calc(var(--spacing) * 2)}.after\:w-3:after{content:var(--tw-content);width:calc(var(--spacing) * 3)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing) * 4)}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:-translate-y-1\/2:after{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:items-center:after{content:var(--tw-content);align-items:center}.after\:justify-center:after{content:var(--tw-content);justify-content:center}.after\:rounded-default:after{content:var(--tw-content);border-radius:var(--border-radius,6px)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-red-300:after{content:var(--tw-content);background-color:var(--color-red-300)}.after\:bg-transparent:after{content:var(--tw-content);background-color:#0000}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:leading-none:after{content:var(--tw-content);--tw-leading:1;line-height:1}.after\:text-white:after{content:var(--tw-content);color:var(--color-white)}.after\:shadow-xs:after{content:var(--tw-content);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\:inset-ring:after{content:var(--tw-content);--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\:inset-ring-base-800\/10:after{content:var(--tw-content);--tw-inset-ring-color:var(--color-base-800)}@supports (color:color-mix(in lab, red, red)){.after\:inset-ring-base-800\/10:after{--tw-inset-ring-color:color-mix(in oklab, var(--color-base-800) 10%, transparent)}}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.after\:content-\[\'check\\_small\'\]:after{--tw-content:"check_small";content:var(--tw-content)}.first\:-mt-5:first-child{margin-top:calc(var(--spacing) * -5)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pl-3:first-child{padding-left:calc(var(--spacing) * 3)}.first\:pl-6:first-child{padding-left:calc(var(--spacing) * 6)}.last\:-mb-3:last-child{margin-bottom:calc(var(--spacing) * -3)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:mb-4:last-child{margin-bottom:calc(var(--spacing) * 4)}.last\:mb-8:last-child{margin-bottom:calc(var(--spacing) * 8)}.last\:rounded-r-default:last-child{border-top-right-radius:var(--border-radius,6px);border-bottom-right-radius:var(--border-radius,6px)}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pr-3:last-child{padding-right:calc(var(--spacing) * 3)}.last\:pr-6:last-child{padding-right:calc(var(--spacing) * 6)}:is(.\*\:last\:mb-0>*):last-child{margin-bottom:calc(var(--spacing) * 0)}.checked\:border-primary-600:checked{border-color:var(--color-primary-600)}.checked\:bg-green-500:checked{background-color:var(--color-green-500)}.checked\:bg-primary-600:checked{background-color:var(--color-primary-600)}.checked\:after\:left-4:checked:after{content:var(--tw-content);left:calc(var(--spacing) * 4)}.checked\:after\:bg-white:checked:after{content:var(--tw-content);background-color:var(--color-white)}.empty\:hidden:empty{display:none}.focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.focus-within\:-outline-offset-2:focus-within{outline-offset:calc(2px * -1)}.focus-within\:outline-primary-600:focus-within{outline-color:var(--color-primary-600)}.focus-within\:group-\[\.errors\]\:outline-red-500:focus-within:is(:where(.group).errors *){outline-color:var(--color-red-500)}@media (hover:hover){.hover\:border-base-50:hover{border-color:var(--color-base-50)}.hover\:border-base-100:hover{border-color:var(--color-base-100)}.hover\:border-base-200:hover{border-color:var(--color-base-200)}.hover\:border-base-300:hover{border-color:var(--color-base-300)}.hover\:border-base-400:hover{border-color:var(--color-base-400)}.hover\:border-base-500:hover{border-color:var(--color-base-500)}.hover\:border-base-600:hover{border-color:var(--color-base-600)}.hover\:border-base-700:hover{border-color:var(--color-base-700)}.hover\:border-base-800:hover{border-color:var(--color-base-800)}.hover\:border-base-900:hover{border-color:var(--color-base-900)}.hover\:border-base-950:hover{border-color:var(--color-base-950)}.hover\:border-transparent:hover{border-color:#0000}.hover\:bg-base-50:hover{background-color:var(--color-base-50)}.hover\:bg-base-100:hover,.hover\:bg-base-100\/80:hover{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-100\/80:hover{background-color:color-mix(in oklab, var(--color-base-100) 80%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:bg-base-400:hover{background-color:var(--color-base-400)}.hover\:bg-base-500:hover{background-color:var(--color-base-500)}.hover\:bg-base-600:hover{background-color:var(--color-base-600)}.hover\:bg-base-700:hover,.hover\:bg-base-700\/\[\.04\]:hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-700\/\[\.04\]:hover{background-color:color-mix(in oklab, var(--color-base-700) 4%, transparent)}}.hover\:bg-base-800:hover{background-color:var(--color-base-800)}.hover\:bg-base-900:hover{background-color:var(--color-base-900)}.hover\:bg-base-950:hover{background-color:var(--color-base-950)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-200:hover{background-color:var(--color-blue-200)}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-blue-400:hover{background-color:var(--color-blue-400)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-blue-800:hover{background-color:var(--color-blue-800)}.hover\:bg-blue-900:hover{background-color:var(--color-blue-900)}.hover\:bg-blue-950:hover{background-color:var(--color-blue-950)}.hover\:bg-green-50:hover{background-color:var(--color-green-50)}.hover\:bg-green-100:hover{background-color:var(--color-green-100)}.hover\:bg-green-200:hover{background-color:var(--color-green-200)}.hover\:bg-green-300:hover{background-color:var(--color-green-300)}.hover\:bg-green-400:hover{background-color:var(--color-green-400)}.hover\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-green-800:hover{background-color:var(--color-green-800)}.hover\:bg-green-900:hover{background-color:var(--color-green-900)}.hover\:bg-green-950:hover{background-color:var(--color-green-950)}.hover\:bg-orange-50:hover{background-color:var(--color-orange-50)}.hover\:bg-orange-100:hover{background-color:var(--color-orange-100)}.hover\:bg-orange-200:hover{background-color:var(--color-orange-200)}.hover\:bg-orange-300:hover{background-color:var(--color-orange-300)}.hover\:bg-orange-400:hover{background-color:var(--color-orange-400)}.hover\:bg-orange-500:hover{background-color:var(--color-orange-500)}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-orange-800:hover{background-color:var(--color-orange-800)}.hover\:bg-orange-900:hover{background-color:var(--color-orange-900)}.hover\:bg-orange-950:hover{background-color:var(--color-orange-950)}.hover\:bg-primary-50:hover{background-color:var(--color-primary-50)}.hover\:bg-primary-100:hover{background-color:var(--color-primary-100)}.hover\:bg-primary-200:hover{background-color:var(--color-primary-200)}.hover\:bg-primary-300:hover{background-color:var(--color-primary-300)}.hover\:bg-primary-400:hover{background-color:var(--color-primary-400)}.hover\:bg-primary-500:hover{background-color:var(--color-primary-500)}.hover\:bg-primary-600:hover,.hover\:bg-primary-600\/80:hover{background-color:var(--color-primary-600)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary-600\/80:hover{background-color:color-mix(in oklab, var(--color-primary-600) 80%, transparent)}}.hover\:bg-primary-700:hover{background-color:var(--color-primary-700)}.hover\:bg-primary-800:hover{background-color:var(--color-primary-800)}.hover\:bg-primary-900:hover{background-color:var(--color-primary-900)}.hover\:bg-primary-950:hover{background-color:var(--color-primary-950)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-200:hover{background-color:var(--color-red-200)}.hover\:bg-red-300:hover{background-color:var(--color-red-300)}.hover\:bg-red-400:hover{background-color:var(--color-red-400)}.hover\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-600\/80:hover{background-color:#e40014cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-600\/80:hover{background-color:color-mix(in oklab, var(--color-red-600) 80%, transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-800:hover{background-color:var(--color-red-800)}.hover\:bg-red-900:hover{background-color:var(--color-red-900)}.hover\:bg-red-950:hover{background-color:var(--color-red-950)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.hover\:text-base-500:hover{color:var(--color-base-500)}.hover\:text-base-700:hover{color:var(--color-base-700)}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-font-important-light:hover{color:var(--color-font-important-light)}.hover\:text-green-700:hover{color:var(--color-green-700)}.hover\:text-orange-700:hover{color:var(--color-orange-700)}.hover\:text-primary-600:hover{color:var(--color-primary-600)}.hover\:text-primary-600\!:hover{color:var(--color-primary-600)!important}.hover\:text-primary-700:hover{color:var(--color-primary-700)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:opacity-50:hover{opacity:.5}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:outline-base-50:hover{outline-color:var(--color-base-50)}.hover\:outline-base-100:hover{outline-color:var(--color-base-100)}.hover\:outline-base-200:hover{outline-color:var(--color-base-200)}.hover\:outline-base-300:hover{outline-color:var(--color-base-300)}.hover\:outline-base-400:hover{outline-color:var(--color-base-400)}.hover\:outline-base-500:hover{outline-color:var(--color-base-500)}.hover\:outline-base-600:hover{outline-color:var(--color-base-600)}.hover\:outline-base-700:hover{outline-color:var(--color-base-700)}.hover\:outline-base-800:hover{outline-color:var(--color-base-800)}.hover\:outline-base-900:hover{outline-color:var(--color-base-900)}.hover\:outline-base-950:hover{outline-color:var(--color-base-950)}.hover\:outline-primary-50:hover{outline-color:var(--color-primary-50)}.hover\:outline-primary-100:hover{outline-color:var(--color-primary-100)}.hover\:outline-primary-200:hover{outline-color:var(--color-primary-200)}.hover\:outline-primary-300:hover{outline-color:var(--color-primary-300)}.hover\:outline-primary-400:hover{outline-color:var(--color-primary-400)}.hover\:outline-primary-500:hover{outline-color:var(--color-primary-500)}.hover\:outline-primary-600:hover{outline-color:var(--color-primary-600)}.hover\:outline-primary-700:hover{outline-color:var(--color-primary-700)}.hover\:outline-primary-800:hover{outline-color:var(--color-primary-800)}.hover\:outline-primary-900:hover{outline-color:var(--color-primary-900)}.hover\:outline-primary-950:hover{outline-color:var(--color-primary-950)}:is(.\*\:hover\:bg-base-100>*):hover{background-color:var(--color-base-100)}:is(.\*\:hover\:bg-base-700\/\[\.06\]>*):hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:hover\:bg-base-700\/\[\.06\]>*):hover{background-color:color-mix(in oklab, var(--color-base-700) 6%, transparent)}}:is(.\*\:hover\:text-base-700>*):hover{color:var(--color-base-700)}}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\:-outline-offset-2:focus{outline-offset:calc(2px * -1)}.focus\:outline-primary-600:focus{outline-color:var(--color-primary-600)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:group-\[\.errors\]\:outline-red-600:focus:is(:where(.group).errors *){outline-color:var(--color-red-600)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!bg-base-50:disabled{background-color:var(--color-base-50)!important}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\.add-row\:not\(\.hidden\)\]\:flex:has(.add-row:not(.hidden)),.has-\[\.inline-pagination\]\:flex:has(.inline-pagination){display:flex}.has-\[ol\]\:has-\[li\]\:block:has(:is(ol)):has(:is(li)){display:block}@media not all and (min-width:64rem){.max-lg\:absolute{position:absolute}.max-lg\:top-16{top:calc(var(--spacing) * 16)}.max-lg\:-mt-px{margin-top:-1px}.max-lg\:flex{display:flex}.max-lg\:flex-row-reverse{flex-direction:row-reverse}.max-lg\:justify-end{justify-content:flex-end}.max-lg\:first\:rounded-t-default:first-child{border-top-left-radius:var(--border-radius,6px);border-top-right-radius:var(--border-radius,6px)}.max-lg\:last\:rounded-b-default:last-child{border-bottom-right-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}}@media not all and (min-width:48rem){.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:ml-auto{margin-left:auto}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:relative{position:relative}.md\:sticky{position:sticky}.md\:left-72{left:calc(var(--spacing) * 72)}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-11{grid-column:span 11/span 11}.md\:col-span-12{grid-column:span 12/span 12}.md\:col-span-13{grid-column:span 13/span 13}.md\:col-span-14{grid-column:span 14/span 14}.md\:col-span-15{grid-column:span 15/span 15}.md\:col-span-16{grid-column:span 16/span 16}.md\:mt-0{margin-top:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:h-1{height:calc(var(--spacing) * 1)}.md\:h-2{height:calc(var(--spacing) * 2)}.md\:h-3{height:calc(var(--spacing) * 3)}.md\:h-4{height:calc(var(--spacing) * 4)}.md\:h-5{height:calc(var(--spacing) * 5)}.md\:h-6{height:calc(var(--spacing) * 6)}.md\:h-7{height:calc(var(--spacing) * 7)}.md\:h-8{height:calc(var(--spacing) * 8)}.md\:h-9{height:calc(var(--spacing) * 9)}.md\:h-10{height:calc(var(--spacing) * 10)}.md\:min-h-1{min-height:calc(var(--spacing) * 1)}.md\:min-h-2{min-height:calc(var(--spacing) * 2)}.md\:min-h-3{min-height:calc(var(--spacing) * 3)}.md\:min-h-4{min-height:calc(var(--spacing) * 4)}.md\:min-h-5{min-height:calc(var(--spacing) * 5)}.md\:min-h-6{min-height:calc(var(--spacing) * 6)}.md\:min-h-7{min-height:calc(var(--spacing) * 7)}.md\:min-h-8{min-height:calc(var(--spacing) * 8)}.md\:min-h-9{min-height:calc(var(--spacing) * 9)}.md\:min-h-10{min-height:calc(var(--spacing) * 10)}.md\:w-1{width:calc(var(--spacing) * 1)}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.3333%}.md\:w-1\/4{width:25%}.md\:w-1\/5{width:20%}.md\:w-1\/6{width:16.6667%}.md\:w-1\/7{width:14.2857%}.md\:w-2{width:calc(var(--spacing) * 2)}.md\:w-2\/3{width:66.6667%}.md\:w-2\/4{width:50%}.md\:w-2\/5{width:40%}.md\:w-2\/6{width:33.3333%}.md\:w-2\/7{width:28.5714%}.md\:w-3{width:calc(var(--spacing) * 3)}.md\:w-3\/4{width:75%}.md\:w-3\/5{width:60%}.md\:w-3\/6{width:50%}.md\:w-3\/7{width:42.8571%}.md\:w-4{width:calc(var(--spacing) * 4)}.md\:w-4\/5{width:80%}.md\:w-4\/6{width:66.6667%}.md\:w-4\/7{width:57.1429%}.md\:w-5{width:calc(var(--spacing) * 5)}.md\:w-5\/6{width:83.3333%}.md\:w-5\/7{width:71.4286%}.md\:w-6{width:calc(var(--spacing) * 6)}.md\:w-6\/7{width:85.7143%}.md\:w-7{width:calc(var(--spacing) * 7)}.md\:w-8{width:calc(var(--spacing) * 8)}.md\:w-9{width:calc(var(--spacing) * 9)}.md\:w-10{width:calc(var(--spacing) * 10)}.md\:w-96{width:calc(var(--spacing) * 96)}.md\:w-auto{width:auto}.md\:w-fit{width:fit-content}.md\:min-w-1{min-width:calc(var(--spacing) * 1)}.md\:min-w-2{min-width:calc(var(--spacing) * 2)}.md\:min-w-3{min-width:calc(var(--spacing) * 3)}.md\:min-w-4{min-width:calc(var(--spacing) * 4)}.md\:min-w-5{min-width:calc(var(--spacing) * 5)}.md\:min-w-6{min-width:calc(var(--spacing) * 6)}.md\:min-w-7{min-width:calc(var(--spacing) * 7)}.md\:min-w-8{min-width:calc(var(--spacing) * 8)}.md\:min-w-9{min-width:calc(var(--spacing) * 9)}.md\:min-w-10{min-width:calc(var(--spacing) * 10)}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.md\:grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.md\:grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.md\:grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-0\.5{gap:calc(var(--spacing) * .5)}.md\:gap-1{gap:calc(var(--spacing) * 1)}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:gap-4{gap:calc(var(--spacing) * 4)}.md\:gap-5{gap:calc(var(--spacing) * 5)}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:gap-7{gap:calc(var(--spacing) * 7)}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:gap-9{gap:calc(var(--spacing) * 9)}.md\:gap-10{gap:calc(var(--spacing) * 10)}.md\:gap-11{gap:calc(var(--spacing) * 11)}.md\:gap-12{gap:calc(var(--spacing) * 12)}.md\:gap-13{gap:calc(var(--spacing) * 13)}.md\:gap-14{gap:calc(var(--spacing) * 14)}.md\:gap-15{gap:calc(var(--spacing) * 15)}.md\:gap-16{gap:calc(var(--spacing) * 16)}.md\:border-0{border-style:var(--tw-border-style);border-width:0}.md\:border-2{border-style:var(--tw-border-style);border-width:2px}.md\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.md\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.md\:border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.md\:border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.md\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.md\:border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.md\:border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.md\:text-default{color:var(--color-font-default-light)}@media not print{.md\:text-default:where(.dark,.dark *){color:var(--color-font-default-dark)}}.md\:text-icon{color:var(--color-base-400)}@media not print{.md\:text-icon:where(.dark,.dark *){color:var(--color-base-500)}}.md\:text-important{color:var(--color-font-important-light)}@media not print{.md\:text-important:where(.dark,.dark *){color:var(--color-font-important-dark)}}.md\:text-link{color:var(--color-primary-600)}@media not print{.md\:text-link:where(.dark,.dark *){color:var(--color-primary-500)}}.md\:text-subtle{color:var(--color-font-subtle-light)}@media not print{.md\:text-subtle:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.md\:text-transparent{color:#0000}}@media (min-width:64rem){.lg\:scrollable-top:after{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);top:-1px;right:calc(var(--spacing) * 0);content:var(--tw-content);left:calc(var(--spacing) * 0);content:var(--tw-content);height:calc(var(--spacing) * 4);content:var(--tw-content);--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y);content:var(--tw-content);--tw-gradient-position:to top;position:absolute}@supports (background-image:linear-gradient(in lab, red, red)){.lg\:scrollable-top:after{--tw-gradient-position:to top in oklab}}.lg\:scrollable-top:after{background-image:linear-gradient(var(--tw-gradient-stops));content:var(--tw-content);--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));--tw-content:"";content:var(--tw-content)}@media not print{.lg\:scrollable-top:where(.dark,.dark *):after{content:var(--tw-content);background-image:none}}.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:sticky}.lg\:right-0{right:calc(var(--spacing) * 0)}.lg\:bottom-0{bottom:calc(var(--spacing) * 0)}.lg\:bottom-\[64px\]{bottom:64px}.lg\:left-0{left:calc(var(--spacing) * 0)}.lg\:order-none{order:0}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-13{grid-column:span 13/span 13}.lg\:col-span-14{grid-column:span 14/span 14}.lg\:col-span-15{grid-column:span 15/span 15}.lg\:col-span-16{grid-column:span 16/span 16}.lg\:m-0{margin:calc(var(--spacing) * 0)}.lg\:m-1{margin:calc(var(--spacing) * 1)}.lg\:m-2{margin:calc(var(--spacing) * 2)}.lg\:m-3{margin:calc(var(--spacing) * 3)}.lg\:m-4{margin:calc(var(--spacing) * 4)}.lg\:m-5{margin:calc(var(--spacing) * 5)}.lg\:m-6{margin:calc(var(--spacing) * 6)}.lg\:m-7{margin:calc(var(--spacing) * 7)}.lg\:m-8{margin:calc(var(--spacing) * 8)}.lg\:m-9{margin:calc(var(--spacing) * 9)}.lg\:m-10{margin:calc(var(--spacing) * 10)}.lg\:m-11{margin:calc(var(--spacing) * 11)}.lg\:m-12{margin:calc(var(--spacing) * 12)}.lg\:m-13{margin:calc(var(--spacing) * 13)}.lg\:m-14{margin:calc(var(--spacing) * 14)}.lg\:m-15{margin:calc(var(--spacing) * 15)}.lg\:m-16{margin:calc(var(--spacing) * 16)}.lg\:m-17{margin:calc(var(--spacing) * 17)}.lg\:m-18{margin:calc(var(--spacing) * 18)}.lg\:m-19{margin:calc(var(--spacing) * 19)}.lg\:m-20{margin:calc(var(--spacing) * 20)}.lg\:m-21{margin:calc(var(--spacing) * 21)}.lg\:m-22{margin:calc(var(--spacing) * 22)}.lg\:m-23{margin:calc(var(--spacing) * 23)}.lg\:m-24{margin:calc(var(--spacing) * 24)}.lg\:m-px{margin:1px}.lg\:mx-0{margin-inline:calc(var(--spacing) * 0)}.lg\:mx-1{margin-inline:calc(var(--spacing) * 1)}.lg\:mx-2{margin-inline:calc(var(--spacing) * 2)}.lg\:mx-3{margin-inline:calc(var(--spacing) * 3)}.lg\:mx-4{margin-inline:calc(var(--spacing) * 4)}.lg\:mx-5{margin-inline:calc(var(--spacing) * 5)}.lg\:mx-6{margin-inline:calc(var(--spacing) * 6)}.lg\:mx-7{margin-inline:calc(var(--spacing) * 7)}.lg\:mx-8{margin-inline:calc(var(--spacing) * 8)}.lg\:mx-9{margin-inline:calc(var(--spacing) * 9)}.lg\:mx-10{margin-inline:calc(var(--spacing) * 10)}.lg\:mx-11{margin-inline:calc(var(--spacing) * 11)}.lg\:mx-12{margin-inline:calc(var(--spacing) * 12)}.lg\:mx-13{margin-inline:calc(var(--spacing) * 13)}.lg\:mx-14{margin-inline:calc(var(--spacing) * 14)}.lg\:mx-15{margin-inline:calc(var(--spacing) * 15)}.lg\:mx-16{margin-inline:calc(var(--spacing) * 16)}.lg\:mx-17{margin-inline:calc(var(--spacing) * 17)}.lg\:mx-18{margin-inline:calc(var(--spacing) * 18)}.lg\:mx-19{margin-inline:calc(var(--spacing) * 19)}.lg\:mx-20{margin-inline:calc(var(--spacing) * 20)}.lg\:mx-21{margin-inline:calc(var(--spacing) * 21)}.lg\:mx-22{margin-inline:calc(var(--spacing) * 22)}.lg\:mx-23{margin-inline:calc(var(--spacing) * 23)}.lg\:mx-24{margin-inline:calc(var(--spacing) * 24)}.lg\:mx-px{margin-inline:1px}.lg\:my-0{margin-block:calc(var(--spacing) * 0)}.lg\:my-1{margin-block:calc(var(--spacing) * 1)}.lg\:my-2{margin-block:calc(var(--spacing) * 2)}.lg\:my-3{margin-block:calc(var(--spacing) * 3)}.lg\:my-4{margin-block:calc(var(--spacing) * 4)}.lg\:my-5{margin-block:calc(var(--spacing) * 5)}.lg\:my-6{margin-block:calc(var(--spacing) * 6)}.lg\:my-7{margin-block:calc(var(--spacing) * 7)}.lg\:my-8{margin-block:calc(var(--spacing) * 8)}.lg\:my-9{margin-block:calc(var(--spacing) * 9)}.lg\:my-10{margin-block:calc(var(--spacing) * 10)}.lg\:my-11{margin-block:calc(var(--spacing) * 11)}.lg\:my-12{margin-block:calc(var(--spacing) * 12)}.lg\:my-13{margin-block:calc(var(--spacing) * 13)}.lg\:my-14{margin-block:calc(var(--spacing) * 14)}.lg\:my-15{margin-block:calc(var(--spacing) * 15)}.lg\:my-16{margin-block:calc(var(--spacing) * 16)}.lg\:my-17{margin-block:calc(var(--spacing) * 17)}.lg\:my-18{margin-block:calc(var(--spacing) * 18)}.lg\:my-19{margin-block:calc(var(--spacing) * 19)}.lg\:my-20{margin-block:calc(var(--spacing) * 20)}.lg\:my-21{margin-block:calc(var(--spacing) * 21)}.lg\:my-22{margin-block:calc(var(--spacing) * 22)}.lg\:my-23{margin-block:calc(var(--spacing) * 23)}.lg\:my-24{margin-block:calc(var(--spacing) * 24)}.lg\:my-px{margin-block:1px}.lg\:-mt-2{margin-top:calc(var(--spacing) * -2)}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:mt-1{margin-top:calc(var(--spacing) * 1)}.lg\:mt-2{margin-top:calc(var(--spacing) * 2)}.lg\:mt-3{margin-top:calc(var(--spacing) * 3)}.lg\:mt-4{margin-top:calc(var(--spacing) * 4)}.lg\:mt-5{margin-top:calc(var(--spacing) * 5)}.lg\:mt-6{margin-top:calc(var(--spacing) * 6)}.lg\:mt-7{margin-top:calc(var(--spacing) * 7)}.lg\:mt-8{margin-top:calc(var(--spacing) * 8)}.lg\:mt-9{margin-top:calc(var(--spacing) * 9)}.lg\:mt-10{margin-top:calc(var(--spacing) * 10)}.lg\:mt-11{margin-top:calc(var(--spacing) * 11)}.lg\:mt-12{margin-top:calc(var(--spacing) * 12)}.lg\:mt-13{margin-top:calc(var(--spacing) * 13)}.lg\:mt-14{margin-top:calc(var(--spacing) * 14)}.lg\:mt-15{margin-top:calc(var(--spacing) * 15)}.lg\:mt-16{margin-top:calc(var(--spacing) * 16)}.lg\:mt-17{margin-top:calc(var(--spacing) * 17)}.lg\:mt-18{margin-top:calc(var(--spacing) * 18)}.lg\:mt-19{margin-top:calc(var(--spacing) * 19)}.lg\:mt-20{margin-top:calc(var(--spacing) * 20)}.lg\:mt-21{margin-top:calc(var(--spacing) * 21)}.lg\:mt-22{margin-top:calc(var(--spacing) * 22)}.lg\:mt-23{margin-top:calc(var(--spacing) * 23)}.lg\:mt-24{margin-top:calc(var(--spacing) * 24)}.lg\:mt-px{margin-top:1px}.lg\:mr-0{margin-right:calc(var(--spacing) * 0)}.lg\:mr-1{margin-right:calc(var(--spacing) * 1)}.lg\:mr-2{margin-right:calc(var(--spacing) * 2)}.lg\:mr-3{margin-right:calc(var(--spacing) * 3)}.lg\:mr-4{margin-right:calc(var(--spacing) * 4)}.lg\:mr-5{margin-right:calc(var(--spacing) * 5)}.lg\:mr-6{margin-right:calc(var(--spacing) * 6)}.lg\:mr-7{margin-right:calc(var(--spacing) * 7)}.lg\:mr-8{margin-right:calc(var(--spacing) * 8)}.lg\:mr-9{margin-right:calc(var(--spacing) * 9)}.lg\:mr-10{margin-right:calc(var(--spacing) * 10)}.lg\:mr-11{margin-right:calc(var(--spacing) * 11)}.lg\:mr-12{margin-right:calc(var(--spacing) * 12)}.lg\:mr-13{margin-right:calc(var(--spacing) * 13)}.lg\:mr-14{margin-right:calc(var(--spacing) * 14)}.lg\:mr-15{margin-right:calc(var(--spacing) * 15)}.lg\:mr-16{margin-right:calc(var(--spacing) * 16)}.lg\:mr-17{margin-right:calc(var(--spacing) * 17)}.lg\:mr-18{margin-right:calc(var(--spacing) * 18)}.lg\:mr-19{margin-right:calc(var(--spacing) * 19)}.lg\:mr-20{margin-right:calc(var(--spacing) * 20)}.lg\:mr-21{margin-right:calc(var(--spacing) * 21)}.lg\:mr-22{margin-right:calc(var(--spacing) * 22)}.lg\:mr-23{margin-right:calc(var(--spacing) * 23)}.lg\:mr-24{margin-right:calc(var(--spacing) * 24)}.lg\:mr-px{margin-right:1px}.lg\:-mb-8{margin-bottom:calc(var(--spacing) * -8)}.lg\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.lg\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.lg\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.lg\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.lg\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.lg\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.lg\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.lg\:mb-7{margin-bottom:calc(var(--spacing) * 7)}.lg\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.lg\:mb-9{margin-bottom:calc(var(--spacing) * 9)}.lg\:mb-10{margin-bottom:calc(var(--spacing) * 10)}.lg\:mb-11{margin-bottom:calc(var(--spacing) * 11)}.lg\:mb-12{margin-bottom:calc(var(--spacing) * 12)}.lg\:mb-13{margin-bottom:calc(var(--spacing) * 13)}.lg\:mb-14{margin-bottom:calc(var(--spacing) * 14)}.lg\:mb-15{margin-bottom:calc(var(--spacing) * 15)}.lg\:mb-16{margin-bottom:calc(var(--spacing) * 16)}.lg\:mb-17{margin-bottom:calc(var(--spacing) * 17)}.lg\:mb-18{margin-bottom:calc(var(--spacing) * 18)}.lg\:mb-19{margin-bottom:calc(var(--spacing) * 19)}.lg\:mb-20{margin-bottom:calc(var(--spacing) * 20)}.lg\:mb-21{margin-bottom:calc(var(--spacing) * 21)}.lg\:mb-22{margin-bottom:calc(var(--spacing) * 22)}.lg\:mb-23{margin-bottom:calc(var(--spacing) * 23)}.lg\:mb-24{margin-bottom:calc(var(--spacing) * 24)}.lg\:mb-px{margin-bottom:1px}.lg\:ml-0{margin-left:calc(var(--spacing) * 0)}.lg\:ml-1{margin-left:calc(var(--spacing) * 1)}.lg\:ml-2{margin-left:calc(var(--spacing) * 2)}.lg\:ml-3{margin-left:calc(var(--spacing) * 3)}.lg\:ml-4{margin-left:calc(var(--spacing) * 4)}.lg\:ml-5{margin-left:calc(var(--spacing) * 5)}.lg\:ml-6{margin-left:calc(var(--spacing) * 6)}.lg\:ml-7{margin-left:calc(var(--spacing) * 7)}.lg\:ml-8{margin-left:calc(var(--spacing) * 8)}.lg\:ml-9{margin-left:calc(var(--spacing) * 9)}.lg\:ml-10{margin-left:calc(var(--spacing) * 10)}.lg\:ml-11{margin-left:calc(var(--spacing) * 11)}.lg\:ml-12{margin-left:calc(var(--spacing) * 12)}.lg\:ml-13{margin-left:calc(var(--spacing) * 13)}.lg\:ml-14{margin-left:calc(var(--spacing) * 14)}.lg\:ml-15{margin-left:calc(var(--spacing) * 15)}.lg\:ml-16{margin-left:calc(var(--spacing) * 16)}.lg\:ml-17{margin-left:calc(var(--spacing) * 17)}.lg\:ml-18{margin-left:calc(var(--spacing) * 18)}.lg\:ml-19{margin-left:calc(var(--spacing) * 19)}.lg\:ml-20{margin-left:calc(var(--spacing) * 20)}.lg\:ml-21{margin-left:calc(var(--spacing) * 21)}.lg\:ml-22{margin-left:calc(var(--spacing) * 22)}.lg\:ml-23{margin-left:calc(var(--spacing) * 23)}.lg\:ml-24{margin-left:calc(var(--spacing) * 24)}.lg\:ml-auto{margin-left:auto}.lg\:ml-px{margin-left:1px}.min-lg\:-ml-px{margin-left:-1px}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:table{display:table}.lg\:table-cell{display:table-cell}.lg\:table-header-group{display:table-header-group}.lg\:table-row{display:table-row}.lg\:table-row-group{display:table-row-group}.lg\:h-1{height:calc(var(--spacing) * 1)}.lg\:h-2{height:calc(var(--spacing) * 2)}.lg\:h-3{height:calc(var(--spacing) * 3)}.lg\:h-4{height:calc(var(--spacing) * 4)}.lg\:h-5{height:calc(var(--spacing) * 5)}.lg\:h-6{height:calc(var(--spacing) * 6)}.lg\:h-7{height:calc(var(--spacing) * 7)}.lg\:h-8{height:calc(var(--spacing) * 8)}.lg\:h-9{height:calc(var(--spacing) * 9)}.lg\:h-10{height:calc(var(--spacing) * 10)}.lg\:h-\[38px\]{height:38px}.lg\:h-\[64px\]{height:64px}.lg\:min-h-1{min-height:calc(var(--spacing) * 1)}.lg\:min-h-2{min-height:calc(var(--spacing) * 2)}.lg\:min-h-3{min-height:calc(var(--spacing) * 3)}.lg\:min-h-4{min-height:calc(var(--spacing) * 4)}.lg\:min-h-5{min-height:calc(var(--spacing) * 5)}.lg\:min-h-6{min-height:calc(var(--spacing) * 6)}.lg\:min-h-7{min-height:calc(var(--spacing) * 7)}.lg\:min-h-8{min-height:calc(var(--spacing) * 8)}.lg\:min-h-9{min-height:calc(var(--spacing) * 9)}.lg\:min-h-10{min-height:calc(var(--spacing) * 10)}.lg\:w-1{width:calc(var(--spacing) * 1)}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.3333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:w-1\/6{width:16.6667%}.lg\:w-1\/7{width:14.2857%}.lg\:w-2{width:calc(var(--spacing) * 2)}.lg\:w-2\/3{width:66.6667%}.lg\:w-2\/4{width:50%}.lg\:w-2\/5{width:40%}.lg\:w-2\/6{width:33.3333%}.lg\:w-2\/7{width:28.5714%}.lg\:w-3{width:calc(var(--spacing) * 3)}.lg\:w-3\/4{width:75%}.lg\:w-3\/5{width:60%}.lg\:w-3\/6{width:50%}.lg\:w-3\/7{width:42.8571%}.lg\:w-4{width:calc(var(--spacing) * 4)}.lg\:w-4\/5{width:80%}.lg\:w-4\/6{width:66.6667%}.lg\:w-4\/7{width:57.1429%}.lg\:w-5{width:calc(var(--spacing) * 5)}.lg\:w-5\/6{width:83.3333%}.lg\:w-5\/7{width:71.4286%}.lg\:w-6{width:calc(var(--spacing) * 6)}.lg\:w-6\/7{width:85.7143%}.lg\:w-7{width:calc(var(--spacing) * 7)}.lg\:w-8{width:calc(var(--spacing) * 8)}.lg\:w-9{width:calc(var(--spacing) * 9)}.lg\:w-10{width:calc(var(--spacing) * 10)}.lg\:w-56{width:calc(var(--spacing) * 56)}.lg\:w-96{width:calc(var(--spacing) * 96)}.lg\:w-auto{width:auto}.lg\:w-fit{width:fit-content}.lg\:w-px{width:1px}.lg\:min-w-1{min-width:calc(var(--spacing) * 1)}.lg\:min-w-2{min-width:calc(var(--spacing) * 2)}.lg\:min-w-3{min-width:calc(var(--spacing) * 3)}.lg\:min-w-4{min-width:calc(var(--spacing) * 4)}.lg\:min-w-5{min-width:calc(var(--spacing) * 5)}.lg\:min-w-6{min-width:calc(var(--spacing) * 6)}.lg\:min-w-7{min-width:calc(var(--spacing) * 7)}.lg\:min-w-8{min-width:calc(var(--spacing) * 8)}.lg\:min-w-9{min-width:calc(var(--spacing) * 9)}.lg\:min-w-10{min-width:calc(var(--spacing) * 10)}.lg\:min-w-56{min-width:calc(var(--spacing) * 56)}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.lg\:grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.lg\:grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.lg\:grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:items-center{align-items:center}.lg\:justify-start{justify-content:flex-start}.lg\:gap-0{gap:calc(var(--spacing) * 0)}.lg\:gap-0\.5{gap:calc(var(--spacing) * .5)}.lg\:gap-1{gap:calc(var(--spacing) * 1)}.lg\:gap-2{gap:calc(var(--spacing) * 2)}.lg\:gap-3{gap:calc(var(--spacing) * 3)}.lg\:gap-4{gap:calc(var(--spacing) * 4)}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:gap-6{gap:calc(var(--spacing) * 6)}.lg\:gap-7{gap:calc(var(--spacing) * 7)}.lg\:gap-8{gap:calc(var(--spacing) * 8)}.lg\:gap-9{gap:calc(var(--spacing) * 9)}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-11{gap:calc(var(--spacing) * 11)}.lg\:gap-12{gap:calc(var(--spacing) * 12)}.lg\:gap-13{gap:calc(var(--spacing) * 13)}.lg\:gap-14{gap:calc(var(--spacing) * 14)}.lg\:gap-15{gap:calc(var(--spacing) * 15)}.lg\:gap-16{gap:calc(var(--spacing) * 16)}.lg\:self-start{align-self:flex-start}.lg\:overflow-hidden{overflow:hidden}.lg\:rounded-default{border-radius:var(--border-radius,6px)}.lg\:rounded-none{border-radius:0}.lg\:rounded-t-default{border-top-left-radius:var(--border-radius,6px);border-top-right-radius:var(--border-radius,6px)}.lg\:rounded-b-default{border-bottom-right-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.lg\:border{border-style:var(--tw-border-style);border-width:1px}.lg\:border-0{border-style:var(--tw-border-style);border-width:0}.lg\:border-2{border-style:var(--tw-border-style);border-width:2px}.lg\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.lg\:border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.lg\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.lg\:border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.lg\:border-none{--tw-border-style:none;border-style:none}.lg\:border-base-200{border-color:var(--color-base-200)}.lg\:bg-transparent{background-color:#0000}.lg\:bg-white{background-color:var(--color-white)}.lg\:bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.lg\:bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.lg\:p-0{padding:calc(var(--spacing) * 0)}.lg\:p-1{padding:calc(var(--spacing) * 1)}.lg\:p-2{padding:calc(var(--spacing) * 2)}.lg\:p-3{padding:calc(var(--spacing) * 3)}.lg\:p-4{padding:calc(var(--spacing) * 4)}.lg\:p-5{padding:calc(var(--spacing) * 5)}.lg\:p-6{padding:calc(var(--spacing) * 6)}.lg\:p-7{padding:calc(var(--spacing) * 7)}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:p-9{padding:calc(var(--spacing) * 9)}.lg\:p-10{padding:calc(var(--spacing) * 10)}.lg\:p-11{padding:calc(var(--spacing) * 11)}.lg\:p-12{padding:calc(var(--spacing) * 12)}.lg\:p-13{padding:calc(var(--spacing) * 13)}.lg\:p-14{padding:calc(var(--spacing) * 14)}.lg\:p-15{padding:calc(var(--spacing) * 15)}.lg\:p-16{padding:calc(var(--spacing) * 16)}.lg\:p-17{padding:calc(var(--spacing) * 17)}.lg\:p-18{padding:calc(var(--spacing) * 18)}.lg\:p-19{padding:calc(var(--spacing) * 19)}.lg\:p-20{padding:calc(var(--spacing) * 20)}.lg\:p-21{padding:calc(var(--spacing) * 21)}.lg\:p-22{padding:calc(var(--spacing) * 22)}.lg\:p-23{padding:calc(var(--spacing) * 23)}.lg\:p-24{padding:calc(var(--spacing) * 24)}.lg\:p-32{padding:calc(var(--spacing) * 32)}.lg\:p-px{padding:1px}.lg\:px-0{padding-inline:calc(var(--spacing) * 0)}.lg\:px-1{padding-inline:calc(var(--spacing) * 1)}.lg\:px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.lg\:px-2{padding-inline:calc(var(--spacing) * 2)}.lg\:px-3{padding-inline:calc(var(--spacing) * 3)}.lg\:px-4{padding-inline:calc(var(--spacing) * 4)}.lg\:px-5{padding-inline:calc(var(--spacing) * 5)}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}.lg\:px-7{padding-inline:calc(var(--spacing) * 7)}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:px-9{padding-inline:calc(var(--spacing) * 9)}.lg\:px-10{padding-inline:calc(var(--spacing) * 10)}.lg\:px-11{padding-inline:calc(var(--spacing) * 11)}.lg\:px-12{padding-inline:calc(var(--spacing) * 12)}.lg\:px-13{padding-inline:calc(var(--spacing) * 13)}.lg\:px-14{padding-inline:calc(var(--spacing) * 14)}.lg\:px-15{padding-inline:calc(var(--spacing) * 15)}.lg\:px-16{padding-inline:calc(var(--spacing) * 16)}.lg\:px-17{padding-inline:calc(var(--spacing) * 17)}.lg\:px-18{padding-inline:calc(var(--spacing) * 18)}.lg\:px-19{padding-inline:calc(var(--spacing) * 19)}.lg\:px-20{padding-inline:calc(var(--spacing) * 20)}.lg\:px-21{padding-inline:calc(var(--spacing) * 21)}.lg\:px-22{padding-inline:calc(var(--spacing) * 22)}.lg\:px-23{padding-inline:calc(var(--spacing) * 23)}.lg\:px-24{padding-inline:calc(var(--spacing) * 24)}.lg\:px-px{padding-inline:1px}.lg\:py-0{padding-block:calc(var(--spacing) * 0)}.lg\:py-1{padding-block:calc(var(--spacing) * 1)}.lg\:py-2{padding-block:calc(var(--spacing) * 2)}.lg\:py-3{padding-block:calc(var(--spacing) * 3)}.lg\:py-4{padding-block:calc(var(--spacing) * 4)}.lg\:py-5{padding-block:calc(var(--spacing) * 5)}.lg\:py-6{padding-block:calc(var(--spacing) * 6)}.lg\:py-7{padding-block:calc(var(--spacing) * 7)}.lg\:py-8{padding-block:calc(var(--spacing) * 8)}.lg\:py-9{padding-block:calc(var(--spacing) * 9)}.lg\:py-10{padding-block:calc(var(--spacing) * 10)}.lg\:py-11{padding-block:calc(var(--spacing) * 11)}.lg\:py-12{padding-block:calc(var(--spacing) * 12)}.lg\:py-13{padding-block:calc(var(--spacing) * 13)}.lg\:py-14{padding-block:calc(var(--spacing) * 14)}.lg\:py-15{padding-block:calc(var(--spacing) * 15)}.lg\:py-16{padding-block:calc(var(--spacing) * 16)}.lg\:py-17{padding-block:calc(var(--spacing) * 17)}.lg\:py-18{padding-block:calc(var(--spacing) * 18)}.lg\:py-19{padding-block:calc(var(--spacing) * 19)}.lg\:py-20{padding-block:calc(var(--spacing) * 20)}.lg\:py-21{padding-block:calc(var(--spacing) * 21)}.lg\:py-22{padding-block:calc(var(--spacing) * 22)}.lg\:py-23{padding-block:calc(var(--spacing) * 23)}.lg\:py-24{padding-block:calc(var(--spacing) * 24)}.lg\:py-px{padding-block:1px}.lg\:pt-0{padding-top:calc(var(--spacing) * 0)}.lg\:pt-1{padding-top:calc(var(--spacing) * 1)}.lg\:pt-2{padding-top:calc(var(--spacing) * 2)}.lg\:pt-3{padding-top:calc(var(--spacing) * 3)}.lg\:pt-4{padding-top:calc(var(--spacing) * 4)}.lg\:pt-5{padding-top:calc(var(--spacing) * 5)}.lg\:pt-6{padding-top:calc(var(--spacing) * 6)}.lg\:pt-7{padding-top:calc(var(--spacing) * 7)}.lg\:pt-8{padding-top:calc(var(--spacing) * 8)}.lg\:pt-9{padding-top:calc(var(--spacing) * 9)}.lg\:pt-10{padding-top:calc(var(--spacing) * 10)}.lg\:pt-11{padding-top:calc(var(--spacing) * 11)}.lg\:pt-12{padding-top:calc(var(--spacing) * 12)}.lg\:pt-13{padding-top:calc(var(--spacing) * 13)}.lg\:pt-14{padding-top:calc(var(--spacing) * 14)}.lg\:pt-15{padding-top:calc(var(--spacing) * 15)}.lg\:pt-16{padding-top:calc(var(--spacing) * 16)}.lg\:pt-17{padding-top:calc(var(--spacing) * 17)}.lg\:pt-18{padding-top:calc(var(--spacing) * 18)}.lg\:pt-19{padding-top:calc(var(--spacing) * 19)}.lg\:pt-20{padding-top:calc(var(--spacing) * 20)}.lg\:pt-21{padding-top:calc(var(--spacing) * 21)}.lg\:pt-22{padding-top:calc(var(--spacing) * 22)}.lg\:pt-23{padding-top:calc(var(--spacing) * 23)}.lg\:pt-24{padding-top:calc(var(--spacing) * 24)}.lg\:pt-px{padding-top:1px}.lg\:pr-0{padding-right:calc(var(--spacing) * 0)}.lg\:pr-1{padding-right:calc(var(--spacing) * 1)}.lg\:pr-2{padding-right:calc(var(--spacing) * 2)}.lg\:pr-3{padding-right:calc(var(--spacing) * 3)}.lg\:pr-4{padding-right:calc(var(--spacing) * 4)}.lg\:pr-5{padding-right:calc(var(--spacing) * 5)}.lg\:pr-6{padding-right:calc(var(--spacing) * 6)}.lg\:pr-7{padding-right:calc(var(--spacing) * 7)}.lg\:pr-8{padding-right:calc(var(--spacing) * 8)}.lg\:pr-9{padding-right:calc(var(--spacing) * 9)}.lg\:pr-10{padding-right:calc(var(--spacing) * 10)}.lg\:pr-11{padding-right:calc(var(--spacing) * 11)}.lg\:pr-12{padding-right:calc(var(--spacing) * 12)}.lg\:pr-13{padding-right:calc(var(--spacing) * 13)}.lg\:pr-14{padding-right:calc(var(--spacing) * 14)}.lg\:pr-15{padding-right:calc(var(--spacing) * 15)}.lg\:pr-16{padding-right:calc(var(--spacing) * 16)}.lg\:pr-17{padding-right:calc(var(--spacing) * 17)}.lg\:pr-18{padding-right:calc(var(--spacing) * 18)}.lg\:pr-19{padding-right:calc(var(--spacing) * 19)}.lg\:pr-20{padding-right:calc(var(--spacing) * 20)}.lg\:pr-21{padding-right:calc(var(--spacing) * 21)}.lg\:pr-22{padding-right:calc(var(--spacing) * 22)}.lg\:pr-23{padding-right:calc(var(--spacing) * 23)}.lg\:pr-24{padding-right:calc(var(--spacing) * 24)}.lg\:pr-px{padding-right:1px}.lg\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.lg\:pb-1{padding-bottom:calc(var(--spacing) * 1)}.lg\:pb-2{padding-bottom:calc(var(--spacing) * 2)}.lg\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.lg\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.lg\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.lg\:pb-6{padding-bottom:calc(var(--spacing) * 6)}.lg\:pb-7{padding-bottom:calc(var(--spacing) * 7)}.lg\:pb-8{padding-bottom:calc(var(--spacing) * 8)}.lg\:pb-9{padding-bottom:calc(var(--spacing) * 9)}.lg\:pb-10{padding-bottom:calc(var(--spacing) * 10)}.lg\:pb-11{padding-bottom:calc(var(--spacing) * 11)}.lg\:pb-12{padding-bottom:calc(var(--spacing) * 12)}.lg\:pb-13{padding-bottom:calc(var(--spacing) * 13)}.lg\:pb-14{padding-bottom:calc(var(--spacing) * 14)}.lg\:pb-15{padding-bottom:calc(var(--spacing) * 15)}.lg\:pb-16{padding-bottom:calc(var(--spacing) * 16)}.lg\:pb-17{padding-bottom:calc(var(--spacing) * 17)}.lg\:pb-18{padding-bottom:calc(var(--spacing) * 18)}.lg\:pb-19{padding-bottom:calc(var(--spacing) * 19)}.lg\:pb-20{padding-bottom:calc(var(--spacing) * 20)}.lg\:pb-21{padding-bottom:calc(var(--spacing) * 21)}.lg\:pb-22{padding-bottom:calc(var(--spacing) * 22)}.lg\:pb-23{padding-bottom:calc(var(--spacing) * 23)}.lg\:pb-24{padding-bottom:calc(var(--spacing) * 24)}.lg\:pb-px{padding-bottom:1px}.lg\:pl-0{padding-left:calc(var(--spacing) * 0)}.lg\:pl-1{padding-left:calc(var(--spacing) * 1)}.lg\:pl-2{padding-left:calc(var(--spacing) * 2)}.lg\:pl-3{padding-left:calc(var(--spacing) * 3)}.lg\:pl-4{padding-left:calc(var(--spacing) * 4)}.lg\:pl-5{padding-left:calc(var(--spacing) * 5)}.lg\:pl-6{padding-left:calc(var(--spacing) * 6)}.lg\:pl-7{padding-left:calc(var(--spacing) * 7)}.lg\:pl-8{padding-left:calc(var(--spacing) * 8)}.lg\:pl-9{padding-left:calc(var(--spacing) * 9)}.lg\:pl-10{padding-left:calc(var(--spacing) * 10)}.lg\:pl-11{padding-left:calc(var(--spacing) * 11)}.lg\:pl-12{padding-left:calc(var(--spacing) * 12)}.lg\:pl-13{padding-left:calc(var(--spacing) * 13)}.lg\:pl-14{padding-left:calc(var(--spacing) * 14)}.lg\:pl-15{padding-left:calc(var(--spacing) * 15)}.lg\:pl-16{padding-left:calc(var(--spacing) * 16)}.lg\:pl-17{padding-left:calc(var(--spacing) * 17)}.lg\:pl-18{padding-left:calc(var(--spacing) * 18)}.lg\:pl-19{padding-left:calc(var(--spacing) * 19)}.lg\:pl-20{padding-left:calc(var(--spacing) * 20)}.lg\:pl-21{padding-left:calc(var(--spacing) * 21)}.lg\:pl-22{padding-left:calc(var(--spacing) * 22)}.lg\:pl-23{padding-left:calc(var(--spacing) * 23)}.lg\:pl-24{padding-left:calc(var(--spacing) * 24)}.lg\:pl-px{padding-left:1px}.lg\:text-left{text-align:left}.lg\:align-top{vertical-align:top}.lg\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.lg\:leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.lg\:leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.lg\:leading-9{--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9)}.lg\:leading-10{--tw-leading:calc(var(--spacing) * 10);line-height:calc(var(--spacing) * 10)}.lg\:leading-11{--tw-leading:calc(var(--spacing) * 11);line-height:calc(var(--spacing) * 11)}.lg\:leading-12{--tw-leading:calc(var(--spacing) * 12);line-height:calc(var(--spacing) * 12)}.lg\:leading-13{--tw-leading:calc(var(--spacing) * 13);line-height:calc(var(--spacing) * 13)}.lg\:leading-14{--tw-leading:calc(var(--spacing) * 14);line-height:calc(var(--spacing) * 14)}.lg\:leading-15{--tw-leading:calc(var(--spacing) * 15);line-height:calc(var(--spacing) * 15)}.lg\:leading-16{--tw-leading:calc(var(--spacing) * 16);line-height:calc(var(--spacing) * 16)}.lg\:leading-\[38px\]{--tw-leading:38px;line-height:38px}.lg\:text-default{color:var(--color-font-default-light)}@media not print{.lg\:text-default:where(.dark,.dark *){color:var(--color-font-default-dark)}}.lg\:text-icon{color:var(--color-base-400)}@media not print{.lg\:text-icon:where(.dark,.dark *){color:var(--color-base-500)}}.lg\:text-important{color:var(--color-font-important-light)}@media not print{.lg\:text-important:where(.dark,.dark *){color:var(--color-font-important-dark)}}.lg\:text-link{color:var(--color-primary-600)}@media not print{.lg\:text-link:where(.dark,.dark *){color:var(--color-primary-500)}}.lg\:text-subtle{color:var(--color-font-subtle-light)}@media not print{.lg\:text-subtle:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.lg\:text-transparent{color:#0000}.lg\:shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.lg\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.lg\:shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.lg\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}:is(.lg\:\*\:m-0>*){margin:calc(var(--spacing) * 0)}.group-\[\.changelist-actions\]\:lg\:w-72:is(:where(.group).changelist-actions *){width:calc(var(--spacing) * 72)}.lg\:group-\[\.field-row\]\:flex-row:is(:where(.group).field-row *){flex-direction:row}.lg\:group-\[\.field-row\]\:items-center:is(:where(.group).field-row *){align-items:center}.lg\:group-\[\.field-tabular\]\:flex-row:is(:where(.group).field-tabular *){flex-direction:row}.lg\:group-\[\.field-tabular\]\:items-center:is(:where(.group).field-tabular *){align-items:center}.lg\:group-\[\.first-row\]\:border-t-0:is(:where(.group).first-row *){border-top-style:var(--tw-border-style);border-top-width:0}.lg\:group-\[\.last\]\/nested\:border-b-0:is(:where(.group\/nested).last *),.lg\:group-\[\.last\]\/parent\:border-b-0:is(:where(.group\/parent).last *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:before\:hidden:before{content:var(--tw-content);display:none}.min-lg\:first\:rounded-l-default:first-child{border-top-left-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.lg\:first\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.lg\:first\:border-l-0:first-child{border-left-style:var(--tw-border-style);border-left-width:0}.lg\:first\:pl-3:first-child{padding-left:calc(var(--spacing) * 3)}.lg\:first\:pl-6:first-child{padding-left:calc(var(--spacing) * 6)}.min-lg\:last\:rounded-r-default:last-child{border-top-right-radius:var(--border-radius,6px);border-bottom-right-radius:var(--border-radius,6px)}.lg\:last\:pr-3:last-child{padding-right:calc(var(--spacing) * 3)}.lg\:last\:pr-6:last-child{padding-right:calc(var(--spacing) * 6)}}@media (min-width:80rem){.xl\:absolute{position:absolute}.xl\:relative{position:relative}.xl\:sticky{position:sticky}.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-5{grid-column:span 5/span 5}.xl\:col-span-6{grid-column:span 6/span 6}.xl\:col-span-7{grid-column:span 7/span 7}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:col-span-9{grid-column:span 9/span 9}.xl\:col-span-10{grid-column:span 10/span 10}.xl\:col-span-11{grid-column:span 11/span 11}.xl\:col-span-12{grid-column:span 12/span 12}.xl\:col-span-13{grid-column:span 13/span 13}.xl\:col-span-14{grid-column:span 14/span 14}.xl\:col-span-15{grid-column:span 15/span 15}.xl\:col-span-16{grid-column:span 16/span 16}.xl\:ml-0{margin-left:calc(var(--spacing) * 0)}.xl\:ml-72{margin-left:calc(var(--spacing) * 72)}.xl\:block{display:block}.xl\:block\!{display:block!important}.xl\:flex{display:flex}.xl\:hidden\!{display:none!important}.xl\:max-w-4xl{max-width:var(--container-4xl)}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xl\:grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xl\:grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xl\:grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xl\:gap-0\.5{gap:calc(var(--spacing) * .5)}.xl\:gap-1{gap:calc(var(--spacing) * 1)}.xl\:gap-2{gap:calc(var(--spacing) * 2)}.xl\:gap-3{gap:calc(var(--spacing) * 3)}.xl\:gap-4{gap:calc(var(--spacing) * 4)}.xl\:gap-5{gap:calc(var(--spacing) * 5)}.xl\:gap-6{gap:calc(var(--spacing) * 6)}.xl\:gap-7{gap:calc(var(--spacing) * 7)}.xl\:gap-8{gap:calc(var(--spacing) * 8)}.xl\:gap-9{gap:calc(var(--spacing) * 9)}.xl\:gap-10{gap:calc(var(--spacing) * 10)}.xl\:gap-11{gap:calc(var(--spacing) * 11)}.xl\:gap-12{gap:calc(var(--spacing) * 12)}.xl\:gap-13{gap:calc(var(--spacing) * 13)}.xl\:gap-14{gap:calc(var(--spacing) * 14)}.xl\:gap-15{gap:calc(var(--spacing) * 15)}.xl\:gap-16{gap:calc(var(--spacing) * 16)}.xl\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.xl\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:96rem){.\32 xl\:absolute{position:absolute}.\32 xl\:relative{position:relative}.\32 xl\:sticky{position:sticky}.\32 xl\:top-4{top:calc(var(--spacing) * 4)}.\32 xl\:z-10{z-index:10}.\32 xl\:m-0{margin:calc(var(--spacing) * 0)}.\32 xl\:block{display:block}.\32 xl\:block\!{display:block!important}.\32 xl\:flex{display:flex}.\32 xl\:hidden{display:none}.\32 xl\:overflow-visible{overflow:visible}.\32 xl\:border-0{border-style:var(--tw-border-style);border-width:0}.\32 xl\:border-t-0\!{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.\32 xl\:bg-transparent{background-color:#0000}.\32 xl\:bg-transparent\!{background-color:#0000!important}.\32 xl\:px-0{padding-inline:calc(var(--spacing) * 0)}.\32 xl\:py-0{padding-block:calc(var(--spacing) * 0)}.\32 xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.\32 xl\:pb-1{padding-bottom:calc(var(--spacing) * 1)}.\32 xl\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@container (min-width:1570px){.\@min-\[1570px\]\:-mx-4{margin-inline:calc(var(--spacing) * -4)}}@media not print{.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:border-r:where(.dark,.dark *){border-right-style:var(--tw-border-style);border-right-width:1px}.dark\:border-base-50:where(.dark,.dark *){border-color:var(--color-base-50)}.dark\:border-base-100:where(.dark,.dark *){border-color:var(--color-base-100)}.dark\:border-base-200:where(.dark,.dark *){border-color:var(--color-base-200)}.dark\:border-base-300:where(.dark,.dark *){border-color:var(--color-base-300)}.dark\:border-base-400:where(.dark,.dark *){border-color:var(--color-base-400)}.dark\:border-base-500:where(.dark,.dark *){border-color:var(--color-base-500)}.dark\:border-base-600:where(.dark,.dark *){border-color:var(--color-base-600)}.dark\:border-base-700:where(.dark,.dark *){border-color:var(--color-base-700)}.dark\:border-base-700\!:where(.dark,.dark *){border-color:var(--color-base-700)!important}.dark\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}.dark\:border-base-900:where(.dark,.dark *){border-color:var(--color-base-900)}.dark\:border-base-950:where(.dark,.dark *){border-color:var(--color-base-950)}.dark\:border-blue-500:where(.dark,.dark *){border-color:var(--color-blue-500)}.dark\:border-blue-500\/10:where(.dark,.dark *){border-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-500\/10:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.dark\:border-green-500:where(.dark,.dark *){border-color:var(--color-green-500)}.dark\:border-orange-500:where(.dark,.dark *){border-color:var(--color-orange-500)}.dark\:border-primary-500:where(.dark,.dark *){border-color:var(--color-primary-500)}.dark\:border-red-500:where(.dark,.dark *){border-color:var(--color-red-500)}.dark\:border-red-500\/20:where(.dark,.dark *){border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.dark\:border-transparent:where(.dark,.dark *){border-color:#0000}.dark\:border-r-base-700:where(.dark,.dark *){border-right-color:var(--color-base-700)}.dark\:bg-base-50:where(.dark,.dark *){background-color:var(--color-base-50)}.dark\:bg-base-100:where(.dark,.dark *){background-color:var(--color-base-100)}.dark\:bg-base-200:where(.dark,.dark *){background-color:var(--color-base-200)}.dark\:bg-base-300:where(.dark,.dark *){background-color:var(--color-base-300)}.dark\:bg-base-400:where(.dark,.dark *){background-color:var(--color-base-400)}.dark\:bg-base-500:where(.dark,.dark *),.dark\:bg-base-500\/20:where(.dark,.dark *){background-color:var(--color-base-500)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-base-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-500) 20%, transparent)}}.dark\:bg-base-600:where(.dark,.dark *){background-color:var(--color-base-600)}.dark\:bg-base-700:where(.dark,.dark *){background-color:var(--color-base-700)}.dark\:bg-base-800:where(.dark,.dark *){background-color:var(--color-base-800)}.dark\:bg-base-800\!:where(.dark,.dark *){background-color:var(--color-base-800)!important}.dark\:bg-base-900:where(.dark,.dark *),.dark\:bg-base-900\/80:where(.dark,.dark *){background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-base-900\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}.dark\:bg-base-950:where(.dark,.dark *),.dark\:bg-base-950\/20:where(.dark,.dark *){background-color:var(--color-base-950)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-base-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-950) 20%, transparent)}}.dark\:bg-blue-50:where(.dark,.dark *){background-color:var(--color-blue-50)}.dark\:bg-blue-100:where(.dark,.dark *){background-color:var(--color-blue-100)}.dark\:bg-blue-200:where(.dark,.dark *){background-color:var(--color-blue-200)}.dark\:bg-blue-300:where(.dark,.dark *){background-color:var(--color-blue-300)}.dark\:bg-blue-400:where(.dark,.dark *){background-color:var(--color-blue-400)}.dark\:bg-blue-500:where(.dark,.dark *){background-color:var(--color-blue-500)}.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.dark\:bg-blue-600:where(.dark,.dark *){background-color:var(--color-blue-600)}.dark\:bg-blue-700:where(.dark,.dark *){background-color:var(--color-blue-700)}.dark\:bg-blue-800:where(.dark,.dark *){background-color:var(--color-blue-800)}.dark\:bg-blue-900:where(.dark,.dark *){background-color:var(--color-blue-900)}.dark\:bg-blue-950:where(.dark,.dark *){background-color:var(--color-blue-950)}.dark\:bg-green-50:where(.dark,.dark *){background-color:var(--color-green-50)}.dark\:bg-green-100:where(.dark,.dark *){background-color:var(--color-green-100)}.dark\:bg-green-200:where(.dark,.dark *){background-color:var(--color-green-200)}.dark\:bg-green-300:where(.dark,.dark *){background-color:var(--color-green-300)}.dark\:bg-green-400:where(.dark,.dark *){background-color:var(--color-green-400)}.dark\:bg-green-500:where(.dark,.dark *){background-color:var(--color-green-500)}.dark\:bg-green-500\/20:where(.dark,.dark *){background-color:#00c75833}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-green-500) 20%, transparent)}}.dark\:bg-green-600:where(.dark,.dark *){background-color:var(--color-green-600)}.dark\:bg-green-700:where(.dark,.dark *){background-color:var(--color-green-700)}.dark\:bg-green-800:where(.dark,.dark *){background-color:var(--color-green-800)}.dark\:bg-green-900:where(.dark,.dark *){background-color:var(--color-green-900)}.dark\:bg-green-950:where(.dark,.dark *){background-color:var(--color-green-950)}.dark\:bg-orange-50:where(.dark,.dark *){background-color:var(--color-orange-50)}.dark\:bg-orange-100:where(.dark,.dark *){background-color:var(--color-orange-100)}.dark\:bg-orange-200:where(.dark,.dark *){background-color:var(--color-orange-200)}.dark\:bg-orange-300:where(.dark,.dark *){background-color:var(--color-orange-300)}.dark\:bg-orange-400:where(.dark,.dark *){background-color:var(--color-orange-400)}.dark\:bg-orange-500:where(.dark,.dark *){background-color:var(--color-orange-500)}.dark\:bg-orange-500\/20:where(.dark,.dark *){background-color:#fe6e0033}@supports (color:color-mix(in lab, red, red)){.dark\:bg-orange-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-orange-500) 20%, transparent)}}.dark\:bg-orange-600:where(.dark,.dark *){background-color:var(--color-orange-600)}.dark\:bg-orange-700:where(.dark,.dark *){background-color:var(--color-orange-700)}.dark\:bg-orange-800:where(.dark,.dark *){background-color:var(--color-orange-800)}.dark\:bg-orange-900:where(.dark,.dark *){background-color:var(--color-orange-900)}.dark\:bg-orange-950:where(.dark,.dark *){background-color:var(--color-orange-950)}.dark\:bg-primary-50:where(.dark,.dark *){background-color:var(--color-primary-50)}.dark\:bg-primary-100:where(.dark,.dark *){background-color:var(--color-primary-100)}.dark\:bg-primary-200:where(.dark,.dark *){background-color:var(--color-primary-200)}.dark\:bg-primary-300:where(.dark,.dark *){background-color:var(--color-primary-300)}.dark\:bg-primary-400:where(.dark,.dark *){background-color:var(--color-primary-400)}.dark\:bg-primary-500:where(.dark,.dark *),.dark\:bg-primary-500\/20:where(.dark,.dark *){background-color:var(--color-primary-500)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-primary-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-primary-500) 20%, transparent)}}.dark\:bg-primary-600:where(.dark,.dark *){background-color:var(--color-primary-600)}.dark\:bg-primary-700:where(.dark,.dark *){background-color:var(--color-primary-700)}.dark\:bg-primary-800:where(.dark,.dark *){background-color:var(--color-primary-800)}.dark\:bg-primary-900:where(.dark,.dark *){background-color:var(--color-primary-900)}.dark\:bg-primary-950:where(.dark,.dark *){background-color:var(--color-primary-950)}.dark\:bg-red-50:where(.dark,.dark *){background-color:var(--color-red-50)}.dark\:bg-red-100:where(.dark,.dark *){background-color:var(--color-red-100)}.dark\:bg-red-200:where(.dark,.dark *){background-color:var(--color-red-200)}.dark\:bg-red-300:where(.dark,.dark *){background-color:var(--color-red-300)}.dark\:bg-red-400:where(.dark,.dark *){background-color:var(--color-red-400)}.dark\:bg-red-500:where(.dark,.dark *){background-color:var(--color-red-500)}.dark\:bg-red-500\/20:where(.dark,.dark *){background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.dark\:bg-red-600:where(.dark,.dark *){background-color:var(--color-red-600)}.dark\:bg-red-700:where(.dark,.dark *){background-color:var(--color-red-700)}.dark\:bg-red-800:where(.dark,.dark *){background-color:var(--color-red-800)}.dark\:bg-red-900:where(.dark,.dark *){background-color:var(--color-red-900)}.dark\:bg-red-950:where(.dark,.dark *){background-color:var(--color-red-950)}.dark\:bg-transparent:where(.dark,.dark *),.dark\:bg-white\/0:where(.dark,.dark *){background-color:#0000}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/0:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.dark\:bg-white\/10:where(.dark,.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\:bg-white\/20:where(.dark,.dark *){background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.dark\:bg-white\/30:where(.dark,.dark *){background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.dark\:bg-white\/40:where(.dark,.dark *){background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.dark\:bg-white\/50:where(.dark,.dark *){background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.dark\:bg-white\/60:where(.dark,.dark *){background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.dark\:bg-white\/70:where(.dark,.dark *){background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.dark\:bg-white\/80:where(.dark,.dark *){background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.dark\:bg-white\/90:where(.dark,.dark *){background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.dark\:bg-white\/100:where(.dark,.dark *){background-color:var(--color-white)}.dark\:bg-white\/\[\.02\]:where(.dark,.dark *){background-color:#ffffff05}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.02\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 2%, transparent)}}.dark\:bg-white\/\[\.04\]:where(.dark,.dark *){background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.04\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.dark\:bg-white\/\[\.06\]:where(.dark,.dark *){background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.06\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:from-base-50:where(.dark,.dark *){--tw-gradient-from:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-100:where(.dark,.dark *){--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-200:where(.dark,.dark *){--tw-gradient-from:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-300:where(.dark,.dark *){--tw-gradient-from:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-400:where(.dark,.dark *){--tw-gradient-from:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-500:where(.dark,.dark *){--tw-gradient-from:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-600:where(.dark,.dark *){--tw-gradient-from:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-700:where(.dark,.dark *){--tw-gradient-from:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-800:where(.dark,.dark *){--tw-gradient-from:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-900:where(.dark,.dark *){--tw-gradient-from:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-950:where(.dark,.dark *){--tw-gradient-from:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-50:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-100:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-200:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-300:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-400:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-500:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-600:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-700:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-800:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-900:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-950:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-white:where(.dark,.dark *){--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-50:where(.dark,.dark *){--tw-gradient-to:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-100:where(.dark,.dark *){--tw-gradient-to:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-200:where(.dark,.dark *){--tw-gradient-to:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-300:where(.dark,.dark *){--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-400:where(.dark,.dark *){--tw-gradient-to:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-500:where(.dark,.dark *){--tw-gradient-to:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-600:where(.dark,.dark *){--tw-gradient-to:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-700:where(.dark,.dark *){--tw-gradient-to:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-800:where(.dark,.dark *){--tw-gradient-to:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-900:where(.dark,.dark *){--tw-gradient-to:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-950:where(.dark,.dark *){--tw-gradient-to:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-50:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-100:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-200:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-300:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-400:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-500:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-600:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-700:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-800:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-900:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-950:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-white:where(.dark,.dark *){--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:\!text-red-500:where(.dark,.dark *){color:var(--color-red-500)!important}.dark\:text-base-50:where(.dark,.dark *){color:var(--color-base-50)}.dark\:text-base-100:where(.dark,.dark *){color:var(--color-base-100)}.dark\:text-base-200:where(.dark,.dark *){color:var(--color-base-200)}.dark\:text-base-300:where(.dark,.dark *){color:var(--color-base-300)}.dark\:text-base-300\!:where(.dark,.dark *){color:var(--color-base-300)!important}.dark\:text-base-400:where(.dark,.dark *){color:var(--color-base-400)}.dark\:text-base-500:where(.dark,.dark *){color:var(--color-base-500)}.dark\:text-base-600:where(.dark,.dark *){color:var(--color-base-600)}.dark\:text-base-700:where(.dark,.dark *){color:var(--color-base-700)}.dark\:text-base-800:where(.dark,.dark *){color:var(--color-base-800)}.dark\:text-base-900:where(.dark,.dark *){color:var(--color-base-900)}.dark\:text-base-950:where(.dark,.dark *){color:var(--color-base-950)}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-font-default-dark:where(.dark,.dark *){color:var(--color-font-default-dark)}.dark\:text-font-important-dark:where(.dark,.dark *){color:var(--color-font-important-dark)}.dark\:text-font-important-dark\!:where(.dark,.dark *){color:var(--color-font-important-dark)!important}.dark\:text-font-subtle-dark:where(.dark,.dark *){color:var(--color-font-subtle-dark)}.dark\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\:text-orange-400:where(.dark,.dark *){color:var(--color-orange-400)}.dark\:text-primary-50:where(.dark,.dark *){color:var(--color-primary-50)}.dark\:text-primary-100:where(.dark,.dark *){color:var(--color-primary-100)}.dark\:text-primary-200:where(.dark,.dark *){color:var(--color-primary-200)}.dark\:text-primary-300:where(.dark,.dark *){color:var(--color-primary-300)}.dark\:text-primary-400:where(.dark,.dark *){color:var(--color-primary-400)}.dark\:text-primary-500:where(.dark,.dark *){color:var(--color-primary-500)}.dark\:text-primary-600:where(.dark,.dark *){color:var(--color-primary-600)}.dark\:text-primary-700:where(.dark,.dark *){color:var(--color-primary-700)}.dark\:text-primary-800:where(.dark,.dark *){color:var(--color-primary-800)}.dark\:text-primary-900:where(.dark,.dark *){color:var(--color-primary-900)}.dark\:text-primary-950:where(.dark,.dark *){color:var(--color-primary-950)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-white\/0:where(.dark,.dark *){color:#0000}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/0:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.dark\:text-white\/10:where(.dark,.dark *){color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/10:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\:text-white\/20:where(.dark,.dark *){color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/20:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.dark\:text-white\/30:where(.dark,.dark *){color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/30:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.dark\:text-white\/40:where(.dark,.dark *){color:#fff6}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/40:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.dark\:text-white\/50:where(.dark,.dark *){color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/50:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.dark\:text-white\/60:where(.dark,.dark *){color:#fff9}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/60:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.dark\:text-white\/70:where(.dark,.dark *){color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/70:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.dark\:text-white\/80:where(.dark,.dark *){color:#fffc}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/80:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.dark\:text-white\/90:where(.dark,.dark *){color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/90:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.dark\:text-white\/100:where(.dark,.dark *){color:var(--color-white)}.dark\:placeholder-font-subtle-dark:where(.dark,.dark *)::placeholder{color:var(--color-font-subtle-dark)}.dark\:scheme-dark:where(.dark,.dark *){color-scheme:dark}.dark\:outline-base-50:where(.dark,.dark *){outline-color:var(--color-base-50)}.dark\:outline-base-100:where(.dark,.dark *){outline-color:var(--color-base-100)}.dark\:outline-base-200:where(.dark,.dark *){outline-color:var(--color-base-200)}.dark\:outline-base-300:where(.dark,.dark *){outline-color:var(--color-base-300)}.dark\:outline-base-400:where(.dark,.dark *){outline-color:var(--color-base-400)}.dark\:outline-base-500:where(.dark,.dark *){outline-color:var(--color-base-500)}.dark\:outline-base-600:where(.dark,.dark *){outline-color:var(--color-base-600)}.dark\:outline-base-700:where(.dark,.dark *){outline-color:var(--color-base-700)}.dark\:outline-base-800:where(.dark,.dark *){outline-color:var(--color-base-800)}.dark\:outline-base-900:where(.dark,.dark *){outline-color:var(--color-base-900)}.dark\:outline-base-950:where(.dark,.dark *){outline-color:var(--color-base-950)}.dark\:outline-primary-50:where(.dark,.dark *){outline-color:var(--color-primary-50)}.dark\:outline-primary-100:where(.dark,.dark *){outline-color:var(--color-primary-100)}.dark\:outline-primary-200:where(.dark,.dark *){outline-color:var(--color-primary-200)}.dark\:outline-primary-300:where(.dark,.dark *){outline-color:var(--color-primary-300)}.dark\:outline-primary-400:where(.dark,.dark *){outline-color:var(--color-primary-400)}.dark\:outline-primary-500:where(.dark,.dark *){outline-color:var(--color-primary-500)}.dark\:outline-primary-600:where(.dark,.dark *){outline-color:var(--color-primary-600)}.dark\:outline-primary-700:where(.dark,.dark *){outline-color:var(--color-primary-700)}.dark\:outline-primary-800:where(.dark,.dark *){outline-color:var(--color-primary-800)}.dark\:outline-primary-900:where(.dark,.dark *){outline-color:var(--color-primary-900)}.dark\:outline-primary-950:where(.dark,.dark *){outline-color:var(--color-primary-950)}:is(.dark\:\*\:text-font-important-dark:where(.dark,.dark *)>*){color:var(--color-font-important-dark)}@media (hover:hover){.dark\:group-hover\:text-primary-500:where(.dark,.dark *):is(:where(.group):hover *){color:var(--color-primary-500)}.dark\:group-hover\/action\:bg-base-800:where(.dark,.dark *):is(:where(.group\/action):hover *){background-color:var(--color-base-800)}.dark\:group-hover\/action\:text-white:where(.dark,.dark *):is(:where(.group\/action):hover *){color:var(--color-white)}}.dark\:group-\[\.active\]\:bg-primary-600:where(.dark,.dark *):is(:where(.group).active *){background-color:var(--color-primary-600)}.dark\:group-\[\.active\]\:text-white:where(.dark,.dark *):is(:where(.group).active *){color:var(--color-white)}.group-\[\.changelist-actions\]\:dark\:\!outline-primary-700:is(:where(.group).changelist-actions *):where(.dark,.dark *){outline-color:var(--color-primary-700)!important}.dark\:group-\[\.errors\]\:border-red-500:where(.dark,.dark *):is(:where(.group).errors *){border-color:var(--color-red-500)}.dark\:group-\[\.errors\]\:border-red-500\!:where(.dark,.dark *):is(:where(.group).errors *){border-color:var(--color-red-500)!important}.dark\:group-\[\.errors\]\:border-x-red-500:where(.dark,.dark *):is(:where(.group).errors *){border-inline-color:var(--color-red-500)}.dark\:group-\[\.errors\]\:border-t-red-500:where(.dark,.dark *):is(:where(.group).errors *){border-top-color:var(--color-red-500)}.dark\:before\:text-font-important-dark:where(.dark,.dark *):before{content:var(--tw-content);color:var(--color-font-important-dark)}.dark\:after\:bg-transparent:where(.dark,.dark *):after{content:var(--tw-content);background-color:#0000}.dark\:after\:text-base-700:where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-700)}.dark\:after\:text-transparent:where(.dark,.dark *):after{content:var(--tw-content);color:#0000}.dark\:after\:inset-ring-base-200\/10:where(.dark,.dark *):after{content:var(--tw-content);--tw-inset-ring-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.dark\:after\:inset-ring-base-200\/10:where(.dark,.dark *):after{--tw-inset-ring-color:color-mix(in oklab, var(--color-base-200) 10%, transparent)}}.dark\:checked\:border-primary-600:where(.dark,.dark *):checked{border-color:var(--color-primary-600)}.dark\:checked\:bg-green-700:where(.dark,.dark *):checked{background-color:var(--color-green-700)}.dark\:checked\:bg-primary-600:where(.dark,.dark *):checked{background-color:var(--color-primary-600)}.dark\:checked\:after\:bg-base-900:where(.dark,.dark *):checked:after{content:var(--tw-content);background-color:var(--color-base-900)}.dark\:checked\:after\:text-white:where(.dark,.dark *):checked:after{content:var(--tw-content);color:var(--color-white)}.dark\:focus-within\:group-\[\.errors\]\:outline-red-500:where(.dark,.dark *):focus-within:is(:where(.group).errors *){outline-color:var(--color-red-500)}@media (hover:hover){.dark\:hover\:border-base-700:where(.dark,.dark *):hover{border-color:var(--color-base-700)}.dark\:hover\:bg-base-700:where(.dark,.dark *):hover,.dark\:hover\:bg-base-700\/20:where(.dark,.dark *):hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-base-700\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-base-700) 20%, transparent)}}.dark\:hover\:bg-base-800:where(.dark,.dark *):hover,.dark\:hover\:bg-base-800\/80:where(.dark,.dark *):hover{background-color:var(--color-base-800)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-base-800\/80:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-base-800) 80%, transparent)}}.dark\:hover\:bg-base-900:where(.dark,.dark *):hover{background-color:var(--color-base-900)}.dark\:hover\:bg-blue-500\/20:where(.dark,.dark *):hover{background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-blue-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.dark\:hover\:bg-green-500\/20:where(.dark,.dark *):hover{background-color:#00c75833}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-green-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-green-500) 20%, transparent)}}.dark\:hover\:bg-orange-500\/20:where(.dark,.dark *):hover{background-color:#fe6e0033}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-orange-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-orange-500) 20%, transparent)}}.dark\:hover\:bg-primary-500\/20:where(.dark,.dark *):hover{background-color:var(--color-primary-500)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-primary-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-primary-500) 20%, transparent)}}.dark\:hover\:bg-red-500\/20:where(.dark,.dark *):hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.dark\:hover\:bg-white\/\[\.04\]:where(.dark,.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[\.04\]:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.dark\:hover\:bg-white\/\[\.06\]:where(.dark,.dark *):hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[\.06\]:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:hover\:\!text-red-500:where(.dark,.dark *):hover{color:var(--color-red-500)!important}.dark\:hover\:text-base-200:where(.dark,.dark *):hover{color:var(--color-base-200)}.dark\:hover\:text-base-400:where(.dark,.dark *):hover{color:var(--color-base-400)}.dark\:hover\:text-blue-400:where(.dark,.dark *):hover{color:var(--color-blue-400)}.dark\:hover\:text-font-important-dark:where(.dark,.dark *):hover{color:var(--color-font-important-dark)}.dark\:hover\:text-green-400:where(.dark,.dark *):hover{color:var(--color-green-400)}.dark\:hover\:text-orange-400:where(.dark,.dark *):hover{color:var(--color-orange-400)}.dark\:hover\:text-primary-400:where(.dark,.dark *):hover{color:var(--color-primary-400)}.dark\:hover\:text-primary-500:where(.dark,.dark *):hover{color:var(--color-primary-500)}.dark\:hover\:text-primary-500\!:where(.dark,.dark *):hover{color:var(--color-primary-500)!important}.dark\:hover\:text-red-400:where(.dark,.dark *):hover{color:var(--color-red-400)}.dark\:hover\:text-red-500:where(.dark,.dark *):hover{color:var(--color-red-500)}.dark\:hover\:text-white:where(.dark,.dark *):hover{color:var(--color-white)}.dark\:hover\:shadow-base-800\/50:where(.dark,.dark *):hover{--tw-shadow-color:var(--color-base-800)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:shadow-base-800\/50:where(.dark,.dark *):hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-base-800) 50%, transparent) var(--tw-shadow-alpha), transparent)}}:is(.\*\:dark\:hover\:bg-base-700>*):where(.dark,.dark *):hover{background-color:var(--color-base-700)}:is(.\*\:dark\:hover\:bg-white\/\[\.06\]>*):where(.dark,.dark *):hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){:is(.\*\:dark\:hover\:bg-white\/\[\.06\]>*):where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}:is(.\*\:dark\:hover\:text-base-200>*):where(.dark,.dark *):hover{color:var(--color-base-200)}}.dark\:focus\:group-\[\.errors\]\:outline-red-500:where(.dark,.dark *):focus:is(:where(.group).errors *){outline-color:var(--color-red-500)}.dark\:disabled\:\!bg-base-800:where(.dark,.dark *):disabled{background-color:var(--color-base-800)!important}@media (min-width:64rem){.dark\:lg\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}}}@media (min-width:64rem){@media not print{.lg\:dark\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}}}@media not print{@media (min-width:64rem){.dark\:lg\:\!bg-transparent:where(.dark,.dark *),.dark\:lg\:bg-transparent\!:where(.dark,.dark *){background-color:#0000!important}}}@media (min-width:64rem){@media not print{.lg\:dark\:bg-base-900:where(.dark,.dark *),.lg\:dark\:bg-base-900\/80:where(.dark,.dark *){background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.lg\:dark\:bg-base-900\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}}}@media (min-width:96rem){@media not print{.\32 xl\:dark\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}.\32 xl\:dark\:bg-transparent\!:where(.dark,.dark *){background-color:#0000!important}}}.prose-headings\:font-semibold :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-headings\:tracking-tight :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.prose-headings\:text-important :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-font-important-light)}@media not print{.prose-headings\:text-important :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)):where(.dark,.dark *){color:var(--color-font-important-dark)}}.prose-a\:text-link :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-primary-600)}@media not print{.prose-a\:text-link :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):where(.dark,.dark *){color:var(--color-primary-500)}}.prose-blockquote\:border-l-4 :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-style:var(--tw-border-style);border-left-width:4px}.prose-blockquote\:not-italic :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-style:normal}@media not print{.dark\:prose-blockquote\:border-base-700:where(.dark,.dark *) :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--color-base-700)}.dark\:prose-blockquote\:text-base-300:where(.dark,.dark *) :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-base-300)}}.prose-strong\:font-semibold :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-pre\:rounded-default :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--border-radius,6px)}.prose-pre\:bg-base-50 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--color-base-50)}@media not print{.dark\:prose-pre\:bg-base-800:where(.dark,.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--color-base-800)}}.prose-ol\:mt-2 :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:calc(var(--spacing) * 2)}.prose-ol\:flex :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){display:flex}.prose-ol\:list-decimal :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose-ol\:flex-col :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){flex-direction:column}.prose-ol\:gap-0\.5 :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){gap:calc(var(--spacing) * .5)}.prose-ul\:mt-2 :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:calc(var(--spacing) * 2)}.prose-ul\:flex :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){display:flex}.prose-ul\:list-disc :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc}.prose-ul\:flex-col :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){flex-direction:column}.prose-ul\:gap-0\.5 :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){gap:calc(var(--spacing) * .5)}.prose-li\:m-0 :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing) * 0)}.has-\[\.delete\:checked\]\:\[\&\+\.form-delete\]\:table-row:has(.delete:checked)+.form-delete{display:table-row}.\[\&\.htmx-request\]\:flex.htmx-request{display:flex}.\[\&\.htmx-request\+div\]\:hidden.htmx-request+div{display:none}.\[\&\>\.active\]\:bg-white>.active{background-color:var(--color-white)}.\[\&\>\.active\]\:shadow-xs>.active{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.\[\&\>\.active\]\:hover\:bg-white>.active:hover{background-color:var(--color-white)}}@media not print{.\[\&\>\.active\]\:dark\:bg-base-700>.active:where(.dark,.dark *){background-color:var(--color-base-700)}@media (hover:hover){.\[\&\>\.active\]\:dark\:hover\:bg-base-700>.active:where(.dark,.dark *):hover{background-color:var(--color-base-700)}}}.has-\[\.delete\:checked\]\:\[\&\>\.form-delete\]\:block:has(.delete:checked)>.form-delete{display:block}:is(.\*\:\[\&\[href\]\]\:opacity-100>*)[href]{opacity:1}}:is(.errorlist>*):before{content:var(--tw-content);margin-right:calc(var(--spacing) * 1);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);vertical-align:bottom;--tw-content:"warning";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}[x-cloak]{display:none!important}.asteriskField{color:var(--color-red-600)}.sortable-ghost{opacity:.5}.empty-form{display:none}input[type=search]::-webkit-search-cancel-button{z-index:10}@media not print{input[type=search]::-webkit-search-cancel-button:where(.dark,.dark *){--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}select:not([class*=bg-none]):not([multiple]){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3e%3cpath fill='#6B7280' d='M24 31.4 11.3 18.7l2.85-2.8L24 25.8l9.85-9.85 2.85 2.8Z'/%3e%3c/svg%3e");background-position:right .7rem center;background-repeat:no-repeat;background-size:1.125rem 1.125rem}#changelist-actions select:not([class*=bg-none]):not([multiple]){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3e%3cpath fill='#ffffff' d='M24 31.4 11.3 18.7l2.85-2.8L24 25.8l9.85-9.85 2.85 2.8Z'/%3e%3c/svg%3e")}select:after{content:"";display:block}table tr.selected td,table tr.selected th{background-color:#fff0851a}@supports (color:color-mix(in lab, red, red)){table tr.selected td,table tr.selected th{background-color:color-mix(in oklab, var(--color-yellow-200) 10%, transparent)}}@media not print{:is(table tr.selected td,table tr.selected th):where(.dark,.dark *){background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){:is(table tr.selected td,table tr.selected th):where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}}.datetimeshortcuts{flex-direction:row-reverse;align-items:center;font-size:0;display:flex;position:absolute;top:1px;right:1px}.datetimeshortcuts a{height:calc(var(--spacing) * 9);color:var(--color-base-400);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));align-items:center;font-size:0;display:flex}@media (hover:hover){.datetimeshortcuts a:hover{color:var(--color-base-700)}}.datetimeshortcuts a:first-child{display:none}.datetimeshortcuts a:first-child:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;height:calc(var(--spacing) * 9);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:center;--tw-leading:1;--tw-content:"update";content:var(--tw-content);direction:ltr;justify-content:center;align-items:center;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:flex}@media (hover:hover){.datetimeshortcuts a:first-child:after:hover{color:var(--color-base-700)}}@media not print{.datetimeshortcuts a:first-child:after:where(){border-color:var(--color-base-700)}@media (hover:hover){.datetimeshortcuts a:first-child:after:where():hover{color:var(--color-base-700)}}}.datetimeshortcuts a:first-child:after{display:flex}.clock-icon,.date-icon{color:var(--color-base-400);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}@media (hover:hover){:is(.clock-icon,.date-icon):hover{color:var(--color-base-700)}}@media not print{:is(.clock-icon,.date-icon):where(.dark,.dark *){color:var(--color-base-500)}@media (hover:hover){:is(.clock-icon,.date-icon):where(.dark,.dark *):hover{color:var(--color-base-200)}}}:is(.clock-icon,.date-icon):after{content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);border-color:var(--color-base-200);content:var(--tw-content);padding-inline:calc(var(--spacing) * 3);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}@media not print{:is(.clock-icon,.date-icon):where(.dark,.dark *):after{content:var(--tw-content);border-color:var(--color-base-700)}}.date-icon:after{content:"calendar_today"}.clock-icon:after{content:"schedule"}.timezonewarning{top:calc(var(--spacing) * 2);right:calc(var(--spacing) * 11);text-overflow:ellipsis;white-space:nowrap;color:var(--color-base-500);align-items:center;font-size:0;display:block;position:absolute;overflow:hidden}.timezonewarning:hover{border-radius:var(--border-radius,6px);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9);inset:1px}@media not print{.timezonewarning:hover:where(.dark,.dark *){background-color:var(--color-base-900)}}.timezonewarning:hover:before{margin-right:calc(var(--spacing) * 2);display:none}.timezonewarning:before{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;cursor:pointer;border-color:var(--color-base-200);text-align:center;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));color:var(--color-red-600);direction:ltr;justify-content:center;align-items:center;display:block}@media not print{.timezonewarning:before:where(){border-color:var(--color-base-700)}}.timezonewarning:before{content:"warning"}.selector{max-width:var(--container-5xl);flex-direction:column;flex-grow:1;align-items:center;display:flex}@media (min-width:48rem){.selector{flex-direction:row}}.selector .selector-available-title label,.selector .selector-chosen-title label{margin-bottom:calc(var(--spacing) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-font-important-light);display:block}@media not print{:is(.selector .selector-available-title label,.selector .selector-chosen-title label):where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-font-important-dark)}}.selector .helptext{margin-bottom:calc(var(--spacing) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 4);padding-bottom:calc(var(--spacing) * 3)}@media not print{.selector .helptext:where(.dark,.dark *){border-color:var(--color-base-700)}}.selector select{background-image:none;flex-grow:1;width:100%}@media not print{.selector select:where(.dark,.dark *){background-color:var(--color-base-900);color-scheme:dark}}.selector option{text-overflow:ellipsis;white-space:nowrap;padding-inline:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-base-500);overflow:hidden}@media not print{.selector option:where(.dark,.dark *){color:var(--color-base-300)}}.selector .list-footer-display{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-base-200);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media not print{.selector .list-footer-display:where(.dark,.dark *){border-color:var(--color-base-700)}}.selector-chosen,.selector-available{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);flex-direction:column;flex-grow:1;align-self:stretch;display:flex}@media (min-width:48rem){.selector-chosen,.selector-available{width:calc(var(--spacing) * 72)}}@media (min-width:64rem){.selector-chosen,.selector-available{width:calc(var(--spacing) * 96)}}@media not print{:is(.selector-chosen,.selector-available):where(.dark,.dark *){border-color:var(--color-base-700)}}.selector-chosen h2,.selector-available h2{margin-bottom:calc(var(--spacing) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-base-500)}@media not print{:is(.selector-chosen h2,.selector-available h2):where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-base-200)}}.selector-filter{display:flex}.selector-filter input{margin-inline:calc(var(--spacing) * 3);margin-bottom:calc(var(--spacing) * 3);border-radius:var(--border-radius,6px);background-color:var(--color-base-100);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-500);flex-grow:1;display:block}.selector-filter input:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.selector-filter input:focus{outline-offset:2px;outline:2px solid #0000}}@media not print{.selector-filter input:where(.dark,.dark *){background-color:var(--color-base-800);color:var(--color-base-300)}}.selector-chooseall,.selector-clearall{cursor:pointer;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-base-200);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-font-default-light);display:block}@media not print{:is(.selector-chooseall,.selector-clearall):where(.dark,.dark *){color:var(--color-font-default-dark);border-color:var(--color-base-700)}}.selector-clearall{color:var(--color-red-600)}@media not print{.selector-clearall:where(.dark,.dark *){color:var(--color-red-500)}}.selector-chooser{margin-block:calc(var(--spacing) * 4);width:calc(var(--spacing) * 14);flex-direction:column;font-size:0;display:flex}.selector-chooser li{padding-block:calc(var(--spacing) * 1);text-align:center}.selector-add:after,.selector-remove:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;width:calc(var(--spacing) * 5);color:var(--color-base-400);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.selector-add:after{content:"arrow_forward"}.selector-remove:after{content:"arrow_back"}.related-widget-wrapper{flex-wrap:nowrap!important}.related-widget-wrapper-link{order:9999}.formset .select2{min-width:240px}.select2.select2-container{max-width:var(--container-2xl);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);position:relative;width:100%!important;min-height:38px!important}@media not print{.select2.select2-container:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.select2-selection{--tw-outline-style:none;outline-style:none}.select2.select2-container--open{border-bottom-style:var(--tw-border-style);border-bottom-width:0;border-color:var(--color-primary-600);outline-style:var(--tw-outline-style);outline-offset:calc(2px * -1);outline-width:2px;outline-color:var(--color-primary-600);position:relative}.select2.select2-container.select2-container--focus{outline-style:var(--tw-outline-style);outline-offset:calc(2px * -1);outline-width:2px;outline-color:var(--color-primary-600)}.errors .select2.select2-container{border-color:var(--color-red-600)}.select2-container.select2-container--admin-autocomplete .select2-selection--single{height:auto}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered{height:calc(var(--spacing) * 9);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-font-default-light)}@media not print{.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered:where(.dark,.dark *){color:var(--color-font-default-dark)}}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear{margin-top:calc(var(--spacing) * -2);height:calc(var(--spacing) * 9);align-items:center;font-size:0;display:flex}:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):after{content:var(--tw-content);color:var(--color-base-400)}@media (hover:hover){:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):hover:after{content:var(--tw-content);color:var(--color-base-700)}}@media not print{:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-500)}@media (hover:hover){:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):where(.dark,.dark *):hover:after{content:var(--tw-content);color:var(--color-base-200)}}}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear:after,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-content:"close_small";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow{margin-top:-1px;margin-right:calc(var(--spacing) * 2);height:calc(var(--spacing) * 9);align-items:center;display:flex}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow:after{content:var(--tw-content);left:calc(var(--spacing) * 0);content:var(--tw-content);margin:calc(var(--spacing) * 0);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));content:var(--tw-content);--tw-leading:1;content:var(--tw-content);color:var(--color-base-400);direction:ltr;line-height:1;display:inline-block}@media not print{.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow:where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-500)}}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow:after{content:"expand_more"}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b{display:none}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 1);padding-block:calc(var(--spacing) * 1.5);position:relative}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown:before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing) * 2.5);content:var(--tw-content);left:calc(var(--spacing) * 4);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));content:var(--tw-content);color:var(--color-base-400);--tw-content:"search";content:var(--tw-content);direction:ltr;display:inline-block;position:absolute}@media not print{.select2-container.select2-container--admin-autocomplete .select2-search--dropdown:where(.dark,.dark *){border-color:var(--color-base-700)}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown:where(.dark,.dark *):before{content:var(--tw-content);color:var(--color-base-500)}}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field{margin-inline:calc(var(--spacing) * 0);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-width:0;border-color:var(--color-base-200);background-color:var(--color-base-100);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);padding-left:calc(var(--spacing) * 9);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-font-default-light);--tw-outline-style:none;outline-style:none;flex-grow:1}@media (forced-colors:active){.select2-container.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field{outline-offset:2px;outline:2px solid #0000}}@media not print{.select2-container.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field:where(.dark,.dark *){border-color:var(--color-base-800);background-color:var(--color-base-800);color:var(--color-font-default-dark)}}.select2-container .select2-results__options{padding-block:calc(var(--spacing) * 1)}.select2-container .select2-results__option--highlighted[aria-selected]{background-color:var(--color-base-100)!important}@media not print{.select2-container .select2-results__option--highlighted[aria-selected]:where(.dark,.dark *){background-color:var(--color-base-800)!important}}.select2-container.select2-container--open .select2-dropdown{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media not print{.select2-container.select2-container--open .select2-dropdown:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.select2-container.select2-container--open .select2-dropdown--below{margin-top:calc(var(--spacing) * 1)}.select2-container.select2-container--open .select2-dropdown--above{margin-bottom:calc(var(--spacing) * 1)}.select2-container.select2-container--admin-autocomplete .select2-results__option{margin-inline:calc(var(--spacing) * 1);margin-bottom:calc(var(--spacing) * .5);border-radius:var(--border-radius,6px);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 2);color:var(--color-font-default-light);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}.select2-container.select2-container--admin-autocomplete .select2-results__option:last-child{margin-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.select2-container.select2-container--admin-autocomplete .select2-results__option:hover{background-color:var(--color-base-100);color:var(--color-base-700)}}@media not print{.select2-container.select2-container--admin-autocomplete .select2-results__option:where(.dark,.dark *){color:var(--color-font-default-dark)}@media (hover:hover){.select2-container.select2-container--admin-autocomplete .select2-results__option:where(.dark,.dark *):hover{background-color:var(--color-base-800);color:var(--color-base-200)}}}.select2-container.select2-container--admin-autocomplete .select2-results__option[aria-selected=true]{color:var(--color-primary-600);align-items:center;display:flex}.select2-container.select2-container--admin-autocomplete .select2-results__option[aria-selected=true]:after{content:var(--tw-content);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;--tw-content:"check";content:var(--tw-content);direction:ltr;margin-left:auto;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}@media not print{.select2-container.select2-container--admin-autocomplete .select2-results__option[aria-selected=true]:where(.dark,.dark *){color:var(--color-primary-500)}}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear{top:calc(var(--spacing) * 0);margin:calc(var(--spacing) * 0);margin-right:calc(var(--spacing) * 3)}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered{padding-block:calc(var(--spacing) * 0);padding-top:calc(var(--spacing) * 1);padding-right:calc(var(--spacing) * 6);padding-left:calc(var(--spacing) * 1)}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered{padding-right:calc(var(--spacing) * 8)}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice{margin:calc(var(--spacing) * 0);margin-right:calc(var(--spacing) * 1);margin-bottom:calc(var(--spacing) * 1);height:calc(var(--spacing) * 7);text-overflow:ellipsis;white-space:nowrap;background-color:var(--color-base-100);padding-inline:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-600);--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);display:block;overflow:hidden}@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice:hover{color:var(--color-base-700)}}@media not print{.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice:where(.dark,.dark *){background-color:var(--color-base-800);color:var(--color-base-300)}@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice:where(.dark,.dark *):hover{color:var(--color-base-200)}}}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove{vertical-align:top;font-size:0}@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove:hover{color:var(--color-base-600)}}@media not print{@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove:where(.dark,.dark *):hover{color:var(--color-base-200)}}}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;height:calc(var(--spacing) * 7);--tw-content:"close_small";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:14px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:calc(var(--spacing) * 7)!important;line-height:calc(var(--spacing) * 7)!important}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-search--inline .select2-search__field{margin:calc(var(--spacing) * 0);margin-left:calc(var(--spacing) * 2);height:calc(var(--spacing) * 7);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-base-500)}fieldset.collapsed>div{display:none}fieldset.collapse{visibility:visible}fieldset.collapsed h2,fieldset.collapsed{display:block}fieldset.collapsed .collapse-toggle{display:inline}fieldset details>summary{list-style-type:none}fieldset details>summary:after{top:calc(var(--spacing) * 2.5);right:calc(var(--spacing) * 3);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;cursor:pointer;content:"expand_more";direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block;position:absolute}fieldset details[open]>summary{margin-bottom:calc(var(--spacing) * 4)}fieldset details[open]>summary:after{rotate:180deg}.calendarbox .calendar{min-height:320px}.calendarbox,.clockbox{width:calc(var(--spacing) * 80);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);z-index:70!important;position:fixed!important;top:50%!important;left:50%!important}@media not print{:is(.calendarbox,.clockbox):where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)}}.calendar caption{margin-bottom:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 3);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-font-important-light)}@media not print{.calendar caption:where(.dark,.dark *){color:var(--color-font-important-dark)}}.calendar table{margin-bottom:calc(var(--spacing) * 3);width:100%}.calendar table th{text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-font-important-light)}@media not print{.calendar table th:where(.dark,.dark *){color:var(--color-font-important-dark)}}.calendar table td{height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);padding:calc(var(--spacing) * 1);text-align:center}.calendar table td a{height:calc(var(--spacing) * 8);width:calc(var(--spacing) * 8);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}@media not print{.calendar table td a:where(.dark,.dark *){color:var(--color-base-300)}}.calendar table td a:hover{background-color:var(--color-base-100);color:var(--color-base-700)}.calendar table td.today a{background-color:var(--color-primary-600);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-white)}.calendar-shortcuts{margin-bottom:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 1);border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;flex-direction:row;justify-content:center;font-size:0;display:flex}.calendar-shortcuts a{margin-inline:calc(var(--spacing) * 1);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);width:33.3333%;padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-medium);line-height:1;font-weight:var(--font-weight-medium);color:var(--color-base-500);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media not print{.calendar-shortcuts a:where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-base-300)}}.calendar-cancel{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-base-200);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-red-600);display:block}@media not print{.calendar-cancel:where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-red-500)}}.calendarnav-previous{top:calc(var(--spacing) * 0);left:calc(var(--spacing) * 0);margin-top:calc(var(--spacing) * 2);margin-left:calc(var(--spacing) * 2);font-size:0;display:block;position:absolute}:is(.calendarnav-next,.calendarnav-previous):after{content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing) * 7);content:var(--tw-content);width:calc(var(--spacing) * 7);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);border-style:var(--tw-border-style);content:var(--tw-content);border-width:1px;border-color:var(--color-base-200);content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));direction:ltr;border-radius:3.40282e38px;justify-content:center;align-items:center;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:flex}@media not print{:is(.calendarnav-next,.calendarnav-previous):where(.dark,.dark *):after{content:var(--tw-content);border-color:var(--color-base-700);content:var(--tw-content);background-color:var(--color-base-800)}}.calendarnav-previous:after{content:"navigate_before";display:flex}.calendarnav-next:after{content:"navigate_next";display:flex}.calendarnav-next{top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);margin-top:calc(var(--spacing) * 2);margin-right:calc(var(--spacing) * 2);font-size:0;display:block;position:absolute}.clockbox{z-index:50;border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media not print{.clockbox:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)}}.clockbox h2{padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-700)}@media not print{.clockbox h2:where(.dark,.dark *){color:var(--color-base-200)}}.clockbox .timelist{padding-inline:calc(var(--spacing) * 3);padding-bottom:calc(var(--spacing) * 2);color:var(--color-base-500)}@media not print{.clockbox .timelist:where(.dark,.dark *){color:var(--color-base-300)}}.clockbox .timelist li{padding-bottom:calc(var(--spacing) * 1);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}.clockbox .timelist li:hover{color:var(--color-primary-500)}.htmx-indicator.htmx-swapping:before{top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);bottom:calc(var(--spacing) * 0);left:calc(var(--spacing) * 0);background-color:var(--color-white);opacity:.8;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:"";position:absolute}.htmx-indicator.htmx-swapping:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;height:calc(var(--spacing) * 4);width:calc(var(--spacing) * 4);animation:var(--animate-spin);color:var(--color-base-400);content:"sync";direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;position:absolute;inset:50%}#changelist-filter .admin-numeric-filter-slider .noUi-handle{right:calc(var(--spacing) * -4);height:calc(var(--spacing) * 4);width:calc(var(--spacing) * 4);cursor:pointer;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-radius:3.40282e38px}@media not print{#changelist-filter .admin-numeric-filter-slider .noUi-handle:where(.dark,.dark *){border-color:var(--color-base-200);background-color:var(--color-base-200)}}#changelist-filter .admin-numeric-filter-slider .noUi-handle-upper{right:calc(var(--spacing) * 0)}#changelist-filter .admin-numeric-filter-slider .noUi-handle:after,#changelist-filter .admin-numeric-filter-slider .noUi-handle:before{content:none}#changelist-filter .admin-numeric-filter-slider.noUi-target{height:calc(var(--spacing) * 1);border-style:var(--tw-border-style);background-color:var(--color-base-200);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-width:0}@media not print{#changelist-filter .admin-numeric-filter-slider.noUi-target:where(.dark,.dark *){background-color:var(--color-base-600)}}#changelist-filter .admin-numeric-filter-slider .noUi-connect{height:calc(var(--spacing) * 1);border-style:var(--tw-border-style);background-color:var(--color-primary-600);border-width:0}trix-toolbar[id^=trix-toolbar-]{top:calc(var(--spacing) * 0);position:sticky}@media not print{trix-toolbar[id^=trix-toolbar-]:where(.dark,.dark *){background-color:var(--color-base-900)}}.trix-active{color:var(--color-primary-600)}.ui-tabs{flex-direction:column;display:flex}.ui-tabs.ui-widget .ui-tabs-nav{margin:calc(var(--spacing) * 0);margin-top:calc(var(--spacing) * 3);margin-right:auto;margin-bottom:calc(var(--spacing) * 0);margin-left:calc(var(--spacing) * 3);gap:calc(var(--spacing) * 2);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);background-color:var(--color-base-100);padding:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;display:flex}.ui-tabs.ui-widget .ui-tabs-nav:after{content:var(--tw-content);display:none}@media not print{.ui-tabs.ui-widget .ui-tabs-nav:where(.dark,.dark *){background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.ui-tabs.ui-widget .ui-tabs-nav:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}}.ui-tabs.ui-widget .ui-tabs-nav li{top:calc(var(--spacing) * 0);border-style:var(--tw-border-style);border-width:0}.ui-tabs.ui-widget .ui-tabs-nav li a{margin:calc(var(--spacing) * 0);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-400);background-color:#0000;border-width:0;flex-direction:row;align-items:center;display:flex}@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li a:hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){.ui-tabs.ui-widget .ui-tabs-nav li a:hover{background-color:color-mix(in oklab, var(--color-base-700) 4%, transparent)}}.ui-tabs.ui-widget .ui-tabs-nav li a:hover{color:var(--color-base-700)}}@media not print{@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li a:where(.dark,.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.ui-tabs.ui-widget .ui-tabs-nav li a:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.ui-tabs.ui-widget .ui-tabs-nav li a:where(.dark,.dark *):hover{color:var(--color-white)}}}.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a{border-radius:var(--border-radius,6px);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-700);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);flex-direction:row;align-items:center;display:flex}@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a:hover{background-color:var(--color-white)}}@media not print{.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a:where(.dark,.dark *){background-color:var(--color-base-900);color:var(--color-white)}@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a:where(.dark,.dark *):hover{background-color:var(--color-base-900)}}}.simplebar-track .simplebar-scrollbar:before{content:var(--tw-content);background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.simplebar-track .simplebar-scrollbar:before{background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}@media not print{.simplebar-track .simplebar-scrollbar:where(.dark,.dark *):before{content:var(--tw-content);background-color:var(--color-base-400)}@supports (color:color-mix(in lab, red, red)){.simplebar-track .simplebar-scrollbar:where(.dark,.dark *):before{background-color:color-mix(in oklab, var(--color-base-400) 80%, transparent)}}}.simplebar-horizontal-scrollbar-top .simplebar-track.simplebar-horizontal{top:calc(var(--spacing) * 9)}textarea#searchbar{--tw-leading:35px;--tw-font-weight:var(--font-weight-medium);min-height:35px;max-height:35px;line-height:35px;font-weight:var(--font-weight-medium);white-space:nowrap;width:100%!important}textarea#searchbar::placeholder{color:var(--color-base-400)}textarea#searchbar:focus{--tw-outline-style:none;outline-style:none}div.djangoql-completion{z-index:40;border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);width:384px;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);margin-top:6px;margin-left:-39px}@media not print{div.djangoql-completion:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)}}div.djangoql-completion ul{padding-block:calc(var(--spacing) * 1)}div.djangoql-completion li{margin-inline:calc(var(--spacing) * 1);border-radius:var(--border-radius,6px);height:30px;padding-inline:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:1;align-items:center;line-height:1;display:flex}@media (hover:hover){div.djangoql-completion li:hover{background-color:var(--color-base-100);color:var(--color-font-important-light)}@media not print{div.djangoql-completion li:hover:where(.dark,.dark *){color:var(--color-font-important-dark)}}div.djangoql-completion li:hover{color:var(--color-base-700)}}@media not print{@media (hover:hover){div.djangoql-completion li:where(.dark,.dark *):hover{background-color:var(--color-base-700);color:var(--color-base-200)}}}div.djangoql-completion li.active{background-color:var(--color-base-100);color:var(--color-font-important-light)}@media not print{div.djangoql-completion li.active:where(.dark,.dark *){color:var(--color-font-important-dark);background-color:var(--color-base-700)}}div.djangoql-completion li i{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-font-default-light);margin-left:auto}@media not print{div.djangoql-completion li i:where(.dark,.dark *){color:var(--color-font-default-dark)}}div.djangoql-completion .syntax-help{display:none}.djangoql-toggle{height:calc(var(--spacing) * 4);width:calc(var(--spacing) * 4);min-width:calc(var(--spacing) * 4);cursor:pointer;appearance:none;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-300);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-radius:4px;display:block}.djangoql-toggle:after{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing) * 4);content:var(--tw-content);width:calc(var(--spacing) * 4);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);--tw-leading:1;content:var(--tw-content);color:var(--color-white);content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-content:"check_small";content:var(--tw-content);direction:ltr;justify-content:center;align-items:center;margin-top:-1px;margin-left:-1px;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block;position:absolute;display:flex!important}.djangoql-toggle:checked{border-color:var(--color-primary-600);background-color:var(--color-primary-600);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.djangoql-toggle:hover{border-color:var(--color-base-400)}.djangoql-toggle:checked:hover{border-color:var(--color-primary-600)}}.djangoql-toggle:focus{outline-style:var(--tw-outline-style);outline-width:1px;outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-primary-500)}@media not print{.djangoql-toggle:where(.dark,.dark *){border-color:var(--color-base-500);background-color:var(--color-base-700)}.djangoql-toggle:where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-700)}.djangoql-toggle:where(.dark,.dark *):checked{border-color:var(--color-primary-600);background-color:var(--color-primary-600)}.djangoql-toggle:where(.dark,.dark *):checked:after{content:var(--tw-content);color:var(--color-white)}}.djangoql-toggle{margin-left:calc(var(--spacing) * -4.5);position:relative}.jsoneditor{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-width:1px;overflow:hidden;border-color:var(--color-base-200)!important}@media not print{.jsoneditor:where(.dark,.dark *){border-color:var(--color-base-700)!important}}div.jsoneditor-tree,.ace-jsoneditor .ace_scroller{color:var(--color-font-default-light)}@media not print{:is(div.jsoneditor-tree,.ace-jsoneditor .ace_scroller):where(.dark,.dark *){color:var(--color-font-default-dark);background-color:var(--color-base-900)}.ace-jsoneditor .ace_scrollbar:where(.dark,.dark *){--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.jsoneditor div.jsoneditor-tree{background-color:var(--color-white)}@media not print{.jsoneditor div.jsoneditor-tree:where(.dark,.dark *){background-color:#0000!important}}.jsoneditor textarea.jsoneditor-text{padding:calc(var(--spacing) * 3);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);background-color:#0000!important}.jsoneditor .jsoneditor-text,.jsoneditor .jsoneditor-tree{color:var(--color-font-default-light)!important;background-color:#0000!important}@media not print{:is(.jsoneditor .jsoneditor-text,.jsoneditor .jsoneditor-tree):where(.dark,.dark *){color:var(--color-font-default-dark)!important;background-color:#0000!important}}.jsoneditor .jsoneditor-readonly{color:var(--color-font-subtle-light)!important}@media not print{.jsoneditor .jsoneditor-readonly:where(.dark,.dark *){color:var(--color-font-subtle-dark)!important}}.jsoneditor .jsoneditor-field{--tw-border-style:none!important;color:var(--color-font-default-light)!important;border-style:none!important}@media not print{.jsoneditor .jsoneditor-field:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}@media (hover:hover){.jsoneditor .jsoneditor-field:hover{background-color:var(--color-base-100)!important}}@media not print{.jsoneditor .jsoneditor-field:where(.dark,.dark *){background-color:#0000}@media (hover:hover){.jsoneditor .jsoneditor-field:where(.dark,.dark *):hover{background-color:var(--color-base-800)!important}}}.jsoneditor .jsoneditor-value{color:var(--color-font-important-light);--tw-border-style:none!important;border-style:none!important}@media not print{.jsoneditor .jsoneditor-value:where(.dark,.dark *){color:var(--color-font-important-dark)}}@media (hover:hover){.jsoneditor .jsoneditor-value:hover{background-color:var(--color-base-100)!important}}@media not print{@media (hover:hover){.jsoneditor .jsoneditor-value:where(.dark,.dark *):hover{background-color:var(--color-base-800)!important}}}.jsoneditor .jsoneditor-value.jsoneditor-string,.jsoneditor .ace_string{color:var(--color-green-600)!important}@media not print{:is(.jsoneditor .jsoneditor-value.jsoneditor-string,.jsoneditor .ace_string):where(.dark,.dark *){color:var(--color-green-500)}}.jsoneditor .jsoneditor-value.jsoneditor-number,.jsoneditor .ace_numeric{color:var(--color-blue-600)}@media not print{:is(.jsoneditor .jsoneditor-value.jsoneditor-number,.jsoneditor .ace_numeric):where(.dark,.dark *){color:var(--color-blue-500)}}.jsoneditor .jsoneditor-value.jsoneditor-boolean,.jsoneditor .ace_boolean{color:var(--color-red-600)}@media not print{:is(.jsoneditor .jsoneditor-value.jsoneditor-boolean,.jsoneditor .ace_boolean):where(.dark,.dark *){color:var(--color-red-500)}}.ace-jsoneditor .ace_gutter{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-base-200);background-color:var(--color-base-100);color:var(--color-font-subtle-light)}@media not print{.ace-jsoneditor .ace_gutter:where(.dark,.dark *){color:var(--color-font-subtle-dark);border-color:var(--color-base-700);background-color:var(--color-base-800)}}.ace-jsoneditor .ace_gutter-active-line{background-color:#edb20033}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_gutter-active-line{background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)}}.ace-jsoneditor .ace_gutter-active-line{color:var(--color-font-important-light)}@media not print{.ace-jsoneditor .ace_gutter-active-line:where(.dark,.dark *){color:var(--color-font-important-dark);background-color:#edb20033}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_gutter-active-line:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)}}}.ace-jsoneditor .ace_active-line{background-color:#edb20033!important}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_active-line{background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)!important}}@media not print{.ace-jsoneditor .ace_active-line:where(.dark,.dark *){background-color:#edb20033!important}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_active-line:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)!important}}}.ace-jsoneditor .ace_variable{color:var(--color-font-important-light)}@media not print{.ace-jsoneditor .ace_variable:where(.dark,.dark *){color:var(--color-font-important-dark)}}.ace-jsoneditor .ace_indent-guide{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-base-200);background-image:none}@media not print{.ace-jsoneditor .ace_indent-guide:where(.dark,.dark *){border-color:var(--color-base-700)}}.ace-jsoneditor .ace_marker-layer .ace_selection{background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_marker-layer .ace_selection{background-color:color-mix(in oklab, var(--color-base-900) 10%, transparent)}}@media not print{.ace-jsoneditor .ace_marker-layer .ace_selection:where(.dark,.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_marker-layer .ace_selection:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}}.jsoneditor .jsoneditor-statusbar{border-color:var(--color-base-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:26px;color:var(--color-font-subtle-light);line-height:26px}@media not print{.jsoneditor .jsoneditor-statusbar:where(.dark,.dark *){color:var(--color-font-subtle-dark);border-color:var(--color-base-700);background-color:var(--color-base-900)}}.jsoneditor-menu a.jsoneditor-poweredBy{font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-font-subtle-light)}@media not print{.jsoneditor-menu a.jsoneditor-poweredBy:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.jsoneditor-menu a.jsoneditor-poweredBy{opacity:1}.jsoneditor .jsoneditor-search .jsoneditor-results{font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.jsoneditor .jsoneditor-search .jsoneditor-frame{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200)}@media not print{.jsoneditor .jsoneditor-search .jsoneditor-frame:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.jsoneditor .jsoneditor-search .jsoneditor-frame input[type=text]{height:22px;font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:22px;line-height:22px;--tw-border-style:none!important;color:var(--color-font-default-light)!important;background-color:#0000!important;border-style:none!important}@media not print{.jsoneditor .jsoneditor-search .jsoneditor-frame input[type=text]:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh{margin-left:calc(var(--spacing) * 1);background-image:none}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;color:var(--color-base-400)!important;line-height:24px!important}@media not print{.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh:after:where(){color:var(--color-base-500)!important}}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh:after{--tw-content:"search";content:var(--tw-content)}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next,.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous{color:var(--color-base-400);background-image:none}@media not print{:is(.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next,.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous):where(.dark,.dark *){color:var(--color-base-500)}}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next:after,.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next:after{--tw-content:"keyboard_double_arrow_down";content:var(--tw-content)}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous:after{--tw-content:"keyboard_double_arrow_up";content:var(--tw-content)}.jsoneditor .jsoneditor-navigation-bar{border-color:var(--color-base-200);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:26px;line-height:26px;border-bottom-style:var(--tw-border-style)!important;background-color:var(--color-base-50)!important;padding-inline:calc(var(--spacing) * 2)!important;color:var(--color-font-default-light)!important;border-bottom-width:1px!important}@media not print{.jsoneditor .jsoneditor-navigation-bar:where(.dark,.dark *){color:var(--color-font-default-dark)!important;border-color:var(--color-base-700)!important;background-color:var(--color-base-800)!important}}.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator{font-size:0}.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;color:var(--color-font-subtle-light);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block;vertical-align:-4px!important}@media not print{.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator:after:where(){color:var(--color-font-subtle-dark)}}.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator:after{--tw-content:"chevron_right";content:var(--tw-content)}.jsoneditor-menu{border-color:var(--color-base-200)!important;background-color:var(--color-base-50)!important}@media not print{.jsoneditor-menu:where(.dark,.dark *){border-color:var(--color-base-700)!important;background-color:var(--color-base-800)!important}}.jsoneditor .jsoneditor-menu>button{cursor:pointer;border-radius:var(--border-radius,6px);color:var(--color-font-important-light);border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:var(--color-base-200)!important;background-color:var(--color-white)!important;background-image:none!important}@media not print{.jsoneditor .jsoneditor-menu>button:where(.dark,.dark *){color:var(--color-font-important-dark)}}.jsoneditor .jsoneditor-menu>button{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media not print{.jsoneditor .jsoneditor-menu>button:where(.dark,.dark *){border-color:var(--color-base-700)!important;background-color:var(--color-base-900)!important}}.jsoneditor .jsoneditor-menu>button:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}.jsoneditor-menu>button.jsoneditor-format:after{--tw-content:"format_align_right";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-compact:after{--tw-content:"format_align_left";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-sort:after{--tw-content:"sort";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-transform:after{--tw-content:"transform";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-repair:after{--tw-content:"handyman";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-undo:after{--tw-content:"undo";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-redo:after{--tw-content:"redo";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-expand-all:after{--tw-content:"expand";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-collapse-all:after{--tw-content:"compress";content:var(--tw-content)}.jsoneditor-menu>div.jsoneditor-modes>button{cursor:pointer;color:var(--color-font-default-light);--tw-border-style:none!important;font-family:var(--font-sans)!important;background-color:#0000!important;border-style:none!important}@media not print{.jsoneditor-menu>div.jsoneditor-modes>button:where(.dark,.dark *){color:var(--color-font-default-dark)}}@media (hover:hover){.jsoneditor-menu>div.jsoneditor-modes>button:hover{color:var(--color-font-important-light);background-image:none!important}@media not print{.jsoneditor-menu>div.jsoneditor-modes>button:hover:where(.dark,.dark *){color:var(--color-font-important-dark)}}}.jsoneditor-contextmenu .jsoneditor-menu{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);overflow:clip;background-color:var(--color-white)!important;padding-block:calc(var(--spacing) * 1)!important;--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media not print{.jsoneditor-contextmenu .jsoneditor-menu:where(.dark,.dark *){border-color:var(--color-base-800);background-color:var(--color-base-800)!important}}.jsoneditor-contextmenu .jsoneditor-menu li{flex-direction:column;display:flex;position:relative}.jsoneditor-contextmenu .jsoneditor-menu button{margin-inline:calc(var(--spacing) * 1)!important;border-radius:var(--border-radius,6px)!important;width:auto!important;height:30px!important;padding-inline:calc(var(--spacing) * 3)!important;background-color:#0000!important;flex-grow:1!important}@media (hover:hover){.jsoneditor-contextmenu .jsoneditor-menu button:hover{background-color:var(--color-base-100)!important;color:var(--color-base-700)!important}}@media not print{@media (hover:hover){.jsoneditor-contextmenu .jsoneditor-menu button:where(.dark,.dark *):hover{background-color:var(--color-base-700)!important;color:var(--color-base-200)!important}}}.jsoneditor-contextmenu button .jsoneditor-icon{width:auto!important}.jsoneditor-contextmenu button .jsoneditor-text{padding:calc(var(--spacing) * 0);color:var(--color-font-default-light);font-family:var(--font-sans)!important;background-color:#0000!important}@media not print{.jsoneditor-contextmenu button .jsoneditor-text:where(.dark,.dark *){color:var(--color-font-default-dark)}}.jsoneditor-contextmenu .jsoneditor-selected{background-color:#0000!important}.jsoneditor-contextmenu .jsoneditor-selected>button>.jsoneditor-text{color:var(--color-primary-600)!important}@media not print{.jsoneditor-contextmenu .jsoneditor-selected>button>.jsoneditor-text:where(.dark,.dark *){color:var(--color-primary-500)!important}}.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{justify-content:center;top:calc(var(--spacing) * .5)!important;right:calc(var(--spacing) * .5)!important;margin:calc(var(--spacing) * 0)!important;padding:calc(var(--spacing) * 0)!important;align-items:center!important;display:flex!important}.jsoneditor .jsoneditor-selected,.jsoneditor .jsoneditor-highlight{background-color:var(--color-base-50)!important}@media not print{:is(.jsoneditor .jsoneditor-selected,.jsoneditor .jsoneditor-highlight):where(.dark,.dark *){background-color:var(--color-base-800)!important}}.jsoneditor div.jsoneditor-expand,.jsoneditor .jsoneditor-button.jsoneditor-collapsed,.jsoneditor .jsoneditor-button.jsoneditor-expanded,.jsoneditor .jsoneditor-dragarea,.jsoneditor .jsoneditor-contextmenu-button{--tw-outline-style:none!important;background-color:#0000!important;background-image:none!important;outline-style:none!important}.jsoneditor div.jsoneditor-expand:after,.jsoneditor .jsoneditor-dragarea:after,.jsoneditor .jsoneditor-contextmenu-button:after,.jsoneditor .jsoneditor-button.jsoneditor-collapsed:after,.jsoneditor .jsoneditor-button.jsoneditor-expanded:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;color:var(--color-base-400);direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}@media not print{:is():where(.dark,.dark *){color:var(--color-base-500)}}.jsoneditor div.jsoneditor-expand:after{--tw-content:"arrow_drop_down";content:var(--tw-content)}.jsoneditor .jsoneditor-contextmenu-button:after{--tw-content:"toolbar";content:var(--tw-content)}.jsoneditor .jsoneditor-dragarea:after{--tw-content:"drag_indicator";content:var(--tw-content)}.jsoneditor .jsoneditor-button.jsoneditor-collapsed:after{--tw-content:"keyboard_arrow_up";content:var(--tw-content)}.jsoneditor .jsoneditor-button.jsoneditor-expanded:after{--tw-content:"keyboard_arrow_down";content:var(--tw-content)}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);position:absolute;--tw-border-style:none!important;border-style:none!important}@media (hover:hover){.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand:hover{background-color:#0000!important}}.jsoneditor .jsoneditor-separator{border-color:var(--color-base-200)!important}@media not print{.jsoneditor .jsoneditor-separator:where(.dark,.dark *){border-color:var(--color-base-700)!important}}.jsoneditor-modal.pico-content{border-radius:var(--border-radius,6px)!important;--tw-border-style:none!important;font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important;border-style:none!important}@media not print{.jsoneditor-modal.pico-content:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}.jsoneditor-modal.pico-content{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media not print{.jsoneditor-modal.pico-content:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)!important}}.jsoneditor-modal p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.jsoneditor-modal p a{color:var(--color-primary-600)!important}@media not print{.jsoneditor-modal p a:where(.dark,.dark *){color:var(--color-primary-500)!important}}.jsoneditor-modal .pico-modal-header{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));height:auto!important;padding-inline:calc(var(--spacing) * 3)!important;padding-block:calc(var(--spacing) * 1.5)!important;--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important;--tw-tracking:var(--tracking-tight)!important;letter-spacing:var(--tracking-tight)!important;color:var(--color-font-important-light)!important;background-color:#0000!important}@media not print{.jsoneditor-modal .pico-modal-header:where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-font-important-dark)!important}}.jsoneditor-modal .pico-modal-contents{display:block;margin-top:calc(var(--spacing) * 3)!important}.jsoneditor-modal .jsoneditor-jmespath-label{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;color:var(--color-font-important-light)!important}@media not print{.jsoneditor-modal .jsoneditor-jmespath-label:where(.dark,.dark *){color:var(--color-font-important-dark)!important}}.jsoneditor-modal.pico-content .pico-close{margin-top:-13px;margin-right:calc(var(--spacing) * 2);color:var(--color-base-400)!important;font-size:0!important}@media not print{.jsoneditor-modal.pico-content .pico-close:where(.dark,.dark *){color:var(--color-base-500)!important}}@media (hover:hover){.jsoneditor-modal.pico-content .pico-close:hover{color:var(--color-font-important-light)!important}@media not print{.jsoneditor-modal.pico-content .pico-close:hover:where(.dark,.dark *){color:var(--color-font-important-dark)!important}}}.jsoneditor-modal.pico-content .pico-close:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;--tw-content:"close";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea{min-height:38px;min-width:var(--container-sm);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);color:var(--color-font-default-light)}@media not print{:is(.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea):where(.dark,.dark *){color:var(--color-font-default-dark)}}.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-outline-style:none;outline-style:none}@media not print{:is(.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea):where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea{padding-block:calc(var(--spacing) * 2)}.jsoneditor-modal.pico-content input[type=submit]{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-primary-600);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-white);border-color:#0000;display:flex;position:relative}.jsoneditor-modal.pico-content .jsoneditor-modal-actions{margin:calc(var(--spacing) * 0)}.jsoneditor-modal.pico-content form{width:570px;font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important}@media not print{.jsoneditor-modal.pico-content form:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}.jsoneditor-modal.pico-content .jsoneditor-button-group{justify-content:flex-end;gap:calc(var(--spacing) * 2);flex-direction:row;display:flex}.jsoneditor-modal-input input[type=button].jsoneditor-button-asc,.jsoneditor-modal-input input[type=button].jsoneditor-button-desc{cursor:pointer;border-radius:var(--border-radius,6px)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:var(--color-base-200)!important;background-color:var(--color-base-50)!important;height:38px!important;font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important}@media not print{:is(.jsoneditor-modal-input input[type=button].jsoneditor-button-asc,.jsoneditor-modal-input input[type=button].jsoneditor-button-desc):where(.dark,.dark *){color:var(--color-font-default-dark)!important;border-color:var(--color-base-700)!important;background-color:var(--color-base-800)!important}}.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{border-color:var(--color-primary-600)!important;background-color:var(--color-primary-600)!important;color:var(--color-white)!important}.jsoneditor-modal table td,.jsoneditor-modal table th{font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important}@media not print{:is(.jsoneditor-modal table td,.jsoneditor-modal table th):where(.dark,.dark *){color:var(--color-font-default-dark)!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-text-shadow-color{syntax:"*";inherits:false}@property --tw-text-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}} \ No newline at end of file +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-text-shadow-color:initial;--tw-text-shadow-alpha:100%;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-orange-950:oklch(26.6% .079 36.259);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-50:var(--color-primary-50);--color-primary-100:var(--color-primary-100);--color-primary-200:var(--color-primary-200);--color-primary-300:var(--color-primary-300);--color-primary-400:var(--color-primary-400);--color-primary-500:var(--color-primary-500);--color-primary-600:var(--color-primary-600);--color-primary-700:var(--color-primary-700);--color-primary-800:var(--color-primary-800);--color-primary-900:var(--color-primary-900);--color-primary-950:var(--color-primary-950);--color-base-50:var(--color-base-50);--color-base-100:var(--color-base-100);--color-base-200:var(--color-base-200);--color-base-300:var(--color-base-300);--color-base-400:var(--color-base-400);--color-base-500:var(--color-base-500);--color-base-600:var(--color-base-600);--color-base-700:var(--color-base-700);--color-base-800:var(--color-base-800);--color-base-900:var(--color-base-900);--color-base-950:var(--color-base-950);--color-font-subtle-light:var(--color-font-subtle-light);--color-font-subtle-dark:var(--color-font-subtle-dark);--color-font-default-light:var(--color-font-default-light);--color-font-default-dark:var(--color-font-default-dark);--color-font-important-light:var(--color-font-important-light);--color-font-important-dark:var(--color-font-important-dark)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-base-200,currentColor)}::file-selector-button{border-color:var(--color-base-200,currentColor)}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0{top:calc(var(--spacing) * 0)}.-top-1{top:calc(var(--spacing) * -1)}.-top-1\/2{top:-50%}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-4{top:calc(var(--spacing) * -4)}.-top-5{top:calc(var(--spacing) * -5)}.-top-6{top:calc(var(--spacing) * -6)}.-top-7{top:calc(var(--spacing) * -7)}.-top-8{top:calc(var(--spacing) * -8)}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.top-7{top:calc(var(--spacing) * 7)}.top-8{top:calc(var(--spacing) * 8)}.top-10{top:calc(var(--spacing) * 10)}.top-\[73px\]{top:73px}.-right-0{right:calc(var(--spacing) * 0)}.-right-1{right:calc(var(--spacing) * -1)}.-right-1\/2{right:-50%}.-right-2{right:calc(var(--spacing) * -2)}.-right-3{right:calc(var(--spacing) * -3)}.-right-4{right:calc(var(--spacing) * -4)}.-right-5{right:calc(var(--spacing) * -5)}.-right-6{right:calc(var(--spacing) * -6)}.-right-7{right:calc(var(--spacing) * -7)}.-right-8{right:calc(var(--spacing) * -8)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-1\/2{right:50%}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-5{right:calc(var(--spacing) * 5)}.right-6{right:calc(var(--spacing) * 6)}.right-7{right:calc(var(--spacing) * 7)}.right-8{right:calc(var(--spacing) * 8)}.-bottom-0{bottom:calc(var(--spacing) * 0)}.-bottom-1{bottom:calc(var(--spacing) * -1)}.-bottom-1\/2{bottom:-50%}.-bottom-2{bottom:calc(var(--spacing) * -2)}.-bottom-3{bottom:calc(var(--spacing) * -3)}.-bottom-4{bottom:calc(var(--spacing) * -4)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.-bottom-7{bottom:calc(var(--spacing) * -7)}.-bottom-8{bottom:calc(var(--spacing) * -8)}.-bottom-px{bottom:-1px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1{bottom:calc(var(--spacing) * 1)}.bottom-1\/2{bottom:50%}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-7{bottom:calc(var(--spacing) * 7)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-\[73px\]{bottom:73px}.-left-0{left:calc(var(--spacing) * 0)}.-left-1{left:calc(var(--spacing) * -1)}.-left-1\/2{left:-50%}.-left-2{left:calc(var(--spacing) * -2)}.-left-3{left:calc(var(--spacing) * -3)}.-left-4{left:calc(var(--spacing) * -4)}.-left-5{left:calc(var(--spacing) * -5)}.-left-6{left:calc(var(--spacing) * -6)}.-left-7{left:calc(var(--spacing) * -7)}.-left-8{left:calc(var(--spacing) * -8)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.left-6{left:calc(var(--spacing) * 6)}.left-7{left:calc(var(--spacing) * 7)}.left-8{left:calc(var(--spacing) * 8)}.left-\[65px\]{left:65px}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60{z-index:60}.z-100{z-index:100}.z-\[50\]{z-index:50}.z-\[1000\]{z-index:1000}.order-last{order:9999}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-13{grid-column:span 13/span 13}.col-span-14{grid-column:span 14/span 14}.col-span-15{grid-column:span 15/span 15}.col-span-16{grid-column:span 16/span 16}.float-right{float:right}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.\!-m-0{margin:calc(var(--spacing) * 0)!important}.\!-m-1{margin:calc(var(--spacing) * -1)!important}.\!-m-2{margin:calc(var(--spacing) * -2)!important}.\!-m-3{margin:calc(var(--spacing) * -3)!important}.\!-m-4{margin:calc(var(--spacing) * -4)!important}.\!-m-5{margin:calc(var(--spacing) * -5)!important}.\!-m-6{margin:calc(var(--spacing) * -6)!important}.\!-m-7{margin:calc(var(--spacing) * -7)!important}.\!-m-8{margin:calc(var(--spacing) * -8)!important}.\!-m-9{margin:calc(var(--spacing) * -9)!important}.\!-m-10{margin:calc(var(--spacing) * -10)!important}.\!-m-11{margin:calc(var(--spacing) * -11)!important}.\!-m-12{margin:calc(var(--spacing) * -12)!important}.\!-m-13{margin:calc(var(--spacing) * -13)!important}.\!-m-14{margin:calc(var(--spacing) * -14)!important}.\!-m-15{margin:calc(var(--spacing) * -15)!important}.\!-m-16{margin:calc(var(--spacing) * -16)!important}.\!-m-17{margin:calc(var(--spacing) * -17)!important}.\!-m-18{margin:calc(var(--spacing) * -18)!important}.\!-m-19{margin:calc(var(--spacing) * -19)!important}.\!-m-20{margin:calc(var(--spacing) * -20)!important}.\!-m-21{margin:calc(var(--spacing) * -21)!important}.\!-m-22{margin:calc(var(--spacing) * -22)!important}.\!-m-23{margin:calc(var(--spacing) * -23)!important}.\!-m-24{margin:calc(var(--spacing) * -24)!important}.\!-m-px{margin:-1px!important}.\!m-0{margin:calc(var(--spacing) * 0)!important}.\!m-1{margin:calc(var(--spacing) * 1)!important}.\!m-2{margin:calc(var(--spacing) * 2)!important}.\!m-3{margin:calc(var(--spacing) * 3)!important}.\!m-4{margin:calc(var(--spacing) * 4)!important}.\!m-5{margin:calc(var(--spacing) * 5)!important}.\!m-6{margin:calc(var(--spacing) * 6)!important}.\!m-7{margin:calc(var(--spacing) * 7)!important}.\!m-8{margin:calc(var(--spacing) * 8)!important}.\!m-9{margin:calc(var(--spacing) * 9)!important}.\!m-10{margin:calc(var(--spacing) * 10)!important}.\!m-11{margin:calc(var(--spacing) * 11)!important}.\!m-12{margin:calc(var(--spacing) * 12)!important}.\!m-13{margin:calc(var(--spacing) * 13)!important}.\!m-14{margin:calc(var(--spacing) * 14)!important}.\!m-15{margin:calc(var(--spacing) * 15)!important}.\!m-16{margin:calc(var(--spacing) * 16)!important}.\!m-17{margin:calc(var(--spacing) * 17)!important}.\!m-18{margin:calc(var(--spacing) * 18)!important}.\!m-19{margin:calc(var(--spacing) * 19)!important}.\!m-20{margin:calc(var(--spacing) * 20)!important}.\!m-21{margin:calc(var(--spacing) * 21)!important}.\!m-22{margin:calc(var(--spacing) * 22)!important}.\!m-23{margin:calc(var(--spacing) * 23)!important}.\!m-24{margin:calc(var(--spacing) * 24)!important}.\!m-px{margin:1px!important}.-m-0{margin:calc(var(--spacing) * 0)}.-m-1{margin:calc(var(--spacing) * -1)}.-m-2{margin:calc(var(--spacing) * -2)}.-m-3{margin:calc(var(--spacing) * -3)}.-m-4{margin:calc(var(--spacing) * -4)}.-m-5{margin:calc(var(--spacing) * -5)}.-m-6{margin:calc(var(--spacing) * -6)}.-m-7{margin:calc(var(--spacing) * -7)}.-m-8{margin:calc(var(--spacing) * -8)}.-m-9{margin:calc(var(--spacing) * -9)}.-m-10{margin:calc(var(--spacing) * -10)}.-m-11{margin:calc(var(--spacing) * -11)}.-m-12{margin:calc(var(--spacing) * -12)}.-m-13{margin:calc(var(--spacing) * -13)}.-m-14{margin:calc(var(--spacing) * -14)}.-m-15{margin:calc(var(--spacing) * -15)}.-m-16{margin:calc(var(--spacing) * -16)}.-m-17{margin:calc(var(--spacing) * -17)}.-m-18{margin:calc(var(--spacing) * -18)}.-m-19{margin:calc(var(--spacing) * -19)}.-m-20{margin:calc(var(--spacing) * -20)}.-m-21{margin:calc(var(--spacing) * -21)}.-m-22{margin:calc(var(--spacing) * -22)}.-m-23{margin:calc(var(--spacing) * -23)}.-m-24{margin:calc(var(--spacing) * -24)}.-m-px{margin:-1px}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.m-6{margin:calc(var(--spacing) * 6)}.m-7{margin:calc(var(--spacing) * 7)}.m-8{margin:calc(var(--spacing) * 8)}.m-9{margin:calc(var(--spacing) * 9)}.m-10{margin:calc(var(--spacing) * 10)}.m-11{margin:calc(var(--spacing) * 11)}.m-12{margin:calc(var(--spacing) * 12)}.m-13{margin:calc(var(--spacing) * 13)}.m-14{margin:calc(var(--spacing) * 14)}.m-15{margin:calc(var(--spacing) * 15)}.m-16{margin:calc(var(--spacing) * 16)}.m-17{margin:calc(var(--spacing) * 17)}.m-18{margin:calc(var(--spacing) * 18)}.m-19{margin:calc(var(--spacing) * 19)}.m-20{margin:calc(var(--spacing) * 20)}.m-21{margin:calc(var(--spacing) * 21)}.m-22{margin:calc(var(--spacing) * 22)}.m-23{margin:calc(var(--spacing) * 23)}.m-24{margin:calc(var(--spacing) * 24)}.m-px{margin:1px}.\!-mx-0{margin-inline:calc(var(--spacing) * 0)!important}.\!-mx-1{margin-inline:calc(var(--spacing) * -1)!important}.\!-mx-2{margin-inline:calc(var(--spacing) * -2)!important}.\!-mx-3{margin-inline:calc(var(--spacing) * -3)!important}.\!-mx-4{margin-inline:calc(var(--spacing) * -4)!important}.\!-mx-5{margin-inline:calc(var(--spacing) * -5)!important}.\!-mx-6{margin-inline:calc(var(--spacing) * -6)!important}.\!-mx-7{margin-inline:calc(var(--spacing) * -7)!important}.\!-mx-8{margin-inline:calc(var(--spacing) * -8)!important}.\!-mx-9{margin-inline:calc(var(--spacing) * -9)!important}.\!-mx-10{margin-inline:calc(var(--spacing) * -10)!important}.\!-mx-11{margin-inline:calc(var(--spacing) * -11)!important}.\!-mx-12{margin-inline:calc(var(--spacing) * -12)!important}.\!-mx-13{margin-inline:calc(var(--spacing) * -13)!important}.\!-mx-14{margin-inline:calc(var(--spacing) * -14)!important}.\!-mx-15{margin-inline:calc(var(--spacing) * -15)!important}.\!-mx-16{margin-inline:calc(var(--spacing) * -16)!important}.\!-mx-17{margin-inline:calc(var(--spacing) * -17)!important}.\!-mx-18{margin-inline:calc(var(--spacing) * -18)!important}.\!-mx-19{margin-inline:calc(var(--spacing) * -19)!important}.\!-mx-20{margin-inline:calc(var(--spacing) * -20)!important}.\!-mx-21{margin-inline:calc(var(--spacing) * -21)!important}.\!-mx-22{margin-inline:calc(var(--spacing) * -22)!important}.\!-mx-23{margin-inline:calc(var(--spacing) * -23)!important}.\!-mx-24{margin-inline:calc(var(--spacing) * -24)!important}.\!-mx-px{margin-inline:-1px!important}.\!mx-0{margin-inline:calc(var(--spacing) * 0)!important}.\!mx-1{margin-inline:calc(var(--spacing) * 1)!important}.\!mx-2{margin-inline:calc(var(--spacing) * 2)!important}.\!mx-3{margin-inline:calc(var(--spacing) * 3)!important}.\!mx-4{margin-inline:calc(var(--spacing) * 4)!important}.\!mx-5{margin-inline:calc(var(--spacing) * 5)!important}.\!mx-6{margin-inline:calc(var(--spacing) * 6)!important}.\!mx-7{margin-inline:calc(var(--spacing) * 7)!important}.\!mx-8{margin-inline:calc(var(--spacing) * 8)!important}.\!mx-9{margin-inline:calc(var(--spacing) * 9)!important}.\!mx-10{margin-inline:calc(var(--spacing) * 10)!important}.\!mx-11{margin-inline:calc(var(--spacing) * 11)!important}.\!mx-12{margin-inline:calc(var(--spacing) * 12)!important}.\!mx-13{margin-inline:calc(var(--spacing) * 13)!important}.\!mx-14{margin-inline:calc(var(--spacing) * 14)!important}.\!mx-15{margin-inline:calc(var(--spacing) * 15)!important}.\!mx-16{margin-inline:calc(var(--spacing) * 16)!important}.\!mx-17{margin-inline:calc(var(--spacing) * 17)!important}.\!mx-18{margin-inline:calc(var(--spacing) * 18)!important}.\!mx-19{margin-inline:calc(var(--spacing) * 19)!important}.\!mx-20{margin-inline:calc(var(--spacing) * 20)!important}.\!mx-21{margin-inline:calc(var(--spacing) * 21)!important}.\!mx-22{margin-inline:calc(var(--spacing) * 22)!important}.\!mx-23{margin-inline:calc(var(--spacing) * 23)!important}.\!mx-24{margin-inline:calc(var(--spacing) * 24)!important}.\!mx-px{margin-inline:1px!important}.-mx-0{margin-inline:calc(var(--spacing) * 0)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-3{margin-inline:calc(var(--spacing) * -3)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-5{margin-inline:calc(var(--spacing) * -5)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.-mx-7{margin-inline:calc(var(--spacing) * -7)}.-mx-8{margin-inline:calc(var(--spacing) * -8)}.-mx-9{margin-inline:calc(var(--spacing) * -9)}.-mx-10{margin-inline:calc(var(--spacing) * -10)}.-mx-11{margin-inline:calc(var(--spacing) * -11)}.-mx-12{margin-inline:calc(var(--spacing) * -12)}.-mx-13{margin-inline:calc(var(--spacing) * -13)}.-mx-14{margin-inline:calc(var(--spacing) * -14)}.-mx-15{margin-inline:calc(var(--spacing) * -15)}.-mx-16{margin-inline:calc(var(--spacing) * -16)}.-mx-17{margin-inline:calc(var(--spacing) * -17)}.-mx-18{margin-inline:calc(var(--spacing) * -18)}.-mx-19{margin-inline:calc(var(--spacing) * -19)}.-mx-20{margin-inline:calc(var(--spacing) * -20)}.-mx-21{margin-inline:calc(var(--spacing) * -21)}.-mx-22{margin-inline:calc(var(--spacing) * -22)}.-mx-23{margin-inline:calc(var(--spacing) * -23)}.-mx-24{margin-inline:calc(var(--spacing) * -24)}.-mx-px{margin-inline:-1px}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-7{margin-inline:calc(var(--spacing) * 7)}.mx-8{margin-inline:calc(var(--spacing) * 8)}.mx-9{margin-inline:calc(var(--spacing) * 9)}.mx-10{margin-inline:calc(var(--spacing) * 10)}.mx-11{margin-inline:calc(var(--spacing) * 11)}.mx-12{margin-inline:calc(var(--spacing) * 12)}.mx-13{margin-inline:calc(var(--spacing) * 13)}.mx-14{margin-inline:calc(var(--spacing) * 14)}.mx-15{margin-inline:calc(var(--spacing) * 15)}.mx-16{margin-inline:calc(var(--spacing) * 16)}.mx-17{margin-inline:calc(var(--spacing) * 17)}.mx-18{margin-inline:calc(var(--spacing) * 18)}.mx-19{margin-inline:calc(var(--spacing) * 19)}.mx-20{margin-inline:calc(var(--spacing) * 20)}.mx-21{margin-inline:calc(var(--spacing) * 21)}.mx-22{margin-inline:calc(var(--spacing) * 22)}.mx-23{margin-inline:calc(var(--spacing) * 23)}.mx-24{margin-inline:calc(var(--spacing) * 24)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.\!-my-0{margin-block:calc(var(--spacing) * 0)!important}.\!-my-1{margin-block:calc(var(--spacing) * -1)!important}.\!-my-2{margin-block:calc(var(--spacing) * -2)!important}.\!-my-3{margin-block:calc(var(--spacing) * -3)!important}.\!-my-4{margin-block:calc(var(--spacing) * -4)!important}.\!-my-5{margin-block:calc(var(--spacing) * -5)!important}.\!-my-6{margin-block:calc(var(--spacing) * -6)!important}.\!-my-7{margin-block:calc(var(--spacing) * -7)!important}.\!-my-8{margin-block:calc(var(--spacing) * -8)!important}.\!-my-9{margin-block:calc(var(--spacing) * -9)!important}.\!-my-10{margin-block:calc(var(--spacing) * -10)!important}.\!-my-11{margin-block:calc(var(--spacing) * -11)!important}.\!-my-12{margin-block:calc(var(--spacing) * -12)!important}.\!-my-13{margin-block:calc(var(--spacing) * -13)!important}.\!-my-14{margin-block:calc(var(--spacing) * -14)!important}.\!-my-15{margin-block:calc(var(--spacing) * -15)!important}.\!-my-16{margin-block:calc(var(--spacing) * -16)!important}.\!-my-17{margin-block:calc(var(--spacing) * -17)!important}.\!-my-18{margin-block:calc(var(--spacing) * -18)!important}.\!-my-19{margin-block:calc(var(--spacing) * -19)!important}.\!-my-20{margin-block:calc(var(--spacing) * -20)!important}.\!-my-21{margin-block:calc(var(--spacing) * -21)!important}.\!-my-22{margin-block:calc(var(--spacing) * -22)!important}.\!-my-23{margin-block:calc(var(--spacing) * -23)!important}.\!-my-24{margin-block:calc(var(--spacing) * -24)!important}.\!-my-px{margin-block:-1px!important}.\!my-0{margin-block:calc(var(--spacing) * 0)!important}.\!my-1{margin-block:calc(var(--spacing) * 1)!important}.\!my-2{margin-block:calc(var(--spacing) * 2)!important}.\!my-3{margin-block:calc(var(--spacing) * 3)!important}.\!my-4{margin-block:calc(var(--spacing) * 4)!important}.\!my-5{margin-block:calc(var(--spacing) * 5)!important}.\!my-6{margin-block:calc(var(--spacing) * 6)!important}.\!my-7{margin-block:calc(var(--spacing) * 7)!important}.\!my-8{margin-block:calc(var(--spacing) * 8)!important}.\!my-9{margin-block:calc(var(--spacing) * 9)!important}.\!my-10{margin-block:calc(var(--spacing) * 10)!important}.\!my-11{margin-block:calc(var(--spacing) * 11)!important}.\!my-12{margin-block:calc(var(--spacing) * 12)!important}.\!my-13{margin-block:calc(var(--spacing) * 13)!important}.\!my-14{margin-block:calc(var(--spacing) * 14)!important}.\!my-15{margin-block:calc(var(--spacing) * 15)!important}.\!my-16{margin-block:calc(var(--spacing) * 16)!important}.\!my-17{margin-block:calc(var(--spacing) * 17)!important}.\!my-18{margin-block:calc(var(--spacing) * 18)!important}.\!my-19{margin-block:calc(var(--spacing) * 19)!important}.\!my-20{margin-block:calc(var(--spacing) * 20)!important}.\!my-21{margin-block:calc(var(--spacing) * 21)!important}.\!my-22{margin-block:calc(var(--spacing) * 22)!important}.\!my-23{margin-block:calc(var(--spacing) * 23)!important}.\!my-24{margin-block:calc(var(--spacing) * 24)!important}.\!my-px{margin-block:1px!important}.-my-0{margin-block:calc(var(--spacing) * 0)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\.5{margin-block:calc(var(--spacing) * -1.5)}.-my-2{margin-block:calc(var(--spacing) * -2)}.-my-3{margin-block:calc(var(--spacing) * -3)}.-my-4{margin-block:calc(var(--spacing) * -4)}.-my-5{margin-block:calc(var(--spacing) * -5)}.-my-6{margin-block:calc(var(--spacing) * -6)}.-my-7{margin-block:calc(var(--spacing) * -7)}.-my-8{margin-block:calc(var(--spacing) * -8)}.-my-9{margin-block:calc(var(--spacing) * -9)}.-my-10{margin-block:calc(var(--spacing) * -10)}.-my-11{margin-block:calc(var(--spacing) * -11)}.-my-12{margin-block:calc(var(--spacing) * -12)}.-my-13{margin-block:calc(var(--spacing) * -13)}.-my-14{margin-block:calc(var(--spacing) * -14)}.-my-15{margin-block:calc(var(--spacing) * -15)}.-my-16{margin-block:calc(var(--spacing) * -16)}.-my-17{margin-block:calc(var(--spacing) * -17)}.-my-18{margin-block:calc(var(--spacing) * -18)}.-my-19{margin-block:calc(var(--spacing) * -19)}.-my-20{margin-block:calc(var(--spacing) * -20)}.-my-21{margin-block:calc(var(--spacing) * -21)}.-my-22{margin-block:calc(var(--spacing) * -22)}.-my-23{margin-block:calc(var(--spacing) * -23)}.-my-24{margin-block:calc(var(--spacing) * -24)}.-my-px{margin-block:-1px}.my-0{margin-block:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-7{margin-block:calc(var(--spacing) * 7)}.my-8{margin-block:calc(var(--spacing) * 8)}.my-9{margin-block:calc(var(--spacing) * 9)}.my-10{margin-block:calc(var(--spacing) * 10)}.my-11{margin-block:calc(var(--spacing) * 11)}.my-12{margin-block:calc(var(--spacing) * 12)}.my-13{margin-block:calc(var(--spacing) * 13)}.my-14{margin-block:calc(var(--spacing) * 14)}.my-15{margin-block:calc(var(--spacing) * 15)}.my-16{margin-block:calc(var(--spacing) * 16)}.my-17{margin-block:calc(var(--spacing) * 17)}.my-18{margin-block:calc(var(--spacing) * 18)}.my-19{margin-block:calc(var(--spacing) * 19)}.my-20{margin-block:calc(var(--spacing) * 20)}.my-21{margin-block:calc(var(--spacing) * 21)}.my-22{margin-block:calc(var(--spacing) * 22)}.my-23{margin-block:calc(var(--spacing) * 23)}.my-24{margin-block:calc(var(--spacing) * 24)}.my-px{margin-block:1px}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.\!-mt-0{margin-top:calc(var(--spacing) * 0)!important}.\!-mt-1{margin-top:calc(var(--spacing) * -1)!important}.\!-mt-2{margin-top:calc(var(--spacing) * -2)!important}.\!-mt-3{margin-top:calc(var(--spacing) * -3)!important}.\!-mt-4{margin-top:calc(var(--spacing) * -4)!important}.\!-mt-5{margin-top:calc(var(--spacing) * -5)!important}.\!-mt-6{margin-top:calc(var(--spacing) * -6)!important}.\!-mt-7{margin-top:calc(var(--spacing) * -7)!important}.\!-mt-8{margin-top:calc(var(--spacing) * -8)!important}.\!-mt-9{margin-top:calc(var(--spacing) * -9)!important}.\!-mt-10{margin-top:calc(var(--spacing) * -10)!important}.\!-mt-11{margin-top:calc(var(--spacing) * -11)!important}.\!-mt-12{margin-top:calc(var(--spacing) * -12)!important}.\!-mt-13{margin-top:calc(var(--spacing) * -13)!important}.\!-mt-14{margin-top:calc(var(--spacing) * -14)!important}.\!-mt-15{margin-top:calc(var(--spacing) * -15)!important}.\!-mt-16{margin-top:calc(var(--spacing) * -16)!important}.\!-mt-17{margin-top:calc(var(--spacing) * -17)!important}.\!-mt-18{margin-top:calc(var(--spacing) * -18)!important}.\!-mt-19{margin-top:calc(var(--spacing) * -19)!important}.\!-mt-20{margin-top:calc(var(--spacing) * -20)!important}.\!-mt-21{margin-top:calc(var(--spacing) * -21)!important}.\!-mt-22{margin-top:calc(var(--spacing) * -22)!important}.\!-mt-23{margin-top:calc(var(--spacing) * -23)!important}.\!-mt-24{margin-top:calc(var(--spacing) * -24)!important}.\!-mt-px{margin-top:-1px!important}.\!mt-0{margin-top:calc(var(--spacing) * 0)!important}.\!mt-1{margin-top:calc(var(--spacing) * 1)!important}.\!mt-2{margin-top:calc(var(--spacing) * 2)!important}.\!mt-3{margin-top:calc(var(--spacing) * 3)!important}.\!mt-4{margin-top:calc(var(--spacing) * 4)!important}.\!mt-5{margin-top:calc(var(--spacing) * 5)!important}.\!mt-6{margin-top:calc(var(--spacing) * 6)!important}.\!mt-7{margin-top:calc(var(--spacing) * 7)!important}.\!mt-8{margin-top:calc(var(--spacing) * 8)!important}.\!mt-9{margin-top:calc(var(--spacing) * 9)!important}.\!mt-10{margin-top:calc(var(--spacing) * 10)!important}.\!mt-11{margin-top:calc(var(--spacing) * 11)!important}.\!mt-12{margin-top:calc(var(--spacing) * 12)!important}.\!mt-13{margin-top:calc(var(--spacing) * 13)!important}.\!mt-14{margin-top:calc(var(--spacing) * 14)!important}.\!mt-15{margin-top:calc(var(--spacing) * 15)!important}.\!mt-16{margin-top:calc(var(--spacing) * 16)!important}.\!mt-17{margin-top:calc(var(--spacing) * 17)!important}.\!mt-18{margin-top:calc(var(--spacing) * 18)!important}.\!mt-19{margin-top:calc(var(--spacing) * 19)!important}.\!mt-20{margin-top:calc(var(--spacing) * 20)!important}.\!mt-21{margin-top:calc(var(--spacing) * 21)!important}.\!mt-22{margin-top:calc(var(--spacing) * 22)!important}.\!mt-23{margin-top:calc(var(--spacing) * 23)!important}.\!mt-24{margin-top:calc(var(--spacing) * 24)!important}.\!mt-px{margin-top:1px!important}.-mt-0{margin-top:calc(var(--spacing) * 0)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-5{margin-top:calc(var(--spacing) * -5)}.-mt-6{margin-top:calc(var(--spacing) * -6)}.-mt-7{margin-top:calc(var(--spacing) * -7)}.-mt-8{margin-top:calc(var(--spacing) * -8)}.-mt-9{margin-top:calc(var(--spacing) * -9)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.-mt-11{margin-top:calc(var(--spacing) * -11)}.-mt-12{margin-top:calc(var(--spacing) * -12)}.-mt-13{margin-top:calc(var(--spacing) * -13)}.-mt-14{margin-top:calc(var(--spacing) * -14)}.-mt-15{margin-top:calc(var(--spacing) * -15)}.-mt-16{margin-top:calc(var(--spacing) * -16)}.-mt-17{margin-top:calc(var(--spacing) * -17)}.-mt-18{margin-top:calc(var(--spacing) * -18)}.-mt-19{margin-top:calc(var(--spacing) * -19)}.-mt-20{margin-top:calc(var(--spacing) * -20)}.-mt-21{margin-top:calc(var(--spacing) * -21)}.-mt-22{margin-top:calc(var(--spacing) * -22)}.-mt-23{margin-top:calc(var(--spacing) * -23)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-9{margin-top:calc(var(--spacing) * 9)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-11{margin-top:calc(var(--spacing) * 11)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-13{margin-top:calc(var(--spacing) * 13)}.mt-14{margin-top:calc(var(--spacing) * 14)}.mt-15{margin-top:calc(var(--spacing) * 15)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-17{margin-top:calc(var(--spacing) * 17)}.mt-18{margin-top:calc(var(--spacing) * 18)}.mt-19{margin-top:calc(var(--spacing) * 19)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-21{margin-top:calc(var(--spacing) * 21)}.mt-22{margin-top:calc(var(--spacing) * 22)}.mt-23{margin-top:calc(var(--spacing) * 23)}.mt-24{margin-top:calc(var(--spacing) * 24)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.\!-mr-0{margin-right:calc(var(--spacing) * 0)!important}.\!-mr-1{margin-right:calc(var(--spacing) * -1)!important}.\!-mr-2{margin-right:calc(var(--spacing) * -2)!important}.\!-mr-3{margin-right:calc(var(--spacing) * -3)!important}.\!-mr-4{margin-right:calc(var(--spacing) * -4)!important}.\!-mr-5{margin-right:calc(var(--spacing) * -5)!important}.\!-mr-6{margin-right:calc(var(--spacing) * -6)!important}.\!-mr-7{margin-right:calc(var(--spacing) * -7)!important}.\!-mr-8{margin-right:calc(var(--spacing) * -8)!important}.\!-mr-9{margin-right:calc(var(--spacing) * -9)!important}.\!-mr-10{margin-right:calc(var(--spacing) * -10)!important}.\!-mr-11{margin-right:calc(var(--spacing) * -11)!important}.\!-mr-12{margin-right:calc(var(--spacing) * -12)!important}.\!-mr-13{margin-right:calc(var(--spacing) * -13)!important}.\!-mr-14{margin-right:calc(var(--spacing) * -14)!important}.\!-mr-15{margin-right:calc(var(--spacing) * -15)!important}.\!-mr-16{margin-right:calc(var(--spacing) * -16)!important}.\!-mr-17{margin-right:calc(var(--spacing) * -17)!important}.\!-mr-18{margin-right:calc(var(--spacing) * -18)!important}.\!-mr-19{margin-right:calc(var(--spacing) * -19)!important}.\!-mr-20{margin-right:calc(var(--spacing) * -20)!important}.\!-mr-21{margin-right:calc(var(--spacing) * -21)!important}.\!-mr-22{margin-right:calc(var(--spacing) * -22)!important}.\!-mr-23{margin-right:calc(var(--spacing) * -23)!important}.\!-mr-24{margin-right:calc(var(--spacing) * -24)!important}.\!-mr-px{margin-right:-1px!important}.\!mr-0{margin-right:calc(var(--spacing) * 0)!important}.\!mr-1{margin-right:calc(var(--spacing) * 1)!important}.\!mr-2{margin-right:calc(var(--spacing) * 2)!important}.\!mr-3{margin-right:calc(var(--spacing) * 3)!important}.\!mr-4{margin-right:calc(var(--spacing) * 4)!important}.\!mr-5{margin-right:calc(var(--spacing) * 5)!important}.\!mr-6{margin-right:calc(var(--spacing) * 6)!important}.\!mr-7{margin-right:calc(var(--spacing) * 7)!important}.\!mr-8{margin-right:calc(var(--spacing) * 8)!important}.\!mr-9{margin-right:calc(var(--spacing) * 9)!important}.\!mr-10{margin-right:calc(var(--spacing) * 10)!important}.\!mr-11{margin-right:calc(var(--spacing) * 11)!important}.\!mr-12{margin-right:calc(var(--spacing) * 12)!important}.\!mr-13{margin-right:calc(var(--spacing) * 13)!important}.\!mr-14{margin-right:calc(var(--spacing) * 14)!important}.\!mr-15{margin-right:calc(var(--spacing) * 15)!important}.\!mr-16{margin-right:calc(var(--spacing) * 16)!important}.\!mr-17{margin-right:calc(var(--spacing) * 17)!important}.\!mr-18{margin-right:calc(var(--spacing) * 18)!important}.\!mr-19{margin-right:calc(var(--spacing) * 19)!important}.\!mr-20{margin-right:calc(var(--spacing) * 20)!important}.\!mr-21{margin-right:calc(var(--spacing) * 21)!important}.\!mr-22{margin-right:calc(var(--spacing) * 22)!important}.\!mr-23{margin-right:calc(var(--spacing) * 23)!important}.\!mr-24{margin-right:calc(var(--spacing) * 24)!important}.\!mr-px{margin-right:1px!important}.-mr-0{margin-right:calc(var(--spacing) * 0)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-1\.5{margin-right:calc(var(--spacing) * -1.5)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.-mr-3{margin-right:calc(var(--spacing) * -3)}.-mr-4{margin-right:calc(var(--spacing) * -4)}.-mr-5{margin-right:calc(var(--spacing) * -5)}.-mr-6{margin-right:calc(var(--spacing) * -6)}.-mr-7{margin-right:calc(var(--spacing) * -7)}.-mr-8{margin-right:calc(var(--spacing) * -8)}.-mr-9{margin-right:calc(var(--spacing) * -9)}.-mr-10{margin-right:calc(var(--spacing) * -10)}.-mr-11{margin-right:calc(var(--spacing) * -11)}.-mr-12{margin-right:calc(var(--spacing) * -12)}.-mr-13{margin-right:calc(var(--spacing) * -13)}.-mr-14{margin-right:calc(var(--spacing) * -14)}.-mr-15{margin-right:calc(var(--spacing) * -15)}.-mr-16{margin-right:calc(var(--spacing) * -16)}.-mr-17{margin-right:calc(var(--spacing) * -17)}.-mr-18{margin-right:calc(var(--spacing) * -18)}.-mr-19{margin-right:calc(var(--spacing) * -19)}.-mr-20{margin-right:calc(var(--spacing) * -20)}.-mr-21{margin-right:calc(var(--spacing) * -21)}.-mr-22{margin-right:calc(var(--spacing) * -22)}.-mr-23{margin-right:calc(var(--spacing) * -23)}.-mr-24{margin-right:calc(var(--spacing) * -24)}.-mr-px{margin-right:-1px}.mr-0{margin-right:calc(var(--spacing) * 0)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mr-5{margin-right:calc(var(--spacing) * 5)}.mr-6{margin-right:calc(var(--spacing) * 6)}.mr-7{margin-right:calc(var(--spacing) * 7)}.mr-8{margin-right:calc(var(--spacing) * 8)}.mr-9{margin-right:calc(var(--spacing) * 9)}.mr-10{margin-right:calc(var(--spacing) * 10)}.mr-11{margin-right:calc(var(--spacing) * 11)}.mr-12{margin-right:calc(var(--spacing) * 12)}.mr-13{margin-right:calc(var(--spacing) * 13)}.mr-14{margin-right:calc(var(--spacing) * 14)}.mr-15{margin-right:calc(var(--spacing) * 15)}.mr-16{margin-right:calc(var(--spacing) * 16)}.mr-17{margin-right:calc(var(--spacing) * 17)}.mr-18{margin-right:calc(var(--spacing) * 18)}.mr-19{margin-right:calc(var(--spacing) * 19)}.mr-20{margin-right:calc(var(--spacing) * 20)}.mr-21{margin-right:calc(var(--spacing) * 21)}.mr-22{margin-right:calc(var(--spacing) * 22)}.mr-23{margin-right:calc(var(--spacing) * 23)}.mr-24{margin-right:calc(var(--spacing) * 24)}.mr-\[12px\]{margin-right:12px}.mr-\[17px\]{margin-right:17px}.mr-auto{margin-right:auto}.mr-px{margin-right:1px}.\!-mb-0{margin-bottom:calc(var(--spacing) * 0)!important}.\!-mb-1{margin-bottom:calc(var(--spacing) * -1)!important}.\!-mb-2{margin-bottom:calc(var(--spacing) * -2)!important}.\!-mb-3{margin-bottom:calc(var(--spacing) * -3)!important}.\!-mb-4{margin-bottom:calc(var(--spacing) * -4)!important}.\!-mb-5{margin-bottom:calc(var(--spacing) * -5)!important}.\!-mb-6{margin-bottom:calc(var(--spacing) * -6)!important}.\!-mb-7{margin-bottom:calc(var(--spacing) * -7)!important}.\!-mb-8{margin-bottom:calc(var(--spacing) * -8)!important}.\!-mb-9{margin-bottom:calc(var(--spacing) * -9)!important}.\!-mb-10{margin-bottom:calc(var(--spacing) * -10)!important}.\!-mb-11{margin-bottom:calc(var(--spacing) * -11)!important}.\!-mb-12{margin-bottom:calc(var(--spacing) * -12)!important}.\!-mb-13{margin-bottom:calc(var(--spacing) * -13)!important}.\!-mb-14{margin-bottom:calc(var(--spacing) * -14)!important}.\!-mb-15{margin-bottom:calc(var(--spacing) * -15)!important}.\!-mb-16{margin-bottom:calc(var(--spacing) * -16)!important}.\!-mb-17{margin-bottom:calc(var(--spacing) * -17)!important}.\!-mb-18{margin-bottom:calc(var(--spacing) * -18)!important}.\!-mb-19{margin-bottom:calc(var(--spacing) * -19)!important}.\!-mb-20{margin-bottom:calc(var(--spacing) * -20)!important}.\!-mb-21{margin-bottom:calc(var(--spacing) * -21)!important}.\!-mb-22{margin-bottom:calc(var(--spacing) * -22)!important}.\!-mb-23{margin-bottom:calc(var(--spacing) * -23)!important}.\!-mb-24{margin-bottom:calc(var(--spacing) * -24)!important}.\!-mb-px{margin-bottom:-1px!important}.\!mb-0{margin-bottom:calc(var(--spacing) * 0)!important}.\!mb-1{margin-bottom:calc(var(--spacing) * 1)!important}.\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.\!mb-3{margin-bottom:calc(var(--spacing) * 3)!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.\!mb-5{margin-bottom:calc(var(--spacing) * 5)!important}.\!mb-6{margin-bottom:calc(var(--spacing) * 6)!important}.\!mb-7{margin-bottom:calc(var(--spacing) * 7)!important}.\!mb-8{margin-bottom:calc(var(--spacing) * 8)!important}.\!mb-9{margin-bottom:calc(var(--spacing) * 9)!important}.\!mb-10{margin-bottom:calc(var(--spacing) * 10)!important}.\!mb-11{margin-bottom:calc(var(--spacing) * 11)!important}.\!mb-12{margin-bottom:calc(var(--spacing) * 12)!important}.\!mb-13{margin-bottom:calc(var(--spacing) * 13)!important}.\!mb-14{margin-bottom:calc(var(--spacing) * 14)!important}.\!mb-15{margin-bottom:calc(var(--spacing) * 15)!important}.\!mb-16{margin-bottom:calc(var(--spacing) * 16)!important}.\!mb-17{margin-bottom:calc(var(--spacing) * 17)!important}.\!mb-18{margin-bottom:calc(var(--spacing) * 18)!important}.\!mb-19{margin-bottom:calc(var(--spacing) * 19)!important}.\!mb-20{margin-bottom:calc(var(--spacing) * 20)!important}.\!mb-21{margin-bottom:calc(var(--spacing) * 21)!important}.\!mb-22{margin-bottom:calc(var(--spacing) * 22)!important}.\!mb-23{margin-bottom:calc(var(--spacing) * 23)!important}.\!mb-24{margin-bottom:calc(var(--spacing) * 24)!important}.\!mb-px{margin-bottom:1px!important}.-mb-0{margin-bottom:calc(var(--spacing) * 0)}.-mb-1{margin-bottom:calc(var(--spacing) * -1)}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.-mb-3{margin-bottom:calc(var(--spacing) * -3)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.-mb-5{margin-bottom:calc(var(--spacing) * -5)}.-mb-6{margin-bottom:calc(var(--spacing) * -6)}.-mb-7{margin-bottom:calc(var(--spacing) * -7)}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-9{margin-bottom:calc(var(--spacing) * -9)}.-mb-10{margin-bottom:calc(var(--spacing) * -10)}.-mb-11{margin-bottom:calc(var(--spacing) * -11)}.-mb-12{margin-bottom:calc(var(--spacing) * -12)}.-mb-13{margin-bottom:calc(var(--spacing) * -13)}.-mb-14{margin-bottom:calc(var(--spacing) * -14)}.-mb-15{margin-bottom:calc(var(--spacing) * -15)}.-mb-16{margin-bottom:calc(var(--spacing) * -16)}.-mb-17{margin-bottom:calc(var(--spacing) * -17)}.-mb-18{margin-bottom:calc(var(--spacing) * -18)}.-mb-19{margin-bottom:calc(var(--spacing) * -19)}.-mb-20{margin-bottom:calc(var(--spacing) * -20)}.-mb-21{margin-bottom:calc(var(--spacing) * -21)}.-mb-22{margin-bottom:calc(var(--spacing) * -22)}.-mb-23{margin-bottom:calc(var(--spacing) * -23)}.-mb-24{margin-bottom:calc(var(--spacing) * -24)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-9{margin-bottom:calc(var(--spacing) * 9)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-11{margin-bottom:calc(var(--spacing) * 11)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-13{margin-bottom:calc(var(--spacing) * 13)}.mb-14{margin-bottom:calc(var(--spacing) * 14)}.mb-15{margin-bottom:calc(var(--spacing) * 15)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.mb-17{margin-bottom:calc(var(--spacing) * 17)}.mb-18{margin-bottom:calc(var(--spacing) * 18)}.mb-19{margin-bottom:calc(var(--spacing) * 19)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.mb-21{margin-bottom:calc(var(--spacing) * 21)}.mb-22{margin-bottom:calc(var(--spacing) * 22)}.mb-23{margin-bottom:calc(var(--spacing) * 23)}.mb-24{margin-bottom:calc(var(--spacing) * 24)}.mb-px{margin-bottom:1px}.\!-ml-0{margin-left:calc(var(--spacing) * 0)!important}.\!-ml-1{margin-left:calc(var(--spacing) * -1)!important}.\!-ml-2{margin-left:calc(var(--spacing) * -2)!important}.\!-ml-3{margin-left:calc(var(--spacing) * -3)!important}.\!-ml-4{margin-left:calc(var(--spacing) * -4)!important}.\!-ml-5{margin-left:calc(var(--spacing) * -5)!important}.\!-ml-6{margin-left:calc(var(--spacing) * -6)!important}.\!-ml-7{margin-left:calc(var(--spacing) * -7)!important}.\!-ml-8{margin-left:calc(var(--spacing) * -8)!important}.\!-ml-9{margin-left:calc(var(--spacing) * -9)!important}.\!-ml-10{margin-left:calc(var(--spacing) * -10)!important}.\!-ml-11{margin-left:calc(var(--spacing) * -11)!important}.\!-ml-12{margin-left:calc(var(--spacing) * -12)!important}.\!-ml-13{margin-left:calc(var(--spacing) * -13)!important}.\!-ml-14{margin-left:calc(var(--spacing) * -14)!important}.\!-ml-15{margin-left:calc(var(--spacing) * -15)!important}.\!-ml-16{margin-left:calc(var(--spacing) * -16)!important}.\!-ml-17{margin-left:calc(var(--spacing) * -17)!important}.\!-ml-18{margin-left:calc(var(--spacing) * -18)!important}.\!-ml-19{margin-left:calc(var(--spacing) * -19)!important}.\!-ml-20{margin-left:calc(var(--spacing) * -20)!important}.\!-ml-21{margin-left:calc(var(--spacing) * -21)!important}.\!-ml-22{margin-left:calc(var(--spacing) * -22)!important}.\!-ml-23{margin-left:calc(var(--spacing) * -23)!important}.\!-ml-24{margin-left:calc(var(--spacing) * -24)!important}.\!-ml-px{margin-left:-1px!important}.\!ml-0{margin-left:calc(var(--spacing) * 0)!important}.\!ml-1{margin-left:calc(var(--spacing) * 1)!important}.\!ml-2{margin-left:calc(var(--spacing) * 2)!important}.\!ml-3{margin-left:calc(var(--spacing) * 3)!important}.\!ml-4{margin-left:calc(var(--spacing) * 4)!important}.\!ml-5{margin-left:calc(var(--spacing) * 5)!important}.\!ml-6{margin-left:calc(var(--spacing) * 6)!important}.\!ml-7{margin-left:calc(var(--spacing) * 7)!important}.\!ml-8{margin-left:calc(var(--spacing) * 8)!important}.\!ml-9{margin-left:calc(var(--spacing) * 9)!important}.\!ml-10{margin-left:calc(var(--spacing) * 10)!important}.\!ml-11{margin-left:calc(var(--spacing) * 11)!important}.\!ml-12{margin-left:calc(var(--spacing) * 12)!important}.\!ml-13{margin-left:calc(var(--spacing) * 13)!important}.\!ml-14{margin-left:calc(var(--spacing) * 14)!important}.\!ml-15{margin-left:calc(var(--spacing) * 15)!important}.\!ml-16{margin-left:calc(var(--spacing) * 16)!important}.\!ml-17{margin-left:calc(var(--spacing) * 17)!important}.\!ml-18{margin-left:calc(var(--spacing) * 18)!important}.\!ml-19{margin-left:calc(var(--spacing) * 19)!important}.\!ml-20{margin-left:calc(var(--spacing) * 20)!important}.\!ml-21{margin-left:calc(var(--spacing) * 21)!important}.\!ml-22{margin-left:calc(var(--spacing) * 22)!important}.\!ml-23{margin-left:calc(var(--spacing) * 23)!important}.\!ml-24{margin-left:calc(var(--spacing) * 24)!important}.\!ml-px{margin-left:1px!important}.-ml-0{margin-left:calc(var(--spacing) * 0)}.-ml-0\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-5{margin-left:calc(var(--spacing) * -5)}.-ml-6{margin-left:calc(var(--spacing) * -6)}.-ml-7{margin-left:calc(var(--spacing) * -7)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-9{margin-left:calc(var(--spacing) * -9)}.-ml-10{margin-left:calc(var(--spacing) * -10)}.-ml-11{margin-left:calc(var(--spacing) * -11)}.-ml-12{margin-left:calc(var(--spacing) * -12)}.-ml-13{margin-left:calc(var(--spacing) * -13)}.-ml-14{margin-left:calc(var(--spacing) * -14)}.-ml-15{margin-left:calc(var(--spacing) * -15)}.-ml-16{margin-left:calc(var(--spacing) * -16)}.-ml-17{margin-left:calc(var(--spacing) * -17)}.-ml-18{margin-left:calc(var(--spacing) * -18)}.-ml-19{margin-left:calc(var(--spacing) * -19)}.-ml-20{margin-left:calc(var(--spacing) * -20)}.-ml-21{margin-left:calc(var(--spacing) * -21)}.-ml-22{margin-left:calc(var(--spacing) * -22)}.-ml-23{margin-left:calc(var(--spacing) * -23)}.-ml-24{margin-left:calc(var(--spacing) * -24)}.-ml-px{margin-left:-1px}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-7{margin-left:calc(var(--spacing) * 7)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-11{margin-left:calc(var(--spacing) * 11)}.ml-12{margin-left:calc(var(--spacing) * 12)}.ml-13{margin-left:calc(var(--spacing) * 13)}.ml-14{margin-left:calc(var(--spacing) * 14)}.ml-15{margin-left:calc(var(--spacing) * 15)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-17{margin-left:calc(var(--spacing) * 17)}.ml-18{margin-left:calc(var(--spacing) * 18)}.ml-19{margin-left:calc(var(--spacing) * 19)}.ml-20{margin-left:calc(var(--spacing) * 20)}.ml-21{margin-left:calc(var(--spacing) * 21)}.ml-22{margin-left:calc(var(--spacing) * 22)}.ml-23{margin-left:calc(var(--spacing) * 23)}.ml-24{margin-left:calc(var(--spacing) * 24)}.ml-\[8px\]{margin-left:8px}.ml-\[12px\]{margin-left:12px}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.material-symbols-outlined{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.\!hidden{display:none!important}.block{display:block}.block\!{display:block!important}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content;field-sizing:content}.aspect-square{aspect-ratio:1}.size-full{width:100%;height:100%}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-9\.5{height:calc(var(--spacing) * 9.5)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-72{height:calc(var(--spacing) * 72)}.h-\[16px\]{height:16px}.h-\[18px\]{height:18px}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[36px\]{height:36px}.h-\[38px\]{height:38px}.h-\[45px\]{height:45px}.h-\[55px\]{height:55px}.h-\[64px\]{height:64px}.h-\[65px\]{height:65px}.h-\[66px\]{height:66px}.h-full{height:100%}.h-px{height:1px}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[30px\]{max-height:30px}.max-h-screen{max-height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-1{min-height:calc(var(--spacing) * 1)}.min-h-2{min-height:calc(var(--spacing) * 2)}.min-h-3{min-height:calc(var(--spacing) * 3)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-\[38px\]{min-height:38px}.min-h-\[59px\]{min-height:59px}.min-h-\[62\.5px\]{min-height:62.5px}.min-h-\[64px\]{min-height:64px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-1\/6{width:16.6667%}.w-1\/7{width:14.2857%}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-2\/4{width:50%}.w-2\/5{width:40%}.w-2\/6{width:33.3333%}.w-2\/7{width:28.5714%}.w-3{width:calc(var(--spacing) * 3)}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-3\/6{width:50%}.w-3\/7{width:42.8571%}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-4\/6{width:66.6667%}.w-4\/7{width:57.1429%}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-5\/7{width:71.4286%}.w-6{width:calc(var(--spacing) * 6)}.w-6\/7{width:85.7143%}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[0px\]{width:0}.w-\[16px\]{width:16px}.w-\[18px\]{width:18px}.w-\[26px\]{width:26px}.w-\[30px\]{width:30px}.w-\[34px\]{width:34px}.w-\[36px\]{width:36px}.w-\[38px\]{width:38px}.w-\[65px\]\!{width:65px!important}.w-\[264px\]{width:264px}.w-\[288px\]{width:288px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.\!max-w-2xl{max-width:var(--container-2xl)!important}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-8{max-width:calc(var(--spacing) * 8)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-1{min-width:calc(var(--spacing) * 1)}.min-w-2{min-width:calc(var(--spacing) * 2)}.min-w-3{min-width:calc(var(--spacing) * 3)}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-20{min-width:calc(var(--spacing) * 20)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-\[18px\]{min-width:18px}.min-w-\[26px\]{min-width:26px}.min-w-\[30px\]{min-width:30px}.min-w-\[34px\]{min-width:34px}.min-w-\[38px\]{min-width:38px}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-1\/2{flex-basis:50%}.basis-1\/3{flex-basis:33.3333%}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-none{border-spacing:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/3{--tw-translate-x:calc(calc(1 / 3 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.-rotate-90\!{rotate:-90deg!important}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-270\!{rotate:270deg!important}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transform\!{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-11{gap:calc(var(--spacing) * 11)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-13{gap:calc(var(--spacing) * 13)}.gap-14{gap:calc(var(--spacing) * 14)}.gap-15{gap:calc(var(--spacing) * 15)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded-full{border-radius:3.40282e38px!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[1px\]{border-radius:1px}.rounded-\[4px\]{border-radius:4px}.rounded-default{border-radius:var(--border-radius,6px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-default{border-top-left-radius:var(--border-radius,6px);border-top-right-radius:var(--border-radius,6px)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-default{border-top-left-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-default{border-top-right-radius:var(--border-radius,6px);border-bottom-right-radius:var(--border-radius,6px)}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-default{border-bottom-right-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border\!{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-t-0\!{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-base-50{border-color:var(--color-base-50)}.border-base-100{border-color:var(--color-base-100)}.border-base-200{border-color:var(--color-base-200)}.border-base-200\!{border-color:var(--color-base-200)!important}.border-base-300{border-color:var(--color-base-300)}.border-base-400,.border-base-400\/10{border-color:var(--color-base-400)}@supports (color:color-mix(in lab, red, red)){.border-base-400\/10{border-color:color-mix(in oklab, var(--color-base-400) 10%, transparent)}}.border-base-500{border-color:var(--color-base-500)}.border-base-600{border-color:var(--color-base-600)}.border-base-700{border-color:var(--color-base-700)}.border-base-800{border-color:var(--color-base-800)}.border-base-900{border-color:var(--color-base-900)}.border-base-950{border-color:var(--color-base-950)}.border-blue-700{border-color:var(--color-blue-700)}.border-green-700{border-color:var(--color-green-700)}.border-orange-700{border-color:var(--color-orange-700)}.border-primary-600{border-color:var(--color-primary-600)}.border-primary-700{border-color:var(--color-primary-700)}.border-red-600{border-color:var(--color-red-600)}.border-red-700{border-color:var(--color-red-700)}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}@media (hover:hover){.data-row:hover{background-color:var(--color-base-100)}}@media not print{@media (hover:hover){.data-row:where(.dark,.dark *):hover{background-color:var(--color-base-50)}@supports (color:color-mix(in lab, red, red)){.data-row:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-base-50) 4%, transparent)}}}}.\!bg-base-50{background-color:var(--color-base-50)!important}.\!bg-primary-50{background-color:var(--color-primary-50)!important}.\!bg-primary-100{background-color:var(--color-primary-100)!important}.\!bg-primary-200{background-color:var(--color-primary-200)!important}.\!bg-primary-300{background-color:var(--color-primary-300)!important}.\!bg-primary-400{background-color:var(--color-primary-400)!important}.\!bg-primary-500{background-color:var(--color-primary-500)!important}.\!bg-primary-600{background-color:var(--color-primary-600)!important}.\!bg-primary-700{background-color:var(--color-primary-700)!important}.\!bg-primary-800{background-color:var(--color-primary-800)!important}.\!bg-primary-900{background-color:var(--color-primary-900)!important}.\!bg-primary-950{background-color:var(--color-primary-950)!important}.bg-base-50{background-color:var(--color-base-50)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/10{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/10{background-color:color-mix(in oklab, var(--color-base-200) 10%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-base-400{background-color:var(--color-base-400)}.bg-base-500,.bg-base-500\/8{background-color:var(--color-base-500)}@supports (color:color-mix(in lab, red, red)){.bg-base-500\/8{background-color:color-mix(in oklab, var(--color-base-500) 8%, transparent)}}.bg-base-600{background-color:var(--color-base-600)}.bg-base-700{background-color:var(--color-base-700)}.bg-base-800{background-color:var(--color-base-800)}.bg-base-900,.bg-base-900\/80{background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.bg-base-900\/80{background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}.bg-base-950{background-color:var(--color-base-950)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-700{background-color:var(--color-blue-700)}.bg-blue-800{background-color:var(--color-blue-800)}.bg-blue-900{background-color:var(--color-blue-900)}.bg-blue-950{background-color:var(--color-blue-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-green-300{background-color:var(--color-green-300)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-700{background-color:var(--color-green-700)}.bg-green-800{background-color:var(--color-green-800)}.bg-green-900{background-color:var(--color-green-900)}.bg-green-950{background-color:var(--color-green-950)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-200{background-color:var(--color-orange-200)}.bg-orange-300{background-color:var(--color-orange-300)}.bg-orange-400{background-color:var(--color-orange-400)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-orange-700{background-color:var(--color-orange-700)}.bg-orange-800{background-color:var(--color-orange-800)}.bg-orange-900{background-color:var(--color-orange-900)}.bg-orange-950{background-color:var(--color-orange-950)}.bg-primary-50{background-color:var(--color-primary-50)}.bg-primary-100{background-color:var(--color-primary-100)}.bg-primary-200{background-color:var(--color-primary-200)}.bg-primary-300{background-color:var(--color-primary-300)}.bg-primary-400{background-color:var(--color-primary-400)}.bg-primary-500{background-color:var(--color-primary-500)}.bg-primary-600{background-color:var(--color-primary-600)}.bg-primary-700{background-color:var(--color-primary-700)}.bg-primary-800{background-color:var(--color-primary-800)}.bg-primary-900{background-color:var(--color-primary-900)}.bg-primary-950{background-color:var(--color-primary-950)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-300{background-color:var(--color-red-300)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-700{background-color:var(--color-red-700)}.bg-red-800{background-color:var(--color-red-800)}.bg-red-900{background-color:var(--color-red-900)}.bg-red-950{background-color:var(--color-red-950)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/0{background-color:#0000}@supports (color:color-mix(in lab, red, red)){.bg-white\/0{background-color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-white\/70{background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-white\/100{background-color:var(--color-white)}.bg-white\/\[\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[\.06\]{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-bl{--tw-gradient-position:to bottom left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-bl{--tw-gradient-position:to bottom left in oklab}}.bg-linear-to-bl{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-l{--tw-gradient-position:to left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-l{--tw-gradient-position:to left in oklab}}.bg-linear-to-l{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-t{--tw-gradient-position:to top}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-t{--tw-gradient-position:to top in oklab}}.bg-linear-to-t{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-tl{--tw-gradient-position:to top left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-tl{--tw-gradient-position:to top left in oklab}}.bg-linear-to-tl{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-tr{--tw-gradient-position:to top right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-tr{--tw-gradient-position:to top right in oklab}}.bg-linear-to-tr{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-striped{background-image:repeating-linear-gradient(45deg, var(--color-base-100), 0px, var(--color-base-100) 1px, transparent 2px, transparent 10px)}@media not print{.bg-striped:where(.dark,.dark *){background-image:repeating-linear-gradient(45deg, var(--color-base-800) 0px, var(--color-base-800) 1px, transparent 2px, transparent 10px)}}.bg-none{background-image:none}.from-base-50{--tw-gradient-from:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-200{--tw-gradient-from:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-300{--tw-gradient-from:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-400{--tw-gradient-from:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-500{--tw-gradient-from:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-600{--tw-gradient-from:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-700{--tw-gradient-from:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-800{--tw-gradient-from:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-900{--tw-gradient-from:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-950{--tw-gradient-from:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-50{--tw-gradient-from:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-100{--tw-gradient-from:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-200{--tw-gradient-from:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-300{--tw-gradient-from:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-400{--tw-gradient-from:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-500{--tw-gradient-from:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-600{--tw-gradient-from:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-700{--tw-gradient-from:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-800{--tw-gradient-from:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-900{--tw-gradient-from:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-950{--tw-gradient-from:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-50{--tw-gradient-to:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-100{--tw-gradient-to:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-200{--tw-gradient-to:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-400{--tw-gradient-to:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-500{--tw-gradient-to:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-600{--tw-gradient-to:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-700{--tw-gradient-to:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-800{--tw-gradient-to:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-900{--tw-gradient-to:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-950{--tw-gradient-to:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-50{--tw-gradient-to:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-100{--tw-gradient-to:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-200{--tw-gradient-to:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-300{--tw-gradient-to:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-400{--tw-gradient-to:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-500{--tw-gradient-to:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-600{--tw-gradient-to:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-700{--tw-gradient-to:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-800{--tw-gradient-to:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-900{--tw-gradient-to:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary-950{--tw-gradient-to:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-contain{background-size:contain}.bg-cover{background-size:cover}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.object-cover{object-fit:cover}.\!p-0{padding:calc(var(--spacing) * 0)!important}.\!p-1{padding:calc(var(--spacing) * 1)!important}.\!p-2{padding:calc(var(--spacing) * 2)!important}.\!p-3{padding:calc(var(--spacing) * 3)!important}.\!p-4{padding:calc(var(--spacing) * 4)!important}.\!p-5{padding:calc(var(--spacing) * 5)!important}.\!p-6{padding:calc(var(--spacing) * 6)!important}.\!p-7{padding:calc(var(--spacing) * 7)!important}.\!p-8{padding:calc(var(--spacing) * 8)!important}.\!p-9{padding:calc(var(--spacing) * 9)!important}.\!p-10{padding:calc(var(--spacing) * 10)!important}.\!p-11{padding:calc(var(--spacing) * 11)!important}.\!p-12{padding:calc(var(--spacing) * 12)!important}.\!p-13{padding:calc(var(--spacing) * 13)!important}.\!p-14{padding:calc(var(--spacing) * 14)!important}.\!p-15{padding:calc(var(--spacing) * 15)!important}.\!p-16{padding:calc(var(--spacing) * 16)!important}.\!p-17{padding:calc(var(--spacing) * 17)!important}.\!p-18{padding:calc(var(--spacing) * 18)!important}.\!p-19{padding:calc(var(--spacing) * 19)!important}.\!p-20{padding:calc(var(--spacing) * 20)!important}.\!p-21{padding:calc(var(--spacing) * 21)!important}.\!p-22{padding:calc(var(--spacing) * 22)!important}.\!p-23{padding:calc(var(--spacing) * 23)!important}.\!p-24{padding:calc(var(--spacing) * 24)!important}.\!p-px{padding:1px!important}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-9{padding:calc(var(--spacing) * 9)}.p-10{padding:calc(var(--spacing) * 10)}.p-11{padding:calc(var(--spacing) * 11)}.p-12{padding:calc(var(--spacing) * 12)}.p-13{padding:calc(var(--spacing) * 13)}.p-14{padding:calc(var(--spacing) * 14)}.p-15{padding:calc(var(--spacing) * 15)}.p-16{padding:calc(var(--spacing) * 16)}.p-17{padding:calc(var(--spacing) * 17)}.p-18{padding:calc(var(--spacing) * 18)}.p-19{padding:calc(var(--spacing) * 19)}.p-20{padding:calc(var(--spacing) * 20)}.p-21{padding:calc(var(--spacing) * 21)}.p-22{padding:calc(var(--spacing) * 22)}.p-23{padding:calc(var(--spacing) * 23)}.p-24{padding:calc(var(--spacing) * 24)}.p-px{padding:1px}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.\!px-1{padding-inline:calc(var(--spacing) * 1)!important}.\!px-2{padding-inline:calc(var(--spacing) * 2)!important}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.\!px-4{padding-inline:calc(var(--spacing) * 4)!important}.\!px-5{padding-inline:calc(var(--spacing) * 5)!important}.\!px-6{padding-inline:calc(var(--spacing) * 6)!important}.\!px-7{padding-inline:calc(var(--spacing) * 7)!important}.\!px-8{padding-inline:calc(var(--spacing) * 8)!important}.\!px-9{padding-inline:calc(var(--spacing) * 9)!important}.\!px-10{padding-inline:calc(var(--spacing) * 10)!important}.\!px-11{padding-inline:calc(var(--spacing) * 11)!important}.\!px-12{padding-inline:calc(var(--spacing) * 12)!important}.\!px-13{padding-inline:calc(var(--spacing) * 13)!important}.\!px-14{padding-inline:calc(var(--spacing) * 14)!important}.\!px-15{padding-inline:calc(var(--spacing) * 15)!important}.\!px-16{padding-inline:calc(var(--spacing) * 16)!important}.\!px-17{padding-inline:calc(var(--spacing) * 17)!important}.\!px-18{padding-inline:calc(var(--spacing) * 18)!important}.\!px-19{padding-inline:calc(var(--spacing) * 19)!important}.\!px-20{padding-inline:calc(var(--spacing) * 20)!important}.\!px-21{padding-inline:calc(var(--spacing) * 21)!important}.\!px-22{padding-inline:calc(var(--spacing) * 22)!important}.\!px-23{padding-inline:calc(var(--spacing) * 23)!important}.\!px-24{padding-inline:calc(var(--spacing) * 24)!important}.\!px-px{padding-inline:1px!important}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-5\.5{padding-inline:calc(var(--spacing) * 5.5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-9{padding-inline:calc(var(--spacing) * 9)}.px-10{padding-inline:calc(var(--spacing) * 10)}.px-11{padding-inline:calc(var(--spacing) * 11)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-13{padding-inline:calc(var(--spacing) * 13)}.px-14{padding-inline:calc(var(--spacing) * 14)}.px-15{padding-inline:calc(var(--spacing) * 15)}.px-16{padding-inline:calc(var(--spacing) * 16)}.px-17{padding-inline:calc(var(--spacing) * 17)}.px-18{padding-inline:calc(var(--spacing) * 18)}.px-19{padding-inline:calc(var(--spacing) * 19)}.px-20{padding-inline:calc(var(--spacing) * 20)}.px-21{padding-inline:calc(var(--spacing) * 21)}.px-22{padding-inline:calc(var(--spacing) * 22)}.px-23{padding-inline:calc(var(--spacing) * 23)}.px-24{padding-inline:calc(var(--spacing) * 24)}.px-px{padding-inline:1px}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.\!py-1{padding-block:calc(var(--spacing) * 1)!important}.\!py-2{padding-block:calc(var(--spacing) * 2)!important}.\!py-3{padding-block:calc(var(--spacing) * 3)!important}.\!py-4{padding-block:calc(var(--spacing) * 4)!important}.\!py-5{padding-block:calc(var(--spacing) * 5)!important}.\!py-6{padding-block:calc(var(--spacing) * 6)!important}.\!py-7{padding-block:calc(var(--spacing) * 7)!important}.\!py-8{padding-block:calc(var(--spacing) * 8)!important}.\!py-9{padding-block:calc(var(--spacing) * 9)!important}.\!py-10{padding-block:calc(var(--spacing) * 10)!important}.\!py-11{padding-block:calc(var(--spacing) * 11)!important}.\!py-12{padding-block:calc(var(--spacing) * 12)!important}.\!py-13{padding-block:calc(var(--spacing) * 13)!important}.\!py-14{padding-block:calc(var(--spacing) * 14)!important}.\!py-15{padding-block:calc(var(--spacing) * 15)!important}.\!py-16{padding-block:calc(var(--spacing) * 16)!important}.\!py-17{padding-block:calc(var(--spacing) * 17)!important}.\!py-18{padding-block:calc(var(--spacing) * 18)!important}.\!py-19{padding-block:calc(var(--spacing) * 19)!important}.\!py-20{padding-block:calc(var(--spacing) * 20)!important}.\!py-21{padding-block:calc(var(--spacing) * 21)!important}.\!py-22{padding-block:calc(var(--spacing) * 22)!important}.\!py-23{padding-block:calc(var(--spacing) * 23)!important}.\!py-24{padding-block:calc(var(--spacing) * 24)!important}.\!py-px{padding-block:1px!important}.py-0{padding-block:calc(var(--spacing) * 0)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-4\.5{padding-block:calc(var(--spacing) * 4.5)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-9{padding-block:calc(var(--spacing) * 9)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-11{padding-block:calc(var(--spacing) * 11)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-13{padding-block:calc(var(--spacing) * 13)}.py-14{padding-block:calc(var(--spacing) * 14)}.py-15{padding-block:calc(var(--spacing) * 15)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-17{padding-block:calc(var(--spacing) * 17)}.py-18{padding-block:calc(var(--spacing) * 18)}.py-19{padding-block:calc(var(--spacing) * 19)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-21{padding-block:calc(var(--spacing) * 21)}.py-22{padding-block:calc(var(--spacing) * 22)}.py-23{padding-block:calc(var(--spacing) * 23)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-\[5px\]{padding-block:5px}.py-px{padding-block:1px}.\!pt-0{padding-top:calc(var(--spacing) * 0)!important}.\!pt-1{padding-top:calc(var(--spacing) * 1)!important}.\!pt-2{padding-top:calc(var(--spacing) * 2)!important}.\!pt-3{padding-top:calc(var(--spacing) * 3)!important}.\!pt-4{padding-top:calc(var(--spacing) * 4)!important}.\!pt-5{padding-top:calc(var(--spacing) * 5)!important}.\!pt-6{padding-top:calc(var(--spacing) * 6)!important}.\!pt-7{padding-top:calc(var(--spacing) * 7)!important}.\!pt-8{padding-top:calc(var(--spacing) * 8)!important}.\!pt-9{padding-top:calc(var(--spacing) * 9)!important}.\!pt-10{padding-top:calc(var(--spacing) * 10)!important}.\!pt-11{padding-top:calc(var(--spacing) * 11)!important}.\!pt-12{padding-top:calc(var(--spacing) * 12)!important}.\!pt-13{padding-top:calc(var(--spacing) * 13)!important}.\!pt-14{padding-top:calc(var(--spacing) * 14)!important}.\!pt-15{padding-top:calc(var(--spacing) * 15)!important}.\!pt-16{padding-top:calc(var(--spacing) * 16)!important}.\!pt-17{padding-top:calc(var(--spacing) * 17)!important}.\!pt-18{padding-top:calc(var(--spacing) * 18)!important}.\!pt-19{padding-top:calc(var(--spacing) * 19)!important}.\!pt-20{padding-top:calc(var(--spacing) * 20)!important}.\!pt-21{padding-top:calc(var(--spacing) * 21)!important}.\!pt-22{padding-top:calc(var(--spacing) * 22)!important}.\!pt-23{padding-top:calc(var(--spacing) * 23)!important}.\!pt-24{padding-top:calc(var(--spacing) * 24)!important}.\!pt-px{padding-top:1px!important}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-9{padding-top:calc(var(--spacing) * 9)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-11{padding-top:calc(var(--spacing) * 11)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-13{padding-top:calc(var(--spacing) * 13)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-15{padding-top:calc(var(--spacing) * 15)}.pt-16{padding-top:calc(var(--spacing) * 16)}.pt-17{padding-top:calc(var(--spacing) * 17)}.pt-18{padding-top:calc(var(--spacing) * 18)}.pt-19{padding-top:calc(var(--spacing) * 19)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-21{padding-top:calc(var(--spacing) * 21)}.pt-22{padding-top:calc(var(--spacing) * 22)}.pt-23{padding-top:calc(var(--spacing) * 23)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pt-px{padding-top:1px}.\!pr-0{padding-right:calc(var(--spacing) * 0)!important}.\!pr-1{padding-right:calc(var(--spacing) * 1)!important}.\!pr-2{padding-right:calc(var(--spacing) * 2)!important}.\!pr-3{padding-right:calc(var(--spacing) * 3)!important}.\!pr-4{padding-right:calc(var(--spacing) * 4)!important}.\!pr-5{padding-right:calc(var(--spacing) * 5)!important}.\!pr-6{padding-right:calc(var(--spacing) * 6)!important}.\!pr-7{padding-right:calc(var(--spacing) * 7)!important}.\!pr-8{padding-right:calc(var(--spacing) * 8)!important}.\!pr-9{padding-right:calc(var(--spacing) * 9)!important}.\!pr-10{padding-right:calc(var(--spacing) * 10)!important}.\!pr-11{padding-right:calc(var(--spacing) * 11)!important}.\!pr-12{padding-right:calc(var(--spacing) * 12)!important}.\!pr-13{padding-right:calc(var(--spacing) * 13)!important}.\!pr-14{padding-right:calc(var(--spacing) * 14)!important}.\!pr-15{padding-right:calc(var(--spacing) * 15)!important}.\!pr-16{padding-right:calc(var(--spacing) * 16)!important}.\!pr-17{padding-right:calc(var(--spacing) * 17)!important}.\!pr-18{padding-right:calc(var(--spacing) * 18)!important}.\!pr-19{padding-right:calc(var(--spacing) * 19)!important}.\!pr-20{padding-right:calc(var(--spacing) * 20)!important}.\!pr-21{padding-right:calc(var(--spacing) * 21)!important}.\!pr-22{padding-right:calc(var(--spacing) * 22)!important}.\!pr-23{padding-right:calc(var(--spacing) * 23)!important}.\!pr-24{padding-right:calc(var(--spacing) * 24)!important}.\!pr-px{padding-right:1px!important}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-8\!{padding-right:calc(var(--spacing) * 8)!important}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-13{padding-right:calc(var(--spacing) * 13)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pr-15{padding-right:calc(var(--spacing) * 15)}.pr-16{padding-right:calc(var(--spacing) * 16)}.pr-17{padding-right:calc(var(--spacing) * 17)}.pr-18{padding-right:calc(var(--spacing) * 18)}.pr-19{padding-right:calc(var(--spacing) * 19)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pr-21{padding-right:calc(var(--spacing) * 21)}.pr-22{padding-right:calc(var(--spacing) * 22)}.pr-23{padding-right:calc(var(--spacing) * 23)}.pr-24{padding-right:calc(var(--spacing) * 24)}.pr-\[19px\]{padding-right:19px}.pr-px{padding-right:1px}.\!pb-0{padding-bottom:calc(var(--spacing) * 0)!important}.\!pb-1{padding-bottom:calc(var(--spacing) * 1)!important}.\!pb-2{padding-bottom:calc(var(--spacing) * 2)!important}.\!pb-3{padding-bottom:calc(var(--spacing) * 3)!important}.\!pb-4{padding-bottom:calc(var(--spacing) * 4)!important}.\!pb-5{padding-bottom:calc(var(--spacing) * 5)!important}.\!pb-6{padding-bottom:calc(var(--spacing) * 6)!important}.\!pb-7{padding-bottom:calc(var(--spacing) * 7)!important}.\!pb-8{padding-bottom:calc(var(--spacing) * 8)!important}.\!pb-9{padding-bottom:calc(var(--spacing) * 9)!important}.\!pb-10{padding-bottom:calc(var(--spacing) * 10)!important}.\!pb-11{padding-bottom:calc(var(--spacing) * 11)!important}.\!pb-12{padding-bottom:calc(var(--spacing) * 12)!important}.\!pb-13{padding-bottom:calc(var(--spacing) * 13)!important}.\!pb-14{padding-bottom:calc(var(--spacing) * 14)!important}.\!pb-15{padding-bottom:calc(var(--spacing) * 15)!important}.\!pb-16{padding-bottom:calc(var(--spacing) * 16)!important}.\!pb-17{padding-bottom:calc(var(--spacing) * 17)!important}.\!pb-18{padding-bottom:calc(var(--spacing) * 18)!important}.\!pb-19{padding-bottom:calc(var(--spacing) * 19)!important}.\!pb-20{padding-bottom:calc(var(--spacing) * 20)!important}.\!pb-21{padding-bottom:calc(var(--spacing) * 21)!important}.\!pb-22{padding-bottom:calc(var(--spacing) * 22)!important}.\!pb-23{padding-bottom:calc(var(--spacing) * 23)!important}.\!pb-24{padding-bottom:calc(var(--spacing) * 24)!important}.\!pb-px{padding-bottom:1px!important}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-7{padding-bottom:calc(var(--spacing) * 7)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-9{padding-bottom:calc(var(--spacing) * 9)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-11{padding-bottom:calc(var(--spacing) * 11)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-13{padding-bottom:calc(var(--spacing) * 13)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pb-15{padding-bottom:calc(var(--spacing) * 15)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-17{padding-bottom:calc(var(--spacing) * 17)}.pb-18{padding-bottom:calc(var(--spacing) * 18)}.pb-19{padding-bottom:calc(var(--spacing) * 19)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pb-21{padding-bottom:calc(var(--spacing) * 21)}.pb-22{padding-bottom:calc(var(--spacing) * 22)}.pb-23{padding-bottom:calc(var(--spacing) * 23)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-px{padding-bottom:1px}.\!pl-0{padding-left:calc(var(--spacing) * 0)!important}.\!pl-1{padding-left:calc(var(--spacing) * 1)!important}.\!pl-2{padding-left:calc(var(--spacing) * 2)!important}.\!pl-3{padding-left:calc(var(--spacing) * 3)!important}.\!pl-4{padding-left:calc(var(--spacing) * 4)!important}.\!pl-5{padding-left:calc(var(--spacing) * 5)!important}.\!pl-6{padding-left:calc(var(--spacing) * 6)!important}.\!pl-7{padding-left:calc(var(--spacing) * 7)!important}.\!pl-8{padding-left:calc(var(--spacing) * 8)!important}.\!pl-9{padding-left:calc(var(--spacing) * 9)!important}.\!pl-10{padding-left:calc(var(--spacing) * 10)!important}.\!pl-11{padding-left:calc(var(--spacing) * 11)!important}.\!pl-12{padding-left:calc(var(--spacing) * 12)!important}.\!pl-13{padding-left:calc(var(--spacing) * 13)!important}.\!pl-14{padding-left:calc(var(--spacing) * 14)!important}.\!pl-15{padding-left:calc(var(--spacing) * 15)!important}.\!pl-16{padding-left:calc(var(--spacing) * 16)!important}.\!pl-17{padding-left:calc(var(--spacing) * 17)!important}.\!pl-18{padding-left:calc(var(--spacing) * 18)!important}.\!pl-19{padding-left:calc(var(--spacing) * 19)!important}.\!pl-20{padding-left:calc(var(--spacing) * 20)!important}.\!pl-21{padding-left:calc(var(--spacing) * 21)!important}.\!pl-22{padding-left:calc(var(--spacing) * 22)!important}.\!pl-23{padding-left:calc(var(--spacing) * 23)!important}.\!pl-24{padding-left:calc(var(--spacing) * 24)!important}.\!pl-px{padding-left:1px!important}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-12{padding-left:calc(var(--spacing) * 12)}.pl-13{padding-left:calc(var(--spacing) * 13)}.pl-14{padding-left:calc(var(--spacing) * 14)}.pl-15{padding-left:calc(var(--spacing) * 15)}.pl-16{padding-left:calc(var(--spacing) * 16)}.pl-17{padding-left:calc(var(--spacing) * 17)}.pl-18{padding-left:calc(var(--spacing) * 18)}.pl-19{padding-left:calc(var(--spacing) * 19)}.pl-20{padding-left:calc(var(--spacing) * 20)}.pl-21{padding-left:calc(var(--spacing) * 21)}.pl-22{padding-left:calc(var(--spacing) * 22)}.pl-23{padding-left:calc(var(--spacing) * 23)}.pl-24{padding-left:calc(var(--spacing) * 24)}.pl-px{padding-left:1px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-\[-3px\]{vertical-align:-3px}.align-middle{vertical-align:middle}.align-text-top{vertical-align:text-top}.align-top{vertical-align:top}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl\!{font-size:var(--text-5xl)!important;line-height:var(--tw-leading,var(--text-5xl--line-height))!important}.text-6xl\!{font-size:var(--text-6xl)!important;line-height:var(--tw-leading,var(--text-6xl--line-height))!important}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md-16{font-size:16px}.md-18{font-size:18px}.text-\[11px\]{font-size:11px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.\!leading-\[38px\]{--tw-leading:38px!important;line-height:38px!important}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-7\!{--tw-leading:calc(var(--spacing) * 7)!important;line-height:calc(var(--spacing) * 7)!important}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-9{--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9)}.leading-10{--tw-leading:calc(var(--spacing) * 10);line-height:calc(var(--spacing) * 10)}.leading-11{--tw-leading:calc(var(--spacing) * 11);line-height:calc(var(--spacing) * 11)}.leading-12{--tw-leading:calc(var(--spacing) * 12);line-height:calc(var(--spacing) * 12)}.leading-13{--tw-leading:calc(var(--spacing) * 13);line-height:calc(var(--spacing) * 13)}.leading-14{--tw-leading:calc(var(--spacing) * 14);line-height:calc(var(--spacing) * 14)}.leading-15{--tw-leading:calc(var(--spacing) * 15);line-height:calc(var(--spacing) * 15)}.leading-16{--tw-leading:calc(var(--spacing) * 16);line-height:calc(var(--spacing) * 16)}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[36px\]{--tw-leading:36px;line-height:36px}.leading-\[38px\]{--tw-leading:38px;line-height:38px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.text-default{color:var(--color-font-default-light)}@media not print{.text-default:where(.dark,.dark *){color:var(--color-font-default-dark)}}.text-icon{color:var(--color-base-400)}@media not print{.text-icon:where(.dark,.dark *){color:var(--color-base-500)}}.text-important{color:var(--color-font-important-light)}@media not print{.text-important:where(.dark,.dark *){color:var(--color-font-important-dark)}}.text-link{color:var(--color-primary-600)}@media not print{.text-link:where(.dark,.dark *){color:var(--color-primary-500)}}.text-subtle{color:var(--color-font-subtle-light)}@media not print{.text-subtle:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.text-base-50{color:var(--color-base-50)}.text-base-100{color:var(--color-base-100)}.text-base-200{color:var(--color-base-200)}.text-base-300{color:var(--color-base-300)}.text-base-400{color:var(--color-base-400)}.text-base-500{color:var(--color-base-500)}.text-base-600{color:var(--color-base-600)}.text-base-700{color:var(--color-base-700)}.text-base-800{color:var(--color-base-800)}.text-base-900{color:var(--color-base-900)}.text-base-950{color:var(--color-base-950)}.text-blue-500{color:var(--color-blue-500)}.text-blue-700{color:var(--color-blue-700)}.text-font-default-light{color:var(--color-font-default-light)}.text-font-important-light{color:var(--color-font-important-light)}.text-font-subtle-light{color:var(--color-font-subtle-light)}.text-green-700{color:var(--color-green-700)}.text-orange-700{color:var(--color-orange-700)}.text-primary-50{color:var(--color-primary-50)}.text-primary-100{color:var(--color-primary-100)}.text-primary-200{color:var(--color-primary-200)}.text-primary-300{color:var(--color-primary-300)}.text-primary-400{color:var(--color-primary-400)}.text-primary-500{color:var(--color-primary-500)}.text-primary-600{color:var(--color-primary-600)}.text-primary-700{color:var(--color-primary-700)}.text-primary-800{color:var(--color-primary-800)}.text-primary-900{color:var(--color-primary-900)}.text-primary-950{color:var(--color-primary-950)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-white\/0{color:#0000}@supports (color:color-mix(in lab, red, red)){.text-white\/0{color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.text-white\/10{color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.text-white\/10{color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab, red, red)){.text-white\/20{color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.text-white\/30{color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab, red, red)){.text-white\/40{color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\/50{color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\/60{color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.text-white\/100{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-base-400::placeholder{color:var(--color-base-400)}.placeholder-font-subtle-light::placeholder{color:var(--color-font-subtle-light)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-base-500\/20{--tw-shadow-color:var(--color-base-500)}@supports (color:color-mix(in lab, red, red)){.shadow-base-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-base-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-0{outline-style:var(--tw-outline-style);outline-width:0}.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.outline-3{outline-style:var(--tw-outline-style);outline-width:3px}.outline-4{outline-style:var(--tw-outline-style);outline-width:4px}.outline-offset-0{outline-offset:0px}.outline-offset-1{outline-offset:1px}.outline-offset-2{outline-offset:2px}.outline-offset-3{outline-offset:3px}.outline-offset-4{outline-offset:4px}.outline-base-50{outline-color:var(--color-base-50)}.outline-base-100{outline-color:var(--color-base-100)}.outline-base-200{outline-color:var(--color-base-200)}.outline-base-300{outline-color:var(--color-base-300)}.outline-base-400{outline-color:var(--color-base-400)}.outline-base-500{outline-color:var(--color-base-500)}.outline-base-600{outline-color:var(--color-base-600)}.outline-base-700{outline-color:var(--color-base-700)}.outline-base-800{outline-color:var(--color-base-800)}.outline-base-900{outline-color:var(--color-base-900)}.outline-base-950{outline-color:var(--color-base-950)}.outline-primary-50{outline-color:var(--color-primary-50)}.outline-primary-100{outline-color:var(--color-primary-100)}.outline-primary-200{outline-color:var(--color-primary-200)}.outline-primary-300{outline-color:var(--color-primary-300)}.outline-primary-400{outline-color:var(--color-primary-400)}.outline-primary-500{outline-color:var(--color-primary-500)}.outline-primary-600{outline-color:var(--color-primary-600)}.outline-primary-700{outline-color:var(--color-primary-700)}.outline-primary-800{outline-color:var(--color-primary-800)}.outline-primary-900{outline-color:var(--color-primary-900)}.outline-primary-950{outline-color:var(--color-primary-950)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-move{transition-property:transform,translate,scale,rotate,margin}.select-none{-webkit-user-select:none;user-select:none}.text-shadow-xs{text-shadow:0px 1px 1px var(--tw-text-shadow-color,#0003)}:is(.\*\:mx-1>*){margin-inline:calc(var(--spacing) * 1)}:is(.\*\:mb-0>*){margin-bottom:calc(var(--spacing) * 0)}:is(.\*\:mb-0\!>*){margin-bottom:calc(var(--spacing) * 0)!important}:is(.\*\:flex>*){display:flex}:is(.\*\:h-\[36px\]>*){height:36px}:is(.\*\:max-h-\[30px\]>*){max-height:30px}:is(.\*\:w-full>*){width:100%}:is(.\*\:cursor-pointer>*){cursor:pointer}:is(.\*\:flex-row>*){flex-direction:row}:is(.\*\:items-center>*){align-items:center}:is(.\*\:gap-1>*){gap:calc(var(--spacing) * 1)}:is(.\*\:gap-2>*){gap:calc(var(--spacing) * 2)}:is(.\*\:truncate>*){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:is(.\*\:rounded-default>*){border-radius:var(--border-radius,6px)}:is(.\*\:px-2\.5>*){padding-inline:calc(var(--spacing) * 2.5)}:is(.\*\:px-3>*){padding-inline:calc(var(--spacing) * 3)}:is(.\*\:py-2>*){padding-block:calc(var(--spacing) * 2)}:is(.\*\:py-\[5px\]>*){padding-block:5px}:is(.\*\:text-left>*){text-align:left}:is(.\*\:align-middle>*){vertical-align:middle}:is(.\*\:font-medium>*){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}:is(.\*\:font-semibold>*){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}:is(.\*\:whitespace-nowrap>*){white-space:nowrap}:is(.\*\:text-font-important-light>*){color:var(--color-font-important-light)}:is(.\*\:opacity-50>*){opacity:.5}@media (hover:hover){.group-hover\:-right-1:is(:where(.group):hover *){right:calc(var(--spacing) * -1)}.group-hover\:-left-1:is(:where(.group):hover *){left:calc(var(--spacing) * -1)}.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:text-primary-600:is(:where(.group):hover *){color:var(--color-primary-600)}.group-hover\/action\:bg-base-100:is(:where(.group\/action):hover *){background-color:var(--color-base-100)}.group-hover\/action\:text-base-700:is(:where(.group\/action):hover *){color:var(--color-base-700)}.group-hover\/title\:block:is(:where(.group\/title):hover *){display:block}}.group-has-\[input\.action-select\:checked\]\:flex:is(:where(.group):has(:is(input.action-select:checked)) *){display:flex}.group-\[\.active\]\:-translate-x-\[2px\]:is(:where(.group).active *){--tw-translate-x:calc(2px * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-\[\.active\]\:border-white\/40:is(:where(.group).active *){border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.group-\[\.active\]\:border-white\/40:is(:where(.group).active *){border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.group-\[\.active\]\:bg-primary-600:is(:where(.group).active *){background-color:var(--color-primary-600)}.group-\[\.active\]\:bg-transparent:is(:where(.group).active *){background-color:#0000}.group-\[\.active\]\:text-white:is(:where(.group).active *){color:var(--color-white)}.group-\[\.changelist-actions\]\:grow:is(:where(.group).changelist-actions *){flex-grow:1}.group-\[\.changelist-actions\]\:appearance-none:is(:where(.group).changelist-actions *){appearance:none}.group-\[\.changelist-actions\]\:truncate:is(:where(.group).changelist-actions *){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-\[\.changelist-actions\]\:rounded-default:is(:where(.group).changelist-actions *){border-radius:var(--border-radius,6px)}.group-\[\.changelist-actions\]\:\!bg-white\/20:is(:where(.group).changelist-actions *){background-color:#fff3!important}@supports (color:color-mix(in lab, red, red)){.group-\[\.changelist-actions\]\:\!bg-white\/20:is(:where(.group).changelist-actions *){background-color:color-mix(in oklab, var(--color-white) 20%, transparent)!important}}.group-\[\.changelist-actions\]\:px-2:is(:where(.group).changelist-actions *){padding-inline:calc(var(--spacing) * 2)}.group-\[\.changelist-actions\]\:py-1:is(:where(.group).changelist-actions *){padding-block:calc(var(--spacing) * 1)}.group-\[\.changelist-actions\]\:pr-8:is(:where(.group).changelist-actions *){padding-right:calc(var(--spacing) * 8)}.group-\[\.changelist-actions\]\:font-medium:is(:where(.group).changelist-actions *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-\[\.changelist-actions\]\:\!text-current:is(:where(.group).changelist-actions *){color:currentColor!important}.group-\[\.changelist-actions\]\:\!outline-primary-400:is(:where(.group).changelist-actions *){outline-color:var(--color-primary-400)!important}:is(.group-\[\.changelist-actions\]\:\*\:text-base-700:is(:where(.group).changelist-actions *)>*){color:var(--color-base-700)}.group-\[\.empty\]\/formset-nested\:\!border-t-0:is(:where(.group\/formset-nested).empty *),.group-\[\.empty\]\/formset-parent\:\!border-t-0:is(:where(.group\/formset-parent).empty *){border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.group-\[\.errors\]\:border-red-600:is(:where(.group).errors *){border-color:var(--color-red-600)}.group-\[\.errors\]\:border-x-red-600:is(:where(.group).errors *){border-inline-color:var(--color-red-600)}.group-\[\.errors\]\:border-t-red-600:is(:where(.group).errors *){border-top-color:var(--color-red-600)}.group-\[\.field-row\]\:grow:is(:where(.group).field-row *){flex-grow:1}.group-\[\.field-row\]\:gap-2:is(:where(.group).field-row *){gap:calc(var(--spacing) * 2)}.group-\[\.field-tabular\]\:grow:is(:where(.group).field-tabular *){flex-grow:1}.group-\[\.field-tabular\]\:gap-2:is(:where(.group).field-tabular *){gap:calc(var(--spacing) * 2)}.group-\[\.fieldset\]\:-mx-3:is(:where(.group).fieldset *){margin-inline:calc(var(--spacing) * -3)}.group-\[\.fieldset\]\:flex:is(:where(.group).fieldset *){display:flex}.group-\[\.fieldset\]\:flex-row:is(:where(.group).fieldset *){flex-direction:row}.group-\[\.fieldset\]\:justify-end:is(:where(.group).fieldset *){justify-content:flex-end}.group-\[\.fieldset\]\:border-t:is(:where(.group).fieldset *){border-top-style:var(--tw-border-style);border-top-width:1px}.group-\[\.fieldset\]\:border-base-200:is(:where(.group).fieldset *){border-color:var(--color-base-200)}.group-\[\.fieldset\]\:px-3:is(:where(.group).fieldset *){padding-inline:calc(var(--spacing) * 3)}.group-\[\.fieldset\]\:pt-3:is(:where(.group).fieldset *){padding-top:calc(var(--spacing) * 3)}.group-\[\.htmx-request\]\:block:is(:where(.group).htmx-request *){display:block}.group-\[\.htmx-request\]\:hidden:is(:where(.group).htmx-request *){display:none}.group-\[\.inline-stacked\]\:mx-3:is(:where(.group).inline-stacked *){margin-inline:calc(var(--spacing) * 3)}.group-\[\.inline-stacked\]\:mt-3:is(:where(.group).inline-stacked *){margin-top:calc(var(--spacing) * 3)}.group-\[\.inline-stacked\]\:mb-3:is(:where(.group).inline-stacked *){margin-bottom:calc(var(--spacing) * 3)}.group-\[\.inline-tabular\]\:mx-3:is(:where(.group).inline-tabular *){margin-inline:calc(var(--spacing) * 3)}.group-\[\.inline-tabular\]\:mt-3:is(:where(.group).inline-tabular *){margin-top:calc(var(--spacing) * 3)}.group-\[\.inline-tabular\]\:mb-0:is(:where(.group).inline-tabular *){margin-bottom:calc(var(--spacing) * 0)}.group-\[\.last\]\/nested\:border-b-0:is(:where(.group\/nested).last *),.group-\[\.last\]\/parent\:border-b-0:is(:where(.group\/parent).last *),.group-\[\.last\]\/row\:border-b-0:is(:where(.group\/row).last *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-\[\.primary\]\:border-transparent:is(:where(.group).primary *){border-color:#0000}.group-\[\.primary\]\:text-white:is(:where(.group).primary *){color:var(--color-white)}.before\:mr-auto:before{content:var(--tw-content);margin-right:auto}.before\:block:before{content:var(--tw-content);display:block}.before\:flex:before{content:var(--tw-content);display:flex}.before\:items-center:before{content:var(--tw-content);align-items:center}.before\:pr-4:before{content:var(--tw-content);padding-right:calc(var(--spacing) * 4)}.before\:font-semibold:before{content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.before\:text-font-important-light:before{content:var(--tw-content);color:var(--color-font-important-light)}.before\:capitalize:before{content:var(--tw-content);text-transform:capitalize}.before\:content-\[attr\(data-label\)\]:before{--tw-content:attr(data-label);content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:top-1:after{content:var(--tw-content);top:calc(var(--spacing) * 1)}.after\:top-1\/2:after{content:var(--tw-content);top:50%}.after\:left-1:after{content:var(--tw-content);left:calc(var(--spacing) * 1)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:-mt-px:after{content:var(--tw-content);margin-top:-1px}.after\:-ml-px:after{content:var(--tw-content);margin-left:-1px}.after\:material-symbols-outlined:after{content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.after\:flex:after{content:var(--tw-content);display:flex}.after\:flex\!:after{content:var(--tw-content);display:flex!important}.after\:h-2:after{content:var(--tw-content);height:calc(var(--spacing) * 2)}.after\:h-3:after{content:var(--tw-content);height:calc(var(--spacing) * 3)}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing) * 4)}.after\:w-2:after{content:var(--tw-content);width:calc(var(--spacing) * 2)}.after\:w-3:after{content:var(--tw-content);width:calc(var(--spacing) * 3)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing) * 4)}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:-translate-y-1\/2:after{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:items-center:after{content:var(--tw-content);align-items:center}.after\:justify-center:after{content:var(--tw-content);justify-content:center}.after\:rounded-default:after{content:var(--tw-content);border-radius:var(--border-radius,6px)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-red-300:after{content:var(--tw-content);background-color:var(--color-red-300)}.after\:bg-transparent:after{content:var(--tw-content);background-color:#0000}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:leading-none:after{content:var(--tw-content);--tw-leading:1;line-height:1}.after\:text-white:after{content:var(--tw-content);color:var(--color-white)}.after\:shadow-xs:after{content:var(--tw-content);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\:inset-ring:after{content:var(--tw-content);--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\:inset-ring-base-800\/10:after{content:var(--tw-content);--tw-inset-ring-color:var(--color-base-800)}@supports (color:color-mix(in lab, red, red)){.after\:inset-ring-base-800\/10:after{--tw-inset-ring-color:color-mix(in oklab, var(--color-base-800) 10%, transparent)}}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.after\:content-\[\'check\\_small\'\]:after{--tw-content:"check_small";content:var(--tw-content)}.first\:-mt-5:first-child{margin-top:calc(var(--spacing) * -5)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pl-3:first-child{padding-left:calc(var(--spacing) * 3)}.first\:pl-6:first-child{padding-left:calc(var(--spacing) * 6)}.last\:-mb-3:last-child{margin-bottom:calc(var(--spacing) * -3)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:mb-4:last-child{margin-bottom:calc(var(--spacing) * 4)}.last\:mb-8:last-child{margin-bottom:calc(var(--spacing) * 8)}.last\:rounded-r-default:last-child{border-top-right-radius:var(--border-radius,6px);border-bottom-right-radius:var(--border-radius,6px)}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pr-3:last-child{padding-right:calc(var(--spacing) * 3)}.last\:pr-6:last-child{padding-right:calc(var(--spacing) * 6)}:is(.\*\:last\:mb-0>*):last-child{margin-bottom:calc(var(--spacing) * 0)}.checked\:border-primary-600:checked{border-color:var(--color-primary-600)}.checked\:bg-green-500:checked{background-color:var(--color-green-500)}.checked\:bg-primary-600:checked{background-color:var(--color-primary-600)}.checked\:after\:left-4:checked:after{content:var(--tw-content);left:calc(var(--spacing) * 4)}.checked\:after\:bg-white:checked:after{content:var(--tw-content);background-color:var(--color-white)}.empty\:hidden:empty{display:none}.focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.focus-within\:-outline-offset-2:focus-within{outline-offset:calc(2px * -1)}.focus-within\:outline-primary-600:focus-within{outline-color:var(--color-primary-600)}.focus-within\:group-\[\.errors\]\:outline-red-500:focus-within:is(:where(.group).errors *){outline-color:var(--color-red-500)}@media (hover:hover){.hover\:border-base-50:hover{border-color:var(--color-base-50)}.hover\:border-base-100:hover{border-color:var(--color-base-100)}.hover\:border-base-200:hover{border-color:var(--color-base-200)}.hover\:border-base-300:hover{border-color:var(--color-base-300)}.hover\:border-base-400:hover{border-color:var(--color-base-400)}.hover\:border-base-500:hover{border-color:var(--color-base-500)}.hover\:border-base-600:hover{border-color:var(--color-base-600)}.hover\:border-base-700:hover{border-color:var(--color-base-700)}.hover\:border-base-800:hover{border-color:var(--color-base-800)}.hover\:border-base-900:hover{border-color:var(--color-base-900)}.hover\:border-base-950:hover{border-color:var(--color-base-950)}.hover\:border-transparent:hover{border-color:#0000}.hover\:bg-base-50:hover{background-color:var(--color-base-50)}.hover\:bg-base-100:hover,.hover\:bg-base-100\/80:hover{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-100\/80:hover{background-color:color-mix(in oklab, var(--color-base-100) 80%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:bg-base-400:hover{background-color:var(--color-base-400)}.hover\:bg-base-500:hover{background-color:var(--color-base-500)}.hover\:bg-base-600:hover{background-color:var(--color-base-600)}.hover\:bg-base-700:hover,.hover\:bg-base-700\/\[\.04\]:hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-700\/\[\.04\]:hover{background-color:color-mix(in oklab, var(--color-base-700) 4%, transparent)}}.hover\:bg-base-800:hover{background-color:var(--color-base-800)}.hover\:bg-base-900:hover{background-color:var(--color-base-900)}.hover\:bg-base-950:hover{background-color:var(--color-base-950)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-200:hover{background-color:var(--color-blue-200)}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-blue-400:hover{background-color:var(--color-blue-400)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-blue-800:hover{background-color:var(--color-blue-800)}.hover\:bg-blue-900:hover{background-color:var(--color-blue-900)}.hover\:bg-blue-950:hover{background-color:var(--color-blue-950)}.hover\:bg-green-50:hover{background-color:var(--color-green-50)}.hover\:bg-green-100:hover{background-color:var(--color-green-100)}.hover\:bg-green-200:hover{background-color:var(--color-green-200)}.hover\:bg-green-300:hover{background-color:var(--color-green-300)}.hover\:bg-green-400:hover{background-color:var(--color-green-400)}.hover\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-green-800:hover{background-color:var(--color-green-800)}.hover\:bg-green-900:hover{background-color:var(--color-green-900)}.hover\:bg-green-950:hover{background-color:var(--color-green-950)}.hover\:bg-orange-50:hover{background-color:var(--color-orange-50)}.hover\:bg-orange-100:hover{background-color:var(--color-orange-100)}.hover\:bg-orange-200:hover{background-color:var(--color-orange-200)}.hover\:bg-orange-300:hover{background-color:var(--color-orange-300)}.hover\:bg-orange-400:hover{background-color:var(--color-orange-400)}.hover\:bg-orange-500:hover{background-color:var(--color-orange-500)}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-orange-800:hover{background-color:var(--color-orange-800)}.hover\:bg-orange-900:hover{background-color:var(--color-orange-900)}.hover\:bg-orange-950:hover{background-color:var(--color-orange-950)}.hover\:bg-primary-50:hover{background-color:var(--color-primary-50)}.hover\:bg-primary-100:hover{background-color:var(--color-primary-100)}.hover\:bg-primary-200:hover{background-color:var(--color-primary-200)}.hover\:bg-primary-300:hover{background-color:var(--color-primary-300)}.hover\:bg-primary-400:hover{background-color:var(--color-primary-400)}.hover\:bg-primary-500:hover{background-color:var(--color-primary-500)}.hover\:bg-primary-600:hover,.hover\:bg-primary-600\/80:hover{background-color:var(--color-primary-600)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary-600\/80:hover{background-color:color-mix(in oklab, var(--color-primary-600) 80%, transparent)}}.hover\:bg-primary-700:hover{background-color:var(--color-primary-700)}.hover\:bg-primary-800:hover{background-color:var(--color-primary-800)}.hover\:bg-primary-900:hover{background-color:var(--color-primary-900)}.hover\:bg-primary-950:hover{background-color:var(--color-primary-950)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-200:hover{background-color:var(--color-red-200)}.hover\:bg-red-300:hover{background-color:var(--color-red-300)}.hover\:bg-red-400:hover{background-color:var(--color-red-400)}.hover\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-600\/80:hover{background-color:#e40014cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-600\/80:hover{background-color:color-mix(in oklab, var(--color-red-600) 80%, transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-800:hover{background-color:var(--color-red-800)}.hover\:bg-red-900:hover{background-color:var(--color-red-900)}.hover\:bg-red-950:hover{background-color:var(--color-red-950)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.hover\:text-base-500:hover{color:var(--color-base-500)}.hover\:text-base-700:hover{color:var(--color-base-700)}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-font-important-light:hover{color:var(--color-font-important-light)}.hover\:text-green-700:hover{color:var(--color-green-700)}.hover\:text-orange-700:hover{color:var(--color-orange-700)}.hover\:text-primary-600:hover{color:var(--color-primary-600)}.hover\:text-primary-600\!:hover{color:var(--color-primary-600)!important}.hover\:text-primary-700:hover{color:var(--color-primary-700)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:opacity-50:hover{opacity:.5}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:outline-base-50:hover{outline-color:var(--color-base-50)}.hover\:outline-base-100:hover{outline-color:var(--color-base-100)}.hover\:outline-base-200:hover{outline-color:var(--color-base-200)}.hover\:outline-base-300:hover{outline-color:var(--color-base-300)}.hover\:outline-base-400:hover{outline-color:var(--color-base-400)}.hover\:outline-base-500:hover{outline-color:var(--color-base-500)}.hover\:outline-base-600:hover{outline-color:var(--color-base-600)}.hover\:outline-base-700:hover{outline-color:var(--color-base-700)}.hover\:outline-base-800:hover{outline-color:var(--color-base-800)}.hover\:outline-base-900:hover{outline-color:var(--color-base-900)}.hover\:outline-base-950:hover{outline-color:var(--color-base-950)}.hover\:outline-primary-50:hover{outline-color:var(--color-primary-50)}.hover\:outline-primary-100:hover{outline-color:var(--color-primary-100)}.hover\:outline-primary-200:hover{outline-color:var(--color-primary-200)}.hover\:outline-primary-300:hover{outline-color:var(--color-primary-300)}.hover\:outline-primary-400:hover{outline-color:var(--color-primary-400)}.hover\:outline-primary-500:hover{outline-color:var(--color-primary-500)}.hover\:outline-primary-600:hover{outline-color:var(--color-primary-600)}.hover\:outline-primary-700:hover{outline-color:var(--color-primary-700)}.hover\:outline-primary-800:hover{outline-color:var(--color-primary-800)}.hover\:outline-primary-900:hover{outline-color:var(--color-primary-900)}.hover\:outline-primary-950:hover{outline-color:var(--color-primary-950)}:is(.\*\:hover\:bg-base-100>*):hover{background-color:var(--color-base-100)}:is(.\*\:hover\:bg-base-700\/\[\.06\]>*):hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:hover\:bg-base-700\/\[\.06\]>*):hover{background-color:color-mix(in oklab, var(--color-base-700) 6%, transparent)}}:is(.\*\:hover\:text-base-700>*):hover{color:var(--color-base-700)}}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\:-outline-offset-2:focus{outline-offset:calc(2px * -1)}.focus\:outline-primary-600:focus{outline-color:var(--color-primary-600)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:group-\[\.errors\]\:outline-red-600:focus:is(:where(.group).errors *){outline-color:var(--color-red-600)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!bg-base-50:disabled{background-color:var(--color-base-50)!important}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\.add-row\:not\(\.hidden\)\]\:flex:has(.add-row:not(.hidden)),.has-\[\.inline-pagination\]\:flex:has(.inline-pagination){display:flex}.has-\[ol\]\:has-\[li\]\:block:has(:is(ol)):has(:is(li)){display:block}@media not all and (min-width:64rem){.max-lg\:absolute{position:absolute}.max-lg\:top-16{top:calc(var(--spacing) * 16)}.max-lg\:-mt-px{margin-top:-1px}.max-lg\:flex{display:flex}.max-lg\:flex-row-reverse{flex-direction:row-reverse}.max-lg\:justify-end{justify-content:flex-end}.max-lg\:first\:rounded-t-default:first-child{border-top-left-radius:var(--border-radius,6px);border-top-right-radius:var(--border-radius,6px)}.max-lg\:last\:rounded-b-default:last-child{border-bottom-right-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}}@media not all and (min-width:48rem){.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:ml-auto{margin-left:auto}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:relative{position:relative}.md\:sticky{position:sticky}.md\:left-72{left:calc(var(--spacing) * 72)}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-11{grid-column:span 11/span 11}.md\:col-span-12{grid-column:span 12/span 12}.md\:col-span-13{grid-column:span 13/span 13}.md\:col-span-14{grid-column:span 14/span 14}.md\:col-span-15{grid-column:span 15/span 15}.md\:col-span-16{grid-column:span 16/span 16}.md\:mt-0{margin-top:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:h-1{height:calc(var(--spacing) * 1)}.md\:h-2{height:calc(var(--spacing) * 2)}.md\:h-3{height:calc(var(--spacing) * 3)}.md\:h-4{height:calc(var(--spacing) * 4)}.md\:h-5{height:calc(var(--spacing) * 5)}.md\:h-6{height:calc(var(--spacing) * 6)}.md\:h-7{height:calc(var(--spacing) * 7)}.md\:h-8{height:calc(var(--spacing) * 8)}.md\:h-9{height:calc(var(--spacing) * 9)}.md\:h-10{height:calc(var(--spacing) * 10)}.md\:min-h-1{min-height:calc(var(--spacing) * 1)}.md\:min-h-2{min-height:calc(var(--spacing) * 2)}.md\:min-h-3{min-height:calc(var(--spacing) * 3)}.md\:min-h-4{min-height:calc(var(--spacing) * 4)}.md\:min-h-5{min-height:calc(var(--spacing) * 5)}.md\:min-h-6{min-height:calc(var(--spacing) * 6)}.md\:min-h-7{min-height:calc(var(--spacing) * 7)}.md\:min-h-8{min-height:calc(var(--spacing) * 8)}.md\:min-h-9{min-height:calc(var(--spacing) * 9)}.md\:min-h-10{min-height:calc(var(--spacing) * 10)}.md\:w-1{width:calc(var(--spacing) * 1)}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.3333%}.md\:w-1\/4{width:25%}.md\:w-1\/5{width:20%}.md\:w-1\/6{width:16.6667%}.md\:w-1\/7{width:14.2857%}.md\:w-2{width:calc(var(--spacing) * 2)}.md\:w-2\/3{width:66.6667%}.md\:w-2\/4{width:50%}.md\:w-2\/5{width:40%}.md\:w-2\/6{width:33.3333%}.md\:w-2\/7{width:28.5714%}.md\:w-3{width:calc(var(--spacing) * 3)}.md\:w-3\/4{width:75%}.md\:w-3\/5{width:60%}.md\:w-3\/6{width:50%}.md\:w-3\/7{width:42.8571%}.md\:w-4{width:calc(var(--spacing) * 4)}.md\:w-4\/5{width:80%}.md\:w-4\/6{width:66.6667%}.md\:w-4\/7{width:57.1429%}.md\:w-5{width:calc(var(--spacing) * 5)}.md\:w-5\/6{width:83.3333%}.md\:w-5\/7{width:71.4286%}.md\:w-6{width:calc(var(--spacing) * 6)}.md\:w-6\/7{width:85.7143%}.md\:w-7{width:calc(var(--spacing) * 7)}.md\:w-8{width:calc(var(--spacing) * 8)}.md\:w-9{width:calc(var(--spacing) * 9)}.md\:w-10{width:calc(var(--spacing) * 10)}.md\:w-96{width:calc(var(--spacing) * 96)}.md\:w-auto{width:auto}.md\:w-fit{width:fit-content}.md\:min-w-1{min-width:calc(var(--spacing) * 1)}.md\:min-w-2{min-width:calc(var(--spacing) * 2)}.md\:min-w-3{min-width:calc(var(--spacing) * 3)}.md\:min-w-4{min-width:calc(var(--spacing) * 4)}.md\:min-w-5{min-width:calc(var(--spacing) * 5)}.md\:min-w-6{min-width:calc(var(--spacing) * 6)}.md\:min-w-7{min-width:calc(var(--spacing) * 7)}.md\:min-w-8{min-width:calc(var(--spacing) * 8)}.md\:min-w-9{min-width:calc(var(--spacing) * 9)}.md\:min-w-10{min-width:calc(var(--spacing) * 10)}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.md\:grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.md\:grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.md\:grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-0\.5{gap:calc(var(--spacing) * .5)}.md\:gap-1{gap:calc(var(--spacing) * 1)}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:gap-4{gap:calc(var(--spacing) * 4)}.md\:gap-5{gap:calc(var(--spacing) * 5)}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:gap-7{gap:calc(var(--spacing) * 7)}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:gap-9{gap:calc(var(--spacing) * 9)}.md\:gap-10{gap:calc(var(--spacing) * 10)}.md\:gap-11{gap:calc(var(--spacing) * 11)}.md\:gap-12{gap:calc(var(--spacing) * 12)}.md\:gap-13{gap:calc(var(--spacing) * 13)}.md\:gap-14{gap:calc(var(--spacing) * 14)}.md\:gap-15{gap:calc(var(--spacing) * 15)}.md\:gap-16{gap:calc(var(--spacing) * 16)}.md\:border-0{border-style:var(--tw-border-style);border-width:0}.md\:border-2{border-style:var(--tw-border-style);border-width:2px}.md\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.md\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.md\:border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.md\:border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.md\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.md\:border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.md\:border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.md\:text-default{color:var(--color-font-default-light)}@media not print{.md\:text-default:where(.dark,.dark *){color:var(--color-font-default-dark)}}.md\:text-icon{color:var(--color-base-400)}@media not print{.md\:text-icon:where(.dark,.dark *){color:var(--color-base-500)}}.md\:text-important{color:var(--color-font-important-light)}@media not print{.md\:text-important:where(.dark,.dark *){color:var(--color-font-important-dark)}}.md\:text-link{color:var(--color-primary-600)}@media not print{.md\:text-link:where(.dark,.dark *){color:var(--color-primary-500)}}.md\:text-subtle{color:var(--color-font-subtle-light)}@media not print{.md\:text-subtle:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.md\:text-transparent{color:#0000}}@media (min-width:64rem){.lg\:scrollable-top:after{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);top:-1px;right:calc(var(--spacing) * 0);content:var(--tw-content);left:calc(var(--spacing) * 0);content:var(--tw-content);height:calc(var(--spacing) * 4);content:var(--tw-content);--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y);content:var(--tw-content);--tw-gradient-position:to top;position:absolute}@supports (background-image:linear-gradient(in lab, red, red)){.lg\:scrollable-top:after{--tw-gradient-position:to top in oklab}}.lg\:scrollable-top:after{background-image:linear-gradient(var(--tw-gradient-stops));content:var(--tw-content);--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));--tw-content:"";content:var(--tw-content)}@media not print{.lg\:scrollable-top:where(.dark,.dark *):after{content:var(--tw-content);background-image:none}}.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:sticky}.lg\:right-0{right:calc(var(--spacing) * 0)}.lg\:bottom-0{bottom:calc(var(--spacing) * 0)}.lg\:bottom-\[64px\]{bottom:64px}.lg\:left-0{left:calc(var(--spacing) * 0)}.lg\:order-none{order:0}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-13{grid-column:span 13/span 13}.lg\:col-span-14{grid-column:span 14/span 14}.lg\:col-span-15{grid-column:span 15/span 15}.lg\:col-span-16{grid-column:span 16/span 16}.lg\:m-0{margin:calc(var(--spacing) * 0)}.lg\:m-1{margin:calc(var(--spacing) * 1)}.lg\:m-2{margin:calc(var(--spacing) * 2)}.lg\:m-3{margin:calc(var(--spacing) * 3)}.lg\:m-4{margin:calc(var(--spacing) * 4)}.lg\:m-5{margin:calc(var(--spacing) * 5)}.lg\:m-6{margin:calc(var(--spacing) * 6)}.lg\:m-7{margin:calc(var(--spacing) * 7)}.lg\:m-8{margin:calc(var(--spacing) * 8)}.lg\:m-9{margin:calc(var(--spacing) * 9)}.lg\:m-10{margin:calc(var(--spacing) * 10)}.lg\:m-11{margin:calc(var(--spacing) * 11)}.lg\:m-12{margin:calc(var(--spacing) * 12)}.lg\:m-13{margin:calc(var(--spacing) * 13)}.lg\:m-14{margin:calc(var(--spacing) * 14)}.lg\:m-15{margin:calc(var(--spacing) * 15)}.lg\:m-16{margin:calc(var(--spacing) * 16)}.lg\:m-17{margin:calc(var(--spacing) * 17)}.lg\:m-18{margin:calc(var(--spacing) * 18)}.lg\:m-19{margin:calc(var(--spacing) * 19)}.lg\:m-20{margin:calc(var(--spacing) * 20)}.lg\:m-21{margin:calc(var(--spacing) * 21)}.lg\:m-22{margin:calc(var(--spacing) * 22)}.lg\:m-23{margin:calc(var(--spacing) * 23)}.lg\:m-24{margin:calc(var(--spacing) * 24)}.lg\:m-px{margin:1px}.lg\:mx-0{margin-inline:calc(var(--spacing) * 0)}.lg\:mx-1{margin-inline:calc(var(--spacing) * 1)}.lg\:mx-2{margin-inline:calc(var(--spacing) * 2)}.lg\:mx-3{margin-inline:calc(var(--spacing) * 3)}.lg\:mx-4{margin-inline:calc(var(--spacing) * 4)}.lg\:mx-5{margin-inline:calc(var(--spacing) * 5)}.lg\:mx-6{margin-inline:calc(var(--spacing) * 6)}.lg\:mx-7{margin-inline:calc(var(--spacing) * 7)}.lg\:mx-8{margin-inline:calc(var(--spacing) * 8)}.lg\:mx-9{margin-inline:calc(var(--spacing) * 9)}.lg\:mx-10{margin-inline:calc(var(--spacing) * 10)}.lg\:mx-11{margin-inline:calc(var(--spacing) * 11)}.lg\:mx-12{margin-inline:calc(var(--spacing) * 12)}.lg\:mx-13{margin-inline:calc(var(--spacing) * 13)}.lg\:mx-14{margin-inline:calc(var(--spacing) * 14)}.lg\:mx-15{margin-inline:calc(var(--spacing) * 15)}.lg\:mx-16{margin-inline:calc(var(--spacing) * 16)}.lg\:mx-17{margin-inline:calc(var(--spacing) * 17)}.lg\:mx-18{margin-inline:calc(var(--spacing) * 18)}.lg\:mx-19{margin-inline:calc(var(--spacing) * 19)}.lg\:mx-20{margin-inline:calc(var(--spacing) * 20)}.lg\:mx-21{margin-inline:calc(var(--spacing) * 21)}.lg\:mx-22{margin-inline:calc(var(--spacing) * 22)}.lg\:mx-23{margin-inline:calc(var(--spacing) * 23)}.lg\:mx-24{margin-inline:calc(var(--spacing) * 24)}.lg\:mx-px{margin-inline:1px}.lg\:my-0{margin-block:calc(var(--spacing) * 0)}.lg\:my-1{margin-block:calc(var(--spacing) * 1)}.lg\:my-2{margin-block:calc(var(--spacing) * 2)}.lg\:my-3{margin-block:calc(var(--spacing) * 3)}.lg\:my-4{margin-block:calc(var(--spacing) * 4)}.lg\:my-5{margin-block:calc(var(--spacing) * 5)}.lg\:my-6{margin-block:calc(var(--spacing) * 6)}.lg\:my-7{margin-block:calc(var(--spacing) * 7)}.lg\:my-8{margin-block:calc(var(--spacing) * 8)}.lg\:my-9{margin-block:calc(var(--spacing) * 9)}.lg\:my-10{margin-block:calc(var(--spacing) * 10)}.lg\:my-11{margin-block:calc(var(--spacing) * 11)}.lg\:my-12{margin-block:calc(var(--spacing) * 12)}.lg\:my-13{margin-block:calc(var(--spacing) * 13)}.lg\:my-14{margin-block:calc(var(--spacing) * 14)}.lg\:my-15{margin-block:calc(var(--spacing) * 15)}.lg\:my-16{margin-block:calc(var(--spacing) * 16)}.lg\:my-17{margin-block:calc(var(--spacing) * 17)}.lg\:my-18{margin-block:calc(var(--spacing) * 18)}.lg\:my-19{margin-block:calc(var(--spacing) * 19)}.lg\:my-20{margin-block:calc(var(--spacing) * 20)}.lg\:my-21{margin-block:calc(var(--spacing) * 21)}.lg\:my-22{margin-block:calc(var(--spacing) * 22)}.lg\:my-23{margin-block:calc(var(--spacing) * 23)}.lg\:my-24{margin-block:calc(var(--spacing) * 24)}.lg\:my-px{margin-block:1px}.lg\:-mt-2{margin-top:calc(var(--spacing) * -2)}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:mt-1{margin-top:calc(var(--spacing) * 1)}.lg\:mt-2{margin-top:calc(var(--spacing) * 2)}.lg\:mt-3{margin-top:calc(var(--spacing) * 3)}.lg\:mt-4{margin-top:calc(var(--spacing) * 4)}.lg\:mt-5{margin-top:calc(var(--spacing) * 5)}.lg\:mt-6{margin-top:calc(var(--spacing) * 6)}.lg\:mt-7{margin-top:calc(var(--spacing) * 7)}.lg\:mt-8{margin-top:calc(var(--spacing) * 8)}.lg\:mt-9{margin-top:calc(var(--spacing) * 9)}.lg\:mt-10{margin-top:calc(var(--spacing) * 10)}.lg\:mt-11{margin-top:calc(var(--spacing) * 11)}.lg\:mt-12{margin-top:calc(var(--spacing) * 12)}.lg\:mt-13{margin-top:calc(var(--spacing) * 13)}.lg\:mt-14{margin-top:calc(var(--spacing) * 14)}.lg\:mt-15{margin-top:calc(var(--spacing) * 15)}.lg\:mt-16{margin-top:calc(var(--spacing) * 16)}.lg\:mt-17{margin-top:calc(var(--spacing) * 17)}.lg\:mt-18{margin-top:calc(var(--spacing) * 18)}.lg\:mt-19{margin-top:calc(var(--spacing) * 19)}.lg\:mt-20{margin-top:calc(var(--spacing) * 20)}.lg\:mt-21{margin-top:calc(var(--spacing) * 21)}.lg\:mt-22{margin-top:calc(var(--spacing) * 22)}.lg\:mt-23{margin-top:calc(var(--spacing) * 23)}.lg\:mt-24{margin-top:calc(var(--spacing) * 24)}.lg\:mt-px{margin-top:1px}.lg\:mr-0{margin-right:calc(var(--spacing) * 0)}.lg\:mr-1{margin-right:calc(var(--spacing) * 1)}.lg\:mr-2{margin-right:calc(var(--spacing) * 2)}.lg\:mr-3{margin-right:calc(var(--spacing) * 3)}.lg\:mr-4{margin-right:calc(var(--spacing) * 4)}.lg\:mr-5{margin-right:calc(var(--spacing) * 5)}.lg\:mr-6{margin-right:calc(var(--spacing) * 6)}.lg\:mr-7{margin-right:calc(var(--spacing) * 7)}.lg\:mr-8{margin-right:calc(var(--spacing) * 8)}.lg\:mr-9{margin-right:calc(var(--spacing) * 9)}.lg\:mr-10{margin-right:calc(var(--spacing) * 10)}.lg\:mr-11{margin-right:calc(var(--spacing) * 11)}.lg\:mr-12{margin-right:calc(var(--spacing) * 12)}.lg\:mr-13{margin-right:calc(var(--spacing) * 13)}.lg\:mr-14{margin-right:calc(var(--spacing) * 14)}.lg\:mr-15{margin-right:calc(var(--spacing) * 15)}.lg\:mr-16{margin-right:calc(var(--spacing) * 16)}.lg\:mr-17{margin-right:calc(var(--spacing) * 17)}.lg\:mr-18{margin-right:calc(var(--spacing) * 18)}.lg\:mr-19{margin-right:calc(var(--spacing) * 19)}.lg\:mr-20{margin-right:calc(var(--spacing) * 20)}.lg\:mr-21{margin-right:calc(var(--spacing) * 21)}.lg\:mr-22{margin-right:calc(var(--spacing) * 22)}.lg\:mr-23{margin-right:calc(var(--spacing) * 23)}.lg\:mr-24{margin-right:calc(var(--spacing) * 24)}.lg\:mr-px{margin-right:1px}.lg\:-mb-8{margin-bottom:calc(var(--spacing) * -8)}.lg\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.lg\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.lg\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.lg\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.lg\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.lg\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.lg\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.lg\:mb-7{margin-bottom:calc(var(--spacing) * 7)}.lg\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.lg\:mb-9{margin-bottom:calc(var(--spacing) * 9)}.lg\:mb-10{margin-bottom:calc(var(--spacing) * 10)}.lg\:mb-11{margin-bottom:calc(var(--spacing) * 11)}.lg\:mb-12{margin-bottom:calc(var(--spacing) * 12)}.lg\:mb-13{margin-bottom:calc(var(--spacing) * 13)}.lg\:mb-14{margin-bottom:calc(var(--spacing) * 14)}.lg\:mb-15{margin-bottom:calc(var(--spacing) * 15)}.lg\:mb-16{margin-bottom:calc(var(--spacing) * 16)}.lg\:mb-17{margin-bottom:calc(var(--spacing) * 17)}.lg\:mb-18{margin-bottom:calc(var(--spacing) * 18)}.lg\:mb-19{margin-bottom:calc(var(--spacing) * 19)}.lg\:mb-20{margin-bottom:calc(var(--spacing) * 20)}.lg\:mb-21{margin-bottom:calc(var(--spacing) * 21)}.lg\:mb-22{margin-bottom:calc(var(--spacing) * 22)}.lg\:mb-23{margin-bottom:calc(var(--spacing) * 23)}.lg\:mb-24{margin-bottom:calc(var(--spacing) * 24)}.lg\:mb-px{margin-bottom:1px}.lg\:ml-0{margin-left:calc(var(--spacing) * 0)}.lg\:ml-1{margin-left:calc(var(--spacing) * 1)}.lg\:ml-2{margin-left:calc(var(--spacing) * 2)}.lg\:ml-3{margin-left:calc(var(--spacing) * 3)}.lg\:ml-4{margin-left:calc(var(--spacing) * 4)}.lg\:ml-5{margin-left:calc(var(--spacing) * 5)}.lg\:ml-6{margin-left:calc(var(--spacing) * 6)}.lg\:ml-7{margin-left:calc(var(--spacing) * 7)}.lg\:ml-8{margin-left:calc(var(--spacing) * 8)}.lg\:ml-9{margin-left:calc(var(--spacing) * 9)}.lg\:ml-10{margin-left:calc(var(--spacing) * 10)}.lg\:ml-11{margin-left:calc(var(--spacing) * 11)}.lg\:ml-12{margin-left:calc(var(--spacing) * 12)}.lg\:ml-13{margin-left:calc(var(--spacing) * 13)}.lg\:ml-14{margin-left:calc(var(--spacing) * 14)}.lg\:ml-15{margin-left:calc(var(--spacing) * 15)}.lg\:ml-16{margin-left:calc(var(--spacing) * 16)}.lg\:ml-17{margin-left:calc(var(--spacing) * 17)}.lg\:ml-18{margin-left:calc(var(--spacing) * 18)}.lg\:ml-19{margin-left:calc(var(--spacing) * 19)}.lg\:ml-20{margin-left:calc(var(--spacing) * 20)}.lg\:ml-21{margin-left:calc(var(--spacing) * 21)}.lg\:ml-22{margin-left:calc(var(--spacing) * 22)}.lg\:ml-23{margin-left:calc(var(--spacing) * 23)}.lg\:ml-24{margin-left:calc(var(--spacing) * 24)}.lg\:ml-auto{margin-left:auto}.lg\:ml-px{margin-left:1px}.min-lg\:-ml-px{margin-left:-1px}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:table{display:table}.lg\:table-cell{display:table-cell}.lg\:table-header-group{display:table-header-group}.lg\:table-row{display:table-row}.lg\:table-row-group{display:table-row-group}.lg\:h-1{height:calc(var(--spacing) * 1)}.lg\:h-2{height:calc(var(--spacing) * 2)}.lg\:h-3{height:calc(var(--spacing) * 3)}.lg\:h-4{height:calc(var(--spacing) * 4)}.lg\:h-5{height:calc(var(--spacing) * 5)}.lg\:h-6{height:calc(var(--spacing) * 6)}.lg\:h-7{height:calc(var(--spacing) * 7)}.lg\:h-8{height:calc(var(--spacing) * 8)}.lg\:h-9{height:calc(var(--spacing) * 9)}.lg\:h-10{height:calc(var(--spacing) * 10)}.lg\:h-\[38px\]{height:38px}.lg\:h-\[64px\]{height:64px}.lg\:min-h-1{min-height:calc(var(--spacing) * 1)}.lg\:min-h-2{min-height:calc(var(--spacing) * 2)}.lg\:min-h-3{min-height:calc(var(--spacing) * 3)}.lg\:min-h-4{min-height:calc(var(--spacing) * 4)}.lg\:min-h-5{min-height:calc(var(--spacing) * 5)}.lg\:min-h-6{min-height:calc(var(--spacing) * 6)}.lg\:min-h-7{min-height:calc(var(--spacing) * 7)}.lg\:min-h-8{min-height:calc(var(--spacing) * 8)}.lg\:min-h-9{min-height:calc(var(--spacing) * 9)}.lg\:min-h-10{min-height:calc(var(--spacing) * 10)}.lg\:w-1{width:calc(var(--spacing) * 1)}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.3333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:w-1\/6{width:16.6667%}.lg\:w-1\/7{width:14.2857%}.lg\:w-2{width:calc(var(--spacing) * 2)}.lg\:w-2\/3{width:66.6667%}.lg\:w-2\/4{width:50%}.lg\:w-2\/5{width:40%}.lg\:w-2\/6{width:33.3333%}.lg\:w-2\/7{width:28.5714%}.lg\:w-3{width:calc(var(--spacing) * 3)}.lg\:w-3\/4{width:75%}.lg\:w-3\/5{width:60%}.lg\:w-3\/6{width:50%}.lg\:w-3\/7{width:42.8571%}.lg\:w-4{width:calc(var(--spacing) * 4)}.lg\:w-4\/5{width:80%}.lg\:w-4\/6{width:66.6667%}.lg\:w-4\/7{width:57.1429%}.lg\:w-5{width:calc(var(--spacing) * 5)}.lg\:w-5\/6{width:83.3333%}.lg\:w-5\/7{width:71.4286%}.lg\:w-6{width:calc(var(--spacing) * 6)}.lg\:w-6\/7{width:85.7143%}.lg\:w-7{width:calc(var(--spacing) * 7)}.lg\:w-8{width:calc(var(--spacing) * 8)}.lg\:w-9{width:calc(var(--spacing) * 9)}.lg\:w-10{width:calc(var(--spacing) * 10)}.lg\:w-56{width:calc(var(--spacing) * 56)}.lg\:w-96{width:calc(var(--spacing) * 96)}.lg\:w-auto{width:auto}.lg\:w-fit{width:fit-content}.lg\:w-px{width:1px}.lg\:min-w-1{min-width:calc(var(--spacing) * 1)}.lg\:min-w-2{min-width:calc(var(--spacing) * 2)}.lg\:min-w-3{min-width:calc(var(--spacing) * 3)}.lg\:min-w-4{min-width:calc(var(--spacing) * 4)}.lg\:min-w-5{min-width:calc(var(--spacing) * 5)}.lg\:min-w-6{min-width:calc(var(--spacing) * 6)}.lg\:min-w-7{min-width:calc(var(--spacing) * 7)}.lg\:min-w-8{min-width:calc(var(--spacing) * 8)}.lg\:min-w-9{min-width:calc(var(--spacing) * 9)}.lg\:min-w-10{min-width:calc(var(--spacing) * 10)}.lg\:min-w-56{min-width:calc(var(--spacing) * 56)}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.lg\:grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.lg\:grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.lg\:grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:items-center{align-items:center}.lg\:justify-start{justify-content:flex-start}.lg\:gap-0{gap:calc(var(--spacing) * 0)}.lg\:gap-0\.5{gap:calc(var(--spacing) * .5)}.lg\:gap-1{gap:calc(var(--spacing) * 1)}.lg\:gap-2{gap:calc(var(--spacing) * 2)}.lg\:gap-3{gap:calc(var(--spacing) * 3)}.lg\:gap-4{gap:calc(var(--spacing) * 4)}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:gap-6{gap:calc(var(--spacing) * 6)}.lg\:gap-7{gap:calc(var(--spacing) * 7)}.lg\:gap-8{gap:calc(var(--spacing) * 8)}.lg\:gap-9{gap:calc(var(--spacing) * 9)}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-11{gap:calc(var(--spacing) * 11)}.lg\:gap-12{gap:calc(var(--spacing) * 12)}.lg\:gap-13{gap:calc(var(--spacing) * 13)}.lg\:gap-14{gap:calc(var(--spacing) * 14)}.lg\:gap-15{gap:calc(var(--spacing) * 15)}.lg\:gap-16{gap:calc(var(--spacing) * 16)}.lg\:self-start{align-self:flex-start}.lg\:overflow-hidden{overflow:hidden}.lg\:rounded-default{border-radius:var(--border-radius,6px)}.lg\:rounded-none{border-radius:0}.lg\:rounded-t-default{border-top-left-radius:var(--border-radius,6px);border-top-right-radius:var(--border-radius,6px)}.lg\:rounded-b-default{border-bottom-right-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.lg\:border{border-style:var(--tw-border-style);border-width:1px}.lg\:border-0{border-style:var(--tw-border-style);border-width:0}.lg\:border-2{border-style:var(--tw-border-style);border-width:2px}.lg\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.lg\:border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.lg\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.lg\:border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.lg\:border-none{--tw-border-style:none;border-style:none}.lg\:border-base-200{border-color:var(--color-base-200)}.lg\:bg-transparent{background-color:#0000}.lg\:bg-white{background-color:var(--color-white)}.lg\:bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.lg\:bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.lg\:p-0{padding:calc(var(--spacing) * 0)}.lg\:p-1{padding:calc(var(--spacing) * 1)}.lg\:p-2{padding:calc(var(--spacing) * 2)}.lg\:p-3{padding:calc(var(--spacing) * 3)}.lg\:p-4{padding:calc(var(--spacing) * 4)}.lg\:p-5{padding:calc(var(--spacing) * 5)}.lg\:p-6{padding:calc(var(--spacing) * 6)}.lg\:p-7{padding:calc(var(--spacing) * 7)}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:p-9{padding:calc(var(--spacing) * 9)}.lg\:p-10{padding:calc(var(--spacing) * 10)}.lg\:p-11{padding:calc(var(--spacing) * 11)}.lg\:p-12{padding:calc(var(--spacing) * 12)}.lg\:p-13{padding:calc(var(--spacing) * 13)}.lg\:p-14{padding:calc(var(--spacing) * 14)}.lg\:p-15{padding:calc(var(--spacing) * 15)}.lg\:p-16{padding:calc(var(--spacing) * 16)}.lg\:p-17{padding:calc(var(--spacing) * 17)}.lg\:p-18{padding:calc(var(--spacing) * 18)}.lg\:p-19{padding:calc(var(--spacing) * 19)}.lg\:p-20{padding:calc(var(--spacing) * 20)}.lg\:p-21{padding:calc(var(--spacing) * 21)}.lg\:p-22{padding:calc(var(--spacing) * 22)}.lg\:p-23{padding:calc(var(--spacing) * 23)}.lg\:p-24{padding:calc(var(--spacing) * 24)}.lg\:p-32{padding:calc(var(--spacing) * 32)}.lg\:p-px{padding:1px}.lg\:px-0{padding-inline:calc(var(--spacing) * 0)}.lg\:px-1{padding-inline:calc(var(--spacing) * 1)}.lg\:px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.lg\:px-2{padding-inline:calc(var(--spacing) * 2)}.lg\:px-3{padding-inline:calc(var(--spacing) * 3)}.lg\:px-4{padding-inline:calc(var(--spacing) * 4)}.lg\:px-5{padding-inline:calc(var(--spacing) * 5)}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}.lg\:px-7{padding-inline:calc(var(--spacing) * 7)}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:px-9{padding-inline:calc(var(--spacing) * 9)}.lg\:px-10{padding-inline:calc(var(--spacing) * 10)}.lg\:px-11{padding-inline:calc(var(--spacing) * 11)}.lg\:px-12{padding-inline:calc(var(--spacing) * 12)}.lg\:px-13{padding-inline:calc(var(--spacing) * 13)}.lg\:px-14{padding-inline:calc(var(--spacing) * 14)}.lg\:px-15{padding-inline:calc(var(--spacing) * 15)}.lg\:px-16{padding-inline:calc(var(--spacing) * 16)}.lg\:px-17{padding-inline:calc(var(--spacing) * 17)}.lg\:px-18{padding-inline:calc(var(--spacing) * 18)}.lg\:px-19{padding-inline:calc(var(--spacing) * 19)}.lg\:px-20{padding-inline:calc(var(--spacing) * 20)}.lg\:px-21{padding-inline:calc(var(--spacing) * 21)}.lg\:px-22{padding-inline:calc(var(--spacing) * 22)}.lg\:px-23{padding-inline:calc(var(--spacing) * 23)}.lg\:px-24{padding-inline:calc(var(--spacing) * 24)}.lg\:px-px{padding-inline:1px}.lg\:py-0{padding-block:calc(var(--spacing) * 0)}.lg\:py-1{padding-block:calc(var(--spacing) * 1)}.lg\:py-2{padding-block:calc(var(--spacing) * 2)}.lg\:py-3{padding-block:calc(var(--spacing) * 3)}.lg\:py-4{padding-block:calc(var(--spacing) * 4)}.lg\:py-5{padding-block:calc(var(--spacing) * 5)}.lg\:py-6{padding-block:calc(var(--spacing) * 6)}.lg\:py-7{padding-block:calc(var(--spacing) * 7)}.lg\:py-8{padding-block:calc(var(--spacing) * 8)}.lg\:py-9{padding-block:calc(var(--spacing) * 9)}.lg\:py-10{padding-block:calc(var(--spacing) * 10)}.lg\:py-11{padding-block:calc(var(--spacing) * 11)}.lg\:py-12{padding-block:calc(var(--spacing) * 12)}.lg\:py-13{padding-block:calc(var(--spacing) * 13)}.lg\:py-14{padding-block:calc(var(--spacing) * 14)}.lg\:py-15{padding-block:calc(var(--spacing) * 15)}.lg\:py-16{padding-block:calc(var(--spacing) * 16)}.lg\:py-17{padding-block:calc(var(--spacing) * 17)}.lg\:py-18{padding-block:calc(var(--spacing) * 18)}.lg\:py-19{padding-block:calc(var(--spacing) * 19)}.lg\:py-20{padding-block:calc(var(--spacing) * 20)}.lg\:py-21{padding-block:calc(var(--spacing) * 21)}.lg\:py-22{padding-block:calc(var(--spacing) * 22)}.lg\:py-23{padding-block:calc(var(--spacing) * 23)}.lg\:py-24{padding-block:calc(var(--spacing) * 24)}.lg\:py-px{padding-block:1px}.lg\:pt-0{padding-top:calc(var(--spacing) * 0)}.lg\:pt-1{padding-top:calc(var(--spacing) * 1)}.lg\:pt-2{padding-top:calc(var(--spacing) * 2)}.lg\:pt-3{padding-top:calc(var(--spacing) * 3)}.lg\:pt-4{padding-top:calc(var(--spacing) * 4)}.lg\:pt-5{padding-top:calc(var(--spacing) * 5)}.lg\:pt-6{padding-top:calc(var(--spacing) * 6)}.lg\:pt-7{padding-top:calc(var(--spacing) * 7)}.lg\:pt-8{padding-top:calc(var(--spacing) * 8)}.lg\:pt-9{padding-top:calc(var(--spacing) * 9)}.lg\:pt-10{padding-top:calc(var(--spacing) * 10)}.lg\:pt-11{padding-top:calc(var(--spacing) * 11)}.lg\:pt-12{padding-top:calc(var(--spacing) * 12)}.lg\:pt-13{padding-top:calc(var(--spacing) * 13)}.lg\:pt-14{padding-top:calc(var(--spacing) * 14)}.lg\:pt-15{padding-top:calc(var(--spacing) * 15)}.lg\:pt-16{padding-top:calc(var(--spacing) * 16)}.lg\:pt-17{padding-top:calc(var(--spacing) * 17)}.lg\:pt-18{padding-top:calc(var(--spacing) * 18)}.lg\:pt-19{padding-top:calc(var(--spacing) * 19)}.lg\:pt-20{padding-top:calc(var(--spacing) * 20)}.lg\:pt-21{padding-top:calc(var(--spacing) * 21)}.lg\:pt-22{padding-top:calc(var(--spacing) * 22)}.lg\:pt-23{padding-top:calc(var(--spacing) * 23)}.lg\:pt-24{padding-top:calc(var(--spacing) * 24)}.lg\:pt-px{padding-top:1px}.lg\:pr-0{padding-right:calc(var(--spacing) * 0)}.lg\:pr-1{padding-right:calc(var(--spacing) * 1)}.lg\:pr-2{padding-right:calc(var(--spacing) * 2)}.lg\:pr-3{padding-right:calc(var(--spacing) * 3)}.lg\:pr-4{padding-right:calc(var(--spacing) * 4)}.lg\:pr-5{padding-right:calc(var(--spacing) * 5)}.lg\:pr-6{padding-right:calc(var(--spacing) * 6)}.lg\:pr-7{padding-right:calc(var(--spacing) * 7)}.lg\:pr-8{padding-right:calc(var(--spacing) * 8)}.lg\:pr-9{padding-right:calc(var(--spacing) * 9)}.lg\:pr-10{padding-right:calc(var(--spacing) * 10)}.lg\:pr-11{padding-right:calc(var(--spacing) * 11)}.lg\:pr-12{padding-right:calc(var(--spacing) * 12)}.lg\:pr-13{padding-right:calc(var(--spacing) * 13)}.lg\:pr-14{padding-right:calc(var(--spacing) * 14)}.lg\:pr-15{padding-right:calc(var(--spacing) * 15)}.lg\:pr-16{padding-right:calc(var(--spacing) * 16)}.lg\:pr-17{padding-right:calc(var(--spacing) * 17)}.lg\:pr-18{padding-right:calc(var(--spacing) * 18)}.lg\:pr-19{padding-right:calc(var(--spacing) * 19)}.lg\:pr-20{padding-right:calc(var(--spacing) * 20)}.lg\:pr-21{padding-right:calc(var(--spacing) * 21)}.lg\:pr-22{padding-right:calc(var(--spacing) * 22)}.lg\:pr-23{padding-right:calc(var(--spacing) * 23)}.lg\:pr-24{padding-right:calc(var(--spacing) * 24)}.lg\:pr-px{padding-right:1px}.lg\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.lg\:pb-1{padding-bottom:calc(var(--spacing) * 1)}.lg\:pb-2{padding-bottom:calc(var(--spacing) * 2)}.lg\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.lg\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.lg\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.lg\:pb-6{padding-bottom:calc(var(--spacing) * 6)}.lg\:pb-7{padding-bottom:calc(var(--spacing) * 7)}.lg\:pb-8{padding-bottom:calc(var(--spacing) * 8)}.lg\:pb-9{padding-bottom:calc(var(--spacing) * 9)}.lg\:pb-10{padding-bottom:calc(var(--spacing) * 10)}.lg\:pb-11{padding-bottom:calc(var(--spacing) * 11)}.lg\:pb-12{padding-bottom:calc(var(--spacing) * 12)}.lg\:pb-13{padding-bottom:calc(var(--spacing) * 13)}.lg\:pb-14{padding-bottom:calc(var(--spacing) * 14)}.lg\:pb-15{padding-bottom:calc(var(--spacing) * 15)}.lg\:pb-16{padding-bottom:calc(var(--spacing) * 16)}.lg\:pb-17{padding-bottom:calc(var(--spacing) * 17)}.lg\:pb-18{padding-bottom:calc(var(--spacing) * 18)}.lg\:pb-19{padding-bottom:calc(var(--spacing) * 19)}.lg\:pb-20{padding-bottom:calc(var(--spacing) * 20)}.lg\:pb-21{padding-bottom:calc(var(--spacing) * 21)}.lg\:pb-22{padding-bottom:calc(var(--spacing) * 22)}.lg\:pb-23{padding-bottom:calc(var(--spacing) * 23)}.lg\:pb-24{padding-bottom:calc(var(--spacing) * 24)}.lg\:pb-px{padding-bottom:1px}.lg\:pl-0{padding-left:calc(var(--spacing) * 0)}.lg\:pl-1{padding-left:calc(var(--spacing) * 1)}.lg\:pl-2{padding-left:calc(var(--spacing) * 2)}.lg\:pl-3{padding-left:calc(var(--spacing) * 3)}.lg\:pl-4{padding-left:calc(var(--spacing) * 4)}.lg\:pl-5{padding-left:calc(var(--spacing) * 5)}.lg\:pl-6{padding-left:calc(var(--spacing) * 6)}.lg\:pl-7{padding-left:calc(var(--spacing) * 7)}.lg\:pl-8{padding-left:calc(var(--spacing) * 8)}.lg\:pl-9{padding-left:calc(var(--spacing) * 9)}.lg\:pl-10{padding-left:calc(var(--spacing) * 10)}.lg\:pl-11{padding-left:calc(var(--spacing) * 11)}.lg\:pl-12{padding-left:calc(var(--spacing) * 12)}.lg\:pl-13{padding-left:calc(var(--spacing) * 13)}.lg\:pl-14{padding-left:calc(var(--spacing) * 14)}.lg\:pl-15{padding-left:calc(var(--spacing) * 15)}.lg\:pl-16{padding-left:calc(var(--spacing) * 16)}.lg\:pl-17{padding-left:calc(var(--spacing) * 17)}.lg\:pl-18{padding-left:calc(var(--spacing) * 18)}.lg\:pl-19{padding-left:calc(var(--spacing) * 19)}.lg\:pl-20{padding-left:calc(var(--spacing) * 20)}.lg\:pl-21{padding-left:calc(var(--spacing) * 21)}.lg\:pl-22{padding-left:calc(var(--spacing) * 22)}.lg\:pl-23{padding-left:calc(var(--spacing) * 23)}.lg\:pl-24{padding-left:calc(var(--spacing) * 24)}.lg\:pl-px{padding-left:1px}.lg\:text-left{text-align:left}.lg\:align-top{vertical-align:top}.lg\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.lg\:leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.lg\:leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.lg\:leading-9{--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9)}.lg\:leading-10{--tw-leading:calc(var(--spacing) * 10);line-height:calc(var(--spacing) * 10)}.lg\:leading-11{--tw-leading:calc(var(--spacing) * 11);line-height:calc(var(--spacing) * 11)}.lg\:leading-12{--tw-leading:calc(var(--spacing) * 12);line-height:calc(var(--spacing) * 12)}.lg\:leading-13{--tw-leading:calc(var(--spacing) * 13);line-height:calc(var(--spacing) * 13)}.lg\:leading-14{--tw-leading:calc(var(--spacing) * 14);line-height:calc(var(--spacing) * 14)}.lg\:leading-15{--tw-leading:calc(var(--spacing) * 15);line-height:calc(var(--spacing) * 15)}.lg\:leading-16{--tw-leading:calc(var(--spacing) * 16);line-height:calc(var(--spacing) * 16)}.lg\:leading-\[38px\]{--tw-leading:38px;line-height:38px}.lg\:text-default{color:var(--color-font-default-light)}@media not print{.lg\:text-default:where(.dark,.dark *){color:var(--color-font-default-dark)}}.lg\:text-icon{color:var(--color-base-400)}@media not print{.lg\:text-icon:where(.dark,.dark *){color:var(--color-base-500)}}.lg\:text-important{color:var(--color-font-important-light)}@media not print{.lg\:text-important:where(.dark,.dark *){color:var(--color-font-important-dark)}}.lg\:text-link{color:var(--color-primary-600)}@media not print{.lg\:text-link:where(.dark,.dark *){color:var(--color-primary-500)}}.lg\:text-subtle{color:var(--color-font-subtle-light)}@media not print{.lg\:text-subtle:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.lg\:text-transparent{color:#0000}.lg\:shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.lg\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.lg\:shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.lg\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}:is(.lg\:\*\:m-0>*){margin:calc(var(--spacing) * 0)}.group-\[\.changelist-actions\]\:lg\:w-72:is(:where(.group).changelist-actions *){width:calc(var(--spacing) * 72)}.lg\:group-\[\.field-row\]\:flex-row:is(:where(.group).field-row *){flex-direction:row}.lg\:group-\[\.field-row\]\:items-center:is(:where(.group).field-row *){align-items:center}.lg\:group-\[\.field-tabular\]\:flex-row:is(:where(.group).field-tabular *){flex-direction:row}.lg\:group-\[\.field-tabular\]\:items-center:is(:where(.group).field-tabular *){align-items:center}.lg\:group-\[\.first-row\]\:border-t-0:is(:where(.group).first-row *){border-top-style:var(--tw-border-style);border-top-width:0}.lg\:group-\[\.last\]\/nested\:border-b-0:is(:where(.group\/nested).last *),.lg\:group-\[\.last\]\/parent\:border-b-0:is(:where(.group\/parent).last *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:before\:hidden:before{content:var(--tw-content);display:none}.min-lg\:first\:rounded-l-default:first-child{border-top-left-radius:var(--border-radius,6px);border-bottom-left-radius:var(--border-radius,6px)}.lg\:first\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.lg\:first\:border-l-0:first-child{border-left-style:var(--tw-border-style);border-left-width:0}.lg\:first\:pl-3:first-child{padding-left:calc(var(--spacing) * 3)}.lg\:first\:pl-6:first-child{padding-left:calc(var(--spacing) * 6)}.min-lg\:last\:rounded-r-default:last-child{border-top-right-radius:var(--border-radius,6px);border-bottom-right-radius:var(--border-radius,6px)}.lg\:last\:pr-3:last-child{padding-right:calc(var(--spacing) * 3)}.lg\:last\:pr-6:last-child{padding-right:calc(var(--spacing) * 6)}}@media (min-width:80rem){.xl\:absolute{position:absolute}.xl\:relative{position:relative}.xl\:sticky{position:sticky}.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-5{grid-column:span 5/span 5}.xl\:col-span-6{grid-column:span 6/span 6}.xl\:col-span-7{grid-column:span 7/span 7}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:col-span-9{grid-column:span 9/span 9}.xl\:col-span-10{grid-column:span 10/span 10}.xl\:col-span-11{grid-column:span 11/span 11}.xl\:col-span-12{grid-column:span 12/span 12}.xl\:col-span-13{grid-column:span 13/span 13}.xl\:col-span-14{grid-column:span 14/span 14}.xl\:col-span-15{grid-column:span 15/span 15}.xl\:col-span-16{grid-column:span 16/span 16}.xl\:ml-0{margin-left:calc(var(--spacing) * 0)}.xl\:ml-72{margin-left:calc(var(--spacing) * 72)}.xl\:block{display:block}.xl\:block\!{display:block!important}.xl\:flex{display:flex}.xl\:hidden\!{display:none!important}.xl\:max-w-4xl{max-width:var(--container-4xl)}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xl\:grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xl\:grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xl\:grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xl\:gap-0\.5{gap:calc(var(--spacing) * .5)}.xl\:gap-1{gap:calc(var(--spacing) * 1)}.xl\:gap-2{gap:calc(var(--spacing) * 2)}.xl\:gap-3{gap:calc(var(--spacing) * 3)}.xl\:gap-4{gap:calc(var(--spacing) * 4)}.xl\:gap-5{gap:calc(var(--spacing) * 5)}.xl\:gap-6{gap:calc(var(--spacing) * 6)}.xl\:gap-7{gap:calc(var(--spacing) * 7)}.xl\:gap-8{gap:calc(var(--spacing) * 8)}.xl\:gap-9{gap:calc(var(--spacing) * 9)}.xl\:gap-10{gap:calc(var(--spacing) * 10)}.xl\:gap-11{gap:calc(var(--spacing) * 11)}.xl\:gap-12{gap:calc(var(--spacing) * 12)}.xl\:gap-13{gap:calc(var(--spacing) * 13)}.xl\:gap-14{gap:calc(var(--spacing) * 14)}.xl\:gap-15{gap:calc(var(--spacing) * 15)}.xl\:gap-16{gap:calc(var(--spacing) * 16)}.xl\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.xl\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:96rem){.\32 xl\:absolute{position:absolute}.\32 xl\:relative{position:relative}.\32 xl\:sticky{position:sticky}.\32 xl\:top-4{top:calc(var(--spacing) * 4)}.\32 xl\:z-10{z-index:10}.\32 xl\:m-0{margin:calc(var(--spacing) * 0)}.\32 xl\:block{display:block}.\32 xl\:block\!{display:block!important}.\32 xl\:flex{display:flex}.\32 xl\:hidden{display:none}.\32 xl\:overflow-visible{overflow:visible}.\32 xl\:border-0{border-style:var(--tw-border-style);border-width:0}.\32 xl\:border-t-0\!{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.\32 xl\:bg-transparent{background-color:#0000}.\32 xl\:bg-transparent\!{background-color:#0000!important}.\32 xl\:px-0{padding-inline:calc(var(--spacing) * 0)}.\32 xl\:py-0{padding-block:calc(var(--spacing) * 0)}.\32 xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.\32 xl\:pb-1{padding-bottom:calc(var(--spacing) * 1)}.\32 xl\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@container (min-width:1570px){.\@min-\[1570px\]\:-mx-4{margin-inline:calc(var(--spacing) * -4)}}@media not print{.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:border-r:where(.dark,.dark *){border-right-style:var(--tw-border-style);border-right-width:1px}.dark\:border-base-50:where(.dark,.dark *){border-color:var(--color-base-50)}.dark\:border-base-100:where(.dark,.dark *){border-color:var(--color-base-100)}.dark\:border-base-200:where(.dark,.dark *){border-color:var(--color-base-200)}.dark\:border-base-300:where(.dark,.dark *){border-color:var(--color-base-300)}.dark\:border-base-400:where(.dark,.dark *){border-color:var(--color-base-400)}.dark\:border-base-500:where(.dark,.dark *){border-color:var(--color-base-500)}.dark\:border-base-600:where(.dark,.dark *){border-color:var(--color-base-600)}.dark\:border-base-700:where(.dark,.dark *){border-color:var(--color-base-700)}.dark\:border-base-700\!:where(.dark,.dark *){border-color:var(--color-base-700)!important}.dark\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}.dark\:border-base-900:where(.dark,.dark *){border-color:var(--color-base-900)}.dark\:border-base-950:where(.dark,.dark *){border-color:var(--color-base-950)}.dark\:border-blue-500:where(.dark,.dark *){border-color:var(--color-blue-500)}.dark\:border-blue-500\/10:where(.dark,.dark *){border-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-500\/10:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.dark\:border-green-500:where(.dark,.dark *){border-color:var(--color-green-500)}.dark\:border-orange-500:where(.dark,.dark *){border-color:var(--color-orange-500)}.dark\:border-primary-500:where(.dark,.dark *){border-color:var(--color-primary-500)}.dark\:border-red-500:where(.dark,.dark *){border-color:var(--color-red-500)}.dark\:border-red-500\/20:where(.dark,.dark *){border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.dark\:border-transparent:where(.dark,.dark *){border-color:#0000}.dark\:border-r-base-700:where(.dark,.dark *){border-right-color:var(--color-base-700)}.dark\:\!bg-white\/\[\.04\]:where(.dark,.dark *){background-color:#ffffff0a!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-white\/\[\.04\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 4%, transparent)!important}}.dark\:bg-base-50:where(.dark,.dark *){background-color:var(--color-base-50)}.dark\:bg-base-100:where(.dark,.dark *){background-color:var(--color-base-100)}.dark\:bg-base-200:where(.dark,.dark *){background-color:var(--color-base-200)}.dark\:bg-base-300:where(.dark,.dark *){background-color:var(--color-base-300)}.dark\:bg-base-400:where(.dark,.dark *){background-color:var(--color-base-400)}.dark\:bg-base-500:where(.dark,.dark *),.dark\:bg-base-500\/20:where(.dark,.dark *){background-color:var(--color-base-500)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-base-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-500) 20%, transparent)}}.dark\:bg-base-600:where(.dark,.dark *){background-color:var(--color-base-600)}.dark\:bg-base-700:where(.dark,.dark *){background-color:var(--color-base-700)}.dark\:bg-base-800:where(.dark,.dark *){background-color:var(--color-base-800)}.dark\:bg-base-900:where(.dark,.dark *),.dark\:bg-base-900\/80:where(.dark,.dark *){background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-base-900\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}.dark\:bg-base-950:where(.dark,.dark *),.dark\:bg-base-950\/20:where(.dark,.dark *){background-color:var(--color-base-950)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-base-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-950) 20%, transparent)}}.dark\:bg-blue-50:where(.dark,.dark *){background-color:var(--color-blue-50)}.dark\:bg-blue-100:where(.dark,.dark *){background-color:var(--color-blue-100)}.dark\:bg-blue-200:where(.dark,.dark *){background-color:var(--color-blue-200)}.dark\:bg-blue-300:where(.dark,.dark *){background-color:var(--color-blue-300)}.dark\:bg-blue-400:where(.dark,.dark *){background-color:var(--color-blue-400)}.dark\:bg-blue-500:where(.dark,.dark *){background-color:var(--color-blue-500)}.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.dark\:bg-blue-600:where(.dark,.dark *){background-color:var(--color-blue-600)}.dark\:bg-blue-700:where(.dark,.dark *){background-color:var(--color-blue-700)}.dark\:bg-blue-800:where(.dark,.dark *){background-color:var(--color-blue-800)}.dark\:bg-blue-900:where(.dark,.dark *){background-color:var(--color-blue-900)}.dark\:bg-blue-950:where(.dark,.dark *){background-color:var(--color-blue-950)}.dark\:bg-green-50:where(.dark,.dark *){background-color:var(--color-green-50)}.dark\:bg-green-100:where(.dark,.dark *){background-color:var(--color-green-100)}.dark\:bg-green-200:where(.dark,.dark *){background-color:var(--color-green-200)}.dark\:bg-green-300:where(.dark,.dark *){background-color:var(--color-green-300)}.dark\:bg-green-400:where(.dark,.dark *){background-color:var(--color-green-400)}.dark\:bg-green-500:where(.dark,.dark *){background-color:var(--color-green-500)}.dark\:bg-green-500\/20:where(.dark,.dark *){background-color:#00c75833}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-green-500) 20%, transparent)}}.dark\:bg-green-600:where(.dark,.dark *){background-color:var(--color-green-600)}.dark\:bg-green-700:where(.dark,.dark *){background-color:var(--color-green-700)}.dark\:bg-green-800:where(.dark,.dark *){background-color:var(--color-green-800)}.dark\:bg-green-900:where(.dark,.dark *){background-color:var(--color-green-900)}.dark\:bg-green-950:where(.dark,.dark *){background-color:var(--color-green-950)}.dark\:bg-orange-50:where(.dark,.dark *){background-color:var(--color-orange-50)}.dark\:bg-orange-100:where(.dark,.dark *){background-color:var(--color-orange-100)}.dark\:bg-orange-200:where(.dark,.dark *){background-color:var(--color-orange-200)}.dark\:bg-orange-300:where(.dark,.dark *){background-color:var(--color-orange-300)}.dark\:bg-orange-400:where(.dark,.dark *){background-color:var(--color-orange-400)}.dark\:bg-orange-500:where(.dark,.dark *){background-color:var(--color-orange-500)}.dark\:bg-orange-500\/20:where(.dark,.dark *){background-color:#fe6e0033}@supports (color:color-mix(in lab, red, red)){.dark\:bg-orange-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-orange-500) 20%, transparent)}}.dark\:bg-orange-600:where(.dark,.dark *){background-color:var(--color-orange-600)}.dark\:bg-orange-700:where(.dark,.dark *){background-color:var(--color-orange-700)}.dark\:bg-orange-800:where(.dark,.dark *){background-color:var(--color-orange-800)}.dark\:bg-orange-900:where(.dark,.dark *){background-color:var(--color-orange-900)}.dark\:bg-orange-950:where(.dark,.dark *){background-color:var(--color-orange-950)}.dark\:bg-primary-50:where(.dark,.dark *){background-color:var(--color-primary-50)}.dark\:bg-primary-100:where(.dark,.dark *){background-color:var(--color-primary-100)}.dark\:bg-primary-200:where(.dark,.dark *){background-color:var(--color-primary-200)}.dark\:bg-primary-300:where(.dark,.dark *){background-color:var(--color-primary-300)}.dark\:bg-primary-400:where(.dark,.dark *){background-color:var(--color-primary-400)}.dark\:bg-primary-500:where(.dark,.dark *),.dark\:bg-primary-500\/20:where(.dark,.dark *){background-color:var(--color-primary-500)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-primary-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-primary-500) 20%, transparent)}}.dark\:bg-primary-600:where(.dark,.dark *){background-color:var(--color-primary-600)}.dark\:bg-primary-700:where(.dark,.dark *){background-color:var(--color-primary-700)}.dark\:bg-primary-800:where(.dark,.dark *){background-color:var(--color-primary-800)}.dark\:bg-primary-900:where(.dark,.dark *){background-color:var(--color-primary-900)}.dark\:bg-primary-950:where(.dark,.dark *){background-color:var(--color-primary-950)}.dark\:bg-red-50:where(.dark,.dark *){background-color:var(--color-red-50)}.dark\:bg-red-100:where(.dark,.dark *){background-color:var(--color-red-100)}.dark\:bg-red-200:where(.dark,.dark *){background-color:var(--color-red-200)}.dark\:bg-red-300:where(.dark,.dark *){background-color:var(--color-red-300)}.dark\:bg-red-400:where(.dark,.dark *){background-color:var(--color-red-400)}.dark\:bg-red-500:where(.dark,.dark *){background-color:var(--color-red-500)}.dark\:bg-red-500\/20:where(.dark,.dark *){background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.dark\:bg-red-600:where(.dark,.dark *){background-color:var(--color-red-600)}.dark\:bg-red-700:where(.dark,.dark *){background-color:var(--color-red-700)}.dark\:bg-red-800:where(.dark,.dark *){background-color:var(--color-red-800)}.dark\:bg-red-900:where(.dark,.dark *){background-color:var(--color-red-900)}.dark\:bg-red-950:where(.dark,.dark *){background-color:var(--color-red-950)}.dark\:bg-transparent:where(.dark,.dark *),.dark\:bg-white\/0:where(.dark,.dark *){background-color:#0000}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/0:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.dark\:bg-white\/10:where(.dark,.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\:bg-white\/20:where(.dark,.dark *){background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.dark\:bg-white\/30:where(.dark,.dark *){background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.dark\:bg-white\/40:where(.dark,.dark *){background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.dark\:bg-white\/50:where(.dark,.dark *){background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.dark\:bg-white\/60:where(.dark,.dark *){background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.dark\:bg-white\/70:where(.dark,.dark *){background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.dark\:bg-white\/80:where(.dark,.dark *){background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.dark\:bg-white\/90:where(.dark,.dark *){background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.dark\:bg-white\/100:where(.dark,.dark *){background-color:var(--color-white)}.dark\:bg-white\/\[\.02\]:where(.dark,.dark *){background-color:#ffffff05}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.02\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 2%, transparent)}}.dark\:bg-white\/\[\.04\]:where(.dark,.dark *){background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.04\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.dark\:bg-white\/\[\.06\]:where(.dark,.dark *){background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.06\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:from-base-50:where(.dark,.dark *){--tw-gradient-from:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-100:where(.dark,.dark *){--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-200:where(.dark,.dark *){--tw-gradient-from:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-300:where(.dark,.dark *){--tw-gradient-from:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-400:where(.dark,.dark *){--tw-gradient-from:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-500:where(.dark,.dark *){--tw-gradient-from:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-600:where(.dark,.dark *){--tw-gradient-from:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-700:where(.dark,.dark *){--tw-gradient-from:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-800:where(.dark,.dark *){--tw-gradient-from:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-900:where(.dark,.dark *){--tw-gradient-from:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-base-950:where(.dark,.dark *){--tw-gradient-from:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-50:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-100:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-200:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-300:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-400:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-500:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-600:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-700:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-800:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-900:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-primary-950:where(.dark,.dark *){--tw-gradient-from:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-white:where(.dark,.dark *){--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-50:where(.dark,.dark *){--tw-gradient-to:var(--color-base-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-100:where(.dark,.dark *){--tw-gradient-to:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-200:where(.dark,.dark *){--tw-gradient-to:var(--color-base-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-300:where(.dark,.dark *){--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-400:where(.dark,.dark *){--tw-gradient-to:var(--color-base-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-500:where(.dark,.dark *){--tw-gradient-to:var(--color-base-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-600:where(.dark,.dark *){--tw-gradient-to:var(--color-base-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-700:where(.dark,.dark *){--tw-gradient-to:var(--color-base-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-800:where(.dark,.dark *){--tw-gradient-to:var(--color-base-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-900:where(.dark,.dark *){--tw-gradient-to:var(--color-base-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-base-950:where(.dark,.dark *){--tw-gradient-to:var(--color-base-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-50:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-100:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-200:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-300:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-400:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-500:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-600:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-700:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-800:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-900:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-primary-950:where(.dark,.dark *){--tw-gradient-to:var(--color-primary-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-white:where(.dark,.dark *){--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:\!text-red-500:where(.dark,.dark *){color:var(--color-red-500)!important}.dark\:text-base-50:where(.dark,.dark *){color:var(--color-base-50)}.dark\:text-base-100:where(.dark,.dark *){color:var(--color-base-100)}.dark\:text-base-200:where(.dark,.dark *){color:var(--color-base-200)}.dark\:text-base-300:where(.dark,.dark *){color:var(--color-base-300)}.dark\:text-base-300\!:where(.dark,.dark *){color:var(--color-base-300)!important}.dark\:text-base-400:where(.dark,.dark *){color:var(--color-base-400)}.dark\:text-base-500:where(.dark,.dark *){color:var(--color-base-500)}.dark\:text-base-600:where(.dark,.dark *){color:var(--color-base-600)}.dark\:text-base-700:where(.dark,.dark *){color:var(--color-base-700)}.dark\:text-base-800:where(.dark,.dark *){color:var(--color-base-800)}.dark\:text-base-900:where(.dark,.dark *){color:var(--color-base-900)}.dark\:text-base-950:where(.dark,.dark *){color:var(--color-base-950)}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-font-default-dark:where(.dark,.dark *){color:var(--color-font-default-dark)}.dark\:text-font-important-dark:where(.dark,.dark *){color:var(--color-font-important-dark)}.dark\:text-font-subtle-dark:where(.dark,.dark *){color:var(--color-font-subtle-dark)}.dark\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\:text-orange-400:where(.dark,.dark *){color:var(--color-orange-400)}.dark\:text-primary-50:where(.dark,.dark *){color:var(--color-primary-50)}.dark\:text-primary-100:where(.dark,.dark *){color:var(--color-primary-100)}.dark\:text-primary-200:where(.dark,.dark *){color:var(--color-primary-200)}.dark\:text-primary-300:where(.dark,.dark *){color:var(--color-primary-300)}.dark\:text-primary-400:where(.dark,.dark *){color:var(--color-primary-400)}.dark\:text-primary-500:where(.dark,.dark *){color:var(--color-primary-500)}.dark\:text-primary-600:where(.dark,.dark *){color:var(--color-primary-600)}.dark\:text-primary-700:where(.dark,.dark *){color:var(--color-primary-700)}.dark\:text-primary-800:where(.dark,.dark *){color:var(--color-primary-800)}.dark\:text-primary-900:where(.dark,.dark *){color:var(--color-primary-900)}.dark\:text-primary-950:where(.dark,.dark *){color:var(--color-primary-950)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-white\/0:where(.dark,.dark *){color:#0000}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/0:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 0%, transparent)}}.dark\:text-white\/10:where(.dark,.dark *){color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/10:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\:text-white\/20:where(.dark,.dark *){color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/20:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.dark\:text-white\/30:where(.dark,.dark *){color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/30:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.dark\:text-white\/40:where(.dark,.dark *){color:#fff6}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/40:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.dark\:text-white\/50:where(.dark,.dark *){color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/50:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.dark\:text-white\/60:where(.dark,.dark *){color:#fff9}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/60:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.dark\:text-white\/70:where(.dark,.dark *){color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/70:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.dark\:text-white\/80:where(.dark,.dark *){color:#fffc}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/80:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.dark\:text-white\/90:where(.dark,.dark *){color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/90:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.dark\:text-white\/100:where(.dark,.dark *){color:var(--color-white)}.dark\:placeholder-font-subtle-dark:where(.dark,.dark *)::placeholder{color:var(--color-font-subtle-dark)}.dark\:scheme-dark:where(.dark,.dark *){color-scheme:dark}.dark\:outline-base-50:where(.dark,.dark *){outline-color:var(--color-base-50)}.dark\:outline-base-100:where(.dark,.dark *){outline-color:var(--color-base-100)}.dark\:outline-base-200:where(.dark,.dark *){outline-color:var(--color-base-200)}.dark\:outline-base-300:where(.dark,.dark *){outline-color:var(--color-base-300)}.dark\:outline-base-400:where(.dark,.dark *){outline-color:var(--color-base-400)}.dark\:outline-base-500:where(.dark,.dark *){outline-color:var(--color-base-500)}.dark\:outline-base-600:where(.dark,.dark *){outline-color:var(--color-base-600)}.dark\:outline-base-700:where(.dark,.dark *){outline-color:var(--color-base-700)}.dark\:outline-base-800:where(.dark,.dark *){outline-color:var(--color-base-800)}.dark\:outline-base-900:where(.dark,.dark *){outline-color:var(--color-base-900)}.dark\:outline-base-950:where(.dark,.dark *){outline-color:var(--color-base-950)}.dark\:outline-primary-50:where(.dark,.dark *){outline-color:var(--color-primary-50)}.dark\:outline-primary-100:where(.dark,.dark *){outline-color:var(--color-primary-100)}.dark\:outline-primary-200:where(.dark,.dark *){outline-color:var(--color-primary-200)}.dark\:outline-primary-300:where(.dark,.dark *){outline-color:var(--color-primary-300)}.dark\:outline-primary-400:where(.dark,.dark *){outline-color:var(--color-primary-400)}.dark\:outline-primary-500:where(.dark,.dark *){outline-color:var(--color-primary-500)}.dark\:outline-primary-600:where(.dark,.dark *){outline-color:var(--color-primary-600)}.dark\:outline-primary-700:where(.dark,.dark *){outline-color:var(--color-primary-700)}.dark\:outline-primary-800:where(.dark,.dark *){outline-color:var(--color-primary-800)}.dark\:outline-primary-900:where(.dark,.dark *){outline-color:var(--color-primary-900)}.dark\:outline-primary-950:where(.dark,.dark *){outline-color:var(--color-primary-950)}:is(.dark\:\*\:text-font-important-dark:where(.dark,.dark *)>*){color:var(--color-font-important-dark)}@media (hover:hover){.dark\:group-hover\:text-primary-500:where(.dark,.dark *):is(:where(.group):hover *){color:var(--color-primary-500)}.dark\:group-hover\/action\:bg-base-800:where(.dark,.dark *):is(:where(.group\/action):hover *){background-color:var(--color-base-800)}.dark\:group-hover\/action\:text-white:where(.dark,.dark *):is(:where(.group\/action):hover *){color:var(--color-white)}}.dark\:group-\[\.active\]\:bg-primary-600:where(.dark,.dark *):is(:where(.group).active *){background-color:var(--color-primary-600)}.dark\:group-\[\.active\]\:text-white:where(.dark,.dark *):is(:where(.group).active *){color:var(--color-white)}.group-\[\.changelist-actions\]\:dark\:\!outline-primary-700:is(:where(.group).changelist-actions *):where(.dark,.dark *){outline-color:var(--color-primary-700)!important}.dark\:group-\[\.errors\]\:border-red-500:where(.dark,.dark *):is(:where(.group).errors *){border-color:var(--color-red-500)}.dark\:group-\[\.errors\]\:border-red-500\!:where(.dark,.dark *):is(:where(.group).errors *){border-color:var(--color-red-500)!important}.dark\:group-\[\.errors\]\:border-x-red-500:where(.dark,.dark *):is(:where(.group).errors *){border-inline-color:var(--color-red-500)}.dark\:group-\[\.errors\]\:border-t-red-500:where(.dark,.dark *):is(:where(.group).errors *){border-top-color:var(--color-red-500)}.dark\:before\:text-font-important-dark:where(.dark,.dark *):before{content:var(--tw-content);color:var(--color-font-important-dark)}.dark\:after\:bg-transparent:where(.dark,.dark *):after{content:var(--tw-content);background-color:#0000}.dark\:after\:text-base-700:where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-700)}.dark\:after\:text-transparent:where(.dark,.dark *):after{content:var(--tw-content);color:#0000}.dark\:after\:inset-ring-base-200\/10:where(.dark,.dark *):after{content:var(--tw-content);--tw-inset-ring-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.dark\:after\:inset-ring-base-200\/10:where(.dark,.dark *):after{--tw-inset-ring-color:color-mix(in oklab, var(--color-base-200) 10%, transparent)}}.dark\:checked\:border-primary-600:where(.dark,.dark *):checked{border-color:var(--color-primary-600)}.dark\:checked\:bg-green-700:where(.dark,.dark *):checked{background-color:var(--color-green-700)}.dark\:checked\:bg-primary-600:where(.dark,.dark *):checked{background-color:var(--color-primary-600)}.dark\:checked\:after\:bg-base-900:where(.dark,.dark *):checked:after{content:var(--tw-content);background-color:var(--color-base-900)}.dark\:checked\:after\:text-white:where(.dark,.dark *):checked:after{content:var(--tw-content);color:var(--color-white)}.dark\:focus-within\:group-\[\.errors\]\:outline-red-500:where(.dark,.dark *):focus-within:is(:where(.group).errors *){outline-color:var(--color-red-500)}@media (hover:hover){.dark\:hover\:border-base-700:where(.dark,.dark *):hover{border-color:var(--color-base-700)}.dark\:hover\:bg-base-700:where(.dark,.dark *):hover,.dark\:hover\:bg-base-700\/20:where(.dark,.dark *):hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-base-700\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-base-700) 20%, transparent)}}.dark\:hover\:bg-base-800:where(.dark,.dark *):hover,.dark\:hover\:bg-base-800\/80:where(.dark,.dark *):hover{background-color:var(--color-base-800)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-base-800\/80:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-base-800) 80%, transparent)}}.dark\:hover\:bg-base-900:where(.dark,.dark *):hover{background-color:var(--color-base-900)}.dark\:hover\:bg-blue-500\/20:where(.dark,.dark *):hover{background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-blue-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.dark\:hover\:bg-green-500\/20:where(.dark,.dark *):hover{background-color:#00c75833}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-green-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-green-500) 20%, transparent)}}.dark\:hover\:bg-orange-500\/20:where(.dark,.dark *):hover{background-color:#fe6e0033}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-orange-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-orange-500) 20%, transparent)}}.dark\:hover\:bg-primary-500\/20:where(.dark,.dark *):hover{background-color:var(--color-primary-500)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-primary-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-primary-500) 20%, transparent)}}.dark\:hover\:bg-red-500\/20:where(.dark,.dark *):hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.dark\:hover\:bg-white\/\[\.04\]:where(.dark,.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[\.04\]:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.dark\:hover\:bg-white\/\[\.06\]:where(.dark,.dark *):hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[\.06\]:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:hover\:\!text-red-500:where(.dark,.dark *):hover{color:var(--color-red-500)!important}.dark\:hover\:text-base-200:where(.dark,.dark *):hover{color:var(--color-base-200)}.dark\:hover\:text-base-400:where(.dark,.dark *):hover{color:var(--color-base-400)}.dark\:hover\:text-blue-400:where(.dark,.dark *):hover{color:var(--color-blue-400)}.dark\:hover\:text-font-important-dark:where(.dark,.dark *):hover{color:var(--color-font-important-dark)}.dark\:hover\:text-green-400:where(.dark,.dark *):hover{color:var(--color-green-400)}.dark\:hover\:text-orange-400:where(.dark,.dark *):hover{color:var(--color-orange-400)}.dark\:hover\:text-primary-400:where(.dark,.dark *):hover{color:var(--color-primary-400)}.dark\:hover\:text-primary-500:where(.dark,.dark *):hover{color:var(--color-primary-500)}.dark\:hover\:text-primary-500\!:where(.dark,.dark *):hover{color:var(--color-primary-500)!important}.dark\:hover\:text-red-400:where(.dark,.dark *):hover{color:var(--color-red-400)}.dark\:hover\:text-red-500:where(.dark,.dark *):hover{color:var(--color-red-500)}.dark\:hover\:text-white:where(.dark,.dark *):hover{color:var(--color-white)}.dark\:hover\:shadow-base-800\/50:where(.dark,.dark *):hover{--tw-shadow-color:var(--color-base-800)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:shadow-base-800\/50:where(.dark,.dark *):hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-base-800) 50%, transparent) var(--tw-shadow-alpha), transparent)}}:is(.\*\:dark\:hover\:bg-base-700>*):where(.dark,.dark *):hover{background-color:var(--color-base-700)}:is(.\*\:dark\:hover\:bg-white\/\[\.06\]>*):where(.dark,.dark *):hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){:is(.\*\:dark\:hover\:bg-white\/\[\.06\]>*):where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}:is(.\*\:dark\:hover\:text-base-200>*):where(.dark,.dark *):hover{color:var(--color-base-200)}}.dark\:focus\:group-\[\.errors\]\:outline-red-500:where(.dark,.dark *):focus:is(:where(.group).errors *){outline-color:var(--color-red-500)}.dark\:disabled\:\!bg-base-800:where(.dark,.dark *):disabled{background-color:var(--color-base-800)!important}@media (min-width:64rem){.dark\:lg\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}}}@media (min-width:64rem){@media not print{.lg\:dark\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}}}@media not print{@media (min-width:64rem){.dark\:lg\:\!bg-transparent:where(.dark,.dark *),.dark\:lg\:bg-transparent\!:where(.dark,.dark *){background-color:#0000!important}}}@media (min-width:64rem){@media not print{.lg\:dark\:bg-base-900:where(.dark,.dark *),.lg\:dark\:bg-base-900\/80:where(.dark,.dark *){background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.lg\:dark\:bg-base-900\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}}}@media (min-width:96rem){@media not print{.\32 xl\:dark\:border-base-800:where(.dark,.dark *){border-color:var(--color-base-800)}.\32 xl\:dark\:bg-transparent\!:where(.dark,.dark *){background-color:#0000!important}}}.prose-headings\:font-semibold :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-headings\:tracking-tight :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.prose-headings\:text-important :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-font-important-light)}@media not print{.prose-headings\:text-important :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)):where(.dark,.dark *){color:var(--color-font-important-dark)}}.prose-a\:text-link :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-primary-600)}@media not print{.prose-a\:text-link :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):where(.dark,.dark *){color:var(--color-primary-500)}}.prose-blockquote\:border-l-4 :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-style:var(--tw-border-style);border-left-width:4px}.prose-blockquote\:not-italic :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-style:normal}@media not print{.dark\:prose-blockquote\:border-base-700:where(.dark,.dark *) :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--color-base-700)}.dark\:prose-blockquote\:text-base-300:where(.dark,.dark *) :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-base-300)}}.prose-strong\:font-semibold :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-pre\:rounded-default :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--border-radius,6px)}.prose-pre\:bg-base-50 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--color-base-50)}@media not print{.dark\:prose-pre\:bg-base-800:where(.dark,.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--color-base-800)}}.prose-ol\:mt-2 :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:calc(var(--spacing) * 2)}.prose-ol\:flex :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){display:flex}.prose-ol\:list-decimal :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose-ol\:flex-col :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){flex-direction:column}.prose-ol\:gap-0\.5 :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){gap:calc(var(--spacing) * .5)}.prose-ul\:mt-2 :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:calc(var(--spacing) * 2)}.prose-ul\:flex :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){display:flex}.prose-ul\:list-disc :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc}.prose-ul\:flex-col :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){flex-direction:column}.prose-ul\:gap-0\.5 :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){gap:calc(var(--spacing) * .5)}.prose-li\:m-0 :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing) * 0)}.has-\[\.delete\:checked\]\:\[\&\+\.form-delete\]\:table-row:has(.delete:checked)+.form-delete{display:table-row}.\[\&\.htmx-request\]\:flex.htmx-request{display:flex}.\[\&\.htmx-request\+div\]\:hidden.htmx-request+div{display:none}.\[\&\>\.active\]\:bg-white>.active{background-color:var(--color-white)}.\[\&\>\.active\]\:shadow-xs>.active{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.\[\&\>\.active\]\:hover\:bg-white>.active:hover{background-color:var(--color-white)}}@media not print{.\[\&\>\.active\]\:dark\:bg-base-700>.active:where(.dark,.dark *){background-color:var(--color-base-700)}@media (hover:hover){.\[\&\>\.active\]\:dark\:hover\:bg-base-700>.active:where(.dark,.dark *):hover{background-color:var(--color-base-700)}}}.has-\[\.delete\:checked\]\:\[\&\>\.form-delete\]\:block:has(.delete:checked)>.form-delete{display:block}:is(.\*\:\[\&\[href\]\]\:opacity-100>*)[href]{opacity:1}}:is(.errorlist>*):before{content:var(--tw-content);margin-right:calc(var(--spacing) * 1);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);vertical-align:bottom;--tw-content:"warning";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}[x-cloak]{display:none!important}.asteriskField{color:var(--color-red-600)}.sortable-ghost{opacity:.5}.empty-form{display:none}input[type=search]::-webkit-search-cancel-button{z-index:10}@media not print{input[type=search]::-webkit-search-cancel-button:where(.dark,.dark *){--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}table tr.selected td,table tr.selected th{background-color:#fff0851a}@supports (color:color-mix(in lab, red, red)){table tr.selected td,table tr.selected th{background-color:color-mix(in oklab, var(--color-yellow-200) 10%, transparent)}}@media not print{:is(table tr.selected td,table tr.selected th):where(.dark,.dark *){background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){:is(table tr.selected td,table tr.selected th):where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}}.datetimeshortcuts{flex-direction:row-reverse;align-items:center;font-size:0;display:flex;position:absolute;top:1px;right:1px}.datetimeshortcuts a{height:calc(var(--spacing) * 9);color:var(--color-base-400);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));align-items:center;font-size:0;display:flex}@media (hover:hover){.datetimeshortcuts a:hover{color:var(--color-base-700)}}.datetimeshortcuts a:first-child{display:none}.datetimeshortcuts a:first-child:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;height:calc(var(--spacing) * 9);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:center;--tw-leading:1;--tw-content:"update";content:var(--tw-content);direction:ltr;justify-content:center;align-items:center;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:flex}@media (hover:hover){.datetimeshortcuts a:first-child:after:hover{color:var(--color-base-700)}}@media not print{.datetimeshortcuts a:first-child:after:where(){border-color:var(--color-base-700)}@media (hover:hover){.datetimeshortcuts a:first-child:after:where():hover{color:var(--color-base-700)}}}.datetimeshortcuts a:first-child:after{display:flex}.clock-icon,.date-icon{color:var(--color-base-400);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}@media (hover:hover){:is(.clock-icon,.date-icon):hover{color:var(--color-base-700)}}@media not print{:is(.clock-icon,.date-icon):where(.dark,.dark *){color:var(--color-base-500)}@media (hover:hover){:is(.clock-icon,.date-icon):where(.dark,.dark *):hover{color:var(--color-base-200)}}}:is(.clock-icon,.date-icon):after{content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);border-color:var(--color-base-200);content:var(--tw-content);padding-inline:calc(var(--spacing) * 3);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}@media not print{:is(.clock-icon,.date-icon):where(.dark,.dark *):after{content:var(--tw-content);border-color:var(--color-base-700)}}.date-icon:after{content:"calendar_today"}.clock-icon:after{content:"schedule"}.timezonewarning{top:calc(var(--spacing) * 2);right:calc(var(--spacing) * 11);text-overflow:ellipsis;white-space:nowrap;color:var(--color-base-500);align-items:center;font-size:0;display:block;position:absolute;overflow:hidden}.timezonewarning:hover{border-radius:var(--border-radius,6px);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9);inset:1px}@media not print{.timezonewarning:hover:where(.dark,.dark *){background-color:var(--color-base-900)}}.timezonewarning:hover:before{margin-right:calc(var(--spacing) * 2);display:none}.timezonewarning:before{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;cursor:pointer;border-color:var(--color-base-200);text-align:center;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));color:var(--color-red-600);direction:ltr;justify-content:center;align-items:center;display:block}@media not print{.timezonewarning:before:where(){border-color:var(--color-base-700)}}.timezonewarning:before{content:"warning"}.selector{max-width:var(--container-5xl);flex-direction:column;flex-grow:1;align-items:center;display:flex}@media (min-width:48rem){.selector{flex-direction:row}}.selector .selector-available-title label,.selector .selector-chosen-title label{margin-bottom:calc(var(--spacing) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-font-important-light);display:block}@media not print{:is(.selector .selector-available-title label,.selector .selector-chosen-title label):where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-font-important-dark)}}.selector .helptext{margin-bottom:calc(var(--spacing) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 4);padding-bottom:calc(var(--spacing) * 3)}@media not print{.selector .helptext:where(.dark,.dark *){border-color:var(--color-base-700)}}.selector select{background-image:none;flex-grow:1;width:100%}@media not print{.selector select:where(.dark,.dark *){background-color:var(--color-base-900);color-scheme:dark}}.selector option{text-overflow:ellipsis;white-space:nowrap;padding-inline:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-base-500);overflow:hidden}@media not print{.selector option:where(.dark,.dark *){color:var(--color-base-300)}}.selector .list-footer-display{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-base-200);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media not print{.selector .list-footer-display:where(.dark,.dark *){border-color:var(--color-base-700)}}.selector-chosen,.selector-available{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);flex-direction:column;flex-grow:1;align-self:stretch;display:flex}@media (min-width:48rem){.selector-chosen,.selector-available{width:calc(var(--spacing) * 72)}}@media (min-width:64rem){.selector-chosen,.selector-available{width:calc(var(--spacing) * 96)}}@media not print{:is(.selector-chosen,.selector-available):where(.dark,.dark *){border-color:var(--color-base-700)}}.selector-chosen h2,.selector-available h2{margin-bottom:calc(var(--spacing) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-base-500)}@media not print{:is(.selector-chosen h2,.selector-available h2):where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-base-200)}}.selector-filter{display:flex}.selector-filter input{margin-inline:calc(var(--spacing) * 3);margin-bottom:calc(var(--spacing) * 3);border-radius:var(--border-radius,6px);background-color:var(--color-base-100);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-500);flex-grow:1;display:block}.selector-filter input:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.selector-filter input:focus{outline-offset:2px;outline:2px solid #0000}}@media not print{.selector-filter input:where(.dark,.dark *){background-color:var(--color-base-800);color:var(--color-base-300)}}.selector-chooseall,.selector-clearall{cursor:pointer;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-base-200);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-font-default-light);display:block}@media not print{:is(.selector-chooseall,.selector-clearall):where(.dark,.dark *){color:var(--color-font-default-dark);border-color:var(--color-base-700)}}.selector-clearall{color:var(--color-red-600)}@media not print{.selector-clearall:where(.dark,.dark *){color:var(--color-red-500)}}.selector-chooser{margin-block:calc(var(--spacing) * 4);width:calc(var(--spacing) * 14);flex-direction:column;font-size:0;display:flex}.selector-chooser li{padding-block:calc(var(--spacing) * 1);text-align:center}.selector-add:after,.selector-remove:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;width:calc(var(--spacing) * 5);color:var(--color-base-400);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.selector-add:after{content:"arrow_forward"}.selector-remove:after{content:"arrow_back"}.related-widget-wrapper{flex-wrap:nowrap!important}.related-widget-wrapper-link{order:9999}.formset .select2{min-width:240px}.select2.select2-container{max-width:var(--container-2xl);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);position:relative;width:100%!important;min-height:38px!important}@media not print{.select2.select2-container:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.select2-selection{--tw-outline-style:none;outline-style:none}.select2.select2-container--open{border-bottom-style:var(--tw-border-style);border-bottom-width:0;border-color:var(--color-primary-600);outline-style:var(--tw-outline-style);outline-offset:calc(2px * -1);outline-width:2px;outline-color:var(--color-primary-600);position:relative}.select2.select2-container.select2-container--focus{outline-style:var(--tw-outline-style);outline-offset:calc(2px * -1);outline-width:2px;outline-color:var(--color-primary-600)}.errors .select2.select2-container{border-color:var(--color-red-600)}.select2-container.select2-container--admin-autocomplete .select2-selection--single{height:auto}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered{height:calc(var(--spacing) * 9);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-font-default-light)}@media not print{.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered:where(.dark,.dark *){color:var(--color-font-default-dark)}}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear{margin-top:calc(var(--spacing) * -2);height:calc(var(--spacing) * 9);align-items:center;font-size:0;display:flex}:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):after{content:var(--tw-content);color:var(--color-base-400)}@media (hover:hover){:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):hover:after{content:var(--tw-content);color:var(--color-base-700)}}@media not print{:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-500)}@media (hover:hover){:is(.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear):where(.dark,.dark *):hover:after{content:var(--tw-content);color:var(--color-base-200)}}}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear:after,.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-content:"close_small";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow{margin-top:-1px;margin-right:calc(var(--spacing) * 2);height:calc(var(--spacing) * 9);align-items:center;display:flex}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow:after{content:var(--tw-content);left:calc(var(--spacing) * 0);content:var(--tw-content);margin:calc(var(--spacing) * 0);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));content:var(--tw-content);--tw-leading:1;content:var(--tw-content);color:var(--color-base-400);direction:ltr;line-height:1;display:inline-block}@media not print{.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow:where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-500)}}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow:after{content:"expand_more"}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b{display:none}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);padding-inline:calc(var(--spacing) * 1);padding-block:calc(var(--spacing) * 1.5);position:relative}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown:before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing) * 2.5);content:var(--tw-content);left:calc(var(--spacing) * 4);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));content:var(--tw-content);color:var(--color-base-400);--tw-content:"search";content:var(--tw-content);direction:ltr;display:inline-block;position:absolute}@media not print{.select2-container.select2-container--admin-autocomplete .select2-search--dropdown:where(.dark,.dark *){border-color:var(--color-base-700)}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown:where(.dark,.dark *):before{content:var(--tw-content);color:var(--color-base-500)}}.select2-container.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field{margin-inline:calc(var(--spacing) * 0);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-width:0;border-color:var(--color-base-200);background-color:var(--color-base-100);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);padding-left:calc(var(--spacing) * 9);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-font-default-light);--tw-outline-style:none;outline-style:none;flex-grow:1}@media (forced-colors:active){.select2-container.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field{outline-offset:2px;outline:2px solid #0000}}@media not print{.select2-container.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field:where(.dark,.dark *){border-color:var(--color-base-800);background-color:var(--color-base-800);color:var(--color-font-default-dark)}}.select2-container .select2-results__options{padding-block:calc(var(--spacing) * 1)}.select2-container .select2-results__option--highlighted[aria-selected]{background-color:var(--color-base-100)!important}@media not print{.select2-container .select2-results__option--highlighted[aria-selected]:where(.dark,.dark *){background-color:var(--color-base-800)!important}}.select2-container.select2-container--open .select2-dropdown{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media not print{.select2-container.select2-container--open .select2-dropdown:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.select2-container.select2-container--open .select2-dropdown--below{margin-top:calc(var(--spacing) * 1)}.select2-container.select2-container--open .select2-dropdown--above{margin-bottom:calc(var(--spacing) * 1)}.select2-container.select2-container--admin-autocomplete .select2-results__option{margin-inline:calc(var(--spacing) * 1);margin-bottom:calc(var(--spacing) * .5);border-radius:var(--border-radius,6px);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 2);color:var(--color-font-default-light);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}.select2-container.select2-container--admin-autocomplete .select2-results__option:last-child{margin-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.select2-container.select2-container--admin-autocomplete .select2-results__option:hover{background-color:var(--color-base-100);color:var(--color-base-700)}}@media not print{.select2-container.select2-container--admin-autocomplete .select2-results__option:where(.dark,.dark *){color:var(--color-font-default-dark)}@media (hover:hover){.select2-container.select2-container--admin-autocomplete .select2-results__option:where(.dark,.dark *):hover{background-color:var(--color-base-800);color:var(--color-base-200)}}}.select2-container.select2-container--admin-autocomplete .select2-results__option[aria-selected=true]{color:var(--color-primary-600);align-items:center;display:flex}.select2-container.select2-container--admin-autocomplete .select2-results__option[aria-selected=true]:after{content:var(--tw-content);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;--tw-content:"check";content:var(--tw-content);direction:ltr;margin-left:auto;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}@media not print{.select2-container.select2-container--admin-autocomplete .select2-results__option[aria-selected=true]:where(.dark,.dark *){color:var(--color-primary-500)}}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear{top:calc(var(--spacing) * 0);margin:calc(var(--spacing) * 0);margin-right:calc(var(--spacing) * 3)}.select2-container.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered{padding-block:calc(var(--spacing) * 0);padding-top:calc(var(--spacing) * 1);padding-right:calc(var(--spacing) * 6);padding-left:calc(var(--spacing) * 1)}.select2-container.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered{padding-right:calc(var(--spacing) * 8)}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice{margin:calc(var(--spacing) * 0);margin-right:calc(var(--spacing) * 1);margin-bottom:calc(var(--spacing) * 1);height:calc(var(--spacing) * 7);text-overflow:ellipsis;white-space:nowrap;background-color:var(--color-base-100);padding-inline:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-600);--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);display:block;overflow:hidden}@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice:hover{color:var(--color-base-700)}}@media not print{.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice:where(.dark,.dark *){background-color:var(--color-base-800);color:var(--color-base-300)}@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice:where(.dark,.dark *):hover{color:var(--color-base-200)}}}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove{vertical-align:top;font-size:0}@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove:hover{color:var(--color-base-600)}}@media not print{@media (hover:hover){.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove:where(.dark,.dark *):hover{color:var(--color-base-200)}}}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-selection__choice .select2-selection__choice__remove:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;height:calc(var(--spacing) * 7);--tw-content:"close_small";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:14px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:calc(var(--spacing) * 7)!important;line-height:calc(var(--spacing) * 7)!important}.select2-container--admin-autocomplete .select2-selection--multiple li.select2-search--inline .select2-search__field{margin:calc(var(--spacing) * 0);margin-left:calc(var(--spacing) * 2);height:calc(var(--spacing) * 7);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-base-500)}fieldset.collapsed>div{display:none}fieldset.collapse{visibility:visible}fieldset.collapsed h2,fieldset.collapsed{display:block}fieldset.collapsed .collapse-toggle{display:inline}fieldset details>summary{list-style-type:none}fieldset details>summary:after{top:calc(var(--spacing) * 2.5);right:calc(var(--spacing) * 3);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;cursor:pointer;content:"expand_more";direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block;position:absolute}fieldset details[open]>summary{margin-bottom:calc(var(--spacing) * 4)}fieldset details[open]>summary:after{rotate:180deg}.calendarbox .calendar{min-height:320px}.calendarbox,.clockbox{width:calc(var(--spacing) * 80);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);z-index:70!important;position:fixed!important;top:50%!important;left:50%!important}@media not print{:is(.calendarbox,.clockbox):where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)}}.calendar caption{margin-bottom:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 3);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-font-important-light)}@media not print{.calendar caption:where(.dark,.dark *){color:var(--color-font-important-dark)}}.calendar table{margin-bottom:calc(var(--spacing) * 3);width:100%}.calendar table th{text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-font-important-light)}@media not print{.calendar table th:where(.dark,.dark *){color:var(--color-font-important-dark)}}.calendar table td{height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);padding:calc(var(--spacing) * 1);text-align:center}.calendar table td a{height:calc(var(--spacing) * 8);width:calc(var(--spacing) * 8);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}@media not print{.calendar table td a:where(.dark,.dark *){color:var(--color-base-300)}}.calendar table td a:hover{background-color:var(--color-base-100);color:var(--color-base-700)}.calendar table td.today a{background-color:var(--color-primary-600);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-white)}.calendar-shortcuts{margin-bottom:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 1);border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;flex-direction:row;justify-content:center;font-size:0;display:flex}.calendar-shortcuts a{margin-inline:calc(var(--spacing) * 1);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);width:33.3333%;padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-medium);line-height:1;font-weight:var(--font-weight-medium);color:var(--color-base-500);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media not print{.calendar-shortcuts a:where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-base-300)}}.calendar-cancel{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-base-200);padding-block:calc(var(--spacing) * 2);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-red-600);display:block}@media not print{.calendar-cancel:where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-red-500)}}.calendarnav-previous{top:calc(var(--spacing) * 0);left:calc(var(--spacing) * 0);margin-top:calc(var(--spacing) * 2);margin-left:calc(var(--spacing) * 2);font-size:0;display:block;position:absolute}:is(.calendarnav-next,.calendarnav-previous):after{content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing) * 7);content:var(--tw-content);width:calc(var(--spacing) * 7);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);border-style:var(--tw-border-style);content:var(--tw-content);border-width:1px;border-color:var(--color-base-200);content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));direction:ltr;border-radius:3.40282e38px;justify-content:center;align-items:center;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:flex}@media not print{:is(.calendarnav-next,.calendarnav-previous):where(.dark,.dark *):after{content:var(--tw-content);border-color:var(--color-base-700);content:var(--tw-content);background-color:var(--color-base-800)}}.calendarnav-previous:after{content:"navigate_before";display:flex}.calendarnav-next:after{content:"navigate_next";display:flex}.calendarnav-next{top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);margin-top:calc(var(--spacing) * 2);margin-right:calc(var(--spacing) * 2);font-size:0;display:block;position:absolute}.clockbox{z-index:50;border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media not print{.clockbox:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)}}.clockbox h2{padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-700)}@media not print{.clockbox h2:where(.dark,.dark *){color:var(--color-base-200)}}.clockbox .timelist{padding-inline:calc(var(--spacing) * 3);padding-bottom:calc(var(--spacing) * 2);color:var(--color-base-500)}@media not print{.clockbox .timelist:where(.dark,.dark *){color:var(--color-base-300)}}.clockbox .timelist li{padding-bottom:calc(var(--spacing) * 1);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}.clockbox .timelist li:hover{color:var(--color-primary-500)}.htmx-indicator.htmx-swapping:before{top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);bottom:calc(var(--spacing) * 0);left:calc(var(--spacing) * 0);background-color:var(--color-white);opacity:.8;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:"";position:absolute}.htmx-indicator.htmx-swapping:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;height:calc(var(--spacing) * 4);width:calc(var(--spacing) * 4);animation:var(--animate-spin);color:var(--color-base-400);content:"sync";direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;position:absolute;inset:50%}#changelist-filter .admin-numeric-filter-slider .noUi-handle{right:calc(var(--spacing) * -4);height:calc(var(--spacing) * 4);width:calc(var(--spacing) * 4);cursor:pointer;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-radius:3.40282e38px}@media not print{#changelist-filter .admin-numeric-filter-slider .noUi-handle:where(.dark,.dark *){border-color:var(--color-base-200);background-color:var(--color-base-200)}}#changelist-filter .admin-numeric-filter-slider .noUi-handle-upper{right:calc(var(--spacing) * 0)}#changelist-filter .admin-numeric-filter-slider .noUi-handle:after,#changelist-filter .admin-numeric-filter-slider .noUi-handle:before{content:none}#changelist-filter .admin-numeric-filter-slider.noUi-target{height:calc(var(--spacing) * 1);border-style:var(--tw-border-style);background-color:var(--color-base-200);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-width:0}@media not print{#changelist-filter .admin-numeric-filter-slider.noUi-target:where(.dark,.dark *){background-color:var(--color-base-600)}}#changelist-filter .admin-numeric-filter-slider .noUi-connect{height:calc(var(--spacing) * 1);border-style:var(--tw-border-style);background-color:var(--color-primary-600);border-width:0}trix-toolbar[id^=trix-toolbar-]{top:calc(var(--spacing) * 0);position:sticky}@media not print{trix-toolbar[id^=trix-toolbar-]:where(.dark,.dark *){background-color:var(--color-base-900)}}.trix-active{color:var(--color-primary-600)}.ui-tabs{flex-direction:column;display:flex}.ui-tabs.ui-widget .ui-tabs-nav{margin:calc(var(--spacing) * 0);margin-top:calc(var(--spacing) * 3);margin-right:auto;margin-bottom:calc(var(--spacing) * 0);margin-left:calc(var(--spacing) * 3);gap:calc(var(--spacing) * 2);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);background-color:var(--color-base-100);padding:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;display:flex}.ui-tabs.ui-widget .ui-tabs-nav:after{content:var(--tw-content);display:none}@media not print{.ui-tabs.ui-widget .ui-tabs-nav:where(.dark,.dark *){background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.ui-tabs.ui-widget .ui-tabs-nav:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}}.ui-tabs.ui-widget .ui-tabs-nav li{top:calc(var(--spacing) * 0);border-style:var(--tw-border-style);border-width:0}.ui-tabs.ui-widget .ui-tabs-nav li a{margin:calc(var(--spacing) * 0);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-400);background-color:#0000;border-width:0;flex-direction:row;align-items:center;display:flex}@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li a:hover{background-color:var(--color-base-700)}@supports (color:color-mix(in lab, red, red)){.ui-tabs.ui-widget .ui-tabs-nav li a:hover{background-color:color-mix(in oklab, var(--color-base-700) 4%, transparent)}}.ui-tabs.ui-widget .ui-tabs-nav li a:hover{color:var(--color-base-700)}}@media not print{@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li a:where(.dark,.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.ui-tabs.ui-widget .ui-tabs-nav li a:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.ui-tabs.ui-widget .ui-tabs-nav li a:where(.dark,.dark *):hover{color:var(--color-white)}}}.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a{border-radius:var(--border-radius,6px);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-base-700);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);flex-direction:row;align-items:center;display:flex}@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a:hover{background-color:var(--color-white)}}@media not print{.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a:where(.dark,.dark *){background-color:var(--color-base-900);color:var(--color-white)}@media (hover:hover){.ui-tabs.ui-widget .ui-tabs-nav li.ui-tabs-active a:where(.dark,.dark *):hover{background-color:var(--color-base-900)}}}.simplebar-track .simplebar-scrollbar:before{content:var(--tw-content);background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.simplebar-track .simplebar-scrollbar:before{background-color:color-mix(in oklab, var(--color-base-900) 80%, transparent)}}@media not print{.simplebar-track .simplebar-scrollbar:where(.dark,.dark *):before{content:var(--tw-content);background-color:var(--color-base-400)}@supports (color:color-mix(in lab, red, red)){.simplebar-track .simplebar-scrollbar:where(.dark,.dark *):before{background-color:color-mix(in oklab, var(--color-base-400) 80%, transparent)}}}.simplebar-horizontal-scrollbar-top .simplebar-track.simplebar-horizontal{top:calc(var(--spacing) * 9)}textarea#searchbar{--tw-leading:35px;--tw-font-weight:var(--font-weight-medium);min-height:35px;max-height:35px;line-height:35px;font-weight:var(--font-weight-medium);white-space:nowrap;width:100%!important}textarea#searchbar::placeholder{color:var(--color-base-400)}textarea#searchbar:focus{--tw-outline-style:none;outline-style:none}div.djangoql-completion{z-index:40;border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);width:384px;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);margin-top:6px;margin-left:-39px}@media not print{div.djangoql-completion:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)}}div.djangoql-completion ul{padding-block:calc(var(--spacing) * 1)}div.djangoql-completion li{margin-inline:calc(var(--spacing) * 1);border-radius:var(--border-radius,6px);height:30px;padding-inline:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:1;align-items:center;line-height:1;display:flex}@media (hover:hover){div.djangoql-completion li:hover{background-color:var(--color-base-100);color:var(--color-font-important-light)}@media not print{div.djangoql-completion li:hover:where(.dark,.dark *){color:var(--color-font-important-dark)}}div.djangoql-completion li:hover{color:var(--color-base-700)}}@media not print{@media (hover:hover){div.djangoql-completion li:where(.dark,.dark *):hover{background-color:var(--color-base-700);color:var(--color-base-200)}}}div.djangoql-completion li.active{background-color:var(--color-base-100);color:var(--color-font-important-light)}@media not print{div.djangoql-completion li.active:where(.dark,.dark *){color:var(--color-font-important-dark);background-color:var(--color-base-700)}}div.djangoql-completion li i{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-font-default-light);margin-left:auto}@media not print{div.djangoql-completion li i:where(.dark,.dark *){color:var(--color-font-default-dark)}}div.djangoql-completion .syntax-help{display:none}.djangoql-toggle{height:calc(var(--spacing) * 4);width:calc(var(--spacing) * 4);min-width:calc(var(--spacing) * 4);cursor:pointer;appearance:none;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-300);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-radius:4px;display:block}.djangoql-toggle:after{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing) * 4);content:var(--tw-content);width:calc(var(--spacing) * 4);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);--tw-leading:1;content:var(--tw-content);color:var(--color-white);content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-content:"check_small";content:var(--tw-content);direction:ltr;justify-content:center;align-items:center;margin-top:-1px;margin-left:-1px;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block;position:absolute;display:flex!important}.djangoql-toggle:checked{border-color:var(--color-primary-600);background-color:var(--color-primary-600);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.djangoql-toggle:hover{border-color:var(--color-base-400)}.djangoql-toggle:checked:hover{border-color:var(--color-primary-600)}}.djangoql-toggle:focus{outline-style:var(--tw-outline-style);outline-width:1px;outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-primary-500)}@media not print{.djangoql-toggle:where(.dark,.dark *){border-color:var(--color-base-500);background-color:var(--color-base-700)}.djangoql-toggle:where(.dark,.dark *):after{content:var(--tw-content);color:var(--color-base-700)}.djangoql-toggle:where(.dark,.dark *):checked{border-color:var(--color-primary-600);background-color:var(--color-primary-600)}.djangoql-toggle:where(.dark,.dark *):checked:after{content:var(--tw-content);color:var(--color-white)}}.djangoql-toggle{margin-left:calc(var(--spacing) * -4.5);position:relative}.import-preview-table ins{color:var(--color-green-700);background-color:var(--color-green-100)!important;text-decoration-line:none!important}@media not print{.import-preview-table ins:where(.dark,.dark *){background-color:#00c75833!important}@supports (color:color-mix(in lab, red, red)){.import-preview-table ins:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-green-500) 20%, transparent)!important}}.import-preview-table ins:where(.dark,.dark *){color:var(--color-green-400)!important}}.import-preview-table del{color:var(--color-red-700);background-color:var(--color-red-100)!important;text-decoration-line:none!important}@media not print{.import-preview-table del:where(.dark,.dark *){background-color:#fb2c3633!important}@supports (color:color-mix(in lab, red, red)){.import-preview-table del:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)!important}}.import-preview-table del:where(.dark,.dark *){color:var(--color-red-400)!important}}.jsoneditor{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-width:1px;overflow:hidden;border-color:var(--color-base-200)!important}@media not print{.jsoneditor:where(.dark,.dark *){border-color:var(--color-base-700)!important}}div.jsoneditor-tree,.ace-jsoneditor .ace_scroller{color:var(--color-font-default-light)}@media not print{:is(div.jsoneditor-tree,.ace-jsoneditor .ace_scroller):where(.dark,.dark *){color:var(--color-font-default-dark);background-color:var(--color-base-900)}.ace-jsoneditor .ace_scrollbar:where(.dark,.dark *){--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.jsoneditor div.jsoneditor-tree{background-color:var(--color-white)}@media not print{.jsoneditor div.jsoneditor-tree:where(.dark,.dark *){background-color:#0000!important}}.jsoneditor textarea.jsoneditor-text{padding:calc(var(--spacing) * 3);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);background-color:#0000!important}.jsoneditor .jsoneditor-text,.jsoneditor .jsoneditor-tree{color:var(--color-font-default-light)!important;background-color:#0000!important}@media not print{:is(.jsoneditor .jsoneditor-text,.jsoneditor .jsoneditor-tree):where(.dark,.dark *){color:var(--color-font-default-dark)!important;background-color:#0000!important}}.jsoneditor .jsoneditor-readonly{color:var(--color-font-subtle-light)!important}@media not print{.jsoneditor .jsoneditor-readonly:where(.dark,.dark *){color:var(--color-font-subtle-dark)!important}}.jsoneditor .jsoneditor-field{--tw-border-style:none!important;color:var(--color-font-default-light)!important;border-style:none!important}@media not print{.jsoneditor .jsoneditor-field:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}@media (hover:hover){.jsoneditor .jsoneditor-field:hover{background-color:var(--color-base-100)!important}}@media not print{.jsoneditor .jsoneditor-field:where(.dark,.dark *){background-color:#0000}@media (hover:hover){.jsoneditor .jsoneditor-field:where(.dark,.dark *):hover{background-color:var(--color-base-800)!important}}}.jsoneditor .jsoneditor-value{color:var(--color-font-important-light);--tw-border-style:none!important;border-style:none!important}@media not print{.jsoneditor .jsoneditor-value:where(.dark,.dark *){color:var(--color-font-important-dark)}}@media (hover:hover){.jsoneditor .jsoneditor-value:hover{background-color:var(--color-base-100)!important}}@media not print{@media (hover:hover){.jsoneditor .jsoneditor-value:where(.dark,.dark *):hover{background-color:var(--color-base-800)!important}}}.jsoneditor .jsoneditor-value.jsoneditor-string,.jsoneditor .ace_string{color:var(--color-green-600)!important}@media not print{:is(.jsoneditor .jsoneditor-value.jsoneditor-string,.jsoneditor .ace_string):where(.dark,.dark *){color:var(--color-green-500)}}.jsoneditor .jsoneditor-value.jsoneditor-number,.jsoneditor .ace_numeric{color:var(--color-blue-600)}@media not print{:is(.jsoneditor .jsoneditor-value.jsoneditor-number,.jsoneditor .ace_numeric):where(.dark,.dark *){color:var(--color-blue-500)}}.jsoneditor .jsoneditor-value.jsoneditor-boolean,.jsoneditor .ace_boolean{color:var(--color-red-600)}@media not print{:is(.jsoneditor .jsoneditor-value.jsoneditor-boolean,.jsoneditor .ace_boolean):where(.dark,.dark *){color:var(--color-red-500)}}.ace-jsoneditor .ace_gutter{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-base-200);background-color:var(--color-base-100);color:var(--color-font-subtle-light)}@media not print{.ace-jsoneditor .ace_gutter:where(.dark,.dark *){color:var(--color-font-subtle-dark);border-color:var(--color-base-700);background-color:var(--color-base-800)}}.ace-jsoneditor .ace_gutter-active-line{background-color:#edb20033}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_gutter-active-line{background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)}}.ace-jsoneditor .ace_gutter-active-line{color:var(--color-font-important-light)}@media not print{.ace-jsoneditor .ace_gutter-active-line:where(.dark,.dark *){color:var(--color-font-important-dark);background-color:#edb20033}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_gutter-active-line:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)}}}.ace-jsoneditor .ace_active-line{background-color:#edb20033!important}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_active-line{background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)!important}}@media not print{.ace-jsoneditor .ace_active-line:where(.dark,.dark *){background-color:#edb20033!important}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_active-line:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-yellow-500) 20%, transparent)!important}}}.ace-jsoneditor .ace_variable{color:var(--color-font-important-light)}@media not print{.ace-jsoneditor .ace_variable:where(.dark,.dark *){color:var(--color-font-important-dark)}}.ace-jsoneditor .ace_indent-guide{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-base-200);background-image:none}@media not print{.ace-jsoneditor .ace_indent-guide:where(.dark,.dark *){border-color:var(--color-base-700)}}.ace-jsoneditor .ace_marker-layer .ace_selection{background-color:var(--color-base-900)}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_marker-layer .ace_selection{background-color:color-mix(in oklab, var(--color-base-900) 10%, transparent)}}@media not print{.ace-jsoneditor .ace_marker-layer .ace_selection:where(.dark,.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ace-jsoneditor .ace_marker-layer .ace_selection:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}}.jsoneditor .jsoneditor-statusbar{border-color:var(--color-base-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:26px;color:var(--color-font-subtle-light);line-height:26px}@media not print{.jsoneditor .jsoneditor-statusbar:where(.dark,.dark *){color:var(--color-font-subtle-dark);border-color:var(--color-base-700);background-color:var(--color-base-900)}}.jsoneditor-menu a.jsoneditor-poweredBy{font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-font-subtle-light)}@media not print{.jsoneditor-menu a.jsoneditor-poweredBy:where(.dark,.dark *){color:var(--color-font-subtle-dark)}}.jsoneditor-menu a.jsoneditor-poweredBy{opacity:1}.jsoneditor .jsoneditor-search .jsoneditor-results{font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.jsoneditor .jsoneditor-search .jsoneditor-frame{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200)}@media not print{.jsoneditor .jsoneditor-search .jsoneditor-frame:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.jsoneditor .jsoneditor-search .jsoneditor-frame input[type=text]{height:22px;font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:22px;line-height:22px;--tw-border-style:none!important;color:var(--color-font-default-light)!important;background-color:#0000!important;border-style:none!important}@media not print{.jsoneditor .jsoneditor-search .jsoneditor-frame input[type=text]:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh{margin-left:calc(var(--spacing) * 1);background-image:none}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;color:var(--color-base-400)!important;line-height:24px!important}@media not print{.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh:after:where(){color:var(--color-base-500)!important}}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-refresh:after{--tw-content:"search";content:var(--tw-content)}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next,.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous{color:var(--color-base-400);background-image:none}@media not print{:is(.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next,.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous):where(.dark,.dark *){color:var(--color-base-500)}}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next:after,.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-next:after{--tw-content:"keyboard_double_arrow_down";content:var(--tw-content)}.jsoneditor .jsoneditor-search .jsoneditor-frame .jsoneditor-previous:after{--tw-content:"keyboard_double_arrow_up";content:var(--tw-content)}.jsoneditor .jsoneditor-navigation-bar{border-color:var(--color-base-200);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:26px;line-height:26px;border-bottom-style:var(--tw-border-style)!important;background-color:var(--color-base-50)!important;padding-inline:calc(var(--spacing) * 2)!important;color:var(--color-font-default-light)!important;border-bottom-width:1px!important}@media not print{.jsoneditor .jsoneditor-navigation-bar:where(.dark,.dark *){color:var(--color-font-default-dark)!important;border-color:var(--color-base-700)!important;background-color:var(--color-base-800)!important}}.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator{font-size:0}.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;color:var(--color-font-subtle-light);direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block;vertical-align:-4px!important}@media not print{.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator:after:where(){color:var(--color-font-subtle-dark)}}.jsoneditor .jsoneditor-treepath .jsoneditor-treepath-seperator:after{--tw-content:"chevron_right";content:var(--tw-content)}.jsoneditor-menu{border-color:var(--color-base-200)!important;background-color:var(--color-base-50)!important}@media not print{.jsoneditor-menu:where(.dark,.dark *){border-color:var(--color-base-700)!important;background-color:var(--color-base-800)!important}}.jsoneditor .jsoneditor-menu>button{cursor:pointer;border-radius:var(--border-radius,6px);color:var(--color-font-important-light);border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:var(--color-base-200)!important;background-color:var(--color-white)!important;background-image:none!important}@media not print{.jsoneditor .jsoneditor-menu>button:where(.dark,.dark *){color:var(--color-font-important-dark)}}.jsoneditor .jsoneditor-menu>button{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media not print{.jsoneditor .jsoneditor-menu>button:where(.dark,.dark *){border-color:var(--color-base-700)!important;background-color:var(--color-base-900)!important}}.jsoneditor .jsoneditor-menu>button:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}.jsoneditor-menu>button.jsoneditor-format:after{--tw-content:"format_align_right";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-compact:after{--tw-content:"format_align_left";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-sort:after{--tw-content:"sort";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-transform:after{--tw-content:"transform";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-repair:after{--tw-content:"handyman";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-undo:after{--tw-content:"undo";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-redo:after{--tw-content:"redo";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-expand-all:after{--tw-content:"expand";content:var(--tw-content)}.jsoneditor-menu>button.jsoneditor-collapse-all:after{--tw-content:"compress";content:var(--tw-content)}.jsoneditor-menu>div.jsoneditor-modes>button{cursor:pointer;color:var(--color-font-default-light);--tw-border-style:none!important;font-family:var(--font-sans)!important;background-color:#0000!important;border-style:none!important}@media not print{.jsoneditor-menu>div.jsoneditor-modes>button:where(.dark,.dark *){color:var(--color-font-default-dark)}}@media (hover:hover){.jsoneditor-menu>div.jsoneditor-modes>button:hover{color:var(--color-font-important-light);background-image:none!important}@media not print{.jsoneditor-menu>div.jsoneditor-modes>button:hover:where(.dark,.dark *){color:var(--color-font-important-dark)}}}.jsoneditor-contextmenu .jsoneditor-menu{border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);overflow:clip;background-color:var(--color-white)!important;padding-block:calc(var(--spacing) * 1)!important;--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media not print{.jsoneditor-contextmenu .jsoneditor-menu:where(.dark,.dark *){border-color:var(--color-base-800);background-color:var(--color-base-800)!important}}.jsoneditor-contextmenu .jsoneditor-menu li{flex-direction:column;display:flex;position:relative}.jsoneditor-contextmenu .jsoneditor-menu button{margin-inline:calc(var(--spacing) * 1)!important;border-radius:var(--border-radius,6px)!important;width:auto!important;height:30px!important;padding-inline:calc(var(--spacing) * 3)!important;background-color:#0000!important;flex-grow:1!important}@media (hover:hover){.jsoneditor-contextmenu .jsoneditor-menu button:hover{background-color:var(--color-base-100)!important;color:var(--color-base-700)!important}}@media not print{@media (hover:hover){.jsoneditor-contextmenu .jsoneditor-menu button:where(.dark,.dark *):hover{background-color:var(--color-base-700)!important;color:var(--color-base-200)!important}}}.jsoneditor-contextmenu button .jsoneditor-icon{width:auto!important}.jsoneditor-contextmenu button .jsoneditor-text{padding:calc(var(--spacing) * 0);color:var(--color-font-default-light);font-family:var(--font-sans)!important;background-color:#0000!important}@media not print{.jsoneditor-contextmenu button .jsoneditor-text:where(.dark,.dark *){color:var(--color-font-default-dark)}}.jsoneditor-contextmenu .jsoneditor-selected{background-color:#0000!important}.jsoneditor-contextmenu .jsoneditor-selected>button>.jsoneditor-text{color:var(--color-primary-600)!important}@media not print{.jsoneditor-contextmenu .jsoneditor-selected>button>.jsoneditor-text:where(.dark,.dark *){color:var(--color-primary-500)!important}}.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{justify-content:center;top:calc(var(--spacing) * .5)!important;right:calc(var(--spacing) * .5)!important;margin:calc(var(--spacing) * 0)!important;padding:calc(var(--spacing) * 0)!important;align-items:center!important;display:flex!important}.jsoneditor .jsoneditor-selected,.jsoneditor .jsoneditor-highlight{background-color:var(--color-base-50)!important}@media not print{:is(.jsoneditor .jsoneditor-selected,.jsoneditor .jsoneditor-highlight):where(.dark,.dark *){background-color:var(--color-base-800)!important}}.jsoneditor div.jsoneditor-expand,.jsoneditor .jsoneditor-button.jsoneditor-collapsed,.jsoneditor .jsoneditor-button.jsoneditor-expanded,.jsoneditor .jsoneditor-dragarea,.jsoneditor .jsoneditor-contextmenu-button{--tw-outline-style:none!important;background-color:#0000!important;background-image:none!important;outline-style:none!important}.jsoneditor div.jsoneditor-expand:after,.jsoneditor .jsoneditor-dragarea:after,.jsoneditor .jsoneditor-contextmenu-button:after,.jsoneditor .jsoneditor-button.jsoneditor-collapsed:after,.jsoneditor .jsoneditor-button.jsoneditor-expanded:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;color:var(--color-base-400);direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}@media not print{:is():where(.dark,.dark *){color:var(--color-base-500)}}.jsoneditor div.jsoneditor-expand:after{--tw-content:"arrow_drop_down";content:var(--tw-content)}.jsoneditor .jsoneditor-contextmenu-button:after{--tw-content:"toolbar";content:var(--tw-content)}.jsoneditor .jsoneditor-dragarea:after{--tw-content:"drag_indicator";content:var(--tw-content)}.jsoneditor .jsoneditor-button.jsoneditor-collapsed:after{--tw-content:"keyboard_arrow_up";content:var(--tw-content)}.jsoneditor .jsoneditor-button.jsoneditor-expanded:after{--tw-content:"keyboard_arrow_down";content:var(--tw-content)}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);position:absolute;--tw-border-style:none!important;border-style:none!important}@media (hover:hover){.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand:hover{background-color:#0000!important}}.jsoneditor .jsoneditor-separator{border-color:var(--color-base-200)!important}@media not print{.jsoneditor .jsoneditor-separator:where(.dark,.dark *){border-color:var(--color-base-700)!important}}.jsoneditor-modal.pico-content{border-radius:var(--border-radius,6px)!important;--tw-border-style:none!important;font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important;border-style:none!important}@media not print{.jsoneditor-modal.pico-content:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}.jsoneditor-modal.pico-content{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media not print{.jsoneditor-modal.pico-content:where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-800)!important}}.jsoneditor-modal p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.jsoneditor-modal p a{color:var(--color-primary-600)!important}@media not print{.jsoneditor-modal p a:where(.dark,.dark *){color:var(--color-primary-500)!important}}.jsoneditor-modal .pico-modal-header{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-base-200);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));height:auto!important;padding-inline:calc(var(--spacing) * 3)!important;padding-block:calc(var(--spacing) * 1.5)!important;--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important;--tw-tracking:var(--tracking-tight)!important;letter-spacing:var(--tracking-tight)!important;color:var(--color-font-important-light)!important;background-color:#0000!important}@media not print{.jsoneditor-modal .pico-modal-header:where(.dark,.dark *){border-color:var(--color-base-700);color:var(--color-font-important-dark)!important}}.jsoneditor-modal .pico-modal-contents{display:block;margin-top:calc(var(--spacing) * 3)!important}.jsoneditor-modal .jsoneditor-jmespath-label{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;color:var(--color-font-important-light)!important}@media not print{.jsoneditor-modal .jsoneditor-jmespath-label:where(.dark,.dark *){color:var(--color-font-important-dark)!important}}.jsoneditor-modal.pico-content .pico-close{margin-top:-13px;margin-right:calc(var(--spacing) * 2);color:var(--color-base-400)!important;font-size:0!important}@media not print{.jsoneditor-modal.pico-content .pico-close:where(.dark,.dark *){color:var(--color-base-500)!important}}@media (hover:hover){.jsoneditor-modal.pico-content .pico-close:hover{color:var(--color-font-important-light)!important}@media not print{.jsoneditor-modal.pico-content .pico-close:hover:where(.dark,.dark *){color:var(--color-font-important-dark)!important}}}.jsoneditor-modal.pico-content .pico-close:after{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-moz-font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;--tw-content:"close";content:var(--tw-content);direction:ltr;font-family:Material Symbols Outlined;font-size:16px;font-style:normal;font-weight:400;line-height:1;display:inline-block;--tw-leading:24px!important;line-height:24px!important}.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea{min-height:38px;min-width:var(--container-sm);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);color:var(--color-font-default-light)}@media not print{:is(.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea):where(.dark,.dark *){color:var(--color-font-default-dark)}}.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-outline-style:none;outline-style:none}@media not print{:is(.jsoneditor-modal.pico-content select,.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea):where(.dark,.dark *){border-color:var(--color-base-700);background-color:var(--color-base-900)}}.jsoneditor-modal.pico-content #query,.jsoneditor-modal.pico-content textarea{padding-block:calc(var(--spacing) * 2)}.jsoneditor-modal.pico-content input[type=submit]{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--border-radius,6px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-base-200);background-color:var(--color-primary-600);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-white);border-color:#0000;display:flex;position:relative}.jsoneditor-modal.pico-content .jsoneditor-modal-actions{margin:calc(var(--spacing) * 0)}.jsoneditor-modal.pico-content form{width:570px;font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important}@media not print{.jsoneditor-modal.pico-content form:where(.dark,.dark *){color:var(--color-font-default-dark)!important}}.jsoneditor-modal.pico-content .jsoneditor-button-group{justify-content:flex-end;gap:calc(var(--spacing) * 2);flex-direction:row;display:flex}.jsoneditor-modal-input input[type=button].jsoneditor-button-asc,.jsoneditor-modal-input input[type=button].jsoneditor-button-desc{cursor:pointer;border-radius:var(--border-radius,6px)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:var(--color-base-200)!important;background-color:var(--color-base-50)!important;height:38px!important;font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important}@media not print{:is(.jsoneditor-modal-input input[type=button].jsoneditor-button-asc,.jsoneditor-modal-input input[type=button].jsoneditor-button-desc):where(.dark,.dark *){color:var(--color-font-default-dark)!important;border-color:var(--color-base-700)!important;background-color:var(--color-base-800)!important}}.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{border-color:var(--color-primary-600)!important;background-color:var(--color-primary-600)!important;color:var(--color-white)!important}.jsoneditor-modal table td,.jsoneditor-modal table th{font-family:var(--font-sans)!important;color:var(--color-font-default-light)!important}@media not print{:is(.jsoneditor-modal table td,.jsoneditor-modal table th):where(.dark,.dark *){color:var(--color-font-default-dark)!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-text-shadow-color{syntax:"*";inherits:false}@property --tw-text-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f501cdf..da2d95c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,6 +23,7 @@ services: - ./nginx/certs:/etc/nginx/certs - ./nginx/logs:/var/log/nginx - ./app/logs:/var/log/keywarden + - ./data/ca-keys:/var/lib/keywarden/ca-keys ports: - "443:443" depends_on: diff --git a/evidence/FAST_FIXES_STATUS.md b/evidence/FAST_FIXES_STATUS.md new file mode 100644 index 0000000..dc33e73 --- /dev/null +++ b/evidence/FAST_FIXES_STATUS.md @@ -0,0 +1,40 @@ +# Fast Fix Status + +This tracks the fastest issues and where reproducible evidence now lives. + +## Completed in this pass + +- RBAC wording aligned to implemented roles (`administrator`, `user`, alias `admin`): + - [users.py](/opt/compose/keywarden/app/keywarden/api/routers/users.py#L15) + - [access.py](/opt/compose/keywarden/app/keywarden/api/routers/access.py#L168) + - [agent.py](/opt/compose/keywarden/app/keywarden/api/routers/agent.py#L214) + - [API_DOCS.md](/opt/compose/keywarden/API_DOCS.md#L39) +- Repeatable evidence collector added: + - [collect_evidence.sh](/opt/compose/keywarden/scripts/collect_evidence.sh) +- Automated operational metrics extraction added: + - [summarize_operational_metrics.sh](/opt/compose/keywarden/scripts/summarize_operational_metrics.sh) +- Diagram sources added (Mermaid): + - [architecture.mmd](/opt/compose/keywarden/evidence/diagrams/architecture.mmd) + - [deployment.mmd](/opt/compose/keywarden/evidence/diagrams/deployment.mmd) + - [erd.mmd](/opt/compose/keywarden/evidence/diagrams/erd.mmd) + - [access-sync-flow.mmd](/opt/compose/keywarden/evidence/diagrams/access-sync-flow.mmd) +- Manual evidence templates added: + - [browser-matrix.md](/opt/compose/keywarden/evidence/templates/browser-matrix.md) + - [security-test-report.md](/opt/compose/keywarden/evidence/templates/security-test-report.md) + - [standards-checklist.md](/opt/compose/keywarden/evidence/templates/standards-checklist.md) + +## Generated baseline run + +- Run folder: [20260416T213000Z](/opt/compose/keywarden/evidence/runs/20260416T213000Z) +- Summary: [SUMMARY.md](/opt/compose/keywarden/evidence/runs/20260416T213000Z/SUMMARY.md) +- Test output: [django-tests.txt](/opt/compose/keywarden/evidence/runs/20260416T213000Z/tests/django-tests.txt) +- Test failure summary: [django-tests-failures-summary.txt](/opt/compose/keywarden/evidence/runs/20260416T213000Z/tests/django-tests-failures-summary.txt) +- Coverage text report: [coverage-report.txt](/opt/compose/keywarden/evidence/runs/20260416T213000Z/tests/coverage-report.txt) +- Coverage XML: [coverage-xml.xml](/opt/compose/keywarden/evidence/runs/20260416T213000Z/tests/coverage-xml.xml) +- Agent endpoint counts: [agent-endpoint-status-counts.txt](/opt/compose/keywarden/evidence/runs/20260416T213000Z/logs/agent-endpoint-status-counts.txt) +- Operational evaluation summary: [operational-summary.md](/opt/compose/keywarden/evidence/runs/20260416T225300Z/evaluation/operational-summary.md) + +## Still pending (not fast, or partly manual) + +- Screenshot capture for dissertation figures (manual execution, now templated). +- Deep security hardening tasks (shell host-key model, strict mTLS enforcement, SPOF mitigation, push-based revocation). diff --git a/evidence/README.md b/evidence/README.md new file mode 100644 index 0000000..23897f9 --- /dev/null +++ b/evidence/README.md @@ -0,0 +1,80 @@ +# Evidence Pack + +This folder is for dissertation evidence that can be regenerated on demand. + +## Quick Start + +Run from repo root: + +```bash +bash scripts/collect_evidence.sh +``` + +Optional custom run id: + +```bash +bash scripts/collect_evidence.sh 2026-04-16-baseline +``` + +Outputs are written to `evidence/runs//`. + +To autofill templates for an existing run: + +```bash +bash scripts/autofill_evidence_templates.sh +``` + +To capture UI screenshots for an existing run: + +```bash +bash scripts/capture_ui_screenshots.sh +``` + +To include screenshot capture during evidence collection: + +```bash +KEYWARDEN_EVIDENCE_CAPTURE_SCREENSHOTS=1 bash scripts/collect_evidence.sh +``` + +## What Is Collected + +- Git and environment snapshot (`meta/`) +- Docker Compose state and container runtime info (`runtime/`) +- Django test execution output (`tests/`) +- Coverage summary + XML when available (`tests/coverage-report.txt`, `tests/coverage-xml.xml`) +- Log extracts and endpoint/status summaries (`logs/`) +- Derived operational metrics and summary (`evaluation/`) +- RBAC/role-claim grep evidence (`docs/`) +- Copy of diagram sources and report templates (`diagrams/`, `templates/`) +- Autofilled template versions in each run (`templates/*.md`) +- Optional automated UI screenshots (`screenshots/`) + +## Operational Metrics + +The collector now derives evaluation-friendly metrics from `agent-access` logs: + +- heartbeat intervals per server +- endpoint/status distributions per server +- heartbeat error-to-recovery timings +- markdown summary for direct report inclusion + +Artifacts are written to `evidence/runs//evaluation/`. + +## Diagram Sources + +Mermaid sources live in `evidence/diagrams/`: + +- `architecture.mmd` +- `deployment.mmd` +- `erd.mmd` +- `access-sync-flow.mmd` + +These are plain text and version-controlled, so they are easy to revise and re-render. + +## Manual Evidence Templates + +Templates for remaining manual work are in `evidence/templates/`: + +- browser test matrix +- security test report +- standards checklist (OWASP/NIST-oriented) diff --git a/evidence/diagrams/access-sync-flow.mmd b/evidence/diagrams/access-sync-flow.mmd new file mode 100644 index 0000000..4b9f35d --- /dev/null +++ b/evidence/diagrams/access-sync-flow.mmd @@ -0,0 +1,19 @@ +sequenceDiagram + participant U as User + participant K as Keywarden + participant A as Agent + participant S as Server + + U->>K: Upload SSH public key + K->>K: Issue SSH user certificate + U->>K: Request server access + Admin->>K: Approve access request + A->>K: Poll heartbeat/accounts/ssh-ca + K-->>A: Approved users + CA public key + A->>S: Enforce accounts + SSH CA trust + U->>S: SSH using key + certificate + K->>K: Revoke/expire access + A->>K: Next poll cycle + K-->>A: Updated account state + A->>S: Remove or lock account access + diff --git a/evidence/diagrams/architecture.mmd b/evidence/diagrams/architecture.mmd new file mode 100644 index 0000000..04401cb --- /dev/null +++ b/evidence/diagrams/architecture.mmd @@ -0,0 +1,13 @@ +flowchart LR + User[User Browser] --> Web[Keywarden UI/API] + Admin[Admin Browser] --> Web + Web <--> IdP[OIDC Provider] + Web --> PG[(PostgreSQL)] + Web --> Cache[(Valkey/Redis)] + Web --> CA[(SSH User CA)] + Agent[Linux Agent] --> Web + Agent --> SSH[Managed Server SSHD] + User --> SSH + Web -. optional .-> Shell[Browser Shell WS Proxy] + Shell --> SSH + diff --git a/evidence/diagrams/deployment.mmd b/evidence/diagrams/deployment.mmd new file mode 100644 index 0000000..6809d26 --- /dev/null +++ b/evidence/diagrams/deployment.mmd @@ -0,0 +1,19 @@ +flowchart TB + subgraph DockerCompose + Nginx[Nginx] + Gunicorn[Gunicorn Django] + Daphne[Daphne WebSocket] + Celery[Celery Worker/Beat] + Redis[Valkey/Redis] + end + + Nginx --> Gunicorn + Nginx --> Daphne + Gunicorn --> PG[(Keywarden PostgreSQL)] + Celery --> PG + Gunicorn --> Redis + Celery --> Redis + Agent[Agent on Managed Host] --> Nginx + Browser[User/Admin Browser] --> Nginx + IdP[Authentik/OIDC] --> Nginx + diff --git a/evidence/diagrams/erd.mmd b/evidence/diagrams/erd.mmd new file mode 100644 index 0000000..2fe51e3 --- /dev/null +++ b/evidence/diagrams/erd.mmd @@ -0,0 +1,11 @@ +erDiagram + USER ||--o{ SSHKEY : owns + SSHKEY ||--o{ SSHCERTIFICATE : signs + USER ||--o{ ACCESSREQUEST : requests + SERVER ||--o{ ACCESSREQUEST : targets + SERVER ||--o{ SERVERACCOUNT : contains + USER ||--o{ SERVERACCOUNT : maps_to + SERVER ||--o{ SERVERAUDITLOG : ingests + SERVER ||--o{ TELEMETRYEVENT : emits + USER ||--o{ AUDITLOG : performs + diff --git a/evidence/templates/browser-matrix.md b/evidence/templates/browser-matrix.md new file mode 100644 index 0000000..1c5c599 --- /dev/null +++ b/evidence/templates/browser-matrix.md @@ -0,0 +1,28 @@ +# Browser Test Matrix + +## How To Complete + +1. Copy this template into a run folder (or let `collect_evidence.sh` do it). +2. Fill metadata first: date, URL, commit. +3. For each browser cell, use one of: `PASS`, `FAIL`, `PARTIAL`, `N/A`. +4. Add a short symptom in `Notes` for every non-pass result. +5. Add exact artifact paths in `Evidence Path` (screenshots/HAR/console output). + +## Metadata + +Date (UTC): +Environment URL: +Commit: +Run ID: + +| Area | Chrome | Firefox | Safari | Edge | Notes | Evidence Path | +|---|---|---|---|---|---|---| +| Login / OIDC | | | | | | | +| Dashboard | | | | | | | +| Key upload | | | | | | | +| Server registration | | | | | | | +| Access approve/revoke | | | | | | | +| Audit logs | | | | | | | +| Server detail + heartbeat | | | | | | | +| Browser shell page render | | | | | | | +| Browser shell interactive session | | | | | | | diff --git a/evidence/templates/security-test-report.md b/evidence/templates/security-test-report.md new file mode 100644 index 0000000..5215008 --- /dev/null +++ b/evidence/templates/security-test-report.md @@ -0,0 +1,50 @@ +# Security Test Report + +## How To Complete + +1. Fill metadata fields and keep them aligned with the evidence run ID. +2. For each test row, set `Pass/Fail` to `PASS`, `FAIL`, `PARTIAL`, or `N/A`. +3. Put concrete observations in `Actual` (status code, rejection text, behavior). +4. Always link an evidence artifact path for each completed row. +5. Keep findings evidence-backed; avoid conclusions without artifacts. + +## Metadata + +Date (UTC): +Environment URL: +Commit: +Run ID: +Tester: + +## Scope + +- Authentication and session handling +- Authorization boundaries +- Token handling +- Input validation +- File/command safety +- WebSocket controls + +## Test Cases + +| ID | Area | Test | Expected | Actual | Pass/Fail | Evidence Path | +|---|---|---|---|---|---|---| +| SEC-01 | Input validation | Submit malformed SSH key payload | 4xx with validation error | | | | +| SEC-02 | Auth bypass | Call admin API as non-admin | 403 | | | | +| SEC-03 | Token misuse | Use revoked/invalid agent token | 401/403 | | | | +| SEC-04 | Object permission | Access server not granted to user | 403 | | | | +| SEC-05 | Session/CSRF | Unsafe method without CSRF/session validity | Blocked | | | | +| SEC-06 | File handling | Upload invalid file/path content | Rejected safely | | | | +| SEC-07 | Command injection | Shell input escaping checks | No command injection path | | | | +| SEC-08 | WebSocket shell auth | Open shell WS without scope | Rejected | | | | +| SEC-09 | Host key verification | Shell verifies host identity | Verified or documented gap | | | | + +## Findings + +- High: +- Medium: +- Low: + +## Follow-up Actions + +- diff --git a/evidence/templates/standards-checklist.md b/evidence/templates/standards-checklist.md new file mode 100644 index 0000000..9f42414 --- /dev/null +++ b/evidence/templates/standards-checklist.md @@ -0,0 +1,44 @@ +# Standards Checklist + +## How To Complete + +1. Fill metadata and ensure it matches the evidence run folder. +2. Use one status value per row: `Meets`, `Partially Meets`, `Does Not Meet`, `Not Evaluated`. +3. Add at least one concrete artifact path for each status decision. +4. In `Notes`, explain why the evidence is sufficient or insufficient. +5. Keep `Gap Summary` focused on what still blocks compliance confidence. + +## Metadata + +Date (UTC): +Environment URL: +Commit: +Run ID: + +## OWASP ASVS (selected) + +| Control | Requirement | Status | Evidence Path | Notes | +|---|---|---|---|---| +| V1 | Architecture/design documented | | | | +| V2 | Authentication controls | | | | +| V3 | Session management | | | | +| V4 | Access control enforcement | | | | +| V5 | Input validation and encoding | | | | +| V7 | Error handling and logging | | | | +| V8 | Data protection at rest/in transit | | | | +| V10 | Malicious code / injection resistance | | | | + +## NIST SP 800-53 / 800-63-aligned checks (selected) + +| Control Family | Requirement | Status | Evidence Path | Notes | +|---|---|---|---|---| +| AC | Least privilege / access enforcement | | | | +| AU | Auditable events and retention | | | | +| IA | Identity proofing and authentication federation | | | | +| SC | Cryptographic protections and key handling | | | | +| CM | Configuration and change management | | | | +| CP | Resilience / single point of failure acknowledgement | | | | + +## Gap Summary + +- diff --git a/nginx/configs/nginx.conf b/nginx/configs/nginx.conf index a595559..982c312 100644 --- a/nginx/configs/nginx.conf +++ b/nginx/configs/nginx.conf @@ -65,6 +65,7 @@ http { ssl_certificate_key /certs/key.pem; include options-ssl.conf; include options-https-headers.conf; + ssl_verify_client optional_no_ca; client_max_body_size 50M; limit_conn perip_conn 30; @@ -93,6 +94,10 @@ http { proxy_set_header X-Forwarded-For $forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Keywarden-TLS-Client-Verify $ssl_client_verify; + proxy_set_header X-Keywarden-TLS-Client-Cert $ssl_client_escaped_cert; + proxy_set_header X-Keywarden-TLS-Client-Fingerprint $ssl_client_fingerprint; + proxy_set_header X-Keywarden-TLS-Client-Serial $ssl_client_serial; } location / { diff --git a/nginx/configs/nginx.conf.template b/nginx/configs/nginx.conf.template index cc6e38a..a7c8b37 100644 --- a/nginx/configs/nginx.conf.template +++ b/nginx/configs/nginx.conf.template @@ -68,6 +68,9 @@ http { ssl_certificate_key /etc/nginx/certs/key.pem; include options-ssl.conf; include options-https-headers.conf; + # Request client certificates at TLS handshake; app-layer auth decides + # whether a cert is required for a specific endpoint. + ssl_verify_client optional_no_ca; client_max_body_size 50M; limit_conn perip_conn 30; @@ -109,6 +112,10 @@ http { proxy_set_header X-Forwarded-For $forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Keywarden-TLS-Client-Verify $ssl_client_verify; + proxy_set_header X-Keywarden-TLS-Client-Cert $ssl_client_escaped_cert; + proxy_set_header X-Keywarden-TLS-Client-Fingerprint $ssl_client_fingerprint; + proxy_set_header X-Keywarden-TLS-Client-Serial $ssl_client_serial; proxy_read_timeout 1h; } diff --git a/requirements.txt b/requirements.txt index 3c3ed03..68bf251 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,3 +22,4 @@ whitenoise>=6.6 cookiecutter>=2.6 distlib>=0.3.8 email-validator>=2.1.0 +coverage>=7.6.0 diff --git a/scripts/autofill_evidence_templates.sh b/scripts/autofill_evidence_templates.sh new file mode 100755 index 0000000..8fd219d --- /dev/null +++ b/scripts/autofill_evidence_templates.sh @@ -0,0 +1,305 @@ +#!/usr/bin/env bash +set -u -o pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +RUN_ARG="${1:-}" + +if [ -n "${RUN_ARG}" ]; then + if [ -d "${RUN_ARG}" ]; then + RUN_DIR="${RUN_ARG}" + else + RUN_DIR="${ROOT_DIR}/evidence/runs/${RUN_ARG}" + fi +else + RUN_DIR="$(ls -1dt "${ROOT_DIR}"/evidence/runs/* 2>/dev/null | head -n 1)" +fi + +if [ -z "${RUN_DIR:-}" ] || [ ! -d "${RUN_DIR}" ]; then + echo "Run directory not found." >&2 + exit 1 +fi + +RUN_ID="$(basename "${RUN_DIR}")" +TEMPLATE_DIR="${RUN_DIR}/templates" +mkdir -p "${TEMPLATE_DIR}" + +SUMMARY_FILE="${RUN_DIR}/SUMMARY.md" +TEST_FILE="${RUN_DIR}/tests/django-tests.txt" +FAIL_SUMMARY_FILE="${RUN_DIR}/tests/django-tests-failures-summary.txt" +COVERAGE_FILE="${RUN_DIR}/tests/coverage-report.txt" +LOG_COUNTS_FILE="${RUN_DIR}/logs/agent-endpoint-status-counts.txt" +COMMIT_FILE="${RUN_DIR}/meta/git-head.txt" +SCREENSHOT_DIR="${RUN_DIR}/screenshots" + +utc_time="$(grep -m1 '^- UTC Time:' "${SUMMARY_FILE}" 2>/dev/null | sed -E 's/.*`([^`]*)`.*/\1/')" +if [ -z "${utc_time}" ]; then + utc_time="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" +fi + +commit_full="$(head -n 1 "${COMMIT_FILE}" 2>/dev/null || true)" +if [ -z "${commit_full}" ]; then + commit_full="unknown" +fi +commit_short="$(printf "%s" "${commit_full}" | cut -c1-12)" + +env_domain="$(grep -m1 '^KEYWARDEN_DOMAIN=' "${ROOT_DIR}/.env" 2>/dev/null | cut -d'=' -f2-)" +if [ -z "${env_domain}" ]; then + env_domain="$(grep -m1 '^KEYWARDEN_DOMAIN=' "${ROOT_DIR}/.env.example" 2>/dev/null | cut -d'=' -f2-)" +fi +if [ -z "${env_domain}" ]; then + env_url="(set manually)" +elif printf "%s" "${env_domain}" | grep -qE '^https?://'; then + env_url="${env_domain}" +else + env_url="https://${env_domain}" +fi + +tests_line="$(grep -E '^Ran [0-9]+ tests? in' "${TEST_FILE}" 2>/dev/null | tail -n 1)" +tests_status="$(grep -E '^(OK|FAILED.*)$' "${TEST_FILE}" 2>/dev/null | tail -n 1)" +if [ -z "${tests_line}" ]; then + tests_line="Ran ? tests in ?s" +fi +if [ -z "${tests_status}" ]; then + tests_status="Unknown" +fi + +failure_summary="$(cat "${FAIL_SUMMARY_FILE}" 2>/dev/null || true)" +if [ -z "${failure_summary}" ]; then + failure_summary="No failure summary captured." +fi + +coverage_total_line="$(grep -E '^TOTAL[[:space:]]+' "${COVERAGE_FILE}" 2>/dev/null | tail -n 1)" +if [ -n "${coverage_total_line}" ]; then + coverage_stmts="$(printf "%s\n" "${coverage_total_line}" | awk '{print $2}')" + coverage_miss="$(printf "%s\n" "${coverage_total_line}" | awk '{print $3}')" + coverage_pct="$(printf "%s\n" "${coverage_total_line}" | awk '{print $4}')" +else + coverage_stmts="?" + coverage_miss="?" + coverage_pct="N/A" +fi + +host_key_status="Manual" +host_key_note="Check shell SSH options in source." +if grep -q 'StrictHostKeyChecking=no' "${ROOT_DIR}/app/apps/servers/consumers.py" 2>/dev/null; then + host_key_status="FAIL (auto)" + host_key_note="Strict host key checking is disabled in shell command builder." +elif grep -q 'UserKnownHostsFile=/dev/null' "${ROOT_DIR}/app/apps/servers/consumers.py" 2>/dev/null \ + || grep -q 'GlobalKnownHostsFile=/dev/null' "${ROOT_DIR}/app/apps/servers/consumers.py" 2>/dev/null; then + host_key_status="FAIL (auto)" + host_key_note="Known-hosts verification is bypassed via /dev/null host-key files." +elif grep -q 'StrictHostKeyChecking=' "${ROOT_DIR}/app/apps/servers/consumers.py" 2>/dev/null \ + && grep -q 'UpdateHostKeys=yes' "${ROOT_DIR}/app/apps/servers/consumers.py" 2>/dev/null; then + host_key_status="PASS (auto)" + host_key_note="Host-key checking is enabled and host key updates are requested." +fi + +test_result() { + local test_name="$1" + if grep -q "${test_name}.*ok" "${TEST_FILE}" 2>/dev/null; then + printf "PASS (auto)" + return + fi + if grep -q "${test_name}.*FAIL" "${TEST_FILE}" 2>/dev/null; then + printf "FAIL (auto)" + return + fi + if grep -q "${test_name}" "${TEST_FILE}" 2>/dev/null; then + printf "Observed (review)" + return + fi + printf "Not covered" +} + +sec03_status="$(test_result "test_ingest_logs_rejects_mtls_cert_for_different_server")" +sec03_actual="Agent mTLS certificate/server binding mismatch test present in Django suite." +sec04_status="$(test_result "test_detail_view_denied_when_users_scope_not_granted")" +sec04_actual="Permission-boundary denial test present in Django suite." +sec08_status="Manual" +sec08_actual="No dedicated WebSocket auth negative test was auto-detected." +sec05_status="$(test_result "test_admin_dashboard_requires_admin")" +sec05_actual="Unauthorized UI route redirects to disguised target (dashboard)." + +append_path() { + local current="$1" + local next="$2" + if [ -z "${next}" ]; then + printf "%s" "${current}" + return + fi + if [ -z "${current}" ]; then + printf "%s" "${next}" + return + fi + printf "%s, %s" "${current}" "${next}" +} + +screenshot_count="0" +if [ -d "${SCREENSHOT_DIR}" ]; then + screenshot_count="$(find "${SCREENSHOT_DIR}" -maxdepth 1 -type f -name '*.png' | wc -l | tr -d ' ')" +fi + +e_login="" +[ -f "${SCREENSHOT_DIR}/01-login-entry.png" ] && e_login="$(append_path "${e_login}" "screenshots/01-login-entry.png")" +[ -f "${SCREENSHOT_DIR}/02-login-native.png" ] && e_login="$(append_path "${e_login}" "screenshots/02-login-native.png")" +e_dashboard="" +[ -f "${SCREENSHOT_DIR}/03-dashboard.png" ] && e_dashboard="screenshots/03-dashboard.png" +e_key_upload="" +[ -f "${SCREENSHOT_DIR}/04-profile.png" ] && e_key_upload="screenshots/04-profile.png" +e_server_reg="" +[ -f "${SCREENSHOT_DIR}/07-admin-server-reg.png" ] && e_server_reg="screenshots/07-admin-server-reg.png" +e_access_queue="" +[ -f "${SCREENSHOT_DIR}/06-admin-dashboard.png" ] && e_access_queue="screenshots/06-admin-dashboard.png" +e_audit="" +[ -f "${SCREENSHOT_DIR}/09-server-audit.png" ] && e_audit="screenshots/09-server-audit.png" +e_server_detail="" +[ -f "${SCREENSHOT_DIR}/08-server-detail.png" ] && e_server_detail="screenshots/08-server-detail.png" +e_shell="" +[ -f "${SCREENSHOT_DIR}/11-server-shell.png" ] && e_shell="screenshots/11-server-shell.png" + +cat > "${TEMPLATE_DIR}/browser-matrix.md" < "${TEMPLATE_DIR}/security-test-report.md" < "${TEMPLATE_DIR}/standards-checklist.md" </dev/null | head -n 1)" + RUN_ID="$(basename "${RUN_DIR}")" +fi + +if [ -z "${RUN_DIR:-}" ] || [ ! -d "${RUN_DIR}" ]; then + echo "Run directory not found." >&2 + exit 1 +fi + +BASE_URL="${KEYWARDEN_SCREENSHOT_BASE_URL:-}" +ADMIN_USER="${KEYWARDEN_ADMIN_USERNAME:-}" +ADMIN_EMAIL="${KEYWARDEN_ADMIN_EMAIL:-}" +ADMIN_PASS="${KEYWARDEN_ADMIN_PASSWORD:-}" +SERVER_ID="${KEYWARDEN_SCREENSHOT_SERVER_ID:-}" + +if [ -f "${ROOT_DIR}/.env" ]; then + if [ -z "${BASE_URL}" ]; then + DOMAIN_LINE="$(grep -m1 '^KEYWARDEN_DOMAIN=' "${ROOT_DIR}/.env" || true)" + DOMAIN_VALUE="${DOMAIN_LINE#KEYWARDEN_DOMAIN=}" + if [ -n "${DOMAIN_VALUE}" ]; then + if printf "%s" "${DOMAIN_VALUE}" | grep -qE '^https?://'; then + BASE_URL="${DOMAIN_VALUE}" + else + BASE_URL="https://${DOMAIN_VALUE}" + fi + fi + fi + if [ -z "${ADMIN_USER}" ]; then + USER_LINE="$(grep -m1 '^KEYWARDEN_ADMIN_USERNAME=' "${ROOT_DIR}/.env" || true)" + ADMIN_USER="${USER_LINE#KEYWARDEN_ADMIN_USERNAME=}" + fi + if [ -z "${ADMIN_EMAIL}" ]; then + EMAIL_LINE="$(grep -m1 '^KEYWARDEN_ADMIN_EMAIL=' "${ROOT_DIR}/.env" || true)" + ADMIN_EMAIL="${EMAIL_LINE#KEYWARDEN_ADMIN_EMAIL=}" + fi + if [ -z "${ADMIN_PASS}" ]; then + PASS_LINE="$(grep -m1 '^KEYWARDEN_ADMIN_PASSWORD=' "${ROOT_DIR}/.env" || true)" + ADMIN_PASS="${PASS_LINE#KEYWARDEN_ADMIN_PASSWORD=}" + fi +fi + +if [ -z "${BASE_URL}" ]; then + BASE_URL="https://localhost" +fi +if [ -z "${ADMIN_USER}" ]; then + ADMIN_USER="admin" +fi +if [ -z "${ADMIN_EMAIL}" ]; then + ADMIN_EMAIL="admin@example.com" +fi +if [ -z "${ADMIN_PASS}" ]; then + echo "Missing KEYWARDEN_ADMIN_PASSWORD (env or .env)." >&2 + exit 1 +fi +if [ -z "${SERVER_ID}" ] && [ -f "${RUN_DIR}/logs/agent-endpoint-status-counts.txt" ]; then + SERVER_ID="$( + sed -n 's#.*servers/\([0-9][0-9]*\)/.*#\1#p' "${RUN_DIR}/logs/agent-endpoint-status-counts.txt" \ + | head -n 1 + )" +fi + +CONTAINER_TOOL_DIR="/tmp/keywarden-evidence-tools" +CONTAINER_OUT_DIR="/app/.evidence-screens/${RUN_ID}" +HOST_TMP_OUT_DIR="${ROOT_DIR}/app/.evidence-screens/${RUN_ID}" +HOST_FINAL_OUT_DIR="${RUN_DIR}/screenshots" + +docker compose exec -T \ + -e KEYWARDEN_SCREENSHOT_BASE_URL="${BASE_URL}" \ + -e KEYWARDEN_ADMIN_USERNAME="${ADMIN_USER}" \ + -e KEYWARDEN_ADMIN_EMAIL="${ADMIN_EMAIL}" \ + -e KEYWARDEN_ADMIN_PASSWORD="${ADMIN_PASS}" \ + -e KEYWARDEN_SCREENSHOT_SERVER_ID="${SERVER_ID}" \ + keywarden sh -lc " + set -eu + mkdir -p '${CONTAINER_TOOL_DIR}' '${CONTAINER_OUT_DIR}' + if [ ! -f '${CONTAINER_TOOL_DIR}/package.json' ]; then + cd '${CONTAINER_TOOL_DIR}' + npm init -y >/dev/null 2>&1 + npm pkg set private=true >/dev/null 2>&1 + npm pkg set type=module >/dev/null 2>&1 + fi + if [ ! -d '${CONTAINER_TOOL_DIR}/node_modules/playwright' ]; then + cd '${CONTAINER_TOOL_DIR}' + npm install --silent playwright@1.53.0 + fi + ln -sfn '${CONTAINER_TOOL_DIR}/node_modules' /app/scripts/node_modules + cd '${CONTAINER_TOOL_DIR}' + if [ ! -f '${CONTAINER_TOOL_DIR}/.deps-ok' ]; then + if ! npx playwright install-deps chromium >/dev/null 2>&1; then + apt-get update >/dev/null + apt-get install -y --no-install-recommends \ + libglib2.0-0 \ + libdbus-1-3 \ + libatk1.0-0 \ + libatk-bridge2.0-0 \ + libatspi2.0-0 \ + libcups2 \ + libxcb1 \ + libxkbcommon0 \ + libx11-6 \ + libxcomposite1 \ + libxdamage1 \ + libxext6 \ + libxfixes3 \ + libxrandr2 \ + libgbm1 \ + libcairo2 \ + libpango-1.0-0 \ + libasound2 >/dev/null + fi + touch '${CONTAINER_TOOL_DIR}/.deps-ok' + fi + npx playwright install chromium >/dev/null + cd /app + python manage.py shell -c \"import os; from django.contrib.auth import get_user_model; U=get_user_model(); username=os.environ['KEYWARDEN_ADMIN_USERNAME']; email=os.environ.get('KEYWARDEN_ADMIN_EMAIL','admin@example.com'); password=os.environ['KEYWARDEN_ADMIN_PASSWORD']; user, created = U.objects.get_or_create(username=username, defaults={'email': email}); user.email = ((user.email or email) if created else user.email); user.is_active=True; user.is_staff=True; user.is_superuser=True; user.set_password(password); user.save(); print('ensured-screenshot-admin', user.username, 'created=' + str(created))\" + node /app/scripts/capture_ui_screenshots.mjs '${CONTAINER_OUT_DIR}' + " + +rm -rf "${HOST_FINAL_OUT_DIR}" +mkdir -p "${HOST_FINAL_OUT_DIR}" +cp -R "${HOST_TMP_OUT_DIR}/." "${HOST_FINAL_OUT_DIR}/" +ls -1 "${HOST_FINAL_OUT_DIR}" > "${HOST_FINAL_OUT_DIR}/listing.txt" + +echo "Screenshots captured for run ${RUN_ID}: ${HOST_FINAL_OUT_DIR}" diff --git a/scripts/collect_evidence.sh b/scripts/collect_evidence.sh new file mode 100755 index 0000000..986881f --- /dev/null +++ b/scripts/collect_evidence.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env bash +set -u -o pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +RUN_ID="${1:-$(date -u +%Y%m%dT%H%M%SZ)}" +OUT_DIR="${ROOT_DIR}/evidence/runs/${RUN_ID}" +SUMMARY_FILE="${OUT_DIR}/SUMMARY.md" + +mkdir -p "${OUT_DIR}"/{meta,runtime,tests,logs,docs} + +write_summary() { + printf "%s\n" "${1-}" >> "${SUMMARY_FILE}" +} + +run_capture() { + local rel_path="$1" + shift + local target="${OUT_DIR}/${rel_path}" + local target_dir + target_dir="$(dirname "${target}")" + mkdir -p "${target_dir}" + if "$@" > "${target}" 2>&1; then + write_summary "- OK: \`${rel_path}\`" + return 0 + else + local rc=$? + write_summary "- FAIL(${rc}): \`${rel_path}\`" + return "${rc}" + fi +} + +write_summary "# Evidence Run" +write_summary +write_summary "- Run ID: \`${RUN_ID}\`" +write_summary "- UTC Time: \`$(date -u +"%Y-%m-%dT%H:%M:%SZ")\`" +write_summary "- Host: \`$(hostname)\`" +write_summary "- Root: \`${ROOT_DIR}\`" +write_summary +write_summary "## Capture Status" + +run_capture "meta/git-head.txt" git -C "${ROOT_DIR}" rev-parse HEAD +run_capture "meta/git-status.txt" git -C "${ROOT_DIR}" status --short +run_capture "meta/git-log-20.txt" git -C "${ROOT_DIR}" log -n 20 --date=iso --pretty=oneline +run_capture "meta/env-date.txt" date -u + +if command -v docker >/dev/null 2>&1; then + run_capture "runtime/docker-compose-ps.txt" docker compose -f "${ROOT_DIR}/docker-compose.yml" ps + run_capture "runtime/keywarden-python-version.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python -V" + run_capture "runtime/keywarden-pip-freeze.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python -m pip freeze" +else + write_summary "- SKIP: docker not available in PATH" +fi + +TEST_TARGETS="apps.accounts.tests.test_auth apps.audit.tests.test_api_audit_middleware apps.servers.tests.test_access_scopes apps.servers.tests.test_audit_pipeline apps.servers.tests.test_consumers apps.servers.tests.test_keys_router" + +if command -v docker >/dev/null 2>&1; then + run_capture "tests/django-tests.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python manage.py test ${TEST_TARGETS} --verbosity 2" + run_capture "tests/django-tests-failures-summary.txt" \ + sh -lc "grep -E '^(FAIL|ERROR):|^FAILED \\(|^Ran [0-9]+ tests? in' '${OUT_DIR}/tests/django-tests.txt' || true" + if ! run_capture "tests/coverage-version.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python -m coverage --version"; then + if run_capture "tests/coverage-install.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python -m pip install coverage"; then + run_capture "tests/coverage-version.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python -m coverage --version" + fi + fi + if [ -f "${OUT_DIR}/tests/coverage-version.txt" ] && grep -qi "Coverage.py" "${OUT_DIR}/tests/coverage-version.txt"; then + run_capture "tests/coverage-report.txt" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cd /app && python -m coverage erase && python -m coverage run manage.py test ${TEST_TARGETS} --verbosity 1; test_rc=\$?; python -m coverage report -m; report_rc=\$?; python -m coverage xml -o /tmp/keywarden-coverage.xml; xml_rc=\$?; exit \$(( test_rc != 0 ? test_rc : ( report_rc != 0 ? report_rc : xml_rc ) ))" + run_capture "tests/coverage-xml.xml" \ + docker compose -f "${ROOT_DIR}/docker-compose.yml" exec -T keywarden sh -lc "cat /tmp/keywarden-coverage.xml" + else + write_summary "- SKIP: coverage module not installed in keywarden container" + fi +fi + +run_capture "docs/rbac-claims.txt" \ + sh -lc "grep -RIn 'operator\\|auditor\\|administrator\\|ROLE_' '${ROOT_DIR}/app/keywarden/api/routers/users.py' '${ROOT_DIR}/app/apps/core/rbac.py' '${ROOT_DIR}/API_DOCS.md'" + +if [ -f "${ROOT_DIR}/nginx/logs/agent-access.log" ]; then + run_capture "logs/agent-access-tail-2000.log" tail -n 2000 "${ROOT_DIR}/nginx/logs/agent-access.log" + run_capture "logs/agent-endpoint-status-counts.txt" \ + sh -lc "awk -F'\"' '{split(\$3, a, \" \"); if (\$2 != \"\") print \$2 \" \" a[2]}' '${ROOT_DIR}/nginx/logs/agent-access.log' | sort | uniq -c | sort -nr" +fi + +if [ -f "${ROOT_DIR}/app/logs/gunicorn-access.log" ]; then + run_capture "logs/gunicorn-access-tail-2000.log" tail -n 2000 "${ROOT_DIR}/app/logs/gunicorn-access.log" + run_capture "logs/gunicorn-endpoint-status-counts.txt" \ + sh -lc "awk -F'\"' '{split(\$3, a, \" \"); if (\$2 != \"\") print \$2 \" \" a[2]}' '${ROOT_DIR}/app/logs/gunicorn-access.log' | sort | uniq -c | sort -nr" +fi + +if [ -f "${ROOT_DIR}/nginx/logs/error.log" ]; then + run_capture "logs/nginx-error-tail-1000.log" tail -n 1000 "${ROOT_DIR}/nginx/logs/error.log" +fi + +if [ -d "${ROOT_DIR}/evidence/diagrams" ]; then + mkdir -p "${OUT_DIR}/diagrams" + run_capture "diagrams/listing.txt" sh -lc "cp '${ROOT_DIR}'/evidence/diagrams/*.mmd '${OUT_DIR}/diagrams/' && ls -1 '${OUT_DIR}/diagrams'" +fi + +if [ -d "${ROOT_DIR}/evidence/templates" ]; then + mkdir -p "${OUT_DIR}/templates" + run_capture "templates/listing.txt" sh -lc "cp '${ROOT_DIR}'/evidence/templates/*.md '${OUT_DIR}/templates/' && ls -1 '${OUT_DIR}/templates'" +fi + +if [ "${KEYWARDEN_EVIDENCE_CAPTURE_SCREENSHOTS:-0}" = "1" ] && [ -x "${ROOT_DIR}/scripts/capture_ui_screenshots.sh" ]; then + run_capture "screenshots-capture.log" \ + bash "${ROOT_DIR}/scripts/capture_ui_screenshots.sh" "${RUN_ID}" +fi + +if [ -x "${ROOT_DIR}/scripts/autofill_evidence_templates.sh" ]; then + run_capture "templates/autofill.log" \ + bash "${ROOT_DIR}/scripts/autofill_evidence_templates.sh" "${RUN_ID}" +fi + +if [ -x "${ROOT_DIR}/scripts/summarize_operational_metrics.sh" ]; then + run_capture "evaluation/generation.log" \ + bash "${ROOT_DIR}/scripts/summarize_operational_metrics.sh" "${RUN_ID}" +fi + +write_summary +write_summary "## Notes" +write_summary "- This run captures operational evidence and test output that can be re-generated." +write_summary "- Screenshot capture can be automated by setting \`KEYWARDEN_EVIDENCE_CAPTURE_SCREENSHOTS=1\`." + +printf "Evidence run complete: %s\n" "${OUT_DIR}" diff --git a/scripts/summarize_operational_metrics.sh b/scripts/summarize_operational_metrics.sh new file mode 100755 index 0000000..8be1a31 --- /dev/null +++ b/scripts/summarize_operational_metrics.sh @@ -0,0 +1,268 @@ +#!/usr/bin/env bash +set -u -o pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +RUN_ARG="${1:-}" + +if [ -n "${RUN_ARG}" ]; then + if [ -d "${RUN_ARG}" ]; then + RUN_DIR="${RUN_ARG}" + else + RUN_DIR="${ROOT_DIR}/evidence/runs/${RUN_ARG}" + fi +else + RUN_DIR="$(ls -1dt "${ROOT_DIR}"/evidence/runs/* 2>/dev/null | head -n 1)" +fi + +if [ -z "${RUN_DIR:-}" ] || [ ! -d "${RUN_DIR}" ]; then + echo "Run directory not found." >&2 + exit 1 +fi + +RUN_ID="$(basename "${RUN_DIR}")" +OUT_DIR="${RUN_DIR}/evaluation" +mkdir -p "${OUT_DIR}" + +AGENT_LOG="${RUN_DIR}/logs/agent-access-tail-2000.log" +NGINX_ERROR_LOG="${RUN_DIR}/logs/nginx-error-tail-1000.log" +SUMMARY_MD="${OUT_DIR}/operational-summary.md" +PARSED_CSV="${OUT_DIR}/agent-access-parsed.csv" +HEARTBEAT_EVENTS="${OUT_DIR}/heartbeat-events.csv" +HEARTBEAT_INTERVALS="${OUT_DIR}/heartbeat-intervals.csv" +HEARTBEAT_SUMMARY="${OUT_DIR}/heartbeat-summary.csv" +HEARTBEAT_RECOVERY="${OUT_DIR}/heartbeat-error-recovery.csv" +ENDPOINT_STATUS_COUNTS="${OUT_DIR}/endpoint-status-by-server.csv" + +if [ ! -f "${AGENT_LOG}" ]; then + cat > "${SUMMARY_MD}" < "${PARSED_CSV}" + +echo "server_id,epoch,raw_timestamp,status" > "${HEARTBEAT_EVENTS}" +rm -f "${OUT_DIR}/heartbeat-events-raw.tmp" +tail -n +2 "${PARSED_CSV}" | while IFS=',' read -r raw_ts server_id method path status bytes client_ip; do + case "${path}" in + */heartbeat) + normalized_ts="$(printf "%s" "${raw_ts}" | sed -E 's#^([0-9]{2})/([A-Za-z]{3})/([0-9]{4}):([0-9]{2}:[0-9]{2}:[0-9]{2}) ([+-][0-9]{4})$#\1 \2 \3 \4 \5#')" + epoch="$(date -u -d "${normalized_ts}" +%s 2>/dev/null || true)" + if [ -n "${epoch}" ]; then + printf "%s,%s,%s,%s\n" "${server_id}" "${epoch}" "${raw_ts}" "${status}" >> "${OUT_DIR}/heartbeat-events-raw.tmp" + fi + ;; + esac +done +if [ -f "${OUT_DIR}/heartbeat-events-raw.tmp" ]; then + sort -t, -k1,1n -k2,2n "${OUT_DIR}/heartbeat-events-raw.tmp" >> "${HEARTBEAT_EVENTS}" +else + : > "${OUT_DIR}/heartbeat-events-raw.tmp" +fi + +awk -F',' -v intervals_file="${HEARTBEAT_INTERVALS}" -v summary_file="${HEARTBEAT_SUMMARY}" ' +BEGIN { + print "server_id,from_timestamp,to_timestamp,interval_seconds,from_status,to_status" > intervals_file +} +NR == 1 { + next +} +{ + server_id = $1 + epoch = $2 + 0 + raw_ts = $3 + status = $4 + 0 + event_count[server_id]++ + if (status >= 500) { + error_count[server_id]++ + } + if (server_id in prev_epoch) { + interval = epoch - prev_epoch[server_id] + if (interval >= 0) { + print server_id "," prev_ts[server_id] "," raw_ts "," interval "," prev_status[server_id] "," status >> intervals_file + interval_count[server_id]++ + interval_sum[server_id] += interval + if (!(server_id in interval_min) || interval < interval_min[server_id]) { + interval_min[server_id] = interval + } + if (!(server_id in interval_max) || interval > interval_max[server_id]) { + interval_max[server_id] = interval + } + } + } + prev_epoch[server_id] = epoch + prev_ts[server_id] = raw_ts + prev_status[server_id] = status +} +END { + print "server_id,heartbeat_events,interval_samples,avg_interval_s,min_interval_s,max_interval_s,heartbeat_5xx" > summary_file + for (server_id in event_count) { + avg = interval_count[server_id] ? interval_sum[server_id] / interval_count[server_id] : 0 + min_v = interval_count[server_id] ? interval_min[server_id] : 0 + max_v = interval_count[server_id] ? interval_max[server_id] : 0 + err_v = error_count[server_id] + 0 + printf "%s,%d,%d,%.2f,%d,%d,%d\n", server_id, event_count[server_id], interval_count[server_id] + 0, avg, min_v, max_v, err_v >> summary_file + } +} +' "${HEARTBEAT_EVENTS}" + +{ + head -n 1 "${HEARTBEAT_SUMMARY}" + tail -n +2 "${HEARTBEAT_SUMMARY}" | sort -t, -k1,1n +} > "${OUT_DIR}/heartbeat-summary.tmp" +mv "${OUT_DIR}/heartbeat-summary.tmp" "${HEARTBEAT_SUMMARY}" + +awk -F',' ' +NR == 1 { + next +} +{ + key = $2 "," $4 "," $5 + counts[key]++ +} +END { + for (key in counts) { + split(key, parts, ",") + printf "%s,%s,%s,%d\n", parts[1], parts[2], parts[3], counts[key] + } +} +' "${PARSED_CSV}" | sort -t, -k4,4nr -k1,1n > "${OUT_DIR}/endpoint-status-by-server-raw.tmp" + +{ + echo "server_id,path,status,count" + cat "${OUT_DIR}/endpoint-status-by-server-raw.tmp" +} > "${ENDPOINT_STATUS_COUNTS}" + +awk -F',' ' +BEGIN { + print "server_id,error_timestamp,error_status,recovery_timestamp,recovery_status,recovery_seconds" +} +NR == 1 { + next +} +{ + server_id = $1 + epoch = $2 + 0 + raw_ts = $3 + status = $4 + 0 + if (status >= 500 && !(server_id in pending_epoch)) { + pending_epoch[server_id] = epoch + pending_ts[server_id] = raw_ts + pending_status[server_id] = status + } else if (status >= 200 && status < 300 && (server_id in pending_epoch)) { + recovery = epoch - pending_epoch[server_id] + printf "%s,%s,%d,%s,%d,%d\n", server_id, pending_ts[server_id], pending_status[server_id], raw_ts, status, recovery + delete pending_epoch[server_id] + delete pending_ts[server_id] + delete pending_status[server_id] + } +} +' "${HEARTBEAT_EVENTS}" > "${HEARTBEAT_RECOVERY}" + +total_agent_events="$(awk -F',' 'NR>1{count++} END{print count+0}' "${PARSED_CSV}")" +unique_servers="$(awk -F',' 'NR>1{seen[$2]=1} END{count=0; for (s in seen) count++; print count+0}' "${PARSED_CSV}")" +heartbeat_events_total="$(awk -F',' 'NR>1{count++} END{print count+0}' "${HEARTBEAT_EVENTS}")" +heartbeat_errors_total="$(awk -F',' 'NR>1 && $4+0>=500{count++} END{print count+0}' "${HEARTBEAT_EVENTS}")" +nginx_upstream_refused="0" +if [ -f "${NGINX_ERROR_LOG}" ]; then + nginx_upstream_refused="$(grep -c "connect() failed" "${NGINX_ERROR_LOG}" || true)" +fi + +{ + echo "# Operational Metrics Summary" + echo + echo "- Run ID: \`${RUN_ID}\`" + echo "- Parsed agent access events: \`${total_agent_events}\`" + echo "- Servers observed in agent traffic: \`${unique_servers}\`" + echo "- Heartbeat events observed: \`${heartbeat_events_total}\`" + echo "- Heartbeat 5xx responses observed: \`${heartbeat_errors_total}\`" + echo "- Nginx upstream connection errors (tail window): \`${nginx_upstream_refused}\`" + echo + echo "## Heartbeat Interval Summary" + echo + echo "| Server ID | Heartbeat Events | Interval Samples | Avg Interval (s) | Min (s) | Max (s) | Heartbeat 5xx |" + echo "|---|---:|---:|---:|---:|---:|---:|" + tail -n +2 "${HEARTBEAT_SUMMARY}" | while IFS=',' read -r sid ev samples avg minv maxv errv; do + printf "| %s | %s | %s | %s | %s | %s | %s |\n" "${sid}" "${ev}" "${samples}" "${avg}" "${minv}" "${maxv}" "${errv}" + done + echo + echo "## Heartbeat Error Recovery Events" + echo + if [ "$(awk -F',' 'NR>1{count++} END{print count+0}' "${HEARTBEAT_RECOVERY}")" -eq 0 ]; then + echo "- No heartbeat error->recovery transitions were found in this log window." + else + echo "| Server ID | Error Timestamp | Error Status | Recovery Timestamp | Recovery Status | Recovery Seconds |" + echo "|---|---|---:|---|---:|---:|" + tail -n +2 "${HEARTBEAT_RECOVERY}" | while IFS=',' read -r sid ets ests rts rsts sec; do + printf "| %s | %s | %s | %s | %s | %s |\n" "${sid}" "${ets}" "${ests}" "${rts}" "${rsts}" "${sec}" + done + fi + echo + echo "## Top Endpoint/Status Counts" + echo + echo "| Rank | Server ID | Path | Status | Count |" + echo "|---:|---:|---|---:|---:|" + tail -n +2 "${ENDPOINT_STATUS_COUNTS}" | head -n 15 | nl -ba -w1 -s',' | while IFS=',' read -r rank sid path status count; do + printf "| %s | %s | \`%s\` | %s | %s |\n" "${rank}" "${sid}" "${path}" "${status}" "${count}" + done + echo + echo "## Generated Artifacts" + echo + echo "- \`evaluation/agent-access-parsed.csv\`" + echo "- \`evaluation/heartbeat-events.csv\`" + echo "- \`evaluation/heartbeat-intervals.csv\`" + echo "- \`evaluation/heartbeat-summary.csv\`" + echo "- \`evaluation/heartbeat-error-recovery.csv\`" + echo "- \`evaluation/endpoint-status-by-server.csv\`" +} > "${SUMMARY_MD}" + +rm -f \ + "${OUT_DIR}/heartbeat-events-raw.tmp" \ + "${OUT_DIR}/endpoint-status-by-server-raw.tmp" + +echo "Operational metrics summary written: ${SUMMARY_MD}"